sig   module type InputDomain =     sig       type state       val top : state       val is_included : state -> state -> bool       val join : state -> state -> state       val join_and_is_included : state -> state -> state * bool       val widen :         Cil_types.kernel_function ->         Cil_types.stmt -> state -> state -> state       type t = state       val ty : t Type.t       val name : string       val descr : t Descr.t       val packed_descr : Structural_descr.pack       val reprs : t list       val equal : t -> t -> bool       val compare : t -> t -> int       val hash : t -> int       val pretty_code : Format.formatter -> t -> unit       val internal_pretty_code :         Type.precedence -> Format.formatter -> t -> unit       val pretty : Format.formatter -> t -> unit       val varname : t -> string       val mem_project : (Project_skeleton.t -> bool) -> t -> bool       val copy : t -> t       val storage : unit -> bool     end   module Make :     functor (Domain : InputDomain->       sig         val register_initial_state :           Value_types.callstack -> Domain.state -> unit         val register_state_before_stmt :           Value_types.callstack -> Cil_types.stmt -> Domain.state -> unit         val register_state_after_stmt :           Value_types.callstack -> Cil_types.stmt -> Domain.state -> unit         val get_initial_state :           Cil_types.kernel_function -> Domain.state Eval.or_bottom         val get_initial_state_by_callstack :           Cil_types.kernel_function ->           Domain.state Value_types.Callstack.Hashtbl.t option         val get_stmt_state : Cil_types.stmt -> Domain.state Eval.or_bottom         val get_stmt_state_by_callstack :           after:bool ->           Cil_types.stmt ->           Domain.state Value_types.Callstack.Hashtbl.t option       end end