Module Micromega_core_plugin.Micromega
type ('a, 'b) sum = | Inl of 'a| Inr of 'b
val fst : ('a1 * 'a2) -> 'a1val snd : ('a1 * 'a2) -> 'a2val app : 'a1 list -> 'a1 list -> 'a1 listtype comparison = | Eq| Lt| Gt
val nth : nat -> 'a1 list -> 'a1 -> 'a1val rev_append : 'a1 list -> 'a1 list -> 'a1 listval map : ('a1 -> 'a2) -> 'a1 list -> 'a2 listval fold_left : ('a1 -> 'a2 -> 'a1) -> 'a2 list -> 'a1 -> 'a1val fold_right : ('a2 -> 'a1 -> 'a1) -> 'a1 -> 'a2 list -> 'a1val pow_pos : ('a1 -> 'a1 -> 'a1) -> 'a1 -> positive -> 'a1val peq : ('a1 -> 'a1 -> bool) -> 'a1 pol -> 'a1 pol -> boolval mkX : 'a1 -> 'a1 -> 'a1 polval popp : ('a1 -> 'a1) -> 'a1 pol -> 'a1 polval paddC : ('a1 -> 'a1 -> 'a1) -> 'a1 pol -> 'a1 -> 'a1 polval psubC : ('a1 -> 'a1 -> 'a1) -> 'a1 pol -> 'a1 -> 'a1 polval psubX :
'a1 ->
('a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
('a1 pol -> 'a1 pol -> 'a1 pol) ->
'a1 pol ->
positive ->
'a1 pol ->
'a1 polval padd :
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pol ->
'a1 pol ->
'a1 polval psub :
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pol ->
'a1 pol ->
'a1 polval pmulC_aux :
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pol ->
'a1 ->
'a1 polval pmulC :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pol ->
'a1 ->
'a1 polval pmulI :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
('a1 pol -> 'a1 pol -> 'a1 pol) ->
'a1 pol ->
positive ->
'a1 pol ->
'a1 polval pmul :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pol ->
'a1 pol ->
'a1 polval psquare :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pol ->
'a1 polval ppow_pos :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
('a1 pol -> 'a1 pol) ->
'a1 pol ->
'a1 pol ->
positive ->
'a1 polval ppow_N :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
('a1 pol -> 'a1 pol) ->
'a1 pol ->
n ->
'a1 polval norm_aux :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pExpr ->
'a1 poltype kind = | IsProp| IsBool
type 'a trace = | Null| Push of 'a * 'a trace| Merge of 'a trace * 'a trace
val foldA :
('a5 -> 'a3 -> 'a5) ->
kind ->
('a1, 'a2, 'a3, 'a4) gFormula ->
'a5 ->
'a5val cons_id : 'a1 option -> 'a1 list -> 'a1 listval collect_annot : kind -> ('a1, 'a2, 'a3, 'a4) gFormula -> 'a3 listtype ('x, 'annot) clause = ('x * 'annot) listtype ('x, 'annot) cnf = ('x, 'annot) clause listval cnf_tt : ('a1, 'a2) cnfval cnf_ff : ('a1, 'a2) cnfval add_term :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1 * 'a2) ->
('a1, 'a2) clause ->
('a1, 'a2) clause optionval or_clause :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1, 'a2) clause ->
('a1, 'a2) clause ->
('a1, 'a2) clause optionval xor_clause_cnf :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1, 'a2) clause ->
('a1, 'a2) cnf ->
('a1, 'a2) cnfval or_clause_cnf :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1, 'a2) clause ->
('a1, 'a2) cnf ->
('a1, 'a2) cnfval or_cnf :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1, 'a2) cnf ->
('a1, 'a2) cnf ->
('a1, 'a2) cnfval and_cnf : ('a1, 'a2) cnf -> ('a1, 'a2) cnf -> ('a1, 'a2) cnfval is_cnf_tt : ('a1, 'a2) cnf -> boolval is_cnf_ff : ('a1, 'a2) cnf -> boolval and_cnf_opt : ('a1, 'a2) cnf -> ('a1, 'a2) cnf -> ('a1, 'a2) cnfval or_cnf_opt :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1, 'a2) cnf ->
('a1, 'a2) cnf ->
('a1, 'a2) cnfval mk_and :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
(bool -> kind -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf) ->
kind ->
bool ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnfval mk_or :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
(bool -> kind -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf) ->
kind ->
bool ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnfval mk_impl :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
(bool -> kind -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf) ->
kind ->
bool ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnfval mk_iff :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
(bool -> kind -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf) ->
kind ->
bool ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnfval is_bool : kind -> ('a1, 'a2, 'a3, 'a4) tFormula -> bool optionval xcnf :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
('a1 -> 'a3 -> ('a2, 'a3) cnf) ->
('a1 -> 'a3 -> ('a2, 'a3) cnf) ->
bool ->
kind ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnfval radd_term :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1 * 'a2) ->
('a1, 'a2) clause ->
(('a1, 'a2) clause, 'a2 trace) sumval ror_clause :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1 * 'a2) list ->
('a1, 'a2) clause ->
(('a1, 'a2) clause, 'a2 trace) sumval xror_clause_cnf :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1 * 'a2) list ->
('a1, 'a2) clause list ->
('a1, 'a2) clause list * 'a2 traceval ror_clause_cnf :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1 * 'a2) list ->
('a1, 'a2) clause list ->
('a1, 'a2) clause list * 'a2 traceval ror_cnf :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1, 'a2) clause list ->
('a1, 'a2) clause list ->
('a1, 'a2) cnf * 'a2 traceval ror_cnf_opt :
('a1 -> bool) ->
('a1 -> 'a1 -> 'a1 option) ->
('a1, 'a2) cnf ->
('a1, 'a2) cnf ->
('a1, 'a2) cnf * 'a2 traceval ratom : ('a1, 'a2) cnf -> 'a2 -> ('a1, 'a2) cnf * 'a2 traceval rxcnf_and :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
(bool -> kind -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf * 'a3 trace) ->
bool ->
kind ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnf * 'a3 traceval rxcnf_or :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
(bool -> kind -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf * 'a3 trace) ->
bool ->
kind ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnf * 'a3 traceval rxcnf_impl :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
(bool -> kind -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf * 'a3 trace) ->
bool ->
kind ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnf * 'a3 traceval rxcnf_iff :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
(bool -> kind -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf * 'a3 trace) ->
bool ->
kind ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnf * 'a3 traceval rxcnf :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
('a1 -> 'a3 -> ('a2, 'a3) cnf) ->
('a1 -> 'a3 -> ('a2, 'a3) cnf) ->
bool ->
kind ->
('a1, 'a3, 'a4, 'a5) tFormula ->
('a2, 'a3) cnf * 'a3 tracetype ('term, 'annot, 'tX) to_constrT = {mkTT : kind -> 'tX;mkFF : kind -> 'tX;mkA : kind -> 'term -> 'annot -> 'tX;mkAND : kind -> 'tX -> 'tX -> 'tX;mkOR : kind -> 'tX -> 'tX -> 'tX;mkIMPL : kind -> 'tX -> 'tX -> 'tX;mkIFF : kind -> 'tX -> 'tX -> 'tX;mkNOT : kind -> 'tX -> 'tX;mkEQ : 'tX -> 'tX -> 'tX;
}val is_X : kind -> ('a1, 'a2, 'a3, 'a4) tFormula -> 'a3 optionval abs_and :
('a1, 'a2, 'a3) to_constrT ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
(kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula) ->
('a1, 'a3, 'a2, 'a4) gFormulaval abs_or :
('a1, 'a2, 'a3) to_constrT ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
(kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula) ->
('a1, 'a3, 'a2, 'a4) gFormulaval abs_not :
('a1, 'a2, 'a3) to_constrT ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
(kind -> ('a1, 'a2, 'a3, 'a4) tFormula -> ('a1, 'a2, 'a3, 'a4) tFormula) ->
('a1, 'a3, 'a2, 'a4) gFormulaval abst_and :
('a1, 'a2, 'a3) to_constrT ->
(bool ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula) ->
bool ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormulaval abst_or :
('a1, 'a2, 'a3) to_constrT ->
(bool ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula) ->
bool ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormulaval abst_impl :
('a1, 'a2, 'a3) to_constrT ->
(bool ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula) ->
bool ->
'a4 option ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormulaval abs_iff :
('a1, 'a2, 'a3) to_constrT ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormulaval abst_iff :
('a1, 'a2, 'a3) to_constrT ->
('a2 -> bool) ->
(bool ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula) ->
bool ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormulaval abst_eq :
('a1, 'a2, 'a3) to_constrT ->
('a2 -> bool) ->
(bool ->
kind ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula) ->
bool ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormula ->
('a1, 'a2, 'a3, 'a4) tFormulaval cnf_checker :
(('a1 * 'a2) list -> 'a3 -> bool) ->
('a1, 'a2) cnf ->
'a3 list ->
boolval tauto_checker :
('a2 -> bool) ->
('a2 -> 'a2 -> 'a2 option) ->
('a1 -> 'a3 -> ('a2, 'a3) cnf) ->
('a1 -> 'a3 -> ('a2, 'a3) cnf) ->
(('a2 * 'a3) list -> 'a4 -> bool) ->
('a1, rtyp, 'a3, unit0) gFormula ->
'a4 list ->
boolval cneqb : ('a1 -> 'a1 -> bool) -> 'a1 -> 'a1 -> boolval cltb : ('a1 -> 'a1 -> bool) -> ('a1 -> 'a1 -> bool) -> 'a1 -> 'a1 -> booltype op1 = | Equal| NonEqual| Strict| NonStrict
val map_option : ('a1 -> 'a2 option) -> 'a1 option -> 'a2 optionval map_option2 :
('a1 -> 'a2 -> 'a3 option) ->
'a1 option ->
'a2 option ->
'a3 optionval eval_Psatz :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
('a1 -> 'a1 -> bool) ->
'a1 nFormula list ->
'a1 psatz ->
'a1 nFormula optionval check_inconsistent :
'a1 ->
('a1 -> 'a1 -> bool) ->
('a1 -> 'a1 -> bool) ->
'a1 nFormula ->
booltype op2 = | OpEq| OpNEq| OpLe| OpGe| OpLt| OpGt
val norm :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pExpr ->
'a1 polval psub0 :
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pol ->
'a1 pol ->
'a1 polval padd0 :
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 pol ->
'a1 pol ->
'a1 polval popp0 : ('a1 -> 'a1) -> 'a1 pol -> 'a1 polval normalise :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 formula ->
'a1 nFormulaval cnf_of_list :
'a1 ->
('a1 -> 'a1 -> bool) ->
('a1 -> 'a1 -> bool) ->
'a1 nFormula list ->
'a2 ->
('a1 nFormula, 'a2) cnfval cnf_normalise :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
('a1 -> 'a1 -> bool) ->
'a1 formula ->
'a2 ->
('a1 nFormula, 'a2) cnfval cnf_negate :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
('a1 -> 'a1 -> bool) ->
'a1 formula ->
'a2 ->
('a1 nFormula, 'a2) cnfval map_PExpr : ('a2 -> 'a1) -> 'a2 pExpr -> 'a1 pExprval simpl_cone :
'a1 ->
'a1 ->
('a1 -> 'a1 -> 'a1) ->
('a1 -> 'a1 -> bool) ->
'a1 psatz ->
'a1 psatzval qeq_bool : q -> q -> boolval qle_bool : q -> q -> booltype 'a t = | Empty| Elt of 'a| Branch of 'a t * 'a * 'a t
val singleton : 'a1 -> positive -> 'a1 -> 'a1 tval vm_add : 'a1 -> positive -> 'a1 -> 'a1 t -> 'a1 tval zeval_const : z pExpr -> z optionval ceiling : z -> z -> zval is_pol_Z0 : z polC -> boolval valid_cut_sign : op1 -> boolval q_of_Rcst : rcst -> q