Usage:query(AbsInt,QKey,Query,Qv,RFlag,N,Call,Succ)
The success pattern of Query with Call is Succ in the analysis domain AbsInt. The predicate called is identified by QKey, and RFlag says if it is recursive or not. The goal Query has variables Qv, and the call pattern is uniquely identified by N.
Usage:
Cleans up the database of analysis of temporary information.
Usage:cleanup_fixpoint(AbsInt)
Cleanups the database of analysis, of both temporary as well as permanent information regarding abstract domain AbsInt.
Usage:entry_to_exit(Body,Key,Call,Exit,Vars_u,AbsInt,NewN)
Traverses the body of a clause (first argument) obtaining the Exit for a given Entry (represented by Call, since it is both the Entry of the clause and the Call for the first subgoal).
Usage:proj_to_prime_nr(SgKey,Sg,Sv,Call,Proj,AbsInt,Clid,ListPrime,Id)
This predicate obtains the list of Prime corresponding to each non recursive clause of Sg for a given Call. It first reads those non recursive clauses by means of a bagof and then proccess each one with a loop. If there is no non recursive clause, the answer will be ['$bottom'].
Usage:
Usage:proj_to_prime(Clauses,SgKey,Sg,Sv,Call,Proj,AbsInt,Prime,Id)
Usage:compute(Clauses,SgKey,Sg,Sv,Proj,AbsInt,TempPrime,Prime,Id)
It analyzes each recursive clause clause.
Usage:td_mark_parents_change_list(Parents,AbsInt)
This complete has changed. So we add the change in the $change_list of all parents.
Usage:add_change(Id,Lit_Key,Literal,Parents,AbsInt)
Id: Id of the complete of the predicate that changed Lit_Key: Key of the Literal of the complete that needs recomputing. Literal: Literal with the term F/A/C/L. Parents: Program points in which the literal is called (0 means an entry) AbsInt: Abstract Domain.
Usage:mark_parents_change_list_scc(Parents,SCC,AbsInt)
This complete has changed. So we add the change in the $change_list of all parents. If the parent is in the same SCC then we recursively mark its parents as well.
Usage:add_change_scc(Id,Lit_Key,Literal,Parents,SCC,AbsInt)
Lit_Key may be free when a clause is marked to analyze from the begining (see second clause of compute_change).
Usage:fixpoint_compute_change(Changes,SgKey,Sg,Sv,Proj,AbsInt,TempPrime,Prime,Id)
It obtains the Prime for the recursive predicate Sg with Call (which has been assigned to node Id), and the list of nodes it depends on In doing this it performs an iteration over the recursive clauses of Sg by calling to compute_change/13 and then checks if the fixpoint has been reached by calling to fixpoint/13. Fixpoint is reached if either NewList is empty (it means that Id does not depend on any node) or if Flag is a variable (it means that the information has not been modified within the iteration) LEntryInf is the list of (Entry,ExtraInfo) couples for each Clause. It will be computed in the first iteration and used in subsequent ones