module IcSet:Creating and analyzing sets of compiled input clauses.sig..end
Terms in different input clauses may be shared. Up to now variables are
only modified, by Term.renumber_variables_term. Their number and
external contexts are used to represent bindings.
If client programs modify terms (e.g. by calling
Term.renumber_variables_term or once variable attributes are
introduced), they must copy the clause contents.
Clauses as argument in term representation are assumed to have their variable numbers between 0 and Term.max_vars - 1.
See also notes for module Ic.
typeclauses =Ic.clause list
val make_eval_plain_clauses : Cfg.cfg ->
Predicate.predicate_table ->
Term.symbol_table -> NegativeUnits.store -> Term.term list -> clausesval negative_units_to_store : NegativeUnits.store -> clauses -> clausesval stratify : clauses -> clauses liststratify clauses partitions clauses in strata.
The result is a list of lists of clauses, corresponding to the strata,
lowest first.val sort_clauses : clauses -> clausessort_clauses clauses sorts the clause set according to a heuristics
that should allows earlier detection of refutations (branch closings)val make_eval_inc_clauses : clauses -> Predicate.predicate list -> clausesval idb_predicates : clauses -> Predicate.predicate listidb_predicates clauses returns a list of those predicates in
clauses which appear in the head of a clause in clauses.val select_relevant_clauses : clauses -> Predicate.predicate -> clausesrelevant_clauses clauses goal_predicate selects those clauses
from clauses which are relevant for computing goal_predicate.
This also includes clauses with fail head, whose nonbuiltin body
predicates are all among the relevant predicates.val split_clauses : clauses -> clauses list * clauses * clausessplit_clauses clauses partitions clauses into several sets.
false head.clauses must not include a clause with disjunctive head (for now?).