Class BamCpa<CfaNodeT extends CfaNode<CfaEdgeT,​SignatureT>,​CfaEdgeT extends CfaEdge<CfaNodeT>,​SignatureT extends Signature>

  • All Implemented Interfaces:
    ConfigurableProgramAnalysis

    public class BamCpa<CfaNodeT extends CfaNode<CfaEdgeT,​SignatureT>,​CfaEdgeT extends CfaEdge<CfaNodeT>,​SignatureT extends Signature>
    extends java.lang.Object
    implements ConfigurableProgramAnalysis
    A ConfigurableProgramAnalysis for inter-procedural analysis using block abstraction memoization as described in {@see https://dl.acm.org/doi/pdf/10.1145/3368089.3409718}, which is defined by a domain-dependent CpaWithBamOperators that adds three operators: reduce, expand, and rebuild. This allows an inter-procedural analysis running this CPA to be conducted by the standard CpaAlgorithm.

    A BAM CPA works on a domain-independent level and its abstract domain, merge operator, and stop operator are defined by the domain-dependent wrapped CPA. The main feature of a BAM CPA is its transfer relation (see BamTransferRelation for details) that is able to extend the analysis of the wrapped CPA to the inter-procedural level.