method pp_term fmt = function
    | Tvar x -> self#pp_var fmt x
    | Ttrue -> self#pp_term_true fmt
    | Tfalse -> self#pp_term_false fmt
    | Tint z -> self#pp_term_int fmt z
    | Treal z -> self#pp_term_real fmt z
    | Tcall(f,ts) -> self#pp_term_call fmt f ts
    | Tprim(pi,ts) -> self#pp_term_primitive fmt pi ts
    | Tgetfield(r,f) -> self#pp_term_getfield fmt r f
    | Tsetfield(r,f,v) -> self#pp_term_setfield fmt r f v
    | Taccess(r,k) -> self#pp_term_access fmt r k
    | Tupdate(r,k,v) -> self#pp_term_update fmt r k v
    | Tlet(x,a,b) -> self#pp_term_let fmt x a b
    | Tif(c,a,b) -> self#pp_term_cond fmt c a b