![]() |
Techniques working on Prolog |
![]() |
AProVE Help System → Techniques → | Techniques working on Prolog |
├ Mode Analysis | |
└ Prolog To TES Transformation |
In some cases even a complete transformation can be achieved which allows AProVE to give proof of Non-Termination as well.
AProVE offers the following transformational techniques that work on Prolog programs.
This step is necessary to search the input for undefined predicates. For every undefined predicate found, a basic fact is added to the program. This ensures termination of the predicate and is necessary to prevent programs like
p :- undef, p.from being recognized as terminating.
The unrequested clause remover filters all clauses that are unnecessary for answering the queries.
Queries can be supplied either as query mode lines or as normal prolog queries.
During mode analysis it may happen that one predicate symbol is used in more than one way, which violates the definition of well-modedness given in [Ohl01]. By splitting the symbol into a new one for every different moding, this is handled in a sound way.
This technique eliminates the \+ not predicate by replacing
A :- B, \+ C, Dby
A:- B, C, fail. A:- B, D.