fonction upg( t1, t2: termes) rend l'upg de t1 et t2 ou echec
    si t1 = t2 alors  rendre(substitution vide) finsi
    si t2 est une variable alors permuter t1 et t2 finsi
    si t1 est une variable alors
        si t2 contient t1 alors rendre(echec)  /* test d'occurrence */
        sinon rendre({ t1 <-  t2 }) finsi
    sinon
        si t1 et t2 sont 2 structures de meme symbole et de meme arit้ 
        alors
            soit t1 = symb(u_1, ..., u_n) et t2 = symb(v_1, ..., v_n)
            s <- substitution vide
            pour i de 1 a n faire
                 s' <-  upg( s(u_i), s(v_i) )
                 si s' = echec alors rendre(echec) finsi
                 s <-  s'(s)
            finfaire
        sinon rendre(echec) finsi
    finsi