sig
  type reg
  val sp : Register.reg
  val temp0 : Register.reg
  val temp1 : Register.reg
  val nb_regs : unit -> int
  val set_nb_regs : int -> unit
  val is_real : Register.reg -> bool
  val join : Register.reg -> Register.reg -> Register.reg
  val real : Register.reg -> Register.reg
  val print_reg : Stdlib.out_channel -> Register.reg -> unit
  type reg_set
  val empty : Register.reg_set
  val add : Register.reg -> Register.reg_set -> Register.reg_set
  val remove : Register.reg -> Register.reg_set -> Register.reg_set
  val is_empty : Register.reg_set -> bool
  val choose : Register.reg_set -> Register.reg
  val fold : (Register.reg -> '-> 'a) -> Register.reg_set -> '-> 'a
  val iter : (Register.reg -> unit) -> Register.reg_set -> unit
  val real_regs : unit -> Register.reg_set
  val from_int : int -> Register.reg
  val from_string : string -> Register.reg
  val to_string : Register.reg -> string
  val to_dot : Register.reg -> string
  val to_color : Register.reg -> Graph.Graphviz.color
end