Next: the occur check | Prev: the tree syntax | Up: contents


This triangle function gives us simultaneous substitution.

I think, if I understand Thorsten Altenkirch, correctly I'm supposed to call the triangle `bind' and say `Oh look! A Kleisli triple!' Thorsten points out that there are a few more `useful properties' I didn't mention on the slide. Of course, the things which should hold do hold. Can you guess what they are?

I hope you don't mind me overloading the triangle, lifting it to positions also. The coherence property tells us, in particular, that if put t p and t have a unifier f, then

put (f |> t) (f |> p) = (f |> t)

We know what that means about (f |> p), and hence about p.

Now that I'm overloading it, I might as well carry on and let |> map renamings too. For example, two slides on, I wrote (thin w) |>, when I should have written (leaf o (thin w)) |>, and I'm trying to sweep that mistake under the carpet. Of course, if we buy Luo-Soloviev-Bailey-Jones coercive subtyping, we can get away with it on the machine, as well on slides.


Next: the occur check | Prev: the tree syntax | Up: contents


Conor's Work Page