Module AbstractDomain.DownwardIntDomain

Domain keeping a non-negative count with a bounded maximum value. join is minimum and top is zero.

Parameters

Signature

top is zero

include WithTop with type t = private int
include S with type t = private int
include Comparable with type t = private int
include IStdlib.PrettyPrintable.PrintableType with type t = private int
type t = private int
val top : t
val is_top : t -> bool

bottom is the provided maximum

include WithBottom with type t := t
include S with type t := t
include Comparable with type t := t
include IStdlib.PrettyPrintable.PrintableType with type t := t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool

the implication relation: lhs <= rhs means lhs |- rhs

val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val bottom : t

The bottom value of the domain.

val is_bottom : t -> bool

Return true if this is the bottom value

val increment : t -> t

bump the count by one if this won't cross the maximum

val decrement : t -> t

decrease the count by one if it is greater than 0