sig
  type chunk
  type domain
  type t
  val create : unit -> Memory.Sigma.t
  val copy : Memory.Sigma.t -> Memory.Sigma.t
  val merge :
    Memory.Sigma.t ->
    Memory.Sigma.t -> Memory.Sigma.t * Passive.t * Passive.t
  val join : Memory.Sigma.t -> Memory.Sigma.t -> Passive.t
  val assigned :
    Memory.Sigma.t ->
    Memory.Sigma.t -> Memory.Sigma.domain -> Lang.F.pred Bag.t
  val mem : Memory.Sigma.t -> Memory.Sigma.chunk -> bool
  val get : Memory.Sigma.t -> Memory.Sigma.chunk -> Lang.F.var
  val value : Memory.Sigma.t -> Memory.Sigma.chunk -> Lang.F.term
  val iter :
    (Memory.Sigma.chunk -> Lang.F.var -> unit) -> Memory.Sigma.t -> unit
  val iter2 :
    (Memory.Sigma.chunk -> Lang.F.var option -> Lang.F.var option -> unit) ->
    Memory.Sigma.t -> Memory.Sigma.t -> unit
  val havoc : Memory.Sigma.t -> Memory.Sigma.domain -> Memory.Sigma.t
  val havoc_chunk : Memory.Sigma.t -> Memory.Sigma.chunk -> Memory.Sigma.t
  val havoc_any : call:bool -> Memory.Sigma.t -> Memory.Sigma.t
  val domain : Memory.Sigma.t -> Memory.Sigma.domain
  val pretty : Format.formatter -> Memory.Sigma.t -> unit
end