functor (D : Domain->
  sig
    type var
    type system
    type fixpoint
    type f1 = D.t -> D.t
    type f2 = D.t -> D.t -> D.t
    type fn = D.t list -> D.t
    val create : unit -> Fixpoint.Make.system
    val var : Fixpoint.Make.system -> Fixpoint.Make.var
    val add :
      Fixpoint.Make.system -> Fixpoint.Make.var -> Fixpoint.Make.var -> unit
    val add0 : Fixpoint.Make.system -> Fixpoint.Make.var -> D.t -> unit
    val add1 :
      Fixpoint.Make.system ->
      Fixpoint.Make.var -> Fixpoint.Make.f1 -> Fixpoint.Make.var -> unit
    val add2 :
      Fixpoint.Make.system ->
      Fixpoint.Make.var ->
      Fixpoint.Make.f2 -> Fixpoint.Make.var -> Fixpoint.Make.var -> unit
    val addn :
      Fixpoint.Make.system ->
      Fixpoint.Make.var -> Fixpoint.Make.fn -> Fixpoint.Make.var list -> unit
    val fixpoint :
      system:Fixpoint.Make.system ->
      root:Fixpoint.Make.var -> timeout:int -> Fixpoint.Make.fixpoint
    val get : Fixpoint.Make.fixpoint -> Fixpoint.Make.var -> D.t
  end