sig
  type mheap = Hoare | ZeroAlias | Typed of MemTyped.pointer
  type mvar = Raw | Var | Ref | Caveat
  type setup = {
    mvar : Factory.mvar;
    mheap : Factory.mheap;
    cint : Cint.model;
    cfloat : Cfloat.model;
  }
  type driver = LogicBuiltins.driver
  val ident : Factory.setup -> string
  val descr : Factory.setup -> string
  val memory : Factory.mheap -> Factory.mvar -> (module Memory.Model)
  val configure : Factory.setup -> Factory.driver -> Model.tuning
  val instance : Factory.setup -> Factory.driver -> Model.t
  val default : Factory.setup
  val parse :
    ?default:Factory.setup ->
    ?warning:(string -> unit) -> string list -> Factory.setup
end