functor (B1 : Base->
  functor (B2 : Base->
    sig
      type item = (B1.t, B2.t) Tools.case
      type descriptor
      type accumulator = unit
      type state
      val initial : Tools.MakeUF.state
      val representative :
        Tools.MakeUF.item -> Tools.MakeUF.state -> Tools.MakeUF.item
      val equivalent :
        Tools.MakeUF.item -> Tools.MakeUF.item -> Tools.MakeUF.state -> bool
      val descriptor :
        Tools.MakeUF.item -> Tools.MakeUF.state -> Tools.MakeUF.descriptor
      val set :
        Tools.MakeUF.item ->
        Tools.MakeUF.descriptor -> Tools.MakeUF.state -> Tools.MakeUF.state
      val union :
        Tools.MakeUF.item ->
        Tools.MakeUF.item ->
        Tools.MakeUF.state ->
        Tools.MakeUF.accumulator ->
        Tools.MakeUF.state * Tools.MakeUF.accumulator
      val domain : Tools.MakeUF.state -> Tools.MakeUF.item list
    end