functor (E : Int_type->
  sig
    val ( ++ ) : E.t -> E.t -> E.t
    val ( -- ) : E.t -> E.t -> E.t
    val ( ** ) : E.t -> E.t -> E.t
    val ( // ) : E.t -> E.t -> E.t
    val ( %% ) : E.t -> E.t -> E.t
    val ( /% ) : E.t -> E.t -> E.t * E.t
    val ( << ) : E.t -> int -> E.t
    val ( >> ) : E.t -> int -> E.t
    val ( ^^ ) : E.t -> int -> E.t
    val ( += ) : E.tref -> E.t -> unit
    val ( -= ) : E.tref -> E.t -> unit
    val ( *= ) : E.tref -> E.t -> unit
    val ( /= ) : E.tref -> E.t -> unit
    val ( %= ) : E.tref -> E.t -> unit
    val ( +. ) : E.t -> int -> E.t
    val ( -. ) : E.t -> int -> E.t
    val ( *. ) : E.t -> int -> E.t
    val ( /. ) : E.t -> int -> E.t
    val ( %. ) : E.t -> int -> int
    val ( /%. ) : E.t -> int -> E.t * int
    val ( ^. ) : int -> int -> E.t
    val ( +=. ) : E.tref -> int -> unit
    val ( -=. ) : E.tref -> int -> unit
    val ( *=. ) : E.tref -> int -> unit
    val ( /=. ) : E.tref -> int -> unit
    val ( =. ) : E.t -> int -> bool
    val ( <>. ) : E.t -> int -> bool
    val ( <. ) : E.t -> int -> bool
    val ( <=. ) : E.t -> int -> bool
    val ( >. ) : E.t -> int -> bool
    val ( >=. ) : E.t -> int -> bool
    val ( ~~ ) : E.tref -> E.t
  end