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
          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