Satml_types.Flat_Formula
A proxy definition, encoding an equivalence p <=> l_1 /\ ... /\ l_n
or p <=> l_1 \/ ... \/ l_n
where p
is a proxy and l_1
, ..., l_n
are literals.
See get_proxy_of
and expand_proxy_defn
.
val empty_proxies : proxies
val print : Stdlib.Format.formatter -> t -> unit
val vrai : t
val faux : t
val empty_hcons_env : unit -> hcons_env
val nb_made_vars : hcons_env -> int
val atom_hcons_env : hcons_env -> Atom.hcons_env
get_proxy_of ff proxies
returns the proxy registered for ff
in proxies
, if it exists.
Note: If ff
is a unit formula (i.e. a literal), get_proxy_of
returns None
.
The proxy of a flat formula ff
is an atom p
with the (implicit) equivalent p <=> ff
. Proxies are used to perform lazy CNF conversion of formulas in the CDCL-Tableaux solver.
val expand_proxy_defn :
Atom.atom list list ->
proxy_defn ->
Atom.atom list list
Expand a proxy definition into clausal normal form.
The definition p <=> l_1 \/ ... \/ l_n
is expanded into:
(~p \/ l_1 \/ ... \/ l_n) /\ (p \/ ~l_1) /\ ... /\ (p \/ ~l_n)
and the definition p <=> l_1 /\ ... /\ l_n
is expanded into:
(p \/ ~l_1 \/ ... \/ ~l_n) /\ (~p \/ l_1) /\ ... /\ (~p \/ l_n)