functor (X : MakePostDomArg->
  functor (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 :
            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 = 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
          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