sig
  type a
  val succ : Enum.Enum.a -> Enum.Enum.a
  val pred : Enum.Enum.a -> Enum.Enum.a
  val to_enum : int -> Enum.Enum.a
  val from_enum : Enum.Enum.a -> int
  val enum_from : Enum.Enum.a -> Enum.Enum.a list
  val enum_from_then : Enum.Enum.a -> Enum.Enum.a -> Enum.Enum.a list
  val enum_from_to : Enum.Enum.a -> Enum.Enum.a -> Enum.Enum.a list
  val enum_from_then_to :
    Enum.Enum.a -> Enum.Enum.a -> Enum.Enum.a -> Enum.Enum.a list
end