let print_element (e: element) (out: out_channel) = match e with
          Reg(r,DInt)       ->  output_string out ("\t\treg["^(string_of_int r)^"].i")
        | Reg(r,DFloat)     ->  output_string out ("\t\treg["^(string_of_int r)^"].f")
        | Off(o,DInt,_)     ->  output_string out ("\t\toffset "^(string_of_int o))
        | Off(o,DFloat,_)   ->  output_string out ("\t\toffset "^(string_of_int o))
        | Label(l)          ->  output_string out ("\t\tLabel number "^(string_of_int l))
        | Val(v)            ->  output_string out ("\t\tVal "^(string_of_value v))
        | Subr(s)           ->  output_string out ("\t\tSubr "^s)
        | Null              ->  output_string out "\t\tNULL\t"
        | _                 ->  raise (CONFIRM_RULE "This happens when a register or an offset has type bool, which means never")