Skip to content

Draft: Creating a branch for TerminationToReachCPA

Marek Jankola requested to merge terminationCPA into trunk

This merge request summarizes changes made to implement new TerminationToReachCPA. It implements a new analysis that is based on the idea from A. Biere's et. al. paper about transformation of liveness properties to safety property.

The analysis keeps a map in its states (stored values) that maps the loop heads to a list of constraints. The list of constraints contains assignment formulas of each variable to a variable with a SSA index that was seen at some point in the loop head. The list of constraints may for instance look like this:

[__Q__x@0 = x@2 and __Q__y@0 = y@3, __Q__x@1 = x@3 and __Q__y@2 = y@4, __Q__x@2 = x@4 and __Q__y@2 = y@5]

The auxiliary variables have always the following form __Q__[name of the variable]@[number of iteration of the loop]

Every time the analysis applies precision operator in a loop-head, we check for satisfiability so called lasso-shaped formula. The lasso-shaped formula is composed of a path formula and a loop constraints. For instance, let's say we entered a loop-head for the 4th time, then we iteratively check for satisfiability of

path formula and (__Q__x@0 = x@2 and __Q__y@0 = y@3) and (__Q__x@0 = x@5 and __Q__y@0 = y@6)

path formula and (__Q__x@1 = x@3 and __Q__y@1 = y@4) and (__Q__x@1 = x@5 and __Q__y@1 = y@6)

path formula and (__Q__x@2 = x@4 and __Q__y@2 = y@5) and (__Q__x@2 = x@5 and __Q__y@2 = y@6)

If some of the queries is satisfiable, we have found a non-terminating loop. If the analysis is able to explore the whole underlying state-space, there is no non-terminating loop.

TerminationToReachCPA can be run only in CompositeCPA with PredicateCPA and LocationCPA. Moreover, the option cpa.predicate.enableSharedInformation=true must be set because TerminationToReachCPA must get information about FormulaManagerView of PredicateCPA because of the satisfiability checks in its precision adjustment operator.

git-svn-id: https://svn.sosy-lab.org/software/cpachecker/branches/terminationCPA@44862 4712c6d2-40bb-43ae-aa4b-fec3f1bdfe4c

Merge request reports