module ClauseContext:sig..end
A clause with a "hole" in it. Filling the whole with a term t is called
"applying the context to t".
The point is to relate different applications of the same context.
typeterm =Libzipperposition.FOTerm.t
typesubst =Libzipperposition.Substs.t
type t = private {
|
lits : |
|
var : |
|
mutable hash : |
x, paired with this variable x.
Applying the context is a mere substitutionval compare : t -> t -> int
val equal : t -> t -> bool
val hash : t -> int
val hash_fun : t CCHash.hash_fun
val make : Literals.t -> var:Libzipperposition.FOTerm.var -> tAssert_failure if the variable isn't present in any literalval extract : Literals.t -> term -> t optionextract lits t returns None if t doesn't occur in lits. Otherwise,
it creates a fresh var x, replaces t with x within lits, and
returns the corresponding context.
Basically, if extract lits t = Some c then apply c t = litsval extract_exn : Literals.t -> term -> tClauseContext.extract.Invalid_argument if the term is not to be found within the litsval apply : t -> term -> Literals.tapply c t fills the hole of c with the given term t. t and c
share no free variables.val apply_same_scope : t -> term -> Literals.tClauseContext.apply, but now variables from the context and variables
from the term live in the same scopeval raw_lits : t -> Literals.tval pp : t CCFormat.printermodule Set:CCSet.Swith type elt = t