package goblint
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=bfc412ec2e447eaef6f4f83892e3511ebf305593cb00561c1406be3ae8bf48e9
sha512=5f2a162e5f36bffafc9836b0d18b5b2808cecfa6bf68f83bb7d1e8b9947ac74cf07776eb09274b4b29d55c897a45a10768f0d9ed25810cf6ba2409c525e4cd4d
doc/goblint.lib/Goblint_lib/DisjointDomain/index.html
Module Goblint_lib.DisjointDomain
Abstract domains for collections of elements from disjoint unions of domains. Formally, the elements form a cofibered domain from a discrete category.
Elements are grouped into disjoint buckets by a congruence or/and a projection. All operations on elements are performed bucket-wise and must be bucket-closed.
Examples of such domains are path-sensitivity and address sets.
Sets
By projection
module type Representative = sig ... end
Buckets defined by projection. The module is the image (representative) of the projection function of_elt
.
module ProjectiveSet
(E : Printable.S)
(B : SetDomain.S with type elt = E.t)
(R : Representative with type elt = E.t) :
SetDomain.S with type elt = E.t
Set of elements E.t
grouped into buckets by R
, where each bucket is described by the set B
.
By congruence
module type Congruence = sig ... end
Buckets defined by congruence.
module PairwiseSet
(E : Printable.S)
(B : SetDomain.S with type elt = E.t)
(C : Congruence with type elt = E.t) :
SetDomain.S with type elt = E.t
Set of elements E.t
grouped into buckets by C
, where each bucket is described by the set B
.
module type RepresentativeCongruence = sig ... end
Buckets defined by a coarse projection and a fine congruence. Congruent elements must have the same representative, but not vice versa (Representative
would then suffice).
module CombinedSet
(E : Printable.S)
(B : SetDomain.S with type elt = E.t)
(RC : RepresentativeCongruence with type elt = E.t) :
sig ... end
Set of elements E.t
grouped into buckets by RC
, where each bucket is described by the set B
.
Maps
Generalization of above sets into maps, whose key set behaves like above sets, but each element can also be associated with a value.
By congruence
module PairwiseMap
(E : Printable.S)
(R : Printable.S)
(B : MapDomain.S with type key = E.t and type value = R.t)
(C : Congruence with type elt = E.t) :
MapDomain.S with type key = E.t and type value = B.value
Map of keys E.t
grouped into buckets by C
, where each bucket is described by the map B
with values R.t
.