let term_at env label e te =
    let lname = Macros.logic_label_name label in
    let l = Hashtbl.find_all env.env_at lname in
    let rec find_v l = match l with
    | [] -> let v = match e with Fol.Tvar v -> Fol.fresh_var v
                               | _ -> Fol.fresh_named_var lname te
            in Hashtbl.add env.env_at lname (v, e); 
            v
    | (vl, el)::tl -> if Fol.eq_term M.eq_data e el then vl else find_v tl
    in Fol.Tvar (find_v l)