diff options
author | Chantal Keller <Chantal.Keller@inria.fr> | 2015-01-12 16:28:10 +0100 |
---|---|---|
committer | Chantal Keller <Chantal.Keller@inria.fr> | 2015-01-12 16:28:10 +0100 |
commit | cfb4587e26623318f432c7e3e21711afc2b966e7 (patch) | |
tree | a90c6f372633458aa0766510bcfdc4682eaa8f6a /src/extraction/smt_checker.mli | |
parent | 1e10dcc783b82269cc3fe3bb7419b9c1cc9e0fa7 (diff) | |
download | smtcoq-cfb4587e26623318f432c7e3e21711afc2b966e7.tar.gz smtcoq-cfb4587e26623318f432c7e3e21711afc2b966e7.zip |
Initial import of SMTCoq v1.2
Diffstat (limited to 'src/extraction/smt_checker.mli')
-rw-r--r-- | src/extraction/smt_checker.mli | 1889 |
1 files changed, 1889 insertions, 0 deletions
diff --git a/src/extraction/smt_checker.mli b/src/extraction/smt_checker.mli new file mode 100644 index 0000000..502d6f3 --- /dev/null +++ b/src/extraction/smt_checker.mli @@ -0,0 +1,1889 @@ +type __ = Obj.t + +type unit0 = +| Tt + +val implb : bool -> bool -> bool + +val xorb : bool -> bool -> bool + +val negb : bool -> bool + +type nat = +| O +| S of nat + +type 'a option = +| Some of 'a +| None + +val option_map : ('a1 -> 'a2) -> 'a1 option -> 'a2 option + +val fst : ('a1*'a2) -> 'a1 + +val snd : ('a1*'a2) -> 'a2 + +type 'a list = +| Nil +| Cons of 'a * 'a list + +val app : 'a1 list -> 'a1 list -> 'a1 list + +val compOpp : ExtrNative.comparison -> ExtrNative.comparison + +type compareSpecT = +| CompEqT +| CompLtT +| CompGtT + +val compareSpec2Type : ExtrNative.comparison -> compareSpecT + +type 'a compSpecT = compareSpecT + +val compSpec2Type : 'a1 -> 'a1 -> ExtrNative.comparison -> 'a1 compSpecT + +type 'a sig0 = + 'a + (* singleton inductive, whose constructor was exist *) + +type sumbool = +| Left +| Right + +type 'a sumor = +| Inleft of 'a +| Inright + +val plus : nat -> nat -> nat + +val nat_iter : nat -> ('a1 -> 'a1) -> 'a1 -> 'a1 + +type positive = +| XI of positive +| XO of positive +| XH + +type n = +| N0 +| Npos of positive + +type z = +| Z0 +| Zpos of positive +| Zneg of positive + +val eqb : bool -> bool -> bool + +type reflect = +| ReflectT +| ReflectF + +val iff_reflect : bool -> reflect + +module type TotalOrder' = + sig + type t + end + +module MakeOrderTac : + functor (O:TotalOrder') -> + sig + + end + +module MaxLogicalProperties : + functor (O:TotalOrder') -> + functor (M:sig + val max : O.t -> O.t -> O.t + end) -> + sig + module Private_Tac : + sig + + end + end + +module Pos : + sig + type t = positive + + val succ : positive -> positive + + val add : positive -> positive -> positive + + val add_carry : positive -> positive -> positive + + val pred_double : positive -> positive + + val pred : positive -> positive + + val pred_N : positive -> n + + type mask = + | IsNul + | IsPos of positive + | IsNeg + + val mask_rect : 'a1 -> (positive -> 'a1) -> 'a1 -> mask -> 'a1 + + val mask_rec : 'a1 -> (positive -> 'a1) -> 'a1 -> mask -> 'a1 + + val succ_double_mask : mask -> mask + + val double_mask : mask -> mask + + val double_pred_mask : positive -> mask + + val pred_mask : mask -> mask + + val sub_mask : positive -> positive -> mask + + val sub_mask_carry : positive -> positive -> mask + + val sub : positive -> positive -> positive + + val mul : positive -> positive -> positive + + val iter : positive -> ('a1 -> 'a1) -> 'a1 -> 'a1 + + val pow : positive -> positive -> positive + + val square : positive -> positive + + val div2 : positive -> positive + + val div2_up : positive -> positive + + val size_nat : positive -> nat + + val size : positive -> positive + + val compare_cont : + positive -> positive -> ExtrNative.comparison -> ExtrNative.comparison + + val compare : positive -> positive -> ExtrNative.comparison + + val min : positive -> positive -> positive + + val max : positive -> positive -> positive + + val eqb : positive -> positive -> bool + + val leb : positive -> positive -> bool + + val ltb : positive -> positive -> bool + + val sqrtrem_step : + (positive -> positive) -> (positive -> positive) -> (positive*mask) -> + positive*mask + + val sqrtrem : positive -> positive*mask + + val sqrt : positive -> positive + + val gcdn : nat -> positive -> positive -> positive + + val gcd : positive -> positive -> positive + + val ggcdn : nat -> positive -> positive -> positive*(positive*positive) + + val ggcd : positive -> positive -> positive*(positive*positive) + + val coq_Nsucc_double : n -> n + + val coq_Ndouble : n -> n + + val coq_lor : positive -> positive -> positive + + val coq_land : positive -> positive -> n + + val ldiff : positive -> positive -> n + + val coq_lxor : positive -> positive -> n + + val shiftl_nat : positive -> nat -> positive + + val shiftr_nat : positive -> nat -> positive + + val shiftl : positive -> n -> positive + + val shiftr : positive -> n -> positive + + val testbit_nat : positive -> nat -> bool + + val testbit : positive -> n -> bool + + val iter_op : ('a1 -> 'a1 -> 'a1) -> positive -> 'a1 -> 'a1 + + val to_nat : positive -> nat + + val of_nat : nat -> positive + + val of_succ_nat : nat -> positive + end + +module Coq_Pos : + sig + module Coq__1 : sig + type t = positive + end + type t = Coq__1.t + + val succ : positive -> positive + + val add : positive -> positive -> positive + + val add_carry : positive -> positive -> positive + + val pred_double : positive -> positive + + val pred : positive -> positive + + val pred_N : positive -> n + + type mask = Pos.mask = + | IsNul + | IsPos of positive + | IsNeg + + val mask_rect : 'a1 -> (positive -> 'a1) -> 'a1 -> mask -> 'a1 + + val mask_rec : 'a1 -> (positive -> 'a1) -> 'a1 -> mask -> 'a1 + + val succ_double_mask : mask -> mask + + val double_mask : mask -> mask + + val double_pred_mask : positive -> mask + + val pred_mask : mask -> mask + + val sub_mask : positive -> positive -> mask + + val sub_mask_carry : positive -> positive -> mask + + val sub : positive -> positive -> positive + + val mul : positive -> positive -> positive + + val iter : positive -> ('a1 -> 'a1) -> 'a1 -> 'a1 + + val pow : positive -> positive -> positive + + val square : positive -> positive + + val div2 : positive -> positive + + val div2_up : positive -> positive + + val size_nat : positive -> nat + + val size : positive -> positive + + val compare_cont : + positive -> positive -> ExtrNative.comparison -> ExtrNative.comparison + + val compare : positive -> positive -> ExtrNative.comparison + + val min : positive -> positive -> positive + + val max : positive -> positive -> positive + + val eqb : positive -> positive -> bool + + val leb : positive -> positive -> bool + + val ltb : positive -> positive -> bool + + val sqrtrem_step : + (positive -> positive) -> (positive -> positive) -> (positive*mask) -> + positive*mask + + val sqrtrem : positive -> positive*mask + + val sqrt : positive -> positive + + val gcdn : nat -> positive -> positive -> positive + + val gcd : positive -> positive -> positive + + val ggcdn : nat -> positive -> positive -> positive*(positive*positive) + + val ggcd : positive -> positive -> positive*(positive*positive) + + val coq_Nsucc_double : n -> n + + val coq_Ndouble : n -> n + + val coq_lor : positive -> positive -> positive + + val coq_land : positive -> positive -> n + + val ldiff : positive -> positive -> n + + val coq_lxor : positive -> positive -> n + + val shiftl_nat : positive -> nat -> positive + + val shiftr_nat : positive -> nat -> positive + + val shiftl : positive -> n -> positive + + val shiftr : positive -> n -> positive + + val testbit_nat : positive -> nat -> bool + + val testbit : positive -> n -> bool + + val iter_op : ('a1 -> 'a1 -> 'a1) -> positive -> 'a1 -> 'a1 + + val to_nat : positive -> nat + + val of_nat : nat -> positive + + val of_succ_nat : nat -> positive + + val eq_dec : positive -> positive -> sumbool + + val peano_rect : 'a1 -> (positive -> 'a1 -> 'a1) -> positive -> 'a1 + + val peano_rec : 'a1 -> (positive -> 'a1 -> 'a1) -> positive -> 'a1 + + type coq_PeanoView = + | PeanoOne + | PeanoSucc of positive * coq_PeanoView + + val coq_PeanoView_rect : + 'a1 -> (positive -> coq_PeanoView -> 'a1 -> 'a1) -> positive -> + coq_PeanoView -> 'a1 + + val coq_PeanoView_rec : + 'a1 -> (positive -> coq_PeanoView -> 'a1 -> 'a1) -> positive -> + coq_PeanoView -> 'a1 + + val peanoView_xO : positive -> coq_PeanoView -> coq_PeanoView + + val peanoView_xI : positive -> coq_PeanoView -> coq_PeanoView + + val peanoView : positive -> coq_PeanoView + + val coq_PeanoView_iter : + 'a1 -> (positive -> 'a1 -> 'a1) -> positive -> coq_PeanoView -> 'a1 + + val eqb_spec : positive -> positive -> reflect + + val switch_Eq : + ExtrNative.comparison -> ExtrNative.comparison -> ExtrNative.comparison + + val mask2cmp : mask -> ExtrNative.comparison + + val leb_spec0 : positive -> positive -> reflect + + val ltb_spec0 : positive -> positive -> reflect + + module Private_Tac : + sig + + end + + module Private_Rev : + sig + module ORev : + sig + type t = Coq__1.t + end + + module MRev : + sig + val max : t -> t -> t + end + + module MPRev : + sig + module Private_Tac : + sig + + end + end + end + + module Private_Dec : + sig + val max_case_strong : + t -> t -> (t -> t -> __ -> 'a1 -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> + 'a1 + + val max_case : + t -> t -> (t -> t -> __ -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> 'a1 + + val max_dec : t -> t -> sumbool + + val min_case_strong : + t -> t -> (t -> t -> __ -> 'a1 -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> + 'a1 + + val min_case : + t -> t -> (t -> t -> __ -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> 'a1 + + val min_dec : t -> t -> sumbool + end + + val max_case_strong : t -> t -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 + + val max_case : t -> t -> 'a1 -> 'a1 -> 'a1 + + val max_dec : t -> t -> sumbool + + val min_case_strong : t -> t -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 + + val min_case : t -> t -> 'a1 -> 'a1 -> 'a1 + + val min_dec : t -> t -> sumbool + end + +module N : + sig + type t = n + + val zero : n + + val one : n + + val two : n + + val succ_double : n -> n + + val double : n -> n + + val succ : n -> n + + val pred : n -> n + + val succ_pos : n -> positive + + val add : n -> n -> n + + val sub : n -> n -> n + + val mul : n -> n -> n + + val compare : n -> n -> ExtrNative.comparison + + val eqb : n -> n -> bool + + val leb : n -> n -> bool + + val ltb : n -> n -> bool + + val min : n -> n -> n + + val max : n -> n -> n + + val div2 : n -> n + + val even : n -> bool + + val odd : n -> bool + + val pow : n -> n -> n + + val square : n -> n + + val log2 : n -> n + + val size : n -> n + + val size_nat : n -> nat + + val pos_div_eucl : positive -> n -> n*n + + val div_eucl : n -> n -> n*n + + val div : n -> n -> n + + val modulo : n -> n -> n + + val gcd : n -> n -> n + + val ggcd : n -> n -> n*(n*n) + + val sqrtrem : n -> n*n + + val sqrt : n -> n + + val coq_lor : n -> n -> n + + val coq_land : n -> n -> n + + val ldiff : n -> n -> n + + val coq_lxor : n -> n -> n + + val shiftl_nat : n -> nat -> n + + val shiftr_nat : n -> nat -> n + + val shiftl : n -> n -> n + + val shiftr : n -> n -> n + + val testbit_nat : n -> nat -> bool + + val testbit : n -> n -> bool + + val to_nat : n -> nat + + val of_nat : nat -> n + + val iter : n -> ('a1 -> 'a1) -> 'a1 -> 'a1 + + val eq_dec : n -> n -> sumbool + + val discr : n -> positive sumor + + val binary_rect : 'a1 -> (n -> 'a1 -> 'a1) -> (n -> 'a1 -> 'a1) -> n -> 'a1 + + val binary_rec : 'a1 -> (n -> 'a1 -> 'a1) -> (n -> 'a1 -> 'a1) -> n -> 'a1 + + val peano_rect : 'a1 -> (n -> 'a1 -> 'a1) -> n -> 'a1 + + val peano_rec : 'a1 -> (n -> 'a1 -> 'a1) -> n -> 'a1 + + val leb_spec0 : n -> n -> reflect + + val ltb_spec0 : n -> n -> reflect + + module Private_BootStrap : + sig + + end + + val recursion : 'a1 -> (n -> 'a1 -> 'a1) -> n -> 'a1 + + module Private_OrderTac : + sig + module Elts : + sig + type t = n + end + + module Tac : + sig + + end + end + + module Private_NZPow : + sig + + end + + module Private_NZSqrt : + sig + + end + + val sqrt_up : n -> n + + val log2_up : n -> n + + module Private_NZDiv : + sig + + end + + val lcm : n -> n -> n + + val eqb_spec : n -> n -> reflect + + val b2n : bool -> n + + val setbit : n -> n -> n + + val clearbit : n -> n -> n + + val ones : n -> n + + val lnot : n -> n -> n + + module Private_Tac : + sig + + end + + module Private_Rev : + sig + module ORev : + sig + type t = n + end + + module MRev : + sig + val max : n -> n -> n + end + + module MPRev : + sig + module Private_Tac : + sig + + end + end + end + + module Private_Dec : + sig + val max_case_strong : + n -> n -> (n -> n -> __ -> 'a1 -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> + 'a1 + + val max_case : + n -> n -> (n -> n -> __ -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> 'a1 + + val max_dec : n -> n -> sumbool + + val min_case_strong : + n -> n -> (n -> n -> __ -> 'a1 -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> + 'a1 + + val min_case : + n -> n -> (n -> n -> __ -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> 'a1 + + val min_dec : n -> n -> sumbool + end + + val max_case_strong : n -> n -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 + + val max_case : n -> n -> 'a1 -> 'a1 -> 'a1 + + val max_dec : n -> n -> sumbool + + val min_case_strong : n -> n -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 + + val min_case : n -> n -> 'a1 -> 'a1 -> 'a1 + + val min_dec : n -> n -> sumbool + end + +module Z : + sig + type t = z + + val zero : z + + val one : z + + val two : z + + val double : z -> z + + val succ_double : z -> z + + val pred_double : z -> z + + val pos_sub : positive -> positive -> z + + val add : z -> z -> z + + val opp : z -> z + + val succ : z -> z + + val pred : z -> z + + val sub : z -> z -> z + + val mul : z -> z -> z + + val pow_pos : z -> positive -> z + + val pow : z -> z -> z + + val square : z -> z + + val compare : z -> z -> ExtrNative.comparison + + val sgn : z -> z + + val leb : z -> z -> bool + + val ltb : z -> z -> bool + + val geb : z -> z -> bool + + val gtb : z -> z -> bool + + val eqb : z -> z -> bool + + val max : z -> z -> z + + val min : z -> z -> z + + val abs : z -> z + + val abs_nat : z -> nat + + val abs_N : z -> n + + val to_nat : z -> nat + + val to_N : z -> n + + val of_nat : nat -> z + + val of_N : n -> z + + val iter : z -> ('a1 -> 'a1) -> 'a1 -> 'a1 + + val pos_div_eucl : positive -> z -> z*z + + val div_eucl : z -> z -> z*z + + val div : z -> z -> z + + val modulo : z -> z -> z + + val quotrem : z -> z -> z*z + + val quot : z -> z -> z + + val rem : z -> z -> z + + val even : z -> bool + + val odd : z -> bool + + val div2 : z -> z + + val quot2 : z -> z + + val log2 : z -> z + + val sqrtrem : z -> z*z + + val sqrt : z -> z + + val gcd : z -> z -> z + + val ggcd : z -> z -> z*(z*z) + + val testbit : z -> z -> bool + + val shiftl : z -> z -> z + + val shiftr : z -> z -> z + + val coq_lor : z -> z -> z + + val coq_land : z -> z -> z + + val ldiff : z -> z -> z + + val coq_lxor : z -> z -> z + + val eq_dec : z -> z -> sumbool + + module Private_BootStrap : + sig + + end + + val leb_spec0 : z -> z -> reflect + + val ltb_spec0 : z -> z -> reflect + + module Private_OrderTac : + sig + module Elts : + sig + type t = z + end + + module Tac : + sig + + end + end + + val sqrt_up : z -> z + + val log2_up : z -> z + + module Private_NZDiv : + sig + + end + + module Private_Div : + sig + module Quot2Div : + sig + val div : z -> z -> z + + val modulo : z -> z -> z + end + + module NZQuot : + sig + + end + end + + val lcm : z -> z -> z + + val eqb_spec : z -> z -> reflect + + val b2z : bool -> z + + val setbit : z -> z -> z + + val clearbit : z -> z -> z + + val lnot : z -> z + + val ones : z -> z + + module Private_Tac : + sig + + end + + module Private_Rev : + sig + module ORev : + sig + type t = z + end + + module MRev : + sig + val max : z -> z -> z + end + + module MPRev : + sig + module Private_Tac : + sig + + end + end + end + + module Private_Dec : + sig + val max_case_strong : + z -> z -> (z -> z -> __ -> 'a1 -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> + 'a1 + + val max_case : + z -> z -> (z -> z -> __ -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> 'a1 + + val max_dec : z -> z -> sumbool + + val min_case_strong : + z -> z -> (z -> z -> __ -> 'a1 -> 'a1) -> (__ -> 'a1) -> (__ -> 'a1) -> + 'a1 + + val min_case : + z -> z -> (z -> z -> __ -> 'a1 -> 'a1) -> 'a1 -> 'a1 -> 'a1 + + val min_dec : z -> z -> sumbool + end + + val max_case_strong : z -> z -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 + + val max_case : z -> z -> 'a1 -> 'a1 -> 'a1 + + val max_dec : z -> z -> sumbool + + val min_case_strong : z -> z -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 + + val min_case : z -> z -> 'a1 -> 'a1 -> 'a1 + + val min_dec : z -> z -> sumbool + end + +val zeq_bool : z -> z -> bool + +val nth : nat -> 'a1 list -> 'a1 -> 'a1 + +val map : ('a1 -> 'a2) -> 'a1 list -> 'a2 list + +val fold_right : ('a2 -> 'a1 -> 'a1) -> 'a1 -> 'a2 list -> 'a1 + +val existsb : ('a1 -> bool) -> 'a1 list -> bool + +val forallb : ('a1 -> bool) -> 'a1 list -> bool + +type int = ExtrNative.uint + +val lsl0 : int -> int -> int + +val lsr0 : int -> int -> int + +val land0 : int -> int -> int + +val lxor0 : int -> int -> int + +val sub0 : int -> int -> int + +val eqb0 : int -> int -> bool + +val ltb0 : int -> int -> bool + +val leb0 : int -> int -> bool + +val foldi_cont : + (int -> ('a1 -> 'a2) -> 'a1 -> 'a2) -> int -> int -> ('a1 -> 'a2) -> 'a1 -> + 'a2 + +val foldi_down_cont : + (int -> ('a1 -> 'a2) -> 'a1 -> 'a2) -> int -> int -> ('a1 -> 'a2) -> 'a1 -> + 'a2 + +val is_zero : int -> bool + +val is_even : int -> bool + +val compare0 : int -> int -> ExtrNative.comparison + +val foldi : (int -> 'a1 -> 'a1) -> int -> int -> 'a1 -> 'a1 + +val fold : ('a1 -> 'a1) -> int -> int -> 'a1 -> 'a1 + +val foldi_down : (int -> 'a1 -> 'a1) -> int -> int -> 'a1 -> 'a1 + +val forallb0 : (int -> bool) -> int -> int -> bool + +val existsb0 : (int -> bool) -> int -> int -> bool + +val cast : int -> int -> (__ -> __ -> __) option + +val reflect_eqb : int -> int -> reflect + +type 'a array = 'a ExtrNative.parray + +val make : int -> 'a1 -> 'a1 array + +val get : 'a1 array -> int -> 'a1 + +val default : 'a1 array -> 'a1 + +val set : 'a1 array -> int -> 'a1 -> 'a1 array + +val length : 'a1 array -> int + +val to_list : 'a1 array -> 'a1 list + +val forallbi : (int -> 'a1 -> bool) -> 'a1 array -> bool + +val forallb1 : ('a1 -> bool) -> 'a1 array -> bool + +val existsb1 : ('a1 -> bool) -> 'a1 array -> bool + +val mapi : (int -> 'a1 -> 'a2) -> 'a1 array -> 'a2 array + +val foldi_left : (int -> 'a1 -> 'a2 -> 'a1) -> 'a1 -> 'a2 array -> 'a1 + +val fold_left : ('a1 -> 'a2 -> 'a1) -> 'a1 -> 'a2 array -> 'a1 + +val foldi_right : (int -> 'a1 -> 'a2 -> 'a2) -> 'a1 array -> 'a2 -> 'a2 + +module Valuation : + sig + type t = int -> bool + end + +module Var : + sig + val _true : int + + val _false : int + + val interp : Valuation.t -> int -> bool + end + +module Lit : + sig + val is_pos : int -> bool + + val blit : int -> int + + val lit : int -> int + + val neg : int -> int + + val nlit : int -> int + + val _true : int + + val _false : int + + val eqb : int -> int -> bool + + val interp : Valuation.t -> int -> bool + end + +module C : + sig + type t = int list + + val interp : Valuation.t -> t -> bool + + val _true : t + + val is_false : t -> bool + + val or_aux : (t -> t -> t) -> int -> t -> t -> int list + + val coq_or : t -> t -> t + + val resolve_aux : (t -> t -> t) -> int -> t -> t -> t + + val resolve : t -> t -> t + end + +module S : + sig + type t = C.t array + + val get : t -> int -> C.t + + val internal_set : t -> int -> C.t -> t + + val make : int -> t + + val insert : int -> int list -> int list + + val sort_uniq : int list -> int list + + val set_clause : t -> int -> C.t -> t + + val set_resolve : t -> int -> int array -> t + end + +val afold_left : + 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a2 -> 'a1) -> 'a2 array -> 'a1 + +val afold_right : + 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a2 -> 'a1) -> 'a2 array -> 'a1 + +val rev_aux : 'a1 list -> 'a1 list -> 'a1 list + +val rev : 'a1 list -> 'a1 list + +val distinct_aux2 : ('a1 -> 'a1 -> bool) -> bool -> 'a1 -> 'a1 list -> bool + +val distinct_aux : ('a1 -> 'a1 -> bool) -> bool -> 'a1 list -> bool + +val distinct : ('a1 -> 'a1 -> bool) -> 'a1 list -> bool + +val forallb2 : ('a1 -> 'a2 -> bool) -> 'a1 list -> 'a2 list -> bool + +module Form : + sig + type form = + | Fatom of int + | Ftrue + | Ffalse + | Fnot2 of int * int + | Fand of int array + | For of int array + | Fimp of int array + | Fxor of int * int + | Fiff of int * int + | Fite of int * int * int + + val form_rect : + (int -> 'a1) -> 'a1 -> 'a1 -> (int -> int -> 'a1) -> (int array -> 'a1) + -> (int array -> 'a1) -> (int array -> 'a1) -> (int -> int -> 'a1) -> + (int -> int -> 'a1) -> (int -> int -> int -> 'a1) -> form -> 'a1 + + val form_rec : + (int -> 'a1) -> 'a1 -> 'a1 -> (int -> int -> 'a1) -> (int array -> 'a1) + -> (int array -> 'a1) -> (int array -> 'a1) -> (int -> int -> 'a1) -> + (int -> int -> 'a1) -> (int -> int -> int -> 'a1) -> form -> 'a1 + + val is_Ftrue : form -> bool + + val is_Ffalse : form -> bool + + val interp_aux : (int -> bool) -> (int -> bool) -> form -> bool + + val t_interp : (int -> bool) -> form array -> bool array + + val lt_form : int -> form -> bool + + val wf : form array -> bool + + val interp_state_var : (int -> bool) -> form array -> int -> bool + + val interp : (int -> bool) -> form array -> form -> bool + + val check_form : form array -> bool + end + +type typ_eqb = { te_eqb : (__ -> __ -> bool); + te_reflect : (__ -> __ -> reflect) } + +type te_carrier = __ + +val te_eqb : typ_eqb -> te_carrier -> te_carrier -> bool + +module Typ : + sig + type coq_type = + | Tindex of int + | TZ + | Tbool + | Tpositive + + val type_rect : (int -> 'a1) -> 'a1 -> 'a1 -> 'a1 -> coq_type -> 'a1 + + val type_rec : (int -> 'a1) -> 'a1 -> 'a1 -> 'a1 -> coq_type -> 'a1 + + type ftype = coq_type list*coq_type + + type interp = __ + + type interp_ftype = __ + + val i_eqb : typ_eqb array -> coq_type -> interp -> interp -> bool + + val reflect_i_eqb : + typ_eqb array -> coq_type -> interp -> interp -> reflect + + type cast_result = + | Cast of (__ -> __ -> __) + | NoCast + + val cast_result_rect : + coq_type -> coq_type -> ((__ -> __ -> __) -> 'a1) -> 'a1 -> cast_result + -> 'a1 + + val cast_result_rec : + coq_type -> coq_type -> ((__ -> __ -> __) -> 'a1) -> 'a1 -> cast_result + -> 'a1 + + val cast : coq_type -> coq_type -> cast_result + + val eqb : coq_type -> coq_type -> bool + + val reflect_eqb : coq_type -> coq_type -> reflect + end + +val list_beq : ('a1 -> 'a1 -> bool) -> 'a1 list -> 'a1 list -> bool + +val reflect_list_beq : + ('a1 -> 'a1 -> bool) -> ('a1 -> 'a1 -> reflect) -> 'a1 list -> 'a1 list -> + reflect + +module Atom : + sig + type cop = + | CO_xH + | CO_Z0 + + val cop_rect : 'a1 -> 'a1 -> cop -> 'a1 + + val cop_rec : 'a1 -> 'a1 -> cop -> 'a1 + + type unop = + | UO_xO + | UO_xI + | UO_Zpos + | UO_Zneg + | UO_Zopp + + val unop_rect : 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> unop -> 'a1 + + val unop_rec : 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> unop -> 'a1 + + type binop = + | BO_Zplus + | BO_Zminus + | BO_Zmult + | BO_Zlt + | BO_Zle + | BO_Zge + | BO_Zgt + | BO_eq of Typ.coq_type + + val binop_rect : + 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> (Typ.coq_type -> 'a1) -> + binop -> 'a1 + + val binop_rec : + 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> 'a1 -> (Typ.coq_type -> 'a1) -> + binop -> 'a1 + + type nop = + Typ.coq_type + (* singleton inductive, whose constructor was NO_distinct *) + + val nop_rect : (Typ.coq_type -> 'a1) -> nop -> 'a1 + + val nop_rec : (Typ.coq_type -> 'a1) -> nop -> 'a1 + + type atom = + | Acop of cop + | Auop of unop * int + | Abop of binop * int * int + | Anop of nop * int list + | Aapp of int * int list + + val atom_rect : + (cop -> 'a1) -> (unop -> int -> 'a1) -> (binop -> int -> int -> 'a1) -> + (nop -> int list -> 'a1) -> (int -> int list -> 'a1) -> atom -> 'a1 + + val atom_rec : + (cop -> 'a1) -> (unop -> int -> 'a1) -> (binop -> int -> int -> 'a1) -> + (nop -> int list -> 'a1) -> (int -> int list -> 'a1) -> atom -> 'a1 + + val cop_eqb : cop -> cop -> bool + + val uop_eqb : unop -> unop -> bool + + val bop_eqb : binop -> binop -> bool + + val nop_eqb : nop -> nop -> bool + + val eqb : atom -> atom -> bool + + val reflect_cop_eqb : cop -> cop -> reflect + + val reflect_uop_eqb : unop -> unop -> reflect + + val reflect_bop_eqb : binop -> binop -> reflect + + val reflect_nop_eqb : nop -> nop -> reflect + + val reflect_eqb : atom -> atom -> reflect + + type ('t, 'i) coq_val = { v_type : 't; v_val : 'i } + + val val_rect : ('a1 -> 'a2 -> 'a3) -> ('a1, 'a2) coq_val -> 'a3 + + val val_rec : ('a1 -> 'a2 -> 'a3) -> ('a1, 'a2) coq_val -> 'a3 + + val v_type : ('a1, 'a2) coq_val -> 'a1 + + val v_val : ('a1, 'a2) coq_val -> 'a2 + + type bval = (Typ.coq_type, Typ.interp) coq_val + + val coq_Bval : + typ_eqb array -> Typ.coq_type -> Typ.interp -> (Typ.coq_type, Typ.interp) + coq_val + + type tval = (Typ.ftype, Typ.interp_ftype) coq_val + + val coq_Tval : + typ_eqb array -> Typ.ftype -> Typ.interp_ftype -> (Typ.ftype, + Typ.interp_ftype) coq_val + + val bvtrue : typ_eqb array -> bval + + val bvfalse : typ_eqb array -> bval + + val typ_cop : cop -> Typ.coq_type + + val typ_uop : unop -> Typ.coq_type*Typ.coq_type + + val typ_bop : binop -> (Typ.coq_type*Typ.coq_type)*Typ.coq_type + + val typ_nop : nop -> Typ.coq_type*Typ.coq_type + + val check_args : + (int -> Typ.coq_type) -> int list -> Typ.coq_type list -> bool + + val check_aux : + typ_eqb array -> tval array -> (int -> Typ.coq_type) -> atom -> + Typ.coq_type -> bool + + val check_args_dec : + (int -> Typ.coq_type) -> Typ.coq_type -> int list -> Typ.coq_type list -> + sumbool + + val check_aux_dec : + typ_eqb array -> tval array -> (int -> Typ.coq_type) -> atom -> sumbool + + val apply_unop : + typ_eqb array -> Typ.coq_type -> Typ.coq_type -> (Typ.interp -> + Typ.interp) -> bval -> (Typ.coq_type, Typ.interp) coq_val + + val apply_binop : + typ_eqb array -> Typ.coq_type -> Typ.coq_type -> Typ.coq_type -> + (Typ.interp -> Typ.interp -> Typ.interp) -> bval -> bval -> + (Typ.coq_type, Typ.interp) coq_val + + val apply_func : + typ_eqb array -> Typ.coq_type list -> Typ.coq_type -> Typ.interp_ftype -> + bval list -> bval + + val interp_cop : typ_eqb array -> cop -> (Typ.coq_type, Typ.interp) coq_val + + val interp_uop : + typ_eqb array -> unop -> bval -> (Typ.coq_type, Typ.interp) coq_val + + val interp_bop : + typ_eqb array -> binop -> bval -> bval -> (Typ.coq_type, Typ.interp) + coq_val + + val compute_interp : + typ_eqb array -> (int -> bval) -> Typ.coq_type -> Typ.interp list -> int + list -> Typ.interp list option + + val interp_aux : + typ_eqb array -> tval array -> (int -> bval) -> atom -> bval + + val interp_bool : typ_eqb array -> bval -> bool + + val t_interp : typ_eqb array -> tval array -> atom array -> bval array + + val lt_atom : int -> atom -> bool + + val wf : atom array -> bool + + val get_type' : typ_eqb array -> bval array -> int -> Typ.coq_type + + val get_type : + typ_eqb array -> tval array -> atom array -> int -> Typ.coq_type + + val wt : typ_eqb array -> tval array -> atom array -> bool + + val interp_hatom : typ_eqb array -> tval array -> atom array -> int -> bval + + val interp : typ_eqb array -> tval array -> atom array -> atom -> bval + + val interp_form_hatom : + typ_eqb array -> tval array -> atom array -> int -> bool + + val check_atom : atom array -> bool + end + +val or_of_imp : int array -> int array + +val check_True : C.t + +val check_False : int list + +val check_BuildDef : Form.form array -> int -> C.t + +val check_ImmBuildDef : Form.form array -> S.t -> int -> C.t + +val check_BuildDef2 : Form.form array -> int -> C.t + +val check_ImmBuildDef2 : Form.form array -> S.t -> int -> C.t + +val check_BuildProj : Form.form array -> int -> int -> C.t + +val check_ImmBuildProj : Form.form array -> S.t -> int -> int -> C.t + +val get_eq : + Form.form array -> Atom.atom array -> int -> (int -> int -> C.t) -> C.t + +val check_trans_aux : + Form.form array -> Atom.atom array -> int -> int -> int list -> int -> C.t + -> C.t + +val check_trans : + Form.form array -> Atom.atom array -> int -> int list -> C.t + +val build_congr : + Form.form array -> Atom.atom array -> int option list -> int list -> int + list -> C.t -> C.t + +val check_congr : + Form.form array -> Atom.atom array -> int -> int option list -> C.t + +val check_congr_pred : + Form.form array -> Atom.atom array -> int -> int -> int option list -> C.t + +type 'c pol = +| Pc of 'c +| Pinj of positive * 'c pol +| PX of 'c pol * positive * 'c pol + +val p0 : 'a1 -> 'a1 pol + +val p1 : 'a1 -> 'a1 pol + +val peq : ('a1 -> 'a1 -> bool) -> 'a1 pol -> 'a1 pol -> bool + +val mkPinj : positive -> 'a1 pol -> 'a1 pol + +val mkPinj_pred : positive -> 'a1 pol -> 'a1 pol + +val mkPX : + 'a1 -> ('a1 -> 'a1 -> bool) -> 'a1 pol -> positive -> 'a1 pol -> 'a1 pol + +val mkXi : 'a1 -> 'a1 -> positive -> 'a1 pol + +val mkX : 'a1 -> 'a1 -> 'a1 pol + +val popp : ('a1 -> 'a1) -> 'a1 pol -> 'a1 pol + +val paddC : ('a1 -> 'a1 -> 'a1) -> 'a1 pol -> 'a1 -> 'a1 pol + +val psubC : ('a1 -> 'a1 -> 'a1) -> 'a1 pol -> 'a1 -> 'a1 pol + +val paddI : + ('a1 -> 'a1 -> 'a1) -> ('a1 pol -> 'a1 pol -> 'a1 pol) -> 'a1 pol -> + positive -> 'a1 pol -> 'a1 pol + +val psubI : + ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1) -> ('a1 pol -> 'a1 pol -> 'a1 pol) -> + 'a1 pol -> positive -> 'a1 pol -> 'a1 pol + +val paddX : + 'a1 -> ('a1 -> 'a1 -> bool) -> ('a1 pol -> 'a1 pol -> 'a1 pol) -> 'a1 pol + -> positive -> 'a1 pol -> 'a1 pol + +val psubX : + 'a1 -> ('a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> ('a1 pol -> 'a1 pol -> 'a1 + pol) -> 'a1 pol -> positive -> 'a1 pol -> 'a1 pol + +val padd : + 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 pol -> 'a1 pol -> + 'a1 pol + +val psub : + 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1) -> ('a1 + -> 'a1 -> bool) -> 'a1 pol -> 'a1 pol -> 'a1 pol + +val pmulC_aux : + 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 pol -> 'a1 -> 'a1 + pol + +val pmulC : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 pol -> 'a1 + -> 'a1 pol + +val pmulI : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> ('a1 pol -> + 'a1 pol -> 'a1 pol) -> 'a1 pol -> positive -> 'a1 pol -> 'a1 pol + +val pmul : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> + bool) -> 'a1 pol -> 'a1 pol -> 'a1 pol + +val 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 pol + +val ppow_pos : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> + bool) -> ('a1 pol -> 'a1 pol) -> 'a1 pol -> 'a1 pol -> positive -> 'a1 pol + +val ppow_N : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> + bool) -> ('a1 pol -> 'a1 pol) -> 'a1 pol -> n -> 'a1 pol + +val norm_aux : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> + 'a1) -> ('a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 pExpr -> 'a1 pol + +type 'a bFormula = +| TT +| FF +| X +| A of 'a +| Cj of 'a bFormula * 'a bFormula +| D of 'a bFormula * 'a bFormula +| N of 'a bFormula +| I of 'a bFormula * 'a bFormula + +type 'term' clause = 'term' list + +type 'term' cnf = 'term' clause list + +val tt : 'a1 cnf + +val ff : 'a1 cnf + +val add_term : + ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> 'a1 -> 'a1 clause -> 'a1 + clause option + +val or_clause : + ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> 'a1 clause -> 'a1 clause -> + 'a1 clause option + +val or_clause_cnf : + ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> 'a1 clause -> 'a1 cnf -> 'a1 + cnf + +val or_cnf : + ('a1 -> bool) -> ('a1 -> 'a1 -> 'a1 option) -> 'a1 cnf -> 'a1 cnf -> 'a1 + cnf + +val and_cnf : 'a1 cnf -> 'a1 cnf -> 'a1 cnf + +val xcnf : + ('a2 -> bool) -> ('a2 -> 'a2 -> 'a2 option) -> ('a1 -> 'a2 cnf) -> ('a1 -> + 'a2 cnf) -> bool -> 'a1 bFormula -> 'a2 cnf + +val cnf_checker : ('a1 list -> 'a2 -> bool) -> 'a1 cnf -> 'a2 list -> bool + +val tauto_checker : + ('a2 -> bool) -> ('a2 -> 'a2 -> 'a2 option) -> ('a1 -> 'a2 cnf) -> ('a1 -> + 'a2 cnf) -> ('a2 list -> 'a3 -> bool) -> 'a1 bFormula -> 'a3 list -> bool + +val cneqb : ('a1 -> 'a1 -> bool) -> 'a1 -> 'a1 -> bool + +val cltb : ('a1 -> 'a1 -> bool) -> ('a1 -> 'a1 -> bool) -> 'a1 -> 'a1 -> bool + +type 'c polC = 'c pol + +type op1 = +| Equal +| NonEqual +| Strict +| NonStrict + +type 'c nFormula = 'c polC*op1 + +val opMult : op1 -> op1 -> op1 option + +val opAdd : op1 -> op1 -> op1 option + +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 option + +val map_option2 : + ('a1 -> 'a2 -> 'a3 option) -> 'a1 option -> 'a2 option -> 'a3 option + +val pexpr_times_nformula : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> + bool) -> 'a1 polC -> 'a1 nFormula -> 'a1 nFormula option + +val nformula_times_nformula : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> + bool) -> 'a1 nFormula -> 'a1 nFormula -> 'a1 nFormula option + +val nformula_plus_nformula : + 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 nFormula -> 'a1 + nFormula -> 'a1 nFormula option + +val eval_Psatz : + 'a1 -> 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> + bool) -> ('a1 -> 'a1 -> bool) -> 'a1 nFormula list -> 'a1 psatz -> 'a1 + nFormula option + +val check_inconsistent : + 'a1 -> ('a1 -> 'a1 -> bool) -> ('a1 -> 'a1 -> bool) -> 'a1 nFormula -> bool + +type op2 = +| OpEq +| OpNEq +| OpLe +| OpGe +| OpLt +| OpGt + +type '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 pol + +val psub0 : + 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1) -> ('a1 + -> 'a1 -> bool) -> 'a1 pol -> 'a1 pol -> 'a1 pol + +val padd0 : + 'a1 -> ('a1 -> 'a1 -> 'a1) -> ('a1 -> 'a1 -> bool) -> 'a1 pol -> 'a1 pol -> + 'a1 pol + +type zWitness = z psatz + +val psub1 : z pol -> z pol -> z pol + +val padd1 : z pol -> z pol -> z pol + +val norm0 : z pExpr -> z pol + +val xnormalise : z formula -> z nFormula list + +val normalise : z formula -> z nFormula cnf + +val xnegate : z formula -> z nFormula list + +val negate : z formula -> z nFormula cnf + +val zunsat : z nFormula -> bool + +val zdeduce : z nFormula -> z nFormula -> z nFormula option + +val 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 -> z + +val zgcd_pol : z polC -> z*z + +val zdiv_pol : z polC -> z -> z polC + +val makeCuttingPlane : z polC -> z polC*z + +val genCuttingPlane : z nFormula -> ((z polC*z)*op1) option + +val nformula_of_cutting_plane : ((z polC*z)*op1) -> z nFormula + +val is_pol_Z0 : z polC -> bool + +val eval_Psatz0 : z nFormula list -> zWitness -> z nFormula option + +val valid_cut_sign : op1 -> bool + +val zChecker : z nFormula list -> zArithProof -> bool + +val zTautoChecker : z formula bFormula -> zArithProof list -> bool + +val build_positive_atom_aux : + (int -> positive option) -> Atom.atom -> positive option + +val build_positive : Atom.atom array -> int -> positive option + +val build_z_atom_aux : Atom.atom array -> Atom.atom -> z option + +val build_z_atom : Atom.atom array -> Atom.atom -> z option + +type vmap = positive*Atom.atom list + +val find_var_aux : Atom.atom -> positive -> Atom.atom list -> positive option + +val find_var : vmap -> Atom.atom -> vmap*positive + +val empty_vmap : vmap + +val build_pexpr_atom_aux : + Atom.atom array -> (vmap -> int -> vmap*z pExpr) -> vmap -> Atom.atom -> + vmap*z pExpr + +val build_pexpr : Atom.atom array -> vmap -> int -> vmap*z pExpr + +val build_op2 : Atom.binop -> op2 option + +val build_formula_atom : + Atom.atom array -> vmap -> Atom.atom -> (vmap*z formula) option + +val build_formula : Atom.atom array -> vmap -> int -> (vmap*z formula) option + +val build_not2 : int -> z formula bFormula -> z formula bFormula + +val build_hform : + Atom.atom array -> (vmap -> int -> (vmap*z formula bFormula) option) -> + vmap -> Form.form -> (vmap*z formula bFormula) option + +val build_var : + Form.form array -> Atom.atom array -> vmap -> int -> (vmap*z formula + bFormula) option + +val build_form : + Form.form array -> Atom.atom array -> vmap -> Form.form -> (vmap*z formula + bFormula) option + +val build_nlit : + Form.form array -> Atom.atom array -> vmap -> int -> (vmap*z formula + bFormula) option + +val build_clause_aux : + Form.form array -> Atom.atom array -> vmap -> int list -> (vmap*z formula + bFormula) option + +val build_clause : + Form.form array -> Atom.atom array -> vmap -> int list -> (vmap*z formula + bFormula) option + +val get_eq0 : + Form.form array -> Atom.atom array -> int -> (int -> int -> C.t) -> C.t + +val get_not_le : + Form.form array -> Atom.atom array -> int -> (int -> int -> C.t) -> C.t + +val check_micromega : + Form.form array -> Atom.atom array -> int list -> zArithProof list -> C.t + +val check_diseq : Form.form array -> Atom.atom array -> int -> C.t + +val check_atom_aux : + Atom.atom array -> (int -> int -> bool) -> Atom.atom -> Atom.atom -> bool + +val check_hatom : Atom.atom array -> int -> int -> bool + +val check_neg_hatom : Atom.atom array -> int -> int -> bool + +val remove_not : Form.form array -> int -> int + +val get_and : Form.form array -> int -> int array option + +val get_or : Form.form array -> int -> int array option + +val flatten_op_body : + (int -> int array option) -> (int list -> int -> int list) -> int list -> + int -> int list + +val flatten_op_lit : + (int -> int array option) -> int -> int list -> int -> int list + +val flatten_and : Form.form array -> int array -> int list + +val flatten_or : Form.form array -> int array -> int list + +val check_flatten_body : + Form.form array -> (int -> int -> bool) -> (int -> int -> bool) -> (int -> + int -> bool) -> int -> int -> bool + +val check_flatten_aux : + Form.form array -> (int -> int -> bool) -> (int -> int -> bool) -> int -> + int -> bool + +val check_flatten : + Form.form array -> (int -> int -> bool) -> (int -> int -> bool) -> S.t -> + int -> int -> C.t + +val check_spl_arith : + Form.form array -> Atom.atom array -> int list -> int -> zArithProof list + -> C.t + +val check_in : int -> int list -> bool + +val check_diseqs_complete_aux : + int -> int list -> (int*int) option array -> bool + +val check_diseqs_complete : int list -> (int*int) option array -> bool + +val check_diseqs : + Form.form array -> Atom.atom array -> Typ.coq_type -> int list -> int array + -> bool + +val check_distinct : + Form.form array -> Atom.atom array -> int -> int array -> bool + +val check_distinct_two_args : + Form.form array -> Atom.atom array -> int -> int -> bool + +val check_lit : + Form.form array -> Atom.atom array -> (int -> int -> bool) -> int -> int -> + bool + +val check_form_aux : + Form.form array -> Atom.atom array -> (int -> int -> bool) -> Form.form -> + Form.form -> bool + +val check_hform : Form.form array -> Atom.atom array -> int -> int -> bool + +val check_lit' : Form.form array -> Atom.atom array -> int -> int -> bool + +val check_distinct_elim : + Form.form array -> Atom.atom array -> int list -> int -> int list + +type 'step _trace_ = 'step array array + +val _checker_ : + (S.t -> 'a1 -> S.t) -> (C.t -> bool) -> S.t -> 'a1 _trace_ -> int -> bool + +module Euf_Checker : + sig + type step = + | Res of int * int array + | ImmFlatten of int * int * int + | CTrue of int + | CFalse of int + | BuildDef of int * int + | BuildDef2 of int * int + | BuildProj of int * int * int + | ImmBuildDef of int * int + | ImmBuildDef2 of int * int + | ImmBuildProj of int * int * int + | EqTr of int * int * int list + | EqCgr of int * int * int option list + | EqCgrP of int * int * int * int option list + | LiaMicromega of int * int list * zArithProof list + | LiaDiseq of int * int + | SplArith of int * int * int * zArithProof list + | SplDistinctElim of int * int * int + + val step_rect : + (int -> int array -> 'a1) -> (int -> int -> int -> 'a1) -> (int -> 'a1) + -> (int -> 'a1) -> (int -> int -> 'a1) -> (int -> int -> 'a1) -> (int -> + int -> int -> 'a1) -> (int -> int -> 'a1) -> (int -> int -> 'a1) -> (int + -> int -> int -> 'a1) -> (int -> int -> int list -> 'a1) -> (int -> int + -> int option list -> 'a1) -> (int -> int -> int -> int option list -> + 'a1) -> (int -> int list -> zArithProof list -> 'a1) -> (int -> int -> + 'a1) -> (int -> int -> int -> zArithProof list -> 'a1) -> (int -> int -> + int -> 'a1) -> step -> 'a1 + + val step_rec : + (int -> int array -> 'a1) -> (int -> int -> int -> 'a1) -> (int -> 'a1) + -> (int -> 'a1) -> (int -> int -> 'a1) -> (int -> int -> 'a1) -> (int -> + int -> int -> 'a1) -> (int -> int -> 'a1) -> (int -> int -> 'a1) -> (int + -> int -> int -> 'a1) -> (int -> int -> int list -> 'a1) -> (int -> int + -> int option list -> 'a1) -> (int -> int -> int -> int option list -> + 'a1) -> (int -> int list -> zArithProof list -> 'a1) -> (int -> int -> + 'a1) -> (int -> int -> int -> zArithProof list -> 'a1) -> (int -> int -> + int -> 'a1) -> step -> 'a1 + + val step_checker : Atom.atom array -> Form.form array -> S.t -> step -> S.t + + val euf_checker : + Atom.atom array -> Form.form array -> (C.t -> bool) -> S.t -> step + _trace_ -> int -> bool + + type certif = + | Certif of int * step _trace_ * int + + val certif_rect : (int -> step _trace_ -> int -> 'a1) -> certif -> 'a1 + + val certif_rec : (int -> step _trace_ -> int -> 'a1) -> certif -> 'a1 + + val add_roots : S.t -> int array -> int array option -> S.t + + val valid : + typ_eqb array -> Atom.tval array -> Atom.atom array -> Form.form array -> + int array -> bool + + val checker : + typ_eqb array -> Atom.tval array -> Atom.atom array -> Form.form array -> + int array -> int array option -> certif -> bool + + val checker_b : + typ_eqb array -> Atom.tval array -> Atom.atom array -> Form.form array -> + int -> bool -> certif -> bool + + val checker_eq : + typ_eqb array -> Atom.tval array -> Atom.atom array -> Form.form array -> + int -> int -> int -> certif -> bool + + val checker_ext : + Atom.atom array -> Form.form array -> int array -> int array option -> + certif -> bool + end + |