Il se trouve que l'application la fonction subst_env est plus générale que prévue. En particulier, elle applique subst_env s l applique la substitution s à la partie droite de chaque éléments de la listes quelque soit la partie gauche. Conçue pour une partie gauche de type "var", elle fonctionne aussi bien pour une partie gauche de type "tvar".

let compose s2 s1 =
  (restrict s2 (domain s1)) @ (subst_env s2 s1)