module Cnf:sig..end
typeterm =TypedSTerm.t
typeform =TypedSTerm.t
typetype_ =TypedSTerm.t
typelit =term SLiteral.t
exception Error of string
exception NotCNF of form
val miniscope : ?distribute_exists:bool -> form -> formdistribute_exists : see whether ?X:(p(X)|q(X)) should be
transformed into (?X: p(X) | ?X: q(X)). Default: falsetype options =
| |
DistributeExists |
(* |
if enabled, will distribute existential quantifiers over
disjunctions. This can make skolem symbols smaller (smaller arity) but
introduce more of them.
| *) |
| |
DisableRenaming |
(* |
disables formula renaming. Can re-introduce the worst-case
exponential behavior of CNF.
| *) |
| |
InitialProcessing of |
(* |
any processing, at the beginning, before CNF starts
| *) |
| |
PostNNF of |
(* |
any processing that keeps negation at leaves,
just after reduction to NNF. Its output
must not break the NNF form (negation at root only).
| *) |
| |
PostSkolem of |
(* |
transformation applied just after skolemization. It must not
break skolemization nor NNF (no quantifier, no non-leaf negation).
| *) |
typeclause =lit list
val clause_to_fo : ?ctx:FOTerm.Conv.ctx -> clause -> FOTerm.t SLiteral.t list
type'af_statement =(term, term, type_, 'a) Statement.t
type'ac_statement =(clause, term, type_, 'a) Statement.t
val pp_f_statement : 'a f_statement CCFormat.printer
val pp_c_statement : 'a c_statement CCFormat.printer
val is_clause : form -> bool
val is_cnf : form -> boolval cnf_of : ?opts:options list ->
?ctx:Skolem.ctx ->
?neg_src:('a -> 'a) ->
?cnf_src:('a -> 'a) ->
'a f_statement -> 'a c_statement CCVector.ro_vectorval cnf_of_seq : ?opts:options list ->
?ctx:Skolem.ctx ->
?neg_src:('a -> 'a) ->
?cnf_src:('a -> 'a) ->
'a f_statement Sequence.t -> 'a c_statement CCVector.ro_vector
val type_declarations : 'a c_statement Sequence.t -> type_ ID.Map.tval convert : StatementSrc.t c_statement Sequence.t ->
Statement.clause_t CCVector.ro_vector