package goblint

  1. Overview
  2. Docs
Static analysis framework for C

Install

dune-project
 Dependency

Authors

Maintainers

Sources

goblint-2.7.1.tbz
sha256=af01aac256229f33a90a9fcbfed04b01e3097f154d4d124f006476d6387c6a66
sha512=2a93bfe16881adbc2d8dcbfe38c1e19cd24ca105d8e1eda13d02440f3002874ffe2957dfd937510765233a054a40568b0052db92e31d382a5bd215d1ec12565c

doc/goblint.lib/Goblint_lib/CongruenceClosure/BlDis/index.html

Module CongruenceClosure.BlDis

type t = TSet.t TMap.t

Block disequalities: a term t1 is mapped to a set of terms that have a different block than t1. It is allowed to contain terms that are not present in the data structure, so we shouldn't assume that all terms in bldis are present in the union find!

val equal : t -> t -> Ppx_deriving_runtime.bool
val compare : t -> t -> Ppx_deriving_runtime.int
val hash : t -> int
val bindings : 'a TMap.t -> (TMap.key * 'a) list
val empty : 'a TMap.t
val is_empty : 'a TMap.t -> bool
val to_conj : TSet.t TMap.t -> prop list
val add_block_diseq : TSet.t TMap.t -> (TMap.key * TSet.elt) -> TSet.t TMap.t

Add disequalities bl(t1) != bl(t2) and bl(t2) != bl(t1).

val add_block_diseqs : TSet.t TMap.t -> 'a -> TMap.key -> TSet.elt list -> TSet.t TMap.t

params:

t1-> a term that is not necessarily present in the data structure

tlist: a list of representative terms

For each term t2 in tlist, it adds the disequality t1 != t2 to diseqs.

val element_closure : prop list -> Stdlib__Set.Make(Goblint_lib__UnionFind.T).t Stdlib__Map.Make(Z).t Stdlib__Map.Make(Goblint_lib__UnionFind.T).t -> (Goblint_lib__UnionFind.term * Goblint_lib__UnionFind.term) list

For each block disequality bl(t1) != bl(t2) we add all disequalities that follow from equalities. I.e., if t1 = z1 + t1' and t2 = z2 + t2', then we add the disequality bl(t1') != bl(t2').

val map_set_mem : TMap.key -> TSet.elt -> t -> bool

Returns true if bl(v) != bl(v').

val filter_map : (TSet.elt -> TSet.elt option) -> t -> TSet.t TMap.t
val map : (TSet.elt -> TSet.elt) -> t -> TSet.t TMap.t
val term_set : 'a TMap.t -> TSet.t
val map_lhs : TSet.t TMap.t -> (TMap.key * TMap.key) list -> TSet.t TMap.t
val filter_map_lhs : (TMap.key -> T.t option) -> t -> TSet.t TMap.t