module Context: sig end
Logical contexts
Author(s): Harald Ruess
A logical context is simply a conjunction ctxt of atoms. When atoms
are added to a logical context, the following datastructures are maintained.
- A partitioning
p of type Partition.t consisting of variable
equalities, variable disequalities, and variable constraints.
- A solution set for every equality theory defined in
Th.
- An upper bound on the indices of all fresh variables in all the data
structures above.
type t
Representation of logical contexts.
module Mode: sig end
Pretty-printing mode for processing.
val pp : t Pretty.printer
Pretty-printing the context of a state.
| Parameters: |
|
fmt |
: |
Format.formatter
|
|
s |
: |
t
|
|
val eq : t -> t -> bool
Identity test on contexts.
val empty : t
The empty logical context
val ctxt_of : t -> Atom.t list
ctxt_of s returns the logical context of s as a list of atoms.
val partition_of : t -> Partition.t
p_of s returns the partitioning associated with s.
val eqs_of : t -> Combine.E.t
val config_of : t -> Combine.E.t * Partition.t
val upper_of : t -> int
upper_of s returns an upper bound on the indices of all fresh
variables in s.
module Status: sig end
Result of processing.
val add : t -> Atom.t -> t Status.t
process s a extends the logical context
s with an atom
a.
The return value is
Valid if a can be shown to be valid in s,
Inconsistent if s conjoined with a can be shown to be inconsistent, and
Ok(s') otherwise. In this case, s' is a logical state equivalent
to s conjoined with a.
val statistics : bool Pervasives.ref
Statistics.
val verbose : bool Pervasives.ref
val coi_enabled : int Pervasives.ref
Enable/Disable cone of influence.
val semantic_coi_min : int Pervasives.ref
val syntactic_coi_min : int Pervasives.ref
val addl : t -> Atom.t list -> t Status.t
val is_inconsistent : t -> Atom.t list -> bool
is_inconsistent s al is true iff the conjunction of
atoms in al is inconsistent in s.
val is_valid : t -> Atom.t list -> bool
is_valid s al is true iff the conjunction of
atoms in al is valid in s.
val check_sat : t -> t option
check_sat s performs case-splitting and returns
Some(splits', s') if there is a complete case-splitting path splits'
yielding a satisfiable extension s' of s.
None if all case-splittinig paths yield an inconsistent context.
val diff : t -> t -> t
Difference.