Module Micromega_plugin.Micromega
type nat=|O|S of nattype ('a, 'b) sum=|Inl of 'a|Inr of 'b
val compOpp : comparison -> comparisonval add : nat -> nat -> natval 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 -> 'a1
type positive=|XI of positive|XO of positive|XHtype n=|N0|Npos of positivetype z=|Z0|Zpos of positive|Zneg of positive
module Pos : sig ... endmodule Coq_Pos : sig ... endmodule N : sig ... endval pow_pos : ('a1 -> 'a1 -> 'a1) -> 'a1 -> positive -> 'a1
module Z : sig ... endval p0 : 'a1 -> 'a1 polval p1 : 'a1 -> 'a1 polval peq : ('a1 -> 'a1 -> bool) -> 'a1 pol -> 'a1 pol -> boolval mkPinj : positive -> 'a1 pol -> 'a1 polval mkPinj_pred : positive -> 'a1 pol -> 'a1 polval mkPX : 'a1 -> ('a1 -> 'a1 -> bool) -> 'a1 pol -> positive -> 'a1 pol -> 'a1 polval mkXi : 'a1 -> 'a1 -> positive -> 'a1 polval 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 paddI : ('a1 -> 'a1 -> 'a1) -> ('a1 pol -> 'a1 pol -> 'a1 pol) -> 'a1 pol -> positive -> 'a1 pol -> 'a1 polval psubI : ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1) -> ('a1 pol -> 'a1 pol -> 'a1 pol) -> 'a1 pol -> positive -> 'a1 pol -> 'a1 polval paddX : 'a1 -> ('a1 -> 'a1 -> bool) -> ('a1 pol -> 'a1 pol -> 'a1 pol) -> 'a1 pol -> positive -> 'a1 pol -> '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 pol
type 'c pExpr=|PEc of 'c|PEX of positive|PEadd of 'c pExpr * 'c pExpr|PEsub of 'c pExpr * 'c pExpr|PEmul of 'c pExpr * 'c pExpr|PEopp of 'c pExpr|PEpow of 'c pExpr * n
val mk_X : 'a1 -> 'a1 -> positive -> '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 pol
type ('tA, 'tX, 'aA, 'aF) gFormula=|TT|FF|X of 'tX|A of 'tA * 'aA|Cj of ('tA, 'tX, 'aA, 'aF) gFormula * ('tA, 'tX, 'aA, 'aF) gFormula|D of ('tA, 'tX, 'aA, 'aF) gFormula * ('tA, 'tX, 'aA, 'aF) gFormula|N of ('tA, 'tX, 'aA, 'aF) gFormula|I of ('tA, 'tX, 'aA, 'aF) gFormula * 'aF option * ('tA, 'tX, 'aA, 'aF) gFormula
val mapX : ('a2 -> 'a2) -> ('a1, 'a2, 'a3, 'a4) gFormula -> ('a1, 'a2, 'a3, 'a4) gFormulaval foldA : ('a5 -> 'a3 -> 'a5) -> ('a1, 'a2, 'a3, 'a4) gFormula -> 'a5 -> 'a5val cons_id : 'a1 option -> 'a1 list -> 'a1 listval ids_of_formula : ('a1, 'a2, 'a3, 'a4) gFormula -> 'a4 listval collect_annot : ('a1, 'a2, 'a3, 'a4) gFormula -> 'a3 list
type ('x, 'annot) clause= ('x * 'annot) listtype ('x, 'annot) cnf= ('x, 'annot) clause list
val 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) cnf
type ('term, 'annot, 'tX, 'aF) tFormula= ('term, 'tX, 'annot, 'aF) gFormula
val 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 xcnf : ('a2 -> bool) -> ('a2 -> 'a2 -> 'a2 option) -> ('a1 -> 'a3 -> ('a2, 'a3) cnf) -> ('a1 -> 'a3 -> ('a2, 'a3) cnf) -> bool -> ('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 list) sumval ror_clause : ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> ('a1 * 'a2) list -> ('a1, 'a2) clause -> (('a1, 'a2) clause, 'a2 list) sumval xror_clause_cnf : ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> ('a1 * 'a2) list -> ('a1, 'a2) clause list -> ('a1, 'a2) clause list * 'a2 listval ror_clause_cnf : ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> ('a1 * 'a2) list -> ('a1, 'a2) clause list -> ('a1, 'a2) clause list * 'a2 listval ror_cnf : ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> ('a1, 'a2) clause list -> ('a1, 'a2) clause list -> ('a1, 'a2) cnf * 'a2 listval ror_cnf_opt : ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> ('a1, 'a2) cnf -> ('a1, 'a2) cnf -> ('a1, 'a2) cnf * 'a2 listval ratom : ('a1, 'a2) cnf -> 'a2 -> ('a1, 'a2) cnf * 'a2 listval rxcnf : ('a2 -> bool) -> ('a2 -> 'a2 -> 'a2 option) -> ('a1 -> 'a3 -> ('a2, 'a3) cnf) -> ('a1 -> 'a3 -> ('a2, 'a3) cnf) -> bool -> ('a1, 'a3, 'a4, 'a5) tFormula -> ('a2, 'a3) cnf * 'a3 list
type ('term, 'annot, 'tX) to_constrT={mkTT : 'tX;mkFF : 'tX;mkA : 'term -> 'annot -> 'tX;mkCj : 'tX -> 'tX -> 'tX;mkD : 'tX -> 'tX -> 'tX;mkI : 'tX -> 'tX -> 'tX;mkN : 'tX -> 'tX;}
val aformula : ('a1, 'a2, 'a3) to_constrT -> ('a1, 'a2, 'a3, 'a4) tFormula -> 'a3val is_X : ('a1, 'a2, 'a3, 'a4) tFormula -> 'a3 optionval abs_and : ('a1, 'a2, 'a3) to_constrT -> ('a1, 'a2, 'a3, 'a4) tFormula -> ('a1, 'a2, 'a3, 'a4) tFormula -> (('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 -> ('a1, 'a2, 'a3, 'a4) tFormula -> ('a1, 'a2, 'a3, 'a4) tFormula -> (('a1, 'a2, 'a3, 'a4) tFormula -> ('a1, 'a2, 'a3, 'a4) tFormula -> ('a1, 'a2, 'a3, 'a4) tFormula) -> ('a1, 'a3, 'a2, 'a4) gFormulaval mk_arrow : 'a4 option -> ('a1, 'a2, 'a3, 'a4) tFormula -> ('a1, 'a2, 'a3, 'a4) tFormula -> ('a1, 'a2, 'a3, 'a4) tFormulaval abst_form : ('a1, 'a2, 'a3) to_constrT -> ('a2 -> bool) -> bool -> ('a1, 'a2, 'a3, 'a4) tFormula -> ('a1, 'a3, 'a2, 'a4) gFormulaval 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, __, 'a3, unit0) gFormula -> 'a4 list -> boolval cneqb : ('a1 -> 'a1 -> bool) -> 'a1 -> 'a1 -> boolval cltb : ('a1 -> 'a1 -> bool) -> ('a1 -> 'a1 -> bool) -> 'a1 -> 'a1 -> bool
type 'c polC= 'c poltype op1=|Equal|NonEqual|Strict|NonStricttype 'c nFormula= 'c polC * op1
type 'c psatz=|PsatzIn of nat|PsatzSquare of 'c polC|PsatzMulC of 'c polC * 'c psatz|PsatzMulE of 'c psatz * 'c psatz|PsatzAdd of 'c psatz * 'c psatz|PsatzC of 'c|PsatzZ
val map_option : ('a1 -> 'a2 option) -> 'a1 option -> 'a2 optionval map_option2 : ('a1 -> 'a2 -> 'a3 option) -> 'a1 option -> 'a2 option -> 'a3 optionval pexpr_times_nformula : 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 polC -> 'a1 nFormula -> 'a1 nFormula optionval nformula_times_nformula : 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 nFormula -> 'a1 nFormula -> 'a1 nFormula optionval nformula_plus_nformula : 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 nFormula -> 'a1 nFormula -> 'a1 nFormula 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 -> boolval check_normalised_formulas : 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> ('a1 -> 'a1 -> bool) -> 'a1 nFormula list -> 'a1 psatz -> bool
type op2=|OpEq|OpNEq|OpLe|OpGe|OpLt|OpGttype 't formula={flhs : 't pExpr;fop : op2;frhs : 't pExpr;}
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 xnormalise : ('a1 -> 'a1) -> 'a1 nFormula -> 'a1 nFormula listval xnegate : ('a1 -> 'a1) -> 'a1 nFormula -> 'a1 nFormula listval 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 xdenorm : positive -> 'a1 pol -> 'a1 pExprval denorm : 'a1 pol -> 'a1 pExprval map_PExpr : ('a2 -> 'a1) -> 'a2 pExpr -> 'a1 pExprval map_Formula : ('a2 -> 'a1) -> 'a2 formula -> 'a1 formulaval simpl_cone : 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 psatz -> 'a1 psatz
module PositiveSet : sig ... endval qeq_bool : q -> q -> boolval qle_bool : q -> q -> boolval qplus : q -> q -> qval qmult : q -> q -> qval qopp : q -> qval qminus : q -> q -> qval qinv : q -> qval qpower_positive : q -> positive -> qval qpower : q -> z -> q
val find : 'a1 -> 'a1 t -> positive -> 'a1val singleton : 'a1 -> positive -> 'a1 -> 'a1 tval vm_add : 'a1 -> positive -> 'a1 -> 'a1 t -> 'a1 tval zeval_const : z pExpr -> z option
val zWeakChecker : z nFormula list -> z psatz -> boolval psub1 : z pol -> z pol -> z polval padd1 : z pol -> z pol -> z polval normZ : z pExpr -> z polval zunsat : z nFormula -> boolval zdeduce : z nFormula -> z nFormula -> z nFormula optionval xnnormalise : z formula -> z nFormulaval xnormalise0 : z nFormula -> z nFormula listval cnf_of_list0 : 'a1 -> z nFormula list -> (z nFormula * 'a1) list listval normalise0 : z formula -> 'a1 -> (z nFormula, 'a1) cnfval xnegate0 : z nFormula -> z nFormula listval negate : z formula -> 'a1 -> (z nFormula, 'a1) cnfval cnfZ : (z formula, 'a1, 'a2, 'a3) tFormula -> (z nFormula, 'a1) cnf * 'a1 listval ceiling : z -> z -> z
type zArithProof=|DoneProof|RatProof of zWitness * zArithProof|CutProof of zWitness * zArithProof|EnumProof of zWitness * zWitness * zArithProof list
val zgcdM : z -> z -> zval zgcd_pol : z polC -> z * zval zdiv_pol : z polC -> z -> z polCval makeCuttingPlane : z polC -> z polC * zval genCuttingPlane : z nFormula -> ((z polC * z) * op1) optionval nformula_of_cutting_plane : ((z polC * z) * op1) -> z nFormulaval is_pol_Z0 : z polC -> boolval eval_Psatz0 : z nFormula list -> zWitness -> z nFormula optionval valid_cut_sign : op1 -> bool
module Vars : sig ... endval vars_of_pexpr : z pExpr -> Vars.tval vars_of_formula : z formula -> Vars.tval vars_of_bformula : (z formula, 'a1, 'a2, 'a3) gFormula -> Vars.tval bound_var : positive -> z formulaval mk_eq_pos : positive -> positive -> positive -> z formulaval bound_vars : (positive -> positive -> bool option -> 'a2) -> positive -> Vars.t -> (z formula, 'a1, 'a2, 'a3) gFormulaval bound_problem_fr : (positive -> positive -> bool option -> 'a2) -> positive -> (z formula, 'a1, 'a2, 'a3) gFormula -> (z formula, 'a1, 'a2, 'a3) gFormulaval zChecker : z nFormula list -> zArithProof -> boolval zTautoChecker : z formula bFormula -> zArithProof list -> bool
val qWeakChecker : q nFormula list -> q psatz -> boolval qnormalise : q formula -> 'a1 -> (q nFormula, 'a1) cnfval qnegate : q formula -> 'a1 -> (q nFormula, 'a1) cnfval qunsat : q nFormula -> boolval qdeduce : q nFormula -> q nFormula -> q nFormula optionval normQ : q pExpr -> q polval cnfQ : (q formula, 'a1, 'a2, 'a3) tFormula -> (q nFormula, 'a1) cnf * 'a1 listval qTautoChecker : q formula bFormula -> qWitness list -> bool
type rcst=|C0|C1|CQ of q|CZ of z|CPlus of rcst * rcst|CMinus of rcst * rcst|CMult of rcst * rcst|CPow of rcst * (z, nat) sum|CInv of rcst|COpp of rcst
val rWeakChecker : q nFormula list -> q psatz -> boolval rnormalise : q formula -> 'a1 -> (q nFormula, 'a1) cnfval rnegate : q formula -> 'a1 -> (q nFormula, 'a1) cnfval runsat : q nFormula -> boolval rdeduce : q nFormula -> q nFormula -> q nFormula optionval rTautoChecker : rcst formula bFormula -> rWitness list -> bool