And that’s where you lost me. Isn’t the following function injective:

data A = A | B

data B = C | D

f (A, True) = (C,True)

f (A, False) = (C, False)

f (B, True) = (D, True)

f (B, False) = (D, False)

?

I guess that the fact that A and B are abstract somehow comes into play here. Or is it the bottoms?

]]>Don’t have many suggestions yet since I only skimmed it quickly. The one I have: on the dissection of 1 + XL you should add the proof that L a \times L b indeed satisfies the same equation as the disection. It’s not at all clear at first and I’d argue that it’s certainly more non-trivial than the other steps of the derivation (which are after all just mechanical applications of the dissection rules).

]]>