Hints for Y1,Y2.

• Begin by trying to define X1 and X2 directly assignment 4 hint 3 hint 1, then once they're working, you can abstract back to a pair of combinators Y1 and Y2 that generate X1 and X2 for a given pair of arguments T1 and T2.

You want:

X1 <~~> T1 X1 X2 and
X2 <~~> T2 X1 X2

• X1 is presumably going to have some form like:

(\elem1 elem2 ... (T1
(do-something-with-the-elems-to-make-X1)
(do-something-with-the-elems-to-make-X2)
))
some-elem1 some-elem2 ...


Right? What will the form of X2 be?

• Can you see how to go on?

• Call the displayed abstract above (\elem1 elem2 ... (...)) "elem0". What's the relation between X1, elem0, elem1, elem2...?

• Go on, now you can do it.