You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

138 lines
2.5 KiB

(*
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
open! IStd
module F = Format
exception Symbol_not_found of Symb.Symbol.t
exception Not_One_Symbol
module SymLinear : sig
module M = Symb.SymbolMap
type t = Ints.NonZeroInt.t M.t
val make :
unsigned:bool -> Typ.Procname.t -> Symb.SymbolTable.t -> Symb.SymbolPath.t -> Counter.t
-> t * t
val eq : t -> t -> bool
val is_zero : t -> bool
end
module Bound : sig
type sign = Plus | Minus
type min_max = Min | Max
type t =
| MInf
| Linear of int * SymLinear.t
| MinMax of int * sign * min_max * int * Symb.Symbol.t
| PInf
val compare : t -> t -> int
val pp : F.formatter -> t -> unit
val of_int : int -> t
val minus_one : t
val _255 : t
val of_sym : SymLinear.t -> t
val is_symbolic : t -> bool
val get_one_symbol : t -> Symb.Symbol.t
val get_mone_symbol : t -> Symb.Symbol.t
val is_one_symbol : t -> bool
val is_mone_symbol : t -> bool
val mk_MinMax : int * sign * min_max * int * Symb.Symbol.t -> t
val int_lb : t -> int sexp_option
val int_ub : t -> int sexp_option
val le : t -> t -> bool
val lt : t -> t -> bool
val gt : t -> t -> bool
val eq : t -> t -> bool
val xcompare : t PartialOrder.xcompare
val min_l : t -> t -> t
val min_u : t -> t -> t
val max_u : t -> t -> t
val widen_l : t -> t -> t
val widen_u : t -> t -> t
val zero : t
val one : t
val mone : t
val is_zero : t -> bool
val is_const : t -> int sexp_option
val plus_l : t -> t -> t
val plus_u : t -> t -> t
val mult_const_l : Ints.NonZeroInt.t -> t -> t
val mult_const_u : Ints.NonZeroInt.t -> t -> t
val neg : t -> t
val div_const : t -> Ints.NonZeroInt.t -> t sexp_option
val get_symbols : t -> Symb.Symbol.t list
val are_similar : t -> t -> bool
val is_not_infty : t -> bool
val subst_lb_exn :
t -> t AbstractDomain.Types.bottom_lifted Symb.SymbolMap.t
-> t AbstractDomain.Types.bottom_lifted
val subst_ub_exn :
t -> t AbstractDomain.Types.bottom_lifted Symb.SymbolMap.t
-> t AbstractDomain.Types.bottom_lifted
val simplify_bound_ends_from_paths : t -> t
end
type ('c, 's) valclass = Constant of 'c | Symbolic of 's | ValTop
module NonNegativeBound : sig
type t = Bound.t
val zero : t
val of_bound : t -> t
val classify : t -> (Ints.NonNegativeInt.t, t) valclass
end