list := *top*.

cons := list &
  [ FIRST *top*,
	REST *top* ].

null := list.

diff-list := *top* &
  [ LIST list,
	LAST list ].

start := *top*.

string := *top*.

;a := *top*.
;b := *top*.
;c := a & b.
;d := a & c.
;e := a & d.
;f := a & b.
;g := b & f & [ FEAT1 *top*, FEAT2 d, FEAT3 *top* ].
;h := b & g & [ FEAT5 *top*, FEAT6 g, FEAT7 *top* ].

; p. 60, Example 6
;a := *top*.
;b := *top*.
;t := *top* & [ F *top*, G *top* ].
;u := *top* & [ J *top*, K *top* ].
;q := t & [ F #one, G #one ].
;r := t & [ F u & [ J a ], G u & [ J *top*, K b ] ].
;s := q & r.

; p 61, Example 7
;a := *top*.
;b := *top*.
;t := *top* & [ F *top*, G *top* ].
;u := *top* & [ J *top*, K *top* ].
;q := t & [ F #one, G #one ].
;r := t & [ F u & [ J a ], G u & [ J b, K b ] ].
;s := q & r.

;p. 61, Example 8
a := *top*.
b := *top*.
t := *top* & [ F *top*, G *top* ].
u := *top* & [ H *top* ].
v := *top* & [ J *top*, K *top* ].
q := t & [ F u & [ H #one ], G #one ].
r := t & [ F #one, G #one ].
s := t & [ F v & [ J a ], G v & [ J *top*, K b ] ].
w := r & s.
x := u & [ H <! !> ].

z1 := a & [ Z1FEAT *top* ].
z2 := a & [ Z2FEAT *top* ].
z3 := z1 & z2.
z4 := z1 & z2.
z5 := *top* & [ Z5FEAT z1 & #one, Z6FEAT u & [ H z2 & #one ] ].


;a := *top*.
;b := *top*.
;t := *top* & [ F *top*, G *top* ].
;u := *top* & [ H *top* ].
;q := t & [ F u & [ H a ] ].
;r := t & [ F #one, H #one ].