functor (X : MakePostDomArg) (DbPostDom : Db.PostdominatorsTypes.Sig->
  sig
    module PostDom :
      sig
        val self : State.t
        val name : string
        val mark_as_computed : ?project:Project.t -> unit -> unit
        val is_computed : ?project:Project.t -> unit -> bool
        module Datatype :
          sig
            type t = MakePostDom(X).PostDom.Datatype.t
            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
          end
        val add_hook_on_update : (Datatype.t -> unit) -> unit
        val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
        type key = Cil_types.stmt
        type data = DomSet.t
        val replace : key -> data -> unit
        val add : key -> data -> unit
        val clear : unit -> unit
        val length : unit -> int
        val iter : (key -> data -> unit) -> unit
        val iter_sorted :
          ?cmp:(key -> key -> int) -> (key -> data -> unit) -> unit
        val fold : (key -> data -> '-> 'a) -> '-> 'a
        val fold_sorted :
          ?cmp:(key -> key -> int) -> (key -> data -> '-> 'a) -> '-> 'a
        val memo : ?change:(data -> data) -> (key -> data) -> key -> data
        val find : key -> data
        val find_all : key -> data list
        val mem : key -> bool
        val remove : key -> unit
      end
    module PostComputer :
      sig
        val name : string
        val debug : bool
        type t = DomSet.t
        module StmtStartData = PostDom
        val pretty : Format.formatter -> DomSet.t -> unit
        val combineStmtStartData :
          '-> old:DomSet.t -> DomSet.t -> DomSet.t option
        val combineSuccessors :
          DomSet.domset -> DomSet.domset -> DomSet.domset
        val doStmt :
          Cil_datatype.Stmt.Hptset.elt -> DomSet.domset Dataflow2.action
        val doInstr : '-> '-> '-> 'Dataflow2.action
        val filterIf : Cil_types.stmt -> Cil_datatype.Stmt.t -> bool
        val filterStmt : Cil_types.stmt -> Cil_datatype.Stmt.t -> bool
        val funcExitData : DomSet.domset
      end
    module PostCompute : sig val compute : Cil_types.stmt list -> unit end
    val compute_postdom : Kernel_function.t -> unit
    val get_stmt_postdominators :
      Kernel_function.t -> PostDom.key -> PostDom.data
    val stmt_postdominators :
      Kernel_function.t -> PostDom.key -> Cil_datatype.Stmt.Hptset.t
    val is_postdominator :
      Kernel_function.t ->
      opening:PostDom.key -> closing:Cil_datatype.Stmt.Hptset.elt -> bool
    val display_postdom : unit -> unit
    val print_dot_postdom : string -> Kernel_function.t -> unit
  end