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 -> clauses
val negative_units_to_store : NegativeUnits.store -> clauses -> clauses
val stratify : clauses -> clauses list
stratify clauses
partitions clauses
in strata.
The result is a list of lists of clauses, corresponding to the strata,
lowest first.val sort_clauses : clauses -> clauses
sort_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 -> clauses
val idb_predicates : clauses -> Predicate.predicate list
idb_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 -> clauses
relevant_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 * clauses
split_clauses clauses
partitions clauses
into several sets.
false
head.clauses
must not include a clause with disjunctive head (for now?).