AltErgoLib.Intervalsexception NotConsistent of Explanation.tval is_undefined : t -> boolval point : Numbers.Q.t -> Ty.t -> Explanation.t -> tval doesnt_contain_0 : t -> Th_util.answerval is_positive : t -> Th_util.answerval new_borne_sup : Explanation.t -> Numbers.Q.t -> is_le:bool -> t -> tval new_borne_inf : Explanation.t -> Numbers.Q.t -> is_le:bool -> t -> tval is_point : t -> (Numbers.Q.t * Explanation.t) optionval scale : Numbers.Q.t -> t -> tval affine_scale : const:Numbers.Q.t -> coef:Numbers.Q.t -> t -> tPerform an affine transformation on the given bounds. Suposing input bounds (b1, b2), this will return (const + coef * b1, const + coef * b2). This function is useful to avoid the incorrect roundings that can take place when scaling down an integer range.
val pretty_print : Stdlib.Format.formatter -> t -> unitval print : Stdlib.Format.formatter -> t -> unitval finite_size : t -> Numbers.Q.t optionval borne_inf : t -> Numbers.Q.t * Explanation.t * boolbool is true when bound is large. Raise: No_finite_bound if no finite lower bound
val borne_sup : t -> Numbers.Q.t * Explanation.t * boolbool is true when bound is large. Raise: No_finite_bound if no finite upper bound
val mk_closed :
Numbers.Q.t ->
Numbers.Q.t ->
bool ->
bool ->
Explanation.t ->
Explanation.t ->
Ty.t ->
ttakes as argument in this order:
type bnd = (Numbers.Q.t * Numbers.Q.t) option * Explanation.tval contains : t -> Numbers.Q.t -> boolval add_explanation : t -> Explanation.t -> ttype interval_matching =
((Numbers.Q.t * bool) option * (Numbers.Q.t * bool) option * Ty.t)
AltErgoLib.Var.Map.tval match_interval :
Symbols.bound ->
Symbols.bound ->
t ->
interval_matching ->
interval_matching optionmatchs the given lower and upper bounds against the given interval, and update the given accumulator with the constraints. Returns None if the matching problem is inconsistent