Working on generate-constraints, and for something like bif, we could generate a lot of constraints. For example:
[[test]] = boolean
[[bif(test then else)]] = [[then]]
[[bif(test then else)]] = [[else]]
[[then]] = [[else]]
Should the last one be included? I don't think it's technically necessary for the expression to unify but it is something that can be concluded at this step. Is it a problem to include extra constraints like this one?