(ASSEMBLE.CLAUSE ( setof 3 si ) 14
    (allocate)
    (get.Ai.variable.Yn 3 2)
    (put.Ai.variable.Yn 3 1)
    (call 5 bagof 3 si)
    (put.Ai.value.Yn 2 2)
    (put.Ai.unsafe.Yn 1 1)
    (depart sort 2 si)
)

(ASSEMBLE.CLAUSE ( bagof 3 si ) 83
    (allocate)
    (get.Ai.variable.Yn 1 7)
    (get.Ai.variable.Yn 2 8)
    (get.Ai.variable.Yn 3 1)
    (put.Ai.variable.Yn 4 9)
    (put.Ai.nil 3)
    (put.Ai.value.Yn 2 7)
    (put.Ai.value.Yn 1 8)
    (call 12 free←variables 4 si)
    (put.Ai.nil 2)
    (put.Ai.value.Yn 1 9)
    (compare)
    (load.pos.word 0)
    (not.equal.to)
    (body.cut)
    (put.Ai.list 2)
    (unify.symbol %.)
    (unify.local.Yn 9)
    (put.Ai.variable.Yn 1 4)
    (call 11 %=%.%. 2 si)
    (put.Ai.variable.Yn 3 6)
    (put.Ai.symbol 2 %.)
    (put.Ai.value.Yn 1 4)
    (functor)
    (put.Ai.value.Yn 2 8)
    (put.Ai.structure 1 %- 2)
    (unify.local.Yn 4)
    (unify.local.Yn 7)
    (call 9 save←instances 2 si)
    (put.Ai.variable.Yn 4 5)
    (put.Ai.nil 3)
    (put.Ai.unsafe.Yn 2 6)
    (put.Ai.value.Yn 1 4)
    (call 8 list←instances 4 si)
    (put.Ai.variable.Yn 2 3)
    (put.Ai.unsafe.Yn 1 5)
    (call 7 keysort 2 si)
    (body.cut)
    (put.Ai.variable.Yn 3 2)
    (put.Ai.unsafe.Yn 2 4)
    (put.Ai.unsafe.Yn 1 3)
    (call 5 concordant←subset 3 si)
    (put.Ai.unsafe.Yn 1 2)
    (get.Ai.value.Yn 1 1)
    (progress)
)

(ASSEMBLE.CLAUSE ( bagof 3 si ) 26
    (put.Ai.value.Xn 4 1)
    (allocate)
    (get.Ai.variable.Yn 3 1)
    (put.Ai.structure 1 %- 1)
    (unify.local.Xn 4)
    (call 4 save←instances 2 si)
    (put.Ai.value.Yn 2 1)
    (put.Ai.nil 1)
    (call 4 list←instances 2 si)
    (put.Ai.nil 2)
    (put.Ai.value.Yn 1 1)
    (compare)
    (load.pos.word 0)
    (not.equal.to)
    (progress)
)

(ASSEMBLE.CLAUSE ( save←instances 2 si ) 30
    (allocate)
    (get.Ai.variable.Yn 1 1)
    (get.Ai.variable.Yn 2 2)
    (put.Ai.symbol 2 si)
    (put.Ai.structure 1 Setof 1)
    (unify.symbol %-)
    (call 5 asserta←module 2 si)
    (put.Ai.value.Yn 1 2)
    (call 4 call 1 interp)
    (put.Ai.symbol 2 si)
    (put.Ai.structure 1 Setof 1)
    (unify.local.Yn 1)
    (call 3 asserta←module 2 si)
    (fail)
)

(ASSEMBLE.CLAUSE ( save←instances 2 si ) 1
    (proceed)
)

(ASSEMBLE.CLAUSE ( list←instances 2 si ) 23
    (allocate)
    (get.Ai.variable.Yn 1 2)
    (get.Ai.variable.Yn 2 3)
    (put.Ai.symbol 2 si)
    (put.Ai.structure 1 Setof 1)
    (unify.variable.Yn 1)
    (call 6 retract←module 2 si)
    (body.cut)
    (put.Ai.value.Yn 3 3)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (depart list←instances 3 si)
)

(ASSEMBLE.CLAUSE ( list←instances 3 si ) 9
    (get.Ai.constant 1 %-)
    (put.Ai.value.Xn 1 2)
    (head.cut)
    (get.Ai.value.Xn 1 3)
    (proceed)
)

(ASSEMBLE.CLAUSE ( list←instances 3 si ) 13
    (get.Ai.structure 1 %- 1)
    (unify.variable.Xn 5)
    (put.Ai.value.Xn 4 2)
    (put.Ai.value.Xn 2 3)
    (put.Ai.list 1)
    (unify.value.Xn 5)
    (unify.local.Xn 4)
    (execute list←instances 2 si)
)

(ASSEMBLE.CLAUSE ( list←instances 4 si ) 31
    (allocate)
    (get.Ai.variable.Yn 1 2)
    (get.Ai.variable.Yn 2 3)
    (get.Ai.variable.Yn 3 4)
    (get.Ai.variable.Yn 4 5)
    (put.Ai.symbol 2 si)
    (put.Ai.structure 1 Setof 1)
    (unify.variable.Yn 1)
    (call 8 retract←module 2 si)
    (body.cut)
    (put.Ai.value.Yn 5 5)
    (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 list←instances 5 si)
)

(ASSEMBLE.CLAUSE ( list←instances 5 si ) 6
    (get.Ai.constant 1 %-)
    (get.Ai.value.Xn 5 4)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( list←instances 5 si ) 40
    (get.Ai.structure 1 %- 2)
    (allocate)
    (unify.variable.Yn 5)
    (unify.variable.Yn 4)
    (get.Ai.variable.Yn 2 1)
    (get.Ai.variable.Yn 3 2)
    (get.Ai.variable.Yn 4 3)
    (get.Ai.variable.Yn 5 6)
    (put.Ai.value.Yn 3 5)
    (put.Ai.value.Yn 2 1)
    (put.Ai.value.Yn 1 2)
    (call 9 replace←key←variables 3 si)
    (body.cut)
    (put.Ai.value.Yn 4 6)
    (put.Ai.structure 1 %- 2)
    (unify.value.Yn 5)
    (unify.value.Yn 4)
    (put.Ai.list 3)
    (unify.value.Xn 1)
    (unify.local.Yn 3)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (depart list←instances 4 si)
)

(ASSEMBLE.CLAUSE ( replace←key←variables 3 si ) 4
    (get.Ai.constant 1 0)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( replace←key←variables 3 si ) 28
    (allocate)
    (get.Ai.variable.Yn 1 3)
    (get.Ai.variable.Yn 2 1)
    (get.Ai.variable.Yn 3 2)
    (put.Ai.variable.Yn 3 4)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 3)
    (arg)
    (put.Ai.unsafe.Yn 1 4)
    (is.a 254)
    (body.cut)
    (load.value.Yn 3)
    (add.neg.word -1)
    (store.variable.Xn 1)
    (put.Ai.value.Yn 3 2)
    (put.Ai.value.Yn 2 1)
    (depart replace←key←variables 3 si)
)

(ASSEMBLE.CLAUSE ( replace←key←variables 3 si ) 31
    (allocate)
    (get.Ai.variable.Yn 1 3)
    (get.Ai.variable.Yn 2 1)
    (get.Ai.variable.Yn 3 2)
    (put.Ai.variable.Yn 3 4)
    (put.Ai.value.Yn 2 1)
    (put.Ai.value.Yn 1 3)
    (arg)
    (put.Ai.unsafe.Yn 3 4)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 3)
    (arg)
    (load.value.Yn 3)
    (add.neg.word -1)
    (store.variable.Xn 1)
    (put.Ai.value.Yn 3 2)
    (put.Ai.value.Yn 2 1)
    (depart replace←key←variables 3 si)
)

(ASSEMBLE.CLAUSE ( concordant←subset 3 si ) 35
    (get.Ai.list 1)
    (unify.variable.Xn 4)
    (unify.variable.Xn 1)
    (get.Ai.structure 4 %- 2)
    (allocate)
    (unify.variable.Yn 2)
    (unify.variable.Yn 4)
    (get.Ai.variable.Yn 2 5)
    (get.Ai.variable.Yn 3 6)
    (put.Ai.variable.Yn 4 1)
    (put.Ai.variable.Yn 3 3)
    (put.Ai.value.Yn 2 2)
    (call 9 concordant←subset 4 si)
    (put.Ai.value.Yn 5 6)
    (put.Ai.value.Yn 4 5)
    (put.Ai.list 3)
    (unify.value.Yn 4)
    (unify.local.Yn 3)
    (put.Ai.value.Yn 2 2)
    (put.Ai.unsafe.Yn 1 1)
    (depart concordant←subset 5 si)
)

(ASSEMBLE.CLAUSE ( concordant←subset 4 si ) 33
    (get.Ai.list 1)
    (unify.variable.Xn 1)
    (allocate)
    (unify.variable.Yn 1)
    (get.Ai.structure 1 %- 2)
    (unify.variable.Xn 1)
    (unify.variable.Xn 5)
    (get.Ai.variable.Yn 2 2)
    (get.Ai.list 3)
    (unify.value.Xn 5)
    (unify.variable.Yn 3)
    (get.Ai.variable.Yn 4 4)
    (put.Ai.value.Yn 2 2)
    (compare)
    (load.pos.word 0)
    (equal.to)
    (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 concordant←subset 4 si)
)

(ASSEMBLE.CLAUSE ( concordant←subset 4 si ) 4
    (get.Ai.nil 3)
    (get.Ai.value.Xn 4 1)
    (proceed)
)

(ASSEMBLE.CLAUSE ( concordant←subset 5 si ) 8
    (get.Ai.constant 1 NIL)
    (get.Ai.value.Xn 4 2)
    (get.Ai.value.Xn 5 3)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( concordant←subset 5 si ) 5
    (get.Ai.value.Xn 4 2)
    (get.Ai.value.Xn 5 3)
    (proceed)
)

(ASSEMBLE.CLAUSE ( concordant←subset 5 si ) 6
    (put.Ai.value.Xn 2 4)
    (put.Ai.value.Xn 3 5)
    (execute concordant←subset 3 si)
)

(ASSEMBLE.CLAUSE ( free←variables 4 si ) 28
    (allocate)
    (get.Ai.variable.Yn 1 2)
    (get.Ai.variable.Yn 2 3)
    (get.Ai.variable.Yn 3 1)
    (get.Ai.list 4)
    (unify.local.Yn 2)
    (unify.local.Yn 1)
    (put.Ai.value.Yn 1 2)
    (is.a 1)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 3)
    (call 5 term←is←free←of 2 si)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (call 3 list←is←free←of 2 si)
    (depart.cut)
)

(ASSEMBLE.CLAUSE ( free←variables 4 si ) 5
    (get.Ai.value.Xn 4 3)
    (allocate)
    (is.a 1)
    (depart.cut)
)

(ASSEMBLE.CLAUSE ( free←variables 4 si ) 23
    (allocate)
    (get.Ai.variable.Yn 3 3)
    (get.Ai.variable.Yn 4 4)
    (put.Ai.variable.Yn 4 2)
    (put.Ai.variable.Yn 3 1)
    (call 7 explicit←binding 4 si)
    (body.cut)
    (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 free←variables 4 si)
)

(ASSEMBLE.CLAUSE ( free←variables 4 si ) 27
    (allocate)
    (get.Ai.variable.Yn 1 2)
    (get.Ai.variable.Yn 2 3)
    (get.Ai.variable.Yn 3 4)
    (get.Ai.variable.Yn 4 5)
    (put.Ai.variable.Yn 3 1)
    (put.Ai.void 2)
    (put.Ai.value.Yn 1 2)
    (functor)
    (put.Ai.value.Yn 5 5)
    (put.Ai.value.Yn 4 4)
    (put.Ai.value.Yn 3 3)
    (put.Ai.value.Yn 2 2)
    (put.Ai.unsafe.Yn 1 1)
    (depart free←variables 5 si)
)

(ASSEMBLE.CLAUSE ( free←variables 5 si ) 6
    (get.Ai.constant 1 0)
    (get.Ai.value.Xn 5 4)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( free←variables 5 si ) 44
    (allocate)
    (get.Ai.variable.Yn 1 5)
    (get.Ai.variable.Yn 2 1)
    (get.Ai.variable.Yn 3 2)
    (get.Ai.variable.Yn 4 7)
    (get.Ai.variable.Yn 5 4)
    (put.Ai.variable.Yn 3 6)
    (put.Ai.value.Yn 2 1)
    (put.Ai.value.Yn 1 5)
    (arg)
    (put.Ai.variable.Yn 4 3)
    (put.Ai.value.Yn 3 7)
    (put.Ai.value.Yn 2 2)
    (put.Ai.unsafe.Yn 1 6)
    (call 8 free←variables 4 si)
    (load.value.Yn 5)
    (add.neg.word -1)
    (store.variable.Xn 1)
    (body.cut)
    (put.Ai.value.Yn 5 4)
    (put.Ai.unsafe.Yn 4 3)
    (put.Ai.value.Yn 3 2)
    (put.Ai.value.Yn 2 1)
    (depart free←variables 5 si)
)

(ASSEMBLE.CLAUSE ( explicit←binding 4 si ) 9
    (get.Ai.structure 1 %\%+ 1)
    (unify.void 1)
    (get.Ai.symbol 3 fail)
    (get.Ai.value.Xn 4 2)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( explicit←binding 4 si ) 9
    (get.Ai.structure 1 not 1)
    (unify.void 1)
    (get.Ai.symbol 3 fail)
    (get.Ai.value.Xn 4 2)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( explicit←binding 4 si ) 13
    (get.Ai.structure 1 %↑ 2)
    (unify.variable.Xn 1)
    (unify.variable.Xn 5)
    (get.Ai.value.Xn 3 5)
    (get.Ai.structure 4 %+ 2)
    (unify.local.Xn 2)
    (unify.value.Xn 1)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( explicit←binding 4 si ) 17
    (get.Ai.structure 1 setof 3)
    (unify.variable.Xn 1)
    (unify.variable.Xn 6)
    (unify.variable.Xn 5)
    (get.Ai.structure 3 %- 2)
    (unify.value.Xn 6)
    (unify.value.Xn 5)
    (get.Ai.structure 4 %+ 2)
    (unify.local.Xn 2)
    (unify.value.Xn 1)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( explicit←binding 4 si ) 17
    (get.Ai.structure 1 bagof 3)
    (unify.variable.Xn 1)
    (unify.variable.Xn 6)
    (unify.variable.Xn 5)
    (get.Ai.structure 3 %- 2)
    (unify.value.Xn 6)
    (unify.value.Xn 5)
    (get.Ai.structure 4 %+ 2)
    (unify.local.Xn 2)
    (unify.value.Xn 1)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( explicit←binding 4 si ) 17
    (get.Ai.structure 1 set←of 3)
    (unify.variable.Xn 1)
    (unify.variable.Xn 6)
    (unify.variable.Xn 5)
    (get.Ai.structure 3 %- 2)
    (unify.value.Xn 6)
    (unify.value.Xn 5)
    (get.Ai.structure 4 %+ 2)
    (unify.local.Xn 2)
    (unify.value.Xn 1)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( explicit←binding 4 si ) 17
    (get.Ai.structure 1 bag←of 3)
    (unify.variable.Xn 1)
    (unify.variable.Xn 6)
    (unify.variable.Xn 5)
    (get.Ai.structure 3 %- 2)
    (unify.value.Xn 6)
    (unify.value.Xn 5)
    (get.Ai.structure 4 %+ 2)
    (unify.local.Xn 2)
    (unify.value.Xn 1)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( term←is←free←of 2 si ) 18
    (allocate)
    (get.Ai.variable.Yn 1 1)
    (get.Ai.variable.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (is.a 1)
    (body.cut)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (compare)
    (load.pos.word 0)
    (not.equal.to)
    (progress)
)

(ASSEMBLE.CLAUSE ( term←is←free←of 2 si ) 19
    (allocate)
    (get.Ai.variable.Yn 1 2)
    (get.Ai.variable.Yn 2 3)
    (put.Ai.variable.Yn 3 1)
    (put.Ai.void 2)
    (put.Ai.value.Yn 1 2)
    (functor)
    (put.Ai.value.Yn 3 3)
    (put.Ai.value.Yn 2 2)
    (put.Ai.unsafe.Yn 1 1)
    (depart term←is←free←of 3 si)
)

(ASSEMBLE.CLAUSE ( term←is←free←of 3 si ) 4
    (get.Ai.constant 1 0)
    (cut.proceed)
)

(ASSEMBLE.CLAUSE ( term←is←free←of 3 si ) 32
    (allocate)
    (get.Ai.variable.Yn 1 3)
    (get.Ai.variable.Yn 2 1)
    (get.Ai.variable.Yn 3 2)
    (put.Ai.variable.Yn 3 4)
    (put.Ai.value.Yn 2 1)
    (put.Ai.value.Yn 1 3)
    (arg)
    (put.Ai.value.Yn 2 2)
    (put.Ai.unsafe.Yn 1 4)
    (call 6 term←is←free←of 2 si)
    (load.value.Yn 3)
    (add.neg.word -1)
    (store.variable.Xn 1)
    (body.cut)
    (put.Ai.value.Yn 3 2)
    (put.Ai.value.Yn 2 1)
    (depart term←is←free←of 3 si)
)

(ASSEMBLE.CLAUSE ( list←is←free←of 2 si ) 19
    (get.Ai.list 1)
    (unify.variable.Xn 1)
    (allocate)
    (unify.variable.Yn 1)
    (get.Ai.variable.Yn 2 2)
    (put.Ai.value.Yn 2 2)
    (compare)
    (load.pos.word 0)
    (not.equal.to)
    (body.cut)
    (put.Ai.value.Yn 2 2)
    (put.Ai.value.Yn 1 1)
    (depart list←is←free←of 2 si)
)

(ASSEMBLE.CLAUSE ( list←is←free←of 2 si ) 4
    (get.Ai.constant 1 NIL)
    (proceed)
)

(ASSEMBLE.CLAUSE ( abolish←setof←facts 0 si ) 9
    (put.Ai.symbol 3 si)
    (put.Ai.constant 2 1)
    (put.Ai.symbol 1 Setof)
    (execute abolish 3 si)
)

STOP