dmz>y -> x
dmz>x -> TInt
dmz>z -> y
dmz>solving...
dmz>z -> TInt
dmz>y -> TInt
dmz>x -> y
dmz>
Ну все правильно, алгоритм возвращает подстановку, а не отображение из переменных в типы. Если хочется получить тип выражения, надо эту подстановку применить.