Interface ITransferFunctionProvider<T,​V extends IVariable<V>>

  • Type Parameters:
    T - type of node in the graph
    V - type of abstract states computed

    public interface ITransferFunctionProvider<T,​V extends IVariable<V>>
    The DataflowSolver builds system over graphs, with dataflow transfer functions on the nodes, the edges or both. In any case, it takes an ITransferFunctionProvider to tell it what functions to use.
    • Method Detail

      • getNodeTransferFunction

        UnaryOperator<V> getNodeTransferFunction​(T node)
        Returns:
        the transfer function from IN_node -> OUT_node
      • hasNodeTransferFunctions

        boolean hasNodeTransferFunctions()
        Returns:
        true if this provider provides node transfer functions
      • getEdgeTransferFunction

        UnaryOperator<V> getEdgeTransferFunction​(T src,
                                                 T dst)
        Returns:
        the transfer function from OUT_src -> EDGE_<src,dst>
      • hasEdgeTransferFunctions

        boolean hasEdgeTransferFunctions()
        Returns:
        true if this provider provides edge transfer functions
      • getMeetOperator

        AbstractMeetOperator<V> getMeetOperator()
        TODO: perhaps this should go with a Lattice object instead. TODO: provide an API to allow composition of the meet operator with the flow operator for a given block, as an optimization?