Yet another creeping bug
Unfortunately, it wasn't my most efficient day of work today. I didn't do as much as I hoped.
In particular, I discovered a new bug with my unification algorithm. The cases where it causes problem are not straightforward and were not properly tested earlier. The problem is that when unifying two rows that have row variables, my old algorithm created a substitution that transformed one of the row variable into the other. This is incorrect because the rows created by the returned substitution do not have either the left row variable or the right one, but the union of the two, which is a new row variable. Unfortunately even though it seems a simple modification, it will require rewriting the row unification algorithm, and I hadn't have time to start this yet.
But there are also good news: Val Tannen has promised that I would get my hands on Kleisli's source code shortly. I hope it will be the case.