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

Type Parameters:
T - type of node in the graph
V - type of abstract states computed
All Known Implementing Classes:
ExceptionTransferFunctionProvider, PrefixTransferFunctionProvider

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 Details

    • 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?