TMP: changer l'endroit ou sont ajoutées les informations de type de la fonction.

Ça ne peut pas être fait trop tôt sinon dans les fonctions mutuellement récursives
on risque de perdre des informations.
TMP: working type boxing constraint loop
some cleaning some comments
TMP: working return
Some cleaning