package codex

  1. Overview
  2. Docs
The Codex library for building static analysers based on abstract interpretation

Install

dune-project
 Dependency

Authors

Maintainers

Sources

1.0-rc4.tar.gz
md5=bc7266a140c6886add673ede90e335d3
sha512=8da42c0ff2c1098c5f9cb2b5b43b306faf7ac93b8f5ae00c176918cee761f249ff45b29309f31a05bbcf6312304f86a0d5a000eb3f1094d3d3c2b9b4c7f5c386

doc/codex.single_value_abstraction/Single_value_abstraction/Stats/Make/Boolean_Lattice/index.html

Module Make.Boolean_LatticeSource

include Datatype_sig.S with type t = boolean
type t = boolean
val equal : t -> t -> bool

Any notion of equality is allowed, as long as it is an equivalence relation, and that if a == b, then equal a b.

val compare : t -> t -> int

compare is a total order, and should be compatible with equal.

val hash : t -> int

hash requires that equal values have the same hash.

val pretty : Format.formatter -> t -> unit
val join : t -> t -> t

Computes the least upper bound of two elements.

val includes_or_widen : previous:t -> t -> bool * t

In a fixpoint iteration of a function \mathcal{F}, previous is the previous element of the fixpoint iteration sequence. The other element is the newly computed (tentative) element, i.e. \mathcal{F}(previous). If the new element is included in previous, true is returned, together with new (the smaller element): the post-fixpoint of \mathcal{F} has been found (further calls to \mathcal{F} can decrease the sequence). Else, the returned element should be used as the next element of the fixpoint iteration sequence; the operator guarantees its convergence. For lattices of finite height, the widening part can just perform an over-approximation of the join; however note that it is not required that the sequence is monotonic.

val includes : t -> t -> bool

includes a b holds if b \sqsubseteq a, i.e., b is at least as precise as a.

val widen : previous:t -> t -> t

Widening operator used in fixpoint iteration to enforce convergence.

val inter : t -> t -> t
include Lattices.Sig.WITH_BOTTOM with type t := t
val bottom : unit -> t
val is_bottom : t -> bool
val top : unit -> t
val singleton : bool -> t
val to_quadrivalent : t -> Lattices__.Boolean_standard.Quadrivalent.t