sig
  module type Alpha =
    sig
      type t
      val compare : Scm_analyzer.Alpha.t -> Scm_analyzer.Alpha.t -> int
      val from_string : string -> Scm_analyzer.Alpha.t
      val print : Format.formatter -> Scm_analyzer.Alpha.t -> unit
    end
  module type Custom = sig type tabstract end
  module type S =
    sig
      module Custom : Custom
      val analyze :
        ?widening_start:int ->
        ?widening_freq:int ->
        ?print_step:bool ->
        ?print_state:bool ->
        ?print_postpre:bool ->
        Scm_syn.global_scm ->
        Scm_analyzer.Custom.tabstract Scm_manager.manager -> unit
    end
  module Make :
    functor (Custom : Custom->
      sig
        module Custom : sig type tabstract = Custom.tabstract end
        val analyze :
          ?widening_start:int ->
          ?widening_freq:int ->
          ?print_step:bool ->
          ?print_state:bool ->
          ?print_postpre:bool ->
          Scm_syn.global_scm -> Custom.tabstract Scm_manager.manager -> unit
      end
end