functor (Domain : InputDomain->
  sig
    val register_global_state : bool -> Domain.t Eval.or_bottom -> unit
    val register_initial_state : Value_types.callstack -> Domain.t -> unit
    val register_state_before_stmt :
      Value_types.callstack -> Cil_types.stmt -> Domain.t -> unit
    val register_state_after_stmt :
      Value_types.callstack -> Cil_types.stmt -> Domain.t -> unit
    val get_global_state : unit -> Domain.t Eval.or_bottom
    val get_initial_state :
      Cil_types.kernel_function -> Domain.t Eval.or_bottom
    val get_initial_state_by_callstack :
      Cil_types.kernel_function ->
      Domain.t Value_types.Callstack.Hashtbl.t Eval.or_top_or_bottom
    val get_stmt_state :
      after:bool -> Cil_types.stmt -> Domain.t Eval.or_bottom
    val get_stmt_state_by_callstack :
      after:bool ->
      Cil_types.stmt ->
      Domain.t Value_types.Callstack.Hashtbl.t Eval.or_top_or_bottom
    val mark_as_computed : unit -> unit
    val is_computed : unit -> bool
  end