let rec change_term_vars c = 
  map (change_arterm_vars c)
    
and change_arterm_vars c = 
  function
    | TTerm term -> TTerm (change_term_vars c term)
    | TVariable x -> TVariable (
        try 
          List.assq x c
        with Not_found -> x)