sig
  type store
  val make_store : unit -> NegativeUnits.store
  val null_store : NegativeUnits.store
  val insert : NegativeUnits.store -> Fact.fact -> unit
  val lookup : NegativeUnits.store -> Fact.fact -> Fact.fact
  val iter_all : (Fact.fact -> unit) -> NegativeUnits.store -> unit
  val clear : NegativeUnits.store -> unit
  type state
  val obtain_state : NegativeUnits.store -> NegativeUnits.state
  val install_state : NegativeUnits.state -> unit
  val add_layer : NegativeUnits.state -> NegativeUnits.state
end