left

Techniques

right
AProVE Help SystemTechniques
Techniques working on IPAD
Techniques working on FP
Techniques working on CSRs
Techniques working on Prolog
Techniques working on TRSs
Dependency Pairs
Techniques working on SCCs
Theorem Prover
Liveness

How AProVE tries to prove termination of a program

The general structure of a termination proof in AProVE is that first any program of any supported input language like Prolog, conditional term rewriting, ... is translated in some steps into an ordinary TRS. Then, some techniques working on TRSs are applied to already show termination or to simplify the TRS. Afterwards, the dependency pair method is used where the TRS is transformed into a set of strongly connected components (SCC) of the dependency graph which represent possible infinite reductions. Finally, AProVE uses the techniques working on SCCs to show that there are no infinite reductions possible in any of the SCCs.

How AProVE tries to prove non-termination of a TRS

After applying the dependency pair method, AProVE tries to show termination of as many SCCs as possible, because afterwards one can restrict the search for non-termination to the remaining SCCs. Then, on the level of SCCs there is a non-termination checker that can detect certain types of infinite reductions.

How AProVE tries to prove non-termination of an arbitrary program

For many transformations there are certain criteria ensuring completeness of the transformation. AProVE just checks this criteria and can then conclude non-termination of the program from non-termination of the resulting TRS.

How AProVE tries to prove liveness properties of a TRS

AProVE can show certain liveness properties for a restricted class of term rewrite systems, so called top rewrite systems. For these the eventual absence of instances of certain terms can be established. To achieve this a liveness problem is encoded into a termination problem of a term rewrite system. Termination can then be investigated using the full power of AProVE's techniques.