Module Omega.MakeOmegaSolver
Parameters
Signature
type bigint= I.bigint
val (=?) : I.bigint -> I.bigint -> boolval (<?) : I.bigint -> I.bigint -> boolval (<=?) : I.bigint -> I.bigint -> boolval (>?) : I.bigint -> I.bigint -> boolval (>=?) : I.bigint -> I.bigint -> boolval (+) : I.bigint -> I.bigint -> I.bigintval (-) : I.bigint -> I.bigint -> I.bigintval (*) : I.bigint -> I.bigint -> I.bigintval (/) : I.bigint -> I.bigint -> I.bigintval (mod) : I.bigint -> I.bigint -> I.bigintval zero : I.bigintval one : I.bigintval two : I.bigintval negone : I.bigintval abs : I.bigint -> I.bigintval string_of_bigint : I.bigint -> stringval neg : I.bigint -> I.bigintval (<) : int -> int -> boolval (>) : int -> int -> boolval (<=) : int -> int -> boolval (>=) : int -> int -> boolval pp : int -> unitval push : 'a -> 'a list Stdlib.ref -> unitval pgcd : I.bigint -> I.bigint -> I.bigintval pgcd_l : I.bigint list -> I.bigintval floor_div : I.bigint -> I.bigint -> I.bigint
type coeff={c : bigint;v : int;}type linear= coeff listtype eqn_kind=|EQUA|INEQ|DISEtype afine={id : int;kind : eqn_kind;body : coeff list;constant : bigint;}type state_action={st_new_eq : afine;st_def : afine;st_orig : afine;st_coef : bigint;st_var : int;}type action=|DIVIDE_AND_APPROX of afine * afine * bigint * bigint|NOT_EXACT_DIVIDE of afine * bigint|FORGET_C of int|EXACT_DIVIDE of afine * bigint|SUM of int * bigint * afine * bigint * afine|STATE of state_action|HYP of afine|FORGET of int * int|FORGET_I of int * int|CONTRADICTION of afine * afine|NEGATE_CONTRADICT of afine * afine * bool|MERGE_EQ of int * afine * int|CONSTANT_NOT_NUL of int * bigint|CONSTANT_NUL of int|CONSTANT_NEG of int * bigint|SPLIT_INEQ of afine * int * action list * int * action list|WEAKEN of int * bigint
val display_eq : (int -> string) -> (coeff list * I.bigint) -> unitval trace_length : action list -> I.bigintval operator_of_eq : eqn_kind -> stringval kind_of : eqn_kind -> stringval display_system : (int -> string) -> afine list -> unitval display_inequations : (int -> string) -> (coeff list * I.bigint) list -> unitval sbi : I.bigint -> stringval display_action : (int -> string) -> action list -> unitval default_print_var : int -> stringval add_event : action -> unitval history : unit -> action listval clear_history : unit -> unitval nf_linear : coeff list -> coeff listval nf : (bool * (coeff list * int)) -> bool * (coeff list * int)val map_eq_linear : (bigint -> bigint) -> coeff list -> coeff listval map_eq_afine : (bigint -> bigint) -> afine -> afineval negate_eq : afine -> afineval sum : coeff list -> coeff list -> coeff listval sum_afine : (unit -> int) -> afine -> afine -> afine
val chop_var : int -> coeff list -> coeff * coeff listval normalize : afine -> afine listval eliminate_with_in : (unit -> int) -> coeff -> afine -> afine -> afineval omega_mod : I.bigint -> I.bigint -> I.bigintval banerjee_step : ((unit -> int) * (unit -> int) * (int -> string)) -> afine -> afine list -> afine list -> afine * afine list * afine listval eliminate_one_equation : ((unit -> int) * (unit -> int) * (int -> string)) -> (afine * afine list * afine list) -> afine list * afine listval banerjee : ((unit -> int) * (unit -> int) * (int -> string)) -> (afine list * afine list) -> afine list
val select_variable : afine list -> intval classify : int -> afine list -> afine list * (bigint * afine) list * (I.bigint * afine) listval product : (unit -> int) -> bool -> (bigint * afine) list -> (bigint * afine) list -> afine listval fourier_motzkin : ((unit -> int) * 'a * (int -> string)) -> bool -> afine list -> afine listval simplify : ((unit -> int) * (unit -> int) * (int -> string)) -> bool -> afine list -> afine listval depend : int list -> action list -> action list -> int list * action listval negation : (afine list * afine list) -> unit
exceptionFULL_SOLUTION of action list * int list