sig
  module type SCHEDULER =
    sig
      type st
      val hasNext : unit -> bool
      val next : unit -> Dataflow.SCHEDULER.st
      val add : Dataflow.SCHEDULER.st -> unit
    end
  module Worklist :
    sig
      type st = Dex.link
      val hasNext : unit -> bool
      val next : unit -> st
      val add : st -> unit
    end
  module type LATTICE =
    sig
      type l
      val bot : Dataflow.LATTICE.l
      val top : Dataflow.LATTICE.l
      val meet :
        Dataflow.LATTICE.l -> Dataflow.LATTICE.l -> Dataflow.LATTICE.l
      val compare : Dataflow.LATTICE.l -> Dataflow.LATTICE.l -> int
      val to_s : Dataflow.LATTICE.l -> string
    end
  module type DATAFLOW =
    sig
      type l
      type st
      val init : Dataflow.DATAFLOW.st -> Dataflow.DATAFLOW.l
      val trans :
        Dataflow.DATAFLOW.l -> Dataflow.DATAFLOW.st -> Dataflow.DATAFLOW.l
    end
  module type ANALYSIS =
    sig
      type l
      type st
      val to_s : Dataflow.ANALYSIS.l -> string
      val inn : Dataflow.ANALYSIS.st -> Dataflow.ANALYSIS.l
      val out : Dataflow.ANALYSIS.st -> Dataflow.ANALYSIS.l
      val fixed_pt : unit -> unit
    end
  module FwDFA :
    functor (SC : SCHEDULER->
      functor (LT : LATTICE->
        functor
          (CF : sig
                  type st = SC.st
                  val start : st
                  val last : st
                  val all : st list
                  val pred : st -> st list
                  val succ : st -> st list
                  val to_s : st -> string
                end->
          functor
            (DF : sig
                    type l = LT.l
                    type st = SC.st
                    val init : st -> l
                    val trans : l -> st -> l
                  end->
            sig
              type l = LT.l
              type st = SC.st
              val to_s : l -> string
              val inn : st -> l
              val out : st -> l
              val fixed_pt : unit -> unit
            end
  module BwDFA :
    functor (SC : SCHEDULER->
      functor (LT : LATTICE->
        functor
          (CF : sig
                  type st = SC.st
                  val start : st
                  val last : st
                  val all : st list
                  val pred : st -> st list
                  val succ : st -> st list
                  val to_s : st -> string
                end->
          functor
            (DF : sig
                    type l = LT.l
                    type st = SC.st
                    val init : st -> l
                    val trans : l -> st -> l
                  end->
            sig
              type l = LT.l
              type st = SC.st
              val to_s : l -> string
              val inn : st -> l
              val out : st -> l
              val fixed_pt : unit -> unit
            end
end

Web Accessibility