Disentangling unification and implicit coercion [01JQ]

It’s well known that unification and subtyping don’t play well together, even in the setting of bidirectional elaboration; the problem, as Amélia Liao very helpfully outlined is scheduling. The problem is essentially that we cannot resolve a coercion problem \(\gamma \colon \alpha \lhd A\) by solving \(\alpha :\equiv A, \gamma :\equiv 1_A\) because this is not the most general solution: it is in fact the least general solution, considering that \((A,1_A)\) is the terminal object of \(\mathbf {Type}/A\). When you start choosing non-general solutions to things, the process becomes sensitive to the order in which things were solved, which leads to unpredictable and therefore unreliable behaviour for the user.

That‘s all for tonight! Thanks to András Kovács, Carlo Angiuli, and Amélia Liao for acting as sounding boards at times.