let add unif unif_combi (to_purify : bool) (n : int) (t : term) 
  (tas : t_subst list) (subs : t_subst list) = 
  let rec add_sub tas = function
    | s::suite -> 
        ( match valeur n s with
              (* No substitution for the variable n *) 
            | Var(nn) -> 
                (try add_sub ((add_elem to_purify nn t s)::tas) suite with 
                   | No_Solution -> add_sub tas suite 
                   | NeedXorUnification(nn,tt,ss) -> 
                       add_sub (merge tas (unif_combi false (Var nn) tt [ss])) suite
                 )
            | tt      -> add_sub (merge tas (unif to_purify tt t [s])) suite )
    | _        -> tas
  in 
    add_sub tas subs