let rec cct sigma env cpt = function
  | Tlet(x,t1,t2) -> 
      let t1 = cct sigma env cpt t1 in
      let nx ,sigma = new_name x sigma cpt in 
      env.foralls <- Vset.add x env.foralls; 
      env.eqs <- p_and env.eqs (p_eq (e_var nx) t1) ;
      cct sigma env cpt t2 
  | Tapp(f,tl) ->
      e_app f  (List.map (cct sigma env cpt ) tl)
  | Tif (c,ta,tb) ->
      e_if(cct sigma env cpt c)(cct sigma env cpt ta)(cct sigma env cpt tb)
  | Tdata _ -> Wp_parameters.fatal "Normalization of Fol(data)"
  | Tconst _ as c -> c
  | Tvar x as t ->
      begin
        try e_var (Vmap.find x sigma)
        with Not_found -> 
          Wp_parameters.failure ~once:true "Suspiscous normalization of %s" 
            (Fol.Var.var_name x) ; t
      end