(ASSEMBLE.CLAUSE ( expand←term 2 si ) 13
    (allocate)
    (get.Ai.variable.Yn 2 1)
    (put.Ai.variable.Yn 2 2)
    (call 5 term←expand 2 si)
    (put.Ai.unsafe.Yn 1 2)
    (get.Ai.value.Yn 1 1)
    (progress)
)

(ASSEMBLE.CLAUSE ( term←expand 2 si ) 5
    (get.Ai.value.Xn 2 1)
    (allocate)
    (is.a 1)
    (depart.cut)
)

(ASSEMBLE.CLAUSE ( term←expand 2 si ) 5
    (allocate)
    (call 3 term←expansion 2 user)
    (depart.cut)
)

(ASSEMBLE.CLAUSE ( term←expand 2 si ) 40
    (get.Ai.structure 1 %-%-%> 2)
    (unify.variable.Xn 1)
    (allocate)
    (unify.variable.Yn 4)
    (get.Ai.structure 2 %:%- 2)
    (unify.variable.Xn 4)
    (unify.variable.Yn 3)
    (head.cut)
    (put.Ai.variable.Yn 5 2)
    (put.Ai.variable.Yn 3 6)
    (put.Ai.variable.Yn 2 5)
    (call 9 expand←rule←head 5 si)
    (put.Ai.variable.Yn 4 1)
    (put.Ai.unsafe.Yn 3 6)
    (put.Ai.unsafe.Yn 2 5)
    (put.Ai.value.Yn 1 4)
    (call 6 expand←rule←body 4 si)
    (put.Ai.value.Yn 3 3)
    (put.Ai.unsafe.Yn 2 2)
    (put.Ai.unsafe.Yn 1 1)
    (depart and←goals 3 si)
)

(ASSEMBLE.CLAUSE ( term←expand 2 si ) 3
    (get.Ai.value.Xn 2 1)
    (proceed)
)

(ASSEMBLE.CLAUSE ( expand←rule←head 5 si ) 37
    (allocate)
    (get.Ai.variable.Yn 2 6)
    (get.Ai.variable.Yn 3 3)
    (get.Ai.variable.Yn 4 7)
    (get.Ai.variable.Yn 5 4)
    (put.Ai.variable.Yn 3 1)
    (put.Ai.variable.Yn 2 5)
    (call 10 rule←head 3 si)
    (put.Ai.value.Yn 4 7)
    (put.Ai.variable.Yn 3 2)
    (put.Ai.value.Yn 2 6)
    (put.Ai.unsafe.Yn 1 5)
    (call 7 add←string←args 4 si)
    (put.Ai.value.Yn 4 4)
    (put.Ai.value.Yn 3 3)
    (put.Ai.unsafe.Yn 2 2)
    (put.Ai.unsafe.Yn 1 1)
    (depart expand←rule←body 4 si)
)

(ASSEMBLE.CLAUSE ( rule←head 3 si ) 5
    (allocate)
    (call 3 valid←rule←head 3 si)
    (depart.cut)
)

(ASSEMBLE.CLAUSE ( rule←head 3 si ) 7
    (put.Ai.value.Xn 2 1)
    (put.Ai.constant 1 300)
    (execute nerror 2 si)
)

(ASSEMBLE.CLAUSE ( valid←rule←head 3 si ) 18
    (get.Ai.structure 1 %, 2)
    (unify.variable.Xn 1)
    (allocate)
    (unify.variable.Yn 1)
    (get.Ai.value.Xn 2 1)
    (get.Ai.value.Yn 3 1)
    (head.cut)
    (call 4 callable 1 si)
    (put.Ai.value.Yn 1 1)
    (depart is←list 1 si)
)

(ASSEMBLE.CLAUSE ( valid←rule←head 3 si ) 5
    (get.Ai.value.Xn 2 1)
    (get.Ai.nil 3)
    (execute callable 1 si)
)

(ASSEMBLE.CLAUSE ( expand←rule←body 4 si ) 9
    (get.Ai.structure 4 phrase 3)
    (unify.local.Xn 1)
    (unify.local.Xn 2)
    (unify.local.Xn 3)
    (allocate)
    (is.a 1)
    (depart.cut)
)

(ASSEMBLE.CLAUSE ( expand←rule←body 4 si ) 5
    (allocate)
    (call 3 expand←body 4 si)
    (depart.cut)
)

(ASSEMBLE.CLAUSE ( expand←rule←body 4 si ) 7
    (put.Ai.value.Xn 2 1)
    (put.Ai.constant 1 301)
    (execute nerror 2 si)
)

(ASSEMBLE.CLAUSE ( expand←body 4 si ) 9
    (get.Ai.structure 4 phrase 3)
    (unify.local.Xn 1)
    (unify.local.Xn 2)
    (unify.local.Xn 3)
    (allocate)
    (is.a 1)
    (depart.cut)
)

(ASSEMBLE.CLAUSE ( expand←body 4 si ) 37
    (get.Ai.structure 1 %, 2)
    (unify.variable.Xn 1)
    (allocate)
    (unify.variable.Yn 4)
    (get.Ai.variable.Yn 3 6)
    (get.Ai.variable.Yn 4 3)
    (head.cut)
    (put.Ai.variable.Yn 4 1)
    (put.Ai.variable.Yn 3 5)
    (call 9 expand←body 4 si)
    (put.Ai.variable.Yn 4 2)
    (put.Ai.value.Yn 3 6)
    (put.Ai.unsafe.Yn 2 5)
    (put.Ai.value.Yn 1 4)
    (call 6 expand←body 4 si)
    (put.Ai.value.Yn 3 3)
    (put.Ai.unsafe.Yn 2 2)
    (put.Ai.unsafe.Yn 1 1)
    (depart and←goals 3 si)
)

(ASSEMBLE.CLAUSE ( expand←body 4 si ) 29
    (get.Ai.structure 1 %-%> 2)
    (unify.variable.Xn 1)
    (allocate)
    (unify.variable.Yn 1)
    (get.Ai.variable.Yn 3 3)
    (get.Ai.structure 4 %-%> 2)
    (unify.variable.Xn 4)
    (unify.variable.Yn 4)
    (head.cut)
    (put.Ai.variable.Yn 3 2)
    (call 7 expand←body 4 si)
    (put.Ai.value.Yn 4 4)
    (put.Ai.value.Yn 3 3)
    (put.Ai.unsafe.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (depart expand←body 4 si)
)

(ASSEMBLE.CLAUSE ( expand←body 4 si ) 33
    (get.Ai.structure 1 %; 2)
    (unify.variable.Xn 1)
    (allocate)
    (unify.variable.Yn 1)
    (get.Ai.variable.Yn 2 2)
    (get.Ai.variable.Yn 3 3)
    (get.Ai.structure 4 %; 2)
    (unify.variable.Xn 4)
    (unify.variable.Yn 4)
    (head.cut)
    (put.Ai.value.Yn 3 3)
    (put.Ai.value.Yn 2 2)
    (call 7 expand←or 4 si)
    (put.Ai.value.Yn 4 4)
    (put.Ai.value.Yn 3 3)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (depart expand←or 4 si)
)

(ASSEMBLE.CLAUSE ( expand←body 4 si ) 9
    (get.Ai.structure 1 %{%} 1)
    (unify.variable.Xn 1)
    (get.Ai.value.Xn 3 2)
    (get.Ai.value.Xn 4 1)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( expand←body 4 si ) 8
    (get.Ai.constant 1 %!)
    (get.Ai.value.Xn 3 2)
    (get.Ai.symbol 4 %!)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( expand←body 4 si ) 25
    (allocate)
    (get.Ai.variable.Yn 1 1)
    (get.Ai.variable.Yn 2 2)
    (get.Ai.variable.Yn 3 3)
    (get.Ai.variable.Yn 4 4)
    (put.Ai.value.Yn 1 1)
    (call 7 is←list 1 si)
    (body.cut)
    (put.Ai.value.Yn 4 4)
    (put.Ai.value.Yn 3 3)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (depart expand←terminals 4 si)
)

(ASSEMBLE.CLAUSE ( expand←body 4 si ) 2
    (execute add←string←args 4 si)
)

(ASSEMBLE.CLAUSE ( expand←or 4 si ) 45
    (allocate)
    (get.Ai.variable.Yn 2 2)
    (get.Ai.variable.Yn 3 5)
    (get.Ai.variable.Yn 4 4)
    (put.Ai.variable.Yn 4 3)
    (put.Ai.value.Yn 3 5)
    (put.Ai.variable.Yn 2 1)
    (call 8 expand←body 4 si)
    (put.Ai.value.Yn 2 1)
    (put.Ai.value.Yn 1 5)
    (compare)
    (load.pos.word 0)
    (not.equal.to.else 36)
    (put.Ai.value.Yn 1 1)
    (get.Ai.value.Yn 1 2)
    (put.Ai.value.Yn 1 3)
    (get.Ai.value.Yn 1 4)
    (progress)
    (put.Ai.value.Yn 3 4)
    (put.Ai.unsafe.Yn 2 3)
    (put.Ai.structure 1 %= 2)
    (unify.local.Yn 2)
    (unify.local.Yn 1)
    (depart and←goals 3 si)
)

(ASSEMBLE.CLAUSE ( expand←terminals 4 si ) 8
    (get.Ai.constant 1 NIL)
    (get.Ai.value.Xn 3 2)
    (get.Ai.symbol 4 true)
    (proceed)
)

(ASSEMBLE.CLAUSE ( expand←terminals 4 si ) 27
    (get.Ai.list 1)
    (allocate)
    (unify.variable.Yn 2)
    (unify.variable.Xn 1)
    (get.Ai.variable.Yn 2 3)
    (get.Ai.variable.Yn 4 5)
    (put.Ai.variable.Yn 4 4)
    (put.Ai.variable.Yn 2 1)
    (call 8 expand←terminals 4 si)
    (put.Ai.value.Yn 3 5)
    (put.Ai.unsafe.Yn 2 4)
    (put.Ai.structure 1 C 3)
    (unify.local.Yn 3)
    (unify.value.Yn 2)
    (unify.local.Yn 1)
    (depart and←goals 3 si)
)

(ASSEMBLE.CLAUSE ( and←goals 3 si ) 6
    (get.Ai.constant 1 true)
    (get.Ai.value.Xn 3 2)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( and←goals 3 si ) 5
    (get.Ai.symbol 2 true)
    (get.Ai.value.Xn 3 1)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( and←goals 3 si ) 6
    (get.Ai.structure 3 %, 2)
    (unify.local.Xn 1)
    (unify.local.Xn 2)
    (proceed)
)

(ASSEMBLE.CLAUSE ( add←string←args 4 si ) 33
    (allocate)
    (get.Ai.variable.Yn 2 5)
    (get.Ai.variable.Yn 3 6)
    (get.Ai.variable.Yn 4 1)
    (put.Ai.list 2)
    (unify.variable.Yn 3)
    (unify.variable.Yn 4)
    (call 9 %=%.%. 2 si)
    (put.Ai.variable.Yn 3 2)
    (put.Ai.list 1)
    (unify.local.Yn 6)
    (unify.nil)
    (put.Ai.list 2)
    (unify.local.Yn 5)
    (unify.value.Xn 1)
    (put.Ai.value.Yn 1 4)
    (call 6 conc 3 si)
    (put.Ai.list 2)
    (unify.value.Yn 3)
    (unify.local.Yn 2)
    (put.Ai.value.Yn 1 1)
    (depart %=%.%. 2 si)
)

(ASSEMBLE.CLAUSE ( phrase 2 si ) 3
    (put.Ai.nil 3)
    (execute phrase 3 si)
)

(ASSEMBLE.CLAUSE ( phrase 3 si ) 14
    (allocate)
    (get.Ai.variable.Yn 1 1)
    (put.Ai.value.Yn 1 1)
    (is.a 1)
    (body.cut)
    (put.Ai.value.Yn 2 1)
    (put.Ai.constant 1 301)
    (depart nerror 2 si)
)

(ASSEMBLE.CLAUSE ( phrase 3 si ) 9
    (get.Ai.constant 1 NIL)
    (put.Ai.value.Xn 1 3)
    (head.cut)
    (get.Ai.value.Xn 1 2)
    (proceed)
)

(ASSEMBLE.CLAUSE ( phrase 3 si ) 9
    (get.Ai.list 1)
    (unify.variable.Xn 5)
    (unify.variable.Xn 4)
    (head.cut)
    (put.Ai.list 1)
    (unify.value.Xn 5)
    (unify.value.Xn 4)
    (execute conc 3 si)
)

(ASSEMBLE.CLAUSE ( phrase 3 si ) 28
    (allocate)
    (get.Ai.variable.Yn 1 2)
    (get.Ai.variable.Yn 2 3)
    (get.Ai.variable.Yn 3 4)
    (put.Ai.value.Yn 1 2)
    (call 7 callable 1 si)
    (body.cut)
    (put.Ai.variable.Yn 4 1)
    (put.Ai.value.Yn 3 4)
    (put.Ai.value.Yn 2 3)
    (put.Ai.value.Yn 1 2)
    (call 4 expand←rule←body 4 si)
    (put.Ai.unsafe.Yn 1 1)
    (depart call 1 interp)
)

(ASSEMBLE.CLAUSE ( phrase 3 si ) 7
    (put.Ai.value.Xn 2 1)
    (put.Ai.constant 1 301)
    (execute nerror 2 si)
)

STOP