package goblint

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module DisjointDomain.PairwiseSetSource

Set of elements E.t grouped into buckets by C, where each bucket is described by the set B.

Common choices for B are SetDomain.Joined and HoareDomain.SetEM.

Handles Lattice.BotValue from B.

Parameters

module E : Printable.S
module B : SetDomain.S with type elt = E.t
module C : Congruence with type elt = E.t

Signature

include Lattice.S
include Lattice.PO
include Printable.S
Sourcetype t
Sourceval equal : t -> t -> bool
Sourceval hash : t -> int
Sourceval compare : t -> t -> int
Sourceval show : t -> string
Sourceval pretty : unit -> t -> Printable.Pretty.doc
Sourceval printXml : 'a BatInnerIO.output -> t -> unit
Sourceval name : unit -> string
Sourceval to_yojson : t -> Yojson.Safe.t
Sourceval tag : t -> int

Unique ID, given by HConsed, for context identification in witness

Sourceval arbitrary : unit -> t QCheck.arbitrary
Sourceval relift : t -> t
Sourceval leq : t -> t -> bool
Sourceval join : t -> t -> t
Sourceval meet : t -> t -> t
Sourceval widen : t -> t -> t

widen x y assumes leq x y. Solvers guarantee this by calling widen old (join old new).

Sourceval narrow : t -> t -> t
Sourceval pretty_diff : unit -> (t * t) -> Lattice.Pretty.doc

If leq x y = false, then pretty_diff () (x, y) should explain why.

Sourceval bot : unit -> t
Sourceval is_bot : t -> bool
Sourceval top : unit -> t
Sourceval is_top : t -> bool
Sourcetype elt = E.t
Sourceval empty : unit -> t
Sourceval is_empty : t -> bool
Sourceval mem : elt -> t -> bool
Sourceval add : elt -> t -> t
Sourceval singleton : elt -> t
Sourceval remove : elt -> t -> t

See Set.S.remove.

NB! On set abstractions this is a strong removal, i.e. all subsumed elements are also removed.

Sourceval union : t -> t -> t
Sourceval inter : t -> t -> t
Sourceval diff : t -> t -> t

See Set.S.diff.

NB! On set abstractions this is a strong removal, i.e. all subsumed elements are also removed.

Sourceval subset : t -> t -> bool
Sourceval disjoint : t -> t -> bool
Sourceval iter : (elt -> unit) -> t -> unit

See Set.S.iter.

On set abstractions this iterates only over canonical elements, not all subsumed elements.

Sourceval map : (elt -> elt) -> t -> t

See Set.S.map.

On set abstractions this maps only canonical elements, not all subsumed elements.

Sourceval fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a

See Set.S.fold.

On set abstractions this folds only over canonical elements, not all subsumed elements.

Sourceval for_all : (elt -> bool) -> t -> bool

See Set.S.for_all.

On set abstractions this checks only canonical elements, not all subsumed elements.

Sourceval exists : (elt -> bool) -> t -> bool

See Set.S.exists.

On set abstractions this checks only canonical elements, not all subsumed elements.

Sourceval filter : (elt -> bool) -> t -> t

See Set.S.filter.

On set abstractions this filters only canonical elements, not all subsumed elements.

Sourceval partition : (elt -> bool) -> t -> t * t

See Set.S.partition.

On set abstractions this partitions only canonical elements, not all subsumed elements.

Sourceval cardinal : t -> int

See Set.S.cardinal.

On set abstractions this counts only canonical elements, not all subsumed elements.

Sourceval elements : t -> elt list

See Elements.

On set abstractions this lists only canonical elements, not all subsumed elements.

Sourceval of_list : elt list -> t
Sourceval min_elt : t -> elt

See Set.S.min_elt.

On set abstractions this chooses only a canonical element, not any subsumed element.

Sourceval max_elt : t -> elt

See Set.S.max_elt.

On set abstractions this chooses only a canonical element, not any subsumed element.

Sourceval choose : t -> elt

See Set.S.choose.

On set abstractions this chooses only a canonical element, not any subsumed element.

OCaml

Innovation. Community. Security.