aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/strap
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-08-16 06:00:35 +0000
committerdos-reis <gdr@axiomatics.org>2008-08-16 06:00:35 +0000
commit84db9d8c5349cb8b3e7e2d102867e53e610d7ef2 (patch)
tree0a2689194fd9e75ce8925550a4e177f3e5520684 /src/algebra/strap
parent3372c377eded97a0094f63cddd2e039af7066431 (diff)
downloadopen-axiom-84db9d8c5349cb8b3e7e2d102867e53e610d7ef2.tar.gz
* algebra/strap: New. Sequester cached Lisp translation of
algebra bootstrap domains here.
Diffstat (limited to 'src/algebra/strap')
-rw-r--r--src/algebra/strap/ABELGRP-.lsp53
-rw-r--r--src/algebra/strap/ABELGRP.lsp24
-rw-r--r--src/algebra/strap/ABELMON-.lsp49
-rw-r--r--src/algebra/strap/ABELMON.lsp28
-rw-r--r--src/algebra/strap/ABELSG-.lsp35
-rw-r--r--src/algebra/strap/ABELSG.lsp24
-rw-r--r--src/algebra/strap/ALAGG.lsp55
-rw-r--r--src/algebra/strap/BOOLEAN.lsp156
-rw-r--r--src/algebra/strap/CABMON.lsp26
-rw-r--r--src/algebra/strap/CHAR.lsp168
-rw-r--r--src/algebra/strap/CLAGG-.lsp221
-rw-r--r--src/algebra/strap/CLAGG.lsp104
-rw-r--r--src/algebra/strap/COMRING.lsp22
-rw-r--r--src/algebra/strap/DFLOAT.lsp872
-rw-r--r--src/algebra/strap/DIFRING-.lsp46
-rw-r--r--src/algebra/strap/DIFRING.lsp28
-rw-r--r--src/algebra/strap/DIVRING-.lsp56
-rw-r--r--src/algebra/strap/DIVRING.lsp28
-rw-r--r--src/algebra/strap/ENTIRER.lsp22
-rw-r--r--src/algebra/strap/ES-.lsp796
-rw-r--r--src/algebra/strap/ES.lsp155
-rw-r--r--src/algebra/strap/EUCDOM-.lsp518
-rw-r--r--src/algebra/strap/EUCDOM.lsp53
-rw-r--r--src/algebra/strap/FFIELDC-.lsp615
-rw-r--r--src/algebra/strap/FFIELDC.lsp60
-rw-r--r--src/algebra/strap/FPS-.lsp50
-rw-r--r--src/algebra/strap/FPS.lsp81
-rw-r--r--src/algebra/strap/GCDDOM-.lsp208
-rw-r--r--src/algebra/strap/GCDDOM.lsp32
-rw-r--r--src/algebra/strap/HOAGG-.lsp288
-rw-r--r--src/algebra/strap/HOAGG.lsp112
-rw-r--r--src/algebra/strap/ILIST.lsp621
-rw-r--r--src/algebra/strap/INS-.lsp298
-rw-r--r--src/algebra/strap/INS.lsp75
-rw-r--r--src/algebra/strap/INT.lsp528
-rw-r--r--src/algebra/strap/INTDOM-.lsp79
-rw-r--r--src/algebra/strap/INTDOM.lsp34
-rw-r--r--src/algebra/strap/ISTRING.lsp891
-rw-r--r--src/algebra/strap/LIST.lsp302
-rw-r--r--src/algebra/strap/LNAGG-.lsp80
-rw-r--r--src/algebra/strap/LNAGG.lsp81
-rw-r--r--src/algebra/strap/LSAGG-.lsp794
-rw-r--r--src/algebra/strap/LSAGG.lsp38
-rw-r--r--src/algebra/strap/MONOID-.lsp50
-rw-r--r--src/algebra/strap/MONOID.lsp28
-rw-r--r--src/algebra/strap/MTSCAT.lsp107
-rw-r--r--src/algebra/strap/NNI.lsp148
-rw-r--r--src/algebra/strap/OINTDOM.lsp19
-rw-r--r--src/algebra/strap/ORDRING-.lsp52
-rw-r--r--src/algebra/strap/ORDRING.lsp26
-rw-r--r--src/algebra/strap/OUTFORM.lsp626
-rw-r--r--src/algebra/strap/PI.lsp75
-rw-r--r--src/algebra/strap/POLYCAT-.lsp1757
-rw-r--r--src/algebra/strap/POLYCAT.lsp238
-rw-r--r--src/algebra/strap/PRIMARR.lsp193
-rw-r--r--src/algebra/strap/PSETCAT-.lsp885
-rw-r--r--src/algebra/strap/PSETCAT.lsp123
-rw-r--r--src/algebra/strap/QFCAT-.lsp440
-rw-r--r--src/algebra/strap/QFCAT.lsp105
-rw-r--r--src/algebra/strap/RCAGG-.lsp54
-rw-r--r--src/algebra/strap/RCAGG.lsp74
-rw-r--r--src/algebra/strap/REF.lsp92
-rw-r--r--src/algebra/strap/RING-.lsp29
-rw-r--r--src/algebra/strap/RING.lsp25
-rw-r--r--src/algebra/strap/RNG.lsp15
-rw-r--r--src/algebra/strap/RNS-.lsp144
-rw-r--r--src/algebra/strap/RNS.lsp42
-rw-r--r--src/algebra/strap/SETAGG-.lsp50
-rw-r--r--src/algebra/strap/SETAGG.lsp58
-rw-r--r--src/algebra/strap/SETCAT-.lsp35
-rw-r--r--src/algebra/strap/SETCAT.lsp27
-rw-r--r--src/algebra/strap/SINT.lsp463
-rw-r--r--src/algebra/strap/STAGG-.lsp297
-rw-r--r--src/algebra/strap/STAGG.lsp41
-rw-r--r--src/algebra/strap/SYMBOL.lsp816
-rw-r--r--src/algebra/strap/TSETCAT-.lsp1031
-rw-r--r--src/algebra/strap/TSETCAT.lsp200
-rw-r--r--src/algebra/strap/UFD-.lsp83
-rw-r--r--src/algebra/strap/UFD.lsp27
-rw-r--r--src/algebra/strap/ULSCAT.lsp113
-rw-r--r--src/algebra/strap/UPOLYC-.lsp1231
-rw-r--r--src/algebra/strap/UPOLYC.lsp158
-rw-r--r--src/algebra/strap/URAGG-.lsp612
-rw-r--r--src/algebra/strap/URAGG.lsp113
-rw-r--r--src/algebra/strap/VECTOR.lsp133
85 files changed, 19641 insertions, 0 deletions
diff --git a/src/algebra/strap/ABELGRP-.lsp b/src/algebra/strap/ABELGRP-.lsp
new file mode 100644
index 00000000..ca331722
--- /dev/null
+++ b/src/algebra/strap/ABELGRP-.lsp
@@ -0,0 +1,53 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |ABELGRP-;-;3S;1| (|x| |y| $)
+ (SPADCALL |x| (SPADCALL |y| (QREFELT $ 7)) (QREFELT $ 8)))
+
+(DEFUN |ABELGRP-;subtractIfCan;2SU;2| (|x| |y| $)
+ (CONS 0 (SPADCALL |x| |y| (QREFELT $ 10))))
+
+(DEFUN |ABELGRP-;*;Nni2S;3| (|n| |x| $)
+ (SPADCALL |n| |x| (QREFELT $ 14)))
+
+(DEFUN |ABELGRP-;*;I2S;4| (|n| |x| $)
+ (COND
+ ((ZEROP |n|) (|spadConstant| $ 17))
+ ((< 0 |n|) (SPADCALL |n| |x| (QREFELT $ 20)))
+ ('T (SPADCALL (- |n|) (SPADCALL |x| (QREFELT $ 7)) (QREFELT $ 20)))))
+
+(DEFUN |AbelianGroup&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|AbelianGroup&|))
+ (LETT |dv$| (LIST '|AbelianGroup&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 22) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (COND
+ ((|HasCategory| |#1| '(|Ring|)))
+ ('T
+ (QSETREFV $ 21
+ (CONS (|dispatchFunction| |ABELGRP-;*;I2S;4|) $))))
+ $))))
+
+(MAKEPROP '|AbelianGroup&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (0 . -) (5 . +)
+ |ABELGRP-;-;3S;1| (11 . -) (|Union| $ '"failed")
+ |ABELGRP-;subtractIfCan;2SU;2| (|Integer|) (17 . *)
+ (|NonNegativeInteger|) |ABELGRP-;*;Nni2S;3| (23 . |Zero|)
+ (|PositiveInteger|) (|RepeatedDoubling| 6) (27 . |double|)
+ (33 . *))
+ '#(|subtractIfCan| 39 - 45 * 51) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 21
+ '(1 6 0 0 7 2 6 0 0 0 8 2 6 0 0 0 10 2
+ 6 0 13 0 14 0 6 0 17 2 19 6 18 6 20 2
+ 0 0 13 0 21 2 0 11 0 0 12 2 0 0 0 0 9
+ 2 0 0 13 0 21 2 0 0 15 0 16)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/ABELGRP.lsp b/src/algebra/strap/ABELGRP.lsp
new file mode 100644
index 00000000..f667c2d5
--- /dev/null
+++ b/src/algebra/strap/ABELGRP.lsp
@@ -0,0 +1,24 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |AbelianGroup;AL| 'NIL)
+
+(DEFUN |AbelianGroup| ()
+ (LET (#:G1388)
+ (COND
+ (|AbelianGroup;AL|)
+ (T (SETQ |AbelianGroup;AL| (|AbelianGroup;|))))))
+
+(DEFUN |AbelianGroup;| ()
+ (PROG (#0=#:G1386)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|CancellationAbelianMonoid|)
+ (|mkCategory| '|domain|
+ '(((- ($ $)) T) ((- ($ $ $)) T)
+ ((* ($ (|Integer|) $)) T))
+ NIL '((|Integer|)) NIL))
+ |AbelianGroup|)
+ (SETELT #0# 0 '(|AbelianGroup|))))))
+
+(MAKEPROP '|AbelianGroup| 'NILADIC T)
diff --git a/src/algebra/strap/ABELMON-.lsp b/src/algebra/strap/ABELMON-.lsp
new file mode 100644
index 00000000..a38826e3
--- /dev/null
+++ b/src/algebra/strap/ABELMON-.lsp
@@ -0,0 +1,49 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |ABELMON-;zero?;SB;1| (|x| $)
+ (SPADCALL |x| (|spadConstant| $ 7) (QREFELT $ 9)))
+
+(DEFUN |ABELMON-;*;Pi2S;2| (|n| |x| $)
+ (SPADCALL |n| |x| (QREFELT $ 12)))
+
+(DEFUN |ABELMON-;sample;S;3| ($) (|spadConstant| $ 7))
+
+(DEFUN |ABELMON-;*;Nni2S;4| (|n| |x| $)
+ (COND
+ ((ZEROP |n|) (|spadConstant| $ 7))
+ ('T (SPADCALL |n| |x| (QREFELT $ 17)))))
+
+(DEFUN |AbelianMonoid&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|AbelianMonoid&|))
+ (LETT |dv$| (LIST '|AbelianMonoid&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 19) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (COND
+ ((|HasCategory| |#1| '(|Ring|)))
+ ('T
+ (QSETREFV $ 18
+ (CONS (|dispatchFunction| |ABELMON-;*;Nni2S;4|) $))))
+ $))))
+
+(MAKEPROP '|AbelianMonoid&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (0 . |Zero|)
+ (|Boolean|) (4 . =) |ABELMON-;zero?;SB;1|
+ (|NonNegativeInteger|) (10 . *) (|PositiveInteger|)
+ |ABELMON-;*;Pi2S;2| |ABELMON-;sample;S;3|
+ (|RepeatedDoubling| 6) (16 . |double|) (22 . *))
+ '#(|zero?| 28 |sample| 33 * 37) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 18
+ '(0 6 0 7 2 6 8 0 0 9 2 6 0 11 0 12 2
+ 16 6 13 6 17 2 0 0 11 0 18 1 0 8 0 10
+ 0 0 0 15 2 0 0 11 0 18 2 0 0 13 0 14)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/ABELMON.lsp b/src/algebra/strap/ABELMON.lsp
new file mode 100644
index 00000000..5de5fbba
--- /dev/null
+++ b/src/algebra/strap/ABELMON.lsp
@@ -0,0 +1,28 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |AbelianMonoid;AL| 'NIL)
+
+(DEFUN |AbelianMonoid| ()
+ (LET (#:G1388)
+ (COND
+ (|AbelianMonoid;AL|)
+ (T (SETQ |AbelianMonoid;AL| (|AbelianMonoid;|))))))
+
+(DEFUN |AbelianMonoid;| ()
+ (PROG (#0=#:G1386)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|AbelianSemiGroup|)
+ (|mkCategory| '|domain|
+ '(((|Zero| ($) |constant|) T)
+ ((|sample| ($) |constant|) T)
+ ((|zero?| ((|Boolean|) $)) T)
+ ((* ($ (|NonNegativeInteger|) $)) T))
+ NIL
+ '((|NonNegativeInteger|) (|Boolean|))
+ NIL))
+ |AbelianMonoid|)
+ (SETELT #0# 0 '(|AbelianMonoid|))))))
+
+(MAKEPROP '|AbelianMonoid| 'NILADIC T)
diff --git a/src/algebra/strap/ABELSG-.lsp b/src/algebra/strap/ABELSG-.lsp
new file mode 100644
index 00000000..6c9c3182
--- /dev/null
+++ b/src/algebra/strap/ABELSG-.lsp
@@ -0,0 +1,35 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |ABELSG-;*;Pi2S;1| (|n| |x| $)
+ (SPADCALL |n| |x| (QREFELT $ 9)))
+
+(DEFUN |AbelianSemiGroup&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|AbelianSemiGroup&|))
+ (LETT |dv$| (LIST '|AbelianSemiGroup&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 11) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (COND
+ ((|HasCategory| |#1| '(|Ring|)))
+ ('T
+ (QSETREFV $ 10
+ (CONS (|dispatchFunction| |ABELSG-;*;Pi2S;1|) $))))
+ $))))
+
+(MAKEPROP '|AbelianSemiGroup&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|PositiveInteger|)
+ (|RepeatedDoubling| 6) (0 . |double|) (6 . *))
+ '#(* 12) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 10
+ '(2 8 6 7 6 9 2 0 0 7 0 10 2 0 0 7 0
+ 10)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/ABELSG.lsp b/src/algebra/strap/ABELSG.lsp
new file mode 100644
index 00000000..6ad00a8f
--- /dev/null
+++ b/src/algebra/strap/ABELSG.lsp
@@ -0,0 +1,24 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |AbelianSemiGroup;AL| 'NIL)
+
+(DEFUN |AbelianSemiGroup| ()
+ (LET (#:G1387)
+ (COND
+ (|AbelianSemiGroup;AL|)
+ (T (SETQ |AbelianSemiGroup;AL| (|AbelianSemiGroup;|))))))
+
+(DEFUN |AbelianSemiGroup;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|SetCategory|)
+ (|mkCategory| '|domain|
+ '(((+ ($ $ $)) T)
+ ((* ($ (|PositiveInteger|) $)) T))
+ NIL '((|PositiveInteger|)) NIL))
+ |AbelianSemiGroup|)
+ (SETELT #0# 0 '(|AbelianSemiGroup|))))))
+
+(MAKEPROP '|AbelianSemiGroup| 'NILADIC T)
diff --git a/src/algebra/strap/ALAGG.lsp b/src/algebra/strap/ALAGG.lsp
new file mode 100644
index 00000000..e42de7db
--- /dev/null
+++ b/src/algebra/strap/ALAGG.lsp
@@ -0,0 +1,55 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |AssociationListAggregate;CAT| 'NIL)
+
+(DEFPARAMETER |AssociationListAggregate;AL| 'NIL)
+
+(DEFUN |AssociationListAggregate| (&REST #0=#:G1397 &AUX #1=#:G1395)
+ (DSETQ #1# #0#)
+ (LET (#2=#:G1396)
+ (COND
+ ((SETQ #2#
+ (|assoc| (|devaluateList| #1#)
+ |AssociationListAggregate;AL|))
+ (CDR #2#))
+ (T (SETQ |AssociationListAggregate;AL|
+ (|cons5| (CONS (|devaluateList| #1#)
+ (SETQ #2#
+ (APPLY
+ #'|AssociationListAggregate;| #1#)))
+ |AssociationListAggregate;AL|))
+ #2#))))
+
+(DEFUN |AssociationListAggregate;| (|t#1| |t#2|)
+ (PROG (#0=#:G1394)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1| |t#2|)
+ (LIST (|devaluate| |t#1|)
+ (|devaluate| |t#2|)))
+ (|sublisV|
+ (PAIR '(#1=#:G1393)
+ (LIST '(|Record| (|:| |key| |t#1|)
+ (|:| |entry| |t#2|))))
+ (COND
+ (|AssociationListAggregate;CAT|)
+ ('T
+ (LETT |AssociationListAggregate;CAT|
+ (|Join|
+ (|TableAggregate| '|t#1| '|t#2|)
+ (|ListAggregate| '#1#)
+ (|mkCategory| '|domain|
+ '(((|assoc|
+ ((|Union|
+ (|Record| (|:| |key| |t#1|)
+ (|:| |entry| |t#2|))
+ "failed")
+ |t#1| $))
+ T))
+ NIL 'NIL NIL))
+ . #2=(|AssociationListAggregate|)))))) . #2#)
+ (SETELT #0# 0
+ (LIST '|AssociationListAggregate| (|devaluate| |t#1|)
+ (|devaluate| |t#2|)))))))
diff --git a/src/algebra/strap/BOOLEAN.lsp b/src/algebra/strap/BOOLEAN.lsp
new file mode 100644
index 00000000..bca63812
--- /dev/null
+++ b/src/algebra/strap/BOOLEAN.lsp
@@ -0,0 +1,156 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|BOOLEAN;test;2$;1| '|SPADreplace| '(XLAM (|a|) |a|))
+
+(DEFUN |BOOLEAN;test;2$;1| (|a| $) |a|)
+
+(DEFUN |BOOLEAN;nt| (|b| $) (COND (|b| 'NIL) ('T 'T)))
+
+(PUT '|BOOLEAN;true;$;3| '|SPADreplace| '(XLAM NIL 'T))
+
+(DEFUN |BOOLEAN;true;$;3| ($) 'T)
+
+(PUT '|BOOLEAN;false;$;4| '|SPADreplace| '(XLAM NIL NIL))
+
+(DEFUN |BOOLEAN;false;$;4| ($) NIL)
+
+(DEFUN |BOOLEAN;not;2$;5| (|b| $) (COND (|b| 'NIL) ('T 'T)))
+
+(DEFUN |BOOLEAN;^;2$;6| (|b| $) (COND (|b| 'NIL) ('T 'T)))
+
+(DEFUN |BOOLEAN;~;2$;7| (|b| $) (COND (|b| 'NIL) ('T 'T)))
+
+(DEFUN |BOOLEAN;and;3$;8| (|a| |b| $) (COND (|a| |b|) ('T 'NIL)))
+
+(DEFUN |BOOLEAN;/\\;3$;9| (|a| |b| $) (COND (|a| |b|) ('T 'NIL)))
+
+(DEFUN |BOOLEAN;or;3$;10| (|a| |b| $) (COND (|a| 'T) ('T |b|)))
+
+(DEFUN |BOOLEAN;\\/;3$;11| (|a| |b| $) (COND (|a| 'T) ('T |b|)))
+
+(DEFUN |BOOLEAN;xor;3$;12| (|a| |b| $)
+ (COND (|a| (|BOOLEAN;nt| |b| $)) ('T |b|)))
+
+(DEFUN |BOOLEAN;nor;3$;13| (|a| |b| $)
+ (COND (|a| 'NIL) ('T (|BOOLEAN;nt| |b| $))))
+
+(DEFUN |BOOLEAN;nand;3$;14| (|a| |b| $)
+ (COND (|a| (|BOOLEAN;nt| |b| $)) ('T 'T)))
+
+(PUT '|BOOLEAN;=;2$B;15| '|SPADreplace| 'EQ)
+
+(DEFUN |BOOLEAN;=;2$B;15| (|a| |b| $) (EQ |a| |b|))
+
+(DEFUN |BOOLEAN;implies;3$;16| (|a| |b| $) (COND (|a| |b|) ('T 'T)))
+
+(PUT '|BOOLEAN;equiv;3$;17| '|SPADreplace| 'EQ)
+
+(DEFUN |BOOLEAN;equiv;3$;17| (|a| |b| $) (EQ |a| |b|))
+
+(DEFUN |BOOLEAN;<;2$B;18| (|a| |b| $)
+ (COND (|b| (|BOOLEAN;nt| |a| $)) ('T 'NIL)))
+
+(PUT '|BOOLEAN;size;Nni;19| '|SPADreplace| '(XLAM NIL 2))
+
+(DEFUN |BOOLEAN;size;Nni;19| ($) 2)
+
+(DEFUN |BOOLEAN;index;Pi$;20| (|i| $)
+ (COND ((SPADCALL |i| (|getShellEntry| $ 27)) 'NIL) ('T 'T)))
+
+(DEFUN |BOOLEAN;lookup;$Pi;21| (|a| $) (COND (|a| 1) ('T 2)))
+
+(DEFUN |BOOLEAN;random;$;22| ($)
+ (COND ((SPADCALL (|random|) (|getShellEntry| $ 27)) 'NIL) ('T 'T)))
+
+(DEFUN |BOOLEAN;convert;$If;23| (|x| $)
+ (COND
+ (|x| (SPADCALL (SPADCALL "true" (|getShellEntry| $ 34))
+ (|getShellEntry| $ 36)))
+ ('T
+ (SPADCALL (SPADCALL "false" (|getShellEntry| $ 34))
+ (|getShellEntry| $ 36)))))
+
+(DEFUN |BOOLEAN;coerce;$Of;24| (|x| $)
+ (COND
+ (|x| (SPADCALL "true" (|getShellEntry| $ 39)))
+ ('T (SPADCALL "false" (|getShellEntry| $ 39)))))
+
+(DEFUN |Boolean| ()
+ (PROG ()
+ (RETURN
+ (PROG (#0=#:G1421)
+ (RETURN
+ (COND
+ ((LETT #0# (HGET |$ConstructorCache| '|Boolean|) |Boolean|)
+ (|CDRwithIncrement| (CDAR #0#)))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (CDDAR (HPUT |$ConstructorCache| '|Boolean|
+ (LIST
+ (CONS NIL (CONS 1 (|Boolean;|))))))
+ (LETT #0# T |Boolean|))
+ (COND
+ ((NOT #0#) (HREM |$ConstructorCache| '|Boolean|)))))))))))
+
+(DEFUN |Boolean;| ()
+ (PROG (|dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| '(|Boolean|) . #0=(|Boolean|))
+ (LETT $ (|newShell| 42) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|haddProp| |$ConstructorCache| '|Boolean| NIL (CONS 1 $))
+ (|stuffDomainSlots| $)
+ $))))
+
+(MAKEPROP '|Boolean| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL |BOOLEAN;test;2$;1|
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |BOOLEAN;true;$;3|) $))
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |BOOLEAN;false;$;4|) $))
+ |BOOLEAN;not;2$;5| |BOOLEAN;^;2$;6| |BOOLEAN;~;2$;7|
+ |BOOLEAN;and;3$;8| |BOOLEAN;/\\;3$;9| |BOOLEAN;or;3$;10|
+ |BOOLEAN;\\/;3$;11| |BOOLEAN;xor;3$;12|
+ |BOOLEAN;nor;3$;13| |BOOLEAN;nand;3$;14| (|Boolean|)
+ |BOOLEAN;=;2$B;15| |BOOLEAN;implies;3$;16|
+ |BOOLEAN;equiv;3$;17| |BOOLEAN;<;2$B;18|
+ (|NonNegativeInteger|) |BOOLEAN;size;Nni;19| (|Integer|)
+ (0 . |even?|) (|PositiveInteger|) |BOOLEAN;index;Pi$;20|
+ |BOOLEAN;lookup;$Pi;21| |BOOLEAN;random;$;22| (|String|)
+ (|Symbol|) (5 . |coerce|) (|InputForm|) (10 . |convert|)
+ |BOOLEAN;convert;$If;23| (|OutputForm|) (15 . |message|)
+ |BOOLEAN;coerce;$Of;24| (|SingleInteger|))
+ '#(~= 20 ~ 26 |xor| 31 |true| 37 |test| 41 |size| 46 |random|
+ 50 |or| 54 |not| 60 |nor| 65 |nand| 71 |min| 77 |max| 83
+ |lookup| 89 |latex| 94 |index| 99 |implies| 104 |hash| 110
+ |false| 115 |equiv| 119 |convert| 125 |coerce| 130 |and|
+ 135 ^ 141 |\\/| 146 >= 152 > 158 = 164 <= 170 < 176 |/\\|
+ 182)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 '(0 0 0 0 0 0 0 0))
+ (CONS '#(|OrderedSet&| NIL |Logic&| |SetCategory&| NIL
+ NIL |BasicType&| NIL)
+ (CONS '#((|OrderedSet|) (|Finite|) (|Logic|)
+ (|SetCategory|) (|ConvertibleTo| 35)
+ (|PropositionalLogic|) (|BasicType|)
+ (|CoercibleTo| 38))
+ (|makeByteWordVec2| 41
+ '(1 26 19 0 27 1 33 0 32 34 1 35 0 33
+ 36 1 38 0 32 39 2 0 19 0 0 1 1 0 0 0
+ 11 2 0 0 0 0 16 0 0 0 7 1 0 0 0 6 0 0
+ 24 25 0 0 0 31 2 0 0 0 0 14 1 0 0 0 9
+ 2 0 0 0 0 17 2 0 0 0 0 18 2 0 0 0 0 1
+ 2 0 0 0 0 1 1 0 28 0 30 1 0 32 0 1 1
+ 0 0 28 29 2 0 0 0 0 21 1 0 41 0 1 0 0
+ 0 8 2 0 0 0 0 22 1 0 35 0 37 1 0 38 0
+ 40 2 0 0 0 0 12 1 0 0 0 10 2 0 0 0 0
+ 15 2 0 19 0 0 1 2 0 19 0 0 1 2 0 19 0
+ 0 20 2 0 19 0 0 1 2 0 19 0 0 23 2 0 0
+ 0 0 13)))))
+ '|lookupComplete|))
+
+(MAKEPROP '|Boolean| 'NILADIC T)
diff --git a/src/algebra/strap/CABMON.lsp b/src/algebra/strap/CABMON.lsp
new file mode 100644
index 00000000..d1059b38
--- /dev/null
+++ b/src/algebra/strap/CABMON.lsp
@@ -0,0 +1,26 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |CancellationAbelianMonoid;AL| 'NIL)
+
+(DEFUN |CancellationAbelianMonoid| ()
+ (LET (#:G1387)
+ (COND
+ (|CancellationAbelianMonoid;AL|)
+ (T (SETQ |CancellationAbelianMonoid;AL|
+ (|CancellationAbelianMonoid;|))))))
+
+(DEFUN |CancellationAbelianMonoid;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|AbelianMonoid|)
+ (|mkCategory| '|domain|
+ '(((|subtractIfCan|
+ ((|Union| $ "failed") $ $))
+ T))
+ NIL 'NIL NIL))
+ |CancellationAbelianMonoid|)
+ (SETELT #0# 0 '(|CancellationAbelianMonoid|))))))
+
+(MAKEPROP '|CancellationAbelianMonoid| 'NILADIC T)
diff --git a/src/algebra/strap/CHAR.lsp b/src/algebra/strap/CHAR.lsp
new file mode 100644
index 00000000..1395d670
--- /dev/null
+++ b/src/algebra/strap/CHAR.lsp
@@ -0,0 +1,168 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|CHAR;=;2$B;1| '|SPADreplace| 'CHAR=)
+
+(DEFUN |CHAR;=;2$B;1| (|a| |b| $) (CHAR= |a| |b|))
+
+(PUT '|CHAR;<;2$B;2| '|SPADreplace| 'CHAR<)
+
+(DEFUN |CHAR;<;2$B;2| (|a| |b| $) (CHAR< |a| |b|))
+
+(PUT '|CHAR;size;Nni;3| '|SPADreplace| '(XLAM NIL 256))
+
+(DEFUN |CHAR;size;Nni;3| ($) 256)
+
+(DEFUN |CHAR;index;Pi$;4| (|n| $)
+ (PROG (#0=#:G1389)
+ (RETURN
+ (SPADCALL
+ (PROG1 (LETT #0# (- |n| 1) |CHAR;index;Pi$;4|)
+ (|check-subtype| (>= #0# 0) '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 11)))))
+
+(DEFUN |CHAR;lookup;$Pi;5| (|c| $)
+ (PROG (#0=#:G1391)
+ (RETURN
+ (PROG1 (LETT #0# (+ 1 (SPADCALL |c| (QREFELT $ 14)))
+ |CHAR;lookup;$Pi;5|)
+ (|check-subtype| (> #0# 0) '(|PositiveInteger|) #0#)))))
+
+(PUT '|CHAR;char;Nni$;6| '|SPADreplace| 'CODE-CHAR)
+
+(DEFUN |CHAR;char;Nni$;6| (|n| $) (CODE-CHAR |n|))
+
+(PUT '|CHAR;ord;$Nni;7| '|SPADreplace| 'CHAR-CODE)
+
+(DEFUN |CHAR;ord;$Nni;7| (|c| $) (CHAR-CODE |c|))
+
+(DEFUN |CHAR;random;$;8| ($)
+ (SPADCALL (RANDOM (SPADCALL (QREFELT $ 10))) (QREFELT $ 11)))
+
+(PUT '|CHAR;space;$;9| '|SPADreplace| '(XLAM NIL (CHAR " " 0)))
+
+(DEFUN |CHAR;space;$;9| ($) (CHAR " " 0))
+
+(PUT '|CHAR;quote;$;10| '|SPADreplace| '(XLAM NIL (CHAR "\" " 0)))
+
+(DEFUN |CHAR;quote;$;10| ($) (CHAR "\" " 0))
+
+(PUT '|CHAR;escape;$;11| '|SPADreplace| '(XLAM NIL (CHAR "_ " 0)))
+
+(DEFUN |CHAR;escape;$;11| ($) (CHAR "_ " 0))
+
+(PUT '|CHAR;coerce;$Of;12| '|SPADreplace| '(XLAM (|c|) |c|))
+
+(DEFUN |CHAR;coerce;$Of;12| (|c| $) |c|)
+
+(DEFUN |CHAR;digit?;$B;13| (|c| $)
+ (SPADCALL |c| (|spadConstant| $ 23) (QREFELT $ 25)))
+
+(DEFUN |CHAR;hexDigit?;$B;14| (|c| $)
+ (SPADCALL |c| (|spadConstant| $ 27) (QREFELT $ 25)))
+
+(DEFUN |CHAR;upperCase?;$B;15| (|c| $)
+ (SPADCALL |c| (|spadConstant| $ 29) (QREFELT $ 25)))
+
+(DEFUN |CHAR;lowerCase?;$B;16| (|c| $)
+ (SPADCALL |c| (|spadConstant| $ 31) (QREFELT $ 25)))
+
+(DEFUN |CHAR;alphabetic?;$B;17| (|c| $)
+ (SPADCALL |c| (|spadConstant| $ 33) (QREFELT $ 25)))
+
+(DEFUN |CHAR;alphanumeric?;$B;18| (|c| $)
+ (SPADCALL |c| (|spadConstant| $ 35) (QREFELT $ 25)))
+
+(DEFUN |CHAR;latex;$S;19| (|c| $)
+ (STRCONC "\\mbox{`" (STRCONC (MAKE-FULL-CVEC 1 |c|) "'}")))
+
+(DEFUN |CHAR;char;S$;20| (|s| $)
+ (COND
+ ((EQL (QCSIZE |s|) 1)
+ (SPADCALL |s| (SPADCALL |s| (QREFELT $ 40)) (QREFELT $ 41)))
+ ('T (|userError| "String is not a single character"))))
+
+(PUT '|CHAR;upperCase;2$;21| '|SPADreplace| 'CHAR-UPCASE)
+
+(DEFUN |CHAR;upperCase;2$;21| (|c| $) (CHAR-UPCASE |c|))
+
+(PUT '|CHAR;lowerCase;2$;22| '|SPADreplace| 'CHAR-DOWNCASE)
+
+(DEFUN |CHAR;lowerCase;2$;22| (|c| $) (CHAR-DOWNCASE |c|))
+
+(DEFUN |Character| ()
+ (PROG ()
+ (RETURN
+ (PROG (#0=#:G1412)
+ (RETURN
+ (COND
+ ((LETT #0# (HGET |$ConstructorCache| '|Character|)
+ |Character|)
+ (|CDRwithIncrement| (CDAR #0#)))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (CDDAR (HPUT |$ConstructorCache| '|Character|
+ (LIST
+ (CONS NIL (CONS 1 (|Character;|))))))
+ (LETT #0# T |Character|))
+ (COND
+ ((NOT #0#) (HREM |$ConstructorCache| '|Character|)))))))))))
+
+(DEFUN |Character;| ()
+ (PROG (|dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| '(|Character|) . #0=(|Character|))
+ (LETT $ (|newShell| 46) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|haddProp| |$ConstructorCache| '|Character| NIL (CONS 1 $))
+ (|stuffDomainSlots| $)
+ $))))
+
+(MAKEPROP '|Character| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|Boolean|) |CHAR;=;2$B;1|
+ |CHAR;<;2$B;2| (|NonNegativeInteger|) |CHAR;size;Nni;3|
+ |CHAR;char;Nni$;6| (|PositiveInteger|) |CHAR;index;Pi$;4|
+ |CHAR;ord;$Nni;7| |CHAR;lookup;$Pi;5| |CHAR;random;$;8|
+ |CHAR;space;$;9| |CHAR;quote;$;10| |CHAR;escape;$;11|
+ (|OutputForm|) |CHAR;coerce;$Of;12| (|CharacterClass|)
+ (0 . |digit|) (|Character|) (4 . |member?|)
+ |CHAR;digit?;$B;13| (10 . |hexDigit|)
+ |CHAR;hexDigit?;$B;14| (14 . |upperCase|)
+ |CHAR;upperCase?;$B;15| (18 . |lowerCase|)
+ |CHAR;lowerCase?;$B;16| (22 . |alphabetic|)
+ |CHAR;alphabetic?;$B;17| (26 . |alphanumeric|)
+ |CHAR;alphanumeric?;$B;18| (|String|) |CHAR;latex;$S;19|
+ (|Integer|) (30 . |minIndex|) (35 . |elt|)
+ |CHAR;char;S$;20| |CHAR;upperCase;2$;21|
+ |CHAR;lowerCase;2$;22| (|SingleInteger|))
+ '#(~= 41 |upperCase?| 47 |upperCase| 52 |space| 57 |size| 61
+ |random| 65 |quote| 69 |ord| 73 |min| 78 |max| 84
+ |lowerCase?| 90 |lowerCase| 95 |lookup| 100 |latex| 105
+ |index| 110 |hexDigit?| 115 |hash| 120 |escape| 125
+ |digit?| 129 |coerce| 134 |char| 139 |alphanumeric?| 149
+ |alphabetic?| 154 >= 159 > 165 = 171 <= 177 < 183)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 '(0 0 0 0 0 0))
+ (CONS '#(NIL |OrderedSet&| NIL |SetCategory&|
+ |BasicType&| NIL)
+ (CONS '#((|OrderedFinite|) (|OrderedSet|)
+ (|Finite|) (|SetCategory|) (|BasicType|)
+ (|CoercibleTo| 20))
+ (|makeByteWordVec2| 45
+ '(0 22 0 23 2 22 6 24 0 25 0 22 0 27 0
+ 22 0 29 0 22 0 31 0 22 0 33 0 22 0 35
+ 1 37 39 0 40 2 37 24 0 39 41 2 0 6 0
+ 0 1 1 0 6 0 30 1 0 0 0 43 0 0 0 17 0
+ 0 9 10 0 0 0 16 0 0 0 18 1 0 9 0 14 2
+ 0 0 0 0 1 2 0 0 0 0 1 1 0 6 0 32 1 0
+ 0 0 44 1 0 12 0 15 1 0 37 0 38 1 0 0
+ 12 13 1 0 6 0 28 1 0 45 0 1 0 0 0 19
+ 1 0 6 0 26 1 0 20 0 21 1 0 0 37 42 1
+ 0 0 9 11 1 0 6 0 36 1 0 6 0 34 2 0 6
+ 0 0 1 2 0 6 0 0 1 2 0 6 0 0 7 2 0 6 0
+ 0 1 2 0 6 0 0 8)))))
+ '|lookupComplete|))
+
+(MAKEPROP '|Character| 'NILADIC T)
diff --git a/src/algebra/strap/CLAGG-.lsp b/src/algebra/strap/CLAGG-.lsp
new file mode 100644
index 00000000..0306e826
--- /dev/null
+++ b/src/algebra/strap/CLAGG-.lsp
@@ -0,0 +1,221 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |CLAGG-;#;ANni;1| (|c| $)
+ (LENGTH (SPADCALL |c| (QREFELT $ 9))))
+
+(DEFUN |CLAGG-;count;MANni;2| (|f| |c| $)
+ (PROG (|x| #0=#:G1406 #1=#:G1403 #2=#:G1401 #3=#:G1402)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #3# NIL |CLAGG-;count;MANni;2|)
+ (SEQ (LETT |x| NIL |CLAGG-;count;MANni;2|)
+ (LETT #0# (SPADCALL |c| (QREFELT $ 9))
+ |CLAGG-;count;MANni;2|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |x| (CAR #0#) |CLAGG-;count;MANni;2|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((SPADCALL |x| |f|)
+ (PROGN
+ (LETT #1# 1 |CLAGG-;count;MANni;2|)
+ (COND
+ (#3#
+ (LETT #2# (+ #2# #1#)
+ |CLAGG-;count;MANni;2|))
+ ('T
+ (PROGN
+ (LETT #2# #1#
+ |CLAGG-;count;MANni;2|)
+ (LETT #3# 'T
+ |CLAGG-;count;MANni;2|)))))))))
+ (LETT #0# (CDR #0#) |CLAGG-;count;MANni;2|) (GO G190)
+ G191 (EXIT NIL))
+ (COND (#3# #2#) ('T 0)))))))
+
+(DEFUN |CLAGG-;any?;MAB;3| (|f| |c| $)
+ (PROG (|x| #0=#:G1411 #1=#:G1409 #2=#:G1407 #3=#:G1408)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #3# NIL |CLAGG-;any?;MAB;3|)
+ (SEQ (LETT |x| NIL |CLAGG-;any?;MAB;3|)
+ (LETT #0# (SPADCALL |c| (QREFELT $ 9))
+ |CLAGG-;any?;MAB;3|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |x| (CAR #0#) |CLAGG-;any?;MAB;3|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (PROGN
+ (LETT #1# (SPADCALL |x| |f|)
+ |CLAGG-;any?;MAB;3|)
+ (COND
+ (#3# (LETT #2#
+ (COND (#2# 'T) ('T #1#))
+ |CLAGG-;any?;MAB;3|))
+ ('T
+ (PROGN
+ (LETT #2# #1# |CLAGG-;any?;MAB;3|)
+ (LETT #3# 'T |CLAGG-;any?;MAB;3|)))))))
+ (LETT #0# (CDR #0#) |CLAGG-;any?;MAB;3|) (GO G190)
+ G191 (EXIT NIL))
+ (COND (#3# #2#) ('T 'NIL)))))))
+
+(DEFUN |CLAGG-;every?;MAB;4| (|f| |c| $)
+ (PROG (|x| #0=#:G1416 #1=#:G1414 #2=#:G1412 #3=#:G1413)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #3# NIL |CLAGG-;every?;MAB;4|)
+ (SEQ (LETT |x| NIL |CLAGG-;every?;MAB;4|)
+ (LETT #0# (SPADCALL |c| (QREFELT $ 9))
+ |CLAGG-;every?;MAB;4|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |x| (CAR #0#) |CLAGG-;every?;MAB;4|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (PROGN
+ (LETT #1# (SPADCALL |x| |f|)
+ |CLAGG-;every?;MAB;4|)
+ (COND
+ (#3# (LETT #2#
+ (COND (#2# #1#) ('T 'NIL))
+ |CLAGG-;every?;MAB;4|))
+ ('T
+ (PROGN
+ (LETT #2# #1#
+ |CLAGG-;every?;MAB;4|)
+ (LETT #3# 'T |CLAGG-;every?;MAB;4|)))))))
+ (LETT #0# (CDR #0#) |CLAGG-;every?;MAB;4|) (GO G190)
+ G191 (EXIT NIL))
+ (COND (#3# #2#) ('T 'T)))))))
+
+(DEFUN |CLAGG-;find;MAU;5| (|f| |c| $)
+ (SPADCALL |f| (SPADCALL |c| (QREFELT $ 9)) (QREFELT $ 18)))
+
+(DEFUN |CLAGG-;reduce;MAS;6| (|f| |x| $)
+ (SPADCALL |f| (SPADCALL |x| (QREFELT $ 9)) (QREFELT $ 21)))
+
+(DEFUN |CLAGG-;reduce;MA2S;7| (|f| |x| |s| $)
+ (SPADCALL |f| (SPADCALL |x| (QREFELT $ 9)) |s| (QREFELT $ 23)))
+
+(DEFUN |CLAGG-;remove;M2A;8| (|f| |x| $)
+ (SPADCALL (SPADCALL |f| (SPADCALL |x| (QREFELT $ 9)) (QREFELT $ 25))
+ (QREFELT $ 26)))
+
+(DEFUN |CLAGG-;select;M2A;9| (|f| |x| $)
+ (SPADCALL (SPADCALL |f| (SPADCALL |x| (QREFELT $ 9)) (QREFELT $ 28))
+ (QREFELT $ 26)))
+
+(DEFUN |CLAGG-;remove;S2A;10| (|s| |x| $)
+ (SPADCALL (CONS #'|CLAGG-;remove;S2A;10!0| (VECTOR $ |s|)) |x|
+ (QREFELT $ 31)))
+
+(DEFUN |CLAGG-;remove;S2A;10!0| (|#1| $$)
+ (SPADCALL |#1| (QREFELT $$ 1) (QREFELT (QREFELT $$ 0) 30)))
+
+(DEFUN |CLAGG-;reduce;MA3S;11| (|f| |x| |s1| |s2| $)
+ (SPADCALL |f| (SPADCALL |x| (QREFELT $ 9)) |s1| |s2| (QREFELT $ 33)))
+
+(DEFUN |CLAGG-;removeDuplicates;2A;12| (|x| $)
+ (SPADCALL (SPADCALL (SPADCALL |x| (QREFELT $ 9)) (QREFELT $ 35))
+ (QREFELT $ 26)))
+
+(DEFUN |Collection&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|Collection&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$| (LIST '|Collection&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (GETREFV 37) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#2|
+ '(|ConvertibleTo| (|InputForm|)))
+ (|HasCategory| |#2| '(|SetCategory|))
+ (|HasAttribute| |#1| '|finiteAggregate|))) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (PROGN
+ (QSETREFV $ 11
+ (CONS (|dispatchFunction| |CLAGG-;#;ANni;1|) $))
+ (QSETREFV $ 13
+ (CONS (|dispatchFunction| |CLAGG-;count;MANni;2|) $))
+ (QSETREFV $ 15
+ (CONS (|dispatchFunction| |CLAGG-;any?;MAB;3|) $))
+ (QSETREFV $ 16
+ (CONS (|dispatchFunction| |CLAGG-;every?;MAB;4|) $))
+ (QSETREFV $ 19
+ (CONS (|dispatchFunction| |CLAGG-;find;MAU;5|) $))
+ (QSETREFV $ 22
+ (CONS (|dispatchFunction| |CLAGG-;reduce;MAS;6|) $))
+ (QSETREFV $ 24
+ (CONS (|dispatchFunction| |CLAGG-;reduce;MA2S;7|) $))
+ (QSETREFV $ 27
+ (CONS (|dispatchFunction| |CLAGG-;remove;M2A;8|) $))
+ (QSETREFV $ 29
+ (CONS (|dispatchFunction| |CLAGG-;select;M2A;9|) $))
+ (COND
+ ((|testBitVector| |pv$| 2)
+ (PROGN
+ (QSETREFV $ 32
+ (CONS (|dispatchFunction| |CLAGG-;remove;S2A;10|)
+ $))
+ (QSETREFV $ 34
+ (CONS (|dispatchFunction|
+ |CLAGG-;reduce;MA3S;11|)
+ $))
+ (QSETREFV $ 36
+ (CONS (|dispatchFunction|
+ |CLAGG-;removeDuplicates;2A;12|)
+ $))))))))
+ $))))
+
+(MAKEPROP '|Collection&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|List| 7) (0 . |parts|) (|NonNegativeInteger|) (5 . |#|)
+ (|Mapping| 14 7) (10 . |count|) (|Boolean|) (16 . |any?|)
+ (22 . |every?|) (|Union| 7 '"failed") (28 . |find|)
+ (34 . |find|) (|Mapping| 7 7 7) (40 . |reduce|)
+ (46 . |reduce|) (52 . |reduce|) (59 . |reduce|)
+ (66 . |remove|) (72 . |construct|) (77 . |remove|)
+ (83 . |select|) (89 . |select|) (95 . =) (101 . |remove|)
+ (107 . |remove|) (113 . |reduce|) (121 . |reduce|)
+ (129 . |removeDuplicates|) (134 . |removeDuplicates|))
+ '#(|select| 139 |removeDuplicates| 145 |remove| 150 |reduce|
+ 162 |find| 183 |every?| 189 |count| 195 |any?| 201 |#|
+ 207)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 36
+ '(1 6 8 0 9 1 0 10 0 11 2 0 10 12 0 13
+ 2 0 14 12 0 15 2 0 14 12 0 16 2 8 17
+ 12 0 18 2 0 17 12 0 19 2 8 7 20 0 21
+ 2 0 7 20 0 22 3 8 7 20 0 7 23 3 0 7
+ 20 0 7 24 2 8 0 12 0 25 1 6 0 8 26 2
+ 0 0 12 0 27 2 8 0 12 0 28 2 0 0 12 0
+ 29 2 7 14 0 0 30 2 6 0 12 0 31 2 0 0
+ 7 0 32 4 8 7 20 0 7 7 33 4 0 7 20 0 7
+ 7 34 1 8 0 0 35 1 0 0 0 36 2 0 0 12 0
+ 29 1 0 0 0 36 2 0 0 7 0 32 2 0 0 12 0
+ 27 4 0 7 20 0 7 7 34 3 0 7 20 0 7 24
+ 2 0 7 20 0 22 2 0 17 12 0 19 2 0 14
+ 12 0 16 2 0 10 12 0 13 2 0 14 12 0 15
+ 1 0 10 0 11)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/CLAGG.lsp b/src/algebra/strap/CLAGG.lsp
new file mode 100644
index 00000000..eb1fd581
--- /dev/null
+++ b/src/algebra/strap/CLAGG.lsp
@@ -0,0 +1,104 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |Collection;CAT| 'NIL)
+
+(DEFPARAMETER |Collection;AL| 'NIL)
+
+(DEFUN |Collection| (#0=#:G1398)
+ (LET (#1=#:G1399)
+ (COND
+ ((SETQ #1# (|assoc| (|devaluate| #0#) |Collection;AL|))
+ (CDR #1#))
+ (T (SETQ |Collection;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1# (|Collection;| #0#)))
+ |Collection;AL|))
+ #1#))))
+
+(DEFUN |Collection;| (|t#1|)
+ (PROG (#0=#:G1397)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (COND
+ (|Collection;CAT|)
+ ('T
+ (LETT |Collection;CAT|
+ (|Join| (|HomogeneousAggregate| '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|construct|
+ ($ (|List| |t#1|)))
+ T)
+ ((|find|
+ ((|Union| |t#1| "failed")
+ (|Mapping| (|Boolean|)
+ |t#1|)
+ $))
+ T)
+ ((|reduce|
+ (|t#1|
+ (|Mapping| |t#1| |t#1|
+ |t#1|)
+ $))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|reduce|
+ (|t#1|
+ (|Mapping| |t#1| |t#1|
+ |t#1|)
+ $ |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|remove|
+ ($
+ (|Mapping| (|Boolean|)
+ |t#1|)
+ $))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|select|
+ ($
+ (|Mapping| (|Boolean|)
+ |t#1|)
+ $))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|reduce|
+ (|t#1|
+ (|Mapping| |t#1| |t#1|
+ |t#1|)
+ $ |t#1| |t#1|))
+ (AND
+ (|has| |t#1|
+ (|SetCategory|))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|))))
+ ((|remove| ($ |t#1| $))
+ (AND
+ (|has| |t#1|
+ (|SetCategory|))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|))))
+ ((|removeDuplicates| ($ $))
+ (AND
+ (|has| |t#1|
+ (|SetCategory|))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))))
+ '(((|ConvertibleTo|
+ (|InputForm|))
+ (|has| |t#1|
+ (|ConvertibleTo|
+ (|InputForm|)))))
+ '((|List| |t#1|)) NIL))
+ . #1=(|Collection|))))) . #1#)
+ (SETELT #0# 0 (LIST '|Collection| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/COMRING.lsp b/src/algebra/strap/COMRING.lsp
new file mode 100644
index 00000000..fc0f6ace
--- /dev/null
+++ b/src/algebra/strap/COMRING.lsp
@@ -0,0 +1,22 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |CommutativeRing;AL| 'NIL)
+
+(DEFUN |CommutativeRing| ()
+ (LET (#:G1387)
+ (COND
+ (|CommutativeRing;AL|)
+ (T (SETQ |CommutativeRing;AL| (|CommutativeRing;|))))))
+
+(DEFUN |CommutativeRing;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|Ring|) (|BiModule| '$ '$)
+ (|mkCategory| '|package| NIL
+ '(((|commutative| "*") T)) 'NIL NIL))
+ |CommutativeRing|)
+ (SETELT #0# 0 '(|CommutativeRing|))))))
+
+(MAKEPROP '|CommutativeRing| 'NILADIC T)
diff --git a/src/algebra/strap/DFLOAT.lsp b/src/algebra/strap/DFLOAT.lsp
new file mode 100644
index 00000000..84f447f4
--- /dev/null
+++ b/src/algebra/strap/DFLOAT.lsp
@@ -0,0 +1,872 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |DFLOAT;doubleFloatFormat;2S;1| (|s| $)
+ (PROG (|ss|)
+ (RETURN
+ (SEQ (LETT |ss| (|getShellEntry| $ 6)
+ |DFLOAT;doubleFloatFormat;2S;1|)
+ (SETELT $ 6 |s|) (EXIT |ss|)))))
+
+(DEFUN |DFLOAT;OMwrite;$S;2| (|x| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |DFLOAT;OMwrite;$S;2|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |DFLOAT;OMwrite;$S;2|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 10))
+ (|getShellEntry| $ 12))
+ |DFLOAT;OMwrite;$S;2|)
+ (SPADCALL |dev| (|getShellEntry| $ 14))
+ (SPADCALL |dev| |x| (|getShellEntry| $ 16))
+ (SPADCALL |dev| (|getShellEntry| $ 17))
+ (SPADCALL |dev| (|getShellEntry| $ 18))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|) |DFLOAT;OMwrite;$S;2|)
+ (EXIT |s|)))))
+
+(DEFUN |DFLOAT;OMwrite;$BS;3| (|x| |wholeObj| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |DFLOAT;OMwrite;$BS;3|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|)
+ |DFLOAT;OMwrite;$BS;3|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 10))
+ (|getShellEntry| $ 12))
+ |DFLOAT;OMwrite;$BS;3|)
+ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 14))))
+ (SPADCALL |dev| |x| (|getShellEntry| $ 16))
+ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 17))))
+ (SPADCALL |dev| (|getShellEntry| $ 18))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|)
+ |DFLOAT;OMwrite;$BS;3|)
+ (EXIT |s|)))))
+
+(DEFUN |DFLOAT;OMwrite;Omd$V;4| (|dev| |x| $)
+ (SEQ (SPADCALL |dev| (|getShellEntry| $ 14))
+ (SPADCALL |dev| |x| (|getShellEntry| $ 16))
+ (EXIT (SPADCALL |dev| (|getShellEntry| $ 17)))))
+
+(DEFUN |DFLOAT;OMwrite;Omd$BV;5| (|dev| |x| |wholeObj| $)
+ (SEQ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 14))))
+ (SPADCALL |dev| |x| (|getShellEntry| $ 16))
+ (EXIT (COND
+ (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 17)))))))
+
+(PUT '|DFLOAT;checkComplex| '|SPADreplace| 'C-TO-R)
+
+(DEFUN |DFLOAT;checkComplex| (|x| $) (C-TO-R |x|))
+
+(PUT '|DFLOAT;base;Pi;7| '|SPADreplace| '(XLAM NIL (FLOAT-RADIX 0.0)))
+
+(DEFUN |DFLOAT;base;Pi;7| ($) (FLOAT-RADIX 0.0))
+
+(DEFUN |DFLOAT;mantissa;$I;8| (|x| $) (QCAR (|DFLOAT;manexp| |x| $)))
+
+(DEFUN |DFLOAT;exponent;$I;9| (|x| $) (QCDR (|DFLOAT;manexp| |x| $)))
+
+(PUT '|DFLOAT;precision;Pi;10| '|SPADreplace|
+ '(XLAM NIL (FLOAT-DIGITS 0.0)))
+
+(DEFUN |DFLOAT;precision;Pi;10| ($) (FLOAT-DIGITS 0.0))
+
+(DEFUN |DFLOAT;bits;Pi;11| ($)
+ (PROG (#0=#:G1419)
+ (RETURN
+ (COND
+ ((EQL (FLOAT-RADIX 0.0) 2) (FLOAT-DIGITS 0.0))
+ ((EQL (FLOAT-RADIX 0.0) 16) (* 4 (FLOAT-DIGITS 0.0)))
+ ('T
+ (PROG1 (LETT #0#
+ (FIX (SPADCALL (FLOAT-DIGITS 0.0)
+ (SPADCALL
+ (FLOAT (FLOAT-RADIX 0.0)
+ MOST-POSITIVE-LONG-FLOAT)
+ (|getShellEntry| $ 30))
+ (|getShellEntry| $ 31)))
+ |DFLOAT;bits;Pi;11|)
+ (|check-subtype| (> #0# 0) '(|PositiveInteger|) #0#)))))))
+
+(PUT '|DFLOAT;max;$;12| '|SPADreplace|
+ '(XLAM NIL MOST-POSITIVE-LONG-FLOAT))
+
+(DEFUN |DFLOAT;max;$;12| ($) MOST-POSITIVE-LONG-FLOAT)
+
+(PUT '|DFLOAT;min;$;13| '|SPADreplace|
+ '(XLAM NIL MOST-NEGATIVE-LONG-FLOAT))
+
+(DEFUN |DFLOAT;min;$;13| ($) MOST-NEGATIVE-LONG-FLOAT)
+
+(DEFUN |DFLOAT;order;$I;14| (|a| $)
+ (- (+ (FLOAT-DIGITS 0.0) (SPADCALL |a| (|getShellEntry| $ 28))) 1))
+
+(PUT '|DFLOAT;Zero;$;15| '|SPADreplace|
+ '(XLAM NIL (FLOAT 0 MOST-POSITIVE-LONG-FLOAT)))
+
+(DEFUN |DFLOAT;Zero;$;15| ($) (FLOAT 0 MOST-POSITIVE-LONG-FLOAT))
+
+(PUT '|DFLOAT;One;$;16| '|SPADreplace|
+ '(XLAM NIL (FLOAT 1 MOST-POSITIVE-LONG-FLOAT)))
+
+(DEFUN |DFLOAT;One;$;16| ($) (FLOAT 1 MOST-POSITIVE-LONG-FLOAT))
+
+(DEFUN |DFLOAT;exp1;$;17| ($)
+ (/ (FLOAT 534625820200 MOST-POSITIVE-LONG-FLOAT)
+ (FLOAT 196677847971 MOST-POSITIVE-LONG-FLOAT)))
+
+(PUT '|DFLOAT;pi;$;18| '|SPADreplace| '(XLAM NIL PI))
+
+(DEFUN |DFLOAT;pi;$;18| ($) PI)
+
+(DEFUN |DFLOAT;coerce;$Of;19| (|x| $)
+ (SPADCALL (FORMAT NIL (|getShellEntry| $ 6) |x|)
+ (|getShellEntry| $ 41)))
+
+(DEFUN |DFLOAT;convert;$If;20| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 44)))
+
+(PUT '|DFLOAT;<;2$B;21| '|SPADreplace| '<)
+
+(DEFUN |DFLOAT;<;2$B;21| (|x| |y| $) (< |x| |y|))
+
+(PUT '|DFLOAT;-;2$;22| '|SPADreplace| '-)
+
+(DEFUN |DFLOAT;-;2$;22| (|x| $) (- |x|))
+
+(PUT '|DFLOAT;+;3$;23| '|SPADreplace| '+)
+
+(DEFUN |DFLOAT;+;3$;23| (|x| |y| $) (+ |x| |y|))
+
+(PUT '|DFLOAT;-;3$;24| '|SPADreplace| '-)
+
+(DEFUN |DFLOAT;-;3$;24| (|x| |y| $) (- |x| |y|))
+
+(PUT '|DFLOAT;*;3$;25| '|SPADreplace| '*)
+
+(DEFUN |DFLOAT;*;3$;25| (|x| |y| $) (* |x| |y|))
+
+(PUT '|DFLOAT;*;I2$;26| '|SPADreplace| '*)
+
+(DEFUN |DFLOAT;*;I2$;26| (|i| |x| $) (* |i| |x|))
+
+(PUT '|DFLOAT;max;3$;27| '|SPADreplace| 'MAX)
+
+(DEFUN |DFLOAT;max;3$;27| (|x| |y| $) (MAX |x| |y|))
+
+(PUT '|DFLOAT;min;3$;28| '|SPADreplace| 'MIN)
+
+(DEFUN |DFLOAT;min;3$;28| (|x| |y| $) (MIN |x| |y|))
+
+(PUT '|DFLOAT;=;2$B;29| '|SPADreplace| '=)
+
+(DEFUN |DFLOAT;=;2$B;29| (|x| |y| $) (= |x| |y|))
+
+(PUT '|DFLOAT;/;$I$;30| '|SPADreplace| '/)
+
+(DEFUN |DFLOAT;/;$I$;30| (|x| |i| $) (/ |x| |i|))
+
+(DEFUN |DFLOAT;sqrt;2$;31| (|x| $)
+ (|DFLOAT;checkComplex| (SQRT |x|) $))
+
+(DEFUN |DFLOAT;log10;2$;32| (|x| $)
+ (|DFLOAT;checkComplex| (|log| |x|) $))
+
+(PUT '|DFLOAT;**;$I$;33| '|SPADreplace| 'EXPT)
+
+(DEFUN |DFLOAT;**;$I$;33| (|x| |i| $) (EXPT |x| |i|))
+
+(DEFUN |DFLOAT;**;3$;34| (|x| |y| $)
+ (|DFLOAT;checkComplex| (EXPT |x| |y|) $))
+
+(PUT '|DFLOAT;coerce;I$;35| '|SPADreplace|
+ '(XLAM (|i|) (FLOAT |i| MOST-POSITIVE-LONG-FLOAT)))
+
+(DEFUN |DFLOAT;coerce;I$;35| (|i| $)
+ (FLOAT |i| MOST-POSITIVE-LONG-FLOAT))
+
+(PUT '|DFLOAT;exp;2$;36| '|SPADreplace| 'EXP)
+
+(DEFUN |DFLOAT;exp;2$;36| (|x| $) (EXP |x|))
+
+(DEFUN |DFLOAT;log;2$;37| (|x| $) (|DFLOAT;checkComplex| (LN |x|) $))
+
+(DEFUN |DFLOAT;log2;2$;38| (|x| $)
+ (|DFLOAT;checkComplex| (LOG2 |x|) $))
+
+(PUT '|DFLOAT;sin;2$;39| '|SPADreplace| 'SIN)
+
+(DEFUN |DFLOAT;sin;2$;39| (|x| $) (SIN |x|))
+
+(PUT '|DFLOAT;cos;2$;40| '|SPADreplace| 'COS)
+
+(DEFUN |DFLOAT;cos;2$;40| (|x| $) (COS |x|))
+
+(PUT '|DFLOAT;tan;2$;41| '|SPADreplace| 'TAN)
+
+(DEFUN |DFLOAT;tan;2$;41| (|x| $) (TAN |x|))
+
+(PUT '|DFLOAT;cot;2$;42| '|SPADreplace| 'COT)
+
+(DEFUN |DFLOAT;cot;2$;42| (|x| $) (COT |x|))
+
+(PUT '|DFLOAT;sec;2$;43| '|SPADreplace| 'SEC)
+
+(DEFUN |DFLOAT;sec;2$;43| (|x| $) (SEC |x|))
+
+(PUT '|DFLOAT;csc;2$;44| '|SPADreplace| 'CSC)
+
+(DEFUN |DFLOAT;csc;2$;44| (|x| $) (CSC |x|))
+
+(DEFUN |DFLOAT;asin;2$;45| (|x| $)
+ (|DFLOAT;checkComplex| (ASIN |x|) $))
+
+(DEFUN |DFLOAT;acos;2$;46| (|x| $)
+ (|DFLOAT;checkComplex| (ACOS |x|) $))
+
+(PUT '|DFLOAT;atan;2$;47| '|SPADreplace| 'ATAN)
+
+(DEFUN |DFLOAT;atan;2$;47| (|x| $) (ATAN |x|))
+
+(DEFUN |DFLOAT;acsc;2$;48| (|x| $)
+ (|DFLOAT;checkComplex| (ACSC |x|) $))
+
+(PUT '|DFLOAT;acot;2$;49| '|SPADreplace| 'ACOT)
+
+(DEFUN |DFLOAT;acot;2$;49| (|x| $) (ACOT |x|))
+
+(DEFUN |DFLOAT;asec;2$;50| (|x| $)
+ (|DFLOAT;checkComplex| (ASEC |x|) $))
+
+(PUT '|DFLOAT;sinh;2$;51| '|SPADreplace| 'SINH)
+
+(DEFUN |DFLOAT;sinh;2$;51| (|x| $) (SINH |x|))
+
+(PUT '|DFLOAT;cosh;2$;52| '|SPADreplace| 'COSH)
+
+(DEFUN |DFLOAT;cosh;2$;52| (|x| $) (COSH |x|))
+
+(PUT '|DFLOAT;tanh;2$;53| '|SPADreplace| 'TANH)
+
+(DEFUN |DFLOAT;tanh;2$;53| (|x| $) (TANH |x|))
+
+(PUT '|DFLOAT;csch;2$;54| '|SPADreplace| 'CSCH)
+
+(DEFUN |DFLOAT;csch;2$;54| (|x| $) (CSCH |x|))
+
+(PUT '|DFLOAT;coth;2$;55| '|SPADreplace| 'COTH)
+
+(DEFUN |DFLOAT;coth;2$;55| (|x| $) (COTH |x|))
+
+(PUT '|DFLOAT;sech;2$;56| '|SPADreplace| 'SECH)
+
+(DEFUN |DFLOAT;sech;2$;56| (|x| $) (SECH |x|))
+
+(PUT '|DFLOAT;asinh;2$;57| '|SPADreplace| 'ASINH)
+
+(DEFUN |DFLOAT;asinh;2$;57| (|x| $) (ASINH |x|))
+
+(DEFUN |DFLOAT;acosh;2$;58| (|x| $)
+ (|DFLOAT;checkComplex| (ACOSH |x|) $))
+
+(DEFUN |DFLOAT;atanh;2$;59| (|x| $)
+ (|DFLOAT;checkComplex| (ATANH |x|) $))
+
+(PUT '|DFLOAT;acsch;2$;60| '|SPADreplace| 'ACSCH)
+
+(DEFUN |DFLOAT;acsch;2$;60| (|x| $) (ACSCH |x|))
+
+(DEFUN |DFLOAT;acoth;2$;61| (|x| $)
+ (|DFLOAT;checkComplex| (ACOTH |x|) $))
+
+(DEFUN |DFLOAT;asech;2$;62| (|x| $)
+ (|DFLOAT;checkComplex| (ASECH |x|) $))
+
+(PUT '|DFLOAT;/;3$;63| '|SPADreplace| '/)
+
+(DEFUN |DFLOAT;/;3$;63| (|x| |y| $) (/ |x| |y|))
+
+(PUT '|DFLOAT;negative?;$B;64| '|SPADreplace| 'MINUSP)
+
+(DEFUN |DFLOAT;negative?;$B;64| (|x| $) (MINUSP |x|))
+
+(PUT '|DFLOAT;zero?;$B;65| '|SPADreplace| 'ZEROP)
+
+(DEFUN |DFLOAT;zero?;$B;65| (|x| $) (ZEROP |x|))
+
+(PUT '|DFLOAT;hash;$I;66| '|SPADreplace| 'HASHEQ)
+
+(DEFUN |DFLOAT;hash;$I;66| (|x| $) (HASHEQ |x|))
+
+(DEFUN |DFLOAT;recip;$U;67| (|x| $)
+ (COND ((ZEROP |x|) (CONS 1 "failed")) ('T (CONS 0 (/ 1.0 |x|)))))
+
+(PUT '|DFLOAT;differentiate;2$;68| '|SPADreplace| '(XLAM (|x|) 0.0))
+
+(DEFUN |DFLOAT;differentiate;2$;68| (|x| $) 0.0)
+
+(DEFUN |DFLOAT;Gamma;2$;69| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 95)))
+
+(DEFUN |DFLOAT;Beta;3$;70| (|x| |y| $)
+ (SPADCALL |x| |y| (|getShellEntry| $ 97)))
+
+(PUT '|DFLOAT;wholePart;$I;71| '|SPADreplace| 'FIX)
+
+(DEFUN |DFLOAT;wholePart;$I;71| (|x| $) (FIX |x|))
+
+(DEFUN |DFLOAT;float;2IPi$;72| (|ma| |ex| |b| $)
+ (* |ma| (EXPT (FLOAT |b| MOST-POSITIVE-LONG-FLOAT) |ex|)))
+
+(PUT '|DFLOAT;convert;$Df;73| '|SPADreplace| '(XLAM (|x|) |x|))
+
+(DEFUN |DFLOAT;convert;$Df;73| (|x| $) |x|)
+
+(DEFUN |DFLOAT;convert;$F;74| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 103)))
+
+(DEFUN |DFLOAT;rationalApproximation;$NniF;75| (|x| |d| $)
+ (SPADCALL |x| |d| 10 (|getShellEntry| $ 107)))
+
+(DEFUN |DFLOAT;atan;3$;76| (|x| |y| $)
+ (PROG (|theta|)
+ (RETURN
+ (SEQ (COND
+ ((= |x| 0.0)
+ (COND
+ ((< 0.0 |y|) (/ PI 2))
+ ((< |y| 0.0) (- (/ PI 2)))
+ ('T 0.0)))
+ ('T
+ (SEQ (LETT |theta| (ATAN (FLOAT-SIGN 1.0 (/ |y| |x|)))
+ |DFLOAT;atan;3$;76|)
+ (COND
+ ((< |x| 0.0)
+ (LETT |theta| (- PI |theta|) |DFLOAT;atan;3$;76|)))
+ (COND
+ ((< |y| 0.0)
+ (LETT |theta| (- |theta|) |DFLOAT;atan;3$;76|)))
+ (EXIT |theta|))))))))
+
+(DEFUN |DFLOAT;retract;$F;77| (|x| $)
+ (PROG (#0=#:G1494)
+ (RETURN
+ (SPADCALL |x|
+ (PROG1 (LETT #0# (- (FLOAT-DIGITS 0.0) 1)
+ |DFLOAT;retract;$F;77|)
+ (|check-subtype| (>= #0# 0) '(|NonNegativeInteger|) #0#))
+ (FLOAT-RADIX 0.0) (|getShellEntry| $ 107)))))
+
+(DEFUN |DFLOAT;retractIfCan;$U;78| (|x| $)
+ (PROG (#0=#:G1499)
+ (RETURN
+ (CONS 0
+ (SPADCALL |x|
+ (PROG1 (LETT #0# (- (FLOAT-DIGITS 0.0) 1)
+ |DFLOAT;retractIfCan;$U;78|)
+ (|check-subtype| (>= #0# 0) '(|NonNegativeInteger|)
+ #0#))
+ (FLOAT-RADIX 0.0) (|getShellEntry| $ 107))))))
+
+(DEFUN |DFLOAT;retract;$I;79| (|x| $)
+ (PROG (|n|)
+ (RETURN
+ (SEQ (LETT |n| (FIX |x|) |DFLOAT;retract;$I;79|)
+ (EXIT (COND
+ ((= |x| (FLOAT |n| MOST-POSITIVE-LONG-FLOAT)) |n|)
+ ('T (|error| "Not an integer"))))))))
+
+(DEFUN |DFLOAT;retractIfCan;$U;80| (|x| $)
+ (PROG (|n|)
+ (RETURN
+ (SEQ (LETT |n| (FIX |x|) |DFLOAT;retractIfCan;$U;80|)
+ (EXIT (COND
+ ((= |x| (FLOAT |n| MOST-POSITIVE-LONG-FLOAT))
+ (CONS 0 |n|))
+ ('T (CONS 1 "failed"))))))))
+
+(DEFUN |DFLOAT;sign;$I;81| (|x| $)
+ (SPADCALL (FLOAT-SIGN |x| 1.0) (|getShellEntry| $ 113)))
+
+(PUT '|DFLOAT;abs;2$;82| '|SPADreplace|
+ '(XLAM (|x|) (FLOAT-SIGN 1.0 |x|)))
+
+(DEFUN |DFLOAT;abs;2$;82| (|x| $) (FLOAT-SIGN 1.0 |x|))
+
+(DEFUN |DFLOAT;manexp| (|x| $)
+ (PROG (|s| #0=#:G1520 |me| |two53|)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((ZEROP |x|) (CONS 0 0))
+ ('T
+ (SEQ (LETT |s|
+ (SPADCALL |x| (|getShellEntry| $ 116))
+ |DFLOAT;manexp|)
+ (LETT |x| (FLOAT-SIGN 1.0 |x|)
+ |DFLOAT;manexp|)
+ (COND
+ ((< MOST-POSITIVE-LONG-FLOAT |x|)
+ (PROGN
+ (LETT #0#
+ (CONS
+ (+
+ (* |s|
+ (SPADCALL
+ MOST-POSITIVE-LONG-FLOAT
+ (|getShellEntry| $ 27)))
+ 1)
+ (SPADCALL MOST-POSITIVE-LONG-FLOAT
+ (|getShellEntry| $ 28)))
+ |DFLOAT;manexp|)
+ (GO #0#))))
+ (LETT |me| (MANEXP |x|) |DFLOAT;manexp|)
+ (LETT |two53|
+ (EXPT (FLOAT-RADIX 0.0)
+ (FLOAT-DIGITS 0.0))
+ |DFLOAT;manexp|)
+ (EXIT (CONS (* |s|
+ (FIX (* |two53| (QCAR |me|))))
+ (- (QCDR |me|) (FLOAT-DIGITS 0.0))))))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |DFLOAT;rationalApproximation;$2NniF;84| (|f| |d| |b| $)
+ (PROG (|#G103| |nu| |ex| BASE #0=#:G1523 |de| |tol| |#G104| |q| |r|
+ |p2| |q2| #1=#:G1541 |#G105| |#G106| |p0| |p1| |#G107|
+ |#G108| |q0| |q1| |#G109| |#G110| |s| |t| #2=#:G1539)
+ (RETURN
+ (SEQ (EXIT (SEQ (PROGN
+ (LETT |#G103| (|DFLOAT;manexp| |f| $)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |nu| (QCAR |#G103|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |ex| (QCDR |#G103|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ |#G103|)
+ (LETT BASE (FLOAT-RADIX 0.0)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (EXIT (COND
+ ((< |ex| 0)
+ (SEQ (LETT |de|
+ (EXPT BASE
+ (PROG1
+ (LETT #0# (- |ex|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#)))
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (EXIT
+ (COND
+ ((< |b| 2)
+ (|error| "base must be > 1"))
+ ('T
+ (SEQ
+ (LETT |tol| (EXPT |b| |d|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |s| |nu|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |t| |de|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |p0| 0
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |p1| 1
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |q0| 1
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |q1| 0
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (EXIT
+ (SEQ G190 NIL
+ (SEQ
+ (PROGN
+ (LETT |#G104|
+ (DIVIDE2 |s| |t|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |q| (QCAR |#G104|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |r| (QCDR |#G104|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ |#G104|)
+ (LETT |p2|
+ (+ (* |q| |p1|) |p0|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |q2|
+ (+ (* |q| |q1|) |q0|)
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (COND
+ ((OR (EQL |r| 0)
+ (<
+ (SPADCALL |tol|
+ (ABS
+ (- (* |nu| |q2|)
+ (* |de| |p2|)))
+ (|getShellEntry| $
+ 120))
+ (* |de| (ABS |p2|))))
+ (EXIT
+ (PROGN
+ (LETT #1#
+ (SPADCALL |p2| |q2|
+ (|getShellEntry| $
+ 119))
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (GO #1#)))))
+ (PROGN
+ (LETT |#G105| |p1|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |#G106| |p2|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |p0| |#G105|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |p1| |#G106|
+ |DFLOAT;rationalApproximation;$2NniF;84|))
+ (PROGN
+ (LETT |#G107| |q1|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |#G108| |q2|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |q0| |#G107|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |q1| |#G108|
+ |DFLOAT;rationalApproximation;$2NniF;84|))
+ (EXIT
+ (PROGN
+ (LETT |#G109| |t|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |#G110| |r|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |s| |#G109|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (LETT |t| |#G110|
+ |DFLOAT;rationalApproximation;$2NniF;84|))))
+ NIL (GO G190) G191
+ (EXIT NIL)))))))))
+ ('T
+ (SPADCALL
+ (* |nu|
+ (EXPT BASE
+ (PROG1
+ (LETT #2# |ex|
+ |DFLOAT;rationalApproximation;$2NniF;84|)
+ (|check-subtype| (>= #2# 0)
+ '(|NonNegativeInteger|) #2#))))
+ (|getShellEntry| $ 121)))))))
+ #1# (EXIT #1#)))))
+
+(DEFUN |DFLOAT;**;$F$;85| (|x| |r| $)
+ (PROG (|n| |d| #0=#:G1550)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((ZEROP |x|)
+ (COND
+ ((SPADCALL |r| (|getShellEntry| $ 122))
+ (|error| "0**0 is undefined"))
+ ((SPADCALL |r| (|getShellEntry| $ 123))
+ (|error| "division by 0"))
+ ('T 0.0)))
+ ((OR (SPADCALL |r| (|getShellEntry| $ 122))
+ (= |x| 1.0))
+ 1.0)
+ ('T
+ (COND
+ ((SPADCALL |r| (|spadConstant| $ 124)
+ (|getShellEntry| $ 125))
+ |x|)
+ ('T
+ (SEQ (LETT |n|
+ (SPADCALL |r|
+ (|getShellEntry| $ 126))
+ |DFLOAT;**;$F$;85|)
+ (LETT |d|
+ (SPADCALL |r|
+ (|getShellEntry| $ 127))
+ |DFLOAT;**;$F$;85|)
+ (EXIT (COND
+ ((MINUSP |x|)
+ (COND
+ ((ODDP |d|)
+ (COND
+ ((ODDP |n|)
+ (PROGN
+ (LETT #0#
+ (-
+ (SPADCALL (- |x|) |r|
+ (|getShellEntry| $ 128)))
+ |DFLOAT;**;$F$;85|)
+ (GO #0#)))
+ ('T
+ (PROGN
+ (LETT #0#
+ (SPADCALL (- |x|) |r|
+ (|getShellEntry| $ 128))
+ |DFLOAT;**;$F$;85|)
+ (GO #0#)))))
+ ('T (|error| "negative root"))))
+ ((EQL |d| 2)
+ (EXPT
+ (SPADCALL |x|
+ (|getShellEntry| $ 56))
+ |n|))
+ ('T
+ (SPADCALL |x|
+ (/
+ (FLOAT |n|
+ MOST-POSITIVE-LONG-FLOAT)
+ (FLOAT |d|
+ MOST-POSITIVE-LONG-FLOAT))
+ (|getShellEntry| $ 59)))))))))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |DoubleFloat| ()
+ (PROG ()
+ (RETURN
+ (PROG (#0=#:G1563)
+ (RETURN
+ (COND
+ ((LETT #0# (HGET |$ConstructorCache| '|DoubleFloat|)
+ |DoubleFloat|)
+ (|CDRwithIncrement| (CDAR #0#)))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (CDDAR (HPUT |$ConstructorCache| '|DoubleFloat|
+ (LIST
+ (CONS NIL
+ (CONS 1 (|DoubleFloat;|))))))
+ (LETT #0# T |DoubleFloat|))
+ (COND
+ ((NOT #0#) (HREM |$ConstructorCache| '|DoubleFloat|)))))))))))
+
+(DEFUN |DoubleFloat;| ()
+ (PROG (|dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| '(|DoubleFloat|) . #0=(|DoubleFloat|))
+ (LETT $ (|newShell| 142) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|haddProp| |$ConstructorCache| '|DoubleFloat| NIL (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 "~G")
+ $))))
+
+(MAKEPROP '|DoubleFloat| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL '|format| (|String|)
+ |DFLOAT;doubleFloatFormat;2S;1| (|OpenMathEncoding|)
+ (0 . |OMencodingXML|) (|OpenMathDevice|)
+ (4 . |OMopenString|) (|Void|) (10 . |OMputObject|)
+ (|DoubleFloat|) (15 . |OMputFloat|)
+ (21 . |OMputEndObject|) (26 . |OMclose|)
+ |DFLOAT;OMwrite;$S;2| (|Boolean|) |DFLOAT;OMwrite;$BS;3|
+ |DFLOAT;OMwrite;Omd$V;4| |DFLOAT;OMwrite;Omd$BV;5|
+ (|PositiveInteger|) |DFLOAT;base;Pi;7| (|Integer|)
+ |DFLOAT;mantissa;$I;8| |DFLOAT;exponent;$I;9|
+ |DFLOAT;precision;Pi;10| |DFLOAT;log2;2$;38| (31 . *)
+ |DFLOAT;bits;Pi;11| |DFLOAT;max;$;12| |DFLOAT;min;$;13|
+ |DFLOAT;order;$I;14|
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |DFLOAT;Zero;$;15|) $))
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |DFLOAT;One;$;16|) $))
+ |DFLOAT;exp1;$;17| |DFLOAT;pi;$;18| (|OutputForm|)
+ (37 . |outputForm|) |DFLOAT;coerce;$Of;19| (|InputForm|)
+ (42 . |convert|) |DFLOAT;convert;$If;20| |DFLOAT;<;2$B;21|
+ |DFLOAT;-;2$;22| |DFLOAT;+;3$;23| |DFLOAT;-;3$;24|
+ |DFLOAT;*;3$;25| |DFLOAT;*;I2$;26| |DFLOAT;max;3$;27|
+ |DFLOAT;min;3$;28| |DFLOAT;=;2$B;29| |DFLOAT;/;$I$;30|
+ |DFLOAT;sqrt;2$;31| |DFLOAT;log10;2$;32|
+ |DFLOAT;**;$I$;33| |DFLOAT;**;3$;34| |DFLOAT;coerce;I$;35|
+ |DFLOAT;exp;2$;36| |DFLOAT;log;2$;37| |DFLOAT;sin;2$;39|
+ |DFLOAT;cos;2$;40| |DFLOAT;tan;2$;41| |DFLOAT;cot;2$;42|
+ |DFLOAT;sec;2$;43| |DFLOAT;csc;2$;44| |DFLOAT;asin;2$;45|
+ |DFLOAT;acos;2$;46| |DFLOAT;atan;2$;47|
+ |DFLOAT;acsc;2$;48| |DFLOAT;acot;2$;49|
+ |DFLOAT;asec;2$;50| |DFLOAT;sinh;2$;51|
+ |DFLOAT;cosh;2$;52| |DFLOAT;tanh;2$;53|
+ |DFLOAT;csch;2$;54| |DFLOAT;coth;2$;55|
+ |DFLOAT;sech;2$;56| |DFLOAT;asinh;2$;57|
+ |DFLOAT;acosh;2$;58| |DFLOAT;atanh;2$;59|
+ |DFLOAT;acsch;2$;60| |DFLOAT;acoth;2$;61|
+ |DFLOAT;asech;2$;62| |DFLOAT;/;3$;63|
+ |DFLOAT;negative?;$B;64| |DFLOAT;zero?;$B;65|
+ |DFLOAT;hash;$I;66| (|Union| $ '"failed")
+ |DFLOAT;recip;$U;67| |DFLOAT;differentiate;2$;68|
+ (|DoubleFloatSpecialFunctions|) (47 . |Gamma|)
+ |DFLOAT;Gamma;2$;69| (52 . |Beta|) |DFLOAT;Beta;3$;70|
+ |DFLOAT;wholePart;$I;71| |DFLOAT;float;2IPi$;72|
+ |DFLOAT;convert;$Df;73| (|Float|) (58 . |convert|)
+ |DFLOAT;convert;$F;74| (|Fraction| 26)
+ (|NonNegativeInteger|)
+ |DFLOAT;rationalApproximation;$2NniF;84|
+ |DFLOAT;rationalApproximation;$NniF;75|
+ |DFLOAT;atan;3$;76| |DFLOAT;retract;$F;77|
+ (|Union| 105 '"failed") |DFLOAT;retractIfCan;$U;78|
+ |DFLOAT;retract;$I;79| (|Union| 26 '"failed")
+ |DFLOAT;retractIfCan;$U;80| |DFLOAT;sign;$I;81|
+ |DFLOAT;abs;2$;82| (63 . |Zero|) (67 . /) (73 . *)
+ (79 . |coerce|) (84 . |zero?|) (89 . |negative?|)
+ (94 . |One|) (98 . =) (104 . |numer|) (109 . |denom|)
+ |DFLOAT;**;$F$;85| (|PatternMatchResult| 102 $)
+ (|Pattern| 102) (|Factored| $) (|List| $)
+ (|Union| 132 '"failed")
+ (|Record| (|:| |coef1| $) (|:| |coef2| $)
+ (|:| |generator| $))
+ (|Record| (|:| |coef1| $) (|:| |coef2| $))
+ (|Union| 135 '"failed")
+ (|Record| (|:| |quotient| $) (|:| |remainder| $))
+ (|Record| (|:| |coef| 132) (|:| |generator| $))
+ (|SparseUnivariatePolynomial| $)
+ (|Record| (|:| |unit| $) (|:| |canonical| $)
+ (|:| |associate| $))
+ (|SingleInteger|))
+ '#(~= 114 |zero?| 120 |wholePart| 125 |unitNormal| 130
+ |unitCanonical| 135 |unit?| 140 |truncate| 145 |tanh| 150
+ |tan| 155 |subtractIfCan| 160 |squareFreePart| 166
+ |squareFree| 171 |sqrt| 176 |sizeLess?| 181 |sinh| 187
+ |sin| 192 |sign| 197 |sech| 202 |sec| 207 |sample| 212
+ |round| 216 |retractIfCan| 221 |retract| 231 |rem| 241
+ |recip| 247 |rationalApproximation| 252 |quo| 265
+ |principalIdeal| 271 |prime?| 276 |precision| 281
+ |positive?| 285 |pi| 290 |patternMatch| 294 |order| 301
+ |one?| 306 |nthRoot| 311 |norm| 317 |negative?| 322
+ |multiEuclidean| 327 |min| 333 |max| 343 |mantissa| 353
+ |log2| 358 |log10| 363 |log| 368 |lcm| 373 |latex| 384
+ |inv| 389 |hash| 394 |gcdPolynomial| 404 |gcd| 410
+ |fractionPart| 421 |floor| 426 |float| 431 |factor| 444
+ |extendedEuclidean| 449 |exquo| 462 |expressIdealMember|
+ 468 |exponent| 474 |exp1| 479 |exp| 483 |euclideanSize|
+ 488 |doubleFloatFormat| 493 |divide| 498 |digits| 504
+ |differentiate| 508 |csch| 519 |csc| 524 |coth| 529 |cot|
+ 534 |cosh| 539 |cos| 544 |convert| 549 |coerce| 569
+ |characteristic| 599 |ceiling| 603 |bits| 608 |base| 612
+ |atanh| 616 |atan| 621 |associates?| 632 |asinh| 638
+ |asin| 643 |asech| 648 |asec| 653 |acsch| 658 |acsc| 663
+ |acoth| 668 |acot| 673 |acosh| 678 |acos| 683 |abs| 688 ^
+ 693 |Zero| 711 |One| 715 |OMwrite| 719 |Gamma| 743 D 748
+ |Beta| 759 >= 765 > 771 = 777 <= 783 < 789 / 795 - 807 +
+ 818 ** 824 * 854)
+ '((|approximate| . 0) (|canonicalsClosed| . 0)
+ (|canonicalUnitNormal| . 0) (|noZeroDivisors| . 0)
+ ((|commutative| "*") . 0) (|rightUnitary| . 0)
+ (|leftUnitary| . 0) (|unitsKnown| . 0))
+ (CONS (|makeByteWordVec2| 1
+ '(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0))
+ (CONS '#(|FloatingPointSystem&| |RealNumberSystem&|
+ |Field&| |EuclideanDomain&| NIL
+ |UniqueFactorizationDomain&| |GcdDomain&|
+ |DivisionRing&| |IntegralDomain&| |Algebra&|
+ |Algebra&| |DifferentialRing&| NIL
+ |OrderedRing&| |Module&| NIL NIL |Module&| NIL
+ NIL NIL |Ring&| NIL NIL NIL NIL NIL NIL NIL
+ |AbelianGroup&| NIL NIL |AbelianMonoid&|
+ |Monoid&| NIL |OrderedSet&|
+ |AbelianSemiGroup&| |SemiGroup&|
+ |TranscendentalFunctionCategory&| NIL
+ |SetCategory&| NIL
+ |ElementaryFunctionCategory&| NIL
+ |HyperbolicFunctionCategory&|
+ |ArcTrigonometricFunctionCategory&|
+ |TrigonometricFunctionCategory&| NIL NIL
+ |RadicalCategory&| |RetractableTo&|
+ |RetractableTo&| NIL NIL |BasicType&| NIL)
+ (CONS '#((|FloatingPointSystem|)
+ (|RealNumberSystem|) (|Field|)
+ (|EuclideanDomain|)
+ (|PrincipalIdealDomain|)
+ (|UniqueFactorizationDomain|)
+ (|GcdDomain|) (|DivisionRing|)
+ (|IntegralDomain|) (|Algebra| 105)
+ (|Algebra| $$) (|DifferentialRing|)
+ (|CharacteristicZero|) (|OrderedRing|)
+ (|Module| 105) (|EntireRing|)
+ (|CommutativeRing|) (|Module| $$)
+ (|OrderedAbelianGroup|)
+ (|BiModule| 105 105) (|BiModule| $$ $$)
+ (|Ring|)
+ (|OrderedCancellationAbelianMonoid|)
+ (|RightModule| 105) (|LeftModule| 105)
+ (|LeftModule| $$) (|Rng|)
+ (|RightModule| $$)
+ (|OrderedAbelianMonoid|)
+ (|AbelianGroup|)
+ (|OrderedAbelianSemiGroup|)
+ (|CancellationAbelianMonoid|)
+ (|AbelianMonoid|) (|Monoid|)
+ (|PatternMatchable| 102) (|OrderedSet|)
+ (|AbelianSemiGroup|) (|SemiGroup|)
+ (|TranscendentalFunctionCategory|)
+ (|RealConstant|) (|SetCategory|)
+ (|ConvertibleTo| 43)
+ (|ElementaryFunctionCategory|)
+ (|ArcHyperbolicFunctionCategory|)
+ (|HyperbolicFunctionCategory|)
+ (|ArcTrigonometricFunctionCategory|)
+ (|TrigonometricFunctionCategory|)
+ (|OpenMath|) (|ConvertibleTo| 130)
+ (|RadicalCategory|)
+ (|RetractableTo| 105)
+ (|RetractableTo| 26)
+ (|ConvertibleTo| 102)
+ (|ConvertibleTo| 15) (|BasicType|)
+ (|CoercibleTo| 40))
+ (|makeByteWordVec2| 141
+ '(0 9 0 10 2 11 0 7 9 12 1 11 13 0 14 2
+ 11 13 0 15 16 1 11 13 0 17 1 11 13 0
+ 18 2 0 0 24 0 31 1 40 0 15 41 1 43 0
+ 15 44 1 94 15 15 95 2 94 15 15 15 97
+ 1 102 0 15 103 0 105 0 118 2 105 0 26
+ 26 119 2 26 0 106 0 120 1 105 0 26
+ 121 1 105 20 0 122 1 105 20 0 123 0
+ 105 0 124 2 105 20 0 0 125 1 105 26 0
+ 126 1 105 26 0 127 2 0 20 0 0 1 1 0
+ 20 0 89 1 0 26 0 99 1 0 140 0 1 1 0 0
+ 0 1 1 0 20 0 1 1 0 0 0 1 1 0 0 0 77 1
+ 0 0 0 65 2 0 91 0 0 1 1 0 0 0 1 1 0
+ 131 0 1 1 0 0 0 56 2 0 20 0 0 1 1 0 0
+ 0 75 1 0 0 0 63 1 0 26 0 116 1 0 0 0
+ 80 1 0 0 0 67 0 0 0 1 1 0 0 0 1 1 0
+ 111 0 112 1 0 114 0 115 1 0 105 0 110
+ 1 0 26 0 113 2 0 0 0 0 1 1 0 91 0 92
+ 2 0 105 0 106 108 3 0 105 0 106 106
+ 107 2 0 0 0 0 1 1 0 138 132 1 1 0 20
+ 0 1 0 0 24 29 1 0 20 0 1 0 0 0 39 3 0
+ 129 0 130 129 1 1 0 26 0 35 1 0 20 0
+ 1 2 0 0 0 26 1 1 0 0 0 1 1 0 20 0 88
+ 2 0 133 132 0 1 0 0 0 34 2 0 0 0 0 53
+ 0 0 0 33 2 0 0 0 0 52 1 0 26 0 27 1 0
+ 0 0 30 1 0 0 0 57 1 0 0 0 62 1 0 0
+ 132 1 2 0 0 0 0 1 1 0 7 0 1 1 0 0 0 1
+ 1 0 26 0 90 1 0 141 0 1 2 0 139 139
+ 139 1 1 0 0 132 1 2 0 0 0 0 1 1 0 0 0
+ 1 1 0 0 0 1 3 0 0 26 26 24 100 2 0 0
+ 26 26 1 1 0 131 0 1 2 0 134 0 0 1 3 0
+ 136 0 0 0 1 2 0 91 0 0 1 2 0 133 132
+ 0 1 1 0 26 0 28 0 0 0 38 1 0 0 0 61 1
+ 0 106 0 1 1 0 7 7 8 2 0 137 0 0 1 0 0
+ 24 1 1 0 0 0 93 2 0 0 0 106 1 1 0 0 0
+ 78 1 0 0 0 68 1 0 0 0 79 1 0 0 0 66 1
+ 0 0 0 76 1 0 0 0 64 1 0 43 0 45 1 0
+ 130 0 1 1 0 102 0 104 1 0 15 0 101 1
+ 0 0 105 1 1 0 0 26 60 1 0 0 105 1 1 0
+ 0 26 60 1 0 0 0 1 1 0 40 0 42 0 0 106
+ 1 1 0 0 0 1 0 0 24 32 0 0 24 25 1 0 0
+ 0 83 2 0 0 0 0 109 1 0 0 0 71 2 0 20
+ 0 0 1 1 0 0 0 81 1 0 0 0 69 1 0 0 0
+ 86 1 0 0 0 74 1 0 0 0 84 1 0 0 0 72 1
+ 0 0 0 85 1 0 0 0 73 1 0 0 0 82 1 0 0
+ 0 70 1 0 0 0 117 2 0 0 0 26 1 2 0 0 0
+ 106 1 2 0 0 0 24 1 0 0 0 36 0 0 0 37
+ 3 0 13 11 0 20 23 2 0 7 0 20 21 2 0
+ 13 11 0 22 1 0 7 0 19 1 0 0 0 96 1 0
+ 0 0 1 2 0 0 0 106 1 2 0 0 0 0 98 2 0
+ 20 0 0 1 2 0 20 0 0 1 2 0 20 0 0 54 2
+ 0 20 0 0 1 2 0 20 0 0 46 2 0 0 0 26
+ 55 2 0 0 0 0 87 2 0 0 0 0 49 1 0 0 0
+ 47 2 0 0 0 0 48 2 0 0 0 0 59 2 0 0 0
+ 105 128 2 0 0 0 26 58 2 0 0 0 106 1 2
+ 0 0 0 24 1 2 0 0 0 105 1 2 0 0 105 0
+ 1 2 0 0 0 0 50 2 0 0 26 0 51 2 0 0
+ 106 0 1 2 0 0 24 0 31)))))
+ '|lookupComplete|))
+
+(MAKEPROP '|DoubleFloat| 'NILADIC T)
diff --git a/src/algebra/strap/DIFRING-.lsp b/src/algebra/strap/DIFRING-.lsp
new file mode 100644
index 00000000..1fb59bfb
--- /dev/null
+++ b/src/algebra/strap/DIFRING-.lsp
@@ -0,0 +1,46 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |DIFRING-;D;2S;1| (|r| $) (SPADCALL |r| (QREFELT $ 7)))
+
+(DEFUN |DIFRING-;differentiate;SNniS;2| (|r| |n| $)
+ (PROG (|i|)
+ (RETURN
+ (SEQ (SEQ (LETT |i| 1 |DIFRING-;differentiate;SNniS;2|) G190
+ (COND ((QSGREATERP |i| |n|) (GO G191)))
+ (SEQ (EXIT (LETT |r| (SPADCALL |r| (QREFELT $ 7))
+ |DIFRING-;differentiate;SNniS;2|)))
+ (LETT |i| (QSADD1 |i|)
+ |DIFRING-;differentiate;SNniS;2|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |r|)))))
+
+(DEFUN |DIFRING-;D;SNniS;3| (|r| |n| $)
+ (SPADCALL |r| |n| (QREFELT $ 11)))
+
+(DEFUN |DifferentialRing&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|DifferentialRing&|))
+ (LETT |dv$| (LIST '|DifferentialRing&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 13) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|DifferentialRing&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|)
+ (0 . |differentiate|) |DIFRING-;D;2S;1|
+ (|NonNegativeInteger|) |DIFRING-;differentiate;SNniS;2|
+ (5 . |differentiate|) |DIFRING-;D;SNniS;3|)
+ '#(|differentiate| 11 D 17) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 12
+ '(1 6 0 0 7 2 6 0 0 9 11 2 0 0 0 9 10 2
+ 0 0 0 9 12 1 0 0 0 8)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/DIFRING.lsp b/src/algebra/strap/DIFRING.lsp
new file mode 100644
index 00000000..3c823149
--- /dev/null
+++ b/src/algebra/strap/DIFRING.lsp
@@ -0,0 +1,28 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |DifferentialRing;AL| 'NIL)
+
+(DEFUN |DifferentialRing| ()
+ (LET (#:G1387)
+ (COND
+ (|DifferentialRing;AL|)
+ (T (SETQ |DifferentialRing;AL| (|DifferentialRing;|))))))
+
+(DEFUN |DifferentialRing;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|Ring|)
+ (|mkCategory| '|domain|
+ '(((|differentiate| ($ $)) T)
+ ((D ($ $)) T)
+ ((|differentiate|
+ ($ $ (|NonNegativeInteger|)))
+ T)
+ ((D ($ $ (|NonNegativeInteger|))) T))
+ NIL '((|NonNegativeInteger|)) NIL))
+ |DifferentialRing|)
+ (SETELT #0# 0 '(|DifferentialRing|))))))
+
+(MAKEPROP '|DifferentialRing| 'NILADIC T)
diff --git a/src/algebra/strap/DIVRING-.lsp b/src/algebra/strap/DIVRING-.lsp
new file mode 100644
index 00000000..e3efca81
--- /dev/null
+++ b/src/algebra/strap/DIVRING-.lsp
@@ -0,0 +1,56 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |DIVRING-;^;SIS;1| (|x| |n| $)
+ (SPADCALL |x| |n| (QREFELT $ 8)))
+
+(DEFUN |DIVRING-;**;SIS;2| (|x| |n| $)
+ (COND
+ ((ZEROP |n|) (|spadConstant| $ 10))
+ ((SPADCALL |x| (QREFELT $ 12))
+ (COND ((< |n| 0) (|error| "division by zero")) ('T |x|)))
+ ((< |n| 0)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 14)) (- |n|) (QREFELT $ 17)))
+ ('T (SPADCALL |x| |n| (QREFELT $ 17)))))
+
+(DEFUN |DIVRING-;*;F2S;3| (|q| |x| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |q| (QREFELT $ 20))
+ (SPADCALL
+ (SPADCALL (SPADCALL |q| (QREFELT $ 21)) (QREFELT $ 22))
+ (QREFELT $ 14))
+ (QREFELT $ 23))
+ |x| (QREFELT $ 24)))
+
+(DEFUN |DivisionRing&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|DivisionRing&|))
+ (LETT |dv$| (LIST '|DivisionRing&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 27) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|DivisionRing&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|Integer|)
+ (0 . **) |DIVRING-;^;SIS;1| (6 . |One|) (|Boolean|)
+ (10 . |zero?|) (15 . |Zero|) (19 . |inv|)
+ (|PositiveInteger|) (|RepeatedSquaring| 6) (24 . |expt|)
+ |DIVRING-;**;SIS;2| (|Fraction| 7) (30 . |numer|)
+ (35 . |denom|) (40 . |coerce|) (45 . *) (51 . *)
+ |DIVRING-;*;F2S;3| (|NonNegativeInteger|))
+ '#(^ 57 ** 63 * 69) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 25
+ '(2 6 0 0 7 8 0 6 0 10 1 6 11 0 12 0 6
+ 0 13 1 6 0 0 14 2 16 6 6 15 17 1 19 7
+ 0 20 1 19 7 0 21 1 6 0 7 22 2 6 0 7 0
+ 23 2 6 0 0 0 24 2 0 0 0 7 9 2 0 0 0 7
+ 18 2 0 0 19 0 25)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/DIVRING.lsp b/src/algebra/strap/DIVRING.lsp
new file mode 100644
index 00000000..2523c524
--- /dev/null
+++ b/src/algebra/strap/DIVRING.lsp
@@ -0,0 +1,28 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |DivisionRing;AL| 'NIL)
+
+(DEFUN |DivisionRing| ()
+ (LET (#:G1390)
+ (COND
+ (|DivisionRing;AL|)
+ (T (SETQ |DivisionRing;AL| (|DivisionRing;|))))))
+
+(DEFUN |DivisionRing;| ()
+ (PROG (#0=#:G1388)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(#1=#:G1387)
+ (LIST '(|Fraction| (|Integer|))))
+ (|Join| (|EntireRing|) (|Algebra| '#1#)
+ (|mkCategory| '|domain|
+ '(((** ($ $ (|Integer|))) T)
+ ((^ ($ $ (|Integer|))) T)
+ ((|inv| ($ $)) T))
+ NIL '((|Integer|)) NIL)))
+ |DivisionRing|)
+ (SETELT #0# 0 '(|DivisionRing|))))))
+
+(MAKEPROP '|DivisionRing| 'NILADIC T)
diff --git a/src/algebra/strap/ENTIRER.lsp b/src/algebra/strap/ENTIRER.lsp
new file mode 100644
index 00000000..1de80763
--- /dev/null
+++ b/src/algebra/strap/ENTIRER.lsp
@@ -0,0 +1,22 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |EntireRing;AL| 'NIL)
+
+(DEFUN |EntireRing| ()
+ (LET (#:G1387)
+ (COND
+ (|EntireRing;AL|)
+ (T (SETQ |EntireRing;AL| (|EntireRing;|))))))
+
+(DEFUN |EntireRing;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|Ring|) (|BiModule| '$ '$)
+ (|mkCategory| '|package| NIL
+ '((|noZeroDivisors| T)) 'NIL NIL))
+ |EntireRing|)
+ (SETELT #0# 0 '(|EntireRing|))))))
+
+(MAKEPROP '|EntireRing| 'NILADIC T)
diff --git a/src/algebra/strap/ES-.lsp b/src/algebra/strap/ES-.lsp
new file mode 100644
index 00000000..da5d43a9
--- /dev/null
+++ b/src/algebra/strap/ES-.lsp
@@ -0,0 +1,796 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |ES-;box;2S;1| (|x| $)
+ (SPADCALL (LIST |x|) (|getShellEntry| $ 16)))
+
+(DEFUN |ES-;paren;2S;2| (|x| $)
+ (SPADCALL (LIST |x|) (|getShellEntry| $ 18)))
+
+(DEFUN |ES-;belong?;BoB;3| (|op| $)
+ (COND
+ ((SPADCALL |op| (|getShellEntry| $ 13) (|getShellEntry| $ 21)) 'T)
+ ('T (SPADCALL |op| (|getShellEntry| $ 14) (|getShellEntry| $ 21)))))
+
+(DEFUN |ES-;listk| (|f| $)
+ (SPADCALL (|ES-;allKernels| |f| $) (|getShellEntry| $ 26)))
+
+(DEFUN |ES-;tower;SL;5| (|f| $)
+ (SPADCALL (|ES-;listk| |f| $) (|getShellEntry| $ 27)))
+
+(DEFUN |ES-;allk| (|l| $)
+ (PROG (#0=#:G1419 |f| #1=#:G1420)
+ (RETURN
+ (SEQ (SPADCALL (ELT $ 32)
+ (PROGN
+ (LETT #0# NIL |ES-;allk|)
+ (SEQ (LETT |f| NIL |ES-;allk|)
+ (LETT #1# |l| |ES-;allk|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |f| (CAR #1#) |ES-;allk|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS (|ES-;allKernels| |f| $)
+ #0#)
+ |ES-;allk|)))
+ (LETT #1# (CDR #1#) |ES-;allk|) (GO G190) G191
+ (EXIT (NREVERSE0 #0#))))
+ (SPADCALL NIL (|getShellEntry| $ 31))
+ (|getShellEntry| $ 35))))))
+
+(DEFUN |ES-;operators;SL;7| (|f| $)
+ (PROG (#0=#:G1423 |k| #1=#:G1424)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #0# NIL |ES-;operators;SL;7|)
+ (SEQ (LETT |k| NIL |ES-;operators;SL;7|)
+ (LETT #1# (|ES-;listk| |f| $) |ES-;operators;SL;7|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |k| (CAR #1#) |ES-;operators;SL;7|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |k|
+ (|getShellEntry| $ 36))
+ #0#)
+ |ES-;operators;SL;7|)))
+ (LETT #1# (CDR #1#) |ES-;operators;SL;7|) (GO G190)
+ G191 (EXIT (NREVERSE0 #0#))))))))
+
+(DEFUN |ES-;height;SNni;8| (|f| $)
+ (PROG (#0=#:G1429 |k| #1=#:G1430)
+ (RETURN
+ (SEQ (SPADCALL (ELT $ 42)
+ (PROGN
+ (LETT #0# NIL |ES-;height;SNni;8|)
+ (SEQ (LETT |k| NIL |ES-;height;SNni;8|)
+ (LETT #1# (SPADCALL |f| (|getShellEntry| $ 39))
+ |ES-;height;SNni;8|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |k| (CAR #1#) |ES-;height;SNni;8|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |k|
+ (|getShellEntry| $ 41))
+ #0#)
+ |ES-;height;SNni;8|)))
+ (LETT #1# (CDR #1#) |ES-;height;SNni;8|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ 0 (|getShellEntry| $ 45))))))
+
+(DEFUN |ES-;freeOf?;SSB;9| (|x| |s| $)
+ (PROG (#0=#:G1434 |k| #1=#:G1435)
+ (RETURN
+ (SEQ (SPADCALL
+ (SPADCALL |s|
+ (PROGN
+ (LETT #0# NIL |ES-;freeOf?;SSB;9|)
+ (SEQ (LETT |k| NIL |ES-;freeOf?;SSB;9|)
+ (LETT #1# (|ES-;listk| |x| $)
+ |ES-;freeOf?;SSB;9|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |k| (CAR #1#)
+ |ES-;freeOf?;SSB;9|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |k|
+ (|getShellEntry| $ 47))
+ #0#)
+ |ES-;freeOf?;SSB;9|)))
+ (LETT #1# (CDR #1#) |ES-;freeOf?;SSB;9|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 49))
+ (|getShellEntry| $ 50))))))
+
+(DEFUN |ES-;distribute;2S;10| (|x| $)
+ (PROG (#0=#:G1438 |k| #1=#:G1439)
+ (RETURN
+ (SEQ (|ES-;unwrap|
+ (PROGN
+ (LETT #0# NIL |ES-;distribute;2S;10|)
+ (SEQ (LETT |k| NIL |ES-;distribute;2S;10|)
+ (LETT #1# (|ES-;listk| |x| $)
+ |ES-;distribute;2S;10|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |k| (CAR #1#)
+ |ES-;distribute;2S;10|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((SPADCALL |k|
+ (|getShellEntry| $ 13)
+ (|getShellEntry| $ 52))
+ (LETT #0# (CONS |k| #0#)
+ |ES-;distribute;2S;10|)))))
+ (LETT #1# (CDR #1#) |ES-;distribute;2S;10|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ |x| $)))))
+
+(DEFUN |ES-;box;LS;11| (|l| $)
+ (SPADCALL (|getShellEntry| $ 14) |l| (|getShellEntry| $ 54)))
+
+(DEFUN |ES-;paren;LS;12| (|l| $)
+ (SPADCALL (|getShellEntry| $ 13) |l| (|getShellEntry| $ 54)))
+
+(DEFUN |ES-;freeOf?;2SB;13| (|x| |k| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |k| (|getShellEntry| $ 57))
+ (|ES-;listk| |x| $) (|getShellEntry| $ 58))
+ (|getShellEntry| $ 50)))
+
+(DEFUN |ES-;kernel;Bo2S;14| (|op| |arg| $)
+ (SPADCALL |op| (LIST |arg|) (|getShellEntry| $ 60)))
+
+(DEFUN |ES-;elt;Bo2S;15| (|op| |x| $)
+ (SPADCALL |op| (LIST |x|) (|getShellEntry| $ 54)))
+
+(DEFUN |ES-;elt;Bo3S;16| (|op| |x| |y| $)
+ (SPADCALL |op| (LIST |x| |y|) (|getShellEntry| $ 54)))
+
+(DEFUN |ES-;elt;Bo4S;17| (|op| |x| |y| |z| $)
+ (SPADCALL |op| (LIST |x| |y| |z|) (|getShellEntry| $ 54)))
+
+(DEFUN |ES-;elt;Bo5S;18| (|op| |x| |y| |z| |t| $)
+ (SPADCALL |op| (LIST |x| |y| |z| |t|) (|getShellEntry| $ 54)))
+
+(DEFUN |ES-;eval;SSMS;19| (|x| |s| |f| $)
+ (SPADCALL |x| (LIST |s|) (LIST |f|) (|getShellEntry| $ 68)))
+
+(DEFUN |ES-;eval;SBoMS;20| (|x| |s| |f| $)
+ (SPADCALL |x| (LIST (SPADCALL |s| (|getShellEntry| $ 70))) (LIST |f|)
+ (|getShellEntry| $ 68)))
+
+(DEFUN |ES-;eval;SSMS;21| (|x| |s| |f| $)
+ (SPADCALL |x| (LIST |s|)
+ (LIST (CONS #'|ES-;eval;SSMS;21!0| (VECTOR |f| $)))
+ (|getShellEntry| $ 68)))
+
+(DEFUN |ES-;eval;SSMS;21!0| (|#1| $$)
+ (SPADCALL (SPADCALL |#1| (|getShellEntry| (|getShellEntry| $$ 1) 73))
+ (|getShellEntry| $$ 0)))
+
+(DEFUN |ES-;eval;SBoMS;22| (|x| |s| |f| $)
+ (SPADCALL |x| (LIST |s|)
+ (LIST (CONS #'|ES-;eval;SBoMS;22!0| (VECTOR |f| $)))
+ (|getShellEntry| $ 76)))
+
+(DEFUN |ES-;eval;SBoMS;22!0| (|#1| $$)
+ (SPADCALL (SPADCALL |#1| (|getShellEntry| (|getShellEntry| $$ 1) 73))
+ (|getShellEntry| $$ 0)))
+
+(DEFUN |ES-;subst;SES;23| (|x| |e| $)
+ (SPADCALL |x| (LIST |e|) (|getShellEntry| $ 80)))
+
+(DEFUN |ES-;eval;SLLS;24| (|x| |ls| |lf| $)
+ (PROG (#0=#:G1459 |f| #1=#:G1460)
+ (RETURN
+ (SEQ (SPADCALL |x| |ls|
+ (PROGN
+ (LETT #0# NIL |ES-;eval;SLLS;24|)
+ (SEQ (LETT |f| NIL |ES-;eval;SLLS;24|)
+ (LETT #1# |lf| |ES-;eval;SLLS;24|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |f| (CAR #1#) |ES-;eval;SLLS;24|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (CONS #'|ES-;eval;SLLS;24!0|
+ (VECTOR |f| $))
+ #0#)
+ |ES-;eval;SLLS;24|)))
+ (LETT #1# (CDR #1#) |ES-;eval;SLLS;24|) (GO G190)
+ G191 (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 76))))))
+
+(DEFUN |ES-;eval;SLLS;24!0| (|#1| $$)
+ (SPADCALL (SPADCALL |#1| (|getShellEntry| (|getShellEntry| $$ 1) 73))
+ (|getShellEntry| $$ 0)))
+
+(DEFUN |ES-;eval;SLLS;25| (|x| |ls| |lf| $)
+ (PROG (#0=#:G1463 |f| #1=#:G1464)
+ (RETURN
+ (SEQ (SPADCALL |x| |ls|
+ (PROGN
+ (LETT #0# NIL |ES-;eval;SLLS;25|)
+ (SEQ (LETT |f| NIL |ES-;eval;SLLS;25|)
+ (LETT #1# |lf| |ES-;eval;SLLS;25|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |f| (CAR #1#) |ES-;eval;SLLS;25|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (CONS #'|ES-;eval;SLLS;25!0|
+ (VECTOR |f| $))
+ #0#)
+ |ES-;eval;SLLS;25|)))
+ (LETT #1# (CDR #1#) |ES-;eval;SLLS;25|) (GO G190)
+ G191 (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 68))))))
+
+(DEFUN |ES-;eval;SLLS;25!0| (|#1| $$)
+ (SPADCALL (SPADCALL |#1| (|getShellEntry| (|getShellEntry| $$ 1) 73))
+ (|getShellEntry| $$ 0)))
+
+(DEFUN |ES-;eval;SLLS;26| (|x| |ls| |lf| $)
+ (PROG (#0=#:G1468 |s| #1=#:G1469)
+ (RETURN
+ (SEQ (SPADCALL |x|
+ (PROGN
+ (LETT #0# NIL |ES-;eval;SLLS;26|)
+ (SEQ (LETT |s| NIL |ES-;eval;SLLS;26|)
+ (LETT #1# |ls| |ES-;eval;SLLS;26|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |s| (CAR #1#) |ES-;eval;SLLS;26|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |s|
+ (|getShellEntry| $ 70))
+ #0#)
+ |ES-;eval;SLLS;26|)))
+ (LETT #1# (CDR #1#) |ES-;eval;SLLS;26|) (GO G190)
+ G191 (EXIT (NREVERSE0 #0#))))
+ |lf| (|getShellEntry| $ 68))))))
+
+(DEFUN |ES-;map;MKS;27| (|fn| |k| $)
+ (PROG (#0=#:G1484 |x| #1=#:G1485 |l|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL
+ (LETT |l|
+ (PROGN
+ (LETT #0# NIL |ES-;map;MKS;27|)
+ (SEQ (LETT |x| NIL |ES-;map;MKS;27|)
+ (LETT #1#
+ (SPADCALL |k|
+ (|getShellEntry| $ 86))
+ |ES-;map;MKS;27|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |x| (CAR #1#)
+ |ES-;map;MKS;27|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT
+ (LETT #0#
+ (CONS (SPADCALL |x| |fn|) #0#)
+ |ES-;map;MKS;27|)))
+ (LETT #1# (CDR #1#) |ES-;map;MKS;27|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ |ES-;map;MKS;27|)
+ (SPADCALL |k| (|getShellEntry| $ 86))
+ (|getShellEntry| $ 87))
+ (SPADCALL |k| (|getShellEntry| $ 88)))
+ ('T
+ (SPADCALL (SPADCALL |k| (|getShellEntry| $ 36)) |l|
+ (|getShellEntry| $ 54))))))))
+
+(DEFUN |ES-;operator;2Bo;28| (|op| $)
+ (COND
+ ((SPADCALL |op| (SPADCALL "%paren" (|getShellEntry| $ 9))
+ (|getShellEntry| $ 90))
+ (|getShellEntry| $ 13))
+ ((SPADCALL |op| (SPADCALL "%box" (|getShellEntry| $ 9))
+ (|getShellEntry| $ 90))
+ (|getShellEntry| $ 14))
+ ('T (|error| "Unknown operator"))))
+
+(DEFUN |ES-;mainKernel;SU;29| (|x| $)
+ (PROG (|l| |kk| #0=#:G1501 |n| |k|)
+ (RETURN
+ (SEQ (COND
+ ((NULL (LETT |l| (SPADCALL |x| (|getShellEntry| $ 39))
+ |ES-;mainKernel;SU;29|))
+ (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |n|
+ (SPADCALL
+ (LETT |k| (|SPADfirst| |l|)
+ |ES-;mainKernel;SU;29|)
+ (|getShellEntry| $ 41))
+ |ES-;mainKernel;SU;29|)
+ (SEQ (LETT |kk| NIL |ES-;mainKernel;SU;29|)
+ (LETT #0# (CDR |l|) |ES-;mainKernel;SU;29|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |kk| (CAR #0#)
+ |ES-;mainKernel;SU;29|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((< |n|
+ (SPADCALL |kk|
+ (|getShellEntry| $ 41)))
+ (SEQ
+ (LETT |n|
+ (SPADCALL |kk|
+ (|getShellEntry| $ 41))
+ |ES-;mainKernel;SU;29|)
+ (EXIT
+ (LETT |k| |kk|
+ |ES-;mainKernel;SU;29|)))))))
+ (LETT #0# (CDR #0#) |ES-;mainKernel;SU;29|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (CONS 0 |k|)))))))))
+
+(DEFUN |ES-;allKernels| (|f| $)
+ (PROG (|l| |k| #0=#:G1514 |u| |s0| |n| |arg| |t| |s|)
+ (RETURN
+ (SEQ (LETT |s|
+ (SPADCALL
+ (LETT |l| (SPADCALL |f| (|getShellEntry| $ 39))
+ |ES-;allKernels|)
+ (|getShellEntry| $ 31))
+ |ES-;allKernels|)
+ (SEQ (LETT |k| NIL |ES-;allKernels|)
+ (LETT #0# |l| |ES-;allKernels|) G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |k| (CAR #0#) |ES-;allKernels|)
+ NIL))
+ (GO G191)))
+ (SEQ (LETT |t|
+ (SEQ (LETT |u|
+ (SPADCALL
+ (SPADCALL |k|
+ (|getShellEntry| $ 36))
+ "%dummyVar"
+ (|getShellEntry| $ 96))
+ |ES-;allKernels|)
+ (EXIT (COND
+ ((QEQCAR |u| 0)
+ (SEQ
+ (LETT |arg|
+ (SPADCALL |k|
+ (|getShellEntry| $ 86))
+ |ES-;allKernels|)
+ (LETT |s0|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |arg|
+ (|getShellEntry| $ 97))
+ (|getShellEntry| $ 57))
+ (|ES-;allKernels|
+ (|SPADfirst| |arg|) $)
+ (|getShellEntry| $ 98))
+ |ES-;allKernels|)
+ (LETT |arg| (CDR (CDR |arg|))
+ |ES-;allKernels|)
+ (LETT |n| (QCDR |u|)
+ |ES-;allKernels|)
+ (COND
+ ((< 1 |n|)
+ (LETT |arg| (CDR |arg|)
+ |ES-;allKernels|)))
+ (EXIT
+ (SPADCALL |s0|
+ (|ES-;allk| |arg| $)
+ (|getShellEntry| $ 32)))))
+ ('T
+ (|ES-;allk|
+ (SPADCALL |k|
+ (|getShellEntry| $ 86))
+ $)))))
+ |ES-;allKernels|)
+ (EXIT (LETT |s|
+ (SPADCALL |s| |t|
+ (|getShellEntry| $ 32))
+ |ES-;allKernels|)))
+ (LETT #0# (CDR #0#) |ES-;allKernels|) (GO G190) G191
+ (EXIT NIL))
+ (EXIT |s|)))))
+
+(DEFUN |ES-;kernel;BoLS;31| (|op| |args| $)
+ (COND
+ ((NULL (SPADCALL |op| (|getShellEntry| $ 99)))
+ (|error| "Unknown operator"))
+ ('T (|ES-;okkernel| |op| |args| $))))
+
+(DEFUN |ES-;okkernel| (|op| |l| $)
+ (PROG (#0=#:G1521 |f| #1=#:G1522)
+ (RETURN
+ (SEQ (SPADCALL
+ (SPADCALL |op| |l|
+ (+ 1
+ (SPADCALL (ELT $ 42)
+ (PROGN
+ (LETT #0# NIL |ES-;okkernel|)
+ (SEQ (LETT |f| NIL |ES-;okkernel|)
+ (LETT #1# |l| |ES-;okkernel|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |f| (CAR #1#)
+ |ES-;okkernel|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT
+ (LETT #0#
+ (CONS
+ (SPADCALL |f|
+ (|getShellEntry| $ 101))
+ #0#)
+ |ES-;okkernel|)))
+ (LETT #1# (CDR #1#) |ES-;okkernel|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ 0 (|getShellEntry| $ 45)))
+ (|getShellEntry| $ 102))
+ (|getShellEntry| $ 88))))))
+
+(DEFUN |ES-;elt;BoLS;33| (|op| |args| $)
+ (PROG (|u| #0=#:G1538 |v|)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((NULL (SPADCALL |op| (|getShellEntry| $ 99)))
+ (|error| "Unknown operator"))
+ ('T
+ (SEQ (SEQ (LETT |u|
+ (SPADCALL |op|
+ (|getShellEntry| $ 104))
+ |ES-;elt;BoLS;33|)
+ (EXIT (COND
+ ((QEQCAR |u| 0)
+ (COND
+ ((SPADCALL (LENGTH |args|)
+ (QCDR |u|)
+ (|getShellEntry| $ 105))
+ (PROGN
+ (LETT #0#
+ (|error|
+ "Wrong number of arguments")
+ |ES-;elt;BoLS;33|)
+ (GO #0#))))))))
+ (LETT |v|
+ (SPADCALL |op| |args|
+ (|getShellEntry| $ 108))
+ |ES-;elt;BoLS;33|)
+ (EXIT (COND
+ ((QEQCAR |v| 0) (QCDR |v|))
+ ('T (|ES-;okkernel| |op| |args| $))))))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |ES-;retract;SK;34| (|f| $)
+ (PROG (|k|)
+ (RETURN
+ (SEQ (LETT |k| (SPADCALL |f| (|getShellEntry| $ 110))
+ |ES-;retract;SK;34|)
+ (EXIT (COND
+ ((OR (QEQCAR |k| 1)
+ (SPADCALL
+ (SPADCALL (QCDR |k|)
+ (|getShellEntry| $ 88))
+ |f| (|getShellEntry| $ 111)))
+ (|error| "not a kernel"))
+ ('T (QCDR |k|))))))))
+
+(DEFUN |ES-;retractIfCan;SU;35| (|f| $)
+ (PROG (|k|)
+ (RETURN
+ (SEQ (LETT |k| (SPADCALL |f| (|getShellEntry| $ 110))
+ |ES-;retractIfCan;SU;35|)
+ (EXIT (COND
+ ((OR (QEQCAR |k| 1)
+ (SPADCALL
+ (SPADCALL (QCDR |k|)
+ (|getShellEntry| $ 88))
+ |f| (|getShellEntry| $ 111)))
+ (CONS 1 "failed"))
+ ('T |k|)))))))
+
+(DEFUN |ES-;is?;SSB;36| (|f| |s| $)
+ (PROG (|k|)
+ (RETURN
+ (SEQ (LETT |k| (SPADCALL |f| (|getShellEntry| $ 114))
+ |ES-;is?;SSB;36|)
+ (EXIT (COND
+ ((QEQCAR |k| 1) 'NIL)
+ ('T
+ (SPADCALL (QCDR |k|) |s| (|getShellEntry| $ 115)))))))))
+
+(DEFUN |ES-;is?;SBoB;37| (|f| |op| $)
+ (PROG (|k|)
+ (RETURN
+ (SEQ (LETT |k| (SPADCALL |f| (|getShellEntry| $ 114))
+ |ES-;is?;SBoB;37|)
+ (EXIT (COND
+ ((QEQCAR |k| 1) 'NIL)
+ ('T
+ (SPADCALL (QCDR |k|) |op| (|getShellEntry| $ 52)))))))))
+
+(DEFUN |ES-;unwrap| (|l| |x| $)
+ (PROG (|k| #0=#:G1565)
+ (RETURN
+ (SEQ (SEQ (LETT |k| NIL |ES-;unwrap|)
+ (LETT #0# (NREVERSE |l|) |ES-;unwrap|) G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN (LETT |k| (CAR #0#) |ES-;unwrap|) NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT |x|
+ (SPADCALL |x| |k|
+ (|SPADfirst|
+ (SPADCALL |k|
+ (|getShellEntry| $ 86)))
+ (|getShellEntry| $ 118))
+ |ES-;unwrap|)))
+ (LETT #0# (CDR #0#) |ES-;unwrap|) (GO G190) G191
+ (EXIT NIL))
+ (EXIT |x|)))))
+
+(DEFUN |ES-;distribute;3S;39| (|x| |y| $)
+ (PROG (|ky| #0=#:G1570 |k| #1=#:G1571)
+ (RETURN
+ (SEQ (LETT |ky| (SPADCALL |y| (|getShellEntry| $ 57))
+ |ES-;distribute;3S;39|)
+ (EXIT (|ES-;unwrap|
+ (PROGN
+ (LETT #0# NIL |ES-;distribute;3S;39|)
+ (SEQ (LETT |k| NIL |ES-;distribute;3S;39|)
+ (LETT #1# (|ES-;listk| |x| $)
+ |ES-;distribute;3S;39|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |k| (CAR #1#)
+ |ES-;distribute;3S;39|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((COND
+ ((SPADCALL |k|
+ (SPADCALL "%paren"
+ (|getShellEntry| $ 9))
+ (|getShellEntry| $ 115))
+ (SPADCALL |ky|
+ (|ES-;listk|
+ (SPADCALL |k|
+ (|getShellEntry| $ 88))
+ $)
+ (|getShellEntry| $ 58)))
+ ('T 'NIL))
+ (LETT #0# (CONS |k| #0#)
+ |ES-;distribute;3S;39|)))))
+ (LETT #1# (CDR #1#) |ES-;distribute;3S;39|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ |x| $))))))
+
+(DEFUN |ES-;eval;SLS;40| (|f| |leq| $)
+ (PROG (|rec|)
+ (RETURN
+ (SEQ (LETT |rec| (|ES-;mkKerLists| |leq| $) |ES-;eval;SLS;40|)
+ (EXIT (SPADCALL |f| (QCAR |rec|) (QCDR |rec|)
+ (|getShellEntry| $ 120)))))))
+
+(DEFUN |ES-;subst;SLS;41| (|f| |leq| $)
+ (PROG (|rec|)
+ (RETURN
+ (SEQ (LETT |rec| (|ES-;mkKerLists| |leq| $) |ES-;subst;SLS;41|)
+ (EXIT (SPADCALL |f| (QCAR |rec|) (QCDR |rec|)
+ (|getShellEntry| $ 122)))))))
+
+(DEFUN |ES-;mkKerLists| (|leq| $)
+ (PROG (|eq| #0=#:G1588 |k| |lk| |lv|)
+ (RETURN
+ (SEQ (LETT |lk| NIL |ES-;mkKerLists|)
+ (LETT |lv| NIL |ES-;mkKerLists|)
+ (SEQ (LETT |eq| NIL |ES-;mkKerLists|)
+ (LETT #0# |leq| |ES-;mkKerLists|) G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |eq| (CAR #0#) |ES-;mkKerLists|)
+ NIL))
+ (GO G191)))
+ (SEQ (LETT |k|
+ (SPADCALL
+ (SPADCALL |eq| (|getShellEntry| $ 125))
+ (|getShellEntry| $ 114))
+ |ES-;mkKerLists|)
+ (EXIT (COND
+ ((QEQCAR |k| 1)
+ (|error| "left hand side must be a single kernel"))
+ ((NULL (SPADCALL (QCDR |k|) |lk|
+ (|getShellEntry| $ 58)))
+ (SEQ (LETT |lk| (CONS (QCDR |k|) |lk|)
+ |ES-;mkKerLists|)
+ (EXIT
+ (LETT |lv|
+ (CONS
+ (SPADCALL |eq|
+ (|getShellEntry| $ 126))
+ |lv|)
+ |ES-;mkKerLists|)))))))
+ (LETT #0# (CDR #0#) |ES-;mkKerLists|) (GO G190) G191
+ (EXIT NIL))
+ (EXIT (CONS |lk| |lv|))))))
+
+(DEFUN |ES-;even?;SB;43| (|x| $) (|ES-;intpred?| |x| (ELT $ 128) $))
+
+(DEFUN |ES-;odd?;SB;44| (|x| $) (|ES-;intpred?| |x| (ELT $ 130) $))
+
+(DEFUN |ES-;intpred?| (|x| |pred?| $)
+ (PROG (|u|)
+ (RETURN
+ (SEQ (LETT |u| (SPADCALL |x| (|getShellEntry| $ 133))
+ |ES-;intpred?|)
+ (EXIT (COND
+ ((QEQCAR |u| 0) (SPADCALL (QCDR |u|) |pred?|))
+ ('T 'NIL)))))))
+
+(DEFUN |ExpressionSpace&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|ExpressionSpace&|))
+ (LETT |dv$| (LIST '|ExpressionSpace&| |dv$1|) . #0#)
+ (LETT $ (|newShell| 134) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#1|
+ '(|RetractableTo| (|Integer|)))
+ (|HasCategory| |#1| '(|Ring|)))) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (|setShellEntry| $ 13
+ (SPADCALL (SPADCALL "%paren" (|getShellEntry| $ 9))
+ (|getShellEntry| $ 12)))
+ (|setShellEntry| $ 14
+ (SPADCALL (SPADCALL "%box" (|getShellEntry| $ 9))
+ (|getShellEntry| $ 12)))
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (PROGN
+ (|setShellEntry| $ 129
+ (CONS (|dispatchFunction| |ES-;even?;SB;43|) $))
+ (|setShellEntry| $ 131
+ (CONS (|dispatchFunction| |ES-;odd?;SB;44|) $)))))
+ $))))
+
+(MAKEPROP '|ExpressionSpace&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|String|)
+ (|Symbol|) (0 . |coerce|) (|BasicOperator|)
+ (|CommonOperators|) (5 . |operator|) '|oppren| '|opbox|
+ (|List| $) (10 . |box|) |ES-;box;2S;1| (15 . |paren|)
+ |ES-;paren;2S;2| (|Boolean|) (20 . =) |ES-;belong?;BoB;3|
+ (|Kernel| 6) (|List| 23) (|Set| 23) (26 . |parts|)
+ (31 . |sort!|) (|Kernel| $) (|List| 28) |ES-;tower;SL;5|
+ (36 . |brace|) (41 . |union|) (|Mapping| 25 25 25)
+ (|List| 25) (47 . |reduce|) (54 . |operator|) (|List| 10)
+ |ES-;operators;SL;7| (59 . |kernels|)
+ (|NonNegativeInteger|) (64 . |height|) (69 . |max|)
+ (|Mapping| 40 40 40) (|List| 40) (75 . |reduce|)
+ |ES-;height;SNni;8| (82 . |name|) (|List| 8)
+ (87 . |member?|) (93 . |not|) |ES-;freeOf?;SSB;9|
+ (98 . |is?|) |ES-;distribute;2S;10| (104 . |elt|)
+ |ES-;box;LS;11| |ES-;paren;LS;12| (110 . |retract|)
+ (115 . |member?|) |ES-;freeOf?;2SB;13| (121 . |kernel|)
+ |ES-;kernel;Bo2S;14| |ES-;elt;Bo2S;15| |ES-;elt;Bo3S;16|
+ |ES-;elt;Bo4S;17| |ES-;elt;Bo5S;18| (|Mapping| $ 15)
+ (|List| 66) (127 . |eval|) |ES-;eval;SSMS;19|
+ (134 . |name|) |ES-;eval;SBoMS;20| (|List| 6)
+ (139 . |first|) (|Mapping| $ $) |ES-;eval;SSMS;21|
+ (144 . |eval|) |ES-;eval;SBoMS;22| (|Equation| $)
+ (|List| 78) (151 . |subst|) |ES-;subst;SES;23| (|List| 74)
+ |ES-;eval;SLLS;24| |ES-;eval;SLLS;25| |ES-;eval;SLLS;26|
+ (157 . |argument|) (162 . =) (168 . |coerce|)
+ |ES-;map;MKS;27| (173 . |is?|) |ES-;operator;2Bo;28|
+ (|Union| 28 '"failed") |ES-;mainKernel;SU;29| (|None|)
+ (|Union| 94 '"failed") (179 . |property|) (185 . |second|)
+ (190 . |remove!|) (196 . |belong?|) |ES-;kernel;BoLS;31|
+ (201 . |height|) (206 . |kernel|) (|Union| 40 '"failed")
+ (213 . |arity|) (218 . ~=) (|Union| 6 '"failed")
+ (|BasicOperatorFunctions1| 6) (224 . |evaluate|)
+ |ES-;elt;BoLS;33| (230 . |mainKernel|) (235 . ~=)
+ |ES-;retract;SK;34| |ES-;retractIfCan;SU;35|
+ (241 . |retractIfCan|) (246 . |is?|) |ES-;is?;SSB;36|
+ |ES-;is?;SBoB;37| (252 . |eval|) |ES-;distribute;3S;39|
+ (259 . |eval|) |ES-;eval;SLS;40| (266 . |subst|)
+ |ES-;subst;SLS;41| (|Equation| 6) (273 . |lhs|)
+ (278 . |rhs|) (|Integer|) (283 . |even?|) (288 . |even?|)
+ (293 . |odd?|) (298 . |odd?|) (|Union| 127 '"failed")
+ (303 . |retractIfCan|))
+ '#(|tower| 308 |subst| 313 |retractIfCan| 325 |retract| 330
+ |paren| 335 |operators| 345 |operator| 350 |odd?| 355
+ |map| 360 |mainKernel| 366 |kernel| 371 |is?| 383 |height|
+ 395 |freeOf?| 400 |even?| 412 |eval| 417 |elt| 472
+ |distribute| 508 |box| 519 |belong?| 529)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 133
+ '(1 8 0 7 9 1 11 10 8 12 1 6 0 15 16 1
+ 6 0 15 18 2 10 20 0 0 21 1 25 24 0 26
+ 1 24 0 0 27 1 25 0 24 31 2 25 0 0 0
+ 32 3 34 25 33 0 25 35 1 23 10 0 36 1
+ 6 29 0 39 1 23 40 0 41 2 40 0 0 0 42
+ 3 44 40 43 0 40 45 1 23 8 0 47 2 48
+ 20 8 0 49 1 20 0 0 50 2 23 20 0 10 52
+ 2 6 0 10 15 54 1 6 28 0 57 2 24 20 23
+ 0 58 2 6 0 10 15 60 3 6 0 0 48 67 68
+ 1 10 8 0 70 1 72 6 0 73 3 6 0 0 37 67
+ 76 2 6 0 0 79 80 1 23 72 0 86 2 72 20
+ 0 0 87 1 6 0 28 88 2 10 20 0 8 90 2
+ 10 95 0 7 96 1 72 6 0 97 2 25 0 23 0
+ 98 1 6 20 10 99 1 6 40 0 101 3 23 0
+ 10 72 40 102 1 10 103 0 104 2 40 20 0
+ 0 105 2 107 106 10 72 108 1 6 92 0
+ 110 2 6 20 0 0 111 1 6 92 0 114 2 23
+ 20 0 8 115 3 6 0 0 28 0 118 3 6 0 0
+ 29 15 120 3 6 0 0 29 15 122 1 124 6 0
+ 125 1 124 6 0 126 1 127 20 0 128 1 0
+ 20 0 129 1 127 20 0 130 1 0 20 0 131
+ 1 6 132 0 133 1 0 29 0 30 2 0 0 0 79
+ 123 2 0 0 0 78 81 1 0 92 0 113 1 0 28
+ 0 112 1 0 0 0 19 1 0 0 15 56 1 0 37 0
+ 38 1 0 10 10 91 1 0 20 0 131 2 0 0 74
+ 28 89 1 0 92 0 93 2 0 0 10 15 100 2 0
+ 0 10 0 61 2 0 20 0 8 116 2 0 20 0 10
+ 117 1 0 40 0 46 2 0 20 0 8 51 2 0 20
+ 0 0 59 1 0 20 0 129 3 0 0 0 10 74 77
+ 3 0 0 0 37 67 85 3 0 0 0 10 66 71 3 0
+ 0 0 37 82 83 3 0 0 0 8 66 69 3 0 0 0
+ 8 74 75 3 0 0 0 48 82 84 2 0 0 0 79
+ 121 2 0 0 10 15 109 5 0 0 10 0 0 0 0
+ 65 3 0 0 10 0 0 63 4 0 0 10 0 0 0 64
+ 2 0 0 10 0 62 2 0 0 0 0 119 1 0 0 0
+ 53 1 0 0 15 55 1 0 0 0 17 1 0 20 10
+ 22)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/ES.lsp b/src/algebra/strap/ES.lsp
new file mode 100644
index 00000000..53f77b8c
--- /dev/null
+++ b/src/algebra/strap/ES.lsp
@@ -0,0 +1,155 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |ExpressionSpace;AL| 'NIL)
+
+(DEFUN |ExpressionSpace| ()
+ (LET (#:G1400)
+ (COND
+ (|ExpressionSpace;AL|)
+ (T (SETQ |ExpressionSpace;AL| (|ExpressionSpace;|))))))
+
+(DEFUN |ExpressionSpace;| ()
+ (PROG (#0=#:G1398)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(#1=#:G1396 #2=#:G1397)
+ (LIST '(|Kernel| $) '(|Kernel| $)))
+ (|Join| (|OrderedSet|) (|RetractableTo| '#1#)
+ (|InnerEvalable| '#2# '$)
+ (|Evalable| '$)
+ (|mkCategory| '|domain|
+ '(((|elt| ($ (|BasicOperator|) $))
+ T)
+ ((|elt| ($ (|BasicOperator|) $ $))
+ T)
+ ((|elt|
+ ($ (|BasicOperator|) $ $ $))
+ T)
+ ((|elt|
+ ($ (|BasicOperator|) $ $ $ $))
+ T)
+ ((|elt|
+ ($ (|BasicOperator|) (|List| $)))
+ T)
+ ((|subst| ($ $ (|Equation| $))) T)
+ ((|subst|
+ ($ $ (|List| (|Equation| $))))
+ T)
+ ((|subst|
+ ($ $ (|List| (|Kernel| $))
+ (|List| $)))
+ T)
+ ((|box| ($ $)) T)
+ ((|box| ($ (|List| $))) T)
+ ((|paren| ($ $)) T)
+ ((|paren| ($ (|List| $))) T)
+ ((|distribute| ($ $)) T)
+ ((|distribute| ($ $ $)) T)
+ ((|height|
+ ((|NonNegativeInteger|) $))
+ T)
+ ((|mainKernel|
+ ((|Union| (|Kernel| $) "failed")
+ $))
+ T)
+ ((|kernels|
+ ((|List| (|Kernel| $)) $))
+ T)
+ ((|tower|
+ ((|List| (|Kernel| $)) $))
+ T)
+ ((|operators|
+ ((|List| (|BasicOperator|)) $))
+ T)
+ ((|operator|
+ ((|BasicOperator|)
+ (|BasicOperator|)))
+ T)
+ ((|belong?|
+ ((|Boolean|) (|BasicOperator|)))
+ T)
+ ((|is?|
+ ((|Boolean|) $
+ (|BasicOperator|)))
+ T)
+ ((|is?|
+ ((|Boolean|) $ (|Symbol|)))
+ T)
+ ((|kernel|
+ ($ (|BasicOperator|) $))
+ T)
+ ((|kernel|
+ ($ (|BasicOperator|) (|List| $)))
+ T)
+ ((|map|
+ ($ (|Mapping| $ $) (|Kernel| $)))
+ T)
+ ((|freeOf?| ((|Boolean|) $ $)) T)
+ ((|freeOf?|
+ ((|Boolean|) $ (|Symbol|)))
+ T)
+ ((|eval|
+ ($ $ (|List| (|Symbol|))
+ (|List| (|Mapping| $ $))))
+ T)
+ ((|eval|
+ ($ $ (|List| (|Symbol|))
+ (|List|
+ (|Mapping| $ (|List| $)))))
+ T)
+ ((|eval|
+ ($ $ (|Symbol|)
+ (|Mapping| $ (|List| $))))
+ T)
+ ((|eval|
+ ($ $ (|Symbol|) (|Mapping| $ $)))
+ T)
+ ((|eval|
+ ($ $ (|List| (|BasicOperator|))
+ (|List| (|Mapping| $ $))))
+ T)
+ ((|eval|
+ ($ $ (|List| (|BasicOperator|))
+ (|List|
+ (|Mapping| $ (|List| $)))))
+ T)
+ ((|eval|
+ ($ $ (|BasicOperator|)
+ (|Mapping| $ (|List| $))))
+ T)
+ ((|eval|
+ ($ $ (|BasicOperator|)
+ (|Mapping| $ $)))
+ T)
+ ((|minPoly|
+ ((|SparseUnivariatePolynomial|
+ $)
+ (|Kernel| $)))
+ (|has| $ (|Ring|)))
+ ((|definingPolynomial| ($ $))
+ (|has| $ (|Ring|)))
+ ((|even?| ((|Boolean|) $))
+ (|has| $
+ (|RetractableTo| (|Integer|))))
+ ((|odd?| ((|Boolean|) $))
+ (|has| $
+ (|RetractableTo| (|Integer|)))))
+ NIL
+ '((|Boolean|)
+ (|SparseUnivariatePolynomial| $)
+ (|Kernel| $) (|BasicOperator|)
+ (|List| (|BasicOperator|))
+ (|List| (|Mapping| $ (|List| $)))
+ (|List| (|Mapping| $ $))
+ (|Symbol|) (|List| (|Symbol|))
+ (|List| $) (|List| (|Kernel| $))
+ (|NonNegativeInteger|)
+ (|List| (|Equation| $))
+ (|Equation| $))
+ NIL)))
+ |ExpressionSpace|)
+ (SETELT #0# 0 '(|ExpressionSpace|))))))
+
+(MAKEPROP '|ExpressionSpace| 'NILADIC T)
diff --git a/src/algebra/strap/EUCDOM-.lsp b/src/algebra/strap/EUCDOM-.lsp
new file mode 100644
index 00000000..8a08bd2e
--- /dev/null
+++ b/src/algebra/strap/EUCDOM-.lsp
@@ -0,0 +1,518 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |EUCDOM-;sizeLess?;2SB;1| (|x| |y| $)
+ (COND
+ ((SPADCALL |y| (|getShellEntry| $ 8)) 'NIL)
+ ((SPADCALL |x| (|getShellEntry| $ 8)) 'T)
+ ('T
+ (< (SPADCALL |x| (|getShellEntry| $ 10))
+ (SPADCALL |y| (|getShellEntry| $ 10))))))
+
+(DEFUN |EUCDOM-;quo;3S;2| (|x| |y| $)
+ (QCAR (SPADCALL |x| |y| (|getShellEntry| $ 13))))
+
+(DEFUN |EUCDOM-;rem;3S;3| (|x| |y| $)
+ (QCDR (SPADCALL |x| |y| (|getShellEntry| $ 13))))
+
+(DEFUN |EUCDOM-;exquo;2SU;4| (|x| |y| $)
+ (PROG (|qr|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |y| (|getShellEntry| $ 8)) (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |qr| (SPADCALL |x| |y| (|getShellEntry| $ 13))
+ |EUCDOM-;exquo;2SU;4|)
+ (EXIT (COND
+ ((SPADCALL (QCDR |qr|)
+ (|getShellEntry| $ 8))
+ (CONS 0 (QCAR |qr|)))
+ ('T (CONS 1 "failed")))))))))))
+
+(DEFUN |EUCDOM-;gcd;3S;5| (|x| |y| $)
+ (PROG (|#G13| |#G14|)
+ (RETURN
+ (SEQ (LETT |x| (SPADCALL |x| (|getShellEntry| $ 18))
+ |EUCDOM-;gcd;3S;5|)
+ (LETT |y| (SPADCALL |y| (|getShellEntry| $ 18))
+ |EUCDOM-;gcd;3S;5|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |y| (|getShellEntry| $ 8))
+ (|getShellEntry| $ 19)))
+ (GO G191)))
+ (SEQ (PROGN
+ (LETT |#G13| |y| |EUCDOM-;gcd;3S;5|)
+ (LETT |#G14|
+ (SPADCALL |x| |y| (|getShellEntry| $ 20))
+ |EUCDOM-;gcd;3S;5|)
+ (LETT |x| |#G13| |EUCDOM-;gcd;3S;5|)
+ (LETT |y| |#G14| |EUCDOM-;gcd;3S;5|))
+ (EXIT (LETT |y|
+ (SPADCALL |y| (|getShellEntry| $ 18))
+ |EUCDOM-;gcd;3S;5|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |x|)))))
+
+(DEFUN |EUCDOM-;unitNormalizeIdealElt| (|s| $)
+ (PROG (|#G16| |u| |c| |a|)
+ (RETURN
+ (SEQ (PROGN
+ (LETT |#G16|
+ (SPADCALL (QVELT |s| 2) (|getShellEntry| $ 23))
+ |EUCDOM-;unitNormalizeIdealElt|)
+ (LETT |u| (QVELT |#G16| 0)
+ |EUCDOM-;unitNormalizeIdealElt|)
+ (LETT |c| (QVELT |#G16| 1)
+ |EUCDOM-;unitNormalizeIdealElt|)
+ (LETT |a| (QVELT |#G16| 2)
+ |EUCDOM-;unitNormalizeIdealElt|)
+ |#G16|)
+ (EXIT (COND
+ ((SPADCALL |a| (|spadConstant| $ 24)
+ (|getShellEntry| $ 25))
+ |s|)
+ ('T
+ (VECTOR (SPADCALL |a| (QVELT |s| 0)
+ (|getShellEntry| $ 26))
+ (SPADCALL |a| (QVELT |s| 1)
+ (|getShellEntry| $ 26))
+ |c|))))))))
+
+(DEFUN |EUCDOM-;extendedEuclidean;2SR;7| (|x| |y| $)
+ (PROG (|s3| |s2| |qr| |s1|)
+ (RETURN
+ (SEQ (LETT |s1|
+ (|EUCDOM-;unitNormalizeIdealElt|
+ (VECTOR (|spadConstant| $ 24)
+ (|spadConstant| $ 27) |x|)
+ $)
+ |EUCDOM-;extendedEuclidean;2SR;7|)
+ (LETT |s2|
+ (|EUCDOM-;unitNormalizeIdealElt|
+ (VECTOR (|spadConstant| $ 27)
+ (|spadConstant| $ 24) |y|)
+ $)
+ |EUCDOM-;extendedEuclidean;2SR;7|)
+ (EXIT (COND
+ ((SPADCALL |y| (|getShellEntry| $ 8)) |s1|)
+ ((SPADCALL |x| (|getShellEntry| $ 8)) |s2|)
+ ('T
+ (SEQ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL (QVELT |s2| 2)
+ (|getShellEntry| $ 8))
+ (|getShellEntry| $ 19)))
+ (GO G191)))
+ (SEQ (LETT |qr|
+ (SPADCALL (QVELT |s1| 2)
+ (QVELT |s2| 2)
+ (|getShellEntry| $ 13))
+ |EUCDOM-;extendedEuclidean;2SR;7|)
+ (LETT |s3|
+ (VECTOR
+ (SPADCALL (QVELT |s1| 0)
+ (SPADCALL (QCAR |qr|)
+ (QVELT |s2| 0)
+ (|getShellEntry| $ 26))
+ (|getShellEntry| $ 28))
+ (SPADCALL (QVELT |s1| 1)
+ (SPADCALL (QCAR |qr|)
+ (QVELT |s2| 1)
+ (|getShellEntry| $ 26))
+ (|getShellEntry| $ 28))
+ (QCDR |qr|))
+ |EUCDOM-;extendedEuclidean;2SR;7|)
+ (LETT |s1| |s2|
+ |EUCDOM-;extendedEuclidean;2SR;7|)
+ (EXIT
+ (LETT |s2|
+ (|EUCDOM-;unitNormalizeIdealElt|
+ |s3| $)
+ |EUCDOM-;extendedEuclidean;2SR;7|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (COND
+ ((NULL (SPADCALL (QVELT |s1| 0)
+ (|getShellEntry| $ 8)))
+ (COND
+ ((NULL (SPADCALL (QVELT |s1| 0) |y|
+ (|getShellEntry| $ 29)))
+ (SEQ (LETT |qr|
+ (SPADCALL (QVELT |s1| 0) |y|
+ (|getShellEntry| $ 13))
+ |EUCDOM-;extendedEuclidean;2SR;7|)
+ (QSETVELT |s1| 0 (QCDR |qr|))
+ (QSETVELT |s1| 1
+ (SPADCALL (QVELT |s1| 1)
+ (SPADCALL (QCAR |qr|) |x|
+ (|getShellEntry| $ 26))
+ (|getShellEntry| $ 30)))
+ (EXIT
+ (LETT |s1|
+ (|EUCDOM-;unitNormalizeIdealElt|
+ |s1| $)
+ |EUCDOM-;extendedEuclidean;2SR;7|)))))))
+ (EXIT |s1|)))))))))
+
+(DEFUN |EUCDOM-;extendedEuclidean;3SU;8| (|x| |y| |z| $)
+ (PROG (|s| |w| |qr|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |z| (|getShellEntry| $ 8))
+ (CONS 0
+ (CONS (|spadConstant| $ 27) (|spadConstant| $ 27))))
+ ('T
+ (SEQ (LETT |s| (SPADCALL |x| |y| (|getShellEntry| $ 33))
+ |EUCDOM-;extendedEuclidean;3SU;8|)
+ (LETT |w|
+ (SPADCALL |z| (QVELT |s| 2)
+ (|getShellEntry| $ 34))
+ |EUCDOM-;extendedEuclidean;3SU;8|)
+ (EXIT (COND
+ ((QEQCAR |w| 1) (CONS 1 "failed"))
+ ((SPADCALL |y| (|getShellEntry| $ 8))
+ (CONS 0
+ (CONS (SPADCALL (QVELT |s| 0)
+ (QCDR |w|)
+ (|getShellEntry| $ 26))
+ (SPADCALL (QVELT |s| 1)
+ (QCDR |w|)
+ (|getShellEntry| $ 26)))))
+ ('T
+ (SEQ (LETT |qr|
+ (SPADCALL
+ (SPADCALL (QVELT |s| 0)
+ (QCDR |w|)
+ (|getShellEntry| $ 26))
+ |y| (|getShellEntry| $ 13))
+ |EUCDOM-;extendedEuclidean;3SU;8|)
+ (EXIT (CONS 0
+ (CONS (QCDR |qr|)
+ (SPADCALL
+ (SPADCALL (QVELT |s| 1)
+ (QCDR |w|)
+ (|getShellEntry| $ 26))
+ (SPADCALL (QCAR |qr|) |x|
+ (|getShellEntry| $ 26))
+ (|getShellEntry| $ 30))))))))))))))))
+
+(DEFUN |EUCDOM-;principalIdeal;LR;9| (|l| $)
+ (PROG (|uca| |v| |u| #0=#:G1478 |vv| #1=#:G1479)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |l| NIL (|getShellEntry| $ 39))
+ (|error| "empty list passed to principalIdeal"))
+ ((SPADCALL (CDR |l|) NIL (|getShellEntry| $ 39))
+ (SEQ (LETT |uca|
+ (SPADCALL (|SPADfirst| |l|)
+ (|getShellEntry| $ 23))
+ |EUCDOM-;principalIdeal;LR;9|)
+ (EXIT (CONS (LIST (QVELT |uca| 0)) (QVELT |uca| 1)))))
+ ((SPADCALL (CDR (CDR |l|)) NIL (|getShellEntry| $ 39))
+ (SEQ (LETT |u|
+ (SPADCALL (|SPADfirst| |l|)
+ (SPADCALL |l| (|getShellEntry| $ 40))
+ (|getShellEntry| $ 33))
+ |EUCDOM-;principalIdeal;LR;9|)
+ (EXIT (CONS (LIST (QVELT |u| 0) (QVELT |u| 1))
+ (QVELT |u| 2)))))
+ ('T
+ (SEQ (LETT |v|
+ (SPADCALL (CDR |l|) (|getShellEntry| $ 43))
+ |EUCDOM-;principalIdeal;LR;9|)
+ (LETT |u|
+ (SPADCALL (|SPADfirst| |l|) (QCDR |v|)
+ (|getShellEntry| $ 33))
+ |EUCDOM-;principalIdeal;LR;9|)
+ (EXIT (CONS (CONS (QVELT |u| 0)
+ (PROGN
+ (LETT #0# NIL
+ |EUCDOM-;principalIdeal;LR;9|)
+ (SEQ
+ (LETT |vv| NIL
+ |EUCDOM-;principalIdeal;LR;9|)
+ (LETT #1# (QCAR |v|)
+ |EUCDOM-;principalIdeal;LR;9|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |vv| (CAR #1#)
+ |EUCDOM-;principalIdeal;LR;9|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS
+ (SPADCALL (QVELT |u| 1)
+ |vv|
+ (|getShellEntry| $ 26))
+ #0#)
+ |EUCDOM-;principalIdeal;LR;9|)))
+ (LETT #1# (CDR #1#)
+ |EUCDOM-;principalIdeal;LR;9|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #0#)))))
+ (QVELT |u| 2))))))))))
+
+(DEFUN |EUCDOM-;expressIdealMember;LSU;10| (|l| |z| $)
+ (PROG (#0=#:G1494 #1=#:G1495 |pid| |q| #2=#:G1496 |v| #3=#:G1497)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |z| (|spadConstant| $ 27)
+ (|getShellEntry| $ 25))
+ (CONS 0
+ (PROGN
+ (LETT #0# NIL
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ (SEQ (LETT |v| NIL
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ (LETT #1# |l|
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |v| (CAR #1#)
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS (|spadConstant| $ 27) #0#)
+ |EUCDOM-;expressIdealMember;LSU;10|)))
+ (LETT #1# (CDR #1#)
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))))
+ ('T
+ (SEQ (LETT |pid| (SPADCALL |l| (|getShellEntry| $ 43))
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ (LETT |q|
+ (SPADCALL |z| (QCDR |pid|)
+ (|getShellEntry| $ 34))
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ (EXIT (COND
+ ((QEQCAR |q| 1) (CONS 1 "failed"))
+ ('T
+ (CONS 0
+ (PROGN
+ (LETT #2# NIL
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ (SEQ
+ (LETT |v| NIL
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ (LETT #3# (QCAR |pid|)
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |v| (CAR #3#)
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS
+ (SPADCALL (QCDR |q|) |v|
+ (|getShellEntry| $ 26))
+ #2#)
+ |EUCDOM-;expressIdealMember;LSU;10|)))
+ (LETT #3# (CDR #3#)
+ |EUCDOM-;expressIdealMember;LSU;10|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #2#)))))))))))))))
+
+(DEFUN |EUCDOM-;multiEuclidean;LSU;11| (|l| |z| $)
+ (PROG (|n| |l1| |l2| #0=#:G1392 #1=#:G1516 #2=#:G1503 #3=#:G1501
+ #4=#:G1502 #5=#:G1393 #6=#:G1517 #7=#:G1506 #8=#:G1504
+ #9=#:G1505 |u| |v1| |v2|)
+ (RETURN
+ (SEQ (LETT |n| (LENGTH |l|) |EUCDOM-;multiEuclidean;LSU;11|)
+ (EXIT (COND
+ ((ZEROP |n|)
+ (|error| "empty list passed to multiEuclidean"))
+ ((EQL |n| 1) (CONS 0 (LIST |z|)))
+ ('T
+ (SEQ (LETT |l1|
+ (SPADCALL |l| (|getShellEntry| $ 47))
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (LETT |l2|
+ (SPADCALL |l1| (QUOTIENT2 |n| 2)
+ (|getShellEntry| $ 49))
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (LETT |u|
+ (SPADCALL
+ (PROGN
+ (LETT #4# NIL
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (SEQ
+ (LETT #0# NIL
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (LETT #1# |l1|
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT #0# (CAR #1#)
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (PROGN
+ (LETT #2# #0#
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (COND
+ (#4#
+ (LETT #3#
+ (SPADCALL #3# #2#
+ (|getShellEntry| $ 26))
+ |EUCDOM-;multiEuclidean;LSU;11|))
+ ('T
+ (PROGN
+ (LETT #3# #2#
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (LETT #4# 'T
+ |EUCDOM-;multiEuclidean;LSU;11|)))))))
+ (LETT #1# (CDR #1#)
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (GO G190) G191 (EXIT NIL))
+ (COND
+ (#4# #3#)
+ ('T (|spadConstant| $ 24))))
+ (PROGN
+ (LETT #9# NIL
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (SEQ
+ (LETT #5# NIL
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (LETT #6# |l2|
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ G190
+ (COND
+ ((OR (ATOM #6#)
+ (PROGN
+ (LETT #5# (CAR #6#)
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (PROGN
+ (LETT #7# #5#
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (COND
+ (#9#
+ (LETT #8#
+ (SPADCALL #8# #7#
+ (|getShellEntry| $ 26))
+ |EUCDOM-;multiEuclidean;LSU;11|))
+ ('T
+ (PROGN
+ (LETT #8# #7#
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (LETT #9# 'T
+ |EUCDOM-;multiEuclidean;LSU;11|)))))))
+ (LETT #6# (CDR #6#)
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (GO G190) G191 (EXIT NIL))
+ (COND
+ (#9# #8#)
+ ('T (|spadConstant| $ 24))))
+ |z| (|getShellEntry| $ 50))
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (EXIT (COND
+ ((QEQCAR |u| 1) (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |v1|
+ (SPADCALL |l1|
+ (QCDR (QCDR |u|))
+ (|getShellEntry| $ 51))
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (EXIT
+ (COND
+ ((QEQCAR |v1| 1)
+ (CONS 1 "failed"))
+ ('T
+ (SEQ
+ (LETT |v2|
+ (SPADCALL |l2|
+ (QCAR (QCDR |u|))
+ (|getShellEntry| $ 51))
+ |EUCDOM-;multiEuclidean;LSU;11|)
+ (EXIT
+ (COND
+ ((QEQCAR |v2| 1)
+ (CONS 1 "failed"))
+ ('T
+ (CONS 0
+ (SPADCALL (QCDR |v1|)
+ (QCDR |v2|)
+ (|getShellEntry| $
+ 52))))))))))))))))))))))
+
+(DEFUN |EuclideanDomain&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|EuclideanDomain&|))
+ (LETT |dv$| (LIST '|EuclideanDomain&| |dv$1|) . #0#)
+ (LETT $ (|newShell| 54) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|EuclideanDomain&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|Boolean|)
+ (0 . |zero?|) (|NonNegativeInteger|) (5 . |euclideanSize|)
+ |EUCDOM-;sizeLess?;2SB;1|
+ (|Record| (|:| |quotient| $) (|:| |remainder| $))
+ (10 . |divide|) |EUCDOM-;quo;3S;2| |EUCDOM-;rem;3S;3|
+ (|Union| $ '"failed") |EUCDOM-;exquo;2SU;4|
+ (16 . |unitCanonical|) (21 . |not|) (26 . |rem|)
+ |EUCDOM-;gcd;3S;5|
+ (|Record| (|:| |unit| $) (|:| |canonical| $)
+ (|:| |associate| $))
+ (32 . |unitNormal|) (37 . |One|) (41 . =) (47 . *)
+ (53 . |Zero|) (57 . -) (63 . |sizeLess?|) (69 . +)
+ (|Record| (|:| |coef1| $) (|:| |coef2| $)
+ (|:| |generator| $))
+ |EUCDOM-;extendedEuclidean;2SR;7|
+ (75 . |extendedEuclidean|) (81 . |exquo|)
+ (|Record| (|:| |coef1| $) (|:| |coef2| $))
+ (|Union| 35 '"failed") |EUCDOM-;extendedEuclidean;3SU;8|
+ (|List| 6) (87 . =) (93 . |second|) (|List| $)
+ (|Record| (|:| |coef| 41) (|:| |generator| $))
+ (98 . |principalIdeal|) |EUCDOM-;principalIdeal;LR;9|
+ (|Union| 41 '"failed") |EUCDOM-;expressIdealMember;LSU;10|
+ (103 . |copy|) (|Integer|) (108 . |split!|)
+ (114 . |extendedEuclidean|) (121 . |multiEuclidean|)
+ (127 . |concat|) |EUCDOM-;multiEuclidean;LSU;11|)
+ '#(|sizeLess?| 133 |rem| 139 |quo| 145 |principalIdeal| 151
+ |multiEuclidean| 156 |gcd| 162 |extendedEuclidean| 168
+ |exquo| 181 |expressIdealMember| 187)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 53
+ '(1 6 7 0 8 1 6 9 0 10 2 6 12 0 0 13 1
+ 6 0 0 18 1 7 0 0 19 2 6 0 0 0 20 1 6
+ 22 0 23 0 6 0 24 2 6 7 0 0 25 2 6 0 0
+ 0 26 0 6 0 27 2 6 0 0 0 28 2 6 7 0 0
+ 29 2 6 0 0 0 30 2 6 31 0 0 33 2 6 16
+ 0 0 34 2 38 7 0 0 39 1 38 6 0 40 1 6
+ 42 41 43 1 38 0 0 47 2 38 0 0 48 49 3
+ 6 36 0 0 0 50 2 6 45 41 0 51 2 38 0 0
+ 0 52 2 0 7 0 0 11 2 0 0 0 0 15 2 0 0
+ 0 0 14 1 0 42 41 44 2 0 45 41 0 53 2
+ 0 0 0 0 21 3 0 36 0 0 0 37 2 0 31 0 0
+ 32 2 0 16 0 0 17 2 0 45 41 0 46)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/EUCDOM.lsp b/src/algebra/strap/EUCDOM.lsp
new file mode 100644
index 00000000..c58fa54c
--- /dev/null
+++ b/src/algebra/strap/EUCDOM.lsp
@@ -0,0 +1,53 @@
+(|/VERSIONCHECK| 2)
+
+(DEFPARAMETER |EuclideanDomain;AL| (QUOTE NIL))
+
+(DEFUN |EuclideanDomain| NIL
+ (LET (#:G83585)
+ (COND
+ (|EuclideanDomain;AL|)
+ (T (SETQ |EuclideanDomain;AL| (|EuclideanDomain;|))))))
+
+(DEFUN |EuclideanDomain;| NIL
+ (PROG (#1=#:G83583)
+ (RETURN
+ (PROG1
+ (LETT #1#
+ (|Join|
+ (|PrincipalIdealDomain|)
+ (|mkCategory|
+ (QUOTE |domain|)
+ (QUOTE (
+ ((|sizeLess?| ((|Boolean|) |$| |$|)) T)
+ ((|euclideanSize| ((|NonNegativeInteger|) |$|)) T)
+ ((|divide|
+ ((|Record|
+ (|:| |quotient| |$|)
+ (|:| |remainder| |$|))
+ |$| |$|)) T)
+ ((|quo| (|$| |$| |$|)) T)
+ ((|rem| (|$| |$| |$|)) T)
+ ((|extendedEuclidean|
+ ((|Record|
+ (|:| |coef1| |$|)
+ (|:| |coef2| |$|)
+ (|:| |generator| |$|))
+ |$| |$|)) T)
+ ((|extendedEuclidean|
+ ((|Union|
+ (|Record| (|:| |coef1| |$|) (|:| |coef2| |$|))
+ "failed")
+ |$| |$| |$|)) T)
+ ((|multiEuclidean|
+ ((|Union|
+ (|List| |$|)
+ "failed")
+ (|List| |$|) |$|)) T)))
+ NIL
+ (QUOTE ((|List| |$|) (|NonNegativeInteger|) (|Boolean|)))
+ NIL))
+ |EuclideanDomain|)
+ (SETELT #1# 0 (QUOTE (|EuclideanDomain|)))))))
+
+(MAKEPROP (QUOTE |EuclideanDomain|) (QUOTE NILADIC) T)
+
diff --git a/src/algebra/strap/FFIELDC-.lsp b/src/algebra/strap/FFIELDC-.lsp
new file mode 100644
index 00000000..e886e7ff
--- /dev/null
+++ b/src/algebra/strap/FFIELDC-.lsp
@@ -0,0 +1,615 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |FFIELDC-;differentiate;2S;1| (|x| $) (|spadConstant| $ 7))
+
+(DEFUN |FFIELDC-;init;S;2| ($) (|spadConstant| $ 7))
+
+(DEFUN |FFIELDC-;nextItem;SU;3| (|a| $)
+ (COND
+ ((SPADCALL
+ (LETT |a|
+ (SPADCALL (+ (SPADCALL |a| (|getShellEntry| $ 11)) 1)
+ (|getShellEntry| $ 12))
+ |FFIELDC-;nextItem;SU;3|)
+ (|getShellEntry| $ 14))
+ (CONS 1 "failed"))
+ ('T (CONS 0 |a|))))
+
+(DEFUN |FFIELDC-;order;SOpc;4| (|e| $)
+ (SPADCALL (SPADCALL |e| (|getShellEntry| $ 17))
+ (|getShellEntry| $ 20)))
+
+(DEFUN |FFIELDC-;conditionP;MU;5| (|mat| $)
+ (PROG (|l|)
+ (RETURN
+ (SEQ (LETT |l| (SPADCALL |mat| (|getShellEntry| $ 25))
+ |FFIELDC-;conditionP;MU;5|)
+ (COND
+ ((OR (NULL |l|)
+ (SPADCALL (ELT $ 14) (|SPADfirst| |l|)
+ (|getShellEntry| $ 27)))
+ (EXIT (CONS 1 "failed"))))
+ (EXIT (CONS 0
+ (SPADCALL (ELT $ 28) (|SPADfirst| |l|)
+ (|getShellEntry| $ 30))))))))
+
+(DEFUN |FFIELDC-;charthRoot;2S;6| (|x| $)
+ (SPADCALL |x|
+ (QUOTIENT2 (SPADCALL (|getShellEntry| $ 36))
+ (SPADCALL (|getShellEntry| $ 37)))
+ (|getShellEntry| $ 38)))
+
+(DEFUN |FFIELDC-;charthRoot;SU;7| (|x| $)
+ (CONS 0 (SPADCALL |x| (|getShellEntry| $ 28))))
+
+(DEFUN |FFIELDC-;createPrimitiveElement;S;8| ($)
+ (PROG (|sm1| |start| |i| #0=#:G1441 |e| |found|)
+ (RETURN
+ (SEQ (LETT |sm1| (- (SPADCALL (|getShellEntry| $ 36)) 1)
+ |FFIELDC-;createPrimitiveElement;S;8|)
+ (LETT |start|
+ (COND
+ ((SPADCALL (SPADCALL (|getShellEntry| $ 43))
+ (CONS 1 "polynomial") (|getShellEntry| $ 44))
+ (SPADCALL (|getShellEntry| $ 37)))
+ ('T 1))
+ |FFIELDC-;createPrimitiveElement;S;8|)
+ (LETT |found| 'NIL |FFIELDC-;createPrimitiveElement;S;8|)
+ (SEQ (LETT |i| |start|
+ |FFIELDC-;createPrimitiveElement;S;8|)
+ G190
+ (COND
+ ((NULL (SPADCALL |found| (|getShellEntry| $ 45)))
+ (GO G191)))
+ (SEQ (LETT |e|
+ (SPADCALL
+ (PROG1 (LETT #0# |i|
+ |FFIELDC-;createPrimitiveElement;S;8|)
+ (|check-subtype| (> #0# 0)
+ '(|PositiveInteger|) #0#))
+ (|getShellEntry| $ 12))
+ |FFIELDC-;createPrimitiveElement;S;8|)
+ (EXIT (LETT |found|
+ (EQL (SPADCALL |e|
+ (|getShellEntry| $ 17))
+ |sm1|)
+ |FFIELDC-;createPrimitiveElement;S;8|)))
+ (LETT |i| (+ |i| 1)
+ |FFIELDC-;createPrimitiveElement;S;8|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |e|)))))
+
+(DEFUN |FFIELDC-;primitive?;SB;9| (|a| $)
+ (PROG (|explist| |q| |exp| #0=#:G1453 |equalone|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |a| (|getShellEntry| $ 14)) 'NIL)
+ ('T
+ (SEQ (LETT |explist| (SPADCALL (|getShellEntry| $ 49))
+ |FFIELDC-;primitive?;SB;9|)
+ (LETT |q| (- (SPADCALL (|getShellEntry| $ 36)) 1)
+ |FFIELDC-;primitive?;SB;9|)
+ (LETT |equalone| 'NIL |FFIELDC-;primitive?;SB;9|)
+ (SEQ (LETT |exp| NIL |FFIELDC-;primitive?;SB;9|)
+ (LETT #0# |explist| |FFIELDC-;primitive?;SB;9|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |exp| (CAR #0#)
+ |FFIELDC-;primitive?;SB;9|)
+ NIL)
+ (NULL (SPADCALL |equalone|
+ (|getShellEntry| $ 45))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |equalone|
+ (SPADCALL
+ (SPADCALL |a|
+ (QUOTIENT2 |q| (QCAR |exp|))
+ (|getShellEntry| $ 50))
+ (|spadConstant| $ 41)
+ (|getShellEntry| $ 51))
+ |FFIELDC-;primitive?;SB;9|)))
+ (LETT #0# (CDR #0#) |FFIELDC-;primitive?;SB;9|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |equalone| (|getShellEntry| $ 45))))))))))
+
+(DEFUN |FFIELDC-;order;SPi;10| (|e| $)
+ (PROG (|lof| |rec| #0=#:G1461 |primeDivisor| |j| #1=#:G1462 |a|
+ |goon| |ord|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |e| (|spadConstant| $ 7)
+ (|getShellEntry| $ 51))
+ (|error| "order(0) is not defined "))
+ ('T
+ (SEQ (LETT |ord| (- (SPADCALL (|getShellEntry| $ 36)) 1)
+ |FFIELDC-;order;SPi;10|)
+ (LETT |a| 0 |FFIELDC-;order;SPi;10|)
+ (LETT |lof| (SPADCALL (|getShellEntry| $ 49))
+ |FFIELDC-;order;SPi;10|)
+ (SEQ (LETT |rec| NIL |FFIELDC-;order;SPi;10|)
+ (LETT #0# |lof| |FFIELDC-;order;SPi;10|) G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |rec| (CAR #0#)
+ |FFIELDC-;order;SPi;10|)
+ NIL))
+ (GO G191)))
+ (SEQ (LETT |a|
+ (QUOTIENT2 |ord|
+ (LETT |primeDivisor| (QCAR |rec|)
+ |FFIELDC-;order;SPi;10|))
+ |FFIELDC-;order;SPi;10|)
+ (LETT |goon|
+ (SPADCALL
+ (SPADCALL |e| |a|
+ (|getShellEntry| $ 50))
+ (|spadConstant| $ 41)
+ (|getShellEntry| $ 51))
+ |FFIELDC-;order;SPi;10|)
+ (SEQ (LETT |j| 0 |FFIELDC-;order;SPi;10|)
+ (LETT #1# (- (QCDR |rec|) 2)
+ |FFIELDC-;order;SPi;10|)
+ G190
+ (COND
+ ((OR (QSGREATERP |j| #1#)
+ (NULL |goon|))
+ (GO G191)))
+ (SEQ (LETT |ord| |a|
+ |FFIELDC-;order;SPi;10|)
+ (LETT |a|
+ (QUOTIENT2 |ord|
+ |primeDivisor|)
+ |FFIELDC-;order;SPi;10|)
+ (EXIT
+ (LETT |goon|
+ (SPADCALL
+ (SPADCALL |e| |a|
+ (|getShellEntry| $ 50))
+ (|spadConstant| $ 41)
+ (|getShellEntry| $ 51))
+ |FFIELDC-;order;SPi;10|)))
+ (LETT |j| (QSADD1 |j|)
+ |FFIELDC-;order;SPi;10|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ (|goon|
+ (LETT |ord| |a|
+ |FFIELDC-;order;SPi;10|)))))
+ (LETT #0# (CDR #0#) |FFIELDC-;order;SPi;10|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |ord|))))))))
+
+(DEFUN |FFIELDC-;discreteLog;SNni;11| (|b| $)
+ (PROG (|faclist| |gen| |groupord| |f| #0=#:G1482 |fac| |t| #1=#:G1483
+ |exp| |exptable| |n| |end| |i| |rho| |found| |disc1| |c|
+ |mult| |disclog| |a|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |b| (|getShellEntry| $ 14))
+ (|error| "discreteLog: logarithm of zero"))
+ ('T
+ (SEQ (LETT |faclist| (SPADCALL (|getShellEntry| $ 49))
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |a| |b| |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |gen| (SPADCALL (|getShellEntry| $ 54))
+ |FFIELDC-;discreteLog;SNni;11|)
+ (EXIT (COND
+ ((SPADCALL |b| |gen| (|getShellEntry| $ 51))
+ 1)
+ ('T
+ (SEQ (LETT |disclog| 0
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |mult| 1
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |groupord|
+ (-
+ (SPADCALL
+ (|getShellEntry| $ 36))
+ 1)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |exp| |groupord|
+ |FFIELDC-;discreteLog;SNni;11|)
+ (SEQ (LETT |f| NIL
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT #0# |faclist|
+ |FFIELDC-;discreteLog;SNni;11|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |f| (CAR #0#)
+ |FFIELDC-;discreteLog;SNni;11|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (LETT |fac| (QCAR |f|)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (EXIT
+ (SEQ
+ (LETT |t| 0
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT #1# (- (QCDR |f|) 1)
+ |FFIELDC-;discreteLog;SNni;11|)
+ G190
+ (COND
+ ((QSGREATERP |t| #1#)
+ (GO G191)))
+ (SEQ
+ (LETT |exp|
+ (QUOTIENT2 |exp| |fac|)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |exptable|
+ (SPADCALL |fac|
+ (|getShellEntry| $ 56))
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |n|
+ (SPADCALL |exptable|
+ (|getShellEntry| $ 57))
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |c|
+ (SPADCALL |a| |exp|
+ (|getShellEntry| $ 50))
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |end|
+ (QUOTIENT2 (- |fac| 1) |n|)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |found| 'NIL
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |disc1| 0
+ |FFIELDC-;discreteLog;SNni;11|)
+ (SEQ
+ (LETT |i| 0
+ |FFIELDC-;discreteLog;SNni;11|)
+ G190
+ (COND
+ ((OR
+ (QSGREATERP |i| |end|)
+ (NULL
+ (SPADCALL |found|
+ (|getShellEntry| $ 45))))
+ (GO G191)))
+ (SEQ
+ (LETT |rho|
+ (SPADCALL
+ (SPADCALL |c|
+ (|getShellEntry| $ 11))
+ |exptable|
+ (|getShellEntry| $ 59))
+ |FFIELDC-;discreteLog;SNni;11|)
+ (EXIT
+ (COND
+ ((QEQCAR |rho| 0)
+ (SEQ
+ (LETT |found| 'T
+ |FFIELDC-;discreteLog;SNni;11|)
+ (EXIT
+ (LETT |disc1|
+ (*
+ (+ (* |n| |i|)
+ (QCDR |rho|))
+ |mult|)
+ |FFIELDC-;discreteLog;SNni;11|))))
+ ('T
+ (LETT |c|
+ (SPADCALL |c|
+ (SPADCALL |gen|
+ (*
+ (QUOTIENT2
+ |groupord| |fac|)
+ (- |n|))
+ (|getShellEntry| $
+ 50))
+ (|getShellEntry| $
+ 60))
+ |FFIELDC-;discreteLog;SNni;11|)))))
+ (LETT |i| (QSADD1 |i|)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT
+ (COND
+ (|found|
+ (SEQ
+ (LETT |mult|
+ (* |mult| |fac|)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (LETT |disclog|
+ (+ |disclog| |disc1|)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (EXIT
+ (LETT |a|
+ (SPADCALL |a|
+ (SPADCALL |gen|
+ (- |disc1|)
+ (|getShellEntry| $
+ 50))
+ (|getShellEntry| $
+ 60))
+ |FFIELDC-;discreteLog;SNni;11|))))
+ ('T
+ (|error|
+ "discreteLog: ?? discrete logarithm")))))
+ (LETT |t| (QSADD1 |t|)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (GO G190) G191 (EXIT NIL))))
+ (LETT #0# (CDR #0#)
+ |FFIELDC-;discreteLog;SNni;11|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |disclog|))))))))))))
+
+(DEFUN |FFIELDC-;discreteLog;2SU;12| (|logbase| |b| $)
+ (PROG (|groupord| |faclist| |f| #0=#:G1501 |fac| |primroot| |t|
+ #1=#:G1502 |exp| |rhoHelp| #2=#:G1500 |rho| |disclog|
+ |mult| |a|)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((SPADCALL |b| (|getShellEntry| $ 14))
+ (SEQ (SPADCALL "discreteLog: logarithm of zero"
+ (|getShellEntry| $ 65))
+ (EXIT (CONS 1 "failed"))))
+ ((SPADCALL |logbase| (|getShellEntry| $ 14))
+ (SEQ (SPADCALL
+ "discreteLog: logarithm to base zero"
+ (|getShellEntry| $ 65))
+ (EXIT (CONS 1 "failed"))))
+ ((SPADCALL |b| |logbase| (|getShellEntry| $ 51))
+ (CONS 0 1))
+ ('T
+ (COND
+ ((NULL (ZEROP (REMAINDER2
+ (LETT |groupord|
+ (SPADCALL |logbase|
+ (|getShellEntry| $ 17))
+ |FFIELDC-;discreteLog;2SU;12|)
+ (SPADCALL |b|
+ (|getShellEntry| $ 17)))))
+ (SEQ (SPADCALL
+ "discreteLog: second argument not in cyclic group generated by first argument"
+ (|getShellEntry| $ 65))
+ (EXIT (CONS 1 "failed"))))
+ ('T
+ (SEQ (LETT |faclist|
+ (SPADCALL
+ (SPADCALL |groupord|
+ (|getShellEntry| $ 67))
+ (|getShellEntry| $ 69))
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT |a| |b|
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT |disclog| 0
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT |mult| 1
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT |exp| |groupord|
+ |FFIELDC-;discreteLog;2SU;12|)
+ (SEQ (LETT |f| NIL
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT #0# |faclist|
+ |FFIELDC-;discreteLog;2SU;12|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |f| (CAR #0#)
+ |FFIELDC-;discreteLog;2SU;12|)
+ NIL))
+ (GO G191)))
+ (SEQ (LETT |fac| (QCAR |f|)
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT |primroot|
+ (SPADCALL |logbase|
+ (QUOTIENT2 |groupord| |fac|)
+ (|getShellEntry| $ 50))
+ |FFIELDC-;discreteLog;2SU;12|)
+ (EXIT
+ (SEQ
+ (LETT |t| 0
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT #1# (- (QCDR |f|) 1)
+ |FFIELDC-;discreteLog;2SU;12|)
+ G190
+ (COND
+ ((QSGREATERP |t| #1#)
+ (GO G191)))
+ (SEQ
+ (LETT |exp|
+ (QUOTIENT2 |exp| |fac|)
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT |rhoHelp|
+ (SPADCALL |primroot|
+ (SPADCALL |a| |exp|
+ (|getShellEntry| $ 50))
+ |fac|
+ (|getShellEntry| $ 71))
+ |FFIELDC-;discreteLog;2SU;12|)
+ (EXIT
+ (COND
+ ((QEQCAR |rhoHelp| 1)
+ (PROGN
+ (LETT #2#
+ (CONS 1 "failed")
+ |FFIELDC-;discreteLog;2SU;12|)
+ (GO #2#)))
+ ('T
+ (SEQ
+ (LETT |rho|
+ (* (QCDR |rhoHelp|)
+ |mult|)
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT |disclog|
+ (+ |disclog| |rho|)
+ |FFIELDC-;discreteLog;2SU;12|)
+ (LETT |mult|
+ (* |mult| |fac|)
+ |FFIELDC-;discreteLog;2SU;12|)
+ (EXIT
+ (LETT |a|
+ (SPADCALL |a|
+ (SPADCALL |logbase|
+ (- |rho|)
+ (|getShellEntry| $
+ 50))
+ (|getShellEntry| $ 60))
+ |FFIELDC-;discreteLog;2SU;12|)))))))
+ (LETT |t| (QSADD1 |t|)
+ |FFIELDC-;discreteLog;2SU;12|)
+ (GO G190) G191 (EXIT NIL))))
+ (LETT #0# (CDR #0#)
+ |FFIELDC-;discreteLog;2SU;12|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (CONS 0 |disclog|))))))))
+ #2# (EXIT #2#)))))
+
+(DEFUN |FFIELDC-;squareFreePolynomial| (|f| $)
+ (SPADCALL |f| (|getShellEntry| $ 76)))
+
+(DEFUN |FFIELDC-;factorPolynomial| (|f| $)
+ (SPADCALL |f| (|getShellEntry| $ 78)))
+
+(DEFUN |FFIELDC-;factorSquareFreePolynomial| (|f| $)
+ (PROG (|flist| |u| #0=#:G1515 #1=#:G1512 #2=#:G1510 #3=#:G1511)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |f| (|spadConstant| $ 79)
+ (|getShellEntry| $ 80))
+ (|spadConstant| $ 81))
+ ('T
+ (SEQ (LETT |flist|
+ (SPADCALL |f| 'T (|getShellEntry| $ 85))
+ |FFIELDC-;factorSquareFreePolynomial|)
+ (EXIT (SPADCALL
+ (SPADCALL (QCAR |flist|)
+ (|getShellEntry| $ 86))
+ (PROGN
+ (LETT #3# NIL
+ |FFIELDC-;factorSquareFreePolynomial|)
+ (SEQ (LETT |u| NIL
+ |FFIELDC-;factorSquareFreePolynomial|)
+ (LETT #0# (QCDR |flist|)
+ |FFIELDC-;factorSquareFreePolynomial|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |u| (CAR #0#)
+ |FFIELDC-;factorSquareFreePolynomial|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (PROGN
+ (LETT #1#
+ (SPADCALL (QCAR |u|)
+ (QCDR |u|)
+ (|getShellEntry| $ 87))
+ |FFIELDC-;factorSquareFreePolynomial|)
+ (COND
+ (#3#
+ (LETT #2#
+ (SPADCALL #2# #1#
+ (|getShellEntry| $ 88))
+ |FFIELDC-;factorSquareFreePolynomial|))
+ ('T
+ (PROGN
+ (LETT #2# #1#
+ |FFIELDC-;factorSquareFreePolynomial|)
+ (LETT #3# 'T
+ |FFIELDC-;factorSquareFreePolynomial|)))))))
+ (LETT #0# (CDR #0#)
+ |FFIELDC-;factorSquareFreePolynomial|)
+ (GO G190) G191 (EXIT NIL))
+ (COND
+ (#3# #2#)
+ ('T (|spadConstant| $ 89))))
+ (|getShellEntry| $ 90))))))))))
+
+(DEFUN |FFIELDC-;gcdPolynomial;3Sup;16| (|f| |g| $)
+ (SPADCALL |f| |g| (|getShellEntry| $ 92)))
+
+(DEFUN |FiniteFieldCategory&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|FiniteFieldCategory&|))
+ (LETT |dv$| (LIST '|FiniteFieldCategory&| |dv$1|) . #0#)
+ (LETT $ (|newShell| 95) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|FiniteFieldCategory&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (0 . |Zero|)
+ |FFIELDC-;differentiate;2S;1| |FFIELDC-;init;S;2|
+ (|PositiveInteger|) (4 . |lookup|) (9 . |index|)
+ (|Boolean|) (14 . |zero?|) (|Union| $ '"failed")
+ |FFIELDC-;nextItem;SU;3| (19 . |order|) (|Integer|)
+ (|OnePointCompletion| 10) (24 . |coerce|)
+ |FFIELDC-;order;SOpc;4| (|Vector| 6) (|List| 22)
+ (|Matrix| 6) (29 . |nullSpace|) (|Mapping| 13 6)
+ (34 . |every?|) (40 . |charthRoot|) (|Mapping| 6 6)
+ (45 . |map|) (|Vector| $) (|Union| 31 '"failed")
+ (|Matrix| $) |FFIELDC-;conditionP;MU;5|
+ (|NonNegativeInteger|) (51 . |size|)
+ (55 . |characteristic|) (59 . **)
+ |FFIELDC-;charthRoot;2S;6| |FFIELDC-;charthRoot;SU;7|
+ (65 . |One|)
+ (|Union| '"prime" '"polynomial" '"normal" '"cyclic")
+ (69 . |representationType|) (73 . =) (79 . |not|)
+ |FFIELDC-;createPrimitiveElement;S;8|
+ (|Record| (|:| |factor| 18) (|:| |exponent| 18))
+ (|List| 47) (84 . |factorsOfCyclicGroupSize|) (88 . **)
+ (94 . =) |FFIELDC-;primitive?;SB;9|
+ |FFIELDC-;order;SPi;10| (100 . |primitiveElement|)
+ (|Table| 10 35) (104 . |tableForDiscreteLogarithm|)
+ (109 . |#|) (|Union| 35 '"failed") (114 . |search|)
+ (120 . *) |FFIELDC-;discreteLog;SNni;11| (|Void|)
+ (|String|) (|OutputForm|) (126 . |messagePrint|)
+ (|Factored| $) (131 . |factor|) (|Factored| 18)
+ (136 . |factors|) (|DiscreteLogarithmPackage| 6)
+ (141 . |shanksDiscLogAlgorithm|)
+ |FFIELDC-;discreteLog;2SU;12|
+ (|SparseUnivariatePolynomial| 6) (|Factored| 73)
+ (|UnivariatePolynomialSquareFree| 6 73)
+ (148 . |squareFree|) (|DistinctDegreeFactorize| 6 73)
+ (153 . |factor|) (158 . |Zero|) (162 . =) (168 . |Zero|)
+ (|Record| (|:| |irr| 73) (|:| |pow| 18)) (|List| 82)
+ (|Record| (|:| |cont| 6) (|:| |factors| 83))
+ (172 . |distdfact|) (178 . |coerce|) (183 . |primeFactor|)
+ (189 . *) (195 . |One|) (199 . *) (|EuclideanDomain&| 73)
+ (205 . |gcd|) (|SparseUnivariatePolynomial| $)
+ |FFIELDC-;gcdPolynomial;3Sup;16|)
+ '#(|primitive?| 211 |order| 216 |nextItem| 226 |init| 231
+ |gcdPolynomial| 235 |discreteLog| 241 |differentiate| 252
+ |createPrimitiveElement| 257 |conditionP| 261 |charthRoot|
+ 266)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 94
+ '(0 6 0 7 1 6 10 0 11 1 6 0 10 12 1 6
+ 13 0 14 1 6 10 0 17 1 19 0 18 20 1 24
+ 23 0 25 2 22 13 26 0 27 1 6 0 0 28 2
+ 22 0 29 0 30 0 6 35 36 0 6 35 37 2 6
+ 0 0 35 38 0 6 0 41 0 6 42 43 2 42 13
+ 0 0 44 1 13 0 0 45 0 6 48 49 2 6 0 0
+ 18 50 2 6 13 0 0 51 0 6 0 54 1 6 55
+ 18 56 1 55 35 0 57 2 55 58 10 0 59 2
+ 6 0 0 0 60 1 64 62 63 65 1 18 66 0 67
+ 1 68 48 0 69 3 70 58 6 6 35 71 1 75
+ 74 73 76 1 77 74 73 78 0 73 0 79 2 73
+ 13 0 0 80 0 74 0 81 2 77 84 73 13 85
+ 1 73 0 6 86 2 74 0 73 18 87 2 74 0 0
+ 0 88 0 74 0 89 2 74 0 73 0 90 2 91 0
+ 0 0 92 1 0 13 0 52 1 0 10 0 53 1 0 19
+ 0 21 1 0 15 0 16 0 0 0 9 2 0 93 93 93
+ 94 1 0 35 0 61 2 0 58 0 0 72 1 0 0 0
+ 8 0 0 0 46 1 0 32 33 34 1 0 0 0 39 1
+ 0 15 0 40)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/FFIELDC.lsp b/src/algebra/strap/FFIELDC.lsp
new file mode 100644
index 00000000..9099175c
--- /dev/null
+++ b/src/algebra/strap/FFIELDC.lsp
@@ -0,0 +1,60 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |FiniteFieldCategory;AL| 'NIL)
+
+(DEFUN |FiniteFieldCategory| ()
+ (LET (#:G1395)
+ (COND
+ (|FiniteFieldCategory;AL|)
+ (T (SETQ |FiniteFieldCategory;AL| (|FiniteFieldCategory;|))))))
+
+(DEFUN |FiniteFieldCategory;| ()
+ (PROG (#0=#:G1393)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|FieldOfPrimeCharacteristic|) (|Finite|)
+ (|StepThrough|) (|DifferentialRing|)
+ (|mkCategory| '|domain|
+ '(((|charthRoot| ($ $)) T)
+ ((|conditionP|
+ ((|Union| (|Vector| $) "failed")
+ (|Matrix| $)))
+ T)
+ ((|factorsOfCyclicGroupSize|
+ ((|List|
+ (|Record|
+ (|:| |factor| (|Integer|))
+ (|:| |exponent| (|Integer|))))))
+ T)
+ ((|tableForDiscreteLogarithm|
+ ((|Table| (|PositiveInteger|)
+ (|NonNegativeInteger|))
+ (|Integer|)))
+ T)
+ ((|createPrimitiveElement| ($)) T)
+ ((|primitiveElement| ($)) T)
+ ((|primitive?| ((|Boolean|) $)) T)
+ ((|discreteLog|
+ ((|NonNegativeInteger|) $))
+ T)
+ ((|order| ((|PositiveInteger|) $)) T)
+ ((|representationType|
+ ((|Union| "prime" "polynomial"
+ "normal" "cyclic")))
+ T))
+ NIL
+ '((|PositiveInteger|)
+ (|NonNegativeInteger|) (|Boolean|)
+ (|Table| (|PositiveInteger|)
+ (|NonNegativeInteger|))
+ (|Integer|)
+ (|List| (|Record|
+ (|:| |factor| (|Integer|))
+ (|:| |exponent| (|Integer|))))
+ (|Matrix| $))
+ NIL))
+ |FiniteFieldCategory|)
+ (SETELT #0# 0 '(|FiniteFieldCategory|))))))
+
+(MAKEPROP '|FiniteFieldCategory| 'NILADIC T)
diff --git a/src/algebra/strap/FPS-.lsp b/src/algebra/strap/FPS-.lsp
new file mode 100644
index 00000000..56751bc4
--- /dev/null
+++ b/src/algebra/strap/FPS-.lsp
@@ -0,0 +1,50 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |FPS-;float;2IS;1| (|ma| |ex| $)
+ (SPADCALL |ma| |ex| (SPADCALL (QREFELT $ 8)) (QREFELT $ 10)))
+
+(DEFUN |FPS-;digits;Pi;2| ($)
+ (PROG (#0=#:G1389)
+ (RETURN
+ (PROG1 (LETT #0#
+ (MAX 1
+ (QUOTIENT2
+ (SPADCALL 4004
+ (- (SPADCALL (QREFELT $ 13)) 1)
+ (QREFELT $ 14))
+ 13301))
+ |FPS-;digits;Pi;2|)
+ (|check-subtype| (> #0# 0) '(|PositiveInteger|) #0#)))))
+
+(DEFUN |FloatingPointSystem&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|FloatingPointSystem&|))
+ (LETT |dv$| (LIST '|FloatingPointSystem&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 17) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasAttribute| |#1| '|arbitraryExponent|)
+ (|HasAttribute| |#1| '|arbitraryPrecision|))) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|FloatingPointSystem&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|PositiveInteger|)
+ (0 . |base|) (|Integer|) (4 . |float|) |FPS-;float;2IS;1|
+ (11 . |One|) (15 . |bits|) (19 . *) (25 . |max|)
+ |FPS-;digits;Pi;2|)
+ '#(|float| 29 |digits| 35) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 16
+ '(0 6 7 8 3 6 0 9 9 7 10 0 6 0 12 0 6 7
+ 13 2 9 0 7 0 14 0 6 0 15 2 0 0 9 9 11
+ 0 0 7 16)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/FPS.lsp b/src/algebra/strap/FPS.lsp
new file mode 100644
index 00000000..75e426f7
--- /dev/null
+++ b/src/algebra/strap/FPS.lsp
@@ -0,0 +1,81 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |FloatingPointSystem;AL| 'NIL)
+
+(DEFUN |FloatingPointSystem| ()
+ (LET (#:G1387)
+ (COND
+ (|FloatingPointSystem;AL|)
+ (T (SETQ |FloatingPointSystem;AL| (|FloatingPointSystem;|))))))
+
+(DEFUN |FloatingPointSystem;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|RealNumberSystem|)
+ (|mkCategory| '|domain|
+ '(((|float| ($ (|Integer|) (|Integer|)))
+ T)
+ ((|float| ($ (|Integer|) (|Integer|)
+ (|PositiveInteger|)))
+ T)
+ ((|order| ((|Integer|) $)) T)
+ ((|base| ((|PositiveInteger|))) T)
+ ((|exponent| ((|Integer|) $)) T)
+ ((|mantissa| ((|Integer|) $)) T)
+ ((|bits| ((|PositiveInteger|))) T)
+ ((|digits| ((|PositiveInteger|))) T)
+ ((|precision| ((|PositiveInteger|)))
+ T)
+ ((|bits| ((|PositiveInteger|)
+ (|PositiveInteger|)))
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryPrecision|)))
+ ((|digits|
+ ((|PositiveInteger|)
+ (|PositiveInteger|)))
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryPrecision|)))
+ ((|precision|
+ ((|PositiveInteger|)
+ (|PositiveInteger|)))
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryPrecision|)))
+ ((|increasePrecision|
+ ((|PositiveInteger|) (|Integer|)))
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryPrecision|)))
+ ((|decreasePrecision|
+ ((|PositiveInteger|) (|Integer|)))
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryPrecision|)))
+ ((|min| ($))
+ (AND (|not|
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryPrecision|)))
+ (|not|
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryExponent|)))))
+ ((|max| ($))
+ (AND (|not|
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryPrecision|)))
+ (|not|
+ (|has| $
+ (ATTRIBUTE
+ |arbitraryExponent|))))))
+ '((|approximate| T))
+ '((|PositiveInteger|) (|Integer|)) NIL))
+ |FloatingPointSystem|)
+ (SETELT #0# 0 '(|FloatingPointSystem|))))))
+
+(MAKEPROP '|FloatingPointSystem| 'NILADIC T)
diff --git a/src/algebra/strap/GCDDOM-.lsp b/src/algebra/strap/GCDDOM-.lsp
new file mode 100644
index 00000000..b5c3cd1f
--- /dev/null
+++ b/src/algebra/strap/GCDDOM-.lsp
@@ -0,0 +1,208 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |GCDDOM-;lcm;3S;1| (|x| |y| $)
+ (PROG (LCM)
+ (RETURN
+ (SEQ (COND
+ ((OR (SPADCALL |y| (|spadConstant| $ 7) (QREFELT $ 9))
+ (SPADCALL |x| (|spadConstant| $ 7) (QREFELT $ 9)))
+ (|spadConstant| $ 7))
+ ('T
+ (SEQ (LETT LCM
+ (SPADCALL |y|
+ (SPADCALL |x| |y| (QREFELT $ 10))
+ (QREFELT $ 12))
+ |GCDDOM-;lcm;3S;1|)
+ (EXIT (COND
+ ((QEQCAR LCM 0)
+ (SPADCALL |x| (QCDR LCM) (QREFELT $ 13)))
+ ('T (|error| "bad gcd in lcm computation")))))))))))
+
+(DEFUN |GCDDOM-;lcm;LS;2| (|l| $)
+ (SPADCALL (ELT $ 15) |l| (|spadConstant| $ 16) (|spadConstant| $ 7)
+ (QREFELT $ 19)))
+
+(DEFUN |GCDDOM-;gcd;LS;3| (|l| $)
+ (SPADCALL (ELT $ 10) |l| (|spadConstant| $ 7) (|spadConstant| $ 16)
+ (QREFELT $ 19)))
+
+(DEFUN |GCDDOM-;gcdPolynomial;3Sup;4| (|p1| |p2| $)
+ (PROG (|e2| |e1| |c1| |p| |c2| #0=#:G1406)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |p1| (QREFELT $ 24))
+ (SPADCALL |p2| (QREFELT $ 25)))
+ ((SPADCALL |p2| (QREFELT $ 24))
+ (SPADCALL |p1| (QREFELT $ 25)))
+ ('T
+ (SEQ (LETT |c1| (SPADCALL |p1| (QREFELT $ 26))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (LETT |c2| (SPADCALL |p2| (QREFELT $ 26))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (LETT |p1|
+ (PROG2 (LETT #0#
+ (SPADCALL |p1| |c1|
+ (QREFELT $ 27))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|SparseUnivariatePolynomial|
+ (QREFELT $ 6))
+ #0#))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (LETT |p2|
+ (PROG2 (LETT #0#
+ (SPADCALL |p2| |c2|
+ (QREFELT $ 27))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|SparseUnivariatePolynomial|
+ (QREFELT $ 6))
+ #0#))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (SEQ (LETT |e1| (SPADCALL |p1| (QREFELT $ 29))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (EXIT (COND
+ ((< 0 |e1|)
+ (LETT |p1|
+ (PROG2
+ (LETT #0#
+ (SPADCALL |p1|
+ (SPADCALL
+ (|spadConstant| $ 16) |e1|
+ (QREFELT $ 32))
+ (QREFELT $ 33))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|SparseUnivariatePolynomial|
+ (QREFELT $ 6))
+ #0#))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)))))
+ (SEQ (LETT |e2| (SPADCALL |p2| (QREFELT $ 29))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (EXIT (COND
+ ((< 0 |e2|)
+ (LETT |p2|
+ (PROG2
+ (LETT #0#
+ (SPADCALL |p2|
+ (SPADCALL
+ (|spadConstant| $ 16) |e2|
+ (QREFELT $ 32))
+ (QREFELT $ 33))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|SparseUnivariatePolynomial|
+ (QREFELT $ 6))
+ #0#))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)))))
+ (LETT |e1| (MIN |e1| |e2|)
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (LETT |c1| (SPADCALL |c1| |c2| (QREFELT $ 10))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (LETT |p1|
+ (COND
+ ((OR (EQL (SPADCALL |p1| (QREFELT $ 34)) 0)
+ (EQL (SPADCALL |p2| (QREFELT $ 34)) 0))
+ (SPADCALL |c1| 0 (QREFELT $ 32)))
+ ('T
+ (SEQ (LETT |p|
+ (SPADCALL |p1| |p2|
+ (QREFELT $ 35))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (EXIT (COND
+ ((EQL
+ (SPADCALL |p|
+ (QREFELT $ 34))
+ 0)
+ (SPADCALL |c1| 0
+ (QREFELT $ 32)))
+ ('T
+ (SEQ
+ (LETT |c2|
+ (SPADCALL
+ (SPADCALL |p1|
+ (QREFELT $ 36))
+ (SPADCALL |p2|
+ (QREFELT $ 36))
+ (QREFELT $ 10))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (EXIT
+ (SPADCALL
+ (SPADCALL |c1|
+ (SPADCALL
+ (PROG2
+ (LETT #0#
+ (SPADCALL
+ (SPADCALL |c2| |p|
+ (QREFELT $ 37))
+ (SPADCALL |p|
+ (QREFELT $ 36))
+ (QREFELT $ 27))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (QCDR #0#)
+ (|check-union|
+ (QEQCAR #0# 0)
+ (|SparseUnivariatePolynomial|
+ (QREFELT $ 6))
+ #0#))
+ (QREFELT $ 38))
+ (QREFELT $ 37))
+ (QREFELT $ 25))))))))))
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ (EXIT (COND
+ ((ZEROP |e1|) |p1|)
+ ('T
+ (SPADCALL
+ (SPADCALL (|spadConstant| $ 16) |e1|
+ (QREFELT $ 32))
+ |p1| (QREFELT $ 39))))))))))))
+
+(DEFUN |GcdDomain&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|GcdDomain&|))
+ (LETT |dv$| (LIST '|GcdDomain&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 42) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|GcdDomain&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (0 . |Zero|)
+ (|Boolean|) (4 . =) (10 . |gcd|) (|Union| $ '"failed")
+ (16 . |exquo|) (22 . *) |GCDDOM-;lcm;3S;1| (28 . |lcm|)
+ (34 . |One|) (|Mapping| 6 6 6) (|List| 6) (38 . |reduce|)
+ (|List| $) |GCDDOM-;lcm;LS;2| |GCDDOM-;gcd;LS;3|
+ (|SparseUnivariatePolynomial| 6) (46 . |zero?|)
+ (51 . |unitCanonical|) (56 . |content|) (61 . |exquo|)
+ (|NonNegativeInteger|) (67 . |minimumDegree|)
+ (72 . |Zero|) (76 . |One|) (80 . |monomial|)
+ (86 . |exquo|) (92 . |degree|) (97 . |subResultantGcd|)
+ (103 . |leadingCoefficient|) (108 . *)
+ (114 . |primitivePart|) (119 . *)
+ (|SparseUnivariatePolynomial| $)
+ |GCDDOM-;gcdPolynomial;3Sup;4|)
+ '#(|lcm| 125 |gcdPolynomial| 136 |gcd| 142) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 41
+ '(0 6 0 7 2 6 8 0 0 9 2 6 0 0 0 10 2 6
+ 11 0 0 12 2 6 0 0 0 13 2 6 0 0 0 15 0
+ 6 0 16 4 18 6 17 0 6 6 19 1 23 8 0 24
+ 1 23 0 0 25 1 23 6 0 26 2 23 11 0 6
+ 27 1 23 28 0 29 0 23 0 30 0 23 0 31 2
+ 23 0 6 28 32 2 23 11 0 0 33 1 23 28 0
+ 34 2 23 0 0 0 35 1 23 6 0 36 2 23 0 6
+ 0 37 1 23 0 0 38 2 23 0 0 0 39 1 0 0
+ 20 21 2 0 0 0 0 14 2 0 40 40 40 41 1
+ 0 0 20 22)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/GCDDOM.lsp b/src/algebra/strap/GCDDOM.lsp
new file mode 100644
index 00000000..1756b55f
--- /dev/null
+++ b/src/algebra/strap/GCDDOM.lsp
@@ -0,0 +1,32 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |GcdDomain;AL| 'NIL)
+
+(DEFUN |GcdDomain| ()
+ (LET (#:G1393)
+ (COND (|GcdDomain;AL|) (T (SETQ |GcdDomain;AL| (|GcdDomain;|))))))
+
+(DEFUN |GcdDomain;| ()
+ (PROG (#0=#:G1391)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|IntegralDomain|)
+ (|mkCategory| '|domain|
+ '(((|gcd| ($ $ $)) T)
+ ((|gcd| ($ (|List| $))) T)
+ ((|lcm| ($ $ $)) T)
+ ((|lcm| ($ (|List| $))) T)
+ ((|gcdPolynomial|
+ ((|SparseUnivariatePolynomial| $)
+ (|SparseUnivariatePolynomial| $)
+ (|SparseUnivariatePolynomial| $)))
+ T))
+ NIL
+ '((|SparseUnivariatePolynomial| $)
+ (|List| $))
+ NIL))
+ |GcdDomain|)
+ (SETELT #0# 0 '(|GcdDomain|))))))
+
+(MAKEPROP '|GcdDomain| 'NILADIC T)
diff --git a/src/algebra/strap/HOAGG-.lsp b/src/algebra/strap/HOAGG-.lsp
new file mode 100644
index 00000000..de348637
--- /dev/null
+++ b/src/algebra/strap/HOAGG-.lsp
@@ -0,0 +1,288 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |HOAGG-;eval;ALA;1| (|u| |l| $)
+ (SPADCALL (CONS #'|HOAGG-;eval;ALA;1!0| (VECTOR $ |l|)) |u|
+ (QREFELT $ 11)))
+
+(DEFUN |HOAGG-;eval;ALA;1!0| (|#1| $$)
+ (SPADCALL |#1| (QREFELT $$ 1) (QREFELT (QREFELT $$ 0) 9)))
+
+(DEFUN |HOAGG-;#;ANni;2| (|c| $)
+ (LENGTH (SPADCALL |c| (QREFELT $ 14))))
+
+(DEFUN |HOAGG-;any?;MAB;3| (|f| |c| $)
+ (PROG (|x| #0=#:G1409 #1=#:G1406 #2=#:G1404 #3=#:G1405)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #3# NIL |HOAGG-;any?;MAB;3|)
+ (SEQ (LETT |x| NIL |HOAGG-;any?;MAB;3|)
+ (LETT #0# (SPADCALL |c| (QREFELT $ 14))
+ |HOAGG-;any?;MAB;3|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |x| (CAR #0#) |HOAGG-;any?;MAB;3|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (PROGN
+ (LETT #1# (SPADCALL |x| |f|)
+ |HOAGG-;any?;MAB;3|)
+ (COND
+ (#3# (LETT #2#
+ (COND (#2# 'T) ('T #1#))
+ |HOAGG-;any?;MAB;3|))
+ ('T
+ (PROGN
+ (LETT #2# #1# |HOAGG-;any?;MAB;3|)
+ (LETT #3# 'T |HOAGG-;any?;MAB;3|)))))))
+ (LETT #0# (CDR #0#) |HOAGG-;any?;MAB;3|) (GO G190)
+ G191 (EXIT NIL))
+ (COND (#3# #2#) ('T 'NIL)))))))
+
+(DEFUN |HOAGG-;every?;MAB;4| (|f| |c| $)
+ (PROG (|x| #0=#:G1414 #1=#:G1412 #2=#:G1410 #3=#:G1411)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #3# NIL |HOAGG-;every?;MAB;4|)
+ (SEQ (LETT |x| NIL |HOAGG-;every?;MAB;4|)
+ (LETT #0# (SPADCALL |c| (QREFELT $ 14))
+ |HOAGG-;every?;MAB;4|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |x| (CAR #0#) |HOAGG-;every?;MAB;4|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (PROGN
+ (LETT #1# (SPADCALL |x| |f|)
+ |HOAGG-;every?;MAB;4|)
+ (COND
+ (#3# (LETT #2#
+ (COND (#2# #1#) ('T 'NIL))
+ |HOAGG-;every?;MAB;4|))
+ ('T
+ (PROGN
+ (LETT #2# #1#
+ |HOAGG-;every?;MAB;4|)
+ (LETT #3# 'T |HOAGG-;every?;MAB;4|)))))))
+ (LETT #0# (CDR #0#) |HOAGG-;every?;MAB;4|) (GO G190)
+ G191 (EXIT NIL))
+ (COND (#3# #2#) ('T 'T)))))))
+
+(DEFUN |HOAGG-;count;MANni;5| (|f| |c| $)
+ (PROG (|x| #0=#:G1419 #1=#:G1417 #2=#:G1415 #3=#:G1416)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #3# NIL |HOAGG-;count;MANni;5|)
+ (SEQ (LETT |x| NIL |HOAGG-;count;MANni;5|)
+ (LETT #0# (SPADCALL |c| (QREFELT $ 14))
+ |HOAGG-;count;MANni;5|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |x| (CAR #0#) |HOAGG-;count;MANni;5|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((SPADCALL |x| |f|)
+ (PROGN
+ (LETT #1# 1 |HOAGG-;count;MANni;5|)
+ (COND
+ (#3#
+ (LETT #2# (+ #2# #1#)
+ |HOAGG-;count;MANni;5|))
+ ('T
+ (PROGN
+ (LETT #2# #1#
+ |HOAGG-;count;MANni;5|)
+ (LETT #3# 'T
+ |HOAGG-;count;MANni;5|)))))))))
+ (LETT #0# (CDR #0#) |HOAGG-;count;MANni;5|) (GO G190)
+ G191 (EXIT NIL))
+ (COND (#3# #2#) ('T 0)))))))
+
+(DEFUN |HOAGG-;members;AL;6| (|x| $) (SPADCALL |x| (QREFELT $ 14)))
+
+(DEFUN |HOAGG-;count;SANni;7| (|s| |x| $)
+ (SPADCALL (CONS #'|HOAGG-;count;SANni;7!0| (VECTOR $ |s|)) |x|
+ (QREFELT $ 24)))
+
+(DEFUN |HOAGG-;count;SANni;7!0| (|#1| $$)
+ (SPADCALL (QREFELT $$ 1) |#1| (QREFELT (QREFELT $$ 0) 23)))
+
+(DEFUN |HOAGG-;member?;SAB;8| (|e| |c| $)
+ (SPADCALL (CONS #'|HOAGG-;member?;SAB;8!0| (VECTOR $ |e|)) |c|
+ (QREFELT $ 26)))
+
+(DEFUN |HOAGG-;member?;SAB;8!0| (|#1| $$)
+ (SPADCALL (QREFELT $$ 1) |#1| (QREFELT (QREFELT $$ 0) 23)))
+
+(DEFUN |HOAGG-;=;2AB;9| (|x| |y| $)
+ (PROG (|b| #0=#:G1429 |a| #1=#:G1428 #2=#:G1425 #3=#:G1423
+ #4=#:G1424)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |x| (SPADCALL |y| (QREFELT $ 28))
+ (QREFELT $ 29))
+ (PROGN
+ (LETT #4# NIL |HOAGG-;=;2AB;9|)
+ (SEQ (LETT |b| NIL |HOAGG-;=;2AB;9|)
+ (LETT #0# (SPADCALL |y| (QREFELT $ 14))
+ |HOAGG-;=;2AB;9|)
+ (LETT |a| NIL |HOAGG-;=;2AB;9|)
+ (LETT #1# (SPADCALL |x| (QREFELT $ 14))
+ |HOAGG-;=;2AB;9|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |a| (CAR #1#) |HOAGG-;=;2AB;9|)
+ NIL)
+ (ATOM #0#)
+ (PROGN
+ (LETT |b| (CAR #0#) |HOAGG-;=;2AB;9|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (PROGN
+ (LETT #2#
+ (SPADCALL |a| |b|
+ (QREFELT $ 23))
+ |HOAGG-;=;2AB;9|)
+ (COND
+ (#4#
+ (LETT #3#
+ (COND (#3# #2#) ('T 'NIL))
+ |HOAGG-;=;2AB;9|))
+ ('T
+ (PROGN
+ (LETT #3# #2# |HOAGG-;=;2AB;9|)
+ (LETT #4# 'T |HOAGG-;=;2AB;9|)))))))
+ (LETT #1#
+ (PROG1 (CDR #1#)
+ (LETT #0# (CDR #0#) |HOAGG-;=;2AB;9|))
+ |HOAGG-;=;2AB;9|)
+ (GO G190) G191 (EXIT NIL))
+ (COND (#4# #3#) ('T 'T))))
+ ('T 'NIL))))))
+
+(DEFUN |HOAGG-;coerce;AOf;10| (|x| $)
+ (PROG (#0=#:G1433 |a| #1=#:G1434)
+ (RETURN
+ (SEQ (SPADCALL
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |HOAGG-;coerce;AOf;10|)
+ (SEQ (LETT |a| NIL |HOAGG-;coerce;AOf;10|)
+ (LETT #1# (SPADCALL |x| (QREFELT $ 14))
+ |HOAGG-;coerce;AOf;10|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |a| (CAR #1#)
+ |HOAGG-;coerce;AOf;10|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |a| (QREFELT $ 32))
+ #0#)
+ |HOAGG-;coerce;AOf;10|)))
+ (LETT #1# (CDR #1#) |HOAGG-;coerce;AOf;10|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ (QREFELT $ 34))
+ (QREFELT $ 35))))))
+
+(DEFUN |HomogeneousAggregate&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|HomogeneousAggregate&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$|
+ (LIST '|HomogeneousAggregate&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (GETREFV 38) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasAttribute| |#1| '|finiteAggregate|)
+ (|HasAttribute| |#1| '|shallowlyMutable|)
+ (|HasCategory| |#2|
+ (LIST '|Evalable| (|devaluate| |#2|)))
+ (|HasCategory| |#2| '(|SetCategory|))
+ (|HasCategory| |#2|
+ '(|CoercibleTo| (|OutputForm|))))) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (QSETREFV $ 12
+ (CONS (|dispatchFunction| |HOAGG-;eval;ALA;1|) $))))
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (PROGN
+ (QSETREFV $ 16
+ (CONS (|dispatchFunction| |HOAGG-;#;ANni;2|) $))
+ (QSETREFV $ 19
+ (CONS (|dispatchFunction| |HOAGG-;any?;MAB;3|) $))
+ (QSETREFV $ 20
+ (CONS (|dispatchFunction| |HOAGG-;every?;MAB;4|) $))
+ (QSETREFV $ 21
+ (CONS (|dispatchFunction| |HOAGG-;count;MANni;5|) $))
+ (QSETREFV $ 22
+ (CONS (|dispatchFunction| |HOAGG-;members;AL;6|) $))
+ (COND
+ ((|testBitVector| |pv$| 4)
+ (PROGN
+ (QSETREFV $ 25
+ (CONS (|dispatchFunction| |HOAGG-;count;SANni;7|)
+ $))
+ (QSETREFV $ 27
+ (CONS (|dispatchFunction| |HOAGG-;member?;SAB;8|)
+ $))
+ (QSETREFV $ 30
+ (CONS (|dispatchFunction| |HOAGG-;=;2AB;9|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 5)
+ (QSETREFV $ 36
+ (CONS (|dispatchFunction| |HOAGG-;coerce;AOf;10|)
+ $)))))))
+ $))))
+
+(MAKEPROP '|HomogeneousAggregate&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|List| 37) (0 . |eval|) (|Mapping| 7 7) (6 . |map|)
+ (12 . |eval|) (|List| 7) (18 . |parts|)
+ (|NonNegativeInteger|) (23 . |#|) (|Boolean|)
+ (|Mapping| 17 7) (28 . |any?|) (34 . |every?|)
+ (40 . |count|) (46 . |members|) (51 . =) (57 . |count|)
+ (63 . |count|) (69 . |any?|) (75 . |member?|) (81 . |#|)
+ (86 . |size?|) (92 . =) (|OutputForm|) (98 . |coerce|)
+ (|List| $) (103 . |commaSeparate|) (108 . |bracket|)
+ (113 . |coerce|) (|Equation| 7))
+ '#(|members| 118 |member?| 123 |every?| 129 |eval| 135
+ |count| 141 |coerce| 153 |any?| 158 = 164 |#| 170)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 36
+ '(2 7 0 0 8 9 2 6 0 10 0 11 2 0 0 0 8
+ 12 1 6 13 0 14 1 0 15 0 16 2 0 17 18
+ 0 19 2 0 17 18 0 20 2 0 15 18 0 21 1
+ 0 13 0 22 2 7 17 0 0 23 2 6 15 18 0
+ 24 2 0 15 7 0 25 2 6 17 18 0 26 2 0
+ 17 7 0 27 1 6 15 0 28 2 6 17 0 15 29
+ 2 0 17 0 0 30 1 7 31 0 32 1 31 0 33
+ 34 1 31 0 0 35 1 0 31 0 36 1 0 13 0
+ 22 2 0 17 7 0 27 2 0 17 18 0 20 2 0 0
+ 0 8 12 2 0 15 7 0 25 2 0 15 18 0 21 1
+ 0 31 0 36 2 0 17 18 0 19 2 0 17 0 0
+ 30 1 0 15 0 16)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/HOAGG.lsp b/src/algebra/strap/HOAGG.lsp
new file mode 100644
index 00000000..1dc9a3bf
--- /dev/null
+++ b/src/algebra/strap/HOAGG.lsp
@@ -0,0 +1,112 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |HomogeneousAggregate;CAT| 'NIL)
+
+(DEFPARAMETER |HomogeneousAggregate;AL| 'NIL)
+
+(DEFUN |HomogeneousAggregate| (#0=#:G1399)
+ (LET (#1=#:G1400)
+ (COND
+ ((SETQ #1# (|assoc| (|devaluate| #0#) |HomogeneousAggregate;AL|))
+ (CDR #1#))
+ (T (SETQ |HomogeneousAggregate;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1# (|HomogeneousAggregate;| #0#)))
+ |HomogeneousAggregate;AL|))
+ #1#))))
+
+(DEFUN |HomogeneousAggregate;| (|t#1|)
+ (PROG (#0=#:G1398)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (COND
+ (|HomogeneousAggregate;CAT|)
+ ('T
+ (LETT |HomogeneousAggregate;CAT|
+ (|Join| (|Aggregate|)
+ (|mkCategory| '|domain|
+ '(((|map|
+ ($ (|Mapping| |t#1| |t#1|)
+ $))
+ T)
+ ((|map!|
+ ($ (|Mapping| |t#1| |t#1|)
+ $))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|any?|
+ ((|Boolean|)
+ (|Mapping| (|Boolean|)
+ |t#1|)
+ $))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|every?|
+ ((|Boolean|)
+ (|Mapping| (|Boolean|)
+ |t#1|)
+ $))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|count|
+ ((|NonNegativeInteger|)
+ (|Mapping| (|Boolean|)
+ |t#1|)
+ $))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|parts|
+ ((|List| |t#1|) $))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|members|
+ ((|List| |t#1|) $))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))
+ ((|count|
+ ((|NonNegativeInteger|)
+ |t#1| $))
+ (AND
+ (|has| |t#1|
+ (|SetCategory|))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|))))
+ ((|member?|
+ ((|Boolean|) |t#1| $))
+ (AND
+ (|has| |t#1|
+ (|SetCategory|))
+ (|has| $
+ (ATTRIBUTE
+ |finiteAggregate|)))))
+ '(((|CoercibleTo|
+ (|OutputForm|))
+ (|has| |t#1|
+ (|CoercibleTo|
+ (|OutputForm|))))
+ ((|SetCategory|)
+ (|has| |t#1|
+ (|SetCategory|)))
+ ((|Evalable| |t#1|)
+ (AND
+ (|has| |t#1|
+ (|Evalable| |t#1|))
+ (|has| |t#1|
+ (|SetCategory|)))))
+ '((|Boolean|)
+ (|NonNegativeInteger|)
+ (|List| |t#1|))
+ NIL))
+ . #1=(|HomogeneousAggregate|))))) . #1#)
+ (SETELT #0# 0
+ (LIST '|HomogeneousAggregate| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/ILIST.lsp b/src/algebra/strap/ILIST.lsp
new file mode 100644
index 00000000..569cd271
--- /dev/null
+++ b/src/algebra/strap/ILIST.lsp
@@ -0,0 +1,621 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|ILIST;#;$Nni;1| '|SPADreplace| 'LENGTH)
+
+(DEFUN |ILIST;#;$Nni;1| (|x| $) (LENGTH |x|))
+
+(PUT '|ILIST;concat;S2$;2| '|SPADreplace| 'CONS)
+
+(DEFUN |ILIST;concat;S2$;2| (|s| |x| $) (CONS |s| |x|))
+
+(PUT '|ILIST;eq?;2$B;3| '|SPADreplace| 'EQ)
+
+(DEFUN |ILIST;eq?;2$B;3| (|x| |y| $) (EQ |x| |y|))
+
+(PUT '|ILIST;first;$S;4| '|SPADreplace| '|SPADfirst|)
+
+(DEFUN |ILIST;first;$S;4| (|x| $) (|SPADfirst| |x|))
+
+(PUT '|ILIST;elt;$firstS;5| '|SPADreplace|
+ '(XLAM (|x| "first") (|SPADfirst| |x|)))
+
+(DEFUN |ILIST;elt;$firstS;5| (|x| T0 $) (|SPADfirst| |x|))
+
+(PUT '|ILIST;empty;$;6| '|SPADreplace| '(XLAM NIL NIL))
+
+(DEFUN |ILIST;empty;$;6| ($) NIL)
+
+(PUT '|ILIST;empty?;$B;7| '|SPADreplace| 'NULL)
+
+(DEFUN |ILIST;empty?;$B;7| (|x| $) (NULL |x|))
+
+(PUT '|ILIST;rest;2$;8| '|SPADreplace| 'CDR)
+
+(DEFUN |ILIST;rest;2$;8| (|x| $) (CDR |x|))
+
+(PUT '|ILIST;elt;$rest$;9| '|SPADreplace|
+ '(XLAM (|x| "rest") (CDR |x|)))
+
+(DEFUN |ILIST;elt;$rest$;9| (|x| T1 $) (CDR |x|))
+
+(DEFUN |ILIST;setfirst!;$2S;10| (|x| |s| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 17))
+ (|error| "Cannot update an empty list"))
+ ('T (QCAR (RPLACA |x| |s|)))))
+
+(DEFUN |ILIST;setelt;$first2S;11| (|x| T2 |s| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 17))
+ (|error| "Cannot update an empty list"))
+ ('T (QCAR (RPLACA |x| |s|)))))
+
+(DEFUN |ILIST;setrest!;3$;12| (|x| |y| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 17))
+ (|error| "Cannot update an empty list"))
+ ('T (QCDR (RPLACD |x| |y|)))))
+
+(DEFUN |ILIST;setelt;$rest2$;13| (|x| T3 |y| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 17))
+ (|error| "Cannot update an empty list"))
+ ('T (QCDR (RPLACD |x| |y|)))))
+
+(PUT '|ILIST;construct;L$;14| '|SPADreplace| '(XLAM (|l|) |l|))
+
+(DEFUN |ILIST;construct;L$;14| (|l| $) |l|)
+
+(PUT '|ILIST;parts;$L;15| '|SPADreplace| '(XLAM (|s|) |s|))
+
+(DEFUN |ILIST;parts;$L;15| (|s| $) |s|)
+
+(PUT '|ILIST;reverse!;2$;16| '|SPADreplace| 'NREVERSE)
+
+(DEFUN |ILIST;reverse!;2$;16| (|x| $) (NREVERSE |x|))
+
+(PUT '|ILIST;reverse;2$;17| '|SPADreplace| 'REVERSE)
+
+(DEFUN |ILIST;reverse;2$;17| (|x| $) (REVERSE |x|))
+
+(DEFUN |ILIST;minIndex;$I;18| (|x| $) (QREFELT $ 7))
+
+(DEFUN |ILIST;rest;$Nni$;19| (|x| |n| $)
+ (PROG (|i|)
+ (RETURN
+ (SEQ (SEQ (LETT |i| 1 |ILIST;rest;$Nni$;19|) G190
+ (COND ((QSGREATERP |i| |n|) (GO G191)))
+ (SEQ (COND
+ ((NULL |x|) (|error| "index out of range")))
+ (EXIT (LETT |x| (QCDR |x|) |ILIST;rest;$Nni$;19|)))
+ (LETT |i| (QSADD1 |i|) |ILIST;rest;$Nni$;19|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT |x|)))))
+
+(DEFUN |ILIST;copy;2$;20| (|x| $)
+ (PROG (|i| |y|)
+ (RETURN
+ (SEQ (LETT |y| (SPADCALL (QREFELT $ 16)) |ILIST;copy;2$;20|)
+ (SEQ (LETT |i| 0 |ILIST;copy;2$;20|) G190
+ (COND
+ ((NULL (SPADCALL (NULL |x|) (QREFELT $ 33)))
+ (GO G191)))
+ (SEQ (COND
+ ((EQ |i| 1000)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 34))
+ (|error| "cyclic list")))))
+ (LETT |y| (CONS (QCAR |x|) |y|)
+ |ILIST;copy;2$;20|)
+ (EXIT (LETT |x| (QCDR |x|) |ILIST;copy;2$;20|)))
+ (LETT |i| (QSADD1 |i|) |ILIST;copy;2$;20|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT (NREVERSE |y|))))))
+
+(DEFUN |ILIST;coerce;$Of;21| (|x| $)
+ (PROG (|s| |y| |z|)
+ (RETURN
+ (SEQ (LETT |y| NIL |ILIST;coerce;$Of;21|)
+ (LETT |s| (SPADCALL |x| (QREFELT $ 36))
+ |ILIST;coerce;$Of;21|)
+ (SEQ G190 (COND ((NULL (NEQ |x| |s|)) (GO G191)))
+ (SEQ (LETT |y|
+ (CONS (SPADCALL
+ (SPADCALL |x| (QREFELT $ 13))
+ (QREFELT $ 38))
+ |y|)
+ |ILIST;coerce;$Of;21|)
+ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 18))
+ |ILIST;coerce;$Of;21|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |y| (NREVERSE |y|) |ILIST;coerce;$Of;21|)
+ (EXIT (COND
+ ((SPADCALL |s| (QREFELT $ 17))
+ (SPADCALL |y| (QREFELT $ 40)))
+ ('T
+ (SEQ (LETT |z|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |x| (QREFELT $ 13))
+ (QREFELT $ 38))
+ (QREFELT $ 42))
+ |ILIST;coerce;$Of;21|)
+ (SEQ G190
+ (COND
+ ((NULL (NEQ |s|
+ (SPADCALL |x| (QREFELT $ 18))))
+ (GO G191)))
+ (SEQ (LETT |x|
+ (SPADCALL |x| (QREFELT $ 18))
+ |ILIST;coerce;$Of;21|)
+ (EXIT
+ (LETT |z|
+ (CONS
+ (SPADCALL
+ (SPADCALL |x| (QREFELT $ 13))
+ (QREFELT $ 38))
+ |z|)
+ |ILIST;coerce;$Of;21|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL
+ (SPADCALL |y|
+ (SPADCALL
+ (SPADCALL (NREVERSE |z|)
+ (QREFELT $ 43))
+ (QREFELT $ 44))
+ (QREFELT $ 45))
+ (QREFELT $ 40)))))))))))
+
+(DEFUN |ILIST;=;2$B;22| (|x| |y| $)
+ (PROG (#0=#:G1469)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((EQ |x| |y|) 'T)
+ ('T
+ (SEQ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |x|) 'NIL)
+ ('T
+ (SPADCALL (NULL |y|)
+ (QREFELT $ 33)))))
+ (GO G191)))
+ (SEQ (EXIT
+ (COND
+ ((NULL
+ (SPADCALL (QCAR |x|) (QCAR |y|)
+ (QREFELT $ 47)))
+ (PROGN
+ (LETT #0# 'NIL
+ |ILIST;=;2$B;22|)
+ (GO #0#)))
+ ('T
+ (SEQ
+ (LETT |x| (QCDR |x|)
+ |ILIST;=;2$B;22|)
+ (EXIT
+ (LETT |y| (QCDR |y|)
+ |ILIST;=;2$B;22|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((NULL |x|) (NULL |y|))
+ ('T 'NIL)))))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |ILIST;latex;$S;23| (|x| $)
+ (PROG (|s|)
+ (RETURN
+ (SEQ (LETT |s| "\\left[" |ILIST;latex;$S;23|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |x|) (QREFELT $ 33)))
+ (GO G191)))
+ (SEQ (LETT |s|
+ (STRCONC |s|
+ (SPADCALL (QCAR |x|)
+ (QREFELT $ 50)))
+ |ILIST;latex;$S;23|)
+ (LETT |x| (QCDR |x|) |ILIST;latex;$S;23|)
+ (EXIT (COND
+ ((NULL (NULL |x|))
+ (LETT |s| (STRCONC |s| ", ")
+ |ILIST;latex;$S;23|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (STRCONC |s| " \\right]"))))))
+
+(DEFUN |ILIST;member?;S$B;24| (|s| |x| $)
+ (PROG (#0=#:G1477)
+ (RETURN
+ (SEQ (EXIT (SEQ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |x|)
+ (QREFELT $ 33)))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((SPADCALL |s| (QCAR |x|)
+ (QREFELT $ 47))
+ (PROGN
+ (LETT #0# 'T
+ |ILIST;member?;S$B;24|)
+ (GO #0#)))
+ ('T
+ (LETT |x| (QCDR |x|)
+ |ILIST;member?;S$B;24|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT 'NIL)))
+ #0# (EXIT #0#)))))
+
+(DEFUN |ILIST;concat!;3$;25| (|x| |y| $)
+ (PROG (|z|)
+ (RETURN
+ (SEQ (COND
+ ((NULL |x|)
+ (COND
+ ((NULL |y|) |x|)
+ ('T
+ (SEQ (PUSH (SPADCALL |y| (QREFELT $ 13)) |x|)
+ (QRPLACD |x| (SPADCALL |y| (QREFELT $ 18)))
+ (EXIT |x|)))))
+ ('T
+ (SEQ (LETT |z| |x| |ILIST;concat!;3$;25|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL (QCDR |z|))
+ (QREFELT $ 33)))
+ (GO G191)))
+ (SEQ (EXIT (LETT |z| (QCDR |z|)
+ |ILIST;concat!;3$;25|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (QRPLACD |z| |y|) (EXIT |x|))))))))
+
+(DEFUN |ILIST;removeDuplicates!;2$;26| (|l| $)
+ (PROG (|f| |p| |pr| |pp|)
+ (RETURN
+ (SEQ (LETT |p| |l| |ILIST;removeDuplicates!;2$;26|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |p|) (QREFELT $ 33)))
+ (GO G191)))
+ (SEQ (LETT |pp| |p| |ILIST;removeDuplicates!;2$;26|)
+ (LETT |f| (QCAR |p|)
+ |ILIST;removeDuplicates!;2$;26|)
+ (LETT |p| (QCDR |p|)
+ |ILIST;removeDuplicates!;2$;26|)
+ (EXIT (SEQ G190
+ (COND
+ ((NULL
+ (SPADCALL
+ (NULL
+ (LETT |pr| (QCDR |pp|)
+ |ILIST;removeDuplicates!;2$;26|))
+ (QREFELT $ 33)))
+ (GO G191)))
+ (SEQ (EXIT
+ (COND
+ ((SPADCALL (QCAR |pr|) |f|
+ (QREFELT $ 47))
+ (QRPLACD |pp| (QCDR |pr|)))
+ ('T
+ (LETT |pp| |pr|
+ |ILIST;removeDuplicates!;2$;26|)))))
+ NIL (GO G190) G191 (EXIT NIL))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |l|)))))
+
+(DEFUN |ILIST;sort!;M2$;27| (|f| |l| $)
+ (|ILIST;mergeSort| |f| |l| (SPADCALL |l| (QREFELT $ 9)) $))
+
+(DEFUN |ILIST;merge!;M3$;28| (|f| |p| |q| $)
+ (PROG (|r| |t|)
+ (RETURN
+ (SEQ (COND
+ ((NULL |p|) |q|)
+ ((NULL |q|) |p|)
+ ((EQ |p| |q|) (|error| "cannot merge a list into itself"))
+ ('T
+ (SEQ (COND
+ ((SPADCALL (QCAR |p|) (QCAR |q|) |f|)
+ (SEQ (LETT |r|
+ (LETT |t| |p| |ILIST;merge!;M3$;28|)
+ |ILIST;merge!;M3$;28|)
+ (EXIT (LETT |p| (QCDR |p|)
+ |ILIST;merge!;M3$;28|))))
+ ('T
+ (SEQ (LETT |r|
+ (LETT |t| |q| |ILIST;merge!;M3$;28|)
+ |ILIST;merge!;M3$;28|)
+ (EXIT (LETT |q| (QCDR |q|)
+ |ILIST;merge!;M3$;28|)))))
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |p|) 'NIL)
+ ('T
+ (SPADCALL (NULL |q|)
+ (QREFELT $ 33)))))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((SPADCALL (QCAR |p|) (QCAR |q|)
+ |f|)
+ (SEQ (QRPLACD |t| |p|)
+ (LETT |t| |p|
+ |ILIST;merge!;M3$;28|)
+ (EXIT
+ (LETT |p| (QCDR |p|)
+ |ILIST;merge!;M3$;28|))))
+ ('T
+ (SEQ (QRPLACD |t| |q|)
+ (LETT |t| |q|
+ |ILIST;merge!;M3$;28|)
+ (EXIT
+ (LETT |q| (QCDR |q|)
+ |ILIST;merge!;M3$;28|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (QRPLACD |t| (COND ((NULL |p|) |q|) ('T |p|)))
+ (EXIT |r|))))))))
+
+(DEFUN |ILIST;split!;$I$;29| (|p| |n| $)
+ (PROG (#0=#:G1506 |q|)
+ (RETURN
+ (SEQ (COND
+ ((< |n| 1) (|error| "index out of range"))
+ ('T
+ (SEQ (LETT |p|
+ (SPADCALL |p|
+ (PROG1 (LETT #0# (- |n| 1)
+ |ILIST;split!;$I$;29|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 32))
+ |ILIST;split!;$I$;29|)
+ (LETT |q| (QCDR |p|) |ILIST;split!;$I$;29|)
+ (QRPLACD |p| NIL) (EXIT |q|))))))))
+
+(DEFUN |ILIST;mergeSort| (|f| |p| |n| $)
+ (PROG (#0=#:G1510 |l| |q|)
+ (RETURN
+ (SEQ (COND
+ ((EQL |n| 2)
+ (COND
+ ((SPADCALL
+ (SPADCALL (SPADCALL |p| (QREFELT $ 18))
+ (QREFELT $ 13))
+ (SPADCALL |p| (QREFELT $ 13)) |f|)
+ (LETT |p| (SPADCALL |p| (QREFELT $ 28))
+ |ILIST;mergeSort|)))))
+ (EXIT (COND
+ ((< |n| 3) |p|)
+ ('T
+ (SEQ (LETT |l|
+ (PROG1 (LETT #0# (QUOTIENT2 |n| 2)
+ |ILIST;mergeSort|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ |ILIST;mergeSort|)
+ (LETT |q| (SPADCALL |p| |l| (QREFELT $ 58))
+ |ILIST;mergeSort|)
+ (LETT |p| (|ILIST;mergeSort| |f| |p| |l| $)
+ |ILIST;mergeSort|)
+ (LETT |q|
+ (|ILIST;mergeSort| |f| |q| (- |n| |l|)
+ $)
+ |ILIST;mergeSort|)
+ (EXIT (SPADCALL |f| |p| |q| (QREFELT $ 57)))))))))))
+
+(DEFUN |IndexedList| (&REST #0=#:G1525 &AUX #1=#:G1523)
+ (DSETQ #1# #0#)
+ (PROG ()
+ (RETURN
+ (PROG (#2=#:G1524)
+ (RETURN
+ (COND
+ ((LETT #2#
+ (|lassocShiftWithFunction| (|devaluateList| #1#)
+ (HGET |$ConstructorCache| '|IndexedList|)
+ '|domainEqualList|)
+ |IndexedList|)
+ (|CDRwithIncrement| #2#))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (APPLY (|function| |IndexedList;|) #1#)
+ (LETT #2# T |IndexedList|))
+ (COND
+ ((NOT #2#) (HREM |$ConstructorCache| '|IndexedList|)))))))))))
+
+(DEFUN |IndexedList;| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ #0=#:G1522 #1=#:G1520 |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #2=(|IndexedList|))
+ (LETT |dv$2| (|devaluate| |#2|) . #2#)
+ (LETT |dv$| (LIST '|IndexedList| |dv$1| |dv$2|) . #2#)
+ (LETT $ (GETREFV 72) . #2#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#1|
+ '(|ConvertibleTo| (|InputForm|)))
+ (|HasCategory| |#1| '(|OrderedSet|))
+ (|HasCategory| (|Integer|) '(|OrderedSet|))
+ (LETT #0#
+ (|HasCategory| |#1| '(|SetCategory|)) . #2#)
+ (OR (|HasCategory| |#1| '(|OrderedSet|))
+ #0#)
+ (AND #0#
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (OR (AND (|HasCategory| |#1|
+ '(|OrderedSet|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (AND #0#
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|)))))
+ (LETT #1#
+ (|HasCategory| |#1|
+ '(|CoercibleTo| (|OutputForm|))) . #2#)
+ (OR (AND #0#
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ #1#))) . #2#))
+ (|haddProp| |$ConstructorCache| '|IndexedList|
+ (LIST |dv$1| |dv$2|) (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (COND
+ ((|testBitVector| |pv$| 8)
+ (QSETREFV $ 46
+ (CONS (|dispatchFunction| |ILIST;coerce;$Of;21|) $))))
+ (COND
+ ((|testBitVector| |pv$| 4)
+ (PROGN
+ (QSETREFV $ 48
+ (CONS (|dispatchFunction| |ILIST;=;2$B;22|) $))
+ (QSETREFV $ 51
+ (CONS (|dispatchFunction| |ILIST;latex;$S;23|) $))
+ (QSETREFV $ 52
+ (CONS (|dispatchFunction| |ILIST;member?;S$B;24|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 4)
+ (QSETREFV $ 54
+ (CONS (|dispatchFunction|
+ |ILIST;removeDuplicates!;2$;26|)
+ $))))
+ $))))
+
+(MAKEPROP '|IndexedList| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|NonNegativeInteger|) |ILIST;#;$Nni;1|
+ |ILIST;concat;S2$;2| (|Boolean|) |ILIST;eq?;2$B;3|
+ |ILIST;first;$S;4| '"first" |ILIST;elt;$firstS;5|
+ |ILIST;empty;$;6| |ILIST;empty?;$B;7| |ILIST;rest;2$;8|
+ '"rest" |ILIST;elt;$rest$;9| |ILIST;setfirst!;$2S;10|
+ |ILIST;setelt;$first2S;11| |ILIST;setrest!;3$;12|
+ |ILIST;setelt;$rest2$;13| (|List| 6)
+ |ILIST;construct;L$;14| |ILIST;parts;$L;15|
+ |ILIST;reverse!;2$;16| |ILIST;reverse;2$;17| (|Integer|)
+ |ILIST;minIndex;$I;18| |ILIST;rest;$Nni$;19| (0 . |not|)
+ (5 . |cyclic?|) |ILIST;copy;2$;20| (10 . |cycleEntry|)
+ (|OutputForm|) (15 . |coerce|) (|List| $) (20 . |bracket|)
+ (|List| 37) (25 . |list|) (30 . |commaSeparate|)
+ (35 . |overbar|) (40 . |concat!|) (46 . |coerce|) (51 . =)
+ (57 . =) (|String|) (63 . |latex|) (68 . |latex|)
+ (73 . |member?|) |ILIST;concat!;3$;25|
+ (79 . |removeDuplicates!|) (|Mapping| 11 6 6)
+ |ILIST;sort!;M2$;27| |ILIST;merge!;M3$;28|
+ |ILIST;split!;$I$;29| (|Mapping| 6 6 6) (|Equation| 6)
+ (|List| 60) (|Mapping| 11 6) (|Void|)
+ (|UniversalSegment| 30) '"last" '"value" (|Mapping| 6 6)
+ (|InputForm|) (|SingleInteger|) (|List| 30)
+ (|Union| 6 '"failed"))
+ '#(~= 84 |value| 90 |third| 95 |tail| 100 |swap!| 105
+ |split!| 112 |sorted?| 118 |sort!| 129 |sort| 140 |size?|
+ 151 |setvalue!| 157 |setrest!| 163 |setlast!| 169
+ |setfirst!| 175 |setelt| 181 |setchildren!| 223 |select!|
+ 229 |select| 235 |second| 241 |sample| 246 |reverse!| 250
+ |reverse| 255 |rest| 260 |removeDuplicates!| 271
+ |removeDuplicates| 276 |remove!| 281 |remove| 293 |reduce|
+ 305 |qsetelt!| 326 |qelt| 333 |possiblyInfinite?| 339
+ |position| 344 |parts| 363 |nodes| 368 |node?| 373 |new|
+ 379 |more?| 385 |minIndex| 391 |min| 396 |merge!| 402
+ |merge| 415 |members| 428 |member?| 433 |maxIndex| 439
+ |max| 444 |map!| 450 |map| 456 |list| 469 |less?| 474
+ |leaves| 480 |leaf?| 485 |latex| 490 |last| 495 |insert!|
+ 506 |insert| 520 |indices| 534 |index?| 539 |hash| 545
+ |first| 550 |find| 561 |fill!| 567 |explicitlyFinite?| 573
+ |every?| 578 |eval| 584 |eq?| 610 |entry?| 616 |entries|
+ 622 |empty?| 627 |empty| 632 |elt| 636 |distance| 679
+ |delete!| 685 |delete| 697 |cyclic?| 709 |cycleTail| 714
+ |cycleSplit!| 719 |cycleLength| 724 |cycleEntry| 729
+ |count| 734 |copyInto!| 746 |copy| 753 |convert| 758
+ |construct| 763 |concat!| 768 |concat| 780 |coerce| 803
+ |children| 808 |child?| 813 |any?| 819 >= 825 > 831 = 837
+ <= 843 < 849 |#| 855)
+ '((|shallowlyMutable| . 0) (|finiteAggregate| . 0))
+ (CONS (|makeByteWordVec2| 9
+ '(0 0 0 0 0 0 0 0 0 0 2 0 0 7 5 0 0 7 9 1 5))
+ (CONS '#(|ListAggregate&| |StreamAggregate&|
+ |ExtensibleLinearAggregate&|
+ |FiniteLinearAggregate&|
+ |UnaryRecursiveAggregate&| |LinearAggregate&|
+ |RecursiveAggregate&| |IndexedAggregate&|
+ |Collection&| |HomogeneousAggregate&|
+ |OrderedSet&| |Aggregate&| |EltableAggregate&|
+ |Evalable&| |SetCategory&| NIL NIL
+ |InnerEvalable&| NIL NIL |BasicType&|)
+ (CONS '#((|ListAggregate| 6)
+ (|StreamAggregate| 6)
+ (|ExtensibleLinearAggregate| 6)
+ (|FiniteLinearAggregate| 6)
+ (|UnaryRecursiveAggregate| 6)
+ (|LinearAggregate| 6)
+ (|RecursiveAggregate| 6)
+ (|IndexedAggregate| 30 6)
+ (|Collection| 6)
+ (|HomogeneousAggregate| 6)
+ (|OrderedSet|) (|Aggregate|)
+ (|EltableAggregate| 30 6) (|Evalable| 6)
+ (|SetCategory|) (|Type|)
+ (|Eltable| 30 6) (|InnerEvalable| 6 6)
+ (|CoercibleTo| 37) (|ConvertibleTo| 68)
+ (|BasicType|))
+ (|makeByteWordVec2| 71
+ '(1 11 0 0 33 1 0 11 0 34 1 0 0 0 36 1
+ 6 37 0 38 1 37 0 39 40 1 41 0 37 42 1
+ 37 0 39 43 1 37 0 0 44 2 41 0 0 37 45
+ 1 0 37 0 46 2 6 11 0 0 47 2 0 11 0 0
+ 48 1 6 49 0 50 1 0 49 0 51 2 0 11 6 0
+ 52 1 0 0 0 54 2 4 11 0 0 1 1 0 6 0 1
+ 1 0 6 0 1 1 0 0 0 1 3 0 63 0 30 30 1
+ 2 0 0 0 30 58 1 2 11 0 1 2 0 11 55 0
+ 1 1 2 0 0 1 2 0 0 55 0 56 1 2 0 0 1 2
+ 0 0 55 0 1 2 0 11 0 8 1 2 0 6 0 6 1 2
+ 0 0 0 0 23 2 0 6 0 6 1 2 0 6 0 6 21 3
+ 0 6 0 30 6 1 3 0 6 0 64 6 1 3 0 6 0
+ 65 6 1 3 0 0 0 19 0 24 3 0 6 0 14 6
+ 22 3 0 6 0 66 6 1 2 0 0 0 39 1 2 0 0
+ 62 0 1 2 0 0 62 0 1 1 0 6 0 1 0 0 0 1
+ 1 0 0 0 28 1 0 0 0 29 2 0 0 0 8 32 1
+ 0 0 0 18 1 4 0 0 54 1 4 0 0 1 2 4 0 6
+ 0 1 2 0 0 62 0 1 2 4 0 6 0 1 2 0 0 62
+ 0 1 4 4 6 59 0 6 6 1 2 0 6 59 0 1 3 0
+ 6 59 0 6 1 3 0 6 0 30 6 1 2 0 6 0 30
+ 1 1 0 11 0 1 2 4 30 6 0 1 3 4 30 6 0
+ 30 1 2 0 30 62 0 1 1 0 25 0 27 1 0 39
+ 0 1 2 4 11 0 0 1 2 0 0 8 6 1 2 0 11 0
+ 8 1 1 3 30 0 31 2 2 0 0 0 1 2 2 0 0 0
+ 1 3 0 0 55 0 0 57 2 2 0 0 0 1 3 0 0
+ 55 0 0 1 1 0 25 0 1 2 4 11 6 0 52 1 3
+ 30 0 1 2 2 0 0 0 1 2 0 0 67 0 1 3 0 0
+ 59 0 0 1 2 0 0 67 0 1 1 0 0 6 1 2 0
+ 11 0 8 1 1 0 25 0 1 1 0 11 0 1 1 4 49
+ 0 51 2 0 0 0 8 1 1 0 6 0 1 3 0 0 6 0
+ 30 1 3 0 0 0 0 30 1 3 0 0 0 0 30 1 3
+ 0 0 6 0 30 1 1 0 70 0 1 2 0 11 30 0 1
+ 1 4 69 0 1 2 0 0 0 8 1 1 0 6 0 13 2 0
+ 71 62 0 1 2 0 0 0 6 1 1 0 11 0 1 2 0
+ 11 62 0 1 3 6 0 0 6 6 1 3 6 0 0 25 25
+ 1 2 6 0 0 60 1 2 6 0 0 61 1 2 0 11 0
+ 0 12 2 4 11 6 0 1 1 0 25 0 1 1 0 11 0
+ 17 0 0 0 16 2 0 6 0 30 1 3 0 6 0 30 6
+ 1 2 0 0 0 64 1 2 0 6 0 65 1 2 0 0 0
+ 19 20 2 0 6 0 14 15 2 0 6 0 66 1 2 0
+ 30 0 0 1 2 0 0 0 64 1 2 0 0 0 30 1 2
+ 0 0 0 64 1 2 0 0 0 30 1 1 0 11 0 34 1
+ 0 0 0 1 1 0 0 0 1 1 0 8 0 1 1 0 0 0
+ 36 2 4 8 6 0 1 2 0 8 62 0 1 3 0 0 0 0
+ 30 1 1 0 0 0 35 1 1 68 0 1 1 0 0 25
+ 26 2 0 0 0 0 53 2 0 0 0 6 1 1 0 0 39
+ 1 2 0 0 0 6 1 2 0 0 6 0 10 2 0 0 0 0
+ 1 1 8 37 0 46 1 0 39 0 1 2 4 11 0 0 1
+ 2 0 11 62 0 1 2 2 11 0 0 1 2 2 11 0 0
+ 1 2 4 11 0 0 48 2 2 11 0 0 1 2 2 11 0
+ 0 1 1 0 8 0 9)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/INS-.lsp b/src/algebra/strap/INS-.lsp
new file mode 100644
index 00000000..b5a58e4f
--- /dev/null
+++ b/src/algebra/strap/INS-.lsp
@@ -0,0 +1,298 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|INS-;characteristic;Nni;1| '|SPADreplace| '(XLAM NIL 0))
+
+(DEFUN |INS-;characteristic;Nni;1| ($) 0)
+
+(DEFUN |INS-;differentiate;2S;2| (|x| $) (|spadConstant| $ 9))
+
+(DEFUN |INS-;even?;SB;3| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 12)) (QREFELT $ 13)))
+
+(DEFUN |INS-;positive?;SB;4| (|x| $)
+ (SPADCALL (|spadConstant| $ 9) |x| (QREFELT $ 15)))
+
+(PUT '|INS-;copy;2S;5| '|SPADreplace| '(XLAM (|x|) |x|))
+
+(DEFUN |INS-;copy;2S;5| (|x| $) |x|)
+
+(DEFUN |INS-;bit?;2SB;6| (|x| |i| $)
+ (SPADCALL (SPADCALL |x| (SPADCALL |i| (QREFELT $ 18)) (QREFELT $ 19))
+ (QREFELT $ 12)))
+
+(DEFUN |INS-;mask;2S;7| (|n| $)
+ (SPADCALL (SPADCALL (|spadConstant| $ 21) |n| (QREFELT $ 19))
+ (QREFELT $ 22)))
+
+(PUT '|INS-;rational?;SB;8| '|SPADreplace| '(XLAM (|x|) 'T))
+
+(DEFUN |INS-;rational?;SB;8| (|x| $) 'T)
+
+(DEFUN |INS-;euclideanSize;SNni;9| (|x| $)
+ (PROG (#0=#:G1412 #1=#:G1413)
+ (RETURN
+ (COND
+ ((SPADCALL |x| (|spadConstant| $ 9) (QREFELT $ 25))
+ (|error| "euclideanSize called on zero"))
+ ((SPADCALL |x| (|spadConstant| $ 9) (QREFELT $ 15))
+ (PROG1 (LETT #0# (- (SPADCALL |x| (QREFELT $ 27)))
+ |INS-;euclideanSize;SNni;9|)
+ (|check-subtype| (>= #0# 0) '(|NonNegativeInteger|) #0#)))
+ ('T
+ (PROG1 (LETT #1# (SPADCALL |x| (QREFELT $ 27))
+ |INS-;euclideanSize;SNni;9|)
+ (|check-subtype| (>= #1# 0) '(|NonNegativeInteger|) #1#)))))))
+
+(DEFUN |INS-;convert;SF;10| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 27)) (QREFELT $ 30)))
+
+(DEFUN |INS-;convert;SDf;11| (|x| $)
+ (FLOAT (SPADCALL |x| (QREFELT $ 27)) MOST-POSITIVE-LONG-FLOAT))
+
+(DEFUN |INS-;convert;SIf;12| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 27)) (QREFELT $ 35)))
+
+(DEFUN |INS-;retract;SI;13| (|x| $) (SPADCALL |x| (QREFELT $ 27)))
+
+(DEFUN |INS-;convert;SP;14| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 27)) (QREFELT $ 39)))
+
+(DEFUN |INS-;factor;SF;15| (|x| $) (SPADCALL |x| (QREFELT $ 43)))
+
+(DEFUN |INS-;squareFree;SF;16| (|x| $) (SPADCALL |x| (QREFELT $ 46)))
+
+(DEFUN |INS-;prime?;SB;17| (|x| $) (SPADCALL |x| (QREFELT $ 49)))
+
+(DEFUN |INS-;factorial;2S;18| (|x| $) (SPADCALL |x| (QREFELT $ 52)))
+
+(DEFUN |INS-;binomial;3S;19| (|n| |m| $)
+ (SPADCALL |n| |m| (QREFELT $ 54)))
+
+(DEFUN |INS-;permutation;3S;20| (|n| |m| $)
+ (SPADCALL |n| |m| (QREFELT $ 56)))
+
+(DEFUN |INS-;retractIfCan;SU;21| (|x| $)
+ (CONS 0 (SPADCALL |x| (QREFELT $ 27))))
+
+(DEFUN |INS-;init;S;22| ($) (|spadConstant| $ 9))
+
+(DEFUN |INS-;nextItem;SU;23| (|n| $)
+ (COND
+ ((SPADCALL |n| (QREFELT $ 61)) (CONS 0 (|spadConstant| $ 21)))
+ ((SPADCALL (|spadConstant| $ 9) |n| (QREFELT $ 15))
+ (CONS 0 (SPADCALL |n| (QREFELT $ 18))))
+ ('T (CONS 0 (SPADCALL (|spadConstant| $ 21) |n| (QREFELT $ 62))))))
+
+(DEFUN |INS-;patternMatch;SP2Pmr;24| (|x| |p| |l| $)
+ (SPADCALL |x| |p| |l| (QREFELT $ 67)))
+
+(DEFUN |INS-;rational;SF;25| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 27)) (QREFELT $ 71)))
+
+(DEFUN |INS-;rationalIfCan;SU;26| (|x| $)
+ (CONS 0 (SPADCALL (SPADCALL |x| (QREFELT $ 27)) (QREFELT $ 71))))
+
+(DEFUN |INS-;symmetricRemainder;3S;27| (|x| |n| $)
+ (PROG (|r|)
+ (RETURN
+ (SEQ (LETT |r| (SPADCALL |x| |n| (QREFELT $ 75))
+ |INS-;symmetricRemainder;3S;27|)
+ (EXIT (COND
+ ((SPADCALL |r| (|spadConstant| $ 9) (QREFELT $ 25))
+ |r|)
+ ('T
+ (SEQ (COND
+ ((SPADCALL |n| (|spadConstant| $ 9)
+ (QREFELT $ 15))
+ (LETT |n| (SPADCALL |n| (QREFELT $ 18))
+ |INS-;symmetricRemainder;3S;27|)))
+ (EXIT (COND
+ ((SPADCALL (|spadConstant| $ 9) |r|
+ (QREFELT $ 15))
+ (COND
+ ((SPADCALL |n|
+ (SPADCALL 2 |r| (QREFELT $ 77))
+ (QREFELT $ 15))
+ (SPADCALL |r| |n| (QREFELT $ 62)))
+ ('T |r|)))
+ ((NULL (SPADCALL (|spadConstant| $ 9)
+ (SPADCALL
+ (SPADCALL 2 |r|
+ (QREFELT $ 77))
+ |n| (QREFELT $ 78))
+ (QREFELT $ 15)))
+ (SPADCALL |r| |n| (QREFELT $ 78)))
+ ('T |r|)))))))))))
+
+(DEFUN |INS-;invmod;3S;28| (|a| |b| $)
+ (PROG (|q| |r| |r1| |c| |c1| |d| |d1|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |a| (QREFELT $ 80))
+ (LETT |a| (SPADCALL |a| |b| (QREFELT $ 81))
+ |INS-;invmod;3S;28|)))
+ (LETT |c| |a| |INS-;invmod;3S;28|)
+ (LETT |c1| (|spadConstant| $ 21) |INS-;invmod;3S;28|)
+ (LETT |d| |b| |INS-;invmod;3S;28|)
+ (LETT |d1| (|spadConstant| $ 9) |INS-;invmod;3S;28|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |d| (QREFELT $ 61))
+ (QREFELT $ 13)))
+ (GO G191)))
+ (SEQ (LETT |q| (SPADCALL |c| |d| (QREFELT $ 82))
+ |INS-;invmod;3S;28|)
+ (LETT |r|
+ (SPADCALL |c|
+ (SPADCALL |q| |d| (QREFELT $ 83))
+ (QREFELT $ 62))
+ |INS-;invmod;3S;28|)
+ (LETT |r1|
+ (SPADCALL |c1|
+ (SPADCALL |q| |d1| (QREFELT $ 83))
+ (QREFELT $ 62))
+ |INS-;invmod;3S;28|)
+ (LETT |c| |d| |INS-;invmod;3S;28|)
+ (LETT |c1| |d1| |INS-;invmod;3S;28|)
+ (LETT |d| |r| |INS-;invmod;3S;28|)
+ (EXIT (LETT |d1| |r1| |INS-;invmod;3S;28|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |c| (|spadConstant| $ 21) (QREFELT $ 25))
+ (COND
+ ((SPADCALL |c1| (QREFELT $ 80))
+ (SPADCALL |c1| |b| (QREFELT $ 78)))
+ ('T |c1|)))
+ ('T (|error| "inverse does not exist"))))))))
+
+(DEFUN |INS-;powmod;4S;29| (|x| |n| |p| $)
+ (PROG (|y| #0=#:G1470 |z|)
+ (RETURN
+ (SEQ (EXIT (SEQ (COND
+ ((SPADCALL |x| (QREFELT $ 80))
+ (LETT |x| (SPADCALL |x| |p| (QREFELT $ 81))
+ |INS-;powmod;4S;29|)))
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 61))
+ (|spadConstant| $ 9))
+ ((SPADCALL |n| (QREFELT $ 61))
+ (|spadConstant| $ 21))
+ ('T
+ (SEQ (LETT |y| (|spadConstant| $ 21)
+ |INS-;powmod;4S;29|)
+ (LETT |z| |x| |INS-;powmod;4S;29|)
+ (EXIT
+ (SEQ G190 NIL
+ (SEQ
+ (COND
+ ((SPADCALL |n| (QREFELT $ 12))
+ (LETT |y|
+ (SPADCALL |y| |z| |p|
+ (QREFELT $ 85))
+ |INS-;powmod;4S;29|)))
+ (EXIT
+ (COND
+ ((SPADCALL
+ (LETT |n|
+ (SPADCALL |n|
+ (SPADCALL
+ (|spadConstant| $ 21)
+ (QREFELT $ 18))
+ (QREFELT $ 19))
+ |INS-;powmod;4S;29|)
+ (QREFELT $ 61))
+ (PROGN
+ (LETT #0# |y|
+ |INS-;powmod;4S;29|)
+ (GO #0#)))
+ ('T
+ (LETT |z|
+ (SPADCALL |z| |z| |p|
+ (QREFELT $ 85))
+ |INS-;powmod;4S;29|)))))
+ NIL (GO G190) G191 (EXIT NIL)))))))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |IntegerNumberSystem&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|IntegerNumberSystem&|))
+ (LETT |dv$| (LIST '|IntegerNumberSystem&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 87) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|IntegerNumberSystem&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|)
+ (|NonNegativeInteger|) |INS-;characteristic;Nni;1|
+ (0 . |Zero|) |INS-;differentiate;2S;2| (|Boolean|)
+ (4 . |odd?|) (9 . |not|) |INS-;even?;SB;3| (14 . <)
+ |INS-;positive?;SB;4| |INS-;copy;2S;5| (20 . -)
+ (25 . |shift|) |INS-;bit?;2SB;6| (31 . |One|) (35 . |dec|)
+ |INS-;mask;2S;7| |INS-;rational?;SB;8| (40 . =)
+ (|Integer|) (46 . |convert|) |INS-;euclideanSize;SNni;9|
+ (|Float|) (51 . |coerce|) |INS-;convert;SF;10|
+ (|DoubleFloat|) |INS-;convert;SDf;11| (|InputForm|)
+ (56 . |convert|) |INS-;convert;SIf;12|
+ |INS-;retract;SI;13| (|Pattern| 26) (61 . |coerce|)
+ |INS-;convert;SP;14| (|Factored| 6)
+ (|IntegerFactorizationPackage| 6) (66 . |factor|)
+ (|Factored| $) |INS-;factor;SF;15| (71 . |squareFree|)
+ |INS-;squareFree;SF;16| (|IntegerPrimesPackage| 6)
+ (76 . |prime?|) |INS-;prime?;SB;17|
+ (|IntegerCombinatoricFunctions| 6) (81 . |factorial|)
+ |INS-;factorial;2S;18| (86 . |binomial|)
+ |INS-;binomial;3S;19| (92 . |permutation|)
+ |INS-;permutation;3S;20| (|Union| 26 '"failed")
+ |INS-;retractIfCan;SU;21| |INS-;init;S;22| (98 . |zero?|)
+ (103 . -) (|Union| $ '"failed") |INS-;nextItem;SU;23|
+ (|PatternMatchResult| 26 6)
+ (|PatternMatchIntegerNumberSystem| 6)
+ (109 . |patternMatch|) (|PatternMatchResult| 26 $)
+ |INS-;patternMatch;SP2Pmr;24| (|Fraction| 26)
+ (116 . |coerce|) |INS-;rational;SF;25|
+ (|Union| 70 '"failed") |INS-;rationalIfCan;SU;26|
+ (121 . |rem|) (|PositiveInteger|) (127 . *) (133 . +)
+ |INS-;symmetricRemainder;3S;27| (139 . |negative?|)
+ (144 . |positiveRemainder|) (150 . |quo|) (156 . *)
+ |INS-;invmod;3S;28| (162 . |mulmod|) |INS-;powmod;4S;29|)
+ '#(|symmetricRemainder| 169 |squareFree| 175 |retractIfCan|
+ 180 |retract| 185 |rationalIfCan| 190 |rational?| 195
+ |rational| 200 |prime?| 205 |powmod| 210 |positive?| 217
+ |permutation| 222 |patternMatch| 228 |nextItem| 235 |mask|
+ 240 |invmod| 245 |init| 251 |factorial| 255 |factor| 260
+ |even?| 265 |euclideanSize| 270 |differentiate| 275 |copy|
+ 280 |convert| 285 |characteristic| 305 |bit?| 309
+ |binomial| 315)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 86
+ '(0 6 0 9 1 6 11 0 12 1 11 0 0 13 2 6
+ 11 0 0 15 1 6 0 0 18 2 6 0 0 0 19 0 6
+ 0 21 1 6 0 0 22 2 6 11 0 0 25 1 6 26
+ 0 27 1 29 0 26 30 1 34 0 26 35 1 38 0
+ 26 39 1 42 41 6 43 1 42 41 6 46 1 48
+ 11 6 49 1 51 6 6 52 2 51 6 6 6 54 2
+ 51 6 6 6 56 1 6 11 0 61 2 6 0 0 0 62
+ 3 66 65 6 38 65 67 1 70 0 26 71 2 6 0
+ 0 0 75 2 6 0 76 0 77 2 6 0 0 0 78 1 6
+ 11 0 80 2 6 0 0 0 81 2 6 0 0 0 82 2 6
+ 0 0 0 83 3 6 0 0 0 0 85 2 0 0 0 0 79
+ 1 0 44 0 47 1 0 58 0 59 1 0 26 0 37 1
+ 0 73 0 74 1 0 11 0 24 1 0 70 0 72 1 0
+ 11 0 50 3 0 0 0 0 0 86 1 0 11 0 16 2
+ 0 0 0 0 57 3 0 68 0 38 68 69 1 0 63 0
+ 64 1 0 0 0 23 2 0 0 0 0 84 0 0 0 60 1
+ 0 0 0 53 1 0 44 0 45 1 0 11 0 14 1 0
+ 7 0 28 1 0 0 0 10 1 0 0 0 17 1 0 32 0
+ 33 1 0 29 0 31 1 0 38 0 40 1 0 34 0
+ 36 0 0 7 8 2 0 11 0 0 20 2 0 0 0 0
+ 55)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/INS.lsp b/src/algebra/strap/INS.lsp
new file mode 100644
index 00000000..c951d143
--- /dev/null
+++ b/src/algebra/strap/INS.lsp
@@ -0,0 +1,75 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |IntegerNumberSystem;AL| 'NIL)
+
+(DEFUN |IntegerNumberSystem| ()
+ (LET (#:G1403)
+ (COND
+ (|IntegerNumberSystem;AL|)
+ (T (SETQ |IntegerNumberSystem;AL| (|IntegerNumberSystem;|))))))
+
+(DEFUN |IntegerNumberSystem;| ()
+ (PROG (#0=#:G1401)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(#1=#:G1395 #2=#:G1396 #3=#:G1397
+ #4=#:G1398 #5=#:G1399 #6=#:G1400)
+ (LIST '(|Integer|) '(|Integer|)
+ '(|Integer|) '(|InputForm|)
+ '(|Pattern| (|Integer|))
+ '(|Integer|)))
+ (|Join| (|UniqueFactorizationDomain|)
+ (|EuclideanDomain|)
+ (|OrderedIntegralDomain|)
+ (|DifferentialRing|)
+ (|ConvertibleTo| '#1#)
+ (|RetractableTo| '#2#)
+ (|LinearlyExplicitRingOver| '#3#)
+ (|ConvertibleTo| '#4#)
+ (|ConvertibleTo| '#5#)
+ (|PatternMatchable| '#6#)
+ (|CombinatorialFunctionCategory|)
+ (|RealConstant|) (|CharacteristicZero|)
+ (|StepThrough|)
+ (|mkCategory| '|domain|
+ '(((|odd?| ((|Boolean|) $)) T)
+ ((|even?| ((|Boolean|) $)) T)
+ ((|base| ($)) T)
+ ((|length| ($ $)) T)
+ ((|shift| ($ $ $)) T)
+ ((|bit?| ((|Boolean|) $ $)) T)
+ ((|positiveRemainder| ($ $ $)) T)
+ ((|symmetricRemainder| ($ $ $)) T)
+ ((|rational?| ((|Boolean|) $)) T)
+ ((|rational|
+ ((|Fraction| (|Integer|)) $))
+ T)
+ ((|rationalIfCan|
+ ((|Union|
+ (|Fraction| (|Integer|))
+ "failed")
+ $))
+ T)
+ ((|random| ($)) T)
+ ((|random| ($ $)) T)
+ ((|hash| ($ $)) T)
+ ((|copy| ($ $)) T)
+ ((|inc| ($ $)) T)
+ ((|dec| ($ $)) T)
+ ((|mask| ($ $)) T)
+ ((|addmod| ($ $ $ $)) T)
+ ((|submod| ($ $ $ $)) T)
+ ((|mulmod| ($ $ $ $)) T)
+ ((|powmod| ($ $ $ $)) T)
+ ((|invmod| ($ $ $)) T))
+ '((|multiplicativeValuation| T)
+ (|canonicalUnitNormal| T))
+ '((|Fraction| (|Integer|))
+ (|Boolean|))
+ NIL)))
+ |IntegerNumberSystem|)
+ (SETELT #0# 0 '(|IntegerNumberSystem|))))))
+
+(MAKEPROP '|IntegerNumberSystem| 'NILADIC T)
diff --git a/src/algebra/strap/INT.lsp b/src/algebra/strap/INT.lsp
new file mode 100644
index 00000000..06ad04a0
--- /dev/null
+++ b/src/algebra/strap/INT.lsp
@@ -0,0 +1,528 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |INT;writeOMInt| (|dev| |x| $)
+ (SEQ (COND
+ ((< |x| 0)
+ (SEQ (SPADCALL |dev| (|getShellEntry| $ 8))
+ (SPADCALL |dev| "arith1" "unary_minus"
+ (|getShellEntry| $ 10))
+ (SPADCALL |dev| (- |x|) (|getShellEntry| $ 12))
+ (EXIT (SPADCALL |dev| (|getShellEntry| $ 13)))))
+ ('T (SPADCALL |dev| |x| (|getShellEntry| $ 12))))))
+
+(DEFUN |INT;OMwrite;$S;2| (|x| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |INT;OMwrite;$S;2|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |INT;OMwrite;$S;2|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 15))
+ (|getShellEntry| $ 16))
+ |INT;OMwrite;$S;2|)
+ (SPADCALL |dev| (|getShellEntry| $ 17))
+ (|INT;writeOMInt| |dev| |x| $)
+ (SPADCALL |dev| (|getShellEntry| $ 18))
+ (SPADCALL |dev| (|getShellEntry| $ 19))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|) |INT;OMwrite;$S;2|)
+ (EXIT |s|)))))
+
+(DEFUN |INT;OMwrite;$BS;3| (|x| |wholeObj| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |INT;OMwrite;$BS;3|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |INT;OMwrite;$BS;3|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 15))
+ (|getShellEntry| $ 16))
+ |INT;OMwrite;$BS;3|)
+ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 17))))
+ (|INT;writeOMInt| |dev| |x| $)
+ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 18))))
+ (SPADCALL |dev| (|getShellEntry| $ 19))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|) |INT;OMwrite;$BS;3|)
+ (EXIT |s|)))))
+
+(DEFUN |INT;OMwrite;Omd$V;4| (|dev| |x| $)
+ (SEQ (SPADCALL |dev| (|getShellEntry| $ 17))
+ (|INT;writeOMInt| |dev| |x| $)
+ (EXIT (SPADCALL |dev| (|getShellEntry| $ 18)))))
+
+(DEFUN |INT;OMwrite;Omd$BV;5| (|dev| |x| |wholeObj| $)
+ (SEQ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 17))))
+ (|INT;writeOMInt| |dev| |x| $)
+ (EXIT (COND
+ (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 18)))))))
+
+(PUT '|INT;zero?;$B;6| '|SPADreplace| 'ZEROP)
+
+(DEFUN |INT;zero?;$B;6| (|x| $) (ZEROP |x|))
+
+(PUT '|INT;one?;$B;7| '|SPADreplace| '(XLAM (|x|) (EQL |x| 1)))
+
+(DEFUN |INT;one?;$B;7| (|x| $) (EQL |x| 1))
+
+(PUT '|INT;Zero;$;8| '|SPADreplace| '(XLAM NIL 0))
+
+(DEFUN |INT;Zero;$;8| ($) 0)
+
+(PUT '|INT;One;$;9| '|SPADreplace| '(XLAM NIL 1))
+
+(DEFUN |INT;One;$;9| ($) 1)
+
+(PUT '|INT;base;$;10| '|SPADreplace| '(XLAM NIL 2))
+
+(DEFUN |INT;base;$;10| ($) 2)
+
+(PUT '|INT;copy;2$;11| '|SPADreplace| '(XLAM (|x|) |x|))
+
+(DEFUN |INT;copy;2$;11| (|x| $) |x|)
+
+(PUT '|INT;inc;2$;12| '|SPADreplace| '(XLAM (|x|) (+ |x| 1)))
+
+(DEFUN |INT;inc;2$;12| (|x| $) (+ |x| 1))
+
+(PUT '|INT;dec;2$;13| '|SPADreplace| '(XLAM (|x|) (- |x| 1)))
+
+(DEFUN |INT;dec;2$;13| (|x| $) (- |x| 1))
+
+(PUT '|INT;hash;2$;14| '|SPADreplace| 'SXHASH)
+
+(DEFUN |INT;hash;2$;14| (|x| $) (SXHASH |x|))
+
+(PUT '|INT;negative?;$B;15| '|SPADreplace| 'MINUSP)
+
+(DEFUN |INT;negative?;$B;15| (|x| $) (MINUSP |x|))
+
+(DEFUN |INT;coerce;$Of;16| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 36)))
+
+(PUT '|INT;coerce;I$;17| '|SPADreplace| '(XLAM (|m|) |m|))
+
+(DEFUN |INT;coerce;I$;17| (|m| $) |m|)
+
+(PUT '|INT;convert;$I;18| '|SPADreplace| '(XLAM (|x|) |x|))
+
+(DEFUN |INT;convert;$I;18| (|x| $) |x|)
+
+(PUT '|INT;length;2$;19| '|SPADreplace| 'INTEGER-LENGTH)
+
+(DEFUN |INT;length;2$;19| (|a| $) (INTEGER-LENGTH |a|))
+
+(DEFUN |INT;addmod;4$;20| (|a| |b| |p| $)
+ (PROG (|c| #0=#:G1427)
+ (RETURN
+ (SEQ (EXIT (SEQ (SEQ (LETT |c| (+ |a| |b|) |INT;addmod;4$;20|)
+ (EXIT (COND
+ ((NULL (< |c| |p|))
+ (PROGN
+ (LETT #0# (- |c| |p|)
+ |INT;addmod;4$;20|)
+ (GO #0#))))))
+ (EXIT |c|)))
+ #0# (EXIT #0#)))))
+
+(DEFUN |INT;submod;4$;21| (|a| |b| |p| $)
+ (PROG (|c|)
+ (RETURN
+ (SEQ (LETT |c| (- |a| |b|) |INT;submod;4$;21|)
+ (EXIT (COND ((< |c| 0) (+ |c| |p|)) ('T |c|)))))))
+
+(DEFUN |INT;mulmod;4$;22| (|a| |b| |p| $)
+ (REMAINDER2 (* |a| |b|) |p|))
+
+(DEFUN |INT;convert;$F;23| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 45)))
+
+(PUT '|INT;convert;$Df;24| '|SPADreplace|
+ '(XLAM (|x|) (FLOAT |x| MOST-POSITIVE-LONG-FLOAT)))
+
+(DEFUN |INT;convert;$Df;24| (|x| $)
+ (FLOAT |x| MOST-POSITIVE-LONG-FLOAT))
+
+(DEFUN |INT;convert;$If;25| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 50)))
+
+(PUT '|INT;convert;$S;26| '|SPADreplace| 'STRINGIMAGE)
+
+(DEFUN |INT;convert;$S;26| (|x| $) (STRINGIMAGE |x|))
+
+(DEFUN |INT;latex;$S;27| (|x| $)
+ (PROG (|s|)
+ (RETURN
+ (SEQ (LETT |s| (STRINGIMAGE |x|) |INT;latex;$S;27|)
+ (COND ((< -1 |x|) (COND ((< |x| 10) (EXIT |s|)))))
+ (EXIT (STRCONC "{" (STRCONC |s| "}")))))))
+
+(DEFUN |INT;positiveRemainder;3$;28| (|a| |b| $)
+ (PROG (|r|)
+ (RETURN
+ (COND
+ ((MINUSP (LETT |r| (REMAINDER2 |a| |b|)
+ |INT;positiveRemainder;3$;28|))
+ (COND ((MINUSP |b|) (- |r| |b|)) ('T (+ |r| |b|))))
+ ('T |r|)))))
+
+(PUT '|INT;reducedSystem;MM;29| '|SPADreplace| '(XLAM (|m|) |m|))
+
+(DEFUN |INT;reducedSystem;MM;29| (|m| $) |m|)
+
+(DEFUN |INT;reducedSystem;MVR;30| (|m| |v| $) (CONS |m| '|vec|))
+
+(PUT '|INT;abs;2$;31| '|SPADreplace| 'ABS)
+
+(DEFUN |INT;abs;2$;31| (|x| $) (ABS |x|))
+
+(PUT '|INT;random;$;32| '|SPADreplace| '|random|)
+
+(DEFUN |INT;random;$;32| ($) (|random|))
+
+(PUT '|INT;random;2$;33| '|SPADreplace| 'RANDOM)
+
+(DEFUN |INT;random;2$;33| (|x| $) (RANDOM |x|))
+
+(PUT '|INT;=;2$B;34| '|SPADreplace| 'EQL)
+
+(DEFUN |INT;=;2$B;34| (|x| |y| $) (EQL |x| |y|))
+
+(PUT '|INT;<;2$B;35| '|SPADreplace| '<)
+
+(DEFUN |INT;<;2$B;35| (|x| |y| $) (< |x| |y|))
+
+(PUT '|INT;-;2$;36| '|SPADreplace| '-)
+
+(DEFUN |INT;-;2$;36| (|x| $) (- |x|))
+
+(PUT '|INT;+;3$;37| '|SPADreplace| '+)
+
+(DEFUN |INT;+;3$;37| (|x| |y| $) (+ |x| |y|))
+
+(PUT '|INT;-;3$;38| '|SPADreplace| '-)
+
+(DEFUN |INT;-;3$;38| (|x| |y| $) (- |x| |y|))
+
+(PUT '|INT;*;3$;39| '|SPADreplace| '*)
+
+(DEFUN |INT;*;3$;39| (|x| |y| $) (* |x| |y|))
+
+(PUT '|INT;*;I2$;40| '|SPADreplace| '*)
+
+(DEFUN |INT;*;I2$;40| (|m| |y| $) (* |m| |y|))
+
+(PUT '|INT;**;$Nni$;41| '|SPADreplace| 'EXPT)
+
+(DEFUN |INT;**;$Nni$;41| (|x| |n| $) (EXPT |x| |n|))
+
+(PUT '|INT;odd?;$B;42| '|SPADreplace| 'ODDP)
+
+(DEFUN |INT;odd?;$B;42| (|x| $) (ODDP |x|))
+
+(PUT '|INT;max;3$;43| '|SPADreplace| 'MAX)
+
+(DEFUN |INT;max;3$;43| (|x| |y| $) (MAX |x| |y|))
+
+(PUT '|INT;min;3$;44| '|SPADreplace| 'MIN)
+
+(DEFUN |INT;min;3$;44| (|x| |y| $) (MIN |x| |y|))
+
+(PUT '|INT;divide;2$R;45| '|SPADreplace| 'DIVIDE2)
+
+(DEFUN |INT;divide;2$R;45| (|x| |y| $) (DIVIDE2 |x| |y|))
+
+(PUT '|INT;quo;3$;46| '|SPADreplace| 'QUOTIENT2)
+
+(DEFUN |INT;quo;3$;46| (|x| |y| $) (QUOTIENT2 |x| |y|))
+
+(PUT '|INT;rem;3$;47| '|SPADreplace| 'REMAINDER2)
+
+(DEFUN |INT;rem;3$;47| (|x| |y| $) (REMAINDER2 |x| |y|))
+
+(PUT '|INT;shift;3$;48| '|SPADreplace| 'ASH)
+
+(DEFUN |INT;shift;3$;48| (|x| |y| $) (ASH |x| |y|))
+
+(DEFUN |INT;exquo;2$U;49| (|x| |y| $)
+ (COND
+ ((OR (ZEROP |y|) (NULL (ZEROP (REMAINDER2 |x| |y|))))
+ (CONS 1 "failed"))
+ ('T (CONS 0 (QUOTIENT2 |x| |y|)))))
+
+(DEFUN |INT;recip;$U;50| (|x| $)
+ (COND
+ ((OR (EQL |x| 1) (EQL |x| -1)) (CONS 0 |x|))
+ ('T (CONS 1 "failed"))))
+
+(PUT '|INT;gcd;3$;51| '|SPADreplace| 'GCD)
+
+(DEFUN |INT;gcd;3$;51| (|x| |y| $) (GCD |x| |y|))
+
+(DEFUN |INT;unitNormal;$R;52| (|x| $)
+ (COND ((< |x| 0) (VECTOR -1 (- |x|) -1)) ('T (VECTOR 1 |x| 1))))
+
+(PUT '|INT;unitCanonical;2$;53| '|SPADreplace| 'ABS)
+
+(DEFUN |INT;unitCanonical;2$;53| (|x| $) (ABS |x|))
+
+(DEFUN |INT;solveLinearPolynomialEquation| (|lp| |p| $)
+ (SPADCALL |lp| |p| (|getShellEntry| $ 93)))
+
+(DEFUN |INT;squareFreePolynomial| (|p| $)
+ (SPADCALL |p| (|getShellEntry| $ 97)))
+
+(DEFUN |INT;factorPolynomial| (|p| $)
+ (PROG (|pp| #0=#:G1498)
+ (RETURN
+ (SEQ (LETT |pp| (SPADCALL |p| (|getShellEntry| $ 98))
+ |INT;factorPolynomial|)
+ (EXIT (COND
+ ((EQL (SPADCALL |pp| (|getShellEntry| $ 99))
+ (SPADCALL |p| (|getShellEntry| $ 99)))
+ (SPADCALL |p| (|getShellEntry| $ 101)))
+ ('T
+ (SPADCALL (SPADCALL |pp| (|getShellEntry| $ 101))
+ (SPADCALL (CONS #'|INT;factorPolynomial!0| $)
+ (SPADCALL
+ (PROG2 (LETT #0#
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 99))
+ (SPADCALL |pp|
+ (|getShellEntry| $ 99))
+ (|getShellEntry| $ 83))
+ |INT;factorPolynomial|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) $ #0#))
+ (|getShellEntry| $ 104))
+ (|getShellEntry| $ 108))
+ (|getShellEntry| $ 110)))))))))
+
+(DEFUN |INT;factorPolynomial!0| (|#1| $)
+ (SPADCALL |#1| (|getShellEntry| $ 102)))
+
+(DEFUN |INT;factorSquareFreePolynomial| (|p| $)
+ (SPADCALL |p| (|getShellEntry| $ 111)))
+
+(DEFUN |INT;gcdPolynomial;3Sup;58| (|p| |q| $)
+ (COND
+ ((SPADCALL |p| (|getShellEntry| $ 112))
+ (SPADCALL |q| (|getShellEntry| $ 113)))
+ ((SPADCALL |q| (|getShellEntry| $ 112))
+ (SPADCALL |p| (|getShellEntry| $ 113)))
+ ('T (SPADCALL (LIST |p| |q|) (|getShellEntry| $ 116)))))
+
+(DEFUN |Integer| ()
+ (PROG ()
+ (RETURN
+ (PROG (#0=#:G1523)
+ (RETURN
+ (COND
+ ((LETT #0# (HGET |$ConstructorCache| '|Integer|) |Integer|)
+ (|CDRwithIncrement| (CDAR #0#)))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (CDDAR (HPUT |$ConstructorCache| '|Integer|
+ (LIST
+ (CONS NIL (CONS 1 (|Integer;|))))))
+ (LETT #0# T |Integer|))
+ (COND
+ ((NOT #0#) (HREM |$ConstructorCache| '|Integer|)))))))))))
+
+(DEFUN |Integer;| ()
+ (PROG (|dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| '(|Integer|) . #0=(|Integer|))
+ (LETT $ (|newShell| 132) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|haddProp| |$ConstructorCache| '|Integer| NIL (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 71
+ (|setShellEntry| $ 70
+ (CONS (|dispatchFunction| |INT;*;I2$;40|) $)))
+ $))))
+
+(MAKEPROP '|Integer| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|Void|) (|OpenMathDevice|)
+ (0 . |OMputApp|) (|String|) (5 . |OMputSymbol|)
+ (|Integer|) (12 . |OMputInteger|) (18 . |OMputEndApp|)
+ (|OpenMathEncoding|) (23 . |OMencodingXML|)
+ (27 . |OMopenString|) (33 . |OMputObject|)
+ (38 . |OMputEndObject|) (43 . |OMclose|)
+ |INT;OMwrite;$S;2| (|Boolean|) |INT;OMwrite;$BS;3|
+ |INT;OMwrite;Omd$V;4| |INT;OMwrite;Omd$BV;5|
+ |INT;zero?;$B;6| |INT;one?;$B;7|
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |INT;Zero;$;8|) $))
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |INT;One;$;9|) $))
+ |INT;base;$;10| |INT;copy;2$;11| |INT;inc;2$;12|
+ |INT;dec;2$;13| |INT;hash;2$;14| |INT;negative?;$B;15|
+ (|OutputForm|) (48 . |outputForm|) |INT;coerce;$Of;16|
+ |INT;coerce;I$;17| |INT;convert;$I;18| |INT;length;2$;19|
+ |INT;addmod;4$;20| |INT;submod;4$;21| |INT;mulmod;4$;22|
+ (|Float|) (53 . |coerce|) |INT;convert;$F;23|
+ (|DoubleFloat|) |INT;convert;$Df;24| (|InputForm|)
+ (58 . |convert|) |INT;convert;$If;25| |INT;convert;$S;26|
+ |INT;latex;$S;27| |INT;positiveRemainder;3$;28|
+ (|Matrix| 11) (|Matrix| $) |INT;reducedSystem;MM;29|
+ (|Vector| 11) (|Record| (|:| |mat| 55) (|:| |vec| 58))
+ (|Vector| $) |INT;reducedSystem;MVR;30| |INT;abs;2$;31|
+ |INT;random;$;32| |INT;random;2$;33| |INT;=;2$B;34|
+ |INT;<;2$B;35| |INT;-;2$;36| |INT;+;3$;37| |INT;-;3$;38|
+ NIL NIL (|NonNegativeInteger|) |INT;**;$Nni$;41|
+ |INT;odd?;$B;42| |INT;max;3$;43| |INT;min;3$;44|
+ (|Record| (|:| |quotient| $) (|:| |remainder| $))
+ |INT;divide;2$R;45| |INT;quo;3$;46| |INT;rem;3$;47|
+ |INT;shift;3$;48| (|Union| $ '"failed") |INT;exquo;2$U;49|
+ |INT;recip;$U;50| |INT;gcd;3$;51|
+ (|Record| (|:| |unit| $) (|:| |canonical| $)
+ (|:| |associate| $))
+ |INT;unitNormal;$R;52| |INT;unitCanonical;2$;53|
+ (|SparseUnivariatePolynomial| 11) (|List| 89)
+ (|Union| 90 '"failed")
+ (|IntegerSolveLinearPolynomialEquation|)
+ (63 . |solveLinearPolynomialEquation|)
+ (|SparseUnivariatePolynomial| $$) (|Factored| 94)
+ (|UnivariatePolynomialSquareFree| $$ 94)
+ (69 . |squareFree|) (74 . |primitivePart|)
+ (79 . |leadingCoefficient|) (|GaloisGroupFactorizer| 94)
+ (84 . |factor|) (89 . |coerce|) (|Factored| $)
+ (94 . |factor|) (|Mapping| 94 $$) (|Factored| $$)
+ (|FactoredFunctions2| $$ 94) (99 . |map|)
+ (|FactoredFunctionUtilities| 94) (105 . |mergeFactors|)
+ (111 . |factorSquareFree|) (116 . |zero?|)
+ (121 . |unitCanonical|) (|List| 94) (|HeuGcd| 94)
+ (126 . |gcd|) (|SparseUnivariatePolynomial| $)
+ |INT;gcdPolynomial;3Sup;58| (|Fraction| 11)
+ (|Union| 119 '"failed") (|PatternMatchResult| 11 $)
+ (|Pattern| 11) (|Union| 11 '"failed") (|List| $)
+ (|Union| 124 '"failed")
+ (|Record| (|:| |coef| 124) (|:| |generator| $))
+ (|Record| (|:| |coef1| $) (|:| |coef2| $))
+ (|Union| 127 '"failed")
+ (|Record| (|:| |coef1| $) (|:| |coef2| $)
+ (|:| |generator| $))
+ (|PositiveInteger|) (|SingleInteger|))
+ '#(~= 131 |zero?| 137 |unitNormal| 142 |unitCanonical| 147
+ |unit?| 152 |symmetricRemainder| 157 |subtractIfCan| 163
+ |submod| 169 |squareFreePart| 176 |squareFree| 181
+ |sizeLess?| 186 |sign| 192 |shift| 197 |sample| 203
+ |retractIfCan| 207 |retract| 212 |rem| 217 |reducedSystem|
+ 223 |recip| 234 |rationalIfCan| 239 |rational?| 244
+ |rational| 249 |random| 254 |quo| 263 |principalIdeal| 269
+ |prime?| 274 |powmod| 279 |positiveRemainder| 286
+ |positive?| 292 |permutation| 297 |patternMatch| 303
+ |one?| 310 |odd?| 315 |nextItem| 320 |negative?| 325
+ |multiEuclidean| 330 |mulmod| 336 |min| 343 |max| 349
+ |mask| 355 |length| 360 |lcm| 365 |latex| 376 |invmod| 381
+ |init| 387 |inc| 391 |hash| 396 |gcdPolynomial| 406 |gcd|
+ 412 |factorial| 423 |factor| 428 |extendedEuclidean| 433
+ |exquo| 446 |expressIdealMember| 452 |even?| 458
+ |euclideanSize| 463 |divide| 468 |differentiate| 474 |dec|
+ 485 |copy| 490 |convert| 495 |coerce| 525 |characteristic|
+ 545 |bit?| 549 |binomial| 555 |base| 561 |associates?| 565
+ |addmod| 571 |abs| 578 ^ 583 |Zero| 595 |One| 599
+ |OMwrite| 603 D 627 >= 638 > 644 = 650 <= 656 < 662 - 668
+ + 679 ** 685 * 697)
+ '((|infinite| . 0) (|noetherian| . 0)
+ (|canonicalsClosed| . 0) (|canonical| . 0)
+ (|canonicalUnitNormal| . 0) (|multiplicativeValuation| . 0)
+ (|noZeroDivisors| . 0) ((|commutative| "*") . 0)
+ (|rightUnitary| . 0) (|leftUnitary| . 0)
+ (|unitsKnown| . 0))
+ (CONS (|makeByteWordVec2| 1
+ '(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
+ (CONS '#(|IntegerNumberSystem&| |EuclideanDomain&|
+ |UniqueFactorizationDomain&| NIL NIL
+ |GcdDomain&| |IntegralDomain&| |Algebra&| NIL
+ NIL |DifferentialRing&| |OrderedRing&| NIL NIL
+ |Module&| NIL NIL |Ring&| NIL NIL NIL NIL NIL
+ |AbelianGroup&| NIL NIL |AbelianMonoid&|
+ |Monoid&| NIL NIL |OrderedSet&|
+ |AbelianSemiGroup&| |SemiGroup&| NIL
+ |SetCategory&| NIL NIL NIL NIL NIL NIL NIL
+ |RetractableTo&| NIL |BasicType&| NIL)
+ (CONS '#((|IntegerNumberSystem|)
+ (|EuclideanDomain|)
+ (|UniqueFactorizationDomain|)
+ (|PrincipalIdealDomain|)
+ (|OrderedIntegralDomain|) (|GcdDomain|)
+ (|IntegralDomain|) (|Algebra| $$)
+ (|CharacteristicZero|)
+ (|LinearlyExplicitRingOver| 11)
+ (|DifferentialRing|) (|OrderedRing|)
+ (|CommutativeRing|) (|EntireRing|)
+ (|Module| $$) (|OrderedAbelianGroup|)
+ (|BiModule| $$ $$) (|Ring|)
+ (|OrderedCancellationAbelianMonoid|)
+ (|LeftModule| $$) (|Rng|)
+ (|RightModule| $$)
+ (|OrderedAbelianMonoid|)
+ (|AbelianGroup|)
+ (|OrderedAbelianSemiGroup|)
+ (|CancellationAbelianMonoid|)
+ (|AbelianMonoid|) (|Monoid|)
+ (|StepThrough|) (|PatternMatchable| 11)
+ (|OrderedSet|) (|AbelianSemiGroup|)
+ (|SemiGroup|) (|RealConstant|)
+ (|SetCategory|) (|OpenMath|)
+ (|ConvertibleTo| 9) (|ConvertibleTo| 44)
+ (|ConvertibleTo| 47)
+ (|CombinatorialFunctionCategory|)
+ (|ConvertibleTo| 122)
+ (|ConvertibleTo| 49)
+ (|RetractableTo| 11)
+ (|ConvertibleTo| 11) (|BasicType|)
+ (|CoercibleTo| 35))
+ (|makeByteWordVec2| 131
+ '(1 7 6 0 8 3 7 6 0 9 9 10 2 7 6 0 11
+ 12 1 7 6 0 13 0 14 0 15 2 7 0 9 14 16
+ 1 7 6 0 17 1 7 6 0 18 1 7 6 0 19 1 35
+ 0 11 36 1 44 0 11 45 1 49 0 11 50 2
+ 92 91 90 89 93 1 96 95 94 97 1 94 0 0
+ 98 1 94 2 0 99 1 100 95 94 101 1 94 0
+ 2 102 1 0 103 0 104 2 107 95 105 106
+ 108 2 109 95 95 95 110 1 100 95 94
+ 111 1 94 21 0 112 1 94 0 0 113 1 115
+ 94 114 116 2 0 21 0 0 1 1 0 21 0 25 1
+ 0 86 0 87 1 0 0 0 88 1 0 21 0 1 2 0 0
+ 0 0 1 2 0 82 0 0 1 3 0 0 0 0 0 42 1 0
+ 0 0 1 1 0 103 0 1 2 0 21 0 0 1 1 0 11
+ 0 1 2 0 0 0 0 81 0 0 0 1 1 0 123 0 1
+ 1 0 11 0 1 2 0 0 0 0 80 2 0 59 56 60
+ 61 1 0 55 56 57 1 0 82 0 84 1 0 120 0
+ 1 1 0 21 0 1 1 0 119 0 1 1 0 0 0 64 0
+ 0 0 63 2 0 0 0 0 79 1 0 126 124 1 1 0
+ 21 0 1 3 0 0 0 0 0 1 2 0 0 0 0 54 1 0
+ 21 0 1 2 0 0 0 0 1 3 0 121 0 122 121
+ 1 1 0 21 0 26 1 0 21 0 74 1 0 82 0 1
+ 1 0 21 0 34 2 0 125 124 0 1 3 0 0 0 0
+ 0 43 2 0 0 0 0 76 2 0 0 0 0 75 1 0 0
+ 0 1 1 0 0 0 40 1 0 0 124 1 2 0 0 0 0
+ 1 1 0 9 0 53 2 0 0 0 0 1 0 0 0 1 1 0
+ 0 0 31 1 0 0 0 33 1 0 131 0 1 2 0 117
+ 117 117 118 2 0 0 0 0 85 1 0 0 124 1
+ 1 0 0 0 1 1 0 103 0 104 3 0 128 0 0 0
+ 1 2 0 129 0 0 1 2 0 82 0 0 83 2 0 125
+ 124 0 1 1 0 21 0 1 1 0 72 0 1 2 0 77
+ 0 0 78 1 0 0 0 1 2 0 0 0 72 1 1 0 0 0
+ 32 1 0 0 0 30 1 0 9 0 52 1 0 47 0 48
+ 1 0 44 0 46 1 0 49 0 51 1 0 122 0 1 1
+ 0 11 0 39 1 0 0 11 38 1 0 0 11 38 1 0
+ 0 0 1 1 0 35 0 37 0 0 72 1 2 0 21 0 0
+ 1 2 0 0 0 0 1 0 0 0 29 2 0 21 0 0 1 3
+ 0 0 0 0 0 41 1 0 0 0 62 2 0 0 0 72 1
+ 2 0 0 0 130 1 0 0 0 27 0 0 0 28 3 0 6
+ 7 0 21 24 2 0 9 0 21 22 2 0 6 7 0 23
+ 1 0 9 0 20 1 0 0 0 1 2 0 0 0 72 1 2 0
+ 21 0 0 1 2 0 21 0 0 1 2 0 21 0 0 65 2
+ 0 21 0 0 1 2 0 21 0 0 66 2 0 0 0 0 69
+ 1 0 0 0 67 2 0 0 0 0 68 2 0 0 0 72 73
+ 2 0 0 0 130 1 2 0 0 0 0 70 2 0 0 11 0
+ 71 2 0 0 72 0 1 2 0 0 130 0 1)))))
+ '|lookupComplete|))
+
+(MAKEPROP '|Integer| 'NILADIC T)
diff --git a/src/algebra/strap/INTDOM-.lsp b/src/algebra/strap/INTDOM-.lsp
new file mode 100644
index 00000000..7c1f5677
--- /dev/null
+++ b/src/algebra/strap/INTDOM-.lsp
@@ -0,0 +1,79 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |INTDOM-;unitNormal;SR;1| (|x| $)
+ (VECTOR (|spadConstant| $ 7) |x| (|spadConstant| $ 7)))
+
+(DEFUN |INTDOM-;unitCanonical;2S;2| (|x| $)
+ (QVELT (SPADCALL |x| (QREFELT $ 10)) 1))
+
+(DEFUN |INTDOM-;recip;SU;3| (|x| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 13)) (CONS 1 "failed"))
+ ('T (SPADCALL (|spadConstant| $ 7) |x| (QREFELT $ 15)))))
+
+(DEFUN |INTDOM-;unit?;SB;4| (|x| $)
+ (COND ((QEQCAR (SPADCALL |x| (QREFELT $ 17)) 1) 'NIL) ('T 'T)))
+
+(DEFUN |INTDOM-;associates?;2SB;5| (|x| |y| $)
+ (SPADCALL (QVELT (SPADCALL |x| (QREFELT $ 10)) 1)
+ (QVELT (SPADCALL |y| (QREFELT $ 10)) 1) (QREFELT $ 19)))
+
+(DEFUN |INTDOM-;associates?;2SB;6| (|x| |y| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 13)) (SPADCALL |y| (QREFELT $ 13)))
+ ((OR (SPADCALL |y| (QREFELT $ 13))
+ (OR (QEQCAR (SPADCALL |x| |y| (QREFELT $ 15)) 1)
+ (QEQCAR (SPADCALL |y| |x| (QREFELT $ 15)) 1)))
+ 'NIL)
+ ('T 'T)))
+
+(DEFUN |IntegralDomain&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|IntegralDomain&|))
+ (LETT |dv$| (LIST '|IntegralDomain&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 21) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (COND
+ ((|HasCategory| |#1| '(|Field|)))
+ ('T
+ (QSETREFV $ 9
+ (CONS (|dispatchFunction| |INTDOM-;unitNormal;SR;1|) $))))
+ (COND
+ ((|HasAttribute| |#1| '|canonicalUnitNormal|)
+ (QSETREFV $ 20
+ (CONS (|dispatchFunction| |INTDOM-;associates?;2SB;5|)
+ $)))
+ ('T
+ (QSETREFV $ 20
+ (CONS (|dispatchFunction| |INTDOM-;associates?;2SB;6|)
+ $))))
+ $))))
+
+(MAKEPROP '|IntegralDomain&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (0 . |One|)
+ (|Record| (|:| |unit| $) (|:| |canonical| $)
+ (|:| |associate| $))
+ (4 . |unitNormal|) (9 . |unitNormal|)
+ |INTDOM-;unitCanonical;2S;2| (|Boolean|) (14 . |zero?|)
+ (|Union| $ '"failed") (19 . |exquo|) |INTDOM-;recip;SU;3|
+ (25 . |recip|) |INTDOM-;unit?;SB;4| (30 . =)
+ (36 . |associates?|))
+ '#(|unitNormal| 42 |unitCanonical| 47 |unit?| 52 |recip| 57
+ |associates?| 62)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 20
+ '(0 6 0 7 1 0 8 0 9 1 6 8 0 10 1 6 12 0
+ 13 2 6 14 0 0 15 1 6 14 0 17 2 6 12 0
+ 0 19 2 0 12 0 0 20 1 0 8 0 9 1 0 0 0
+ 11 1 0 12 0 18 1 0 14 0 16 2 0 12 0 0
+ 20)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/INTDOM.lsp b/src/algebra/strap/INTDOM.lsp
new file mode 100644
index 00000000..9f770345
--- /dev/null
+++ b/src/algebra/strap/INTDOM.lsp
@@ -0,0 +1,34 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |IntegralDomain;AL| 'NIL)
+
+(DEFUN |IntegralDomain| ()
+ (LET (#:G1393)
+ (COND
+ (|IntegralDomain;AL|)
+ (T (SETQ |IntegralDomain;AL| (|IntegralDomain;|))))))
+
+(DEFUN |IntegralDomain;| ()
+ (PROG (#0=#:G1391)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|CommutativeRing|) (|Algebra| '$)
+ (|EntireRing|)
+ (|mkCategory| '|domain|
+ '(((|exquo| ((|Union| $ "failed") $ $))
+ T)
+ ((|unitNormal|
+ ((|Record| (|:| |unit| $)
+ (|:| |canonical| $)
+ (|:| |associate| $))
+ $))
+ T)
+ ((|unitCanonical| ($ $)) T)
+ ((|associates?| ((|Boolean|) $ $)) T)
+ ((|unit?| ((|Boolean|) $)) T))
+ NIL '((|Boolean|)) NIL))
+ |IntegralDomain|)
+ (SETELT #0# 0 '(|IntegralDomain|))))))
+
+(MAKEPROP '|IntegralDomain| 'NILADIC T)
diff --git a/src/algebra/strap/ISTRING.lsp b/src/algebra/strap/ISTRING.lsp
new file mode 100644
index 00000000..65f503c0
--- /dev/null
+++ b/src/algebra/strap/ISTRING.lsp
@@ -0,0 +1,891 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|ISTRING;new;NniC$;1| '|SPADreplace| 'MAKE-FULL-CVEC)
+
+(DEFUN |ISTRING;new;NniC$;1| (|n| |c| $) (MAKE-FULL-CVEC |n| |c|))
+
+(PUT '|ISTRING;empty;$;2| '|SPADreplace|
+ '(XLAM NIL (MAKE-FULL-CVEC 0)))
+
+(DEFUN |ISTRING;empty;$;2| ($) (MAKE-FULL-CVEC 0))
+
+(DEFUN |ISTRING;empty?;$B;3| (|s| $) (EQL (QCSIZE |s|) 0))
+
+(PUT '|ISTRING;#;$Nni;4| '|SPADreplace| 'QCSIZE)
+
+(DEFUN |ISTRING;#;$Nni;4| (|s| $) (QCSIZE |s|))
+
+(PUT '|ISTRING;=;2$B;5| '|SPADreplace| 'EQUAL)
+
+(DEFUN |ISTRING;=;2$B;5| (|s| |t| $) (EQUAL |s| |t|))
+
+(PUT '|ISTRING;<;2$B;6| '|SPADreplace|
+ '(XLAM (|s| |t|) (CGREATERP |t| |s|)))
+
+(DEFUN |ISTRING;<;2$B;6| (|s| |t| $) (CGREATERP |t| |s|))
+
+(PUT '|ISTRING;concat;3$;7| '|SPADreplace| 'STRCONC)
+
+(DEFUN |ISTRING;concat;3$;7| (|s| |t| $) (STRCONC |s| |t|))
+
+(PUT '|ISTRING;copy;2$;8| '|SPADreplace| 'COPY-SEQ)
+
+(DEFUN |ISTRING;copy;2$;8| (|s| $) (COPY-SEQ |s|))
+
+(DEFUN |ISTRING;insert;2$I$;9| (|s| |t| |i| $)
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |s|
+ (SPADCALL (QREFELT $ 6) (- |i| 1) (QREFELT $ 20))
+ (QREFELT $ 21))
+ |t| (QREFELT $ 16))
+ (SPADCALL |s| (SPADCALL |i| (QREFELT $ 22)) (QREFELT $ 21))
+ (QREFELT $ 16)))
+
+(DEFUN |ISTRING;coerce;$Of;10| (|s| $) (SPADCALL |s| (QREFELT $ 26)))
+
+(DEFUN |ISTRING;minIndex;$I;11| (|s| $) (QREFELT $ 6))
+
+(DEFUN |ISTRING;upperCase!;2$;12| (|s| $)
+ (SPADCALL (ELT $ 31) |s| (QREFELT $ 33)))
+
+(DEFUN |ISTRING;lowerCase!;2$;13| (|s| $)
+ (SPADCALL (ELT $ 36) |s| (QREFELT $ 33)))
+
+(DEFUN |ISTRING;latex;$S;14| (|s| $)
+ (STRCONC "\\mbox{``" (STRCONC |s| "''}")))
+
+(DEFUN |ISTRING;replace;$Us2$;15| (|s| |sg| |t| $)
+ (PROG (|l| |m| |n| |h| #0=#:G1770 |r| #1=#:G1776 #2=#:G1777 |i|
+ #3=#:G1778 |k|)
+ (RETURN
+ (SEQ (LETT |l| (- (SPADCALL |sg| (QREFELT $ 39)) (QREFELT $ 6))
+ |ISTRING;replace;$Us2$;15|)
+ (LETT |m| (SPADCALL |s| (QREFELT $ 13))
+ |ISTRING;replace;$Us2$;15|)
+ (LETT |n| (SPADCALL |t| (QREFELT $ 13))
+ |ISTRING;replace;$Us2$;15|)
+ (LETT |h|
+ (COND
+ ((SPADCALL |sg| (QREFELT $ 40))
+ (- (SPADCALL |sg| (QREFELT $ 41)) (QREFELT $ 6)))
+ ('T (- (SPADCALL |s| (QREFELT $ 42)) (QREFELT $ 6))))
+ |ISTRING;replace;$Us2$;15|)
+ (COND
+ ((OR (OR (< |l| 0) (NULL (< |h| |m|))) (< |h| (- |l| 1)))
+ (EXIT (|error| "index out of range"))))
+ (LETT |r|
+ (SPADCALL
+ (PROG1 (LETT #0# (+ (- |m| (+ (- |h| |l|) 1)) |n|)
+ |ISTRING;replace;$Us2$;15|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (SPADCALL (QREFELT $ 43)) (QREFELT $ 9))
+ |ISTRING;replace;$Us2$;15|)
+ (SEQ (LETT |i| 0 |ISTRING;replace;$Us2$;15|)
+ (LETT #1# (- |l| 1) |ISTRING;replace;$Us2$;15|)
+ (LETT |k| 0 |ISTRING;replace;$Us2$;15|) G190
+ (COND ((QSGREATERP |i| #1#) (GO G191)))
+ (SEQ (EXIT (QESET |r| |k| (CHAR |s| |i|))))
+ (LETT |k|
+ (PROG1 (QSADD1 |k|)
+ (LETT |i| (QSADD1 |i|)
+ |ISTRING;replace;$Us2$;15|))
+ |ISTRING;replace;$Us2$;15|)
+ (GO G190) G191 (EXIT NIL))
+ (SEQ (LETT |i| 0 |ISTRING;replace;$Us2$;15|)
+ (LETT #2# (- |n| 1) |ISTRING;replace;$Us2$;15|)
+ (LETT |k| |k| |ISTRING;replace;$Us2$;15|) G190
+ (COND ((QSGREATERP |i| #2#) (GO G191)))
+ (SEQ (EXIT (QESET |r| |k| (CHAR |t| |i|))))
+ (LETT |k|
+ (PROG1 (+ |k| 1)
+ (LETT |i| (QSADD1 |i|)
+ |ISTRING;replace;$Us2$;15|))
+ |ISTRING;replace;$Us2$;15|)
+ (GO G190) G191 (EXIT NIL))
+ (SEQ (LETT |i| (+ |h| 1) |ISTRING;replace;$Us2$;15|)
+ (LETT #3# (- |m| 1) |ISTRING;replace;$Us2$;15|)
+ (LETT |k| |k| |ISTRING;replace;$Us2$;15|) G190
+ (COND ((> |i| #3#) (GO G191)))
+ (SEQ (EXIT (QESET |r| |k| (CHAR |s| |i|))))
+ (LETT |k|
+ (PROG1 (+ |k| 1)
+ (LETT |i| (+ |i| 1) |ISTRING;replace;$Us2$;15|))
+ |ISTRING;replace;$Us2$;15|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |r|)))))
+
+(DEFUN |ISTRING;setelt;$I2C;16| (|s| |i| |c| $)
+ (SEQ (COND
+ ((OR (< |i| (QREFELT $ 6))
+ (< (SPADCALL |s| (QREFELT $ 42)) |i|))
+ (|error| "index out of range"))
+ ('T (SEQ (QESET |s| (- |i| (QREFELT $ 6)) |c|) (EXIT |c|))))))
+
+(DEFUN |ISTRING;substring?;2$IB;17| (|part| |whole| |startpos| $)
+ (PROG (|np| |nw| |iw| |ip| #0=#:G1788 #1=#:G1787 #2=#:G1783)
+ (RETURN
+ (SEQ (EXIT (SEQ (LETT |np| (QCSIZE |part|)
+ |ISTRING;substring?;2$IB;17|)
+ (LETT |nw| (QCSIZE |whole|)
+ |ISTRING;substring?;2$IB;17|)
+ (LETT |startpos| (- |startpos| (QREFELT $ 6))
+ |ISTRING;substring?;2$IB;17|)
+ (EXIT (COND
+ ((< |startpos| 0)
+ (|error| "index out of bounds"))
+ ((< (- |nw| |startpos|) |np|) 'NIL)
+ ('T
+ (SEQ (SEQ
+ (EXIT
+ (SEQ
+ (LETT |iw| |startpos|
+ |ISTRING;substring?;2$IB;17|)
+ (LETT |ip| 0
+ |ISTRING;substring?;2$IB;17|)
+ (LETT #0# (- |np| 1)
+ |ISTRING;substring?;2$IB;17|)
+ G190
+ (COND
+ ((QSGREATERP |ip| #0#)
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (COND
+ ((NULL
+ (CHAR= (CHAR |part| |ip|)
+ (CHAR |whole| |iw|)))
+ (PROGN
+ (LETT #2#
+ (PROGN
+ (LETT #1# 'NIL
+ |ISTRING;substring?;2$IB;17|)
+ (GO #1#))
+ |ISTRING;substring?;2$IB;17|)
+ (GO #2#))))))
+ (LETT |ip|
+ (PROG1 (QSADD1 |ip|)
+ (LETT |iw| (+ |iw| 1)
+ |ISTRING;substring?;2$IB;17|))
+ |ISTRING;substring?;2$IB;17|)
+ (GO G190) G191 (EXIT NIL)))
+ #2# (EXIT #2#))
+ (EXIT 'T)))))))
+ #1# (EXIT #1#)))))
+
+(DEFUN |ISTRING;position;2$2I;18| (|s| |t| |startpos| $)
+ (PROG (|r|)
+ (RETURN
+ (SEQ (LETT |startpos| (- |startpos| (QREFELT $ 6))
+ |ISTRING;position;2$2I;18|)
+ (EXIT (COND
+ ((< |startpos| 0) (|error| "index out of bounds"))
+ ((NULL (< |startpos| (QCSIZE |t|)))
+ (- (QREFELT $ 6) 1))
+ ('T
+ (SEQ (LETT |r| (STRPOS |s| |t| |startpos| NIL)
+ |ISTRING;position;2$2I;18|)
+ (EXIT (COND
+ ((EQ |r| NIL) (- (QREFELT $ 6) 1))
+ ('T (+ |r| (QREFELT $ 6)))))))))))))
+
+(DEFUN |ISTRING;position;C$2I;19| (|c| |t| |startpos| $)
+ (PROG (|r| #0=#:G1799 #1=#:G1798)
+ (RETURN
+ (SEQ (EXIT (SEQ (LETT |startpos| (- |startpos| (QREFELT $ 6))
+ |ISTRING;position;C$2I;19|)
+ (EXIT (COND
+ ((< |startpos| 0)
+ (|error| "index out of bounds"))
+ ((NULL (< |startpos| (QCSIZE |t|)))
+ (- (QREFELT $ 6) 1))
+ ('T
+ (SEQ (SEQ
+ (LETT |r| |startpos|
+ |ISTRING;position;C$2I;19|)
+ (LETT #0#
+ (QSDIFFERENCE (QCSIZE |t|) 1)
+ |ISTRING;position;C$2I;19|)
+ G190
+ (COND ((> |r| #0#) (GO G191)))
+ (SEQ
+ (EXIT
+ (COND
+ ((CHAR= (CHAR |t| |r|) |c|)
+ (PROGN
+ (LETT #1#
+ (+ |r| (QREFELT $ 6))
+ |ISTRING;position;C$2I;19|)
+ (GO #1#))))))
+ (LETT |r| (+ |r| 1)
+ |ISTRING;position;C$2I;19|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (- (QREFELT $ 6) 1))))))))
+ #1# (EXIT #1#)))))
+
+(DEFUN |ISTRING;position;Cc$2I;20| (|cc| |t| |startpos| $)
+ (PROG (|r| #0=#:G1806 #1=#:G1805)
+ (RETURN
+ (SEQ (EXIT (SEQ (LETT |startpos| (- |startpos| (QREFELT $ 6))
+ |ISTRING;position;Cc$2I;20|)
+ (EXIT (COND
+ ((< |startpos| 0)
+ (|error| "index out of bounds"))
+ ((NULL (< |startpos| (QCSIZE |t|)))
+ (- (QREFELT $ 6) 1))
+ ('T
+ (SEQ (SEQ
+ (LETT |r| |startpos|
+ |ISTRING;position;Cc$2I;20|)
+ (LETT #0#
+ (QSDIFFERENCE (QCSIZE |t|) 1)
+ |ISTRING;position;Cc$2I;20|)
+ G190
+ (COND ((> |r| #0#) (GO G191)))
+ (SEQ
+ (EXIT
+ (COND
+ ((SPADCALL (CHAR |t| |r|) |cc|
+ (QREFELT $ 49))
+ (PROGN
+ (LETT #1#
+ (+ |r| (QREFELT $ 6))
+ |ISTRING;position;Cc$2I;20|)
+ (GO #1#))))))
+ (LETT |r| (+ |r| 1)
+ |ISTRING;position;Cc$2I;20|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (- (QREFELT $ 6) 1))))))))
+ #1# (EXIT #1#)))))
+
+(DEFUN |ISTRING;suffix?;2$B;21| (|s| |t| $)
+ (PROG (|n| |m|)
+ (RETURN
+ (SEQ (LETT |n| (SPADCALL |t| (QREFELT $ 42))
+ |ISTRING;suffix?;2$B;21|)
+ (LETT |m| (SPADCALL |s| (QREFELT $ 42))
+ |ISTRING;suffix?;2$B;21|)
+ (EXIT (COND
+ ((< |n| |m|) 'NIL)
+ ('T
+ (SPADCALL |s| |t| (- (+ (QREFELT $ 6) |n|) |m|)
+ (QREFELT $ 46)))))))))
+
+(DEFUN |ISTRING;split;$CL;22| (|s| |c| $)
+ (PROG (|n| |j| |i| |l|)
+ (RETURN
+ (SEQ (LETT |n| (SPADCALL |s| (QREFELT $ 42))
+ |ISTRING;split;$CL;22|)
+ (SEQ (LETT |i| (QREFELT $ 6) |ISTRING;split;$CL;22|) G190
+ (COND
+ ((OR (> |i| |n|)
+ (NULL (SPADCALL
+ (SPADCALL |s| |i| (QREFELT $ 52)) |c|
+ (QREFELT $ 53))))
+ (GO G191)))
+ (SEQ (EXIT 0))
+ (LETT |i| (+ |i| 1) |ISTRING;split;$CL;22|) (GO G190)
+ G191 (EXIT NIL))
+ (LETT |l| (SPADCALL (QREFELT $ 55)) |ISTRING;split;$CL;22|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((< |n| |i|) 'NIL)
+ ('T
+ (SPADCALL
+ (< (LETT |j|
+ (SPADCALL |c| |s| |i|
+ (QREFELT $ 48))
+ |ISTRING;split;$CL;22|)
+ (QREFELT $ 6))
+ (QREFELT $ 56)))))
+ (GO G191)))
+ (SEQ (LETT |l|
+ (SPADCALL
+ (SPADCALL |s|
+ (SPADCALL |i| (- |j| 1)
+ (QREFELT $ 20))
+ (QREFELT $ 21))
+ |l| (QREFELT $ 57))
+ |ISTRING;split;$CL;22|)
+ (EXIT (SEQ (LETT |i| |j| |ISTRING;split;$CL;22|)
+ G190
+ (COND
+ ((OR (> |i| |n|)
+ (NULL
+ (SPADCALL
+ (SPADCALL |s| |i| (QREFELT $ 52))
+ |c| (QREFELT $ 53))))
+ (GO G191)))
+ (SEQ (EXIT 0))
+ (LETT |i| (+ |i| 1)
+ |ISTRING;split;$CL;22|)
+ (GO G190) G191 (EXIT NIL))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (COND
+ ((NULL (< |n| |i|))
+ (LETT |l|
+ (SPADCALL
+ (SPADCALL |s| (SPADCALL |i| |n| (QREFELT $ 20))
+ (QREFELT $ 21))
+ |l| (QREFELT $ 57))
+ |ISTRING;split;$CL;22|)))
+ (EXIT (SPADCALL |l| (QREFELT $ 58)))))))
+
+(DEFUN |ISTRING;split;$CcL;23| (|s| |cc| $)
+ (PROG (|n| |j| |i| |l|)
+ (RETURN
+ (SEQ (LETT |n| (SPADCALL |s| (QREFELT $ 42))
+ |ISTRING;split;$CcL;23|)
+ (SEQ (LETT |i| (QREFELT $ 6) |ISTRING;split;$CcL;23|) G190
+ (COND
+ ((OR (> |i| |n|)
+ (NULL (SPADCALL
+ (SPADCALL |s| |i| (QREFELT $ 52)) |cc|
+ (QREFELT $ 49))))
+ (GO G191)))
+ (SEQ (EXIT 0))
+ (LETT |i| (+ |i| 1) |ISTRING;split;$CcL;23|) (GO G190)
+ G191 (EXIT NIL))
+ (LETT |l| (SPADCALL (QREFELT $ 55)) |ISTRING;split;$CcL;23|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((< |n| |i|) 'NIL)
+ ('T
+ (SPADCALL
+ (< (LETT |j|
+ (SPADCALL |cc| |s| |i|
+ (QREFELT $ 50))
+ |ISTRING;split;$CcL;23|)
+ (QREFELT $ 6))
+ (QREFELT $ 56)))))
+ (GO G191)))
+ (SEQ (LETT |l|
+ (SPADCALL
+ (SPADCALL |s|
+ (SPADCALL |i| (- |j| 1)
+ (QREFELT $ 20))
+ (QREFELT $ 21))
+ |l| (QREFELT $ 57))
+ |ISTRING;split;$CcL;23|)
+ (EXIT (SEQ (LETT |i| |j| |ISTRING;split;$CcL;23|)
+ G190
+ (COND
+ ((OR (> |i| |n|)
+ (NULL
+ (SPADCALL
+ (SPADCALL |s| |i| (QREFELT $ 52))
+ |cc| (QREFELT $ 49))))
+ (GO G191)))
+ (SEQ (EXIT 0))
+ (LETT |i| (+ |i| 1)
+ |ISTRING;split;$CcL;23|)
+ (GO G190) G191 (EXIT NIL))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (COND
+ ((NULL (< |n| |i|))
+ (LETT |l|
+ (SPADCALL
+ (SPADCALL |s| (SPADCALL |i| |n| (QREFELT $ 20))
+ (QREFELT $ 21))
+ |l| (QREFELT $ 57))
+ |ISTRING;split;$CcL;23|)))
+ (EXIT (SPADCALL |l| (QREFELT $ 58)))))))
+
+(DEFUN |ISTRING;leftTrim;$C$;24| (|s| |c| $)
+ (PROG (|n| |i|)
+ (RETURN
+ (SEQ (LETT |n| (SPADCALL |s| (QREFELT $ 42))
+ |ISTRING;leftTrim;$C$;24|)
+ (SEQ (LETT |i| (QREFELT $ 6) |ISTRING;leftTrim;$C$;24|) G190
+ (COND
+ ((OR (> |i| |n|)
+ (NULL (SPADCALL
+ (SPADCALL |s| |i| (QREFELT $ 52)) |c|
+ (QREFELT $ 53))))
+ (GO G191)))
+ (SEQ (EXIT 0))
+ (LETT |i| (+ |i| 1) |ISTRING;leftTrim;$C$;24|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |s| (SPADCALL |i| |n| (QREFELT $ 20))
+ (QREFELT $ 21)))))))
+
+(DEFUN |ISTRING;leftTrim;$Cc$;25| (|s| |cc| $)
+ (PROG (|n| |i|)
+ (RETURN
+ (SEQ (LETT |n| (SPADCALL |s| (QREFELT $ 42))
+ |ISTRING;leftTrim;$Cc$;25|)
+ (SEQ (LETT |i| (QREFELT $ 6) |ISTRING;leftTrim;$Cc$;25|)
+ G190
+ (COND
+ ((OR (> |i| |n|)
+ (NULL (SPADCALL
+ (SPADCALL |s| |i| (QREFELT $ 52)) |cc|
+ (QREFELT $ 49))))
+ (GO G191)))
+ (SEQ (EXIT 0))
+ (LETT |i| (+ |i| 1) |ISTRING;leftTrim;$Cc$;25|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |s| (SPADCALL |i| |n| (QREFELT $ 20))
+ (QREFELT $ 21)))))))
+
+(DEFUN |ISTRING;rightTrim;$C$;26| (|s| |c| $)
+ (PROG (|j| #0=#:G1830)
+ (RETURN
+ (SEQ (SEQ (LETT |j| (SPADCALL |s| (QREFELT $ 42))
+ |ISTRING;rightTrim;$C$;26|)
+ (LETT #0# (QREFELT $ 6) |ISTRING;rightTrim;$C$;26|)
+ G190
+ (COND
+ ((OR (< |j| #0#)
+ (NULL (SPADCALL
+ (SPADCALL |s| |j| (QREFELT $ 52)) |c|
+ (QREFELT $ 53))))
+ (GO G191)))
+ (SEQ (EXIT 0))
+ (LETT |j| (+ |j| -1) |ISTRING;rightTrim;$C$;26|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |s|
+ (SPADCALL (SPADCALL |s| (QREFELT $ 28)) |j|
+ (QREFELT $ 20))
+ (QREFELT $ 21)))))))
+
+(DEFUN |ISTRING;rightTrim;$Cc$;27| (|s| |cc| $)
+ (PROG (|j| #0=#:G1834)
+ (RETURN
+ (SEQ (SEQ (LETT |j| (SPADCALL |s| (QREFELT $ 42))
+ |ISTRING;rightTrim;$Cc$;27|)
+ (LETT #0# (QREFELT $ 6) |ISTRING;rightTrim;$Cc$;27|)
+ G190
+ (COND
+ ((OR (< |j| #0#)
+ (NULL (SPADCALL
+ (SPADCALL |s| |j| (QREFELT $ 52)) |cc|
+ (QREFELT $ 49))))
+ (GO G191)))
+ (SEQ (EXIT 0))
+ (LETT |j| (+ |j| -1) |ISTRING;rightTrim;$Cc$;27|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |s|
+ (SPADCALL (SPADCALL |s| (QREFELT $ 28)) |j|
+ (QREFELT $ 20))
+ (QREFELT $ 21)))))))
+
+(DEFUN |ISTRING;concat;L$;28| (|l| $)
+ (PROG (#0=#:G1842 #1=#:G1837 #2=#:G1835 #3=#:G1836 |t| |s| #4=#:G1843
+ |i|)
+ (RETURN
+ (SEQ (LETT |t|
+ (SPADCALL
+ (PROGN
+ (LETT #3# NIL |ISTRING;concat;L$;28|)
+ (SEQ (LETT |s| NIL |ISTRING;concat;L$;28|)
+ (LETT #0# |l| |ISTRING;concat;L$;28|) G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |s| (CAR #0#)
+ |ISTRING;concat;L$;28|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (PROGN
+ (LETT #1#
+ (SPADCALL |s| (QREFELT $ 13))
+ |ISTRING;concat;L$;28|)
+ (COND
+ (#3#
+ (LETT #2# (+ #2# #1#)
+ |ISTRING;concat;L$;28|))
+ ('T
+ (PROGN
+ (LETT #2# #1#
+ |ISTRING;concat;L$;28|)
+ (LETT #3# 'T
+ |ISTRING;concat;L$;28|)))))))
+ (LETT #0# (CDR #0#) |ISTRING;concat;L$;28|)
+ (GO G190) G191 (EXIT NIL))
+ (COND (#3# #2#) ('T 0)))
+ (SPADCALL (QREFELT $ 43)) (QREFELT $ 9))
+ |ISTRING;concat;L$;28|)
+ (LETT |i| (QREFELT $ 6) |ISTRING;concat;L$;28|)
+ (SEQ (LETT |s| NIL |ISTRING;concat;L$;28|)
+ (LETT #4# |l| |ISTRING;concat;L$;28|) G190
+ (COND
+ ((OR (ATOM #4#)
+ (PROGN
+ (LETT |s| (CAR #4#) |ISTRING;concat;L$;28|)
+ NIL))
+ (GO G191)))
+ (SEQ (SPADCALL |t| |s| |i| (QREFELT $ 66))
+ (EXIT (LETT |i|
+ (+ |i| (SPADCALL |s| (QREFELT $ 13)))
+ |ISTRING;concat;L$;28|)))
+ (LETT #4# (CDR #4#) |ISTRING;concat;L$;28|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT |t|)))))
+
+(DEFUN |ISTRING;copyInto!;2$I$;29| (|y| |x| |s| $)
+ (PROG (|m| |n|)
+ (RETURN
+ (SEQ (LETT |m| (SPADCALL |x| (QREFELT $ 13))
+ |ISTRING;copyInto!;2$I$;29|)
+ (LETT |n| (SPADCALL |y| (QREFELT $ 13))
+ |ISTRING;copyInto!;2$I$;29|)
+ (LETT |s| (- |s| (QREFELT $ 6)) |ISTRING;copyInto!;2$I$;29|)
+ (COND
+ ((OR (< |s| 0) (< |n| (+ |s| |m|)))
+ (EXIT (|error| "index out of range"))))
+ (RPLACSTR |y| |s| |m| |x| 0 |m|) (EXIT |y|)))))
+
+(DEFUN |ISTRING;elt;$IC;30| (|s| |i| $)
+ (COND
+ ((OR (< |i| (QREFELT $ 6)) (< (SPADCALL |s| (QREFELT $ 42)) |i|))
+ (|error| "index out of range"))
+ ('T (CHAR |s| (- |i| (QREFELT $ 6))))))
+
+(DEFUN |ISTRING;elt;$Us$;31| (|s| |sg| $)
+ (PROG (|l| |h|)
+ (RETURN
+ (SEQ (LETT |l| (- (SPADCALL |sg| (QREFELT $ 39)) (QREFELT $ 6))
+ |ISTRING;elt;$Us$;31|)
+ (LETT |h|
+ (COND
+ ((SPADCALL |sg| (QREFELT $ 40))
+ (- (SPADCALL |sg| (QREFELT $ 41)) (QREFELT $ 6)))
+ ('T (- (SPADCALL |s| (QREFELT $ 42)) (QREFELT $ 6))))
+ |ISTRING;elt;$Us$;31|)
+ (COND
+ ((OR (< |l| 0)
+ (NULL (< |h| (SPADCALL |s| (QREFELT $ 13)))))
+ (EXIT (|error| "index out of bound"))))
+ (EXIT (SUBSTRING |s| |l| (MAX 0 (+ (- |h| |l|) 1))))))))
+
+(DEFUN |ISTRING;hash;$I;32| (|s| $)
+ (PROG (|n|)
+ (RETURN
+ (SEQ (LETT |n| (QCSIZE |s|) |ISTRING;hash;$I;32|)
+ (EXIT (COND
+ ((ZEROP |n|) 0)
+ ((EQL |n| 1)
+ (SPADCALL
+ (SPADCALL |s| (QREFELT $ 6) (QREFELT $ 52))
+ (QREFELT $ 68)))
+ ('T
+ (* (* (SPADCALL
+ (SPADCALL |s| (QREFELT $ 6)
+ (QREFELT $ 52))
+ (QREFELT $ 68))
+ (SPADCALL
+ (SPADCALL |s| (- (+ (QREFELT $ 6) |n|) 1)
+ (QREFELT $ 52))
+ (QREFELT $ 68)))
+ (SPADCALL
+ (SPADCALL |s|
+ (+ (QREFELT $ 6) (QUOTIENT2 |n| 2))
+ (QREFELT $ 52))
+ (QREFELT $ 68))))))))))
+
+(DEFUN |ISTRING;match;2$CNni;33| (|pattern| |target| |wildcard| $)
+ (|stringMatch| |pattern| |target| (CHARACTER |wildcard|)))
+
+(DEFUN |ISTRING;match?;2$CB;34| (|pattern| |target| |dontcare| $)
+ (PROG (|n| |m| #0=#:G1857 #1=#:G1859 |s| #2=#:G1860 #3=#:G1868 |i|
+ |p| #4=#:G1861 |q|)
+ (RETURN
+ (SEQ (EXIT (SEQ (LETT |n| (SPADCALL |pattern| (QREFELT $ 42))
+ |ISTRING;match?;2$CB;34|)
+ (LETT |p|
+ (PROG1 (LETT #0#
+ (SPADCALL |dontcare| |pattern|
+ (LETT |m|
+ (SPADCALL |pattern|
+ (QREFELT $ 28))
+ |ISTRING;match?;2$CB;34|)
+ (QREFELT $ 48))
+ |ISTRING;match?;2$CB;34|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ |ISTRING;match?;2$CB;34|)
+ (EXIT (COND
+ ((EQL |p| (- |m| 1))
+ (SPADCALL |pattern| |target|
+ (QREFELT $ 14)))
+ ('T
+ (SEQ (COND
+ ((NULL (EQL |p| |m|))
+ (COND
+ ((NULL
+ (SPADCALL
+ (SPADCALL |pattern|
+ (SPADCALL |m| (- |p| 1)
+ (QREFELT $ 20))
+ (QREFELT $ 21))
+ |target| (QREFELT $ 71)))
+ (EXIT 'NIL)))))
+ (LETT |i| |p|
+ |ISTRING;match?;2$CB;34|)
+ (LETT |q|
+ (PROG1
+ (LETT #1#
+ (SPADCALL |dontcare| |pattern|
+ (+ |p| 1) (QREFELT $ 48))
+ |ISTRING;match?;2$CB;34|)
+ (|check-subtype| (>= #1# 0)
+ '(|NonNegativeInteger|) #1#))
+ |ISTRING;match?;2$CB;34|)
+ (SEQ G190
+ (COND
+ ((NULL
+ (SPADCALL (EQL |q| (- |m| 1))
+ (QREFELT $ 56)))
+ (GO G191)))
+ (SEQ
+ (LETT |s|
+ (SPADCALL |pattern|
+ (SPADCALL (+ |p| 1) (- |q| 1)
+ (QREFELT $ 20))
+ (QREFELT $ 21))
+ |ISTRING;match?;2$CB;34|)
+ (LETT |i|
+ (PROG1
+ (LETT #2#
+ (SPADCALL |s| |target| |i|
+ (QREFELT $ 47))
+ |ISTRING;match?;2$CB;34|)
+ (|check-subtype| (>= #2# 0)
+ '(|NonNegativeInteger|) #2#))
+ |ISTRING;match?;2$CB;34|)
+ (EXIT
+ (COND
+ ((EQL |i| (- |m| 1))
+ (PROGN
+ (LETT #3# 'NIL
+ |ISTRING;match?;2$CB;34|)
+ (GO #3#)))
+ ('T
+ (SEQ
+ (LETT |i|
+ (+ |i|
+ (SPADCALL |s|
+ (QREFELT $ 13)))
+ |ISTRING;match?;2$CB;34|)
+ (LETT |p| |q|
+ |ISTRING;match?;2$CB;34|)
+ (EXIT
+ (LETT |q|
+ (PROG1
+ (LETT #4#
+ (SPADCALL |dontcare|
+ |pattern| (+ |q| 1)
+ (QREFELT $ 48))
+ |ISTRING;match?;2$CB;34|)
+ (|check-subtype|
+ (>= #4# 0)
+ '(|NonNegativeInteger|)
+ #4#))
+ |ISTRING;match?;2$CB;34|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (COND
+ ((NULL (EQL |p| |n|))
+ (COND
+ ((NULL
+ (SPADCALL
+ (SPADCALL |pattern|
+ (SPADCALL (+ |p| 1) |n|
+ (QREFELT $ 20))
+ (QREFELT $ 21))
+ |target| (QREFELT $ 51)))
+ (EXIT 'NIL)))))
+ (EXIT 'T)))))))
+ #3# (EXIT #3#)))))
+
+(DEFUN |IndexedString| (#0=#:G1875)
+ (PROG ()
+ (RETURN
+ (PROG (#1=#:G1876)
+ (RETURN
+ (COND
+ ((LETT #1#
+ (|lassocShiftWithFunction| (LIST (|devaluate| #0#))
+ (HGET |$ConstructorCache| '|IndexedString|)
+ '|domainEqualList|)
+ |IndexedString|)
+ (|CDRwithIncrement| #1#))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (|IndexedString;| #0#)
+ (LETT #1# T |IndexedString|))
+ (COND
+ ((NOT #1#)
+ (HREM |$ConstructorCache| '|IndexedString|)))))))))))
+
+(DEFUN |IndexedString;| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|IndexedString|))
+ (LETT |dv$| (LIST '|IndexedString| |dv$1|) . #0#)
+ (LETT $ (|newShell| 84) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (OR (AND (|HasCategory| (|Character|)
+ '(|OrderedSet|))
+ (|HasCategory| (|Character|)
+ '(|Evalable| (|Character|))))
+ (AND (|HasCategory| (|Character|)
+ '(|SetCategory|))
+ (|HasCategory| (|Character|)
+ '(|Evalable| (|Character|)))))
+ (OR (|HasCategory| (|Character|)
+ '(|CoercibleTo| (|OutputForm|)))
+ (AND (|HasCategory| (|Character|)
+ '(|SetCategory|))
+ (|HasCategory| (|Character|)
+ '(|Evalable| (|Character|)))))
+ (|HasCategory| (|Character|)
+ '(|ConvertibleTo| (|InputForm|)))
+ (OR (|HasCategory| (|Character|)
+ '(|OrderedSet|))
+ (|HasCategory| (|Character|)
+ '(|SetCategory|)))
+ (|HasCategory| (|Character|)
+ '(|OrderedSet|))
+ (|HasCategory| (|Integer|) '(|OrderedSet|))
+ (|HasCategory| (|Character|)
+ '(|SetCategory|))
+ (AND (|HasCategory| (|Character|)
+ '(|SetCategory|))
+ (|HasCategory| (|Character|)
+ '(|Evalable| (|Character|))))
+ (|HasCategory| (|Character|)
+ '(|CoercibleTo| (|OutputForm|))))) . #0#))
+ (|haddProp| |$ConstructorCache| '|IndexedString| (LIST |dv$1|)
+ (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|IndexedString| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|)
+ (|NonNegativeInteger|) (|Character|) |ISTRING;new;NniC$;1|
+ |ISTRING;empty;$;2| (|Boolean|) |ISTRING;empty?;$B;3|
+ |ISTRING;#;$Nni;4| |ISTRING;=;2$B;5| |ISTRING;<;2$B;6|
+ |ISTRING;concat;3$;7| |ISTRING;copy;2$;8| (|Integer|)
+ (|UniversalSegment| 18) (0 . SEGMENT)
+ |ISTRING;elt;$Us$;31| (6 . SEGMENT)
+ |ISTRING;insert;2$I$;9| (|String|) (|OutputForm|)
+ (11 . |outputForm|) |ISTRING;coerce;$Of;10|
+ |ISTRING;minIndex;$I;11| (|CharacterClass|)
+ (16 . |upperCase|) (20 . |upperCase|) (|Mapping| 8 8)
+ (25 . |map!|) |ISTRING;upperCase!;2$;12|
+ (31 . |lowerCase|) (35 . |lowerCase|)
+ |ISTRING;lowerCase!;2$;13| |ISTRING;latex;$S;14|
+ (40 . |lo|) (45 . |hasHi|) (50 . |hi|) (55 . |maxIndex|)
+ (60 . |space|) |ISTRING;replace;$Us2$;15|
+ |ISTRING;setelt;$I2C;16| |ISTRING;substring?;2$IB;17|
+ |ISTRING;position;2$2I;18| |ISTRING;position;C$2I;19|
+ (64 . |member?|) |ISTRING;position;Cc$2I;20|
+ |ISTRING;suffix?;2$B;21| |ISTRING;elt;$IC;30| (70 . =)
+ (|List| $$) (76 . |empty|) (80 . |not|) (85 . |concat|)
+ (91 . |reverse!|) (|List| $) |ISTRING;split;$CL;22|
+ |ISTRING;split;$CcL;23| |ISTRING;leftTrim;$C$;24|
+ |ISTRING;leftTrim;$Cc$;25| |ISTRING;rightTrim;$C$;26|
+ |ISTRING;rightTrim;$Cc$;27| |ISTRING;copyInto!;2$I$;29|
+ |ISTRING;concat;L$;28| (96 . |ord|) |ISTRING;hash;$I;32|
+ |ISTRING;match;2$CNni;33| (101 . |prefix?|)
+ |ISTRING;match?;2$CB;34| (|List| 8) (|List| 75)
+ (|Equation| 8) (|Mapping| 8 8 8) (|InputForm|)
+ (|SingleInteger|) (|Mapping| 11 8) (|Mapping| 11 8 8)
+ (|Void|) (|Union| 8 '"failed") (|List| 18))
+ '#(~= 107 |upperCase!| 113 |upperCase| 118 |trim| 123 |swap!|
+ 135 |suffix?| 142 |substring?| 148 |split| 155 |sorted?|
+ 167 |sort!| 178 |sort| 189 |size?| 200 |setelt| 206
+ |select| 220 |sample| 226 |rightTrim| 230 |reverse!| 242
+ |reverse| 247 |replace| 252 |removeDuplicates| 259
+ |remove| 264 |reduce| 276 |qsetelt!| 297 |qelt| 304
+ |prefix?| 310 |position| 316 |parts| 349 |new| 354 |more?|
+ 360 |minIndex| 366 |min| 371 |merge| 377 |members| 390
+ |member?| 395 |maxIndex| 401 |max| 406 |match?| 412
+ |match| 419 |map!| 426 |map| 432 |lowerCase!| 445
+ |lowerCase| 450 |less?| 455 |leftTrim| 461 |latex| 473
+ |insert| 478 |indices| 492 |index?| 497 |hash| 503 |first|
+ 513 |find| 518 |fill!| 524 |every?| 530 |eval| 536 |eq?|
+ 562 |entry?| 568 |entries| 574 |empty?| 579 |empty| 584
+ |elt| 588 |delete| 613 |count| 625 |copyInto!| 637 |copy|
+ 644 |convert| 649 |construct| 654 |concat| 659 |coerce|
+ 682 |any?| 692 >= 698 > 704 = 710 <= 716 < 722 |#| 728)
+ '((|shallowlyMutable| . 0) (|finiteAggregate| . 0))
+ (CONS (|makeByteWordVec2| 5
+ '(0 0 0 0 0 0 0 5 0 0 1 4 0 0 1 2 3 4))
+ (CONS '#(|StringAggregate&|
+ |OneDimensionalArrayAggregate&|
+ |FiniteLinearAggregate&| |LinearAggregate&|
+ |IndexedAggregate&| |Collection&|
+ |HomogeneousAggregate&| |OrderedSet&|
+ |Aggregate&| |EltableAggregate&| |Evalable&|
+ |SetCategory&| NIL NIL |InnerEvalable&| NIL
+ NIL |BasicType&|)
+ (CONS '#((|StringAggregate|)
+ (|OneDimensionalArrayAggregate| 8)
+ (|FiniteLinearAggregate| 8)
+ (|LinearAggregate| 8)
+ (|IndexedAggregate| 18 8)
+ (|Collection| 8)
+ (|HomogeneousAggregate| 8)
+ (|OrderedSet|) (|Aggregate|)
+ (|EltableAggregate| 18 8) (|Evalable| 8)
+ (|SetCategory|) (|Type|)
+ (|Eltable| 18 8) (|InnerEvalable| 8 8)
+ (|CoercibleTo| 25) (|ConvertibleTo| 77)
+ (|BasicType|))
+ (|makeByteWordVec2| 83
+ '(2 19 0 18 18 20 1 19 0 18 22 1 25 0
+ 24 26 0 29 0 30 1 8 0 0 31 2 0 0 32 0
+ 33 0 29 0 35 1 8 0 0 36 1 19 18 0 39
+ 1 19 11 0 40 1 19 18 0 41 1 0 18 0 42
+ 0 8 0 43 2 29 11 8 0 49 2 8 11 0 0 53
+ 0 54 0 55 1 11 0 0 56 2 54 0 2 0 57 1
+ 54 0 0 58 1 8 7 0 68 2 0 11 0 0 71 2
+ 7 11 0 0 1 1 0 0 0 34 1 0 0 0 1 2 0 0
+ 0 8 1 2 0 0 0 29 1 3 0 81 0 18 18 1 2
+ 0 11 0 0 51 3 0 11 0 0 18 46 2 0 59 0
+ 29 61 2 0 59 0 8 60 1 5 11 0 1 2 0 11
+ 80 0 1 1 5 0 0 1 2 0 0 80 0 1 1 5 0 0
+ 1 2 0 0 80 0 1 2 0 11 0 7 1 3 0 8 0
+ 19 8 1 3 0 8 0 18 8 45 2 0 0 79 0 1 0
+ 0 0 1 2 0 0 0 8 64 2 0 0 0 29 65 1 0
+ 0 0 1 1 0 0 0 1 3 0 0 0 19 0 44 1 7 0
+ 0 1 2 7 0 8 0 1 2 0 0 79 0 1 4 7 8 76
+ 0 8 8 1 3 0 8 76 0 8 1 2 0 8 76 0 1 3
+ 0 8 0 18 8 1 2 0 8 0 18 1 2 0 11 0 0
+ 71 3 7 18 8 0 18 48 2 7 18 8 0 1 3 0
+ 18 29 0 18 50 3 0 18 0 0 18 47 2 0 18
+ 79 0 1 1 0 73 0 1 2 0 0 7 8 9 2 0 11
+ 0 7 1 1 6 18 0 28 2 5 0 0 0 1 2 5 0 0
+ 0 1 3 0 0 80 0 0 1 1 0 73 0 1 2 7 11
+ 8 0 1 1 6 18 0 42 2 5 0 0 0 1 3 0 11
+ 0 0 8 72 3 0 7 0 0 8 70 2 0 0 32 0 33
+ 3 0 0 76 0 0 1 2 0 0 32 0 1 1 0 0 0
+ 37 1 0 0 0 1 2 0 11 0 7 1 2 0 0 0 8
+ 62 2 0 0 0 29 63 1 7 24 0 38 3 0 0 8
+ 0 18 1 3 0 0 0 0 18 23 1 0 83 0 1 2 0
+ 11 18 0 1 1 7 78 0 1 1 0 18 0 69 1 6
+ 8 0 1 2 0 82 79 0 1 2 0 0 0 8 1 2 0
+ 11 79 0 1 3 8 0 0 73 73 1 3 8 0 0 8 8
+ 1 2 8 0 0 74 1 2 8 0 0 75 1 2 0 11 0
+ 0 1 2 7 11 8 0 1 1 0 73 0 1 1 0 11 0
+ 12 0 0 0 10 2 0 0 0 0 1 2 0 0 0 19 21
+ 2 0 8 0 18 52 3 0 8 0 18 8 1 2 0 0 0
+ 18 1 2 0 0 0 19 1 2 7 7 8 0 1 2 0 7
+ 79 0 1 3 0 0 0 0 18 66 1 0 0 0 17 1 3
+ 77 0 1 1 0 0 73 1 1 0 0 59 67 2 0 0 0
+ 0 16 2 0 0 0 8 1 2 0 0 8 0 1 1 9 25 0
+ 27 1 0 0 8 1 2 0 11 79 0 1 2 5 11 0 0
+ 1 2 5 11 0 0 1 2 7 11 0 0 14 2 5 11 0
+ 0 1 2 5 11 0 0 15 1 0 7 0 13)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/LIST.lsp b/src/algebra/strap/LIST.lsp
new file mode 100644
index 00000000..69ffd104
--- /dev/null
+++ b/src/algebra/strap/LIST.lsp
@@ -0,0 +1,302 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|LIST;nil;$;1| '|SPADreplace| '(XLAM NIL NIL))
+
+(DEFUN |LIST;nil;$;1| ($) NIL)
+
+(PUT '|LIST;null;$B;2| '|SPADreplace| 'NULL)
+
+(DEFUN |LIST;null;$B;2| (|l| $) (NULL |l|))
+
+(PUT '|LIST;cons;S2$;3| '|SPADreplace| 'CONS)
+
+(DEFUN |LIST;cons;S2$;3| (|s| |l| $) (CONS |s| |l|))
+
+(PUT '|LIST;append;3$;4| '|SPADreplace| 'APPEND)
+
+(DEFUN |LIST;append;3$;4| (|l| |t| $) (APPEND |l| |t|))
+
+(DEFUN |LIST;writeOMList| (|dev| |x| $)
+ (SEQ (SPADCALL |dev| (QREFELT $ 14))
+ (SPADCALL |dev| "list1" "list" (QREFELT $ 16))
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |x|) (QREFELT $ 17))) (GO G191)))
+ (SEQ (SPADCALL |dev| (|SPADfirst| |x|) 'NIL (QREFELT $ 18))
+ (EXIT (LETT |x| (CDR |x|) |LIST;writeOMList|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |dev| (QREFELT $ 19)))))
+
+(DEFUN |LIST;OMwrite;$S;6| (|x| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |LIST;OMwrite;$S;6|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |LIST;OMwrite;$S;6|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (QREFELT $ 21))
+ (QREFELT $ 22))
+ |LIST;OMwrite;$S;6|)
+ (SPADCALL |dev| (QREFELT $ 23))
+ (|LIST;writeOMList| |dev| |x| $)
+ (SPADCALL |dev| (QREFELT $ 24))
+ (SPADCALL |dev| (QREFELT $ 25))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|) |LIST;OMwrite;$S;6|)
+ (EXIT |s|)))))
+
+(DEFUN |LIST;OMwrite;$BS;7| (|x| |wholeObj| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |LIST;OMwrite;$BS;7|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |LIST;OMwrite;$BS;7|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (QREFELT $ 21))
+ (QREFELT $ 22))
+ |LIST;OMwrite;$BS;7|)
+ (COND (|wholeObj| (SPADCALL |dev| (QREFELT $ 23))))
+ (|LIST;writeOMList| |dev| |x| $)
+ (COND (|wholeObj| (SPADCALL |dev| (QREFELT $ 24))))
+ (SPADCALL |dev| (QREFELT $ 25))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|) |LIST;OMwrite;$BS;7|)
+ (EXIT |s|)))))
+
+(DEFUN |LIST;OMwrite;Omd$V;8| (|dev| |x| $)
+ (SEQ (SPADCALL |dev| (QREFELT $ 23)) (|LIST;writeOMList| |dev| |x| $)
+ (EXIT (SPADCALL |dev| (QREFELT $ 24)))))
+
+(DEFUN |LIST;OMwrite;Omd$BV;9| (|dev| |x| |wholeObj| $)
+ (SEQ (COND (|wholeObj| (SPADCALL |dev| (QREFELT $ 23))))
+ (|LIST;writeOMList| |dev| |x| $)
+ (EXIT (COND (|wholeObj| (SPADCALL |dev| (QREFELT $ 24)))))))
+
+(DEFUN |LIST;setUnion;3$;10| (|l1| |l2| $)
+ (SPADCALL (SPADCALL |l1| |l2| (QREFELT $ 30)) (QREFELT $ 31)))
+
+(DEFUN |LIST;setIntersection;3$;11| (|l1| |l2| $)
+ (PROG (|u|)
+ (RETURN
+ (SEQ (LETT |u| NIL |LIST;setIntersection;3$;11|)
+ (LETT |l1| (SPADCALL |l1| (QREFELT $ 31))
+ |LIST;setIntersection;3$;11|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |l1|) (QREFELT $ 17)))
+ (GO G191)))
+ (SEQ (COND
+ ((SPADCALL (|SPADfirst| |l1|) |l2|
+ (QREFELT $ 33))
+ (LETT |u| (CONS (|SPADfirst| |l1|) |u|)
+ |LIST;setIntersection;3$;11|)))
+ (EXIT (LETT |l1| (CDR |l1|)
+ |LIST;setIntersection;3$;11|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |u|)))))
+
+(DEFUN |LIST;setDifference;3$;12| (|l1| |l2| $)
+ (PROG (|l11| |lu|)
+ (RETURN
+ (SEQ (LETT |l1| (SPADCALL |l1| (QREFELT $ 31))
+ |LIST;setDifference;3$;12|)
+ (LETT |lu| NIL |LIST;setDifference;3$;12|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |l1|) (QREFELT $ 17)))
+ (GO G191)))
+ (SEQ (LETT |l11| (SPADCALL |l1| 1 (QREFELT $ 36))
+ |LIST;setDifference;3$;12|)
+ (COND
+ ((NULL (SPADCALL |l11| |l2| (QREFELT $ 33)))
+ (LETT |lu| (CONS |l11| |lu|)
+ |LIST;setDifference;3$;12|)))
+ (EXIT (LETT |l1| (CDR |l1|)
+ |LIST;setDifference;3$;12|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |lu|)))))
+
+(DEFUN |LIST;convert;$If;13| (|x| $)
+ (PROG (#0=#:G1440 |a| #1=#:G1441)
+ (RETURN
+ (SEQ (SPADCALL
+ (CONS (SPADCALL (SPADCALL "construct" (QREFELT $ 39))
+ (QREFELT $ 41))
+ (PROGN
+ (LETT #0# NIL |LIST;convert;$If;13|)
+ (SEQ (LETT |a| NIL |LIST;convert;$If;13|)
+ (LETT #1# |x| |LIST;convert;$If;13|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |a| (CAR #1#)
+ |LIST;convert;$If;13|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |a| (QREFELT $ 42))
+ #0#)
+ |LIST;convert;$If;13|)))
+ (LETT #1# (CDR #1#) |LIST;convert;$If;13|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#)))))
+ (QREFELT $ 44))))))
+
+(DEFUN |List| (#0=#:G1452)
+ (PROG ()
+ (RETURN
+ (PROG (#1=#:G1453)
+ (RETURN
+ (COND
+ ((LETT #1#
+ (|lassocShiftWithFunction| (LIST (|devaluate| #0#))
+ (HGET |$ConstructorCache| '|List|)
+ '|domainEqualList|)
+ |List|)
+ (|CDRwithIncrement| #1#))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (|List;| #0#) (LETT #1# T |List|))
+ (COND ((NOT #1#) (HREM |$ConstructorCache| '|List|)))))))))))
+
+(DEFUN |List;| (|#1|)
+ (PROG (|dv$1| |dv$| $ #0=#:G1451 #1=#:G1449 |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #2=(|List|))
+ (LETT |dv$| (LIST '|List| |dv$1|) . #2#)
+ (LETT $ (GETREFV 63) . #2#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#1|
+ '(|ConvertibleTo| (|InputForm|)))
+ (|HasCategory| |#1| '(|OrderedSet|))
+ (|HasCategory| |#1| '(|OpenMath|))
+ (|HasCategory| (|Integer|) '(|OrderedSet|))
+ (LETT #0#
+ (|HasCategory| |#1| '(|SetCategory|)) . #2#)
+ (OR (|HasCategory| |#1| '(|OrderedSet|))
+ #0#)
+ (AND #0#
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (OR (AND (|HasCategory| |#1|
+ '(|OrderedSet|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (AND #0#
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|)))))
+ (LETT #1#
+ (|HasCategory| |#1|
+ '(|CoercibleTo| (|OutputForm|))) . #2#)
+ (OR (AND #0#
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ #1#))) . #2#))
+ (|haddProp| |$ConstructorCache| '|List| (LIST |dv$1|)
+ (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (PROGN
+ (QSETREFV $ 26
+ (CONS (|dispatchFunction| |LIST;OMwrite;$S;6|) $))
+ (QSETREFV $ 27
+ (CONS (|dispatchFunction| |LIST;OMwrite;$BS;7|) $))
+ (QSETREFV $ 28
+ (CONS (|dispatchFunction| |LIST;OMwrite;Omd$V;8|) $))
+ (QSETREFV $ 29
+ (CONS (|dispatchFunction| |LIST;OMwrite;Omd$BV;9|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 5)
+ (PROGN
+ (QSETREFV $ 32
+ (CONS (|dispatchFunction| |LIST;setUnion;3$;10|) $))
+ (QSETREFV $ 34
+ (CONS (|dispatchFunction|
+ |LIST;setIntersection;3$;11|)
+ $))
+ (QSETREFV $ 37
+ (CONS (|dispatchFunction| |LIST;setDifference;3$;12|)
+ $)))))
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (QSETREFV $ 45
+ (CONS (|dispatchFunction| |LIST;convert;$If;13|) $))))
+ $))))
+
+(MAKEPROP '|List| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL (|IndexedList| 6 (NRTEVAL 1))
+ (|local| |#1|) |LIST;nil;$;1| (|Boolean|) |LIST;null;$B;2|
+ |LIST;cons;S2$;3| |LIST;append;3$;4| (|Void|)
+ (|OpenMathDevice|) (0 . |OMputApp|) (|String|)
+ (5 . |OMputSymbol|) (12 . |not|) (17 . |OMwrite|)
+ (24 . |OMputEndApp|) (|OpenMathEncoding|)
+ (29 . |OMencodingXML|) (33 . |OMopenString|)
+ (39 . |OMputObject|) (44 . |OMputEndObject|)
+ (49 . |OMclose|) (54 . |OMwrite|) (59 . |OMwrite|)
+ (65 . |OMwrite|) (71 . |OMwrite|) (78 . |concat|)
+ (84 . |removeDuplicates|) (89 . |setUnion|)
+ (95 . |member?|) (101 . |setIntersection|) (|Integer|)
+ (107 . |elt|) (113 . |setDifference|) (|Symbol|)
+ (119 . |coerce|) (|InputForm|) (124 . |convert|)
+ (129 . |convert|) (|List| $) (134 . |convert|)
+ (139 . |convert|) (|Mapping| 6 6 6) (|NonNegativeInteger|)
+ (|List| 6) (|List| 50) (|Equation| 6) (|Mapping| 8 6)
+ (|Mapping| 8 6 6) (|UniversalSegment| 35) '"last" '"rest"
+ '"first" '"value" (|Mapping| 6 6) (|OutputForm|)
+ (|SingleInteger|) (|List| 35) (|Union| 6 '"failed"))
+ '#(|setUnion| 144 |setIntersection| 150 |setDifference| 156
+ |removeDuplicates| 162 |null| 167 |nil| 172 |member?| 176
+ |elt| 182 |convert| 188 |cons| 193 |concat| 199 |append|
+ 205 |OMwrite| 211)
+ '((|shallowlyMutable| . 0) (|finiteAggregate| . 0))
+ (CONS (|makeByteWordVec2| 10
+ '(0 0 0 0 0 0 0 0 0 0 2 0 0 8 6 0 0 8 10 1 6 3))
+ (CONS '#(|ListAggregate&| |StreamAggregate&|
+ |ExtensibleLinearAggregate&|
+ |FiniteLinearAggregate&|
+ |UnaryRecursiveAggregate&| |LinearAggregate&|
+ |RecursiveAggregate&| |IndexedAggregate&|
+ |Collection&| |HomogeneousAggregate&|
+ |OrderedSet&| |Aggregate&| |EltableAggregate&|
+ |Evalable&| |SetCategory&| NIL NIL
+ |InnerEvalable&| NIL NIL |BasicType&| NIL)
+ (CONS '#((|ListAggregate| 6)
+ (|StreamAggregate| 6)
+ (|ExtensibleLinearAggregate| 6)
+ (|FiniteLinearAggregate| 6)
+ (|UnaryRecursiveAggregate| 6)
+ (|LinearAggregate| 6)
+ (|RecursiveAggregate| 6)
+ (|IndexedAggregate| 35 6)
+ (|Collection| 6)
+ (|HomogeneousAggregate| 6)
+ (|OrderedSet|) (|Aggregate|)
+ (|EltableAggregate| 35 6) (|Evalable| 6)
+ (|SetCategory|) (|Type|)
+ (|Eltable| 35 6) (|InnerEvalable| 6 6)
+ (|CoercibleTo| 59) (|ConvertibleTo| 40)
+ (|BasicType|) (|OpenMath|))
+ (|makeByteWordVec2| 45
+ '(1 13 12 0 14 3 13 12 0 15 15 16 1 8 0
+ 0 17 3 6 12 13 0 8 18 1 13 12 0 19 0
+ 20 0 21 2 13 0 15 20 22 1 13 12 0 23
+ 1 13 12 0 24 1 13 12 0 25 1 0 15 0 26
+ 2 0 15 0 8 27 2 0 12 13 0 28 3 0 12
+ 13 0 8 29 2 0 0 0 0 30 1 0 0 0 31 2 0
+ 0 0 0 32 2 0 8 6 0 33 2 0 0 0 0 34 2
+ 0 6 0 35 36 2 0 0 0 0 37 1 38 0 15 39
+ 1 40 0 38 41 1 6 40 0 42 1 40 0 43 44
+ 1 0 40 0 45 2 5 0 0 0 32 2 5 0 0 0 34
+ 2 5 0 0 0 37 1 5 0 0 31 1 0 8 0 9 0 0
+ 0 7 2 5 8 6 0 33 2 0 6 0 35 36 1 1 40
+ 0 45 2 0 0 6 0 10 2 0 0 0 0 30 2 0 0
+ 0 0 11 3 3 12 13 0 8 29 2 3 12 13 0
+ 28 1 3 15 0 26 2 3 15 0 8 27)))))
+ '|lookupIncomplete|))
diff --git a/src/algebra/strap/LNAGG-.lsp b/src/algebra/strap/LNAGG-.lsp
new file mode 100644
index 00000000..5ba1d59c
--- /dev/null
+++ b/src/algebra/strap/LNAGG-.lsp
@@ -0,0 +1,80 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |LNAGG-;indices;AL;1| (|a| $)
+ (PROG (#0=#:G1404 |i| #1=#:G1405)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #0# NIL |LNAGG-;indices;AL;1|)
+ (SEQ (LETT |i| (SPADCALL |a| (QREFELT $ 9))
+ |LNAGG-;indices;AL;1|)
+ (LETT #1# (SPADCALL |a| (QREFELT $ 10))
+ |LNAGG-;indices;AL;1|)
+ G190 (COND ((> |i| #1#) (GO G191)))
+ (SEQ (EXIT (LETT #0# (CONS |i| #0#)
+ |LNAGG-;indices;AL;1|)))
+ (LETT |i| (+ |i| 1) |LNAGG-;indices;AL;1|) (GO G190)
+ G191 (EXIT (NREVERSE0 #0#))))))))
+
+(DEFUN |LNAGG-;index?;IAB;2| (|i| |a| $)
+ (COND
+ ((< |i| (SPADCALL |a| (QREFELT $ 9))) 'NIL)
+ ('T
+ (SPADCALL (< (SPADCALL |a| (QREFELT $ 10)) |i|) (QREFELT $ 14)))))
+
+(DEFUN |LNAGG-;concat;ASA;3| (|a| |x| $)
+ (SPADCALL |a| (SPADCALL 1 |x| (QREFELT $ 17)) (QREFELT $ 18)))
+
+(DEFUN |LNAGG-;concat;S2A;4| (|x| |y| $)
+ (SPADCALL (SPADCALL 1 |x| (QREFELT $ 17)) |y| (QREFELT $ 18)))
+
+(DEFUN |LNAGG-;insert;SAIA;5| (|x| |a| |i| $)
+ (SPADCALL (SPADCALL 1 |x| (QREFELT $ 17)) |a| |i| (QREFELT $ 21)))
+
+(DEFUN |LNAGG-;maxIndex;AI;6| (|l| $)
+ (+ (- (SPADCALL |l| (QREFELT $ 23)) 1) (SPADCALL |l| (QREFELT $ 9))))
+
+(DEFUN |LinearAggregate&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|LinearAggregate&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$| (LIST '|LinearAggregate&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (GETREFV 26) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasAttribute| |#1| '|shallowlyMutable|))) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (COND
+ ((|HasAttribute| |#1| '|finiteAggregate|)
+ (QSETREFV $ 24
+ (CONS (|dispatchFunction| |LNAGG-;maxIndex;AI;6|) $))))
+ $))))
+
+(MAKEPROP '|LinearAggregate&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|Integer|) (0 . |minIndex|) (5 . |maxIndex|) (|List| 8)
+ |LNAGG-;indices;AL;1| (|Boolean|) (10 . |not|)
+ |LNAGG-;index?;IAB;2| (|NonNegativeInteger|) (15 . |new|)
+ (21 . |concat|) |LNAGG-;concat;ASA;3|
+ |LNAGG-;concat;S2A;4| (27 . |insert|)
+ |LNAGG-;insert;SAIA;5| (34 . |#|) (39 . |maxIndex|)
+ (|List| $))
+ '#(|maxIndex| 44 |insert| 49 |indices| 56 |index?| 61
+ |concat| 67)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 24
+ '(1 6 8 0 9 1 6 8 0 10 1 13 0 0 14 2 6
+ 0 16 7 17 2 6 0 0 0 18 3 6 0 0 0 8 21
+ 1 6 16 0 23 1 0 8 0 24 1 0 8 0 24 3 0
+ 0 7 0 8 22 1 0 11 0 12 2 0 13 8 0 15
+ 2 0 0 0 7 19 2 0 0 7 0 20)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/LNAGG.lsp b/src/algebra/strap/LNAGG.lsp
new file mode 100644
index 00000000..a97133de
--- /dev/null
+++ b/src/algebra/strap/LNAGG.lsp
@@ -0,0 +1,81 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |LinearAggregate;CAT| 'NIL)
+
+(DEFPARAMETER |LinearAggregate;AL| 'NIL)
+
+(DEFUN |LinearAggregate| (#0=#:G1400)
+ (LET (#1=#:G1401)
+ (COND
+ ((SETQ #1# (|assoc| (|devaluate| #0#) |LinearAggregate;AL|))
+ (CDR #1#))
+ (T (SETQ |LinearAggregate;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1# (|LinearAggregate;| #0#)))
+ |LinearAggregate;AL|))
+ #1#))))
+
+(DEFUN |LinearAggregate;| (|t#1|)
+ (PROG (#0=#:G1399)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (|sublisV|
+ (PAIR '(#1=#:G1398) (LIST '(|Integer|)))
+ (COND
+ (|LinearAggregate;CAT|)
+ ('T
+ (LETT |LinearAggregate;CAT|
+ (|Join|
+ (|IndexedAggregate| '#1# '|t#1|)
+ (|Collection| '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|new|
+ ($ (|NonNegativeInteger|)
+ |t#1|))
+ T)
+ ((|concat| ($ $ |t#1|)) T)
+ ((|concat| ($ |t#1| $)) T)
+ ((|concat| ($ $ $)) T)
+ ((|concat| ($ (|List| $))) T)
+ ((|map|
+ ($
+ (|Mapping| |t#1| |t#1|
+ |t#1|)
+ $ $))
+ T)
+ ((|elt|
+ ($ $
+ (|UniversalSegment|
+ (|Integer|))))
+ T)
+ ((|delete| ($ $ (|Integer|)))
+ T)
+ ((|delete|
+ ($ $
+ (|UniversalSegment|
+ (|Integer|))))
+ T)
+ ((|insert|
+ ($ |t#1| $ (|Integer|)))
+ T)
+ ((|insert| ($ $ $ (|Integer|)))
+ T)
+ ((|setelt|
+ (|t#1| $
+ (|UniversalSegment|
+ (|Integer|))
+ |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|))))
+ NIL
+ '((|UniversalSegment|
+ (|Integer|))
+ (|Integer|) (|List| $)
+ (|NonNegativeInteger|))
+ NIL))
+ . #2=(|LinearAggregate|)))))) . #2#)
+ (SETELT #0# 0 (LIST '|LinearAggregate| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/LSAGG-.lsp b/src/algebra/strap/LSAGG-.lsp
new file mode 100644
index 00000000..5a27a55c
--- /dev/null
+++ b/src/algebra/strap/LSAGG-.lsp
@@ -0,0 +1,794 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |LSAGG-;sort!;M2A;1| (|f| |l| $)
+ (|LSAGG-;mergeSort| |f| |l| (SPADCALL |l| (QREFELT $ 9)) $))
+
+(DEFUN |LSAGG-;list;SA;2| (|x| $)
+ (SPADCALL |x| (SPADCALL (QREFELT $ 12)) (QREFELT $ 13)))
+
+(DEFUN |LSAGG-;reduce;MAS;3| (|f| |x| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 16))
+ (|error| "reducing over an empty list needs the 3 argument form"))
+ ('T
+ (SPADCALL |f| (SPADCALL |x| (QREFELT $ 17))
+ (SPADCALL |x| (QREFELT $ 18)) (QREFELT $ 20)))))
+
+(DEFUN |LSAGG-;merge;M3A;4| (|f| |p| |q| $)
+ (SPADCALL |f| (SPADCALL |p| (QREFELT $ 22))
+ (SPADCALL |q| (QREFELT $ 22)) (QREFELT $ 23)))
+
+(DEFUN |LSAGG-;select!;M2A;5| (|f| |x| $)
+ (PROG (|y| |z|)
+ (RETURN
+ (SEQ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 16)) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (QREFELT $ 18))
+ |f|)
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;select!;M2A;5|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 16)) |x|)
+ ('T
+ (SEQ (LETT |y| |x| |LSAGG-;select!;M2A;5|)
+ (LETT |z| (SPADCALL |y| (QREFELT $ 17))
+ |LSAGG-;select!;M2A;5|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |z| (QREFELT $ 16))
+ (QREFELT $ 25)))
+ (GO G191)))
+ (SEQ (EXIT
+ (COND
+ ((SPADCALL
+ (SPADCALL |z| (QREFELT $ 18))
+ |f|)
+ (SEQ
+ (LETT |y| |z|
+ |LSAGG-;select!;M2A;5|)
+ (EXIT
+ (LETT |z|
+ (SPADCALL |z| (QREFELT $ 17))
+ |LSAGG-;select!;M2A;5|))))
+ ('T
+ (SEQ
+ (LETT |z|
+ (SPADCALL |z| (QREFELT $ 17))
+ |LSAGG-;select!;M2A;5|)
+ (EXIT
+ (SPADCALL |y| |z|
+ (QREFELT $ 26))))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |x|)))))))))
+
+(DEFUN |LSAGG-;merge!;M3A;6| (|f| |p| |q| $)
+ (PROG (|r| |t|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |p| (QREFELT $ 16)) |q|)
+ ((SPADCALL |q| (QREFELT $ 16)) |p|)
+ ((SPADCALL |p| |q| (QREFELT $ 29))
+ (|error| "cannot merge a list into itself"))
+ ('T
+ (SEQ (COND
+ ((SPADCALL (SPADCALL |p| (QREFELT $ 18))
+ (SPADCALL |q| (QREFELT $ 18)) |f|)
+ (SEQ (LETT |r|
+ (LETT |t| |p| |LSAGG-;merge!;M3A;6|)
+ |LSAGG-;merge!;M3A;6|)
+ (EXIT (LETT |p|
+ (SPADCALL |p| (QREFELT $ 17))
+ |LSAGG-;merge!;M3A;6|))))
+ ('T
+ (SEQ (LETT |r|
+ (LETT |t| |q| |LSAGG-;merge!;M3A;6|)
+ |LSAGG-;merge!;M3A;6|)
+ (EXIT (LETT |q|
+ (SPADCALL |q| (QREFELT $ 17))
+ |LSAGG-;merge!;M3A;6|)))))
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |p| (QREFELT $ 16)) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL |q| (QREFELT $ 16))
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((SPADCALL
+ (SPADCALL |p| (QREFELT $ 18))
+ (SPADCALL |q| (QREFELT $ 18))
+ |f|)
+ (SEQ
+ (SPADCALL |t| |p|
+ (QREFELT $ 26))
+ (LETT |t| |p|
+ |LSAGG-;merge!;M3A;6|)
+ (EXIT
+ (LETT |p|
+ (SPADCALL |p| (QREFELT $ 17))
+ |LSAGG-;merge!;M3A;6|))))
+ ('T
+ (SEQ
+ (SPADCALL |t| |q|
+ (QREFELT $ 26))
+ (LETT |t| |q|
+ |LSAGG-;merge!;M3A;6|)
+ (EXIT
+ (LETT |q|
+ (SPADCALL |q| (QREFELT $ 17))
+ |LSAGG-;merge!;M3A;6|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (SPADCALL |t|
+ (COND
+ ((SPADCALL |p| (QREFELT $ 16)) |q|)
+ ('T |p|))
+ (QREFELT $ 26))
+ (EXIT |r|))))))))
+
+(DEFUN |LSAGG-;insert!;SAIA;7| (|s| |x| |i| $)
+ (PROG (|m| #0=#:G1464 |y| |z|)
+ (RETURN
+ (SEQ (LETT |m| (SPADCALL |x| (QREFELT $ 32))
+ |LSAGG-;insert!;SAIA;7|)
+ (EXIT (COND
+ ((< |i| |m|) (|error| "index out of range"))
+ ((EQL |i| |m|) (SPADCALL |s| |x| (QREFELT $ 13)))
+ ('T
+ (SEQ (LETT |y|
+ (SPADCALL |x|
+ (PROG1
+ (LETT #0# (- (- |i| 1) |m|)
+ |LSAGG-;insert!;SAIA;7|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 33))
+ |LSAGG-;insert!;SAIA;7|)
+ (LETT |z| (SPADCALL |y| (QREFELT $ 17))
+ |LSAGG-;insert!;SAIA;7|)
+ (SPADCALL |y|
+ (SPADCALL |s| |z| (QREFELT $ 13))
+ (QREFELT $ 26))
+ (EXIT |x|)))))))))
+
+(DEFUN |LSAGG-;insert!;2AIA;8| (|w| |x| |i| $)
+ (PROG (|m| #0=#:G1468 |y| |z|)
+ (RETURN
+ (SEQ (LETT |m| (SPADCALL |x| (QREFELT $ 32))
+ |LSAGG-;insert!;2AIA;8|)
+ (EXIT (COND
+ ((< |i| |m|) (|error| "index out of range"))
+ ((EQL |i| |m|) (SPADCALL |w| |x| (QREFELT $ 35)))
+ ('T
+ (SEQ (LETT |y|
+ (SPADCALL |x|
+ (PROG1
+ (LETT #0# (- (- |i| 1) |m|)
+ |LSAGG-;insert!;2AIA;8|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 33))
+ |LSAGG-;insert!;2AIA;8|)
+ (LETT |z| (SPADCALL |y| (QREFELT $ 17))
+ |LSAGG-;insert!;2AIA;8|)
+ (SPADCALL |y| |w| (QREFELT $ 26))
+ (SPADCALL |y| |z| (QREFELT $ 35)) (EXIT |x|)))))))))
+
+(DEFUN |LSAGG-;remove!;M2A;9| (|f| |x| $)
+ (PROG (|p| |q|)
+ (RETURN
+ (SEQ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 16)) 'NIL)
+ ('T
+ (SPADCALL (SPADCALL |x| (QREFELT $ 18))
+ |f|))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;remove!;M2A;9|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 16)) |x|)
+ ('T
+ (SEQ (LETT |p| |x| |LSAGG-;remove!;M2A;9|)
+ (LETT |q| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;remove!;M2A;9|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |q| (QREFELT $ 16))
+ (QREFELT $ 25)))
+ (GO G191)))
+ (SEQ (EXIT
+ (COND
+ ((SPADCALL
+ (SPADCALL |q| (QREFELT $ 18))
+ |f|)
+ (LETT |q|
+ (SPADCALL |p|
+ (SPADCALL |q| (QREFELT $ 17))
+ (QREFELT $ 26))
+ |LSAGG-;remove!;M2A;9|))
+ ('T
+ (SEQ
+ (LETT |p| |q|
+ |LSAGG-;remove!;M2A;9|)
+ (EXIT
+ (LETT |q|
+ (SPADCALL |q| (QREFELT $ 17))
+ |LSAGG-;remove!;M2A;9|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |x|)))))))))
+
+(DEFUN |LSAGG-;delete!;AIA;10| (|x| |i| $)
+ (PROG (|m| #0=#:G1480 |y|)
+ (RETURN
+ (SEQ (LETT |m| (SPADCALL |x| (QREFELT $ 32))
+ |LSAGG-;delete!;AIA;10|)
+ (EXIT (COND
+ ((< |i| |m|) (|error| "index out of range"))
+ ((EQL |i| |m|) (SPADCALL |x| (QREFELT $ 17)))
+ ('T
+ (SEQ (LETT |y|
+ (SPADCALL |x|
+ (PROG1
+ (LETT #0# (- (- |i| 1) |m|)
+ |LSAGG-;delete!;AIA;10|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 33))
+ |LSAGG-;delete!;AIA;10|)
+ (SPADCALL |y| (SPADCALL |y| 2 (QREFELT $ 33))
+ (QREFELT $ 26))
+ (EXIT |x|)))))))))
+
+(DEFUN |LSAGG-;delete!;AUsA;11| (|x| |i| $)
+ (PROG (|l| |m| |h| #0=#:G1485 #1=#:G1486 |t| #2=#:G1487)
+ (RETURN
+ (SEQ (LETT |l| (SPADCALL |i| (QREFELT $ 40))
+ |LSAGG-;delete!;AUsA;11|)
+ (LETT |m| (SPADCALL |x| (QREFELT $ 32))
+ |LSAGG-;delete!;AUsA;11|)
+ (EXIT (COND
+ ((< |l| |m|) (|error| "index out of range"))
+ ('T
+ (SEQ (LETT |h|
+ (COND
+ ((SPADCALL |i| (QREFELT $ 41))
+ (SPADCALL |i| (QREFELT $ 42)))
+ ('T (SPADCALL |x| (QREFELT $ 43))))
+ |LSAGG-;delete!;AUsA;11|)
+ (EXIT (COND
+ ((< |h| |l|) |x|)
+ ((EQL |l| |m|)
+ (SPADCALL |x|
+ (PROG1
+ (LETT #0# (- (+ |h| 1) |m|)
+ |LSAGG-;delete!;AUsA;11|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 33)))
+ ('T
+ (SEQ (LETT |t|
+ (SPADCALL |x|
+ (PROG1
+ (LETT #1# (- (- |l| 1) |m|)
+ |LSAGG-;delete!;AUsA;11|)
+ (|check-subtype| (>= #1# 0)
+ '(|NonNegativeInteger|)
+ #1#))
+ (QREFELT $ 33))
+ |LSAGG-;delete!;AUsA;11|)
+ (SPADCALL |t|
+ (SPADCALL |t|
+ (PROG1
+ (LETT #2# (+ (- |h| |l|) 2)
+ |LSAGG-;delete!;AUsA;11|)
+ (|check-subtype| (>= #2# 0)
+ '(|NonNegativeInteger|)
+ #2#))
+ (QREFELT $ 33))
+ (QREFELT $ 26))
+ (EXIT |x|)))))))))))))
+
+(DEFUN |LSAGG-;find;MAU;12| (|f| |x| $)
+ (SEQ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 16)) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (QREFELT $ 18))
+ |f|)
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;find;MAU;12|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 16)) (CONS 1 "failed"))
+ ('T (CONS 0 (SPADCALL |x| (QREFELT $ 18))))))))
+
+(DEFUN |LSAGG-;position;MAI;13| (|f| |x| $)
+ (PROG (|k|)
+ (RETURN
+ (SEQ (SEQ (LETT |k| (SPADCALL |x| (QREFELT $ 32))
+ |LSAGG-;position;MAI;13|)
+ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 16)) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (QREFELT $ 18))
+ |f|)
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;position;MAI;13|)))
+ (LETT |k| (+ |k| 1) |LSAGG-;position;MAI;13|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 16))
+ (- (SPADCALL |x| (QREFELT $ 32)) 1))
+ ('T |k|)))))))
+
+(DEFUN |LSAGG-;mergeSort| (|f| |p| |n| $)
+ (PROG (#0=#:G1507 |l| |q|)
+ (RETURN
+ (SEQ (COND
+ ((EQL |n| 2)
+ (COND
+ ((SPADCALL
+ (SPADCALL (SPADCALL |p| (QREFELT $ 17))
+ (QREFELT $ 18))
+ (SPADCALL |p| (QREFELT $ 18)) |f|)
+ (LETT |p| (SPADCALL |p| (QREFELT $ 48))
+ |LSAGG-;mergeSort|)))))
+ (EXIT (COND
+ ((< |n| 3) |p|)
+ ('T
+ (SEQ (LETT |l|
+ (PROG1 (LETT #0# (QUOTIENT2 |n| 2)
+ |LSAGG-;mergeSort|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ |LSAGG-;mergeSort|)
+ (LETT |q| (SPADCALL |p| |l| (QREFELT $ 49))
+ |LSAGG-;mergeSort|)
+ (LETT |p| (|LSAGG-;mergeSort| |f| |p| |l| $)
+ |LSAGG-;mergeSort|)
+ (LETT |q|
+ (|LSAGG-;mergeSort| |f| |q| (- |n| |l|)
+ $)
+ |LSAGG-;mergeSort|)
+ (EXIT (SPADCALL |f| |p| |q| (QREFELT $ 23)))))))))))
+
+(DEFUN |LSAGG-;sorted?;MAB;15| (|f| |l| $)
+ (PROG (#0=#:G1516 |p|)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((SPADCALL |l| (QREFELT $ 16)) 'T)
+ ('T
+ (SEQ (LETT |p| (SPADCALL |l| (QREFELT $ 17))
+ |LSAGG-;sorted?;MAB;15|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |p| (QREFELT $ 16))
+ (QREFELT $ 25)))
+ (GO G191)))
+ (SEQ (EXIT
+ (COND
+ ((NULL
+ (SPADCALL
+ (SPADCALL |l| (QREFELT $ 18))
+ (SPADCALL |p| (QREFELT $ 18))
+ |f|))
+ (PROGN
+ (LETT #0# 'NIL
+ |LSAGG-;sorted?;MAB;15|)
+ (GO #0#)))
+ ('T
+ (LETT |p|
+ (SPADCALL
+ (LETT |l| |p|
+ |LSAGG-;sorted?;MAB;15|)
+ (QREFELT $ 17))
+ |LSAGG-;sorted?;MAB;15|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT 'T)))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |LSAGG-;reduce;MA2S;16| (|f| |x| |i| $)
+ (PROG (|r|)
+ (RETURN
+ (SEQ (LETT |r| |i| |LSAGG-;reduce;MA2S;16|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |x| (QREFELT $ 16))
+ (QREFELT $ 25)))
+ (GO G191)))
+ (SEQ (LETT |r|
+ (SPADCALL |r| (SPADCALL |x| (QREFELT $ 18))
+ |f|)
+ |LSAGG-;reduce;MA2S;16|)
+ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;reduce;MA2S;16|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |r|)))))
+
+(DEFUN |LSAGG-;reduce;MA3S;17| (|f| |x| |i| |a| $)
+ (PROG (|r|)
+ (RETURN
+ (SEQ (LETT |r| |i| |LSAGG-;reduce;MA3S;17|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 16)) 'NIL)
+ ('T
+ (SPADCALL (SPADCALL |r| |a| (QREFELT $ 52))
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (LETT |r|
+ (SPADCALL |r| (SPADCALL |x| (QREFELT $ 18))
+ |f|)
+ |LSAGG-;reduce;MA3S;17|)
+ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;reduce;MA3S;17|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |r|)))))
+
+(DEFUN |LSAGG-;new;NniSA;18| (|n| |s| $)
+ (PROG (|k| |l|)
+ (RETURN
+ (SEQ (LETT |l| (SPADCALL (QREFELT $ 12)) |LSAGG-;new;NniSA;18|)
+ (SEQ (LETT |k| 1 |LSAGG-;new;NniSA;18|) G190
+ (COND ((QSGREATERP |k| |n|) (GO G191)))
+ (SEQ (EXIT (LETT |l| (SPADCALL |s| |l| (QREFELT $ 13))
+ |LSAGG-;new;NniSA;18|)))
+ (LETT |k| (QSADD1 |k|) |LSAGG-;new;NniSA;18|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT |l|)))))
+
+(DEFUN |LSAGG-;map;M3A;19| (|f| |x| |y| $)
+ (PROG (|z|)
+ (RETURN
+ (SEQ (LETT |z| (SPADCALL (QREFELT $ 12)) |LSAGG-;map;M3A;19|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 16)) 'NIL)
+ ('T
+ (SPADCALL (SPADCALL |y| (QREFELT $ 16))
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (LETT |z|
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (QREFELT $ 18))
+ (SPADCALL |y| (QREFELT $ 18)) |f|)
+ |z| (QREFELT $ 13))
+ |LSAGG-;map;M3A;19|)
+ (LETT |x| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;map;M3A;19|)
+ (EXIT (LETT |y| (SPADCALL |y| (QREFELT $ 17))
+ |LSAGG-;map;M3A;19|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |z| (QREFELT $ 48)))))))
+
+(DEFUN |LSAGG-;reverse!;2A;20| (|x| $)
+ (PROG (|z| |y|)
+ (RETURN
+ (SEQ (COND
+ ((OR (SPADCALL |x| (QREFELT $ 16))
+ (SPADCALL
+ (LETT |y| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;reverse!;2A;20|)
+ (QREFELT $ 16)))
+ |x|)
+ ('T
+ (SEQ (SPADCALL |x| (SPADCALL (QREFELT $ 12))
+ (QREFELT $ 26))
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |y| (QREFELT $ 16))
+ (QREFELT $ 25)))
+ (GO G191)))
+ (SEQ (LETT |z| (SPADCALL |y| (QREFELT $ 17))
+ |LSAGG-;reverse!;2A;20|)
+ (SPADCALL |y| |x| (QREFELT $ 26))
+ (LETT |x| |y| |LSAGG-;reverse!;2A;20|)
+ (EXIT (LETT |y| |z|
+ |LSAGG-;reverse!;2A;20|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |x|))))))))
+
+(DEFUN |LSAGG-;copy;2A;21| (|x| $)
+ (PROG (|k| |y|)
+ (RETURN
+ (SEQ (LETT |y| (SPADCALL (QREFELT $ 12)) |LSAGG-;copy;2A;21|)
+ (SEQ (LETT |k| 0 |LSAGG-;copy;2A;21|) G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |x| (QREFELT $ 16))
+ (QREFELT $ 25)))
+ (GO G191)))
+ (SEQ (COND
+ ((EQL |k| 1000)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 57))
+ (EXIT (|error| "cyclic list"))))))
+ (LETT |y|
+ (SPADCALL (SPADCALL |x| (QREFELT $ 18)) |y|
+ (QREFELT $ 13))
+ |LSAGG-;copy;2A;21|)
+ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;copy;2A;21|)))
+ (LETT |k| (QSADD1 |k|) |LSAGG-;copy;2A;21|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT (SPADCALL |y| (QREFELT $ 48)))))))
+
+(DEFUN |LSAGG-;copyInto!;2AIA;22| (|y| |x| |s| $)
+ (PROG (|m| #0=#:G1545 |z|)
+ (RETURN
+ (SEQ (LETT |m| (SPADCALL |y| (QREFELT $ 32))
+ |LSAGG-;copyInto!;2AIA;22|)
+ (EXIT (COND
+ ((< |s| |m|) (|error| "index out of range"))
+ ('T
+ (SEQ (LETT |z|
+ (SPADCALL |y|
+ (PROG1
+ (LETT #0# (- |s| |m|)
+ |LSAGG-;copyInto!;2AIA;22|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 33))
+ |LSAGG-;copyInto!;2AIA;22|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |z| (QREFELT $ 16))
+ 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL |x|
+ (QREFELT $ 16))
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (SPADCALL |z|
+ (SPADCALL |x| (QREFELT $ 18))
+ (QREFELT $ 59))
+ (LETT |x|
+ (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;copyInto!;2AIA;22|)
+ (EXIT
+ (LETT |z|
+ (SPADCALL |z| (QREFELT $ 17))
+ |LSAGG-;copyInto!;2AIA;22|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |y|)))))))))
+
+(DEFUN |LSAGG-;position;SA2I;23| (|w| |x| |s| $)
+ (PROG (|m| #0=#:G1552 |k|)
+ (RETURN
+ (SEQ (LETT |m| (SPADCALL |x| (QREFELT $ 32))
+ |LSAGG-;position;SA2I;23|)
+ (EXIT (COND
+ ((< |s| |m|) (|error| "index out of range"))
+ ('T
+ (SEQ (LETT |x|
+ (SPADCALL |x|
+ (PROG1
+ (LETT #0# (- |s| |m|)
+ |LSAGG-;position;SA2I;23|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 33))
+ |LSAGG-;position;SA2I;23|)
+ (SEQ (LETT |k| |s| |LSAGG-;position;SA2I;23|)
+ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 16))
+ 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL |w|
+ (SPADCALL |x|
+ (QREFELT $ 18))
+ (QREFELT $ 52))
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (EXIT
+ (LETT |x|
+ (SPADCALL |x| (QREFELT $ 17))
+ |LSAGG-;position;SA2I;23|)))
+ (LETT |k| (+ |k| 1)
+ |LSAGG-;position;SA2I;23|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 16))
+ (- (SPADCALL |x| (QREFELT $ 32)) 1))
+ ('T |k|)))))))))))
+
+(DEFUN |LSAGG-;removeDuplicates!;2A;24| (|l| $)
+ (PROG (|p|)
+ (RETURN
+ (SEQ (LETT |p| |l| |LSAGG-;removeDuplicates!;2A;24|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |p| (QREFELT $ 16))
+ (QREFELT $ 25)))
+ (GO G191)))
+ (SEQ (EXIT (LETT |p|
+ (SPADCALL |p|
+ (SPADCALL
+ (CONS
+ #'|LSAGG-;removeDuplicates!;2A;24!0|
+ (VECTOR $ |p|))
+ (SPADCALL |p| (QREFELT $ 17))
+ (QREFELT $ 62))
+ (QREFELT $ 26))
+ |LSAGG-;removeDuplicates!;2A;24|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |l|)))))
+
+(DEFUN |LSAGG-;removeDuplicates!;2A;24!0| (|#1| $$)
+ (PROG ($)
+ (LETT $ (QREFELT $$ 0) |LSAGG-;removeDuplicates!;2A;24|)
+ (RETURN
+ (PROGN
+ (SPADCALL |#1| (SPADCALL (QREFELT $$ 1) (QREFELT $ 18))
+ (QREFELT $ 52))))))
+
+(DEFUN |LSAGG-;<;2AB;25| (|x| |y| $)
+ (PROG (#0=#:G1566)
+ (RETURN
+ (SEQ (EXIT (SEQ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 16))
+ 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL |y| (QREFELT $ 16))
+ (QREFELT $ 25)))))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((NULL
+ (SPADCALL
+ (SPADCALL |x|
+ (QREFELT $ 18))
+ (SPADCALL |y|
+ (QREFELT $ 18))
+ (QREFELT $ 52)))
+ (PROGN
+ (LETT #0#
+ (SPADCALL
+ (SPADCALL |x|
+ (QREFELT $ 18))
+ (SPADCALL |y|
+ (QREFELT $ 18))
+ (QREFELT $ 64))
+ |LSAGG-;<;2AB;25|)
+ (GO #0#)))
+ ('T
+ (SEQ
+ (LETT |x|
+ (SPADCALL |x|
+ (QREFELT $ 17))
+ |LSAGG-;<;2AB;25|)
+ (EXIT
+ (LETT |y|
+ (SPADCALL |y|
+ (QREFELT $ 17))
+ |LSAGG-;<;2AB;25|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 16))
+ (SPADCALL (SPADCALL |y| (QREFELT $ 16))
+ (QREFELT $ 25)))
+ ('T 'NIL)))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |ListAggregate&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|ListAggregate&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$| (LIST '|ListAggregate&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (GETREFV 67) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (COND
+ ((|HasCategory| |#2| '(|SetCategory|))
+ (QSETREFV $ 53
+ (CONS (|dispatchFunction| |LSAGG-;reduce;MA3S;17|) $))))
+ (COND
+ ((|HasCategory| |#2| '(|SetCategory|))
+ (PROGN
+ (QSETREFV $ 61
+ (CONS (|dispatchFunction| |LSAGG-;position;SA2I;23|)
+ $))
+ (QSETREFV $ 63
+ (CONS (|dispatchFunction|
+ |LSAGG-;removeDuplicates!;2A;24|)
+ $)))))
+ (COND
+ ((|HasCategory| |#2| '(|OrderedSet|))
+ (QSETREFV $ 65
+ (CONS (|dispatchFunction| |LSAGG-;<;2AB;25|) $))))
+ $))))
+
+(MAKEPROP '|ListAggregate&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|NonNegativeInteger|) (0 . |#|) (|Mapping| 15 7 7)
+ |LSAGG-;sort!;M2A;1| (5 . |empty|) (9 . |concat|)
+ |LSAGG-;list;SA;2| (|Boolean|) (15 . |empty?|)
+ (20 . |rest|) (25 . |first|) (|Mapping| 7 7 7)
+ (30 . |reduce|) |LSAGG-;reduce;MAS;3| (37 . |copy|)
+ (42 . |merge!|) |LSAGG-;merge;M3A;4| (49 . |not|)
+ (54 . |setrest!|) (|Mapping| 15 7) |LSAGG-;select!;M2A;5|
+ (60 . |eq?|) |LSAGG-;merge!;M3A;6| (|Integer|)
+ (66 . |minIndex|) (71 . |rest|) |LSAGG-;insert!;SAIA;7|
+ (77 . |concat!|) |LSAGG-;insert!;2AIA;8|
+ |LSAGG-;remove!;M2A;9| |LSAGG-;delete!;AIA;10|
+ (|UniversalSegment| 31) (83 . |lo|) (88 . |hasHi|)
+ (93 . |hi|) (98 . |maxIndex|) |LSAGG-;delete!;AUsA;11|
+ (|Union| 7 '"failed") |LSAGG-;find;MAU;12|
+ |LSAGG-;position;MAI;13| (103 . |reverse!|)
+ (108 . |split!|) |LSAGG-;sorted?;MAB;15|
+ |LSAGG-;reduce;MA2S;16| (114 . =) (120 . |reduce|)
+ |LSAGG-;new;NniSA;18| |LSAGG-;map;M3A;19|
+ |LSAGG-;reverse!;2A;20| (128 . |cyclic?|)
+ |LSAGG-;copy;2A;21| (133 . |setfirst!|)
+ |LSAGG-;copyInto!;2AIA;22| (139 . |position|)
+ (146 . |remove!|) (152 . |removeDuplicates!|) (157 . <)
+ (163 . <) (|Mapping| 7 7))
+ '#(|sorted?| 169 |sort!| 175 |select!| 181 |reverse!| 187
+ |removeDuplicates!| 192 |remove!| 197 |reduce| 203
+ |position| 224 |new| 237 |merge!| 243 |merge| 250 |map|
+ 257 |list| 264 |insert!| 269 |find| 283 |delete!| 289
+ |copyInto!| 301 |copy| 308 < 313)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 65
+ '(1 6 8 0 9 0 6 0 12 2 6 0 7 0 13 1 6
+ 15 0 16 1 6 0 0 17 1 6 7 0 18 3 6 7
+ 19 0 7 20 1 6 0 0 22 3 6 0 10 0 0 23
+ 1 15 0 0 25 2 6 0 0 0 26 2 6 15 0 0
+ 29 1 6 31 0 32 2 6 0 0 8 33 2 6 0 0 0
+ 35 1 39 31 0 40 1 39 15 0 41 1 39 31
+ 0 42 1 6 31 0 43 1 6 0 0 48 2 6 0 0
+ 31 49 2 7 15 0 0 52 4 0 7 19 0 7 7 53
+ 1 6 15 0 57 2 6 7 0 7 59 3 0 31 7 0
+ 31 61 2 6 0 27 0 62 1 0 0 0 63 2 7 15
+ 0 0 64 2 0 15 0 0 65 2 0 15 10 0 50 2
+ 0 0 10 0 11 2 0 0 27 0 28 1 0 0 0 56
+ 1 0 0 0 63 2 0 0 27 0 37 3 0 7 19 0 7
+ 51 4 0 7 19 0 7 7 53 2 0 7 19 0 21 2
+ 0 31 27 0 47 3 0 31 7 0 31 61 2 0 0 8
+ 7 54 3 0 0 10 0 0 30 3 0 0 10 0 0 24
+ 3 0 0 19 0 0 55 1 0 0 7 14 3 0 0 7 0
+ 31 34 3 0 0 0 0 31 36 2 0 45 27 0 46
+ 2 0 0 0 39 44 2 0 0 0 31 38 3 0 0 0 0
+ 31 60 1 0 0 0 58 2 0 15 0 0 65)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/LSAGG.lsp b/src/algebra/strap/LSAGG.lsp
new file mode 100644
index 00000000..c0470689
--- /dev/null
+++ b/src/algebra/strap/LSAGG.lsp
@@ -0,0 +1,38 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |ListAggregate;CAT| 'NIL)
+
+(DEFPARAMETER |ListAggregate;AL| 'NIL)
+
+(DEFUN |ListAggregate| (#0=#:G1431)
+ (LET (#1=#:G1432)
+ (COND
+ ((SETQ #1# (|assoc| (|devaluate| #0#) |ListAggregate;AL|))
+ (CDR #1#))
+ (T (SETQ |ListAggregate;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1# (|ListAggregate;| #0#)))
+ |ListAggregate;AL|))
+ #1#))))
+
+(DEFUN |ListAggregate;| (|t#1|)
+ (PROG (#0=#:G1430)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (COND
+ (|ListAggregate;CAT|)
+ ('T
+ (LETT |ListAggregate;CAT|
+ (|Join| (|StreamAggregate| '|t#1|)
+ (|FiniteLinearAggregate|
+ '|t#1|)
+ (|ExtensibleLinearAggregate|
+ '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|list| ($ |t#1|)) T)) NIL
+ 'NIL NIL))
+ . #1=(|ListAggregate|))))) . #1#)
+ (SETELT #0# 0 (LIST '|ListAggregate| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/MONOID-.lsp b/src/algebra/strap/MONOID-.lsp
new file mode 100644
index 00000000..c9bcbbe5
--- /dev/null
+++ b/src/algebra/strap/MONOID-.lsp
@@ -0,0 +1,50 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |MONOID-;^;SNniS;1| (|x| |n| $)
+ (SPADCALL |x| |n| (QREFELT $ 8)))
+
+(DEFUN |MONOID-;one?;SB;2| (|x| $)
+ (SPADCALL |x| (|spadConstant| $ 10) (QREFELT $ 12)))
+
+(DEFUN |MONOID-;sample;S;3| ($) (|spadConstant| $ 10))
+
+(DEFUN |MONOID-;recip;SU;4| (|x| $)
+ (COND
+ ((SPADCALL |x| (|spadConstant| $ 10) (QREFELT $ 12)) (CONS 0 |x|))
+ ('T (CONS 1 "failed"))))
+
+(DEFUN |MONOID-;**;SNniS;5| (|x| |n| $)
+ (COND
+ ((ZEROP |n|) (|spadConstant| $ 10))
+ ('T (SPADCALL |x| |n| (QREFELT $ 19)))))
+
+(DEFUN |Monoid&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|Monoid&|))
+ (LETT |dv$| (LIST '|Monoid&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 21) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|Monoid&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|)
+ (|NonNegativeInteger|) (0 . **) |MONOID-;^;SNniS;1|
+ (6 . |One|) (|Boolean|) (10 . =) |MONOID-;one?;SB;2|
+ |MONOID-;sample;S;3| (|Union| $ '"failed")
+ |MONOID-;recip;SU;4| (|PositiveInteger|)
+ (|RepeatedSquaring| 6) (16 . |expt|) |MONOID-;**;SNniS;5|)
+ '#(|sample| 22 |recip| 26 |one?| 31 ^ 36 ** 42) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 20
+ '(2 6 0 0 7 8 0 6 0 10 2 6 11 0 0 12 2
+ 18 6 6 17 19 0 0 0 14 1 0 15 0 16 1 0
+ 11 0 13 2 0 0 0 7 9 2 0 0 0 7 20)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/MONOID.lsp b/src/algebra/strap/MONOID.lsp
new file mode 100644
index 00000000..eecfccc9
--- /dev/null
+++ b/src/algebra/strap/MONOID.lsp
@@ -0,0 +1,28 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |Monoid;AL| 'NIL)
+
+(DEFUN |Monoid| ()
+ (LET (#:G1388)
+ (COND (|Monoid;AL|) (T (SETQ |Monoid;AL| (|Monoid;|))))))
+
+(DEFUN |Monoid;| ()
+ (PROG (#0=#:G1386)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|SemiGroup|)
+ (|mkCategory| '|domain|
+ '(((|One| ($) |constant|) T)
+ ((|sample| ($) |constant|) T)
+ ((|one?| ((|Boolean|) $)) T)
+ ((** ($ $ (|NonNegativeInteger|))) T)
+ ((^ ($ $ (|NonNegativeInteger|))) T)
+ ((|recip| ((|Union| $ "failed") $)) T))
+ NIL
+ '((|NonNegativeInteger|) (|Boolean|))
+ NIL))
+ |Monoid|)
+ (SETELT #0# 0 '(|Monoid|))))))
+
+(MAKEPROP '|Monoid| 'NILADIC T)
diff --git a/src/algebra/strap/MTSCAT.lsp b/src/algebra/strap/MTSCAT.lsp
new file mode 100644
index 00000000..dbd30965
--- /dev/null
+++ b/src/algebra/strap/MTSCAT.lsp
@@ -0,0 +1,107 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |MultivariateTaylorSeriesCategory;CAT| 'NIL)
+
+(DEFPARAMETER |MultivariateTaylorSeriesCategory;AL| 'NIL)
+
+(DEFUN |MultivariateTaylorSeriesCategory|
+ (&REST #0=#:G1390 &AUX #1=#:G1388)
+ (DSETQ #1# #0#)
+ (LET (#2=#:G1389)
+ (COND
+ ((SETQ #2#
+ (|assoc| (|devaluateList| #1#)
+ |MultivariateTaylorSeriesCategory;AL|))
+ (CDR #2#))
+ (T (SETQ |MultivariateTaylorSeriesCategory;AL|
+ (|cons5| (CONS (|devaluateList| #1#)
+ (SETQ #2#
+ (APPLY
+ #'|MultivariateTaylorSeriesCategory;|
+ #1#)))
+ |MultivariateTaylorSeriesCategory;AL|))
+ #2#))))
+
+(DEFUN |MultivariateTaylorSeriesCategory;| (|t#1| |t#2|)
+ (PROG (#0=#:G1387)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1| |t#2|)
+ (LIST (|devaluate| |t#1|)
+ (|devaluate| |t#2|)))
+ (|sublisV|
+ (PAIR '(#1=#:G1386)
+ (LIST '(|IndexedExponents| |t#2|)))
+ (COND
+ (|MultivariateTaylorSeriesCategory;CAT|)
+ ('T
+ (LETT |MultivariateTaylorSeriesCategory;CAT|
+ (|Join|
+ (|PartialDifferentialRing| '|t#2|)
+ (|PowerSeriesCategory| '|t#1| '#1#
+ '|t#2|)
+ (|InnerEvalable| '|t#2| '$)
+ (|Evalable| '$)
+ (|mkCategory| '|domain|
+ '(((|coefficient|
+ ($ $ |t#2|
+ (|NonNegativeInteger|)))
+ T)
+ ((|coefficient|
+ ($ $ (|List| |t#2|)
+ (|List|
+ (|NonNegativeInteger|))))
+ T)
+ ((|extend|
+ ($ $ (|NonNegativeInteger|)))
+ T)
+ ((|monomial|
+ ($ $ |t#2|
+ (|NonNegativeInteger|)))
+ T)
+ ((|monomial|
+ ($ $ (|List| |t#2|)
+ (|List|
+ (|NonNegativeInteger|))))
+ T)
+ ((|order|
+ ((|NonNegativeInteger|) $
+ |t#2|))
+ T)
+ ((|order|
+ ((|NonNegativeInteger|) $
+ |t#2|
+ (|NonNegativeInteger|)))
+ T)
+ ((|polynomial|
+ ((|Polynomial| |t#1|) $
+ (|NonNegativeInteger|)))
+ T)
+ ((|polynomial|
+ ((|Polynomial| |t#1|) $
+ (|NonNegativeInteger|)
+ (|NonNegativeInteger|)))
+ T)
+ ((|integrate| ($ $ |t#2|))
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|))))))
+ '(((|RadicalCategory|)
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|)))))
+ ((|TranscendentalFunctionCategory|)
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|))))))
+ '((|Polynomial| |t#1|)
+ (|NonNegativeInteger|)
+ (|List| |t#2|)
+ (|List| (|NonNegativeInteger|)))
+ NIL))
+ . #2=(|MultivariateTaylorSeriesCategory|)))))) . #2#)
+ (SETELT #0# 0
+ (LIST '|MultivariateTaylorSeriesCategory|
+ (|devaluate| |t#1|) (|devaluate| |t#2|)))))))
diff --git a/src/algebra/strap/NNI.lsp b/src/algebra/strap/NNI.lsp
new file mode 100644
index 00000000..7952eb34
--- /dev/null
+++ b/src/algebra/strap/NNI.lsp
@@ -0,0 +1,148 @@
+
+(|/VERSIONCHECK| 2)
+
+(SETQ |$CategoryFrame|
+ (|put|
+ #1=(QUOTE |NonNegativeInteger|)
+ (QUOTE |SuperDomain|)
+ #2=(QUOTE (|Integer|))
+ (|put|
+ #2#
+ #3=(QUOTE |SubDomain|)
+ (CONS
+ (QUOTE
+ (|NonNegativeInteger|
+ COND ((|<| |#1| 0) (QUOTE NIL)) ((QUOTE T) (QUOTE T))))
+ (DELASC #1# (|get| #2# #3# |$CategoryFrame|)))
+ |$CategoryFrame|)))
+
+(PUT
+ (QUOTE |NNI;sup;3$;1|)
+ (QUOTE |SPADreplace|)
+ (QUOTE MAX))
+
+(DEFUN |NNI;sup;3$;1| (|x| |y| |$|) (MAX |x| |y|))
+
+(PUT
+ (QUOTE |NNI;shift;$I$;2|)
+ (QUOTE |SPADreplace|)
+ (QUOTE ASH))
+
+(DEFUN |NNI;shift;$I$;2| (|x| |n| |$|) (ASH |x| |n|))
+
+(DEFUN |NNI;subtractIfCan;2$U;3| (|x| |y| |$|)
+ (PROG (|c|)
+ (RETURN
+ (SEQ
+ (LETT |c| (|-| |x| |y|) |NNI;subtractIfCan;2$U;3|)
+ (EXIT
+ (COND
+ ((|<| |c| 0) (CONS 1 "failed"))
+ ((QUOTE T) (CONS 0 |c|))))))))
+
+(DEFUN |NonNegativeInteger| NIL
+ (PROG NIL
+ (RETURN
+ (PROG (#1=#:G96708)
+ (RETURN
+ (COND
+ ((LETT #1#
+ (HGET |$ConstructorCache| (QUOTE |NonNegativeInteger|))
+ |NonNegativeInteger|)
+ (|CDRwithIncrement| (CDAR #1#)))
+ ((QUOTE T)
+ (|UNWIND-PROTECT|
+ (PROG1
+ (CDDAR
+ (HPUT
+ |$ConstructorCache|
+ (QUOTE |NonNegativeInteger|)
+ (LIST (CONS NIL (CONS 1 (|NonNegativeInteger;|))))))
+ (LETT #1# T |NonNegativeInteger|))
+ (COND
+ ((NOT #1#)
+ (HREM
+ |$ConstructorCache|
+ (QUOTE |NonNegativeInteger|))))))))))))
+
+(DEFUN |NonNegativeInteger;| NIL
+ (PROG (|dv$| |$| |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| (QUOTE (|NonNegativeInteger|)) . #1=(|NonNegativeInteger|))
+ (LETT |$| (GETREFV 17) . #1#)
+ (QSETREFV |$| 0 |dv$|)
+ (QSETREFV |$| 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #1#))
+ (|haddProp|
+ |$ConstructorCache|
+ (QUOTE |NonNegativeInteger|)
+ NIL
+ (CONS 1 |$|))
+ (|stuffDomainSlots| |$|) |$|))))
+
+(MAKEPROP
+ (QUOTE |NonNegativeInteger|)
+ (QUOTE |infovec|)
+ (LIST
+ (QUOTE
+ #(NIL NIL NIL NIL NIL
+ (|Integer|)
+ |NNI;sup;3$;1|
+ |NNI;shift;$I$;2|
+ (|Union| |$| (QUOTE "failed"))
+ |NNI;subtractIfCan;2$U;3|
+ (|Record| (|:| |quotient| |$|) (|:| |remainder| |$|))
+ (|PositiveInteger|)
+ (|Boolean|)
+ (|NonNegativeInteger|)
+ (|SingleInteger|)
+ (|String|)
+ (|OutputForm|)))
+ (QUOTE
+ #(|~=| 0 |zero?| 6 |sup| 11 |subtractIfCan| 17 |shift| 23 |sample| 29
+ |rem| 33 |recip| 39 |random| 44 |quo| 49 |one?| 55 |min| 60 |max| 66
+ |latex| 72 |hash| 77 |gcd| 82 |exquo| 88 |divide| 94 |coerce| 100
+ |^| 105 |Zero| 117 |One| 121 |>=| 125 |>| 131 |=| 137 |<=| 143
+ |<| 149 |+| 155 |**| 161 |*| 173))
+ (QUOTE (((|commutative| "*") . 0)))
+ (CONS
+ (|makeByteWordVec2| 1 (QUOTE (0 0 0 0 0 0 0 0 0 0 0 0 0)))
+ (CONS
+ (QUOTE
+ #(NIL NIL NIL NIL NIL
+ |Monoid&|
+ |AbelianMonoid&|
+ |OrderedSet&|
+ |SemiGroup&|
+ |AbelianSemiGroup&|
+ |SetCategory&|
+ |BasicType&|
+ NIL))
+ (CONS
+ (QUOTE
+ #((|OrderedAbelianMonoidSup|)
+ (|OrderedCancellationAbelianMonoid|)
+ (|OrderedAbelianMonoid|)
+ (|OrderedAbelianSemiGroup|)
+ (|CancellationAbelianMonoid|)
+ (|Monoid|)
+ (|AbelianMonoid|)
+ (|OrderedSet|)
+ (|SemiGroup|)
+ (|AbelianSemiGroup|)
+ (|SetCategory|)
+ (|BasicType|)
+ (|CoercibleTo| 16)))
+ (|makeByteWordVec2| 16
+ (QUOTE
+ (2 0 12 0 0 1 1 0 12 0 1 2 0 0 0 0 6 2 0 8 0 0 9 2 0 0 0 5 7 0 0
+ 0 1 2 0 0 0 0 1 1 0 8 0 1 1 0 0 0 1 2 0 0 0 0 1 1 0 12 0 1 2 0
+ 0 0 0 1 2 0 0 0 0 1 1 0 15 0 1 1 0 14 0 1 2 0 0 0 0 1 2 0 8 0 0
+ 1 2 0 10 0 0 1 1 0 16 0 1 2 0 0 0 11 1 2 0 0 0 13 1 0 0 0 1 0 0
+ 0 1 2 0 12 0 0 1 2 0 12 0 0 1 2 0 12 0 0 1 2 0 12 0 0 1 2 0 12
+ 0 0 1 2 0 0 0 0 1 2 0 0 0 11 1 2 0 0 0 13 1 2 0 0 0 0 1 2 0 0
+ 11 0 1 2 0 0 13 0 1))))))
+ (QUOTE |lookupComplete|)))
+
+(MAKEPROP (QUOTE |NonNegativeInteger|) (QUOTE NILADIC) T)
+
diff --git a/src/algebra/strap/OINTDOM.lsp b/src/algebra/strap/OINTDOM.lsp
new file mode 100644
index 00000000..8729184b
--- /dev/null
+++ b/src/algebra/strap/OINTDOM.lsp
@@ -0,0 +1,19 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |OrderedIntegralDomain;AL| 'NIL)
+
+(DEFUN |OrderedIntegralDomain| ()
+ (LET (#:G1387)
+ (COND
+ (|OrderedIntegralDomain;AL|)
+ (T (SETQ |OrderedIntegralDomain;AL| (|OrderedIntegralDomain;|))))))
+
+(DEFUN |OrderedIntegralDomain;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0# (|Join| (|IntegralDomain|) (|OrderedRing|))
+ |OrderedIntegralDomain|)
+ (SETELT #0# 0 '(|OrderedIntegralDomain|))))))
+
+(MAKEPROP '|OrderedIntegralDomain| 'NILADIC T)
diff --git a/src/algebra/strap/ORDRING-.lsp b/src/algebra/strap/ORDRING-.lsp
new file mode 100644
index 00000000..b556918a
--- /dev/null
+++ b/src/algebra/strap/ORDRING-.lsp
@@ -0,0 +1,52 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |ORDRING-;positive?;SB;1| (|x| $)
+ (SPADCALL (|spadConstant| $ 7) |x| (QREFELT $ 9)))
+
+(DEFUN |ORDRING-;negative?;SB;2| (|x| $)
+ (SPADCALL |x| (|spadConstant| $ 7) (QREFELT $ 9)))
+
+(DEFUN |ORDRING-;sign;SI;3| (|x| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 12)) 1)
+ ((SPADCALL |x| (QREFELT $ 13)) -1)
+ ((SPADCALL |x| (QREFELT $ 15)) 0)
+ ('T (|error| "x satisfies neither positive?, negative? or zero?"))))
+
+(DEFUN |ORDRING-;abs;2S;4| (|x| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 12)) |x|)
+ ((SPADCALL |x| (QREFELT $ 13)) (SPADCALL |x| (QREFELT $ 18)))
+ ((SPADCALL |x| (QREFELT $ 15)) (|spadConstant| $ 7))
+ ('T (|error| "x satisfies neither positive?, negative? or zero?"))))
+
+(DEFUN |OrderedRing&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|OrderedRing&|))
+ (LETT |dv$| (LIST '|OrderedRing&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 20) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|OrderedRing&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (0 . |Zero|)
+ (|Boolean|) (4 . <) |ORDRING-;positive?;SB;1|
+ |ORDRING-;negative?;SB;2| (10 . |positive?|)
+ (15 . |negative?|) (20 . |One|) (24 . |zero?|) (|Integer|)
+ |ORDRING-;sign;SI;3| (29 . -) |ORDRING-;abs;2S;4|)
+ '#(|sign| 34 |positive?| 39 |negative?| 44 |abs| 49) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 19
+ '(0 6 0 7 2 6 8 0 0 9 1 6 8 0 12 1 6 8
+ 0 13 0 6 0 14 1 6 8 0 15 1 6 0 0 18 1
+ 0 16 0 17 1 0 8 0 10 1 0 8 0 11 1 0 0
+ 0 19)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/ORDRING.lsp b/src/algebra/strap/ORDRING.lsp
new file mode 100644
index 00000000..9d3e60c9
--- /dev/null
+++ b/src/algebra/strap/ORDRING.lsp
@@ -0,0 +1,26 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |OrderedRing;AL| 'NIL)
+
+(DEFUN |OrderedRing| ()
+ (LET (#:G1393)
+ (COND
+ (|OrderedRing;AL|)
+ (T (SETQ |OrderedRing;AL| (|OrderedRing;|))))))
+
+(DEFUN |OrderedRing;| ()
+ (PROG (#0=#:G1391)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|OrderedAbelianGroup|) (|Ring|) (|Monoid|)
+ (|mkCategory| '|domain|
+ '(((|positive?| ((|Boolean|) $)) T)
+ ((|negative?| ((|Boolean|) $)) T)
+ ((|sign| ((|Integer|) $)) T)
+ ((|abs| ($ $)) T))
+ NIL '((|Integer|) (|Boolean|)) NIL))
+ |OrderedRing|)
+ (SETELT #0# 0 '(|OrderedRing|))))))
+
+(MAKEPROP '|OrderedRing| 'NILADIC T)
diff --git a/src/algebra/strap/OUTFORM.lsp b/src/algebra/strap/OUTFORM.lsp
new file mode 100644
index 00000000..91e85005
--- /dev/null
+++ b/src/algebra/strap/OUTFORM.lsp
@@ -0,0 +1,626 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|OUTFORM;print;$V;1| '|SPADreplace| '|mathprint|)
+
+(DEFUN |OUTFORM;print;$V;1| (|x| $) (|mathprint| |x|))
+
+(DEFUN |OUTFORM;message;S$;2| (|s| $)
+ (COND
+ ((SPADCALL |s| (QREFELT $ 11)) (SPADCALL (QREFELT $ 12)))
+ ('T |s|)))
+
+(DEFUN |OUTFORM;messagePrint;SV;3| (|s| $)
+ (SPADCALL (SPADCALL |s| (QREFELT $ 13)) (QREFELT $ 8)))
+
+(PUT '|OUTFORM;=;2$B;4| '|SPADreplace| 'EQUAL)
+
+(DEFUN |OUTFORM;=;2$B;4| (|a| |b| $) (EQUAL |a| |b|))
+
+(DEFUN |OUTFORM;=;3$;5| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "=" $) |a| |b|))
+
+(PUT '|OUTFORM;coerce;$Of;6| '|SPADreplace| '(XLAM (|a|) |a|))
+
+(DEFUN |OUTFORM;coerce;$Of;6| (|a| $) |a|)
+
+(PUT '|OUTFORM;outputForm;I$;7| '|SPADreplace| '(XLAM (|n|) |n|))
+
+(DEFUN |OUTFORM;outputForm;I$;7| (|n| $) |n|)
+
+(PUT '|OUTFORM;outputForm;S$;8| '|SPADreplace| '(XLAM (|e|) |e|))
+
+(DEFUN |OUTFORM;outputForm;S$;8| (|e| $) |e|)
+
+(PUT '|OUTFORM;outputForm;Df$;9| '|SPADreplace| '(XLAM (|f|) |f|))
+
+(DEFUN |OUTFORM;outputForm;Df$;9| (|f| $) |f|)
+
+(PUT '|OUTFORM;sform| '|SPADreplace| '(XLAM (|s|) |s|))
+
+(DEFUN |OUTFORM;sform| (|s| $) |s|)
+
+(PUT '|OUTFORM;eform| '|SPADreplace| '(XLAM (|e|) |e|))
+
+(DEFUN |OUTFORM;eform| (|e| $) |e|)
+
+(PUT '|OUTFORM;iform| '|SPADreplace| '(XLAM (|n|) |n|))
+
+(DEFUN |OUTFORM;iform| (|n| $) |n|)
+
+(DEFUN |OUTFORM;outputForm;S$;13| (|s| $)
+ (|OUTFORM;sform|
+ (SPADCALL (SPADCALL (QREFELT $ 26))
+ (SPADCALL |s| (SPADCALL (QREFELT $ 26)) (QREFELT $ 27))
+ (QREFELT $ 28))
+ $))
+
+(PUT '|OUTFORM;width;$I;14| '|SPADreplace| '|outformWidth|)
+
+(DEFUN |OUTFORM;width;$I;14| (|a| $) (|outformWidth| |a|))
+
+(PUT '|OUTFORM;height;$I;15| '|SPADreplace| '|height|)
+
+(DEFUN |OUTFORM;height;$I;15| (|a| $) (|height| |a|))
+
+(PUT '|OUTFORM;subHeight;$I;16| '|SPADreplace| '|subspan|)
+
+(DEFUN |OUTFORM;subHeight;$I;16| (|a| $) (|subspan| |a|))
+
+(PUT '|OUTFORM;superHeight;$I;17| '|SPADreplace| '|superspan|)
+
+(DEFUN |OUTFORM;superHeight;$I;17| (|a| $) (|superspan| |a|))
+
+(PUT '|OUTFORM;height;I;18| '|SPADreplace| '(XLAM NIL 20))
+
+(DEFUN |OUTFORM;height;I;18| ($) 20)
+
+(PUT '|OUTFORM;width;I;19| '|SPADreplace| '(XLAM NIL 66))
+
+(DEFUN |OUTFORM;width;I;19| ($) 66)
+
+(DEFUN |OUTFORM;center;$I$;20| (|a| |w| $)
+ (SPADCALL
+ (SPADCALL (QUOTIENT2 (- |w| (SPADCALL |a| (QREFELT $ 30))) 2)
+ (QREFELT $ 36))
+ |a| (QREFELT $ 37)))
+
+(DEFUN |OUTFORM;left;$I$;21| (|a| |w| $)
+ (SPADCALL |a|
+ (SPADCALL (- |w| (SPADCALL |a| (QREFELT $ 30))) (QREFELT $ 36))
+ (QREFELT $ 37)))
+
+(DEFUN |OUTFORM;right;$I$;22| (|a| |w| $)
+ (SPADCALL
+ (SPADCALL (- |w| (SPADCALL |a| (QREFELT $ 30))) (QREFELT $ 36))
+ |a| (QREFELT $ 37)))
+
+(DEFUN |OUTFORM;center;2$;23| (|a| $)
+ (SPADCALL |a| (SPADCALL (QREFELT $ 35)) (QREFELT $ 38)))
+
+(DEFUN |OUTFORM;left;2$;24| (|a| $)
+ (SPADCALL |a| (SPADCALL (QREFELT $ 35)) (QREFELT $ 39)))
+
+(DEFUN |OUTFORM;right;2$;25| (|a| $)
+ (SPADCALL |a| (SPADCALL (QREFELT $ 35)) (QREFELT $ 40)))
+
+(DEFUN |OUTFORM;vspace;I$;26| (|n| $)
+ (COND
+ ((EQL |n| 0) (SPADCALL (QREFELT $ 12)))
+ ('T
+ (SPADCALL (|OUTFORM;sform| " " $)
+ (SPADCALL (- |n| 1) (QREFELT $ 44)) (QREFELT $ 45)))))
+
+(DEFUN |OUTFORM;hspace;I$;27| (|n| $)
+ (COND
+ ((EQL |n| 0) (SPADCALL (QREFELT $ 12)))
+ ('T (|OUTFORM;sform| (|fillerSpaces| |n|) $))))
+
+(DEFUN |OUTFORM;rspace;2I$;28| (|n| |m| $)
+ (COND
+ ((OR (EQL |n| 0) (EQL |m| 0)) (SPADCALL (QREFELT $ 12)))
+ ('T
+ (SPADCALL (SPADCALL |n| (QREFELT $ 36))
+ (SPADCALL |n| (- |m| 1) (QREFELT $ 46)) (QREFELT $ 45)))))
+
+(DEFUN |OUTFORM;matrix;L$;29| (|ll| $)
+ (PROG (#0=#:G1437 |l| #1=#:G1438 |lv|)
+ (RETURN
+ (SEQ (LETT |lv|
+ (PROGN
+ (LETT #0# NIL |OUTFORM;matrix;L$;29|)
+ (SEQ (LETT |l| NIL |OUTFORM;matrix;L$;29|)
+ (LETT #1# |ll| |OUTFORM;matrix;L$;29|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |l| (CAR #1#)
+ |OUTFORM;matrix;L$;29|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0# (CONS (LIST2VEC |l|) #0#)
+ |OUTFORM;matrix;L$;29|)))
+ (LETT #1# (CDR #1#) |OUTFORM;matrix;L$;29|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ |OUTFORM;matrix;L$;29|)
+ (EXIT (CONS (|OUTFORM;eform| 'MATRIX $) (LIST2VEC |lv|)))))))
+
+(DEFUN |OUTFORM;pile;L$;30| (|l| $)
+ (CONS (|OUTFORM;eform| 'SC $) |l|))
+
+(DEFUN |OUTFORM;commaSeparate;L$;31| (|l| $)
+ (CONS (|OUTFORM;eform| 'AGGLST $) |l|))
+
+(DEFUN |OUTFORM;semicolonSeparate;L$;32| (|l| $)
+ (CONS (|OUTFORM;eform| 'AGGSET $) |l|))
+
+(DEFUN |OUTFORM;blankSeparate;L$;33| (|l| $)
+ (PROG (|c| |u| #0=#:G1446 |l1|)
+ (RETURN
+ (SEQ (LETT |c| (|OUTFORM;eform| 'CONCATB $)
+ |OUTFORM;blankSeparate;L$;33|)
+ (LETT |l1| NIL |OUTFORM;blankSeparate;L$;33|)
+ (SEQ (LETT |u| NIL |OUTFORM;blankSeparate;L$;33|)
+ (LETT #0# (SPADCALL |l| (QREFELT $ 53))
+ |OUTFORM;blankSeparate;L$;33|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |u| (CAR #0#)
+ |OUTFORM;blankSeparate;L$;33|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((EQCAR |u| |c|)
+ (LETT |l1|
+ (SPADCALL (CDR |u|) |l1|
+ (QREFELT $ 54))
+ |OUTFORM;blankSeparate;L$;33|))
+ ('T
+ (LETT |l1| (CONS |u| |l1|)
+ |OUTFORM;blankSeparate;L$;33|)))))
+ (LETT #0# (CDR #0#) |OUTFORM;blankSeparate;L$;33|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (CONS |c| |l1|))))))
+
+(DEFUN |OUTFORM;brace;2$;34| (|a| $)
+ (LIST (|OUTFORM;eform| 'BRACE $) |a|))
+
+(DEFUN |OUTFORM;brace;L$;35| (|l| $)
+ (SPADCALL (SPADCALL |l| (QREFELT $ 51)) (QREFELT $ 56)))
+
+(DEFUN |OUTFORM;bracket;2$;36| (|a| $)
+ (LIST (|OUTFORM;eform| 'BRACKET $) |a|))
+
+(DEFUN |OUTFORM;bracket;L$;37| (|l| $)
+ (SPADCALL (SPADCALL |l| (QREFELT $ 51)) (QREFELT $ 58)))
+
+(DEFUN |OUTFORM;paren;2$;38| (|a| $)
+ (LIST (|OUTFORM;eform| 'PAREN $) |a|))
+
+(DEFUN |OUTFORM;paren;L$;39| (|l| $)
+ (SPADCALL (SPADCALL |l| (QREFELT $ 51)) (QREFELT $ 60)))
+
+(DEFUN |OUTFORM;sub;3$;40| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'SUB $) |a| |b|))
+
+(DEFUN |OUTFORM;super;3$;41| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'SUPERSUB $) |a| (|OUTFORM;sform| " " $) |b|))
+
+(DEFUN |OUTFORM;presub;3$;42| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'SUPERSUB $) |a| (|OUTFORM;sform| " " $)
+ (|OUTFORM;sform| " " $) (|OUTFORM;sform| " " $) |b|))
+
+(DEFUN |OUTFORM;presuper;3$;43| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'SUPERSUB $) |a| (|OUTFORM;sform| " " $)
+ (|OUTFORM;sform| " " $) |b|))
+
+(DEFUN |OUTFORM;scripts;$L$;44| (|a| |l| $)
+ (COND
+ ((SPADCALL |l| (QREFELT $ 66)) |a|)
+ ((SPADCALL (SPADCALL |l| (QREFELT $ 67)) (QREFELT $ 66))
+ (SPADCALL |a| (SPADCALL |l| (QREFELT $ 68)) (QREFELT $ 62)))
+ ('T (CONS (|OUTFORM;eform| 'SUPERSUB $) (CONS |a| |l|)))))
+
+(DEFUN |OUTFORM;supersub;$L$;45| (|a| |l| $)
+ (SEQ (COND
+ ((ODDP (SPADCALL |l| (QREFELT $ 71)))
+ (LETT |l|
+ (SPADCALL |l| (LIST (SPADCALL (QREFELT $ 12)))
+ (QREFELT $ 73))
+ |OUTFORM;supersub;$L$;45|)))
+ (EXIT (CONS (|OUTFORM;eform| 'ALTSUPERSUB $) (CONS |a| |l|)))))
+
+(DEFUN |OUTFORM;hconcat;3$;46| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'CONCAT $) |a| |b|))
+
+(DEFUN |OUTFORM;hconcat;L$;47| (|l| $)
+ (CONS (|OUTFORM;eform| 'CONCAT $) |l|))
+
+(DEFUN |OUTFORM;vconcat;3$;48| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'VCONCAT $) |a| |b|))
+
+(DEFUN |OUTFORM;vconcat;L$;49| (|l| $)
+ (CONS (|OUTFORM;eform| 'VCONCAT $) |l|))
+
+(DEFUN |OUTFORM;~=;3$;50| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "~=" $) |a| |b|))
+
+(DEFUN |OUTFORM;<;3$;51| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "<" $) |a| |b|))
+
+(DEFUN |OUTFORM;>;3$;52| (|a| |b| $)
+ (LIST (|OUTFORM;sform| ">" $) |a| |b|))
+
+(DEFUN |OUTFORM;<=;3$;53| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "<=" $) |a| |b|))
+
+(DEFUN |OUTFORM;>=;3$;54| (|a| |b| $)
+ (LIST (|OUTFORM;sform| ">=" $) |a| |b|))
+
+(DEFUN |OUTFORM;+;3$;55| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "+" $) |a| |b|))
+
+(DEFUN |OUTFORM;-;3$;56| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "-" $) |a| |b|))
+
+(DEFUN |OUTFORM;-;2$;57| (|a| $) (LIST (|OUTFORM;sform| "-" $) |a|))
+
+(DEFUN |OUTFORM;*;3$;58| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "*" $) |a| |b|))
+
+(DEFUN |OUTFORM;/;3$;59| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "/" $) |a| |b|))
+
+(DEFUN |OUTFORM;**;3$;60| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "**" $) |a| |b|))
+
+(DEFUN |OUTFORM;div;3$;61| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "div" $) |a| |b|))
+
+(DEFUN |OUTFORM;rem;3$;62| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "rem" $) |a| |b|))
+
+(DEFUN |OUTFORM;quo;3$;63| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "quo" $) |a| |b|))
+
+(DEFUN |OUTFORM;exquo;3$;64| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "exquo" $) |a| |b|))
+
+(DEFUN |OUTFORM;and;3$;65| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "and" $) |a| |b|))
+
+(DEFUN |OUTFORM;or;3$;66| (|a| |b| $)
+ (LIST (|OUTFORM;sform| "or" $) |a| |b|))
+
+(DEFUN |OUTFORM;not;2$;67| (|a| $)
+ (LIST (|OUTFORM;sform| "not" $) |a|))
+
+(DEFUN |OUTFORM;SEGMENT;3$;68| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'SEGMENT $) |a| |b|))
+
+(DEFUN |OUTFORM;SEGMENT;2$;69| (|a| $)
+ (LIST (|OUTFORM;eform| 'SEGMENT $) |a|))
+
+(DEFUN |OUTFORM;binomial;3$;70| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'BINOMIAL $) |a| |b|))
+
+(DEFUN |OUTFORM;empty;$;71| ($) (LIST (|OUTFORM;eform| 'NOTHING $)))
+
+(DEFUN |OUTFORM;infix?;$B;72| (|a| $)
+ (PROG (#0=#:G1491 |e|)
+ (RETURN
+ (SEQ (EXIT (SEQ (LETT |e|
+ (COND
+ ((IDENTP |a|) |a|)
+ ((STRINGP |a|) (INTERN |a|))
+ ('T
+ (PROGN
+ (LETT #0# 'NIL |OUTFORM;infix?;$B;72|)
+ (GO #0#))))
+ |OUTFORM;infix?;$B;72|)
+ (EXIT (COND ((GET |e| 'INFIXOP) 'T) ('T 'NIL)))))
+ #0# (EXIT #0#)))))
+
+(PUT '|OUTFORM;elt;$L$;73| '|SPADreplace| 'CONS)
+
+(DEFUN |OUTFORM;elt;$L$;73| (|a| |l| $) (CONS |a| |l|))
+
+(DEFUN |OUTFORM;prefix;$L$;74| (|a| |l| $)
+ (COND
+ ((NULL (SPADCALL |a| (QREFELT $ 98))) (CONS |a| |l|))
+ ('T
+ (SPADCALL |a|
+ (SPADCALL (SPADCALL |l| (QREFELT $ 51)) (QREFELT $ 60))
+ (QREFELT $ 37)))))
+
+(DEFUN |OUTFORM;infix;$L$;75| (|a| |l| $)
+ (COND
+ ((SPADCALL |l| (QREFELT $ 66)) (SPADCALL (QREFELT $ 12)))
+ ((SPADCALL (SPADCALL |l| (QREFELT $ 67)) (QREFELT $ 66))
+ (SPADCALL |l| (QREFELT $ 68)))
+ ((SPADCALL |a| (QREFELT $ 98)) (CONS |a| |l|))
+ ('T
+ (SPADCALL
+ (LIST (SPADCALL |l| (QREFELT $ 68)) |a|
+ (SPADCALL |a| (SPADCALL |l| (QREFELT $ 101))
+ (QREFELT $ 102)))
+ (QREFELT $ 75)))))
+
+(DEFUN |OUTFORM;infix;4$;76| (|a| |b| |c| $)
+ (COND
+ ((SPADCALL |a| (QREFELT $ 98)) (LIST |a| |b| |c|))
+ ('T (SPADCALL (LIST |b| |a| |c|) (QREFELT $ 75)))))
+
+(DEFUN |OUTFORM;postfix;3$;77| (|a| |b| $)
+ (SPADCALL |b| |a| (QREFELT $ 37)))
+
+(DEFUN |OUTFORM;string;2$;78| (|a| $)
+ (LIST (|OUTFORM;eform| 'STRING $) |a|))
+
+(DEFUN |OUTFORM;quote;2$;79| (|a| $)
+ (LIST (|OUTFORM;eform| 'QUOTE $) |a|))
+
+(DEFUN |OUTFORM;overbar;2$;80| (|a| $)
+ (LIST (|OUTFORM;eform| 'OVERBAR $) |a|))
+
+(DEFUN |OUTFORM;dot;2$;81| (|a| $)
+ (SPADCALL |a| (|OUTFORM;sform| "." $) (QREFELT $ 63)))
+
+(DEFUN |OUTFORM;prime;2$;82| (|a| $)
+ (SPADCALL |a| (|OUTFORM;sform| "," $) (QREFELT $ 63)))
+
+(DEFUN |OUTFORM;dot;$Nni$;83| (|a| |nn| $)
+ (PROG (|s|)
+ (RETURN
+ (SEQ (LETT |s|
+ (MAKE-FULL-CVEC |nn| (SPADCALL "." (QREFELT $ 110)))
+ |OUTFORM;dot;$Nni$;83|)
+ (EXIT (SPADCALL |a| (|OUTFORM;sform| |s| $) (QREFELT $ 63)))))))
+
+(DEFUN |OUTFORM;prime;$Nni$;84| (|a| |nn| $)
+ (PROG (|s|)
+ (RETURN
+ (SEQ (LETT |s|
+ (MAKE-FULL-CVEC |nn| (SPADCALL "," (QREFELT $ 110)))
+ |OUTFORM;prime;$Nni$;84|)
+ (EXIT (SPADCALL |a| (|OUTFORM;sform| |s| $) (QREFELT $ 63)))))))
+
+(DEFUN |OUTFORM;overlabel;3$;85| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'OVERLABEL $) |a| |b|))
+
+(DEFUN |OUTFORM;box;2$;86| (|a| $)
+ (LIST (|OUTFORM;eform| 'BOX $) |a|))
+
+(DEFUN |OUTFORM;zag;3$;87| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'ZAG $) |a| |b|))
+
+(DEFUN |OUTFORM;root;2$;88| (|a| $)
+ (LIST (|OUTFORM;eform| 'ROOT $) |a|))
+
+(DEFUN |OUTFORM;root;3$;89| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'ROOT $) |a| |b|))
+
+(DEFUN |OUTFORM;over;3$;90| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'OVER $) |a| |b|))
+
+(DEFUN |OUTFORM;slash;3$;91| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'SLASH $) |a| |b|))
+
+(DEFUN |OUTFORM;assign;3$;92| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'LET $) |a| |b|))
+
+(DEFUN |OUTFORM;label;3$;93| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'EQUATNUM $) |a| |b|))
+
+(DEFUN |OUTFORM;rarrow;3$;94| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'TAG $) |a| |b|))
+
+(DEFUN |OUTFORM;differentiate;$Nni$;95| (|a| |nn| $)
+ (PROG (#0=#:G1521 |r| |s|)
+ (RETURN
+ (SEQ (COND
+ ((ZEROP |nn|) |a|)
+ ((< |nn| 4) (SPADCALL |a| |nn| (QREFELT $ 112)))
+ ('T
+ (SEQ (LETT |r|
+ (SPADCALL
+ (PROG1 (LETT #0# |nn|
+ |OUTFORM;differentiate;$Nni$;95|)
+ (|check-subtype| (> #0# 0)
+ '(|PositiveInteger|) #0#))
+ (QREFELT $ 125))
+ |OUTFORM;differentiate;$Nni$;95|)
+ (LETT |s| (SPADCALL |r| (QREFELT $ 126))
+ |OUTFORM;differentiate;$Nni$;95|)
+ (EXIT (SPADCALL |a|
+ (SPADCALL (|OUTFORM;sform| |s| $)
+ (QREFELT $ 60))
+ (QREFELT $ 63))))))))))
+
+(DEFUN |OUTFORM;sum;2$;96| (|a| $)
+ (LIST (|OUTFORM;eform| 'SIGMA $) (SPADCALL (QREFELT $ 12)) |a|))
+
+(DEFUN |OUTFORM;sum;3$;97| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'SIGMA $) |b| |a|))
+
+(DEFUN |OUTFORM;sum;4$;98| (|a| |b| |c| $)
+ (LIST (|OUTFORM;eform| 'SIGMA2 $) |b| |c| |a|))
+
+(DEFUN |OUTFORM;prod;2$;99| (|a| $)
+ (LIST (|OUTFORM;eform| 'PI $) (SPADCALL (QREFELT $ 12)) |a|))
+
+(DEFUN |OUTFORM;prod;3$;100| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'PI $) |b| |a|))
+
+(DEFUN |OUTFORM;prod;4$;101| (|a| |b| |c| $)
+ (LIST (|OUTFORM;eform| 'PI2 $) |b| |c| |a|))
+
+(DEFUN |OUTFORM;int;2$;102| (|a| $)
+ (LIST (|OUTFORM;eform| 'INTSIGN $) (SPADCALL (QREFELT $ 12))
+ (SPADCALL (QREFELT $ 12)) |a|))
+
+(DEFUN |OUTFORM;int;3$;103| (|a| |b| $)
+ (LIST (|OUTFORM;eform| 'INTSIGN $) |b| (SPADCALL (QREFELT $ 12)) |a|))
+
+(DEFUN |OUTFORM;int;4$;104| (|a| |b| |c| $)
+ (LIST (|OUTFORM;eform| 'INTSIGN $) |b| |c| |a|))
+
+(DEFUN |OutputForm| ()
+ (PROG ()
+ (RETURN
+ (PROG (#0=#:G1535)
+ (RETURN
+ (COND
+ ((LETT #0# (HGET |$ConstructorCache| '|OutputForm|)
+ |OutputForm|)
+ (|CDRwithIncrement| (CDAR #0#)))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (CDDAR (HPUT |$ConstructorCache| '|OutputForm|
+ (LIST
+ (CONS NIL (CONS 1 (|OutputForm;|))))))
+ (LETT #0# T |OutputForm|))
+ (COND
+ ((NOT #0#) (HREM |$ConstructorCache| '|OutputForm|)))))))))))
+
+(DEFUN |OutputForm;| ()
+ (PROG (|dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| '(|OutputForm|) . #0=(|OutputForm|))
+ (LETT $ (|newShell| 138) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|haddProp| |$ConstructorCache| '|OutputForm| NIL (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 (|List| $))
+ $))))
+
+(MAKEPROP '|OutputForm| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL '|Rep| (|Void|)
+ |OUTFORM;print;$V;1| (|Boolean|) (|String|) (0 . |empty?|)
+ |OUTFORM;empty;$;71| |OUTFORM;message;S$;2|
+ |OUTFORM;messagePrint;SV;3| |OUTFORM;=;2$B;4|
+ |OUTFORM;=;3$;5| (|OutputForm|) |OUTFORM;coerce;$Of;6|
+ (|Integer|) |OUTFORM;outputForm;I$;7| (|Symbol|)
+ |OUTFORM;outputForm;S$;8| (|DoubleFloat|)
+ |OUTFORM;outputForm;Df$;9| (|Character|) (5 . |quote|)
+ (9 . |concat|) (15 . |concat|) |OUTFORM;outputForm;S$;13|
+ |OUTFORM;width;$I;14| |OUTFORM;height;$I;15|
+ |OUTFORM;subHeight;$I;16| |OUTFORM;superHeight;$I;17|
+ |OUTFORM;height;I;18| |OUTFORM;width;I;19|
+ |OUTFORM;hspace;I$;27| |OUTFORM;hconcat;3$;46|
+ |OUTFORM;center;$I$;20| |OUTFORM;left;$I$;21|
+ |OUTFORM;right;$I$;22| |OUTFORM;center;2$;23|
+ |OUTFORM;left;2$;24| |OUTFORM;right;2$;25|
+ |OUTFORM;vspace;I$;26| |OUTFORM;vconcat;3$;48|
+ |OUTFORM;rspace;2I$;28| (|List| 49) |OUTFORM;matrix;L$;29|
+ (|List| $) |OUTFORM;pile;L$;30|
+ |OUTFORM;commaSeparate;L$;31|
+ |OUTFORM;semicolonSeparate;L$;32| (21 . |reverse|)
+ (26 . |append|) |OUTFORM;blankSeparate;L$;33|
+ |OUTFORM;brace;2$;34| |OUTFORM;brace;L$;35|
+ |OUTFORM;bracket;2$;36| |OUTFORM;bracket;L$;37|
+ |OUTFORM;paren;2$;38| |OUTFORM;paren;L$;39|
+ |OUTFORM;sub;3$;40| |OUTFORM;super;3$;41|
+ |OUTFORM;presub;3$;42| |OUTFORM;presuper;3$;43|
+ (32 . |null|) (37 . |rest|) (42 . |first|)
+ |OUTFORM;scripts;$L$;44| (|NonNegativeInteger|) (47 . |#|)
+ (|List| $$) (52 . |append|) |OUTFORM;supersub;$L$;45|
+ |OUTFORM;hconcat;L$;47| |OUTFORM;vconcat;L$;49|
+ |OUTFORM;~=;3$;50| |OUTFORM;<;3$;51| |OUTFORM;>;3$;52|
+ |OUTFORM;<=;3$;53| |OUTFORM;>=;3$;54| |OUTFORM;+;3$;55|
+ |OUTFORM;-;3$;56| |OUTFORM;-;2$;57| |OUTFORM;*;3$;58|
+ |OUTFORM;/;3$;59| |OUTFORM;**;3$;60| |OUTFORM;div;3$;61|
+ |OUTFORM;rem;3$;62| |OUTFORM;quo;3$;63|
+ |OUTFORM;exquo;3$;64| |OUTFORM;and;3$;65|
+ |OUTFORM;or;3$;66| |OUTFORM;not;2$;67|
+ |OUTFORM;SEGMENT;3$;68| |OUTFORM;SEGMENT;2$;69|
+ |OUTFORM;binomial;3$;70| |OUTFORM;infix?;$B;72|
+ |OUTFORM;elt;$L$;73| |OUTFORM;prefix;$L$;74| (58 . |rest|)
+ |OUTFORM;infix;$L$;75| |OUTFORM;infix;4$;76|
+ |OUTFORM;postfix;3$;77| |OUTFORM;string;2$;78|
+ |OUTFORM;quote;2$;79| |OUTFORM;overbar;2$;80|
+ |OUTFORM;dot;2$;81| |OUTFORM;prime;2$;82| (63 . |char|)
+ |OUTFORM;dot;$Nni$;83| |OUTFORM;prime;$Nni$;84|
+ |OUTFORM;overlabel;3$;85| |OUTFORM;box;2$;86|
+ |OUTFORM;zag;3$;87| |OUTFORM;root;2$;88|
+ |OUTFORM;root;3$;89| |OUTFORM;over;3$;90|
+ |OUTFORM;slash;3$;91| |OUTFORM;assign;3$;92|
+ |OUTFORM;label;3$;93| |OUTFORM;rarrow;3$;94|
+ (|PositiveInteger|) (|NumberFormats|) (68 . |FormatRoman|)
+ (73 . |lowerCase|) |OUTFORM;differentiate;$Nni$;95|
+ |OUTFORM;sum;2$;96| |OUTFORM;sum;3$;97|
+ |OUTFORM;sum;4$;98| |OUTFORM;prod;2$;99|
+ |OUTFORM;prod;3$;100| |OUTFORM;prod;4$;101|
+ |OUTFORM;int;2$;102| |OUTFORM;int;3$;103|
+ |OUTFORM;int;4$;104| (|SingleInteger|))
+ '#(~= 78 |zag| 90 |width| 96 |vspace| 105 |vconcat| 110
+ |supersub| 121 |superHeight| 127 |super| 132 |sum| 138
+ |subHeight| 156 |sub| 161 |string| 167 |slash| 172
+ |semicolonSeparate| 178 |scripts| 183 |rspace| 189 |root|
+ 195 |right| 206 |rem| 217 |rarrow| 223 |quote| 229 |quo|
+ 234 |prod| 240 |print| 258 |prime| 263 |presuper| 274
+ |presub| 280 |prefix| 286 |postfix| 292 |pile| 298 |paren|
+ 303 |overlabel| 313 |overbar| 319 |over| 324 |outputForm|
+ 330 |or| 350 |not| 356 |messagePrint| 361 |message| 366
+ |matrix| 371 |left| 376 |latex| 387 |label| 392 |int| 398
+ |infix?| 416 |infix| 421 |hspace| 434 |height| 439
+ |hconcat| 448 |hash| 459 |exquo| 464 |empty| 470 |elt| 474
+ |dot| 480 |div| 491 |differentiate| 497 |commaSeparate|
+ 503 |coerce| 508 |center| 513 |bracket| 524 |brace| 534
+ |box| 544 |blankSeparate| 549 |binomial| 554 |assign| 560
+ |and| 566 SEGMENT 572 >= 583 > 589 = 595 <= 607 < 613 /
+ 619 - 625 + 636 ** 642 * 648)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 '(0 0 0))
+ (CONS '#(|SetCategory&| |BasicType&| NIL)
+ (CONS '#((|SetCategory|) (|BasicType|)
+ (|CoercibleTo| 17))
+ (|makeByteWordVec2| 137
+ '(1 10 9 0 11 0 25 0 26 2 10 0 0 25 27
+ 2 10 0 25 0 28 1 6 0 0 53 2 6 0 0 0
+ 54 1 6 9 0 66 1 6 0 0 67 1 6 2 0 68 1
+ 6 70 0 71 2 72 0 0 0 73 1 72 0 0 101
+ 1 25 0 10 110 1 124 10 123 125 1 10 0
+ 0 126 2 0 0 0 0 77 2 0 9 0 0 1 2 0 0
+ 0 0 115 0 0 19 35 1 0 19 0 30 1 0 0
+ 19 44 1 0 0 49 76 2 0 0 0 0 45 2 0 0
+ 0 49 74 1 0 19 0 33 2 0 0 0 0 63 2 0
+ 0 0 0 129 3 0 0 0 0 0 130 1 0 0 0 128
+ 1 0 19 0 32 2 0 0 0 0 62 1 0 0 0 105
+ 2 0 0 0 0 119 1 0 0 49 52 2 0 0 0 49
+ 69 2 0 0 19 19 46 1 0 0 0 116 2 0 0 0
+ 0 117 1 0 0 0 43 2 0 0 0 19 40 2 0 0
+ 0 0 89 2 0 0 0 0 122 1 0 0 0 106 2 0
+ 0 0 0 90 3 0 0 0 0 0 133 1 0 0 0 131
+ 2 0 0 0 0 132 1 0 7 0 8 2 0 0 0 70
+ 112 1 0 0 0 109 2 0 0 0 0 65 2 0 0 0
+ 0 64 2 0 0 0 49 100 2 0 0 0 0 104 1 0
+ 0 49 50 1 0 0 49 61 1 0 0 0 60 2 0 0
+ 0 0 113 1 0 0 0 107 2 0 0 0 0 118 1 0
+ 0 10 29 1 0 0 23 24 1 0 0 21 22 1 0 0
+ 19 20 2 0 0 0 0 93 1 0 0 0 94 1 0 7
+ 10 14 1 0 0 10 13 1 0 0 47 48 1 0 0 0
+ 42 2 0 0 0 19 39 1 0 10 0 1 2 0 0 0 0
+ 121 3 0 0 0 0 0 136 2 0 0 0 0 135 1 0
+ 0 0 134 1 0 9 0 98 2 0 0 0 49 102 3 0
+ 0 0 0 0 103 1 0 0 19 36 0 0 19 34 1 0
+ 19 0 31 1 0 0 49 75 2 0 0 0 0 37 1 0
+ 137 0 1 2 0 0 0 0 91 0 0 0 12 2 0 0 0
+ 49 99 2 0 0 0 70 111 1 0 0 0 108 2 0
+ 0 0 0 88 2 0 0 0 70 127 1 0 0 49 51 1
+ 0 17 0 18 1 0 0 0 41 2 0 0 0 19 38 1
+ 0 0 0 58 1 0 0 49 59 1 0 0 49 57 1 0
+ 0 0 56 1 0 0 0 114 1 0 0 49 55 2 0 0
+ 0 0 97 2 0 0 0 0 120 2 0 0 0 0 92 1 0
+ 0 0 96 2 0 0 0 0 95 2 0 0 0 0 81 2 0
+ 0 0 0 79 2 0 0 0 0 16 2 0 9 0 0 15 2
+ 0 0 0 0 80 2 0 0 0 0 78 2 0 0 0 0 86
+ 1 0 0 0 84 2 0 0 0 0 83 2 0 0 0 0 82
+ 2 0 0 0 0 87 2 0 0 0 0 85)))))
+ '|lookupComplete|))
+
+(MAKEPROP '|OutputForm| 'NILADIC T)
diff --git a/src/algebra/strap/PI.lsp b/src/algebra/strap/PI.lsp
new file mode 100644
index 00000000..bf877607
--- /dev/null
+++ b/src/algebra/strap/PI.lsp
@@ -0,0 +1,75 @@
+
+(/VERSIONCHECK 2)
+
+(SETQ |$CategoryFrame|
+ (|put| #0='|PositiveInteger| '|SuperDomain|
+ #1='(|NonNegativeInteger|)
+ (|put| #1# '|SubDomain|
+ (CONS '(|PositiveInteger| < 0 |#1|)
+ (DELASC #0#
+ (|get| #1# '|SubDomain|
+ |$CategoryFrame|)))
+ |$CategoryFrame|)))
+
+(DEFUN |PositiveInteger| ()
+ (PROG ()
+ (RETURN
+ (PROG (#0=#:G1396)
+ (RETURN
+ (COND
+ ((LETT #0# (HGET |$ConstructorCache| '|PositiveInteger|)
+ |PositiveInteger|)
+ (|CDRwithIncrement| (CDAR #0#)))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (CDDAR (HPUT |$ConstructorCache|
+ '|PositiveInteger|
+ (LIST
+ (CONS NIL
+ (CONS 1 (|PositiveInteger;|))))))
+ (LETT #0# T |PositiveInteger|))
+ (COND
+ ((NOT #0#)
+ (HREM |$ConstructorCache| '|PositiveInteger|)))))))))))
+
+(DEFUN |PositiveInteger;| ()
+ (PROG (|dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| '(|PositiveInteger|) . #0=(|PositiveInteger|))
+ (LETT $ (|newShell| 12) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|haddProp| |$ConstructorCache| '|PositiveInteger| NIL
+ (CONS 1 $))
+ (|stuffDomainSlots| $)
+ $))))
+
+(MAKEPROP '|PositiveInteger| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL (|NonNegativeInteger|)
+ (|PositiveInteger|) (|Boolean|) (|Union| $ '"failed")
+ (|SingleInteger|) (|String|) (|OutputForm|))
+ '#(~= 0 |sample| 6 |recip| 10 |one?| 15 |min| 20 |max| 26
+ |latex| 32 |hash| 37 |gcd| 42 |coerce| 48 ^ 53 |One| 65 >=
+ 69 > 75 = 81 <= 87 < 93 + 99 ** 105 * 117)
+ '(((|commutative| "*") . 0))
+ (CONS (|makeByteWordVec2| 1 '(0 0 0 0 0 0 0 0))
+ (CONS '#(NIL |Monoid&| |OrderedSet&| |SemiGroup&|
+ |AbelianSemiGroup&| |SetCategory&|
+ |BasicType&| NIL)
+ (CONS '#((|OrderedAbelianSemiGroup|) (|Monoid|)
+ (|OrderedSet|) (|SemiGroup|)
+ (|AbelianSemiGroup|) (|SetCategory|)
+ (|BasicType|) (|CoercibleTo| 11))
+ (|makeByteWordVec2| 11
+ '(2 0 7 0 0 1 0 0 0 1 1 0 8 0 1 1 0 7 0
+ 1 2 0 0 0 0 1 2 0 0 0 0 1 1 0 10 0 1
+ 1 0 9 0 1 2 0 0 0 0 1 1 0 11 0 1 2 0
+ 0 0 6 1 2 0 0 0 5 1 0 0 0 1 2 0 7 0 0
+ 1 2 0 7 0 0 1 2 0 7 0 0 1 2 0 7 0 0 1
+ 2 0 7 0 0 1 2 0 0 0 0 1 2 0 0 0 6 1 2
+ 0 0 0 5 1 2 0 0 0 0 1 2 0 0 6 0 1)))))
+ '|lookupComplete|))
+
+(MAKEPROP '|PositiveInteger| 'NILADIC T)
diff --git a/src/algebra/strap/POLYCAT-.lsp b/src/algebra/strap/POLYCAT-.lsp
new file mode 100644
index 00000000..557b4f8e
--- /dev/null
+++ b/src/algebra/strap/POLYCAT-.lsp
@@ -0,0 +1,1757 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |POLYCAT-;eval;SLS;1| (|p| |l| $)
+ (PROG (#0=#:G1427 #1=#:G1421 #2=#:G1428 #3=#:G1429 |lvar| #4=#:G1430
+ |e| #5=#:G1431)
+ (RETURN
+ (SEQ (COND
+ ((NULL |l|) |p|)
+ ('T
+ (SEQ (SEQ (EXIT (SEQ (LETT |e| NIL |POLYCAT-;eval;SLS;1|)
+ (LETT #0# |l| |POLYCAT-;eval;SLS;1|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |e| (CAR #0#)
+ |POLYCAT-;eval;SLS;1|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (COND
+ ((QEQCAR
+ (SPADCALL
+ (SPADCALL |e|
+ (|getShellEntry| $ 11))
+ (|getShellEntry| $ 13))
+ 1)
+ (PROGN
+ (LETT #1#
+ (|error|
+ "cannot find a variable to evaluate")
+ |POLYCAT-;eval;SLS;1|)
+ (GO #1#))))))
+ (LETT #0# (CDR #0#)
+ |POLYCAT-;eval;SLS;1|)
+ (GO G190) G191 (EXIT NIL)))
+ #1# (EXIT #1#))
+ (LETT |lvar|
+ (PROGN
+ (LETT #2# NIL |POLYCAT-;eval;SLS;1|)
+ (SEQ (LETT |e| NIL |POLYCAT-;eval;SLS;1|)
+ (LETT #3# |l| |POLYCAT-;eval;SLS;1|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |e| (CAR #3#)
+ |POLYCAT-;eval;SLS;1|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT
+ (LETT #2#
+ (CONS
+ (SPADCALL
+ (SPADCALL |e|
+ (|getShellEntry| $ 11))
+ (|getShellEntry| $ 14))
+ #2#)
+ |POLYCAT-;eval;SLS;1|)))
+ (LETT #3# (CDR #3#)
+ |POLYCAT-;eval;SLS;1|)
+ (GO G190) G191 (EXIT (NREVERSE0 #2#))))
+ |POLYCAT-;eval;SLS;1|)
+ (EXIT (SPADCALL |p| |lvar|
+ (PROGN
+ (LETT #4# NIL |POLYCAT-;eval;SLS;1|)
+ (SEQ (LETT |e| NIL
+ |POLYCAT-;eval;SLS;1|)
+ (LETT #5# |l|
+ |POLYCAT-;eval;SLS;1|)
+ G190
+ (COND
+ ((OR (ATOM #5#)
+ (PROGN
+ (LETT |e| (CAR #5#)
+ |POLYCAT-;eval;SLS;1|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #4#
+ (CONS
+ (SPADCALL |e|
+ (|getShellEntry| $ 15))
+ #4#)
+ |POLYCAT-;eval;SLS;1|)))
+ (LETT #5# (CDR #5#)
+ |POLYCAT-;eval;SLS;1|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #4#))))
+ (|getShellEntry| $ 18))))))))))
+
+(DEFUN |POLYCAT-;monomials;SL;2| (|p| $)
+ (PROG (|ml|)
+ (RETURN
+ (SEQ (LETT |ml| NIL |POLYCAT-;monomials;SL;2|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL |p| (|spadConstant| $ 22)
+ (|getShellEntry| $ 25)))
+ (GO G191)))
+ (SEQ (LETT |ml|
+ (CONS (SPADCALL |p| (|getShellEntry| $ 26))
+ |ml|)
+ |POLYCAT-;monomials;SL;2|)
+ (EXIT (LETT |p|
+ (SPADCALL |p| (|getShellEntry| $ 27))
+ |POLYCAT-;monomials;SL;2|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (REVERSE |ml|))))))
+
+(DEFUN |POLYCAT-;isPlus;SU;3| (|p| $)
+ (PROG (|l|)
+ (RETURN
+ (COND
+ ((NULL (CDR (LETT |l| (SPADCALL |p| (|getShellEntry| $ 29))
+ |POLYCAT-;isPlus;SU;3|)))
+ (CONS 1 "failed"))
+ ('T (CONS 0 |l|))))))
+
+(DEFUN |POLYCAT-;isTimes;SU;4| (|p| $)
+ (PROG (|lv| #0=#:G1453 |v| #1=#:G1454 |l| |r|)
+ (RETURN
+ (SEQ (COND
+ ((OR (NULL (LETT |lv|
+ (SPADCALL |p| (|getShellEntry| $ 32))
+ |POLYCAT-;isTimes;SU;4|))
+ (NULL (SPADCALL |p| (|getShellEntry| $ 33))))
+ (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |l|
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;isTimes;SU;4|)
+ (SEQ (LETT |v| NIL |POLYCAT-;isTimes;SU;4|)
+ (LETT #1# |lv| |POLYCAT-;isTimes;SU;4|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |v| (CAR #1#)
+ |POLYCAT-;isTimes;SU;4|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT
+ (LETT #0#
+ (CONS
+ (SPADCALL (|spadConstant| $ 34)
+ |v|
+ (SPADCALL |p| |v|
+ (|getShellEntry| $ 37))
+ (|getShellEntry| $ 38))
+ #0#)
+ |POLYCAT-;isTimes;SU;4|)))
+ (LETT #1# (CDR #1#)
+ |POLYCAT-;isTimes;SU;4|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ |POLYCAT-;isTimes;SU;4|)
+ (LETT |r| (SPADCALL |p| (|getShellEntry| $ 39))
+ |POLYCAT-;isTimes;SU;4|)
+ (EXIT (COND
+ ((SPADCALL |r| (|spadConstant| $ 35)
+ (|getShellEntry| $ 40))
+ (COND
+ ((NULL (CDR |lv|)) (CONS 1 "failed"))
+ ('T (CONS 0 |l|))))
+ ('T
+ (CONS 0
+ (CONS (SPADCALL |r|
+ (|getShellEntry| $ 41))
+ |l|))))))))))))
+
+(DEFUN |POLYCAT-;isExpt;SU;5| (|p| $)
+ (PROG (|u| |d|)
+ (RETURN
+ (SEQ (LETT |u| (SPADCALL |p| (|getShellEntry| $ 43))
+ |POLYCAT-;isExpt;SU;5|)
+ (EXIT (COND
+ ((OR (QEQCAR |u| 1)
+ (NULL (SPADCALL |p|
+ (SPADCALL (|spadConstant| $ 34)
+ (QCDR |u|)
+ (LETT |d|
+ (SPADCALL |p| (QCDR |u|)
+ (|getShellEntry| $ 37))
+ |POLYCAT-;isExpt;SU;5|)
+ (|getShellEntry| $ 38))
+ (|getShellEntry| $ 44))))
+ (CONS 1 "failed"))
+ ('T (CONS 0 (CONS (QCDR |u|) |d|)))))))))
+
+(DEFUN |POLYCAT-;coefficient;SVarSetNniS;6| (|p| |v| |n| $)
+ (SPADCALL (SPADCALL |p| |v| (|getShellEntry| $ 49)) |n|
+ (|getShellEntry| $ 51)))
+
+(DEFUN |POLYCAT-;coefficient;SLLS;7| (|p| |lv| |ln| $)
+ (COND
+ ((NULL |lv|)
+ (COND
+ ((NULL |ln|) |p|)
+ ('T (|error| "mismatched lists in coefficient"))))
+ ((NULL |ln|) (|error| "mismatched lists in coefficient"))
+ ('T
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |p| (|SPADfirst| |lv|) (|getShellEntry| $ 49))
+ (|SPADfirst| |ln|) (|getShellEntry| $ 51))
+ (CDR |lv|) (CDR |ln|) (|getShellEntry| $ 54)))))
+
+(DEFUN |POLYCAT-;monomial;SLLS;8| (|p| |lv| |ln| $)
+ (COND
+ ((NULL |lv|)
+ (COND
+ ((NULL |ln|) |p|)
+ ('T (|error| "mismatched lists in monomial"))))
+ ((NULL |ln|) (|error| "mismatched lists in monomial"))
+ ('T
+ (SPADCALL
+ (SPADCALL |p| (|SPADfirst| |lv|) (|SPADfirst| |ln|)
+ (|getShellEntry| $ 38))
+ (CDR |lv|) (CDR |ln|) (|getShellEntry| $ 56)))))
+
+(DEFUN |POLYCAT-;retract;SVarSet;9| (|p| $)
+ (PROG (#0=#:G1479 |q|)
+ (RETURN
+ (SEQ (LETT |q|
+ (PROG2 (LETT #0# (SPADCALL |p| (|getShellEntry| $ 43))
+ |POLYCAT-;retract;SVarSet;9|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (|getShellEntry| $ 9)
+ #0#))
+ |POLYCAT-;retract;SVarSet;9|)
+ (EXIT (COND
+ ((SPADCALL (SPADCALL |q| (|getShellEntry| $ 58)) |p|
+ (|getShellEntry| $ 44))
+ |q|)
+ ('T (|error| "Polynomial is not a single variable"))))))))
+
+(DEFUN |POLYCAT-;retractIfCan;SU;10| (|p| $)
+ (PROG (|q| #0=#:G1487)
+ (RETURN
+ (SEQ (EXIT (SEQ (SEQ (LETT |q|
+ (SPADCALL |p| (|getShellEntry| $ 43))
+ |POLYCAT-;retractIfCan;SU;10|)
+ (EXIT (COND
+ ((QEQCAR |q| 0)
+ (COND
+ ((SPADCALL
+ (SPADCALL (QCDR |q|)
+ (|getShellEntry| $ 58))
+ |p| (|getShellEntry| $ 44))
+ (PROGN
+ (LETT #0# |q|
+ |POLYCAT-;retractIfCan;SU;10|)
+ (GO #0#))))))))
+ (EXIT (CONS 1 "failed"))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |POLYCAT-;mkPrim| (|p| $)
+ (SPADCALL (|spadConstant| $ 35) (SPADCALL |p| (|getShellEntry| $ 61))
+ (|getShellEntry| $ 62)))
+
+(DEFUN |POLYCAT-;primitiveMonomials;SL;12| (|p| $)
+ (PROG (#0=#:G1492 |q| #1=#:G1493)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #0# NIL |POLYCAT-;primitiveMonomials;SL;12|)
+ (SEQ (LETT |q| NIL |POLYCAT-;primitiveMonomials;SL;12|)
+ (LETT #1# (SPADCALL |p| (|getShellEntry| $ 29))
+ |POLYCAT-;primitiveMonomials;SL;12|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |q| (CAR #1#)
+ |POLYCAT-;primitiveMonomials;SL;12|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS (|POLYCAT-;mkPrim| |q| $) #0#)
+ |POLYCAT-;primitiveMonomials;SL;12|)))
+ (LETT #1# (CDR #1#)
+ |POLYCAT-;primitiveMonomials;SL;12|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))))))
+
+(DEFUN |POLYCAT-;totalDegree;SNni;13| (|p| $)
+ (PROG (#0=#:G1495 |d| |u|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |p| (|getShellEntry| $ 64)) 0)
+ ('T
+ (SEQ (LETT |u|
+ (SPADCALL |p|
+ (PROG2 (LETT #0#
+ (SPADCALL |p|
+ (|getShellEntry| $ 43))
+ |POLYCAT-;totalDegree;SNni;13|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 9) #0#))
+ (|getShellEntry| $ 49))
+ |POLYCAT-;totalDegree;SNni;13|)
+ (LETT |d| 0 |POLYCAT-;totalDegree;SNni;13|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL |u| (|spadConstant| $ 65)
+ (|getShellEntry| $ 66)))
+ (GO G191)))
+ (SEQ (LETT |d|
+ (MAX |d|
+ (+
+ (SPADCALL |u|
+ (|getShellEntry| $ 67))
+ (SPADCALL
+ (SPADCALL |u|
+ (|getShellEntry| $ 68))
+ (|getShellEntry| $ 69))))
+ |POLYCAT-;totalDegree;SNni;13|)
+ (EXIT (LETT |u|
+ (SPADCALL |u|
+ (|getShellEntry| $ 70))
+ |POLYCAT-;totalDegree;SNni;13|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |d|))))))))
+
+(DEFUN |POLYCAT-;totalDegree;SLNni;14| (|p| |lv| $)
+ (PROG (#0=#:G1503 |v| |w| |d| |u|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |p| (|getShellEntry| $ 64)) 0)
+ ('T
+ (SEQ (LETT |u|
+ (SPADCALL |p|
+ (LETT |v|
+ (PROG2
+ (LETT #0#
+ (SPADCALL |p|
+ (|getShellEntry| $ 43))
+ |POLYCAT-;totalDegree;SLNni;14|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 9) #0#))
+ |POLYCAT-;totalDegree;SLNni;14|)
+ (|getShellEntry| $ 49))
+ |POLYCAT-;totalDegree;SLNni;14|)
+ (LETT |d| 0 |POLYCAT-;totalDegree;SLNni;14|)
+ (LETT |w| 0 |POLYCAT-;totalDegree;SLNni;14|)
+ (COND
+ ((SPADCALL |v| |lv| (|getShellEntry| $ 72))
+ (LETT |w| 1 |POLYCAT-;totalDegree;SLNni;14|)))
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL |u| (|spadConstant| $ 65)
+ (|getShellEntry| $ 66)))
+ (GO G191)))
+ (SEQ (LETT |d|
+ (MAX |d|
+ (+
+ (* |w|
+ (SPADCALL |u|
+ (|getShellEntry| $ 67)))
+ (SPADCALL
+ (SPADCALL |u|
+ (|getShellEntry| $ 68))
+ |lv| (|getShellEntry| $ 73))))
+ |POLYCAT-;totalDegree;SLNni;14|)
+ (EXIT (LETT |u|
+ (SPADCALL |u|
+ (|getShellEntry| $ 70))
+ |POLYCAT-;totalDegree;SLNni;14|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |d|))))))))
+
+(DEFUN |POLYCAT-;resultant;2SVarSetS;15| (|p1| |p2| |mvar| $)
+ (SPADCALL (SPADCALL |p1| |mvar| (|getShellEntry| $ 49))
+ (SPADCALL |p2| |mvar| (|getShellEntry| $ 49))
+ (|getShellEntry| $ 75)))
+
+(DEFUN |POLYCAT-;discriminant;SVarSetS;16| (|p| |var| $)
+ (SPADCALL (SPADCALL |p| |var| (|getShellEntry| $ 49))
+ (|getShellEntry| $ 77)))
+
+(DEFUN |POLYCAT-;allMonoms| (|l| $)
+ (PROG (#0=#:G1515 |p| #1=#:G1516)
+ (RETURN
+ (SEQ (SPADCALL
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;allMonoms|)
+ (SEQ (LETT |p| NIL |POLYCAT-;allMonoms|)
+ (LETT #1# |l| |POLYCAT-;allMonoms|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |p| (CAR #1#)
+ |POLYCAT-;allMonoms|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |p|
+ (|getShellEntry| $ 79))
+ #0#)
+ |POLYCAT-;allMonoms|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;allMonoms|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 81))
+ (|getShellEntry| $ 82))))))
+
+(DEFUN |POLYCAT-;P2R| (|p| |b| |n| $)
+ (PROG (|w| |bj| #0=#:G1521 |i| #1=#:G1520)
+ (RETURN
+ (SEQ (LETT |w|
+ (SPADCALL |n| (|spadConstant| $ 23)
+ (|getShellEntry| $ 84))
+ |POLYCAT-;P2R|)
+ (SEQ (LETT |bj| NIL |POLYCAT-;P2R|)
+ (LETT #0# |b| |POLYCAT-;P2R|)
+ (LETT |i| (SPADCALL |w| (|getShellEntry| $ 86))
+ |POLYCAT-;P2R|)
+ (LETT #1# (QVSIZE |w|) |POLYCAT-;P2R|) G190
+ (COND
+ ((OR (> |i| #1#) (ATOM #0#)
+ (PROGN
+ (LETT |bj| (CAR #0#) |POLYCAT-;P2R|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (SPADCALL |w| |i|
+ (SPADCALL |p| |bj|
+ (|getShellEntry| $ 87))
+ (|getShellEntry| $ 88))))
+ (LETT |i|
+ (PROG1 (+ |i| 1)
+ (LETT #0# (CDR #0#) |POLYCAT-;P2R|))
+ |POLYCAT-;P2R|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |w|)))))
+
+(DEFUN |POLYCAT-;eq2R| (|l| |b| $)
+ (PROG (#0=#:G1525 |bj| #1=#:G1526 #2=#:G1527 |p| #3=#:G1528)
+ (RETURN
+ (SEQ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |POLYCAT-;eq2R|)
+ (SEQ (LETT |bj| NIL |POLYCAT-;eq2R|)
+ (LETT #1# |b| |POLYCAT-;eq2R|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |bj| (CAR #1#) |POLYCAT-;eq2R|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (PROGN
+ (LETT #2# NIL
+ |POLYCAT-;eq2R|)
+ (SEQ
+ (LETT |p| NIL
+ |POLYCAT-;eq2R|)
+ (LETT #3# |l|
+ |POLYCAT-;eq2R|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |p| (CAR #3#)
+ |POLYCAT-;eq2R|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS
+ (SPADCALL |p| |bj|
+ (|getShellEntry| $ 87))
+ #2#)
+ |POLYCAT-;eq2R|)))
+ (LETT #3# (CDR #3#)
+ |POLYCAT-;eq2R|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #2#))))
+ #0#)
+ |POLYCAT-;eq2R|)))
+ (LETT #1# (CDR #1#) |POLYCAT-;eq2R|) (GO G190)
+ G191 (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 92))))))
+
+(DEFUN |POLYCAT-;reducedSystem;MM;20| (|m| $)
+ (PROG (#0=#:G1537 |r| #1=#:G1538 |b| #2=#:G1539 |bj| #3=#:G1540 |d|
+ |mm| |l|)
+ (RETURN
+ (SEQ (LETT |l| (SPADCALL |m| (|getShellEntry| $ 95))
+ |POLYCAT-;reducedSystem;MM;20|)
+ (LETT |b|
+ (SPADCALL
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL
+ |POLYCAT-;reducedSystem;MM;20|)
+ (SEQ (LETT |r| NIL
+ |POLYCAT-;reducedSystem;MM;20|)
+ (LETT #1# |l|
+ |POLYCAT-;reducedSystem;MM;20|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |r| (CAR #1#)
+ |POLYCAT-;reducedSystem;MM;20|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT
+ (LETT #0#
+ (CONS
+ (|POLYCAT-;allMonoms| |r| $)
+ #0#)
+ |POLYCAT-;reducedSystem;MM;20|)))
+ (LETT #1# (CDR #1#)
+ |POLYCAT-;reducedSystem;MM;20|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 81))
+ (|getShellEntry| $ 82))
+ |POLYCAT-;reducedSystem;MM;20|)
+ (LETT |d|
+ (PROGN
+ (LETT #2# NIL |POLYCAT-;reducedSystem;MM;20|)
+ (SEQ (LETT |bj| NIL |POLYCAT-;reducedSystem;MM;20|)
+ (LETT #3# |b| |POLYCAT-;reducedSystem;MM;20|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |bj| (CAR #3#)
+ |POLYCAT-;reducedSystem;MM;20|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #2#
+ (CONS
+ (SPADCALL |bj|
+ (|getShellEntry| $ 61))
+ #2#)
+ |POLYCAT-;reducedSystem;MM;20|)))
+ (LETT #3# (CDR #3#)
+ |POLYCAT-;reducedSystem;MM;20|)
+ (GO G190) G191 (EXIT (NREVERSE0 #2#))))
+ |POLYCAT-;reducedSystem;MM;20|)
+ (LETT |mm| (|POLYCAT-;eq2R| (|SPADfirst| |l|) |d| $)
+ |POLYCAT-;reducedSystem;MM;20|)
+ (LETT |l| (CDR |l|) |POLYCAT-;reducedSystem;MM;20|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |l|) (|getShellEntry| $ 96)))
+ (GO G191)))
+ (SEQ (LETT |mm|
+ (SPADCALL |mm|
+ (|POLYCAT-;eq2R| (|SPADfirst| |l|) |d|
+ $)
+ (|getShellEntry| $ 97))
+ |POLYCAT-;reducedSystem;MM;20|)
+ (EXIT (LETT |l| (CDR |l|)
+ |POLYCAT-;reducedSystem;MM;20|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |mm|)))))
+
+(DEFUN |POLYCAT-;reducedSystem;MVR;21| (|m| |v| $)
+ (PROG (#0=#:G1551 |s| #1=#:G1552 |b| #2=#:G1553 |bj| #3=#:G1554 |d|
+ |n| |mm| |w| |l| |r|)
+ (RETURN
+ (SEQ (LETT |l| (SPADCALL |m| (|getShellEntry| $ 95))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |r| (SPADCALL |v| (|getShellEntry| $ 101))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |b|
+ (SPADCALL
+ (SPADCALL (|POLYCAT-;allMonoms| |r| $)
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (SEQ (LETT |s| NIL
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT #1# |l|
+ |POLYCAT-;reducedSystem;MVR;21|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |s| (CAR #1#)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS
+ (|POLYCAT-;allMonoms| |s| $)
+ #0#)
+ |POLYCAT-;reducedSystem;MVR;21|)))
+ (LETT #1# (CDR #1#)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 81))
+ (|getShellEntry| $ 102))
+ (|getShellEntry| $ 82))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |d|
+ (PROGN
+ (LETT #2# NIL |POLYCAT-;reducedSystem;MVR;21|)
+ (SEQ (LETT |bj| NIL |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT #3# |b| |POLYCAT-;reducedSystem;MVR;21|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |bj| (CAR #3#)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #2#
+ (CONS
+ (SPADCALL |bj|
+ (|getShellEntry| $ 61))
+ #2#)
+ |POLYCAT-;reducedSystem;MVR;21|)))
+ (LETT #3# (CDR #3#)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (GO G190) G191 (EXIT (NREVERSE0 #2#))))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |n| (LENGTH |d|) |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |mm| (|POLYCAT-;eq2R| (|SPADfirst| |l|) |d| $)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |w| (|POLYCAT-;P2R| (|SPADfirst| |r|) |d| |n| $)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |l| (CDR |l|) |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |r| (CDR |r|) |POLYCAT-;reducedSystem;MVR;21|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |l|) (|getShellEntry| $ 96)))
+ (GO G191)))
+ (SEQ (LETT |mm|
+ (SPADCALL |mm|
+ (|POLYCAT-;eq2R| (|SPADfirst| |l|) |d|
+ $)
+ (|getShellEntry| $ 97))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |w|
+ (SPADCALL |w|
+ (|POLYCAT-;P2R| (|SPADfirst| |r|) |d|
+ |n| $)
+ (|getShellEntry| $ 103))
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (LETT |l| (CDR |l|)
+ |POLYCAT-;reducedSystem;MVR;21|)
+ (EXIT (LETT |r| (CDR |r|)
+ |POLYCAT-;reducedSystem;MVR;21|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (CONS |mm| |w|))))))
+
+(DEFUN |POLYCAT-;gcdPolynomial;3Sup;22| (|pp| |qq| $)
+ (SPADCALL |pp| |qq| (|getShellEntry| $ 108)))
+
+(DEFUN |POLYCAT-;solveLinearPolynomialEquation;LSupU;23| (|lpp| |pp| $)
+ (SPADCALL |lpp| |pp| (|getShellEntry| $ 113)))
+
+(DEFUN |POLYCAT-;factorPolynomial;SupF;24| (|pp| $)
+ (SPADCALL |pp| (|getShellEntry| $ 118)))
+
+(DEFUN |POLYCAT-;factorSquareFreePolynomial;SupF;25| (|pp| $)
+ (SPADCALL |pp| (|getShellEntry| $ 121)))
+
+(DEFUN |POLYCAT-;factor;SF;26| (|p| $)
+ (PROG (|v| |ansR| #0=#:G1596 |w| #1=#:G1597 |up| |ansSUP| #2=#:G1598
+ |ww| #3=#:G1599)
+ (RETURN
+ (SEQ (LETT |v| (SPADCALL |p| (|getShellEntry| $ 43))
+ |POLYCAT-;factor;SF;26|)
+ (EXIT (COND
+ ((QEQCAR |v| 1)
+ (SEQ (LETT |ansR|
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 39))
+ (|getShellEntry| $ 124))
+ |POLYCAT-;factor;SF;26|)
+ (EXIT (SPADCALL
+ (SPADCALL
+ (SPADCALL |ansR|
+ (|getShellEntry| $ 126))
+ (|getShellEntry| $ 41))
+ (PROGN
+ (LETT #0# NIL
+ |POLYCAT-;factor;SF;26|)
+ (SEQ
+ (LETT |w| NIL
+ |POLYCAT-;factor;SF;26|)
+ (LETT #1#
+ (SPADCALL |ansR|
+ (|getShellEntry| $ 130))
+ |POLYCAT-;factor;SF;26|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |w| (CAR #1#)
+ |POLYCAT-;factor;SF;26|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS
+ (VECTOR (QVELT |w| 0)
+ (SPADCALL (QVELT |w| 1)
+ (|getShellEntry| $ 41))
+ (QVELT |w| 2))
+ #0#)
+ |POLYCAT-;factor;SF;26|)))
+ (LETT #1# (CDR #1#)
+ |POLYCAT-;factor;SF;26|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 134)))))
+ ('T
+ (SEQ (LETT |up|
+ (SPADCALL |p| (QCDR |v|)
+ (|getShellEntry| $ 49))
+ |POLYCAT-;factor;SF;26|)
+ (LETT |ansSUP|
+ (SPADCALL |up| (|getShellEntry| $ 118))
+ |POLYCAT-;factor;SF;26|)
+ (EXIT (SPADCALL
+ (SPADCALL
+ (SPADCALL |ansSUP|
+ (|getShellEntry| $ 135))
+ (QCDR |v|) (|getShellEntry| $ 136))
+ (PROGN
+ (LETT #2# NIL
+ |POLYCAT-;factor;SF;26|)
+ (SEQ
+ (LETT |ww| NIL
+ |POLYCAT-;factor;SF;26|)
+ (LETT #3#
+ (SPADCALL |ansSUP|
+ (|getShellEntry| $ 139))
+ |POLYCAT-;factor;SF;26|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |ww| (CAR #3#)
+ |POLYCAT-;factor;SF;26|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS
+ (VECTOR (QVELT |ww| 0)
+ (SPADCALL (QVELT |ww| 1)
+ (QCDR |v|)
+ (|getShellEntry| $ 136))
+ (QVELT |ww| 2))
+ #2#)
+ |POLYCAT-;factor;SF;26|)))
+ (LETT #3# (CDR #3#)
+ |POLYCAT-;factor;SF;26|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #2#))))
+ (|getShellEntry| $ 134)))))))))))
+
+(DEFUN |POLYCAT-;conditionP;MU;27| (|mat| $)
+ (PROG (|ll| #0=#:G1634 |z| #1=#:G1635 |ch| |l| #2=#:G1636 #3=#:G1637
+ #4=#:G1606 #5=#:G1604 #6=#:G1605 #7=#:G1638 |vars| |degs|
+ #8=#:G1639 |d| #9=#:G1640 |nd| #10=#:G1633 #11=#:G1613
+ |deg1| |redmons| #12=#:G1641 |v| #13=#:G1643 |u|
+ #14=#:G1642 |llR| |monslist| |ans| #15=#:G1644
+ #16=#:G1645 |mons| #17=#:G1646 |m| #18=#:G1647 |i|
+ #19=#:G1629 #20=#:G1627 #21=#:G1628)
+ (RETURN
+ (SEQ (EXIT (SEQ (LETT |ll|
+ (SPADCALL
+ (SPADCALL |mat|
+ (|getShellEntry| $ 141))
+ (|getShellEntry| $ 95))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |llR|
+ (PROGN
+ (LETT #0# NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ (LETT |z| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #1# (|SPADfirst| |ll|)
+ |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |z| (CAR #1#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0# (CONS NIL #0#)
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #1# (CDR #1#)
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #0#))))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |monslist| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT |ch| (SPADCALL (|getShellEntry| $ 142))
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ (LETT |l| NIL |POLYCAT-;conditionP;MU;27|)
+ (LETT #2# |ll| |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #2#)
+ (PROGN
+ (LETT |l| (CAR #2#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ (LETT |mons|
+ (PROGN
+ (LETT #6# NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |u| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #3# |l|
+ |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |u| (CAR #3#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (PROGN
+ (LETT #4#
+ (SPADCALL |u|
+ (|getShellEntry| $ 79))
+ |POLYCAT-;conditionP;MU;27|)
+ (COND
+ (#6#
+ (LETT #5#
+ (SPADCALL #5# #4#
+ (|getShellEntry| $
+ 143))
+ |POLYCAT-;conditionP;MU;27|))
+ ('T
+ (PROGN
+ (LETT #5# #4#
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #6# 'T
+ |POLYCAT-;conditionP;MU;27|)))))))
+ (LETT #3# (CDR #3#)
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190) G191 (EXIT NIL))
+ (COND
+ (#6# #5#)
+ ('T
+ (|IdentityError|
+ '|setUnion|))))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |redmons| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ (LETT |m| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #7# |mons|
+ |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #7#)
+ (PROGN
+ (LETT |m| (CAR #7#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (LETT |vars|
+ (SPADCALL |m|
+ (|getShellEntry| $ 32))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |degs|
+ (SPADCALL |m| |vars|
+ (|getShellEntry| $ 144))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |deg1|
+ (PROGN
+ (LETT #8# NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |d| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #9# |degs|
+ |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #9#)
+ (PROGN
+ (LETT |d| (CAR #9#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #8#
+ (CONS
+ (SEQ
+ (LETT |nd|
+ (SPADCALL |d| |ch|
+ (|getShellEntry| $
+ 146))
+ |POLYCAT-;conditionP;MU;27|)
+ (EXIT
+ (COND
+ ((QEQCAR |nd| 1)
+ (PROGN
+ (LETT #10#
+ (CONS 1 "failed")
+ |POLYCAT-;conditionP;MU;27|)
+ (GO #10#)))
+ ('T
+ (PROG1
+ (LETT #11#
+ (QCDR |nd|)
+ |POLYCAT-;conditionP;MU;27|)
+ (|check-subtype|
+ (>= #11# 0)
+ '(|NonNegativeInteger|)
+ #11#))))))
+ #8#)
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #9# (CDR #9#)
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #8#))))
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |redmons|
+ (CONS
+ (SPADCALL (|spadConstant| $ 34)
+ |vars| |deg1|
+ (|getShellEntry| $ 56))
+ |redmons|)
+ |POLYCAT-;conditionP;MU;27|)
+ (EXIT
+ (LETT |llR|
+ (PROGN
+ (LETT #12# NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |v| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #13# |llR|
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |u| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #14# |l|
+ |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #14#)
+ (PROGN
+ (LETT |u| (CAR #14#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL)
+ (ATOM #13#)
+ (PROGN
+ (LETT |v| (CAR #13#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #12#
+ (CONS
+ (CONS
+ (SPADCALL
+ (SPADCALL |u| |vars|
+ |degs|
+ (|getShellEntry| $
+ 54))
+ (|getShellEntry| $
+ 147))
+ |v|)
+ #12#)
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #14#
+ (PROG1 (CDR #14#)
+ (LETT #13# (CDR #13#)
+ |POLYCAT-;conditionP;MU;27|))
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #12#))))
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #7# (CDR #7#)
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (LETT |monslist|
+ (CONS |redmons| |monslist|)
+ |POLYCAT-;conditionP;MU;27|)))
+ (LETT #2# (CDR #2#)
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190) G191 (EXIT NIL))
+ (LETT |ans|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |llR|
+ (|getShellEntry| $ 92))
+ (|getShellEntry| $ 148))
+ (|getShellEntry| $ 150))
+ |POLYCAT-;conditionP;MU;27|)
+ (EXIT (COND
+ ((QEQCAR |ans| 1) (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |i| 0
+ |POLYCAT-;conditionP;MU;27|)
+ (EXIT
+ (CONS 0
+ (PRIMVEC2ARR
+ (PROGN
+ (LETT #15#
+ (GETREFV (SIZE |monslist|))
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT #16# 0
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT |mons| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #17# |monslist|
+ |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #17#)
+ (PROGN
+ (LETT |mons| (CAR #17#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (SETELT #15# #16#
+ (PROGN
+ (LETT #21# NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (SEQ
+ (LETT |m| NIL
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #18# |mons|
+ |POLYCAT-;conditionP;MU;27|)
+ G190
+ (COND
+ ((OR (ATOM #18#)
+ (PROGN
+ (LETT |m|
+ (CAR #18#)
+ |POLYCAT-;conditionP;MU;27|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (PROGN
+ (LETT #19#
+ (SPADCALL |m|
+ (SPADCALL
+ (SPADCALL
+ (QCDR |ans|)
+ (LETT |i|
+ (+ |i| 1)
+ |POLYCAT-;conditionP;MU;27|)
+ (|getShellEntry|
+ $ 151))
+ (|getShellEntry|
+ $ 41))
+ (|getShellEntry|
+ $ 152))
+ |POLYCAT-;conditionP;MU;27|)
+ (COND
+ (#21#
+ (LETT #20#
+ (SPADCALL #20#
+ #19#
+ (|getShellEntry|
+ $ 153))
+ |POLYCAT-;conditionP;MU;27|))
+ ('T
+ (PROGN
+ (LETT #20#
+ #19#
+ |POLYCAT-;conditionP;MU;27|)
+ (LETT #21# 'T
+ |POLYCAT-;conditionP;MU;27|)))))))
+ (LETT #18# (CDR #18#)
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190) G191
+ (EXIT NIL))
+ (COND
+ (#21# #20#)
+ ('T
+ (|spadConstant| $ 22)))))))
+ (LETT #17#
+ (PROG1 (CDR #17#)
+ (LETT #16# (QSADD1 #16#)
+ |POLYCAT-;conditionP;MU;27|))
+ |POLYCAT-;conditionP;MU;27|)
+ (GO G190) G191 (EXIT NIL))
+ #15#))))))))))
+ #10# (EXIT #10#)))))
+
+(DEFUN |POLYCAT-;charthRoot;SU;28| (|p| $)
+ (PROG (|vars| |ans| |ch|)
+ (RETURN
+ (SEQ (LETT |vars| (SPADCALL |p| (|getShellEntry| $ 32))
+ |POLYCAT-;charthRoot;SU;28|)
+ (EXIT (COND
+ ((NULL |vars|)
+ (SEQ (LETT |ans|
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 147))
+ (|getShellEntry| $ 155))
+ |POLYCAT-;charthRoot;SU;28|)
+ (EXIT (COND
+ ((QEQCAR |ans| 1) (CONS 1 "failed"))
+ ('T
+ (CONS 0
+ (SPADCALL (QCDR |ans|)
+ (|getShellEntry| $ 41))))))))
+ ('T
+ (SEQ (LETT |ch| (SPADCALL (|getShellEntry| $ 142))
+ |POLYCAT-;charthRoot;SU;28|)
+ (EXIT (|POLYCAT-;charthRootlv| |p| |vars| |ch|
+ $))))))))))
+
+(DEFUN |POLYCAT-;charthRootlv| (|p| |vars| |ch| $)
+ (PROG (|v| |dd| |cp| |d| #0=#:G1668 |ans| |ansx| #1=#:G1675)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((NULL |vars|)
+ (SEQ (LETT |ans|
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 147))
+ (|getShellEntry| $ 155))
+ |POLYCAT-;charthRootlv|)
+ (EXIT (COND
+ ((QEQCAR |ans| 1) (CONS 1 "failed"))
+ ('T
+ (CONS 0
+ (SPADCALL (QCDR |ans|)
+ (|getShellEntry| $ 41))))))))
+ ('T
+ (SEQ (LETT |v| (|SPADfirst| |vars|)
+ |POLYCAT-;charthRootlv|)
+ (LETT |vars| (CDR |vars|)
+ |POLYCAT-;charthRootlv|)
+ (LETT |d|
+ (SPADCALL |p| |v|
+ (|getShellEntry| $ 37))
+ |POLYCAT-;charthRootlv|)
+ (LETT |ans| (|spadConstant| $ 22)
+ |POLYCAT-;charthRootlv|)
+ (SEQ G190 (COND ((NULL (< 0 |d|)) (GO G191)))
+ (SEQ (LETT |dd|
+ (SPADCALL |d| |ch|
+ (|getShellEntry| $ 146))
+ |POLYCAT-;charthRootlv|)
+ (EXIT
+ (COND
+ ((QEQCAR |dd| 1)
+ (PROGN
+ (LETT #1# (CONS 1 "failed")
+ |POLYCAT-;charthRootlv|)
+ (GO #1#)))
+ ('T
+ (SEQ
+ (LETT |cp|
+ (SPADCALL |p| |v| |d|
+ (|getShellEntry| $ 158))
+ |POLYCAT-;charthRootlv|)
+ (LETT |p|
+ (SPADCALL |p|
+ (SPADCALL |cp| |v| |d|
+ (|getShellEntry| $ 38))
+ (|getShellEntry| $ 159))
+ |POLYCAT-;charthRootlv|)
+ (LETT |ansx|
+ (|POLYCAT-;charthRootlv| |cp|
+ |vars| |ch| $)
+ |POLYCAT-;charthRootlv|)
+ (EXIT
+ (COND
+ ((QEQCAR |ansx| 1)
+ (PROGN
+ (LETT #1#
+ (CONS 1 "failed")
+ |POLYCAT-;charthRootlv|)
+ (GO #1#)))
+ ('T
+ (SEQ
+ (LETT |d|
+ (SPADCALL |p| |v|
+ (|getShellEntry| $ 37))
+ |POLYCAT-;charthRootlv|)
+ (EXIT
+ (LETT |ans|
+ (SPADCALL |ans|
+ (SPADCALL (QCDR |ansx|)
+ |v|
+ (PROG1
+ (LETT #0# (QCDR |dd|)
+ |POLYCAT-;charthRootlv|)
+ (|check-subtype|
+ (>= #0# 0)
+ '(|NonNegativeInteger|)
+ #0#))
+ (|getShellEntry| $ 38))
+ (|getShellEntry| $ 153))
+ |POLYCAT-;charthRootlv|)))))))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |ansx|
+ (|POLYCAT-;charthRootlv| |p| |vars| |ch|
+ $)
+ |POLYCAT-;charthRootlv|)
+ (EXIT (COND
+ ((QEQCAR |ansx| 1)
+ (PROGN
+ (LETT #1# (CONS 1 "failed")
+ |POLYCAT-;charthRootlv|)
+ (GO #1#)))
+ ('T
+ (PROGN
+ (LETT #1#
+ (CONS 0
+ (SPADCALL |ans| (QCDR |ansx|)
+ (|getShellEntry| $ 153)))
+ |POLYCAT-;charthRootlv|)
+ (GO #1#)))))))))
+ #1# (EXIT #1#)))))
+
+(DEFUN |POLYCAT-;monicDivide;2SVarSetR;30| (|p1| |p2| |mvar| $)
+ (PROG (|result|)
+ (RETURN
+ (SEQ (LETT |result|
+ (SPADCALL
+ (SPADCALL |p1| |mvar| (|getShellEntry| $ 49))
+ (SPADCALL |p2| |mvar| (|getShellEntry| $ 49))
+ (|getShellEntry| $ 161))
+ |POLYCAT-;monicDivide;2SVarSetR;30|)
+ (EXIT (CONS (SPADCALL (QCAR |result|) |mvar|
+ (|getShellEntry| $ 136))
+ (SPADCALL (QCDR |result|) |mvar|
+ (|getShellEntry| $ 136))))))))
+
+(DEFUN |POLYCAT-;squareFree;SF;31| (|p| $)
+ (SPADCALL |p| (|getShellEntry| $ 164)))
+
+(DEFUN |POLYCAT-;squareFree;SF;32| (|p| $)
+ (SPADCALL |p| (|getShellEntry| $ 167)))
+
+(DEFUN |POLYCAT-;squareFree;SF;33| (|p| $)
+ (SPADCALL |p| (|getShellEntry| $ 167)))
+
+(DEFUN |POLYCAT-;squareFreePart;2S;34| (|p| $)
+ (PROG (|s| |f| #0=#:G1691 #1=#:G1689 #2=#:G1687 #3=#:G1688)
+ (RETURN
+ (SEQ (SPADCALL
+ (SPADCALL
+ (LETT |s| (SPADCALL |p| (|getShellEntry| $ 168))
+ |POLYCAT-;squareFreePart;2S;34|)
+ (|getShellEntry| $ 169))
+ (PROGN
+ (LETT #3# NIL |POLYCAT-;squareFreePart;2S;34|)
+ (SEQ (LETT |f| NIL |POLYCAT-;squareFreePart;2S;34|)
+ (LETT #0# (SPADCALL |s| (|getShellEntry| $ 172))
+ |POLYCAT-;squareFreePart;2S;34|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |f| (CAR #0#)
+ |POLYCAT-;squareFreePart;2S;34|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (PROGN
+ (LETT #1# (QCAR |f|)
+ |POLYCAT-;squareFreePart;2S;34|)
+ (COND
+ (#3#
+ (LETT #2#
+ (SPADCALL #2# #1#
+ (|getShellEntry| $ 152))
+ |POLYCAT-;squareFreePart;2S;34|))
+ ('T
+ (PROGN
+ (LETT #2# #1#
+ |POLYCAT-;squareFreePart;2S;34|)
+ (LETT #3# 'T
+ |POLYCAT-;squareFreePart;2S;34|)))))))
+ (LETT #0# (CDR #0#)
+ |POLYCAT-;squareFreePart;2S;34|)
+ (GO G190) G191 (EXIT NIL))
+ (COND (#3# #2#) ('T (|spadConstant| $ 34))))
+ (|getShellEntry| $ 152))))))
+
+(DEFUN |POLYCAT-;content;SVarSetS;35| (|p| |v| $)
+ (SPADCALL (SPADCALL |p| |v| (|getShellEntry| $ 49))
+ (|getShellEntry| $ 174)))
+
+(DEFUN |POLYCAT-;primitivePart;2S;36| (|p| $)
+ (PROG (#0=#:G1694)
+ (RETURN
+ (QVELT (SPADCALL
+ (PROG2 (LETT #0#
+ (SPADCALL |p|
+ (SPADCALL |p|
+ (|getShellEntry| $ 176))
+ (|getShellEntry| $ 177))
+ |POLYCAT-;primitivePart;2S;36|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (|getShellEntry| $ 6)
+ #0#))
+ (|getShellEntry| $ 179))
+ 1))))
+
+(DEFUN |POLYCAT-;primitivePart;SVarSetS;37| (|p| |v| $)
+ (PROG (#0=#:G1700)
+ (RETURN
+ (QVELT (SPADCALL
+ (PROG2 (LETT #0#
+ (SPADCALL |p|
+ (SPADCALL |p| |v|
+ (|getShellEntry| $ 181))
+ (|getShellEntry| $ 182))
+ |POLYCAT-;primitivePart;SVarSetS;37|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (|getShellEntry| $ 6)
+ #0#))
+ (|getShellEntry| $ 179))
+ 1))))
+
+(DEFUN |POLYCAT-;<;2SB;38| (|p| |q| $)
+ (PROG (|dp| |dq|)
+ (RETURN
+ (SEQ (LETT |dp| (SPADCALL |p| (|getShellEntry| $ 61))
+ |POLYCAT-;<;2SB;38|)
+ (LETT |dq| (SPADCALL |q| (|getShellEntry| $ 61))
+ |POLYCAT-;<;2SB;38|)
+ (EXIT (COND
+ ((SPADCALL |dp| |dq| (|getShellEntry| $ 184))
+ (SPADCALL (|spadConstant| $ 23)
+ (SPADCALL |q| (|getShellEntry| $ 39))
+ (|getShellEntry| $ 185)))
+ ((SPADCALL |dq| |dp| (|getShellEntry| $ 184))
+ (SPADCALL (SPADCALL |p| (|getShellEntry| $ 39))
+ (|spadConstant| $ 23) (|getShellEntry| $ 185)))
+ ('T
+ (SPADCALL
+ (SPADCALL (SPADCALL |p| |q|
+ (|getShellEntry| $ 159))
+ (|getShellEntry| $ 39))
+ (|spadConstant| $ 23) (|getShellEntry| $ 185)))))))))
+
+(DEFUN |POLYCAT-;patternMatch;SP2Pmr;39| (|p| |pat| |l| $)
+ (SPADCALL |p| |pat| |l| (|getShellEntry| $ 190)))
+
+(DEFUN |POLYCAT-;patternMatch;SP2Pmr;40| (|p| |pat| |l| $)
+ (SPADCALL |p| |pat| |l| (|getShellEntry| $ 197)))
+
+(DEFUN |POLYCAT-;convert;SP;41| (|x| $)
+ (SPADCALL (ELT $ 200) (ELT $ 201) |x| (|getShellEntry| $ 205)))
+
+(DEFUN |POLYCAT-;convert;SP;42| (|x| $)
+ (SPADCALL (ELT $ 207) (ELT $ 208) |x| (|getShellEntry| $ 212)))
+
+(DEFUN |POLYCAT-;convert;SIf;43| (|p| $)
+ (SPADCALL (ELT $ 215) (ELT $ 216) |p| (|getShellEntry| $ 220)))
+
+(DEFUN |PolynomialCategory&| (|#1| |#2| |#3| |#4|)
+ (PROG (|dv$1| |dv$2| |dv$3| |dv$4| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|PolynomialCategory&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$3| (|devaluate| |#3|) . #0#)
+ (LETT |dv$4| (|devaluate| |#4|) . #0#)
+ (LETT |dv$|
+ (LIST '|PolynomialCategory&| |dv$1| |dv$2| |dv$3| |dv$4|) . #0#)
+ (LETT $ (|newShell| 229) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#2|
+ '(|PolynomialFactorizationExplicit|))
+ (|HasAttribute| |#2|
+ '|canonicalUnitNormal|)
+ (|HasCategory| |#2| '(|GcdDomain|))
+ (|HasCategory| |#2| '(|CommutativeRing|))
+ (|HasCategory| |#4|
+ '(|PatternMatchable| (|Float|)))
+ (|HasCategory| |#2|
+ '(|PatternMatchable| (|Float|)))
+ (|HasCategory| |#4|
+ '(|PatternMatchable| (|Integer|)))
+ (|HasCategory| |#2|
+ '(|PatternMatchable| (|Integer|)))
+ (|HasCategory| |#4|
+ '(|ConvertibleTo|
+ (|Pattern| (|Float|))))
+ (|HasCategory| |#2|
+ '(|ConvertibleTo|
+ (|Pattern| (|Float|))))
+ (|HasCategory| |#4|
+ '(|ConvertibleTo|
+ (|Pattern| (|Integer|))))
+ (|HasCategory| |#2|
+ '(|ConvertibleTo|
+ (|Pattern| (|Integer|))))
+ (|HasCategory| |#4|
+ '(|ConvertibleTo| (|InputForm|)))
+ (|HasCategory| |#2|
+ '(|ConvertibleTo| (|InputForm|)))
+ (|HasCategory| |#2| '(|OrderedSet|)))) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (|setShellEntry| $ 7 |#2|)
+ (|setShellEntry| $ 8 |#3|)
+ (|setShellEntry| $ 9 |#4|)
+ (COND
+ ((|testBitVector| |pv$| 4)
+ (PROGN
+ (|setShellEntry| $ 76
+ (CONS (|dispatchFunction|
+ |POLYCAT-;resultant;2SVarSetS;15|)
+ $))
+ (|setShellEntry| $ 78
+ (CONS (|dispatchFunction|
+ |POLYCAT-;discriminant;SVarSetS;16|)
+ $)))))
+ (COND
+ ((|HasCategory| |#2| '(|IntegralDomain|))
+ (PROGN
+ (|setShellEntry| $ 99
+ (CONS (|dispatchFunction|
+ |POLYCAT-;reducedSystem;MM;20|)
+ $))
+ (|setShellEntry| $ 106
+ (CONS (|dispatchFunction|
+ |POLYCAT-;reducedSystem;MVR;21|)
+ $)))))
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (PROGN
+ (|setShellEntry| $ 109
+ (CONS (|dispatchFunction|
+ |POLYCAT-;gcdPolynomial;3Sup;22|)
+ $))
+ (|setShellEntry| $ 116
+ (CONS (|dispatchFunction|
+ |POLYCAT-;solveLinearPolynomialEquation;LSupU;23|)
+ $))
+ (|setShellEntry| $ 120
+ (CONS (|dispatchFunction|
+ |POLYCAT-;factorPolynomial;SupF;24|)
+ $))
+ (|setShellEntry| $ 122
+ (CONS (|dispatchFunction|
+ |POLYCAT-;factorSquareFreePolynomial;SupF;25|)
+ $))
+ (|setShellEntry| $ 140
+ (CONS (|dispatchFunction| |POLYCAT-;factor;SF;26|) $))
+ (COND
+ ((|HasCategory| |#2| '(|CharacteristicNonZero|))
+ (PROGN
+ (|setShellEntry| $ 154
+ (CONS (|dispatchFunction|
+ |POLYCAT-;conditionP;MU;27|)
+ $))))))))
+ (COND
+ ((|HasCategory| |#2| '(|CharacteristicNonZero|))
+ (PROGN
+ (|setShellEntry| $ 156
+ (CONS (|dispatchFunction| |POLYCAT-;charthRoot;SU;28|)
+ $)))))
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (PROGN
+ (COND
+ ((|HasCategory| |#2| '(|EuclideanDomain|))
+ (COND
+ ((|HasCategory| |#2| '(|CharacteristicZero|))
+ (|setShellEntry| $ 165
+ (CONS (|dispatchFunction|
+ |POLYCAT-;squareFree;SF;31|)
+ $)))
+ ('T
+ (|setShellEntry| $ 165
+ (CONS (|dispatchFunction|
+ |POLYCAT-;squareFree;SF;32|)
+ $)))))
+ ('T
+ (|setShellEntry| $ 165
+ (CONS (|dispatchFunction|
+ |POLYCAT-;squareFree;SF;33|)
+ $))))
+ (|setShellEntry| $ 173
+ (CONS (|dispatchFunction|
+ |POLYCAT-;squareFreePart;2S;34|)
+ $))
+ (|setShellEntry| $ 175
+ (CONS (|dispatchFunction|
+ |POLYCAT-;content;SVarSetS;35|)
+ $))
+ (|setShellEntry| $ 180
+ (CONS (|dispatchFunction|
+ |POLYCAT-;primitivePart;2S;36|)
+ $))
+ (|setShellEntry| $ 183
+ (CONS (|dispatchFunction|
+ |POLYCAT-;primitivePart;SVarSetS;37|)
+ $)))))
+ (COND
+ ((|testBitVector| |pv$| 15)
+ (PROGN
+ (|setShellEntry| $ 186
+ (CONS (|dispatchFunction| |POLYCAT-;<;2SB;38|) $))
+ (COND
+ ((|testBitVector| |pv$| 8)
+ (COND
+ ((|testBitVector| |pv$| 7)
+ (|setShellEntry| $ 192
+ (CONS (|dispatchFunction|
+ |POLYCAT-;patternMatch;SP2Pmr;39|)
+ $))))))
+ (COND
+ ((|testBitVector| |pv$| 6)
+ (COND
+ ((|testBitVector| |pv$| 5)
+ (|setShellEntry| $ 199
+ (CONS (|dispatchFunction|
+ |POLYCAT-;patternMatch;SP2Pmr;40|)
+ $)))))))))
+ (COND
+ ((|testBitVector| |pv$| 12)
+ (COND
+ ((|testBitVector| |pv$| 11)
+ (|setShellEntry| $ 206
+ (CONS (|dispatchFunction| |POLYCAT-;convert;SP;41|)
+ $))))))
+ (COND
+ ((|testBitVector| |pv$| 10)
+ (COND
+ ((|testBitVector| |pv$| 9)
+ (|setShellEntry| $ 213
+ (CONS (|dispatchFunction| |POLYCAT-;convert;SP;42|)
+ $))))))
+ (COND
+ ((|testBitVector| |pv$| 14)
+ (COND
+ ((|testBitVector| |pv$| 13)
+ (|setShellEntry| $ 221
+ (CONS (|dispatchFunction| |POLYCAT-;convert;SIf;43|)
+ $))))))
+ $))))
+
+(MAKEPROP '|PolynomialCategory&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|local| |#3|) (|local| |#4|) (|Equation| 6) (0 . |lhs|)
+ (|Union| 9 '"failed") (5 . |retractIfCan|)
+ (10 . |retract|) (15 . |rhs|) (|List| 9) (|List| $)
+ (20 . |eval|) (|Equation| $) (|List| 19)
+ |POLYCAT-;eval;SLS;1| (27 . |Zero|) (31 . |Zero|)
+ (|Boolean|) (35 . ~=) (41 . |leadingMonomial|)
+ (46 . |reductum|) |POLYCAT-;monomials;SL;2|
+ (51 . |monomials|) (|Union| 17 '"failed")
+ |POLYCAT-;isPlus;SU;3| (56 . |variables|)
+ (61 . |monomial?|) (66 . |One|) (70 . |One|)
+ (|NonNegativeInteger|) (74 . |degree|) (80 . |monomial|)
+ (87 . |leadingCoefficient|) (92 . =) (98 . |coerce|)
+ |POLYCAT-;isTimes;SU;4| (103 . |mainVariable|) (108 . =)
+ (|Record| (|:| |var| 9) (|:| |exponent| 36))
+ (|Union| 45 '"failed") |POLYCAT-;isExpt;SU;5|
+ (|SparseUnivariatePolynomial| $) (114 . |univariate|)
+ (|SparseUnivariatePolynomial| 6) (120 . |coefficient|)
+ |POLYCAT-;coefficient;SVarSetNniS;6| (|List| 36)
+ (126 . |coefficient|) |POLYCAT-;coefficient;SLLS;7|
+ (133 . |monomial|) |POLYCAT-;monomial;SLLS;8|
+ (140 . |coerce|) |POLYCAT-;retract;SVarSet;9|
+ |POLYCAT-;retractIfCan;SU;10| (145 . |degree|)
+ (150 . |monomial|) |POLYCAT-;primitiveMonomials;SL;12|
+ (156 . |ground?|) (161 . |Zero|) (165 . ~=)
+ (171 . |degree|) (176 . |leadingCoefficient|)
+ (181 . |totalDegree|) (186 . |reductum|)
+ |POLYCAT-;totalDegree;SNni;13| (191 . |member?|)
+ (197 . |totalDegree|) |POLYCAT-;totalDegree;SLNni;14|
+ (203 . |resultant|) (209 . |resultant|)
+ (216 . |discriminant|) (221 . |discriminant|)
+ (227 . |primitiveMonomials|) (|List| 6) (232 . |concat|)
+ (237 . |removeDuplicates!|) (|Vector| 7) (242 . |new|)
+ (|Integer|) (248 . |minIndex|) (253 . |coefficient|)
+ (259 . |qsetelt!|) (|List| 7) (|List| 89) (|Matrix| 7)
+ (266 . |matrix|) (|List| 80) (|Matrix| 6)
+ (271 . |listOfLists|) (276 . |not|) (281 . |vertConcat|)
+ (|Matrix| $) (287 . |reducedSystem|) (|Vector| 6)
+ (292 . |entries|) (297 . |concat|) (303 . |concat|)
+ (|Record| (|:| |mat| 91) (|:| |vec| 83)) (|Vector| $)
+ (309 . |reducedSystem|)
+ (|GeneralPolynomialGcdPackage| 8 9 7 6)
+ (315 . |gcdPolynomial|) (321 . |gcdPolynomial|)
+ (|List| 50) (|Union| 110 '"failed")
+ (|PolynomialFactorizationByRecursion| 7 8 9 6)
+ (327 . |solveLinearPolynomialEquationByRecursion|)
+ (|List| 48) (|Union| 114 '"failed")
+ (333 . |solveLinearPolynomialEquation|) (|Factored| 50)
+ (339 . |factorByRecursion|) (|Factored| 48)
+ (344 . |factorPolynomial|)
+ (349 . |factorSquareFreeByRecursion|)
+ (354 . |factorSquareFreePolynomial|) (|Factored| $)
+ (359 . |factor|) (|Factored| 7) (364 . |unit|)
+ (|Union| '"nil" '"sqfr" '"irred" '"prime")
+ (|Record| (|:| |flg| 127) (|:| |fctr| 7) (|:| |xpnt| 85))
+ (|List| 128) (369 . |factorList|)
+ (|Record| (|:| |flg| 127) (|:| |fctr| 6) (|:| |xpnt| 85))
+ (|List| 131) (|Factored| 6) (374 . |makeFR|)
+ (380 . |unit|) (385 . |multivariate|)
+ (|Record| (|:| |flg| 127) (|:| |fctr| 50) (|:| |xpnt| 85))
+ (|List| 137) (391 . |factorList|) (396 . |factor|)
+ (401 . |transpose|) (406 . |characteristic|)
+ (410 . |setUnion|) (416 . |degree|) (|Union| $ '"failed")
+ (422 . |exquo|) (428 . |ground|) (433 . |transpose|)
+ (|Union| 105 '"failed") (438 . |conditionP|) (443 . |elt|)
+ (449 . *) (455 . +) (461 . |conditionP|)
+ (466 . |charthRoot|) (471 . |charthRoot|) (476 . |Zero|)
+ (480 . |coefficient|) (487 . -)
+ (|Record| (|:| |quotient| $) (|:| |remainder| $))
+ (493 . |monicDivide|) |POLYCAT-;monicDivide;2SVarSetR;30|
+ (|MultivariateSquareFree| 8 9 7 6) (499 . |squareFree|)
+ (504 . |squareFree|) (|PolynomialSquareFree| 9 8 7 6)
+ (509 . |squareFree|) (514 . |squareFree|) (519 . |unit|)
+ (|Record| (|:| |factor| 6) (|:| |exponent| 85))
+ (|List| 170) (524 . |factors|) (529 . |squareFreePart|)
+ (534 . |content|) (539 . |content|) (545 . |content|)
+ (550 . |exquo|)
+ (|Record| (|:| |unit| $) (|:| |canonical| $)
+ (|:| |associate| $))
+ (556 . |unitNormal|) (561 . |primitivePart|)
+ (566 . |content|) (572 . |exquo|) (578 . |primitivePart|)
+ (584 . <) (590 . <) (596 . <) (|PatternMatchResult| 85 6)
+ (|Pattern| 85)
+ (|PatternMatchPolynomialCategory| 85 8 9 7 6)
+ (602 . |patternMatch|) (|PatternMatchResult| 85 $)
+ (609 . |patternMatch|) (|Float|)
+ (|PatternMatchResult| 193 6) (|Pattern| 193)
+ (|PatternMatchPolynomialCategory| 193 8 9 7 6)
+ (616 . |patternMatch|) (|PatternMatchResult| 193 $)
+ (623 . |patternMatch|) (630 . |convert|) (635 . |convert|)
+ (|Mapping| 188 9) (|Mapping| 188 7)
+ (|PolynomialCategoryLifting| 8 9 7 6 188) (640 . |map|)
+ (647 . |convert|) (652 . |convert|) (657 . |convert|)
+ (|Mapping| 195 9) (|Mapping| 195 7)
+ (|PolynomialCategoryLifting| 8 9 7 6 195) (662 . |map|)
+ (669 . |convert|) (|InputForm|) (674 . |convert|)
+ (679 . |convert|) (|Mapping| 214 9) (|Mapping| 214 7)
+ (|PolynomialCategoryLifting| 8 9 7 6 214) (684 . |map|)
+ (691 . |convert|) (|Matrix| 85) (|Vector| 85)
+ (|Record| (|:| |mat| 222) (|:| |vec| 223))
+ (|Union| 85 '"failed") (|Fraction| 85)
+ (|Union| 226 '"failed") (|Union| 7 '"failed"))
+ '#(|totalDegree| 696 |squareFreePart| 707 |squareFree| 712
+ |solveLinearPolynomialEquation| 717 |retractIfCan| 723
+ |retract| 728 |resultant| 733 |reducedSystem| 740
+ |primitivePart| 751 |primitiveMonomials| 762
+ |patternMatch| 767 |monomials| 781 |monomial| 786
+ |monicDivide| 793 |isTimes| 800 |isPlus| 805 |isExpt| 810
+ |gcdPolynomial| 815 |factorSquareFreePolynomial| 821
+ |factorPolynomial| 826 |factor| 831 |eval| 836
+ |discriminant| 842 |convert| 848 |content| 863
+ |conditionP| 869 |coefficient| 874 |charthRoot| 888 < 893)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 221
+ '(1 10 6 0 11 1 6 12 0 13 1 6 9 0 14 1
+ 10 6 0 15 3 6 0 0 16 17 18 0 6 0 22 0
+ 7 0 23 2 6 24 0 0 25 1 6 0 0 26 1 6 0
+ 0 27 1 6 17 0 29 1 6 16 0 32 1 6 24 0
+ 33 0 6 0 34 0 7 0 35 2 6 36 0 9 37 3
+ 6 0 0 9 36 38 1 6 7 0 39 2 7 24 0 0
+ 40 1 6 0 7 41 1 6 12 0 43 2 6 24 0 0
+ 44 2 6 48 0 9 49 2 50 6 0 36 51 3 6 0
+ 0 16 53 54 3 6 0 0 16 53 56 1 6 0 9
+ 58 1 6 8 0 61 2 6 0 7 8 62 1 6 24 0
+ 64 0 50 0 65 2 50 24 0 0 66 1 50 36 0
+ 67 1 50 6 0 68 1 6 36 0 69 1 50 0 0
+ 70 2 16 24 9 0 72 2 6 36 0 16 73 2 50
+ 6 0 0 75 3 0 0 0 0 9 76 1 50 6 0 77 2
+ 0 0 0 9 78 1 6 17 0 79 1 80 0 17 81 1
+ 80 0 0 82 2 83 0 36 7 84 1 83 85 0 86
+ 2 6 7 0 8 87 3 83 7 0 85 7 88 1 91 0
+ 90 92 1 94 93 0 95 1 24 0 0 96 2 91 0
+ 0 0 97 1 0 91 98 99 1 100 80 0 101 2
+ 80 0 0 0 102 2 83 0 0 0 103 2 0 104
+ 98 105 106 2 107 50 50 50 108 2 0 48
+ 48 48 109 2 112 111 110 50 113 2 0
+ 115 114 48 116 1 112 117 50 118 1 0
+ 119 48 120 1 112 117 50 121 1 0 119
+ 48 122 1 7 123 0 124 1 125 7 0 126 1
+ 125 129 0 130 2 133 0 6 132 134 1 117
+ 50 0 135 2 6 0 48 9 136 1 117 138 0
+ 139 1 0 123 0 140 1 94 0 0 141 0 6 36
+ 142 2 80 0 0 0 143 2 6 53 0 16 144 2
+ 85 145 0 0 146 1 6 7 0 147 1 91 0 0
+ 148 1 7 149 98 150 2 83 7 0 85 151 2
+ 6 0 0 0 152 2 6 0 0 0 153 1 0 149 98
+ 154 1 7 145 0 155 1 0 145 0 156 0 8 0
+ 157 3 6 0 0 9 36 158 2 6 0 0 0 159 2
+ 50 160 0 0 161 1 163 133 6 164 1 0
+ 123 0 165 1 166 133 6 167 1 6 123 0
+ 168 1 133 6 0 169 1 133 171 0 172 1 0
+ 0 0 173 1 50 6 0 174 2 0 0 0 9 175 1
+ 6 7 0 176 2 6 145 0 7 177 1 6 178 0
+ 179 1 0 0 0 180 2 6 0 0 9 181 2 6 145
+ 0 0 182 2 0 0 0 9 183 2 8 24 0 0 184
+ 2 7 24 0 0 185 2 0 24 0 0 186 3 189
+ 187 6 188 187 190 3 0 191 0 188 191
+ 192 3 196 194 6 195 194 197 3 0 198 0
+ 195 198 199 1 9 188 0 200 1 7 188 0
+ 201 3 204 188 202 203 6 205 1 0 188 0
+ 206 1 9 195 0 207 1 7 195 0 208 3 211
+ 195 209 210 6 212 1 0 195 0 213 1 9
+ 214 0 215 1 7 214 0 216 3 219 214 217
+ 218 6 220 1 0 214 0 221 2 0 36 0 16
+ 74 1 0 36 0 71 1 0 0 0 173 1 0 123 0
+ 165 2 0 115 114 48 116 1 0 12 0 60 1
+ 0 9 0 59 3 0 0 0 0 9 76 1 0 91 98 99
+ 2 0 104 98 105 106 2 0 0 0 9 183 1 0
+ 0 0 180 1 0 17 0 63 3 0 191 0 188 191
+ 192 3 0 198 0 195 198 199 1 0 17 0 28
+ 3 0 0 0 16 53 57 3 0 160 0 0 9 162 1
+ 0 30 0 42 1 0 30 0 31 1 0 46 0 47 2 0
+ 48 48 48 109 1 0 119 48 122 1 0 119
+ 48 120 1 0 123 0 140 2 0 0 0 20 21 2
+ 0 0 0 9 78 1 0 214 0 221 1 0 188 0
+ 206 1 0 195 0 213 2 0 0 0 9 175 1 0
+ 149 98 154 3 0 0 0 16 53 55 3 0 0 0 9
+ 36 52 1 0 145 0 156 2 0 24 0 0 186)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/POLYCAT.lsp b/src/algebra/strap/POLYCAT.lsp
new file mode 100644
index 00000000..e328aa4d
--- /dev/null
+++ b/src/algebra/strap/POLYCAT.lsp
@@ -0,0 +1,238 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |PolynomialCategory;CAT| 'NIL)
+
+(DEFPARAMETER |PolynomialCategory;AL| 'NIL)
+
+(DEFUN |PolynomialCategory| (&REST #0=#:G1406 &AUX #1=#:G1404)
+ (DSETQ #1# #0#)
+ (LET (#2=#:G1405)
+ (COND
+ ((SETQ #2#
+ (|assoc| (|devaluateList| #1#) |PolynomialCategory;AL|))
+ (CDR #2#))
+ (T (SETQ |PolynomialCategory;AL|
+ (|cons5| (CONS (|devaluateList| #1#)
+ (SETQ #2#
+ (APPLY #'|PolynomialCategory;| #1#)))
+ |PolynomialCategory;AL|))
+ #2#))))
+
+(DEFUN |PolynomialCategory;| (|t#1| |t#2| |t#3|)
+ (PROG (#0=#:G1403)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1| |t#2| |t#3|)
+ (LIST (|devaluate| |t#1|)
+ (|devaluate| |t#2|)
+ (|devaluate| |t#3|)))
+ (COND
+ (|PolynomialCategory;CAT|)
+ ('T
+ (LETT |PolynomialCategory;CAT|
+ (|Join| (|PartialDifferentialRing|
+ '|t#3|)
+ (|FiniteAbelianMonoidRing|
+ '|t#1| '|t#2|)
+ (|Evalable| '$)
+ (|InnerEvalable| '|t#3| '|t#1|)
+ (|InnerEvalable| '|t#3| '$)
+ (|RetractableTo| '|t#3|)
+ (|FullyLinearlyExplicitRingOver|
+ '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|degree|
+ ((|NonNegativeInteger|) $
+ |t#3|))
+ T)
+ ((|degree|
+ ((|List|
+ (|NonNegativeInteger|))
+ $ (|List| |t#3|)))
+ T)
+ ((|coefficient|
+ ($ $ |t#3|
+ (|NonNegativeInteger|)))
+ T)
+ ((|coefficient|
+ ($ $ (|List| |t#3|)
+ (|List|
+ (|NonNegativeInteger|))))
+ T)
+ ((|monomials|
+ ((|List| $) $))
+ T)
+ ((|univariate|
+ ((|SparseUnivariatePolynomial|
+ $)
+ $ |t#3|))
+ T)
+ ((|univariate|
+ ((|SparseUnivariatePolynomial|
+ |t#1|)
+ $))
+ T)
+ ((|mainVariable|
+ ((|Union| |t#3| "failed")
+ $))
+ T)
+ ((|minimumDegree|
+ ((|NonNegativeInteger|) $
+ |t#3|))
+ T)
+ ((|minimumDegree|
+ ((|List|
+ (|NonNegativeInteger|))
+ $ (|List| |t#3|)))
+ T)
+ ((|monicDivide|
+ ((|Record|
+ (|:| |quotient| $)
+ (|:| |remainder| $))
+ $ $ |t#3|))
+ T)
+ ((|monomial|
+ ($ $ |t#3|
+ (|NonNegativeInteger|)))
+ T)
+ ((|monomial|
+ ($ $ (|List| |t#3|)
+ (|List|
+ (|NonNegativeInteger|))))
+ T)
+ ((|multivariate|
+ ($
+ (|SparseUnivariatePolynomial|
+ |t#1|)
+ |t#3|))
+ T)
+ ((|multivariate|
+ ($
+ (|SparseUnivariatePolynomial|
+ $)
+ |t#3|))
+ T)
+ ((|isPlus|
+ ((|Union| (|List| $)
+ "failed")
+ $))
+ T)
+ ((|isTimes|
+ ((|Union| (|List| $)
+ "failed")
+ $))
+ T)
+ ((|isExpt|
+ ((|Union|
+ (|Record|
+ (|:| |var| |t#3|)
+ (|:| |exponent|
+ (|NonNegativeInteger|)))
+ "failed")
+ $))
+ T)
+ ((|totalDegree|
+ ((|NonNegativeInteger|) $))
+ T)
+ ((|totalDegree|
+ ((|NonNegativeInteger|) $
+ (|List| |t#3|)))
+ T)
+ ((|variables|
+ ((|List| |t#3|) $))
+ T)
+ ((|primitiveMonomials|
+ ((|List| $) $))
+ T)
+ ((|resultant| ($ $ $ |t#3|))
+ (|has| |t#1|
+ (|CommutativeRing|)))
+ ((|discriminant|
+ ($ $ |t#3|))
+ (|has| |t#1|
+ (|CommutativeRing|)))
+ ((|content| ($ $ |t#3|))
+ (|has| |t#1| (|GcdDomain|)))
+ ((|primitivePart| ($ $))
+ (|has| |t#1| (|GcdDomain|)))
+ ((|primitivePart|
+ ($ $ |t#3|))
+ (|has| |t#1| (|GcdDomain|)))
+ ((|squareFree|
+ ((|Factored| $) $))
+ (|has| |t#1| (|GcdDomain|)))
+ ((|squareFreePart| ($ $))
+ (|has| |t#1| (|GcdDomain|))))
+ '(((|OrderedSet|)
+ (|has| |t#1|
+ (|OrderedSet|)))
+ ((|ConvertibleTo|
+ (|InputForm|))
+ (AND
+ (|has| |t#3|
+ (|ConvertibleTo|
+ (|InputForm|)))
+ (|has| |t#1|
+ (|ConvertibleTo|
+ (|InputForm|)))))
+ ((|ConvertibleTo|
+ (|Pattern| (|Integer|)))
+ (AND
+ (|has| |t#3|
+ (|ConvertibleTo|
+ (|Pattern| (|Integer|))))
+ (|has| |t#1|
+ (|ConvertibleTo|
+ (|Pattern| (|Integer|))))))
+ ((|ConvertibleTo|
+ (|Pattern| (|Float|)))
+ (AND
+ (|has| |t#3|
+ (|ConvertibleTo|
+ (|Pattern| (|Float|))))
+ (|has| |t#1|
+ (|ConvertibleTo|
+ (|Pattern| (|Float|))))))
+ ((|PatternMatchable|
+ (|Integer|))
+ (AND
+ (|has| |t#3|
+ (|PatternMatchable|
+ (|Integer|)))
+ (|has| |t#1|
+ (|PatternMatchable|
+ (|Integer|)))))
+ ((|PatternMatchable|
+ (|Float|))
+ (AND
+ (|has| |t#3|
+ (|PatternMatchable|
+ (|Float|)))
+ (|has| |t#1|
+ (|PatternMatchable|
+ (|Float|)))))
+ ((|GcdDomain|)
+ (|has| |t#1| (|GcdDomain|)))
+ (|canonicalUnitNormal|
+ (|has| |t#1|
+ (ATTRIBUTE
+ |canonicalUnitNormal|)))
+ ((|PolynomialFactorizationExplicit|)
+ (|has| |t#1|
+ (|PolynomialFactorizationExplicit|))))
+ '((|Factored| $) (|List| $)
+ (|List| |t#3|)
+ (|NonNegativeInteger|)
+ (|SparseUnivariatePolynomial|
+ $)
+ (|SparseUnivariatePolynomial|
+ |t#1|)
+ (|List|
+ (|NonNegativeInteger|)))
+ NIL))
+ . #1=(|PolynomialCategory|))))) . #1#)
+ (SETELT #0# 0
+ (LIST '|PolynomialCategory| (|devaluate| |t#1|)
+ (|devaluate| |t#2|) (|devaluate| |t#3|)))))))
diff --git a/src/algebra/strap/PRIMARR.lsp b/src/algebra/strap/PRIMARR.lsp
new file mode 100644
index 00000000..a8f4f9a7
--- /dev/null
+++ b/src/algebra/strap/PRIMARR.lsp
@@ -0,0 +1,193 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|PRIMARR;#;$Nni;1| '|SPADreplace| '|sizeOfSimpleArray|)
+
+(DEFUN |PRIMARR;#;$Nni;1| (|x| $) (|sizeOfSimpleArray| |x|))
+
+(PUT '|PRIMARR;minIndex;$I;2| '|SPADreplace| '(XLAM (|x|) 0))
+
+(DEFUN |PRIMARR;minIndex;$I;2| (|x| $) 0)
+
+(DEFUN |PRIMARR;empty;$;3| ($)
+ (|makeSimpleArray| (|getVMType| (|getShellEntry| $ 6)) 0))
+
+(DEFUN |PRIMARR;new;NniS$;4| (|n| |x| $)
+ (|makeFilledSimpleArray| (|getVMType| (|getShellEntry| $ 6)) |n| |x|))
+
+(PUT '|PRIMARR;qelt;$IS;5| '|SPADreplace| '|getSimpleArrayEntry|)
+
+(DEFUN |PRIMARR;qelt;$IS;5| (|x| |i| $)
+ (|getSimpleArrayEntry| |x| |i|))
+
+(PUT '|PRIMARR;elt;$IS;6| '|SPADreplace| '|getSimpleArrayEntry|)
+
+(DEFUN |PRIMARR;elt;$IS;6| (|x| |i| $)
+ (|getSimpleArrayEntry| |x| |i|))
+
+(PUT '|PRIMARR;qsetelt!;$I2S;7| '|SPADreplace| '|setSimpleArrayEntry|)
+
+(DEFUN |PRIMARR;qsetelt!;$I2S;7| (|x| |i| |s| $)
+ (|setSimpleArrayEntry| |x| |i| |s|))
+
+(PUT '|PRIMARR;setelt;$I2S;8| '|SPADreplace| '|setSimpleArrayEntry|)
+
+(DEFUN |PRIMARR;setelt;$I2S;8| (|x| |i| |s| $)
+ (|setSimpleArrayEntry| |x| |i| |s|))
+
+(DEFUN |PRIMARR;fill!;$S$;9| (|x| |s| $)
+ (PROG (|i| #0=#:G1403)
+ (RETURN
+ (SEQ (SEQ (LETT |i| 0 |PRIMARR;fill!;$S$;9|)
+ (LETT #0# (|maxIndexOfSimpleArray| |x|)
+ |PRIMARR;fill!;$S$;9|)
+ G190 (COND ((QSGREATERP |i| #0#) (GO G191)))
+ (SEQ (EXIT (|setSimpleArrayEntry| |x| |i| |s|)))
+ (LETT |i| (QSADD1 |i|) |PRIMARR;fill!;$S$;9|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT |x|)))))
+
+(DEFUN |PrimitiveArray| (#0=#:G1411)
+ (PROG ()
+ (RETURN
+ (PROG (#1=#:G1412)
+ (RETURN
+ (COND
+ ((LETT #1#
+ (|lassocShiftWithFunction| (LIST (|devaluate| #0#))
+ (HGET |$ConstructorCache| '|PrimitiveArray|)
+ '|domainEqualList|)
+ |PrimitiveArray|)
+ (|CDRwithIncrement| #1#))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (|PrimitiveArray;| #0#)
+ (LETT #1# T |PrimitiveArray|))
+ (COND
+ ((NOT #1#)
+ (HREM |$ConstructorCache| '|PrimitiveArray|)))))))))))
+
+(DEFUN |PrimitiveArray;| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|PrimitiveArray|))
+ (LETT |dv$| (LIST '|PrimitiveArray| |dv$1|) . #0#)
+ (LETT $ (|newShell| 35) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (OR (AND (|HasCategory| |#1|
+ '(|OrderedSet|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (AND (|HasCategory| |#1|
+ '(|SetCategory|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|)))))
+ (OR (AND (|HasCategory| |#1|
+ '(|SetCategory|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (|HasCategory| |#1|
+ '(|CoercibleTo| (|OutputForm|))))
+ (|HasCategory| |#1|
+ '(|ConvertibleTo| (|InputForm|)))
+ (OR (|HasCategory| |#1| '(|OrderedSet|))
+ (|HasCategory| |#1| '(|SetCategory|)))
+ (|HasCategory| |#1| '(|OrderedSet|))
+ (|HasCategory| (|Integer|) '(|OrderedSet|))
+ (|HasCategory| |#1| '(|SetCategory|))
+ (AND (|HasCategory| |#1| '(|SetCategory|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (|HasCategory| |#1|
+ '(|CoercibleTo| (|OutputForm|))))) . #0#))
+ (|haddProp| |$ConstructorCache| '|PrimitiveArray| (LIST |dv$1|)
+ (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|PrimitiveArray| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|)
+ (|NonNegativeInteger|) |PRIMARR;#;$Nni;1| (|Integer|)
+ |PRIMARR;minIndex;$I;2| |PRIMARR;empty;$;3|
+ |PRIMARR;new;NniS$;4| |PRIMARR;qelt;$IS;5|
+ |PRIMARR;elt;$IS;6| |PRIMARR;qsetelt!;$I2S;7|
+ |PRIMARR;setelt;$I2S;8| |PRIMARR;fill!;$S$;9|
+ (|Mapping| 6 6 6) (|Boolean|) (|List| 6) (|Equation| 6)
+ (|List| 21) (|Mapping| 19 6) (|Mapping| 19 6 6)
+ (|UniversalSegment| 9) (|Void|) (|Mapping| 6 6)
+ (|OutputForm|) (|InputForm|) (|String|) (|SingleInteger|)
+ (|List| $) (|Union| 6 '"failed") (|List| 9))
+ '#(~= 0 |swap!| 6 |sorted?| 13 |sort!| 24 |sort| 35 |size?|
+ 46 |setelt| 52 |select| 66 |sample| 72 |reverse!| 76
+ |reverse| 81 |removeDuplicates| 86 |remove| 91 |reduce|
+ 103 |qsetelt!| 124 |qelt| 131 |position| 137 |parts| 156
+ |new| 161 |more?| 167 |minIndex| 173 |min| 178 |merge| 184
+ |members| 197 |member?| 202 |maxIndex| 208 |max| 213
+ |map!| 219 |map| 225 |less?| 238 |latex| 244 |insert| 249
+ |indices| 263 |index?| 268 |hash| 274 |first| 279 |find|
+ 284 |fill!| 290 |every?| 296 |eval| 302 |eq?| 328 |entry?|
+ 334 |entries| 340 |empty?| 345 |empty| 350 |elt| 354
+ |delete| 373 |count| 385 |copyInto!| 397 |copy| 404
+ |convert| 409 |construct| 414 |concat| 419 |coerce| 442
+ |any?| 447 >= 453 > 459 = 465 <= 471 < 477 |#| 483)
+ '((|shallowlyMutable| . 0) (|finiteAggregate| . 0))
+ (CONS (|makeByteWordVec2| 5
+ '(0 0 0 0 0 0 5 0 0 1 4 0 0 1 2 3 4))
+ (CONS '#(|OneDimensionalArrayAggregate&|
+ |FiniteLinearAggregate&| |LinearAggregate&|
+ |IndexedAggregate&| |Collection&|
+ |HomogeneousAggregate&| |OrderedSet&|
+ |Aggregate&| |EltableAggregate&| |Evalable&|
+ |SetCategory&| NIL NIL |InnerEvalable&| NIL
+ NIL |BasicType&|)
+ (CONS '#((|OneDimensionalArrayAggregate| 6)
+ (|FiniteLinearAggregate| 6)
+ (|LinearAggregate| 6)
+ (|IndexedAggregate| 9 6)
+ (|Collection| 6)
+ (|HomogeneousAggregate| 6)
+ (|OrderedSet|) (|Aggregate|)
+ (|EltableAggregate| 9 6) (|Evalable| 6)
+ (|SetCategory|) (|Type|) (|Eltable| 9 6)
+ (|InnerEvalable| 6 6) (|CoercibleTo| 28)
+ (|ConvertibleTo| 29) (|BasicType|))
+ (|makeByteWordVec2| 34
+ '(2 7 19 0 0 1 3 0 26 0 9 9 1 1 5 19 0
+ 1 2 0 19 24 0 1 1 5 0 0 1 2 0 0 24 0
+ 1 1 5 0 0 1 2 0 0 24 0 1 2 0 19 0 7 1
+ 3 0 6 0 25 6 1 3 0 6 0 9 6 16 2 0 0
+ 23 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1
+ 7 0 0 1 2 7 0 6 0 1 2 0 0 23 0 1 4 7
+ 6 18 0 6 6 1 3 0 6 18 0 6 1 2 0 6 18
+ 0 1 3 0 6 0 9 6 15 2 0 6 0 9 13 2 7 9
+ 6 0 1 3 7 9 6 0 9 1 2 0 9 23 0 1 1 0
+ 20 0 1 2 0 0 7 6 12 2 0 19 0 7 1 1 6
+ 9 0 10 2 5 0 0 0 1 2 5 0 0 0 1 3 0 0
+ 24 0 0 1 1 0 20 0 1 2 7 19 6 0 1 1 6
+ 9 0 1 2 5 0 0 0 1 2 0 0 27 0 1 3 0 0
+ 18 0 0 1 2 0 0 27 0 1 2 0 19 0 7 1 1
+ 7 30 0 1 3 0 0 0 0 9 1 3 0 0 6 0 9 1
+ 1 0 34 0 1 2 0 19 9 0 1 1 7 31 0 1 1
+ 6 6 0 1 2 0 33 23 0 1 2 0 0 0 6 17 2
+ 0 19 23 0 1 3 8 0 0 20 20 1 2 8 0 0
+ 21 1 3 8 0 0 6 6 1 2 8 0 0 22 1 2 0
+ 19 0 0 1 2 7 19 6 0 1 1 0 20 0 1 1 0
+ 19 0 1 0 0 0 11 2 0 0 0 25 1 2 0 6 0
+ 9 14 3 0 6 0 9 6 1 2 0 0 0 9 1 2 0 0
+ 0 25 1 2 7 7 6 0 1 2 0 7 23 0 1 3 0 0
+ 0 0 9 1 1 0 0 0 1 1 3 29 0 1 1 0 0 20
+ 1 1 0 0 32 1 2 0 0 6 0 1 2 0 0 0 0 1
+ 2 0 0 0 6 1 1 9 28 0 1 2 0 19 23 0 1
+ 2 5 19 0 0 1 2 5 19 0 0 1 2 7 19 0 0
+ 1 2 5 19 0 0 1 2 5 19 0 0 1 1 0 7 0
+ 8)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/PSETCAT-.lsp b/src/algebra/strap/PSETCAT-.lsp
new file mode 100644
index 00000000..3e22b5d1
--- /dev/null
+++ b/src/algebra/strap/PSETCAT-.lsp
@@ -0,0 +1,885 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |PSETCAT-;elements| (|ps| $)
+ (PROG (|lp|)
+ (RETURN
+ (LETT |lp| (SPADCALL |ps| (|getShellEntry| $ 12))
+ |PSETCAT-;elements|))))
+
+(DEFUN |PSETCAT-;variables1| (|lp| $)
+ (PROG (#0=#:G1435 |p| #1=#:G1436 |lvars|)
+ (RETURN
+ (SEQ (LETT |lvars|
+ (PROGN
+ (LETT #0# NIL |PSETCAT-;variables1|)
+ (SEQ (LETT |p| NIL |PSETCAT-;variables1|)
+ (LETT #1# |lp| |PSETCAT-;variables1|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |p| (CAR #1#)
+ |PSETCAT-;variables1|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |p|
+ (|getShellEntry| $ 14))
+ #0#)
+ |PSETCAT-;variables1|)))
+ (LETT #1# (CDR #1#) |PSETCAT-;variables1|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ |PSETCAT-;variables1|)
+ (EXIT (SPADCALL (CONS #'|PSETCAT-;variables1!0| $)
+ (SPADCALL
+ (SPADCALL |lvars| (|getShellEntry| $ 18))
+ (|getShellEntry| $ 19))
+ (|getShellEntry| $ 21)))))))
+
+(DEFUN |PSETCAT-;variables1!0| (|#1| |#2| $)
+ (SPADCALL |#2| |#1| (|getShellEntry| $ 16)))
+
+(DEFUN |PSETCAT-;variables2| (|lp| $)
+ (PROG (#0=#:G1440 |p| #1=#:G1441 |lvars|)
+ (RETURN
+ (SEQ (LETT |lvars|
+ (PROGN
+ (LETT #0# NIL |PSETCAT-;variables2|)
+ (SEQ (LETT |p| NIL |PSETCAT-;variables2|)
+ (LETT #1# |lp| |PSETCAT-;variables2|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |p| (CAR #1#)
+ |PSETCAT-;variables2|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |p|
+ (|getShellEntry| $ 22))
+ #0#)
+ |PSETCAT-;variables2|)))
+ (LETT #1# (CDR #1#) |PSETCAT-;variables2|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ |PSETCAT-;variables2|)
+ (EXIT (SPADCALL (CONS #'|PSETCAT-;variables2!0| $)
+ (SPADCALL |lvars| (|getShellEntry| $ 19))
+ (|getShellEntry| $ 21)))))))
+
+(DEFUN |PSETCAT-;variables2!0| (|#1| |#2| $)
+ (SPADCALL |#2| |#1| (|getShellEntry| $ 16)))
+
+(DEFUN |PSETCAT-;variables;SL;4| (|ps| $)
+ (|PSETCAT-;variables1| (|PSETCAT-;elements| |ps| $) $))
+
+(DEFUN |PSETCAT-;mainVariables;SL;5| (|ps| $)
+ (|PSETCAT-;variables2|
+ (SPADCALL (ELT $ 24) (|PSETCAT-;elements| |ps| $)
+ (|getShellEntry| $ 26))
+ $))
+
+(DEFUN |PSETCAT-;mainVariable?;VarSetSB;6| (|v| |ps| $)
+ (PROG (|lp|)
+ (RETURN
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 24) (|PSETCAT-;elements| |ps| $)
+ (|getShellEntry| $ 26))
+ |PSETCAT-;mainVariable?;VarSetSB;6|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp|) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL (|SPADfirst| |lp|)
+ (|getShellEntry| $ 22))
+ |v| (|getShellEntry| $ 28))
+ (|getShellEntry| $ 29)))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |lp| (CDR |lp|)
+ |PSETCAT-;mainVariable?;VarSetSB;6|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL (NULL |lp|) (|getShellEntry| $ 29)))))))
+
+(DEFUN |PSETCAT-;collectUnder;SVarSetS;7| (|ps| |v| $)
+ (PROG (|p| |lp| |lq|)
+ (RETURN
+ (SEQ (LETT |lp| (|PSETCAT-;elements| |ps| $)
+ |PSETCAT-;collectUnder;SVarSetS;7|)
+ (LETT |lq| NIL |PSETCAT-;collectUnder;SVarSetS;7|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lp|) (|getShellEntry| $ 29)))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |lp|)
+ |PSETCAT-;collectUnder;SVarSetS;7|)
+ (LETT |lp| (CDR |lp|)
+ |PSETCAT-;collectUnder;SVarSetS;7|)
+ (EXIT (COND
+ ((OR (SPADCALL |p| (|getShellEntry| $ 24))
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 22))
+ |v| (|getShellEntry| $ 16)))
+ (LETT |lq| (CONS |p| |lq|)
+ |PSETCAT-;collectUnder;SVarSetS;7|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |lq| (|getShellEntry| $ 31)))))))
+
+(DEFUN |PSETCAT-;collectUpper;SVarSetS;8| (|ps| |v| $)
+ (PROG (|p| |lp| |lq|)
+ (RETURN
+ (SEQ (LETT |lp| (|PSETCAT-;elements| |ps| $)
+ |PSETCAT-;collectUpper;SVarSetS;8|)
+ (LETT |lq| NIL |PSETCAT-;collectUpper;SVarSetS;8|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lp|) (|getShellEntry| $ 29)))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |lp|)
+ |PSETCAT-;collectUpper;SVarSetS;8|)
+ (LETT |lp| (CDR |lp|)
+ |PSETCAT-;collectUpper;SVarSetS;8|)
+ (EXIT (COND
+ ((NULL (SPADCALL |p|
+ (|getShellEntry| $ 24)))
+ (COND
+ ((SPADCALL |v|
+ (SPADCALL |p|
+ (|getShellEntry| $ 22))
+ (|getShellEntry| $ 16))
+ (LETT |lq| (CONS |p| |lq|)
+ |PSETCAT-;collectUpper;SVarSetS;8|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |lq| (|getShellEntry| $ 31)))))))
+
+(DEFUN |PSETCAT-;collect;SVarSetS;9| (|ps| |v| $)
+ (PROG (|p| |lp| |lq|)
+ (RETURN
+ (SEQ (LETT |lp| (|PSETCAT-;elements| |ps| $)
+ |PSETCAT-;collect;SVarSetS;9|)
+ (LETT |lq| NIL |PSETCAT-;collect;SVarSetS;9|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lp|) (|getShellEntry| $ 29)))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |lp|)
+ |PSETCAT-;collect;SVarSetS;9|)
+ (LETT |lp| (CDR |lp|)
+ |PSETCAT-;collect;SVarSetS;9|)
+ (EXIT (COND
+ ((NULL (SPADCALL |p|
+ (|getShellEntry| $ 24)))
+ (COND
+ ((SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 22))
+ |v| (|getShellEntry| $ 28))
+ (LETT |lq| (CONS |p| |lq|)
+ |PSETCAT-;collect;SVarSetS;9|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |lq| (|getShellEntry| $ 31)))))))
+
+(DEFUN |PSETCAT-;sort;SVarSetR;10| (|ps| |v| $)
+ (PROG (|p| |lp| |us| |vs| |ws|)
+ (RETURN
+ (SEQ (LETT |lp| (|PSETCAT-;elements| |ps| $)
+ |PSETCAT-;sort;SVarSetR;10|)
+ (LETT |us| NIL |PSETCAT-;sort;SVarSetR;10|)
+ (LETT |vs| NIL |PSETCAT-;sort;SVarSetR;10|)
+ (LETT |ws| NIL |PSETCAT-;sort;SVarSetR;10|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lp|) (|getShellEntry| $ 29)))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |lp|)
+ |PSETCAT-;sort;SVarSetR;10|)
+ (LETT |lp| (CDR |lp|) |PSETCAT-;sort;SVarSetR;10|)
+ (EXIT (COND
+ ((OR (SPADCALL |p| (|getShellEntry| $ 24))
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 22))
+ |v| (|getShellEntry| $ 16)))
+ (LETT |us| (CONS |p| |us|)
+ |PSETCAT-;sort;SVarSetR;10|))
+ ((SPADCALL
+ (SPADCALL |p| (|getShellEntry| $ 22))
+ |v| (|getShellEntry| $ 28))
+ (LETT |vs| (CONS |p| |vs|)
+ |PSETCAT-;sort;SVarSetR;10|))
+ ('T
+ (LETT |ws| (CONS |p| |ws|)
+ |PSETCAT-;sort;SVarSetR;10|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (VECTOR (SPADCALL |us| (|getShellEntry| $ 31))
+ (SPADCALL |vs| (|getShellEntry| $ 31))
+ (SPADCALL |ws| (|getShellEntry| $ 31))))))))
+
+(DEFUN |PSETCAT-;=;2SB;11| (|ps1| |ps2| $)
+ (PROG (#0=#:G1475 #1=#:G1476 #2=#:G1477 |p| #3=#:G1478)
+ (RETURN
+ (SEQ (SPADCALL
+ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |PSETCAT-;=;2SB;11|)
+ (SEQ (LETT |p| NIL |PSETCAT-;=;2SB;11|)
+ (LETT #1# (|PSETCAT-;elements| |ps1| $)
+ |PSETCAT-;=;2SB;11|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |p| (CAR #1#)
+ |PSETCAT-;=;2SB;11|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0# (CONS |p| #0#)
+ |PSETCAT-;=;2SB;11|)))
+ (LETT #1# (CDR #1#) |PSETCAT-;=;2SB;11|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 38))
+ (SPADCALL
+ (PROGN
+ (LETT #2# NIL |PSETCAT-;=;2SB;11|)
+ (SEQ (LETT |p| NIL |PSETCAT-;=;2SB;11|)
+ (LETT #3# (|PSETCAT-;elements| |ps2| $)
+ |PSETCAT-;=;2SB;11|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |p| (CAR #3#)
+ |PSETCAT-;=;2SB;11|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #2# (CONS |p| #2#)
+ |PSETCAT-;=;2SB;11|)))
+ (LETT #3# (CDR #3#) |PSETCAT-;=;2SB;11|)
+ (GO G190) G191 (EXIT (NREVERSE0 #2#))))
+ (|getShellEntry| $ 38))
+ (|getShellEntry| $ 39))))))
+
+(DEFUN |PSETCAT-;localInf?| (|p| |q| $)
+ (SPADCALL (SPADCALL |p| (|getShellEntry| $ 41))
+ (SPADCALL |q| (|getShellEntry| $ 41)) (|getShellEntry| $ 42)))
+
+(DEFUN |PSETCAT-;localTriangular?| (|lp| $)
+ (PROG (|q| |p|)
+ (RETURN
+ (SEQ (LETT |lp| (SPADCALL (ELT $ 43) |lp| (|getShellEntry| $ 26))
+ |PSETCAT-;localTriangular?|)
+ (EXIT (COND
+ ((NULL |lp|) 'T)
+ ((SPADCALL (ELT $ 24) |lp| (|getShellEntry| $ 44))
+ 'NIL)
+ ('T
+ (SEQ (LETT |lp|
+ (SPADCALL
+ (CONS
+ #'|PSETCAT-;localTriangular?!0| $)
+ |lp| (|getShellEntry| $ 46))
+ |PSETCAT-;localTriangular?|)
+ (LETT |p| (|SPADfirst| |lp|)
+ |PSETCAT-;localTriangular?|)
+ (LETT |lp| (CDR |lp|)
+ |PSETCAT-;localTriangular?|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp|) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL
+ (LETT |q|
+ (|SPADfirst| |lp|)
+ |PSETCAT-;localTriangular?|)
+ (|getShellEntry| $ 22))
+ (SPADCALL |p|
+ (|getShellEntry| $ 22))
+ (|getShellEntry| $ 16)))))
+ (GO G191)))
+ (SEQ (LETT |p| |q|
+ |PSETCAT-;localTriangular?|)
+ (EXIT
+ (LETT |lp| (CDR |lp|)
+ |PSETCAT-;localTriangular?|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (NULL |lp|))))))))))
+
+(DEFUN |PSETCAT-;localTriangular?!0| (|#1| |#2| $)
+ (SPADCALL (SPADCALL |#2| (|getShellEntry| $ 22))
+ (SPADCALL |#1| (|getShellEntry| $ 22)) (|getShellEntry| $ 16)))
+
+(DEFUN |PSETCAT-;triangular?;SB;14| (|ps| $)
+ (|PSETCAT-;localTriangular?| (|PSETCAT-;elements| |ps| $) $))
+
+(DEFUN |PSETCAT-;trivialIdeal?;SB;15| (|ps| $)
+ (NULL (SPADCALL (ELT $ 43) (|PSETCAT-;elements| |ps| $)
+ (|getShellEntry| $ 26))))
+
+(DEFUN |PSETCAT-;roughUnitIdeal?;SB;16| (|ps| $)
+ (SPADCALL (ELT $ 24)
+ (SPADCALL (ELT $ 43) (|PSETCAT-;elements| |ps| $)
+ (|getShellEntry| $ 26))
+ (|getShellEntry| $ 44)))
+
+(DEFUN |PSETCAT-;relativelyPrimeLeadingMonomials?| (|p| |q| $)
+ (PROG (|dp| |dq|)
+ (RETURN
+ (SEQ (LETT |dp| (SPADCALL |p| (|getShellEntry| $ 41))
+ |PSETCAT-;relativelyPrimeLeadingMonomials?|)
+ (LETT |dq| (SPADCALL |q| (|getShellEntry| $ 41))
+ |PSETCAT-;relativelyPrimeLeadingMonomials?|)
+ (EXIT (SPADCALL (SPADCALL |dp| |dq| (|getShellEntry| $ 50))
+ (SPADCALL |dp| |dq| (|getShellEntry| $ 51))
+ (|getShellEntry| $ 52)))))))
+
+(DEFUN |PSETCAT-;roughBase?;SB;18| (|ps| $)
+ (PROG (|p| |lp| |rB?| |copylp|)
+ (RETURN
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 43) (|PSETCAT-;elements| |ps| $)
+ (|getShellEntry| $ 26))
+ |PSETCAT-;roughBase?;SB;18|)
+ (EXIT (COND
+ ((NULL |lp|) 'T)
+ ('T
+ (SEQ (LETT |rB?| 'T |PSETCAT-;roughBase?;SB;18|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp|) 'NIL)
+ ('T |rB?|)))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |lp|)
+ |PSETCAT-;roughBase?;SB;18|)
+ (LETT |lp| (CDR |lp|)
+ |PSETCAT-;roughBase?;SB;18|)
+ (LETT |copylp| |lp|
+ |PSETCAT-;roughBase?;SB;18|)
+ (EXIT
+ (SEQ G190
+ (COND
+ ((NULL
+ (COND
+ ((NULL |copylp|) 'NIL)
+ ('T |rB?|)))
+ (GO G191)))
+ (SEQ
+ (LETT |rB?|
+ (|PSETCAT-;relativelyPrimeLeadingMonomials?|
+ |p| (|SPADfirst| |copylp|) $)
+ |PSETCAT-;roughBase?;SB;18|)
+ (EXIT
+ (LETT |copylp| (CDR |copylp|)
+ |PSETCAT-;roughBase?;SB;18|)))
+ NIL (GO G190) G191 (EXIT NIL))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |rB?|)))))))))
+
+(DEFUN |PSETCAT-;roughSubIdeal?;2SB;19| (|ps1| |ps2| $)
+ (PROG (|lp|)
+ (RETURN
+ (SEQ (LETT |lp|
+ (SPADCALL (|PSETCAT-;elements| |ps1| $) |ps2|
+ (|getShellEntry| $ 54))
+ |PSETCAT-;roughSubIdeal?;2SB;19|)
+ (EXIT (NULL (SPADCALL (ELT $ 43) |lp|
+ (|getShellEntry| $ 26))))))))
+
+(DEFUN |PSETCAT-;roughEqualIdeals?;2SB;20| (|ps1| |ps2| $)
+ (COND
+ ((SPADCALL |ps1| |ps2| (|getShellEntry| $ 56)) 'T)
+ ((SPADCALL |ps1| |ps2| (|getShellEntry| $ 57))
+ (SPADCALL |ps2| |ps1| (|getShellEntry| $ 57)))
+ ('T 'NIL)))
+
+(DEFUN |PSETCAT-;exactQuo| (|r| |s| $)
+ (PROG (#0=#:G1510)
+ (RETURN
+ (COND
+ ((|HasCategory| (|getShellEntry| $ 7) '(|EuclideanDomain|))
+ (SPADCALL |r| |s| (|getShellEntry| $ 59)))
+ ('T
+ (PROG2 (LETT #0# (SPADCALL |r| |s| (|getShellEntry| $ 61))
+ |PSETCAT-;exactQuo|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (|getShellEntry| $ 7) #0#)))))))
+
+(DEFUN |PSETCAT-;headRemainder;PSR;22| (|a| |ps| $)
+ (PROG (|lp1| |p| |e| |g| |#G45| |#G46| |lca| |lcp| |r| |lp2|)
+ (RETURN
+ (SEQ (LETT |lp1|
+ (SPADCALL (ELT $ 43) (|PSETCAT-;elements| |ps| $)
+ (|getShellEntry| $ 26))
+ |PSETCAT-;headRemainder;PSR;22|)
+ (EXIT (COND
+ ((NULL |lp1|) (CONS |a| (|spadConstant| $ 62)))
+ ((SPADCALL (ELT $ 24) |lp1| (|getShellEntry| $ 44))
+ (CONS (SPADCALL |a| (|getShellEntry| $ 63))
+ (|spadConstant| $ 62)))
+ ('T
+ (SEQ (LETT |r| (|spadConstant| $ 62)
+ |PSETCAT-;headRemainder;PSR;22|)
+ (LETT |lp1|
+ (SPADCALL
+ (CONS
+ (|function| |PSETCAT-;localInf?|)
+ $)
+ (REVERSE
+ (|PSETCAT-;elements| |ps| $))
+ (|getShellEntry| $ 46))
+ |PSETCAT-;headRemainder;PSR;22|)
+ (LETT |lp2| |lp1|
+ |PSETCAT-;headRemainder;PSR;22|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |a|
+ (|getShellEntry| $ 43))
+ 'NIL)
+ ('T
+ (SPADCALL (NULL |lp2|)
+ (|getShellEntry| $ 29)))))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |lp2|)
+ |PSETCAT-;headRemainder;PSR;22|)
+ (LETT |e|
+ (SPADCALL
+ (SPADCALL |a|
+ (|getShellEntry| $ 41))
+ (SPADCALL |p|
+ (|getShellEntry| $ 41))
+ (|getShellEntry| $ 64))
+ |PSETCAT-;headRemainder;PSR;22|)
+ (EXIT
+ (COND
+ ((QEQCAR |e| 0)
+ (SEQ
+ (LETT |g|
+ (SPADCALL
+ (LETT |lca|
+ (SPADCALL |a|
+ (|getShellEntry| $ 65))
+ |PSETCAT-;headRemainder;PSR;22|)
+ (LETT |lcp|
+ (SPADCALL |p|
+ (|getShellEntry| $ 65))
+ |PSETCAT-;headRemainder;PSR;22|)
+ (|getShellEntry| $ 66))
+ |PSETCAT-;headRemainder;PSR;22|)
+ (PROGN
+ (LETT |#G45|
+ (|PSETCAT-;exactQuo| |lca|
+ |g| $)
+ |PSETCAT-;headRemainder;PSR;22|)
+ (LETT |#G46|
+ (|PSETCAT-;exactQuo| |lcp|
+ |g| $)
+ |PSETCAT-;headRemainder;PSR;22|)
+ (LETT |lca| |#G45|
+ |PSETCAT-;headRemainder;PSR;22|)
+ (LETT |lcp| |#G46|
+ |PSETCAT-;headRemainder;PSR;22|))
+ (LETT |a|
+ (SPADCALL
+ (SPADCALL |lcp|
+ (SPADCALL |a|
+ (|getShellEntry| $ 63))
+ (|getShellEntry| $ 67))
+ (SPADCALL
+ (SPADCALL |lca| (QCDR |e|)
+ (|getShellEntry| $ 68))
+ (SPADCALL |p|
+ (|getShellEntry| $ 63))
+ (|getShellEntry| $ 69))
+ (|getShellEntry| $ 70))
+ |PSETCAT-;headRemainder;PSR;22|)
+ (LETT |r|
+ (SPADCALL |r| |lcp|
+ (|getShellEntry| $ 71))
+ |PSETCAT-;headRemainder;PSR;22|)
+ (EXIT
+ (LETT |lp2| |lp1|
+ |PSETCAT-;headRemainder;PSR;22|))))
+ ('T
+ (LETT |lp2| (CDR |lp2|)
+ |PSETCAT-;headRemainder;PSR;22|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (CONS |a| |r|))))))))))
+
+(DEFUN |PSETCAT-;makeIrreducible!| (|frac| $)
+ (PROG (|g|)
+ (RETURN
+ (SEQ (LETT |g|
+ (SPADCALL (QCDR |frac|) (QCAR |frac|)
+ (|getShellEntry| $ 74))
+ |PSETCAT-;makeIrreducible!|)
+ (EXIT (COND
+ ((SPADCALL |g| (|spadConstant| $ 62)
+ (|getShellEntry| $ 76))
+ |frac|)
+ ('T
+ (SEQ (PROGN
+ (RPLACA |frac|
+ (SPADCALL (QCAR |frac|) |g|
+ (|getShellEntry| $ 77)))
+ (QCAR |frac|))
+ (PROGN
+ (RPLACD |frac|
+ (|PSETCAT-;exactQuo| (QCDR |frac|)
+ |g| $))
+ (QCDR |frac|))
+ (EXIT |frac|)))))))))
+
+(DEFUN |PSETCAT-;remainder;PSR;24| (|a| |ps| $)
+ (PROG (|hRa| |r| |lca| |g| |b| |c|)
+ (RETURN
+ (SEQ (LETT |hRa|
+ (|PSETCAT-;makeIrreducible!|
+ (SPADCALL |a| |ps| (|getShellEntry| $ 78)) $)
+ |PSETCAT-;remainder;PSR;24|)
+ (LETT |a| (QCAR |hRa|) |PSETCAT-;remainder;PSR;24|)
+ (LETT |r| (QCDR |hRa|) |PSETCAT-;remainder;PSR;24|)
+ (EXIT (COND
+ ((SPADCALL |a| (|getShellEntry| $ 43))
+ (VECTOR (|spadConstant| $ 62) |a| |r|))
+ ('T
+ (SEQ (LETT |b|
+ (SPADCALL (|spadConstant| $ 62)
+ (SPADCALL |a|
+ (|getShellEntry| $ 41))
+ (|getShellEntry| $ 68))
+ |PSETCAT-;remainder;PSR;24|)
+ (LETT |c|
+ (SPADCALL |a| (|getShellEntry| $ 65))
+ |PSETCAT-;remainder;PSR;24|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL
+ (LETT |a|
+ (SPADCALL |a|
+ (|getShellEntry| $ 63))
+ |PSETCAT-;remainder;PSR;24|)
+ (|getShellEntry| $ 43))
+ (|getShellEntry| $ 29)))
+ (GO G191)))
+ (SEQ (LETT |hRa|
+ (|PSETCAT-;makeIrreducible!|
+ (SPADCALL |a| |ps|
+ (|getShellEntry| $ 78))
+ $)
+ |PSETCAT-;remainder;PSR;24|)
+ (LETT |a| (QCAR |hRa|)
+ |PSETCAT-;remainder;PSR;24|)
+ (LETT |r|
+ (SPADCALL |r| (QCDR |hRa|)
+ (|getShellEntry| $ 71))
+ |PSETCAT-;remainder;PSR;24|)
+ (LETT |g|
+ (SPADCALL |c|
+ (LETT |lca|
+ (SPADCALL |a|
+ (|getShellEntry| $ 65))
+ |PSETCAT-;remainder;PSR;24|)
+ (|getShellEntry| $ 66))
+ |PSETCAT-;remainder;PSR;24|)
+ (LETT |b|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL (QCDR |hRa|)
+ (|PSETCAT-;exactQuo| |c| |g| $)
+ (|getShellEntry| $ 71))
+ |b| (|getShellEntry| $ 67))
+ (SPADCALL
+ (|PSETCAT-;exactQuo| |lca| |g| $)
+ (SPADCALL |a|
+ (|getShellEntry| $ 41))
+ (|getShellEntry| $ 68))
+ (|getShellEntry| $ 79))
+ |PSETCAT-;remainder;PSR;24|)
+ (EXIT
+ (LETT |c| |g|
+ |PSETCAT-;remainder;PSR;24|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (VECTOR |c| |b| |r|))))))))))
+
+(DEFUN |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25| (|ps| |cs| $)
+ (PROG (|p| |rs|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |cs| (|getShellEntry| $ 82)) |ps|)
+ ((SPADCALL |cs| (|getShellEntry| $ 83))
+ (LIST (|spadConstant| $ 84)))
+ ('T
+ (SEQ (LETT |ps|
+ (SPADCALL (ELT $ 43) |ps|
+ (|getShellEntry| $ 26))
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|)
+ (EXIT (COND
+ ((NULL |ps|) |ps|)
+ ((SPADCALL (ELT $ 24) |ps|
+ (|getShellEntry| $ 44))
+ (LIST (|spadConstant| $ 75)))
+ ('T
+ (SEQ (LETT |rs| NIL
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|)
+ (SEQ G190
+ (COND
+ ((NULL
+ (SPADCALL (NULL |ps|)
+ (|getShellEntry| $ 29)))
+ (GO G191)))
+ (SEQ
+ (LETT |p| (|SPADfirst| |ps|)
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|)
+ (LETT |ps| (CDR |ps|)
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|)
+ (LETT |p|
+ (QCAR
+ (SPADCALL |p| |cs|
+ (|getShellEntry| $ 78)))
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|)
+ (EXIT
+ (COND
+ ((NULL
+ (SPADCALL |p|
+ (|getShellEntry| $ 43)))
+ (COND
+ ((SPADCALL |p|
+ (|getShellEntry| $ 24))
+ (SEQ
+ (LETT |ps| NIL
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|)
+ (EXIT
+ (LETT |rs|
+ (LIST
+ (|spadConstant| $ 75))
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|))))
+ ('T
+ (SEQ
+ (SPADCALL |p|
+ (|getShellEntry| $ 85))
+ (EXIT
+ (LETT |rs|
+ (CONS |p| |rs|)
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|)))))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |rs|
+ (|getShellEntry| $ 86))))))))))))))
+
+(DEFUN |PSETCAT-;rewriteIdealWithRemainder;LSL;26| (|ps| |cs| $)
+ (PROG (|p| |rs|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |cs| (|getShellEntry| $ 82)) |ps|)
+ ((SPADCALL |cs| (|getShellEntry| $ 83))
+ (LIST (|spadConstant| $ 84)))
+ ('T
+ (SEQ (LETT |ps|
+ (SPADCALL (ELT $ 43) |ps|
+ (|getShellEntry| $ 26))
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|)
+ (EXIT (COND
+ ((NULL |ps|) |ps|)
+ ((SPADCALL (ELT $ 24) |ps|
+ (|getShellEntry| $ 44))
+ (LIST (|spadConstant| $ 75)))
+ ('T
+ (SEQ (LETT |rs| NIL
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|)
+ (SEQ G190
+ (COND
+ ((NULL
+ (SPADCALL (NULL |ps|)
+ (|getShellEntry| $ 29)))
+ (GO G191)))
+ (SEQ
+ (LETT |p| (|SPADfirst| |ps|)
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|)
+ (LETT |ps| (CDR |ps|)
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|)
+ (LETT |p|
+ (QVELT
+ (SPADCALL |p| |cs|
+ (|getShellEntry| $ 88))
+ 1)
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|)
+ (EXIT
+ (COND
+ ((NULL
+ (SPADCALL |p|
+ (|getShellEntry| $ 43)))
+ (COND
+ ((SPADCALL |p|
+ (|getShellEntry| $ 24))
+ (SEQ
+ (LETT |ps| NIL
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|)
+ (EXIT
+ (LETT |rs|
+ (LIST
+ (|spadConstant| $ 75))
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|))))
+ ('T
+ (LETT |rs|
+ (CONS
+ (SPADCALL |p|
+ (|getShellEntry| $ 89))
+ |rs|)
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |rs|
+ (|getShellEntry| $ 86))))))))))))))
+
+(DEFUN |PolynomialSetCategory&| (|#1| |#2| |#3| |#4| |#5|)
+ (PROG (|dv$1| |dv$2| |dv$3| |dv$4| |dv$5| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|)
+ . #0=(|PolynomialSetCategory&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$3| (|devaluate| |#3|) . #0#)
+ (LETT |dv$4| (|devaluate| |#4|) . #0#)
+ (LETT |dv$5| (|devaluate| |#5|) . #0#)
+ (LETT |dv$|
+ (LIST '|PolynomialSetCategory&| |dv$1| |dv$2| |dv$3|
+ |dv$4| |dv$5|) . #0#)
+ (LETT $ (|newShell| 91) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#2| '(|IntegralDomain|)))) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (|setShellEntry| $ 7 |#2|)
+ (|setShellEntry| $ 8 |#3|)
+ (|setShellEntry| $ 9 |#4|)
+ (|setShellEntry| $ 10 |#5|)
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (PROGN
+ (|setShellEntry| $ 49
+ (CONS (|dispatchFunction|
+ |PSETCAT-;roughUnitIdeal?;SB;16|)
+ $))
+ (|setShellEntry| $ 53
+ (CONS (|dispatchFunction| |PSETCAT-;roughBase?;SB;18|)
+ $))
+ (|setShellEntry| $ 55
+ (CONS (|dispatchFunction|
+ |PSETCAT-;roughSubIdeal?;2SB;19|)
+ $))
+ (|setShellEntry| $ 58
+ (CONS (|dispatchFunction|
+ |PSETCAT-;roughEqualIdeals?;2SB;20|)
+ $)))))
+ (COND
+ ((|HasCategory| |#2| '(|GcdDomain|))
+ (COND
+ ((|HasCategory| |#4| '(|ConvertibleTo| (|Symbol|)))
+ (PROGN
+ (|setShellEntry| $ 73
+ (CONS (|dispatchFunction|
+ |PSETCAT-;headRemainder;PSR;22|)
+ $))
+ (|setShellEntry| $ 81
+ (CONS (|dispatchFunction|
+ |PSETCAT-;remainder;PSR;24|)
+ $))
+ (|setShellEntry| $ 87
+ (CONS (|dispatchFunction|
+ |PSETCAT-;rewriteIdealWithHeadRemainder;LSL;25|)
+ $))
+ (|setShellEntry| $ 90
+ (CONS (|dispatchFunction|
+ |PSETCAT-;rewriteIdealWithRemainder;LSL;26|)
+ $)))))))
+ $))))
+
+(MAKEPROP '|PolynomialSetCategory&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|local| |#3|) (|local| |#4|) (|local| |#5|) (|List| 10)
+ (0 . |members|) (|List| 9) (5 . |variables|) (|Boolean|)
+ (10 . <) (|List| $) (16 . |concat|)
+ (21 . |removeDuplicates|) (|Mapping| 15 9 9) (26 . |sort|)
+ (32 . |mvar|) |PSETCAT-;variables;SL;4| (37 . |ground?|)
+ (|Mapping| 15 10) (42 . |remove|)
+ |PSETCAT-;mainVariables;SL;5| (48 . =) (54 . |not|)
+ |PSETCAT-;mainVariable?;VarSetSB;6| (59 . |construct|)
+ |PSETCAT-;collectUnder;SVarSetS;7|
+ |PSETCAT-;collectUpper;SVarSetS;8|
+ |PSETCAT-;collect;SVarSetS;9|
+ (|Record| (|:| |under| $) (|:| |floor| $) (|:| |upper| $))
+ |PSETCAT-;sort;SVarSetR;10| (|Set| 10) (64 . |brace|)
+ (69 . =) |PSETCAT-;=;2SB;11| (75 . |degree|) (80 . <)
+ (86 . |zero?|) (91 . |any?|) (|Mapping| 15 10 10)
+ (97 . |sort|) |PSETCAT-;triangular?;SB;14|
+ |PSETCAT-;trivialIdeal?;SB;15| (103 . |roughUnitIdeal?|)
+ (108 . |sup|) (114 . +) (120 . =) (126 . |roughBase?|)
+ (131 . |rewriteIdealWithRemainder|)
+ (137 . |roughSubIdeal?|) (143 . =)
+ (149 . |roughSubIdeal?|) (155 . |roughEqualIdeals?|)
+ (161 . |quo|) (|Union| $ '"failed") (167 . |exquo|)
+ (173 . |One|) (177 . |reductum|) (182 . |subtractIfCan|)
+ (188 . |leadingCoefficient|) (193 . |gcd|) (199 . *)
+ (205 . |monomial|) (211 . *) (217 . -) (223 . *)
+ (|Record| (|:| |num| 10) (|:| |den| 7))
+ (229 . |headRemainder|) (235 . |gcd|) (241 . |One|)
+ (245 . =) (251 . |exactQuotient!|) (257 . |headRemainder|)
+ (263 . +)
+ (|Record| (|:| |rnum| 7) (|:| |polnum| 10) (|:| |den| 7))
+ (269 . |remainder|) (275 . |trivialIdeal?|)
+ (280 . |roughUnitIdeal?|) (285 . |Zero|)
+ (289 . |primitivePart!|) (294 . |removeDuplicates|)
+ (299 . |rewriteIdealWithHeadRemainder|)
+ (305 . |remainder|) (311 . |unitCanonical|)
+ (316 . |rewriteIdealWithRemainder|))
+ '#(|variables| 322 |trivialIdeal?| 327 |triangular?| 332
+ |sort| 337 |roughUnitIdeal?| 343 |roughSubIdeal?| 348
+ |roughEqualIdeals?| 354 |roughBase?| 360
+ |rewriteIdealWithRemainder| 365
+ |rewriteIdealWithHeadRemainder| 371 |remainder| 377
+ |mainVariables| 383 |mainVariable?| 388 |headRemainder|
+ 394 |collectUpper| 400 |collectUnder| 406 |collect| 412 =
+ 418)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 90
+ '(1 6 11 0 12 1 10 13 0 14 2 9 15 0 0
+ 16 1 13 0 17 18 1 13 0 0 19 2 13 0 20
+ 0 21 1 10 9 0 22 1 10 15 0 24 2 11 0
+ 25 0 26 2 9 15 0 0 28 1 15 0 0 29 1 6
+ 0 11 31 1 37 0 11 38 2 37 15 0 0 39 1
+ 10 8 0 41 2 8 15 0 0 42 1 10 15 0 43
+ 2 11 15 25 0 44 2 11 0 45 0 46 1 0 15
+ 0 49 2 8 0 0 0 50 2 8 0 0 0 51 2 8 15
+ 0 0 52 1 0 15 0 53 2 6 11 11 0 54 2 0
+ 15 0 0 55 2 6 15 0 0 56 2 6 15 0 0 57
+ 2 0 15 0 0 58 2 7 0 0 0 59 2 7 60 0 0
+ 61 0 7 0 62 1 10 0 0 63 2 8 60 0 0 64
+ 1 10 7 0 65 2 7 0 0 0 66 2 10 0 7 0
+ 67 2 10 0 7 8 68 2 10 0 0 0 69 2 10 0
+ 0 0 70 2 7 0 0 0 71 2 0 72 10 0 73 2
+ 10 7 7 0 74 0 10 0 75 2 7 15 0 0 76 2
+ 10 0 0 7 77 2 6 72 10 0 78 2 10 0 0 0
+ 79 2 0 80 10 0 81 1 6 15 0 82 1 6 15
+ 0 83 0 10 0 84 1 10 0 0 85 1 11 0 0
+ 86 2 0 11 11 0 87 2 6 80 10 0 88 1 10
+ 0 0 89 2 0 11 11 0 90 1 0 13 0 23 1 0
+ 15 0 48 1 0 15 0 47 2 0 35 0 9 36 1 0
+ 15 0 49 2 0 15 0 0 55 2 0 15 0 0 58 1
+ 0 15 0 53 2 0 11 11 0 90 2 0 11 11 0
+ 87 2 0 80 10 0 81 1 0 13 0 27 2 0 15
+ 9 0 30 2 0 72 10 0 73 2 0 0 0 9 33 2
+ 0 0 0 9 32 2 0 0 0 9 34 2 0 15 0 0
+ 40)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/PSETCAT.lsp b/src/algebra/strap/PSETCAT.lsp
new file mode 100644
index 00000000..e4a1f465
--- /dev/null
+++ b/src/algebra/strap/PSETCAT.lsp
@@ -0,0 +1,123 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |PolynomialSetCategory;CAT| 'NIL)
+
+(DEFPARAMETER |PolynomialSetCategory;AL| 'NIL)
+
+(DEFUN |PolynomialSetCategory| (&REST #0=#:G1422 &AUX #1=#:G1420)
+ (DSETQ #1# #0#)
+ (LET (#2=#:G1421)
+ (COND
+ ((SETQ #2#
+ (|assoc| (|devaluateList| #1#) |PolynomialSetCategory;AL|))
+ (CDR #2#))
+ (T (SETQ |PolynomialSetCategory;AL|
+ (|cons5| (CONS (|devaluateList| #1#)
+ (SETQ #2#
+ (APPLY #'|PolynomialSetCategory;|
+ #1#)))
+ |PolynomialSetCategory;AL|))
+ #2#))))
+
+(DEFUN |PolynomialSetCategory;| (|t#1| |t#2| |t#3| |t#4|)
+ (PROG (#0=#:G1419)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1| |t#2| |t#3| |t#4|)
+ (LIST (|devaluate| |t#1|)
+ (|devaluate| |t#2|)
+ (|devaluate| |t#3|)
+ (|devaluate| |t#4|)))
+ (|sublisV|
+ (PAIR '(#1=#:G1418) (LIST '(|List| |t#4|)))
+ (COND
+ (|PolynomialSetCategory;CAT|)
+ ('T
+ (LETT |PolynomialSetCategory;CAT|
+ (|Join| (|SetCategory|)
+ (|Collection| '|t#4|)
+ (|CoercibleTo| '#1#)
+ (|mkCategory| '|domain|
+ '(((|retractIfCan|
+ ((|Union| $ "failed")
+ (|List| |t#4|)))
+ T)
+ ((|retract| ($ (|List| |t#4|)))
+ T)
+ ((|mvar| (|t#3| $)) T)
+ ((|variables|
+ ((|List| |t#3|) $))
+ T)
+ ((|mainVariables|
+ ((|List| |t#3|) $))
+ T)
+ ((|mainVariable?|
+ ((|Boolean|) |t#3| $))
+ T)
+ ((|collectUnder| ($ $ |t#3|))
+ T)
+ ((|collect| ($ $ |t#3|)) T)
+ ((|collectUpper| ($ $ |t#3|))
+ T)
+ ((|sort|
+ ((|Record| (|:| |under| $)
+ (|:| |floor| $)
+ (|:| |upper| $))
+ $ |t#3|))
+ T)
+ ((|trivialIdeal?|
+ ((|Boolean|) $))
+ T)
+ ((|roughBase?| ((|Boolean|) $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|roughSubIdeal?|
+ ((|Boolean|) $ $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|roughEqualIdeals?|
+ ((|Boolean|) $ $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|roughUnitIdeal?|
+ ((|Boolean|) $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|headRemainder|
+ ((|Record| (|:| |num| |t#4|)
+ (|:| |den| |t#1|))
+ |t#4| $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|remainder|
+ ((|Record| (|:| |rnum| |t#1|)
+ (|:| |polnum| |t#4|)
+ (|:| |den| |t#1|))
+ |t#4| $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|rewriteIdealWithHeadRemainder|
+ ((|List| |t#4|)
+ (|List| |t#4|) $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|rewriteIdealWithRemainder|
+ ((|List| |t#4|)
+ (|List| |t#4|) $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|triangular?|
+ ((|Boolean|) $))
+ (|has| |t#1|
+ (|IntegralDomain|))))
+ '((|finiteAggregate| T))
+ '((|Boolean|) (|List| |t#4|)
+ (|List| |t#3|))
+ NIL))
+ . #2=(|PolynomialSetCategory|)))))) . #2#)
+ (SETELT #0# 0
+ (LIST '|PolynomialSetCategory| (|devaluate| |t#1|)
+ (|devaluate| |t#2|) (|devaluate| |t#3|)
+ (|devaluate| |t#4|)))))))
diff --git a/src/algebra/strap/QFCAT-.lsp b/src/algebra/strap/QFCAT-.lsp
new file mode 100644
index 00000000..2197438a
--- /dev/null
+++ b/src/algebra/strap/QFCAT-.lsp
@@ -0,0 +1,440 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |QFCAT-;numerator;2A;1| (|x| $)
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8)) (|getShellEntry| $ 9)))
+
+(DEFUN |QFCAT-;denominator;2A;2| (|x| $)
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 9)))
+
+(DEFUN |QFCAT-;init;A;3| ($)
+ (SPADCALL (|spadConstant| $ 13) (|spadConstant| $ 14)
+ (|getShellEntry| $ 15)))
+
+(DEFUN |QFCAT-;nextItem;AU;4| (|n| $)
+ (PROG (|m|)
+ (RETURN
+ (SEQ (LETT |m|
+ (SPADCALL (SPADCALL |n| (|getShellEntry| $ 8))
+ (|getShellEntry| $ 18))
+ |QFCAT-;nextItem;AU;4|)
+ (EXIT (COND
+ ((QEQCAR |m| 1)
+ (|error| "We seem to have a Fraction of a finite object"))
+ ('T
+ (CONS 0
+ (SPADCALL (QCDR |m|) (|spadConstant| $ 14)
+ (|getShellEntry| $ 15))))))))))
+
+(DEFUN |QFCAT-;map;M2A;5| (|fn| |x| $)
+ (SPADCALL (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8)) |fn|)
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 11)) |fn|)
+ (|getShellEntry| $ 15)))
+
+(DEFUN |QFCAT-;reducedSystem;MM;6| (|m| $)
+ (SPADCALL |m| (|getShellEntry| $ 26)))
+
+(DEFUN |QFCAT-;characteristic;Nni;7| ($)
+ (SPADCALL (|getShellEntry| $ 30)))
+
+(DEFUN |QFCAT-;differentiate;AMA;8| (|x| |deriv| $)
+ (PROG (|n| |d|)
+ (RETURN
+ (SEQ (LETT |n| (SPADCALL |x| (|getShellEntry| $ 8))
+ |QFCAT-;differentiate;AMA;8|)
+ (LETT |d| (SPADCALL |x| (|getShellEntry| $ 11))
+ |QFCAT-;differentiate;AMA;8|)
+ (EXIT (SPADCALL
+ (SPADCALL
+ (SPADCALL (SPADCALL |n| |deriv|) |d|
+ (|getShellEntry| $ 32))
+ (SPADCALL |n| (SPADCALL |d| |deriv|)
+ (|getShellEntry| $ 32))
+ (|getShellEntry| $ 33))
+ (SPADCALL |d| 2 (|getShellEntry| $ 35))
+ (|getShellEntry| $ 15)))))))
+
+(DEFUN |QFCAT-;convert;AIf;9| (|x| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8))
+ (|getShellEntry| $ 38))
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 38))
+ (|getShellEntry| $ 39)))
+
+(DEFUN |QFCAT-;convert;AF;10| (|x| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8))
+ (|getShellEntry| $ 42))
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 42))
+ (|getShellEntry| $ 43)))
+
+(DEFUN |QFCAT-;convert;ADf;11| (|x| $)
+ (/ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8))
+ (|getShellEntry| $ 46))
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 46))))
+
+(DEFUN |QFCAT-;<;2AB;12| (|x| |y| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8))
+ (SPADCALL |y| (|getShellEntry| $ 11)) (|getShellEntry| $ 32))
+ (SPADCALL (SPADCALL |y| (|getShellEntry| $ 8))
+ (SPADCALL |x| (|getShellEntry| $ 11)) (|getShellEntry| $ 32))
+ (|getShellEntry| $ 49)))
+
+(DEFUN |QFCAT-;<;2AB;13| (|x| |y| $)
+ (PROG (|#G19| |#G20| |#G21| |#G22|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL (SPADCALL |x| (|getShellEntry| $ 11))
+ (|spadConstant| $ 51) (|getShellEntry| $ 49))
+ (PROGN
+ (LETT |#G19| |y| |QFCAT-;<;2AB;13|)
+ (LETT |#G20| |x| |QFCAT-;<;2AB;13|)
+ (LETT |x| |#G19| |QFCAT-;<;2AB;13|)
+ (LETT |y| |#G20| |QFCAT-;<;2AB;13|))))
+ (COND
+ ((SPADCALL (SPADCALL |y| (|getShellEntry| $ 11))
+ (|spadConstant| $ 51) (|getShellEntry| $ 49))
+ (PROGN
+ (LETT |#G21| |y| |QFCAT-;<;2AB;13|)
+ (LETT |#G22| |x| |QFCAT-;<;2AB;13|)
+ (LETT |x| |#G21| |QFCAT-;<;2AB;13|)
+ (LETT |y| |#G22| |QFCAT-;<;2AB;13|))))
+ (EXIT (SPADCALL
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8))
+ (SPADCALL |y| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 32))
+ (SPADCALL (SPADCALL |y| (|getShellEntry| $ 8))
+ (SPADCALL |x| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 32))
+ (|getShellEntry| $ 49)))))))
+
+(DEFUN |QFCAT-;<;2AB;14| (|x| |y| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8))
+ (SPADCALL |y| (|getShellEntry| $ 11)) (|getShellEntry| $ 32))
+ (SPADCALL (SPADCALL |y| (|getShellEntry| $ 8))
+ (SPADCALL |x| (|getShellEntry| $ 11)) (|getShellEntry| $ 32))
+ (|getShellEntry| $ 49)))
+
+(DEFUN |QFCAT-;fractionPart;2A;15| (|x| $)
+ (SPADCALL |x|
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 52))
+ (|getShellEntry| $ 9))
+ (|getShellEntry| $ 53)))
+
+(DEFUN |QFCAT-;coerce;SA;16| (|s| $)
+ (SPADCALL (SPADCALL |s| (|getShellEntry| $ 56))
+ (|getShellEntry| $ 9)))
+
+(DEFUN |QFCAT-;retract;AS;17| (|x| $)
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 58))
+ (|getShellEntry| $ 59)))
+
+(DEFUN |QFCAT-;retractIfCan;AU;18| (|x| $)
+ (PROG (|r|)
+ (RETURN
+ (SEQ (LETT |r| (SPADCALL |x| (|getShellEntry| $ 62))
+ |QFCAT-;retractIfCan;AU;18|)
+ (EXIT (COND
+ ((QEQCAR |r| 1) (CONS 1 "failed"))
+ ('T (SPADCALL (QCDR |r|) (|getShellEntry| $ 64)))))))))
+
+(DEFUN |QFCAT-;convert;AP;19| (|x| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8))
+ (|getShellEntry| $ 68))
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 68))
+ (|getShellEntry| $ 69)))
+
+(DEFUN |QFCAT-;patternMatch;AP2Pmr;20| (|x| |p| |l| $)
+ (SPADCALL |x| |p| |l| (|getShellEntry| $ 73)))
+
+(DEFUN |QFCAT-;convert;AP;21| (|x| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 8))
+ (|getShellEntry| $ 77))
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 77))
+ (|getShellEntry| $ 78)))
+
+(DEFUN |QFCAT-;patternMatch;AP2Pmr;22| (|x| |p| |l| $)
+ (SPADCALL |x| |p| |l| (|getShellEntry| $ 82)))
+
+(DEFUN |QFCAT-;coerce;FA;23| (|x| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 86))
+ (|getShellEntry| $ 87))
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 88))
+ (|getShellEntry| $ 87))
+ (|getShellEntry| $ 89)))
+
+(DEFUN |QFCAT-;retract;AI;24| (|x| $)
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 58))
+ (|getShellEntry| $ 91)))
+
+(DEFUN |QFCAT-;retractIfCan;AU;25| (|x| $)
+ (PROG (|u|)
+ (RETURN
+ (SEQ (LETT |u| (SPADCALL |x| (|getShellEntry| $ 62))
+ |QFCAT-;retractIfCan;AU;25|)
+ (EXIT (COND
+ ((QEQCAR |u| 1) (CONS 1 "failed"))
+ ('T (SPADCALL (QCDR |u|) (|getShellEntry| $ 94)))))))))
+
+(DEFUN |QFCAT-;random;A;26| ($)
+ (PROG (|d|)
+ (RETURN
+ (SEQ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (LETT |d|
+ (SPADCALL (|getShellEntry| $ 96))
+ |QFCAT-;random;A;26|)
+ (|getShellEntry| $ 97)))
+ (GO G191)))
+ (SEQ (EXIT |d|)) NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL (SPADCALL (|getShellEntry| $ 96)) |d|
+ (|getShellEntry| $ 15)))))))
+
+(DEFUN |QFCAT-;reducedSystem;MVR;27| (|m| |v| $)
+ (PROG (|n|)
+ (RETURN
+ (SEQ (LETT |n|
+ (SPADCALL
+ (SPADCALL (SPADCALL |v| (|getShellEntry| $ 100))
+ |m| (|getShellEntry| $ 101))
+ (|getShellEntry| $ 102))
+ |QFCAT-;reducedSystem;MVR;27|)
+ (EXIT (CONS (SPADCALL |n|
+ (SPADCALL |n| (|getShellEntry| $ 103))
+ (SPADCALL |n| (|getShellEntry| $ 104))
+ (+ 1 (SPADCALL |n| (|getShellEntry| $ 105)))
+ (SPADCALL |n| (|getShellEntry| $ 106))
+ (|getShellEntry| $ 107))
+ (SPADCALL |n|
+ (SPADCALL |n| (|getShellEntry| $ 105))
+ (|getShellEntry| $ 109))))))))
+
+(DEFUN |QuotientFieldCategory&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|)
+ . #0=(|QuotientFieldCategory&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$|
+ (LIST '|QuotientFieldCategory&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (|newShell| 120) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#2|
+ '(|PolynomialFactorizationExplicit|))
+ (|HasCategory| |#2|
+ '(|IntegerNumberSystem|))
+ (|HasCategory| |#2| '(|EuclideanDomain|))
+ (|HasCategory| |#2|
+ '(|RetractableTo| (|Symbol|)))
+ (|HasCategory| |#2|
+ '(|CharacteristicNonZero|))
+ (|HasCategory| |#2|
+ '(|CharacteristicZero|))
+ (|HasCategory| |#2|
+ '(|ConvertibleTo| (|InputForm|)))
+ (|HasCategory| |#2| '(|RealConstant|))
+ (|HasCategory| |#2|
+ '(|OrderedIntegralDomain|))
+ (|HasCategory| |#2| '(|OrderedSet|))
+ (|HasCategory| |#2|
+ '(|RetractableTo| (|Integer|)))
+ (|HasCategory| |#2| '(|StepThrough|)))) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (|setShellEntry| $ 7 |#2|)
+ (COND
+ ((|testBitVector| |pv$| 12)
+ (PROGN
+ (|setShellEntry| $ 16
+ (CONS (|dispatchFunction| |QFCAT-;init;A;3|) $))
+ (|setShellEntry| $ 20
+ (CONS (|dispatchFunction| |QFCAT-;nextItem;AU;4|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 7)
+ (|setShellEntry| $ 40
+ (CONS (|dispatchFunction| |QFCAT-;convert;AIf;9|) $))))
+ (COND
+ ((|testBitVector| |pv$| 8)
+ (PROGN
+ (|setShellEntry| $ 44
+ (CONS (|dispatchFunction| |QFCAT-;convert;AF;10|) $))
+ (|setShellEntry| $ 47
+ (CONS (|dispatchFunction| |QFCAT-;convert;ADf;11|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 9)
+ (COND
+ ((|HasAttribute| |#2| '|canonicalUnitNormal|)
+ (|setShellEntry| $ 50
+ (CONS (|dispatchFunction| |QFCAT-;<;2AB;12|) $)))
+ ('T
+ (|setShellEntry| $ 50
+ (CONS (|dispatchFunction| |QFCAT-;<;2AB;13|) $)))))
+ ((|testBitVector| |pv$| 10)
+ (|setShellEntry| $ 50
+ (CONS (|dispatchFunction| |QFCAT-;<;2AB;14|) $))))
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (|setShellEntry| $ 54
+ (CONS (|dispatchFunction| |QFCAT-;fractionPart;2A;15|)
+ $))))
+ (COND
+ ((|testBitVector| |pv$| 4)
+ (PROGN
+ (|setShellEntry| $ 57
+ (CONS (|dispatchFunction| |QFCAT-;coerce;SA;16|) $))
+ (|setShellEntry| $ 60
+ (CONS (|dispatchFunction| |QFCAT-;retract;AS;17|) $))
+ (|setShellEntry| $ 65
+ (CONS (|dispatchFunction| |QFCAT-;retractIfCan;AU;18|)
+ $)))))
+ (COND
+ ((|HasCategory| |#2|
+ '(|ConvertibleTo| (|Pattern| (|Integer|))))
+ (PROGN
+ (|setShellEntry| $ 70
+ (CONS (|dispatchFunction| |QFCAT-;convert;AP;19|) $))
+ (COND
+ ((|HasCategory| |#2| '(|PatternMatchable| (|Integer|)))
+ (|setShellEntry| $ 75
+ (CONS (|dispatchFunction|
+ |QFCAT-;patternMatch;AP2Pmr;20|)
+ $)))))))
+ (COND
+ ((|HasCategory| |#2|
+ '(|ConvertibleTo| (|Pattern| (|Float|))))
+ (PROGN
+ (|setShellEntry| $ 79
+ (CONS (|dispatchFunction| |QFCAT-;convert;AP;21|) $))
+ (COND
+ ((|HasCategory| |#2| '(|PatternMatchable| (|Float|)))
+ (|setShellEntry| $ 84
+ (CONS (|dispatchFunction|
+ |QFCAT-;patternMatch;AP2Pmr;22|)
+ $)))))))
+ (COND
+ ((|testBitVector| |pv$| 11)
+ (PROGN
+ (|setShellEntry| $ 90
+ (CONS (|dispatchFunction| |QFCAT-;coerce;FA;23|) $))
+ (COND
+ ((|domainEqual| |#2| (|Integer|)))
+ ('T
+ (PROGN
+ (|setShellEntry| $ 92
+ (CONS (|dispatchFunction| |QFCAT-;retract;AI;24|)
+ $))
+ (|setShellEntry| $ 95
+ (CONS (|dispatchFunction|
+ |QFCAT-;retractIfCan;AU;25|)
+ $))))))))
+ (COND
+ ((|testBitVector| |pv$| 2)
+ (|setShellEntry| $ 98
+ (CONS (|dispatchFunction| |QFCAT-;random;A;26|) $))))
+ $))))
+
+(MAKEPROP '|QuotientFieldCategory&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (0 . |numer|) (5 . |coerce|) |QFCAT-;numerator;2A;1|
+ (10 . |denom|) |QFCAT-;denominator;2A;2| (15 . |init|)
+ (19 . |One|) (23 . /) (29 . |init|) (|Union| $ '"failed")
+ (33 . |nextItem|) (38 . |One|) (42 . |nextItem|)
+ (|Mapping| 7 7) |QFCAT-;map;M2A;5| (|Matrix| 7)
+ (|Matrix| 6) (|MatrixCommonDenominator| 7 6)
+ (47 . |clearDenominator|) (|Matrix| $)
+ |QFCAT-;reducedSystem;MM;6| (|NonNegativeInteger|)
+ (52 . |characteristic|) |QFCAT-;characteristic;Nni;7|
+ (56 . *) (62 . -) (|PositiveInteger|) (68 . **)
+ |QFCAT-;differentiate;AMA;8| (|InputForm|)
+ (74 . |convert|) (79 . /) (85 . |convert|) (|Float|)
+ (90 . |convert|) (95 . /) (101 . |convert|)
+ (|DoubleFloat|) (106 . |convert|) (111 . |convert|)
+ (|Boolean|) (116 . <) (122 . <) (128 . |Zero|)
+ (132 . |wholePart|) (137 . -) (143 . |fractionPart|)
+ (|Symbol|) (148 . |coerce|) (153 . |coerce|)
+ (158 . |retract|) (163 . |retract|) (168 . |retract|)
+ (|Union| 7 '"failed") (173 . |retractIfCan|)
+ (|Union| 55 '"failed") (178 . |retractIfCan|)
+ (183 . |retractIfCan|) (|Integer|) (|Pattern| 66)
+ (188 . |convert|) (193 . /) (199 . |convert|)
+ (|PatternMatchResult| 66 6)
+ (|PatternMatchQuotientFieldCategory| 66 7 6)
+ (204 . |patternMatch|) (|PatternMatchResult| 66 $)
+ (211 . |patternMatch|) (|Pattern| 41) (218 . |convert|)
+ (223 . /) (229 . |convert|) (|PatternMatchResult| 41 6)
+ (|PatternMatchQuotientFieldCategory| 41 7 6)
+ (234 . |patternMatch|) (|PatternMatchResult| 41 $)
+ (241 . |patternMatch|) (|Fraction| 66) (248 . |numer|)
+ (253 . |coerce|) (258 . |denom|) (263 . /)
+ (269 . |coerce|) (274 . |retract|) (279 . |retract|)
+ (|Union| 66 '"failed") (284 . |retractIfCan|)
+ (289 . |retractIfCan|) (294 . |random|) (298 . |zero?|)
+ (303 . |random|) (|Vector| 6) (307 . |coerce|)
+ (312 . |horizConcat|) (318 . |reducedSystem|)
+ (323 . |minRowIndex|) (328 . |maxRowIndex|)
+ (333 . |minColIndex|) (338 . |maxColIndex|)
+ (343 . |subMatrix|) (|Vector| 7) (352 . |column|)
+ (|Record| (|:| |mat| 23) (|:| |vec| 108)) (|Vector| $)
+ |QFCAT-;reducedSystem;MVR;27| (|Union| 85 '"failed")
+ (|Matrix| 66) (|Vector| 66)
+ (|Record| (|:| |mat| 114) (|:| |vec| 115)) (|List| 55)
+ (|List| 29) (|OutputForm|))
+ '#(|retractIfCan| 358 |retract| 368 |reducedSystem| 378
+ |random| 389 |patternMatch| 393 |numerator| 407 |nextItem|
+ 412 |map| 417 |init| 423 |fractionPart| 427
+ |differentiate| 432 |denominator| 438 |convert| 443
+ |coerce| 468 |characteristic| 478 < 482)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 112
+ '(1 6 7 0 8 1 6 0 7 9 1 6 7 0 11 0 7 0
+ 13 0 7 0 14 2 6 0 7 7 15 0 0 0 16 1 7
+ 17 0 18 0 6 0 19 1 0 17 0 20 1 25 23
+ 24 26 0 7 29 30 2 7 0 0 0 32 2 7 0 0
+ 0 33 2 7 0 0 34 35 1 7 37 0 38 2 37 0
+ 0 0 39 1 0 37 0 40 1 7 41 0 42 2 41 0
+ 0 0 43 1 0 41 0 44 1 7 45 0 46 1 0 45
+ 0 47 2 7 48 0 0 49 2 0 48 0 0 50 0 7
+ 0 51 1 6 7 0 52 2 6 0 0 0 53 1 0 0 0
+ 54 1 7 0 55 56 1 0 0 55 57 1 6 7 0 58
+ 1 7 55 0 59 1 0 55 0 60 1 6 61 0 62 1
+ 7 63 0 64 1 0 63 0 65 1 7 67 0 68 2
+ 67 0 0 0 69 1 0 67 0 70 3 72 71 6 67
+ 71 73 3 0 74 0 67 74 75 1 7 76 0 77 2
+ 76 0 0 0 78 1 0 76 0 79 3 81 80 6 76
+ 80 82 3 0 83 0 76 83 84 1 85 66 0 86
+ 1 6 0 66 87 1 85 66 0 88 2 6 0 0 0 89
+ 1 0 0 85 90 1 7 66 0 91 1 0 66 0 92 1
+ 7 93 0 94 1 0 93 0 95 0 7 0 96 1 7 48
+ 0 97 0 0 0 98 1 24 0 99 100 2 24 0 0
+ 0 101 1 6 23 27 102 1 23 66 0 103 1
+ 23 66 0 104 1 23 66 0 105 1 23 66 0
+ 106 5 23 0 0 66 66 66 66 107 2 23 108
+ 0 66 109 1 0 93 0 95 1 0 63 0 65 1 0
+ 66 0 92 1 0 55 0 60 2 0 110 27 111
+ 112 1 0 23 27 28 0 0 0 98 3 0 83 0 76
+ 83 84 3 0 74 0 67 74 75 1 0 0 0 10 1
+ 0 17 0 20 2 0 0 21 0 22 0 0 0 16 1 0
+ 0 0 54 2 0 0 0 21 36 1 0 0 0 12 1 0
+ 45 0 47 1 0 37 0 40 1 0 41 0 44 1 0
+ 67 0 70 1 0 76 0 79 1 0 0 55 57 1 0 0
+ 85 90 0 0 29 31 2 0 48 0 0 50)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/QFCAT.lsp b/src/algebra/strap/QFCAT.lsp
new file mode 100644
index 00000000..babf745e
--- /dev/null
+++ b/src/algebra/strap/QFCAT.lsp
@@ -0,0 +1,105 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |QuotientFieldCategory;CAT| 'NIL)
+
+(DEFPARAMETER |QuotientFieldCategory;AL| 'NIL)
+
+(DEFUN |QuotientFieldCategory| (#0=#:G1388)
+ (LET (#1=#:G1389)
+ (COND
+ ((SETQ #1#
+ (|assoc| (|devaluate| #0#) |QuotientFieldCategory;AL|))
+ (CDR #1#))
+ (T (SETQ |QuotientFieldCategory;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1# (|QuotientFieldCategory;| #0#)))
+ |QuotientFieldCategory;AL|))
+ #1#))))
+
+(DEFUN |QuotientFieldCategory;| (|t#1|)
+ (PROG (#0=#:G1387)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (COND
+ (|QuotientFieldCategory;CAT|)
+ ('T
+ (LETT |QuotientFieldCategory;CAT|
+ (|Join| (|Field|) (|Algebra| '|t#1|)
+ (|RetractableTo| '|t#1|)
+ (|FullyEvalableOver| '|t#1|)
+ (|DifferentialExtension|
+ '|t#1|)
+ (|FullyLinearlyExplicitRingOver|
+ '|t#1|)
+ (|Patternable| '|t#1|)
+ (|FullyPatternMatchable|
+ '|t#1|)
+ (|mkCategory| '|domain|
+ '(((/ ($ |t#1| |t#1|)) T)
+ ((|numer| (|t#1| $)) T)
+ ((|denom| (|t#1| $)) T)
+ ((|numerator| ($ $)) T)
+ ((|denominator| ($ $)) T)
+ ((|wholePart| (|t#1| $))
+ (|has| |t#1|
+ (|EuclideanDomain|)))
+ ((|fractionPart| ($ $))
+ (|has| |t#1|
+ (|EuclideanDomain|)))
+ ((|random| ($))
+ (|has| |t#1|
+ (|IntegerNumberSystem|)))
+ ((|ceiling| (|t#1| $))
+ (|has| |t#1|
+ (|IntegerNumberSystem|)))
+ ((|floor| (|t#1| $))
+ (|has| |t#1|
+ (|IntegerNumberSystem|))))
+ '(((|StepThrough|)
+ (|has| |t#1|
+ (|StepThrough|)))
+ ((|RetractableTo|
+ (|Integer|))
+ (|has| |t#1|
+ (|RetractableTo|
+ (|Integer|))))
+ ((|RetractableTo|
+ (|Fraction| (|Integer|)))
+ (|has| |t#1|
+ (|RetractableTo|
+ (|Integer|))))
+ ((|OrderedSet|)
+ (|has| |t#1|
+ (|OrderedSet|)))
+ ((|OrderedIntegralDomain|)
+ (|has| |t#1|
+ (|OrderedIntegralDomain|)))
+ ((|RealConstant|)
+ (|has| |t#1|
+ (|RealConstant|)))
+ ((|ConvertibleTo|
+ (|InputForm|))
+ (|has| |t#1|
+ (|ConvertibleTo|
+ (|InputForm|))))
+ ((|CharacteristicZero|)
+ (|has| |t#1|
+ (|CharacteristicZero|)))
+ ((|CharacteristicNonZero|)
+ (|has| |t#1|
+ (|CharacteristicNonZero|)))
+ ((|RetractableTo|
+ (|Symbol|))
+ (|has| |t#1|
+ (|RetractableTo|
+ (|Symbol|))))
+ ((|PolynomialFactorizationExplicit|)
+ (|has| |t#1|
+ (|PolynomialFactorizationExplicit|))))
+ 'NIL NIL))
+ . #1=(|QuotientFieldCategory|))))) . #1#)
+ (SETELT #0# 0
+ (LIST '|QuotientFieldCategory| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/RCAGG-.lsp b/src/algebra/strap/RCAGG-.lsp
new file mode 100644
index 00000000..24470798
--- /dev/null
+++ b/src/algebra/strap/RCAGG-.lsp
@@ -0,0 +1,54 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |RCAGG-;elt;AvalueS;1| (|x| T0 $) (SPADCALL |x| (QREFELT $ 8)))
+
+(DEFUN |RCAGG-;setelt;Avalue2S;2| (|x| T1 |y| $)
+ (SPADCALL |x| |y| (QREFELT $ 11)))
+
+(DEFUN |RCAGG-;child?;2AB;3| (|x| |l| $)
+ (SPADCALL |x| (SPADCALL |l| (QREFELT $ 14)) (QREFELT $ 17)))
+
+(DEFUN |RecursiveAggregate&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|RecursiveAggregate&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$| (LIST '|RecursiveAggregate&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (GETREFV 19) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasAttribute| |#1| '|shallowlyMutable|)
+ (|HasCategory| |#2| '(|SetCategory|)))) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (QSETREFV $ 12
+ (CONS (|dispatchFunction| |RCAGG-;setelt;Avalue2S;2|) $))))
+ (COND
+ ((|testBitVector| |pv$| 2)
+ (QSETREFV $ 18
+ (CONS (|dispatchFunction| |RCAGG-;child?;2AB;3|) $))))
+ $))))
+
+(MAKEPROP '|RecursiveAggregate&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (0 . |value|) '"value" |RCAGG-;elt;AvalueS;1|
+ (5 . |setvalue!|) (11 . |setelt|) (|List| $)
+ (18 . |children|) (|Boolean|) (|List| 6) (23 . |member?|)
+ (29 . |child?|))
+ '#(|setelt| 35 |elt| 42 |child?| 48) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 18
+ '(1 6 7 0 8 2 6 7 0 7 11 3 0 7 0 9 7 12
+ 1 6 13 0 14 2 16 15 6 0 17 2 0 15 0 0
+ 18 3 0 7 0 9 7 12 2 0 7 0 9 10 2 0 15
+ 0 0 18)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/RCAGG.lsp b/src/algebra/strap/RCAGG.lsp
new file mode 100644
index 00000000..9981da27
--- /dev/null
+++ b/src/algebra/strap/RCAGG.lsp
@@ -0,0 +1,74 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |RecursiveAggregate;CAT| 'NIL)
+
+(DEFPARAMETER |RecursiveAggregate;AL| 'NIL)
+
+(DEFUN |RecursiveAggregate| (#0=#:G1398)
+ (LET (#1=#:G1399)
+ (COND
+ ((SETQ #1# (|assoc| (|devaluate| #0#) |RecursiveAggregate;AL|))
+ (CDR #1#))
+ (T (SETQ |RecursiveAggregate;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1# (|RecursiveAggregate;| #0#)))
+ |RecursiveAggregate;AL|))
+ #1#))))
+
+(DEFUN |RecursiveAggregate;| (|t#1|)
+ (PROG (#0=#:G1397)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (COND
+ (|RecursiveAggregate;CAT|)
+ ('T
+ (LETT |RecursiveAggregate;CAT|
+ (|Join| (|HomogeneousAggregate| '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|children| ((|List| $) $))
+ T)
+ ((|nodes| ((|List| $) $)) T)
+ ((|leaf?| ((|Boolean|) $))
+ T)
+ ((|value| (|t#1| $)) T)
+ ((|elt| (|t#1| $ "value"))
+ T)
+ ((|cyclic?| ((|Boolean|) $))
+ T)
+ ((|leaves|
+ ((|List| |t#1|) $))
+ T)
+ ((|distance|
+ ((|Integer|) $ $))
+ T)
+ ((|child?|
+ ((|Boolean|) $ $))
+ (|has| |t#1|
+ (|SetCategory|)))
+ ((|node?| ((|Boolean|) $ $))
+ (|has| |t#1|
+ (|SetCategory|)))
+ ((|setchildren!|
+ ($ $ (|List| $)))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|setelt|
+ (|t#1| $ "value" |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|setvalue!|
+ (|t#1| $ |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|))))
+ NIL
+ '((|List| $) (|Boolean|)
+ (|Integer|) (|List| |t#1|))
+ NIL))
+ . #1=(|RecursiveAggregate|))))) . #1#)
+ (SETELT #0# 0 (LIST '|RecursiveAggregate| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/REF.lsp b/src/algebra/strap/REF.lsp
new file mode 100644
index 00000000..ad9f6dd0
--- /dev/null
+++ b/src/algebra/strap/REF.lsp
@@ -0,0 +1,92 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|REF;=;2$B;1| '|SPADreplace| 'EQ)
+
+(DEFUN |REF;=;2$B;1| (|p| |q| $) (EQ |p| |q|))
+
+(PUT '|REF;ref;S$;2| '|SPADreplace| 'LIST)
+
+(DEFUN |REF;ref;S$;2| (|v| $) (LIST |v|))
+
+(PUT '|REF;elt;$S;3| '|SPADreplace| 'QCAR)
+
+(DEFUN |REF;elt;$S;3| (|p| $) (QCAR |p|))
+
+(DEFUN |REF;setelt;$2S;4| (|p| |v| $)
+ (PROGN (RPLACA |p| |v|) (QCAR |p|)))
+
+(PUT '|REF;deref;$S;5| '|SPADreplace| 'QCAR)
+
+(DEFUN |REF;deref;$S;5| (|p| $) (QCAR |p|))
+
+(DEFUN |REF;setref;$2S;6| (|p| |v| $)
+ (PROGN (RPLACA |p| |v|) (QCAR |p|)))
+
+(DEFUN |REF;coerce;$Of;7| (|p| $)
+ (SPADCALL (SPADCALL "ref" (|getShellEntry| $ 17))
+ (LIST (SPADCALL (QCAR |p|) (|getShellEntry| $ 18)))
+ (|getShellEntry| $ 20)))
+
+(DEFUN |Reference| (#0=#:G1401)
+ (PROG ()
+ (RETURN
+ (PROG (#1=#:G1402)
+ (RETURN
+ (COND
+ ((LETT #1#
+ (|lassocShiftWithFunction| (LIST (|devaluate| #0#))
+ (HGET |$ConstructorCache| '|Reference|)
+ '|domainEqualList|)
+ |Reference|)
+ (|CDRwithIncrement| #1#))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (|Reference;| #0#) (LETT #1# T |Reference|))
+ (COND
+ ((NOT #1#) (HREM |$ConstructorCache| '|Reference|)))))))))))
+
+(DEFUN |Reference;| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|Reference|))
+ (LETT |dv$| (LIST '|Reference| |dv$1|) . #0#)
+ (LETT $ (|newShell| 23) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#1| '(|SetCategory|)))) . #0#))
+ (|haddProp| |$ConstructorCache| '|Reference| (LIST |dv$1|)
+ (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (|setShellEntry| $ 7 (|Record| (|:| |value| |#1|)))
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (|setShellEntry| $ 21
+ (CONS (|dispatchFunction| |REF;coerce;$Of;7|) $))))
+ $))))
+
+(MAKEPROP '|Reference| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) '|Rep| (|Boolean|)
+ |REF;=;2$B;1| |REF;ref;S$;2| |REF;elt;$S;3|
+ |REF;setelt;$2S;4| |REF;deref;$S;5| |REF;setref;$2S;6|
+ (|String|) (|OutputForm|) (0 . |message|) (5 . |coerce|)
+ (|List| $) (10 . |prefix|) (16 . |coerce|)
+ (|SingleInteger|))
+ '#(~= 21 |setref| 27 |setelt| 33 |ref| 39 |latex| 44 |hash|
+ 49 |elt| 54 |deref| 59 |coerce| 64 = 69)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 '(1 0 1 1))
+ (CONS '#(|SetCategory&| NIL |BasicType&| NIL)
+ (CONS '#((|SetCategory|) (|Type|) (|BasicType|)
+ (|CoercibleTo| 16))
+ (|makeByteWordVec2| 22
+ '(1 16 0 15 17 1 6 16 0 18 2 16 0 0 19
+ 20 1 0 16 0 21 2 1 8 0 0 1 2 0 6 0 6
+ 14 2 0 6 0 6 12 1 0 0 6 10 1 1 15 0 1
+ 1 1 22 0 1 1 0 6 0 11 1 0 6 0 13 1 1
+ 16 0 21 2 0 8 0 0 9)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/RING-.lsp b/src/algebra/strap/RING-.lsp
new file mode 100644
index 00000000..31e6daf4
--- /dev/null
+++ b/src/algebra/strap/RING-.lsp
@@ -0,0 +1,29 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |RING-;coerce;IS;1| (|n| $)
+ (SPADCALL |n| (|spadConstant| $ 7) (QREFELT $ 9)))
+
+(DEFUN |Ring&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|Ring&|))
+ (LETT |dv$| (LIST '|Ring&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 12) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|Ring&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (0 . |One|)
+ (|Integer|) (4 . *) |RING-;coerce;IS;1| (|OutputForm|))
+ '#(|coerce| 10) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 10
+ '(0 6 0 7 2 6 0 8 0 9 1 0 0 8 10)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/RING.lsp b/src/algebra/strap/RING.lsp
new file mode 100644
index 00000000..47fce84a
--- /dev/null
+++ b/src/algebra/strap/RING.lsp
@@ -0,0 +1,25 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |Ring;AL| 'NIL)
+
+(DEFUN |Ring| ()
+ (LET (#:G1387) (COND (|Ring;AL|) (T (SETQ |Ring;AL| (|Ring;|))))))
+
+(DEFUN |Ring;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|Rng|) (|Monoid|) (|LeftModule| '$)
+ (|mkCategory| '|domain|
+ '(((|characteristic|
+ ((|NonNegativeInteger|)))
+ T)
+ ((|coerce| ($ (|Integer|))) T))
+ '((|unitsKnown| T))
+ '((|Integer|) (|NonNegativeInteger|))
+ NIL))
+ |Ring|)
+ (SETELT #0# 0 '(|Ring|))))))
+
+(MAKEPROP '|Ring| 'NILADIC T)
diff --git a/src/algebra/strap/RNG.lsp b/src/algebra/strap/RNG.lsp
new file mode 100644
index 00000000..5ba05b81
--- /dev/null
+++ b/src/algebra/strap/RNG.lsp
@@ -0,0 +1,15 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |Rng;AL| 'NIL)
+
+(DEFUN |Rng| ()
+ (LET (#:G1387) (COND (|Rng;AL|) (T (SETQ |Rng;AL| (|Rng;|))))))
+
+(DEFUN |Rng;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0# (|Join| (|AbelianGroup|) (|SemiGroup|)) |Rng|)
+ (SETELT #0# 0 '(|Rng|))))))
+
+(MAKEPROP '|Rng| 'NILADIC T)
diff --git a/src/algebra/strap/RNS-.lsp b/src/algebra/strap/RNS-.lsp
new file mode 100644
index 00000000..911b8420
--- /dev/null
+++ b/src/algebra/strap/RNS-.lsp
@@ -0,0 +1,144 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|RNS-;characteristic;Nni;1| '|SPADreplace| '(XLAM NIL 0))
+
+(DEFUN |RNS-;characteristic;Nni;1| ($) 0)
+
+(DEFUN |RNS-;fractionPart;2S;2| (|x| $)
+ (SPADCALL |x| (SPADCALL |x| (QREFELT $ 9)) (QREFELT $ 10)))
+
+(DEFUN |RNS-;truncate;2S;3| (|x| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 13))
+ (SPADCALL (SPADCALL (SPADCALL |x| (QREFELT $ 14)) (QREFELT $ 15))
+ (QREFELT $ 14)))
+ ('T (SPADCALL |x| (QREFELT $ 15)))))
+
+(DEFUN |RNS-;round;2S;4| (|x| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 13))
+ (SPADCALL
+ (SPADCALL |x|
+ (SPADCALL (|spadConstant| $ 17)
+ (SPADCALL 2 (QREFELT $ 19)) (QREFELT $ 20))
+ (QREFELT $ 10))
+ (QREFELT $ 9)))
+ ('T
+ (SPADCALL
+ (SPADCALL |x|
+ (SPADCALL (|spadConstant| $ 17)
+ (SPADCALL 2 (QREFELT $ 19)) (QREFELT $ 20))
+ (QREFELT $ 21))
+ (QREFELT $ 9)))))
+
+(DEFUN |RNS-;norm;2S;5| (|x| $) (SPADCALL |x| (QREFELT $ 23)))
+
+(DEFUN |RNS-;coerce;FS;6| (|x| $)
+ (SPADCALL (SPADCALL (SPADCALL |x| (QREFELT $ 26)) (QREFELT $ 19))
+ (SPADCALL (SPADCALL |x| (QREFELT $ 27)) (QREFELT $ 19))
+ (QREFELT $ 20)))
+
+(DEFUN |RNS-;convert;SP;7| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 30)) (QREFELT $ 32)))
+
+(DEFUN |RNS-;floor;2S;8| (|x| $)
+ (PROG (|x1|)
+ (RETURN
+ (SEQ (LETT |x1|
+ (SPADCALL (SPADCALL |x| (QREFELT $ 34))
+ (QREFELT $ 19))
+ |RNS-;floor;2S;8|)
+ (EXIT (COND
+ ((SPADCALL |x| |x1| (QREFELT $ 35)) |x|)
+ ((SPADCALL |x| (|spadConstant| $ 36) (QREFELT $ 37))
+ (SPADCALL |x1| (|spadConstant| $ 17)
+ (QREFELT $ 10)))
+ ('T |x1|)))))))
+
+(DEFUN |RNS-;ceiling;2S;9| (|x| $)
+ (PROG (|x1|)
+ (RETURN
+ (SEQ (LETT |x1|
+ (SPADCALL (SPADCALL |x| (QREFELT $ 34))
+ (QREFELT $ 19))
+ |RNS-;ceiling;2S;9|)
+ (EXIT (COND
+ ((SPADCALL |x| |x1| (QREFELT $ 35)) |x|)
+ ((SPADCALL |x| (|spadConstant| $ 36) (QREFELT $ 37))
+ |x1|)
+ ('T
+ (SPADCALL |x1| (|spadConstant| $ 17)
+ (QREFELT $ 21)))))))))
+
+(DEFUN |RNS-;patternMatch;SP2Pmr;10| (|x| |p| |l| $)
+ (PROG (|r|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |p| (QREFELT $ 40))
+ (SPADCALL |p| |x| |l| (QREFELT $ 42)))
+ ((SPADCALL |p| (QREFELT $ 43))
+ (SEQ (LETT |r| (SPADCALL |p| (QREFELT $ 45))
+ |RNS-;patternMatch;SP2Pmr;10|)
+ (EXIT (COND
+ ((QEQCAR |r| 0)
+ (COND
+ ((SPADCALL (SPADCALL |x| (QREFELT $ 30))
+ (QCDR |r|) (QREFELT $ 46))
+ |l|)
+ ('T (SPADCALL (QREFELT $ 47)))))
+ ('T (SPADCALL (QREFELT $ 47)))))))
+ ('T (SPADCALL (QREFELT $ 47))))))))
+
+(DEFUN |RealNumberSystem&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|RealNumberSystem&|))
+ (LETT |dv$| (LIST '|RealNumberSystem&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 52) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|RealNumberSystem&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|)
+ (|NonNegativeInteger|) |RNS-;characteristic;Nni;1|
+ (0 . |truncate|) (5 . -) |RNS-;fractionPart;2S;2|
+ (|Boolean|) (11 . |negative?|) (16 . -) (21 . |floor|)
+ |RNS-;truncate;2S;3| (26 . |One|) (|Integer|)
+ (30 . |coerce|) (35 . /) (41 . +) |RNS-;round;2S;4|
+ (47 . |abs|) |RNS-;norm;2S;5| (|Fraction| 18)
+ (52 . |numer|) (57 . |denom|) |RNS-;coerce;FS;6| (|Float|)
+ (62 . |convert|) (|Pattern| 29) (67 . |coerce|)
+ |RNS-;convert;SP;7| (72 . |wholePart|) (77 . =)
+ (83 . |Zero|) (87 . <) |RNS-;floor;2S;8|
+ |RNS-;ceiling;2S;9| (93 . |generic?|)
+ (|PatternMatchResult| 29 6) (98 . |addMatch|)
+ (105 . |constant?|) (|Union| 29 '"failed")
+ (110 . |retractIfCan|) (115 . =) (121 . |failed|)
+ (|PatternMatchResult| 29 $) |RNS-;patternMatch;SP2Pmr;10|
+ (|DoubleFloat|) (|OutputForm|))
+ '#(|truncate| 125 |round| 130 |patternMatch| 135 |norm| 142
+ |fractionPart| 147 |floor| 152 |convert| 157 |coerce| 162
+ |characteristic| 172 |ceiling| 176)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 49
+ '(1 6 0 0 9 2 6 0 0 0 10 1 6 12 0 13 1
+ 6 0 0 14 1 6 0 0 15 0 6 0 17 1 6 0 18
+ 19 2 6 0 0 0 20 2 6 0 0 0 21 1 6 0 0
+ 23 1 25 18 0 26 1 25 18 0 27 1 6 29 0
+ 30 1 31 0 29 32 1 6 18 0 34 2 6 12 0
+ 0 35 0 6 0 36 2 6 12 0 0 37 1 31 12 0
+ 40 3 41 0 31 6 0 42 1 31 12 0 43 1 31
+ 44 0 45 2 29 12 0 0 46 0 41 0 47 1 0
+ 0 0 16 1 0 0 0 22 3 0 48 0 31 48 49 1
+ 0 0 0 24 1 0 0 0 11 1 0 0 0 38 1 0 31
+ 0 33 1 0 0 25 28 1 0 0 25 28 0 0 7 8
+ 1 0 0 0 39)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/RNS.lsp b/src/algebra/strap/RNS.lsp
new file mode 100644
index 00000000..7955ad3e
--- /dev/null
+++ b/src/algebra/strap/RNS.lsp
@@ -0,0 +1,42 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |RealNumberSystem;AL| 'NIL)
+
+(DEFUN |RealNumberSystem| ()
+ (LET (#:G1396)
+ (COND
+ (|RealNumberSystem;AL|)
+ (T (SETQ |RealNumberSystem;AL| (|RealNumberSystem;|))))))
+
+(DEFUN |RealNumberSystem;| ()
+ (PROG (#0=#:G1394)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(#1=#:G1390 #2=#:G1391 #3=#:G1392
+ #4=#:G1393)
+ (LIST '(|Integer|)
+ '(|Fraction| (|Integer|))
+ '(|Pattern| (|Float|)) '(|Float|)))
+ (|Join| (|Field|) (|OrderedRing|)
+ (|RealConstant|) (|RetractableTo| '#1#)
+ (|RetractableTo| '#2#)
+ (|RadicalCategory|)
+ (|ConvertibleTo| '#3#)
+ (|PatternMatchable| '#4#)
+ (|CharacteristicZero|)
+ (|mkCategory| '|domain|
+ '(((|norm| ($ $)) T)
+ ((|ceiling| ($ $)) T)
+ ((|floor| ($ $)) T)
+ ((|wholePart| ((|Integer|) $)) T)
+ ((|fractionPart| ($ $)) T)
+ ((|truncate| ($ $)) T)
+ ((|round| ($ $)) T)
+ ((|abs| ($ $)) T))
+ NIL '((|Integer|)) NIL)))
+ |RealNumberSystem|)
+ (SETELT #0# 0 '(|RealNumberSystem|))))))
+
+(MAKEPROP '|RealNumberSystem| 'NILADIC T)
diff --git a/src/algebra/strap/SETAGG-.lsp b/src/algebra/strap/SETAGG-.lsp
new file mode 100644
index 00000000..de45a200
--- /dev/null
+++ b/src/algebra/strap/SETAGG-.lsp
@@ -0,0 +1,50 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |SETAGG-;symmetricDifference;3A;1| (|x| |y| $)
+ (SPADCALL (SPADCALL |x| |y| (|getShellEntry| $ 8))
+ (SPADCALL |y| |x| (|getShellEntry| $ 8)) (|getShellEntry| $ 9)))
+
+(DEFUN |SETAGG-;union;ASA;2| (|s| |x| $)
+ (SPADCALL |s| (SPADCALL (LIST |x|) (|getShellEntry| $ 12))
+ (|getShellEntry| $ 9)))
+
+(DEFUN |SETAGG-;union;S2A;3| (|x| |s| $)
+ (SPADCALL |s| (SPADCALL (LIST |x|) (|getShellEntry| $ 12))
+ (|getShellEntry| $ 9)))
+
+(DEFUN |SETAGG-;difference;ASA;4| (|s| |x| $)
+ (SPADCALL |s| (SPADCALL (LIST |x|) (|getShellEntry| $ 12))
+ (|getShellEntry| $ 8)))
+
+(DEFUN |SetAggregate&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|SetAggregate&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$| (LIST '|SetAggregate&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (|newShell| 16) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (|setShellEntry| $ 7 |#2|)
+ $))))
+
+(MAKEPROP '|SetAggregate&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (0 . |difference|) (6 . |union|)
+ |SETAGG-;symmetricDifference;3A;1| (|List| 7)
+ (12 . |brace|) |SETAGG-;union;ASA;2| |SETAGG-;union;S2A;3|
+ |SETAGG-;difference;ASA;4|)
+ '#(|union| 17 |symmetricDifference| 29 |difference| 35) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 15
+ '(2 6 0 0 0 8 2 6 0 0 0 9 1 6 0 11 12 2
+ 0 0 7 0 14 2 0 0 0 7 13 2 0 0 0 0 10
+ 2 0 0 0 7 15)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/SETAGG.lsp b/src/algebra/strap/SETAGG.lsp
new file mode 100644
index 00000000..e28d5608
--- /dev/null
+++ b/src/algebra/strap/SETAGG.lsp
@@ -0,0 +1,58 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |SetAggregate;CAT| 'NIL)
+
+(DEFPARAMETER |SetAggregate;AL| 'NIL)
+
+(DEFUN |SetAggregate| (#0=#:G1394)
+ (LET (#1=#:G1395)
+ (COND
+ ((SETQ #1# (|assoc| (|devaluate| #0#) |SetAggregate;AL|))
+ (CDR #1#))
+ (T (SETQ |SetAggregate;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1# (|SetAggregate;| #0#)))
+ |SetAggregate;AL|))
+ #1#))))
+
+(DEFUN |SetAggregate;| (|t#1|)
+ (PROG (#0=#:G1393)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (COND
+ (|SetAggregate;CAT|)
+ ('T
+ (LETT |SetAggregate;CAT|
+ (|Join| (|SetCategory|)
+ (|Collection| '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|part?| ((|Boolean|) $ $))
+ T)
+ ((|brace| ($)) T)
+ ((|brace|
+ ($ (|List| |t#1|)))
+ T)
+ ((|set| ($)) T)
+ ((|set| ($ (|List| |t#1|)))
+ T)
+ ((|intersect| ($ $ $)) T)
+ ((|difference| ($ $ $)) T)
+ ((|difference| ($ $ |t#1|))
+ T)
+ ((|symmetricDifference|
+ ($ $ $))
+ T)
+ ((|subset?|
+ ((|Boolean|) $ $))
+ T)
+ ((|union| ($ $ $)) T)
+ ((|union| ($ $ |t#1|)) T)
+ ((|union| ($ |t#1| $)) T))
+ '((|partiallyOrderedSet| T))
+ '((|Boolean|) (|List| |t#1|))
+ NIL))
+ . #1=(|SetAggregate|))))) . #1#)
+ (SETELT #0# 0 (LIST '|SetAggregate| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/SETCAT-.lsp b/src/algebra/strap/SETCAT-.lsp
new file mode 100644
index 00000000..d4c1987b
--- /dev/null
+++ b/src/algebra/strap/SETCAT-.lsp
@@ -0,0 +1,35 @@
+
+(/VERSIONCHECK 2)
+
+(PUT '|SETCAT-;hash;SSi;1| '|SPADreplace| '(XLAM (|s|) 0))
+
+(DEFUN |SETCAT-;hash;SSi;1| (|s| $) 0)
+
+(PUT '|SETCAT-;latex;SS;2| '|SPADreplace|
+ '(XLAM (|s|) "\\mbox{\\bf Unimplemented}"))
+
+(DEFUN |SETCAT-;latex;SS;2| (|s| $) "\\mbox{\\bf Unimplemented}")
+
+(DEFUN |SetCategory&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|SetCategory&|))
+ (LETT |dv$| (LIST '|SetCategory&| |dv$1|) . #0#)
+ (LETT $ (GETREFV 11) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|SetCategory&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|SingleInteger|)
+ |SETCAT-;hash;SSi;1| (|String|) |SETCAT-;latex;SS;2|)
+ '#(|latex| 0 |hash| 5) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 10
+ '(1 0 9 0 10 1 0 7 0 8)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/SETCAT.lsp b/src/algebra/strap/SETCAT.lsp
new file mode 100644
index 00000000..075d8993
--- /dev/null
+++ b/src/algebra/strap/SETCAT.lsp
@@ -0,0 +1,27 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |SetCategory;AL| 'NIL)
+
+(DEFUN |SetCategory| ()
+ (LET (#:G1388)
+ (COND
+ (|SetCategory;AL|)
+ (T (SETQ |SetCategory;AL| (|SetCategory;|))))))
+
+(DEFUN |SetCategory;| ()
+ (PROG (#0=#:G1386)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(#1=#:G1385) (LIST '(|OutputForm|)))
+ (|Join| (|BasicType|) (|CoercibleTo| '#1#)
+ (|mkCategory| '|domain|
+ '(((|hash| ((|SingleInteger|) $)) T)
+ ((|latex| ((|String|) $)) T))
+ NIL '((|String|) (|SingleInteger|))
+ NIL)))
+ |SetCategory|)
+ (SETELT #0# 0 '(|SetCategory|))))))
+
+(MAKEPROP '|SetCategory| 'NILADIC T)
diff --git a/src/algebra/strap/SINT.lsp b/src/algebra/strap/SINT.lsp
new file mode 100644
index 00000000..2ad4d6de
--- /dev/null
+++ b/src/algebra/strap/SINT.lsp
@@ -0,0 +1,463 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |SINT;writeOMSingleInt| (|dev| |x| $)
+ (SEQ (COND
+ ((QSLESSP |x| 0)
+ (SEQ (SPADCALL |dev| (|getShellEntry| $ 9))
+ (SPADCALL |dev| "arith1" "unaryminus"
+ (|getShellEntry| $ 11))
+ (SPADCALL |dev| (QSMINUS |x|) (|getShellEntry| $ 13))
+ (EXIT (SPADCALL |dev| (|getShellEntry| $ 14)))))
+ ('T (SPADCALL |dev| |x| (|getShellEntry| $ 13))))))
+
+(DEFUN |SINT;OMwrite;$S;2| (|x| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |SINT;OMwrite;$S;2|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |SINT;OMwrite;$S;2|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 16))
+ (|getShellEntry| $ 17))
+ |SINT;OMwrite;$S;2|)
+ (SPADCALL |dev| (|getShellEntry| $ 18))
+ (|SINT;writeOMSingleInt| |dev| |x| $)
+ (SPADCALL |dev| (|getShellEntry| $ 19))
+ (SPADCALL |dev| (|getShellEntry| $ 20))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|) |SINT;OMwrite;$S;2|)
+ (EXIT |s|)))))
+
+(DEFUN |SINT;OMwrite;$BS;3| (|x| |wholeObj| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |SINT;OMwrite;$BS;3|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |SINT;OMwrite;$BS;3|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 16))
+ (|getShellEntry| $ 17))
+ |SINT;OMwrite;$BS;3|)
+ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 18))))
+ (|SINT;writeOMSingleInt| |dev| |x| $)
+ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 19))))
+ (SPADCALL |dev| (|getShellEntry| $ 20))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|) |SINT;OMwrite;$BS;3|)
+ (EXIT |s|)))))
+
+(DEFUN |SINT;OMwrite;Omd$V;4| (|dev| |x| $)
+ (SEQ (SPADCALL |dev| (|getShellEntry| $ 18))
+ (|SINT;writeOMSingleInt| |dev| |x| $)
+ (EXIT (SPADCALL |dev| (|getShellEntry| $ 19)))))
+
+(DEFUN |SINT;OMwrite;Omd$BV;5| (|dev| |x| |wholeObj| $)
+ (SEQ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 18))))
+ (|SINT;writeOMSingleInt| |dev| |x| $)
+ (EXIT (COND
+ (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 19)))))))
+
+(PUT '|SINT;reducedSystem;MM;6| '|SPADreplace| '(XLAM (|m|) |m|))
+
+(DEFUN |SINT;reducedSystem;MM;6| (|m| $) |m|)
+
+(DEFUN |SINT;coerce;$Of;7| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 30)))
+
+(PUT '|SINT;convert;$I;8| '|SPADreplace| '(XLAM (|x|) |x|))
+
+(DEFUN |SINT;convert;$I;8| (|x| $) |x|)
+
+(DEFUN |SINT;*;I2$;9| (|i| |y| $)
+ (QSTIMES (SPADCALL |i| (|getShellEntry| $ 33)) |y|))
+
+(PUT '|SINT;Zero;$;10| '|SPADreplace| '(XLAM NIL 0))
+
+(DEFUN |SINT;Zero;$;10| ($) 0)
+
+(PUT '|SINT;One;$;11| '|SPADreplace| '(XLAM NIL 1))
+
+(DEFUN |SINT;One;$;11| ($) 1)
+
+(PUT '|SINT;base;$;12| '|SPADreplace| '(XLAM NIL 2))
+
+(DEFUN |SINT;base;$;12| ($) 2)
+
+(PUT '|SINT;max;$;13| '|SPADreplace| '(XLAM NIL MOST-POSITIVE-FIXNUM))
+
+(DEFUN |SINT;max;$;13| ($) MOST-POSITIVE-FIXNUM)
+
+(PUT '|SINT;min;$;14| '|SPADreplace| '(XLAM NIL MOST-NEGATIVE-FIXNUM))
+
+(DEFUN |SINT;min;$;14| ($) MOST-NEGATIVE-FIXNUM)
+
+(PUT '|SINT;=;2$B;15| '|SPADreplace| 'EQL)
+
+(DEFUN |SINT;=;2$B;15| (|x| |y| $) (EQL |x| |y|))
+
+(PUT '|SINT;~;2$;16| '|SPADreplace| 'LOGNOT)
+
+(DEFUN |SINT;~;2$;16| (|x| $) (LOGNOT |x|))
+
+(PUT '|SINT;not;2$;17| '|SPADreplace| 'LOGNOT)
+
+(DEFUN |SINT;not;2$;17| (|x| $) (LOGNOT |x|))
+
+(PUT '|SINT;/\\;3$;18| '|SPADreplace| 'LOGAND)
+
+(DEFUN |SINT;/\\;3$;18| (|x| |y| $) (LOGAND |x| |y|))
+
+(PUT '|SINT;\\/;3$;19| '|SPADreplace| 'LOGIOR)
+
+(DEFUN |SINT;\\/;3$;19| (|x| |y| $) (LOGIOR |x| |y|))
+
+(PUT '|SINT;Not;2$;20| '|SPADreplace| 'LOGNOT)
+
+(DEFUN |SINT;Not;2$;20| (|x| $) (LOGNOT |x|))
+
+(PUT '|SINT;And;3$;21| '|SPADreplace| 'LOGAND)
+
+(DEFUN |SINT;And;3$;21| (|x| |y| $) (LOGAND |x| |y|))
+
+(PUT '|SINT;Or;3$;22| '|SPADreplace| 'LOGIOR)
+
+(DEFUN |SINT;Or;3$;22| (|x| |y| $) (LOGIOR |x| |y|))
+
+(PUT '|SINT;xor;3$;23| '|SPADreplace| 'LOGXOR)
+
+(DEFUN |SINT;xor;3$;23| (|x| |y| $) (LOGXOR |x| |y|))
+
+(PUT '|SINT;<;2$B;24| '|SPADreplace| 'QSLESSP)
+
+(DEFUN |SINT;<;2$B;24| (|x| |y| $) (QSLESSP |x| |y|))
+
+(PUT '|SINT;inc;2$;25| '|SPADreplace| 'QSADD1)
+
+(DEFUN |SINT;inc;2$;25| (|x| $) (QSADD1 |x|))
+
+(PUT '|SINT;dec;2$;26| '|SPADreplace| 'QSSUB1)
+
+(DEFUN |SINT;dec;2$;26| (|x| $) (QSSUB1 |x|))
+
+(PUT '|SINT;-;2$;27| '|SPADreplace| 'QSMINUS)
+
+(DEFUN |SINT;-;2$;27| (|x| $) (QSMINUS |x|))
+
+(PUT '|SINT;+;3$;28| '|SPADreplace| 'QSPLUS)
+
+(DEFUN |SINT;+;3$;28| (|x| |y| $) (QSPLUS |x| |y|))
+
+(PUT '|SINT;-;3$;29| '|SPADreplace| 'QSDIFFERENCE)
+
+(DEFUN |SINT;-;3$;29| (|x| |y| $) (QSDIFFERENCE |x| |y|))
+
+(PUT '|SINT;*;3$;30| '|SPADreplace| 'QSTIMES)
+
+(DEFUN |SINT;*;3$;30| (|x| |y| $) (QSTIMES |x| |y|))
+
+(DEFUN |SINT;**;$Nni$;31| (|x| |n| $)
+ (SPADCALL (EXPT |x| |n|) (|getShellEntry| $ 33)))
+
+(PUT '|SINT;quo;3$;32| '|SPADreplace| 'QSQUOTIENT)
+
+(DEFUN |SINT;quo;3$;32| (|x| |y| $) (QSQUOTIENT |x| |y|))
+
+(PUT '|SINT;rem;3$;33| '|SPADreplace| 'QSREMAINDER)
+
+(DEFUN |SINT;rem;3$;33| (|x| |y| $) (QSREMAINDER |x| |y|))
+
+(DEFUN |SINT;divide;2$R;34| (|x| |y| $)
+ (CONS (QSQUOTIENT |x| |y|) (QSREMAINDER |x| |y|)))
+
+(PUT '|SINT;gcd;3$;35| '|SPADreplace| 'GCD)
+
+(DEFUN |SINT;gcd;3$;35| (|x| |y| $) (GCD |x| |y|))
+
+(PUT '|SINT;abs;2$;36| '|SPADreplace| 'QSABSVAL)
+
+(DEFUN |SINT;abs;2$;36| (|x| $) (QSABSVAL |x|))
+
+(PUT '|SINT;odd?;$B;37| '|SPADreplace| 'QSODDP)
+
+(DEFUN |SINT;odd?;$B;37| (|x| $) (QSODDP |x|))
+
+(PUT '|SINT;zero?;$B;38| '|SPADreplace| 'QSZEROP)
+
+(DEFUN |SINT;zero?;$B;38| (|x| $) (QSZEROP |x|))
+
+(PUT '|SINT;one?;$B;39| '|SPADreplace| '(XLAM (|x|) (EQL |x| 1)))
+
+(DEFUN |SINT;one?;$B;39| (|x| $) (EQL |x| 1))
+
+(PUT '|SINT;max;3$;40| '|SPADreplace| 'QSMAX)
+
+(DEFUN |SINT;max;3$;40| (|x| |y| $) (QSMAX |x| |y|))
+
+(PUT '|SINT;min;3$;41| '|SPADreplace| 'QSMIN)
+
+(DEFUN |SINT;min;3$;41| (|x| |y| $) (QSMIN |x| |y|))
+
+(PUT '|SINT;hash;2$;42| '|SPADreplace| 'HASHEQ)
+
+(DEFUN |SINT;hash;2$;42| (|x| $) (HASHEQ |x|))
+
+(PUT '|SINT;length;2$;43| '|SPADreplace| 'INTEGER-LENGTH)
+
+(DEFUN |SINT;length;2$;43| (|x| $) (INTEGER-LENGTH |x|))
+
+(PUT '|SINT;shift;3$;44| '|SPADreplace| 'QSLEFTSHIFT)
+
+(DEFUN |SINT;shift;3$;44| (|x| |n| $) (QSLEFTSHIFT |x| |n|))
+
+(PUT '|SINT;mulmod;4$;45| '|SPADreplace| 'QSMULTMOD)
+
+(DEFUN |SINT;mulmod;4$;45| (|a| |b| |p| $) (QSMULTMOD |a| |b| |p|))
+
+(PUT '|SINT;addmod;4$;46| '|SPADreplace| 'QSADDMOD)
+
+(DEFUN |SINT;addmod;4$;46| (|a| |b| |p| $) (QSADDMOD |a| |b| |p|))
+
+(PUT '|SINT;submod;4$;47| '|SPADreplace| 'QSDIFMOD)
+
+(DEFUN |SINT;submod;4$;47| (|a| |b| |p| $) (QSDIFMOD |a| |b| |p|))
+
+(PUT '|SINT;negative?;$B;48| '|SPADreplace| 'QSMINUSP)
+
+(DEFUN |SINT;negative?;$B;48| (|x| $) (QSMINUSP |x|))
+
+(PUT '|SINT;reducedSystem;MVR;49| '|SPADreplace| 'CONS)
+
+(DEFUN |SINT;reducedSystem;MVR;49| (|m| |v| $) (CONS |m| |v|))
+
+(DEFUN |SINT;positiveRemainder;3$;50| (|x| |n| $)
+ (PROG (|r|)
+ (RETURN
+ (SEQ (LETT |r| (QSREMAINDER |x| |n|)
+ |SINT;positiveRemainder;3$;50|)
+ (EXIT (COND
+ ((QSMINUSP |r|)
+ (COND
+ ((QSMINUSP |n|) (QSDIFFERENCE |x| |n|))
+ ('T (QSPLUS |r| |n|))))
+ ('T |r|)))))))
+
+(DEFUN |SINT;coerce;I$;51| (|x| $)
+ (SEQ (COND
+ ((NULL (< MOST-POSITIVE-FIXNUM |x|))
+ (COND ((NULL (< |x| MOST-NEGATIVE-FIXNUM)) (EXIT |x|)))))
+ (EXIT (|error| "integer too large to represent in a machine word"))))
+
+(DEFUN |SINT;random;$;52| ($)
+ (SEQ (SETELT $ 6
+ (REMAINDER (TIMES 314159269 (|getShellEntry| $ 6))
+ 2147483647))
+ (EXIT (REMAINDER (|getShellEntry| $ 6) 67108864))))
+
+(PUT '|SINT;random;2$;53| '|SPADreplace| 'RANDOM)
+
+(DEFUN |SINT;random;2$;53| (|n| $) (RANDOM |n|))
+
+(DEFUN |SINT;unitNormal;$R;54| (|x| $)
+ (COND
+ ((QSLESSP |x| 0) (VECTOR -1 (QSMINUS |x|) -1))
+ ('T (VECTOR 1 |x| 1))))
+
+(DEFUN |SingleInteger| ()
+ (PROG ()
+ (RETURN
+ (PROG (#0=#:G1486)
+ (RETURN
+ (COND
+ ((LETT #0# (HGET |$ConstructorCache| '|SingleInteger|)
+ |SingleInteger|)
+ (|CDRwithIncrement| (CDAR #0#)))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (CDDAR (HPUT |$ConstructorCache| '|SingleInteger|
+ (LIST
+ (CONS NIL
+ (CONS 1 (|SingleInteger;|))))))
+ (LETT #0# T |SingleInteger|))
+ (COND
+ ((NOT #0#)
+ (HREM |$ConstructorCache| '|SingleInteger|)))))))))))
+
+(DEFUN |SingleInteger;| ()
+ (PROG (|dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| '(|SingleInteger|) . #0=(|SingleInteger|))
+ (LETT $ (|newShell| 105) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|haddProp| |$ConstructorCache| '|SingleInteger| NIL
+ (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 1)
+ $))))
+
+(MAKEPROP '|SingleInteger| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL '|seed| (|Void|)
+ (|OpenMathDevice|) (0 . |OMputApp|) (|String|)
+ (5 . |OMputSymbol|) (|Integer|) (12 . |OMputInteger|)
+ (18 . |OMputEndApp|) (|OpenMathEncoding|)
+ (23 . |OMencodingXML|) (27 . |OMopenString|)
+ (33 . |OMputObject|) (38 . |OMputEndObject|)
+ (43 . |OMclose|) |SINT;OMwrite;$S;2| (|Boolean|)
+ |SINT;OMwrite;$BS;3| |SINT;OMwrite;Omd$V;4|
+ |SINT;OMwrite;Omd$BV;5| (|Matrix| 12) (|Matrix| $)
+ |SINT;reducedSystem;MM;6| (|OutputForm|) (48 . |coerce|)
+ |SINT;coerce;$Of;7| |SINT;convert;$I;8| (53 . |coerce|)
+ |SINT;*;I2$;9|
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |SINT;Zero;$;10|) $))
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |SINT;One;$;11|) $))
+ |SINT;base;$;12| |SINT;max;$;13| |SINT;min;$;14|
+ |SINT;=;2$B;15| |SINT;~;2$;16| |SINT;not;2$;17|
+ |SINT;/\\;3$;18| |SINT;\\/;3$;19| |SINT;Not;2$;20|
+ |SINT;And;3$;21| |SINT;Or;3$;22| |SINT;xor;3$;23|
+ |SINT;<;2$B;24| |SINT;inc;2$;25| |SINT;dec;2$;26|
+ |SINT;-;2$;27| |SINT;+;3$;28| |SINT;-;3$;29|
+ |SINT;*;3$;30| (|NonNegativeInteger|) |SINT;**;$Nni$;31|
+ |SINT;quo;3$;32| |SINT;rem;3$;33|
+ (|Record| (|:| |quotient| $) (|:| |remainder| $))
+ |SINT;divide;2$R;34| |SINT;gcd;3$;35| |SINT;abs;2$;36|
+ |SINT;odd?;$B;37| |SINT;zero?;$B;38| |SINT;one?;$B;39|
+ |SINT;max;3$;40| |SINT;min;3$;41| |SINT;hash;2$;42|
+ |SINT;length;2$;43| |SINT;shift;3$;44| |SINT;mulmod;4$;45|
+ |SINT;addmod;4$;46| |SINT;submod;4$;47|
+ |SINT;negative?;$B;48| (|Vector| 12)
+ (|Record| (|:| |mat| 26) (|:| |vec| 76)) (|Vector| $)
+ |SINT;reducedSystem;MVR;49| |SINT;positiveRemainder;3$;50|
+ |SINT;coerce;I$;51| |SINT;random;$;52| |SINT;random;2$;53|
+ (|Record| (|:| |unit| $) (|:| |canonical| $)
+ (|:| |associate| $))
+ |SINT;unitNormal;$R;54| (|Fraction| 12)
+ (|Union| 86 '"failed") (|Union| $ '"failed") (|Float|)
+ (|DoubleFloat|) (|Pattern| 12) (|PatternMatchResult| 12 $)
+ (|InputForm|) (|Union| 12 '"failed") (|List| $)
+ (|Record| (|:| |coef| 95) (|:| |generator| $))
+ (|Union| 95 '"failed")
+ (|Record| (|:| |coef1| $) (|:| |coef2| $)
+ (|:| |generator| $))
+ (|Record| (|:| |coef1| $) (|:| |coef2| $))
+ (|Union| 99 '"failed") (|Factored| $)
+ (|SparseUnivariatePolynomial| $) (|PositiveInteger|)
+ (|SingleInteger|))
+ '#(~= 58 ~ 64 |zero?| 69 |xor| 74 |unitNormal| 80
+ |unitCanonical| 85 |unit?| 90 |symmetricRemainder| 95
+ |subtractIfCan| 101 |submod| 107 |squareFreePart| 114
+ |squareFree| 119 |sizeLess?| 124 |sign| 130 |shift| 135
+ |sample| 141 |retractIfCan| 145 |retract| 150 |rem| 155
+ |reducedSystem| 161 |recip| 172 |rationalIfCan| 177
+ |rational?| 182 |rational| 187 |random| 192 |quo| 201
+ |principalIdeal| 207 |prime?| 212 |powmod| 217
+ |positiveRemainder| 224 |positive?| 230 |permutation| 235
+ |patternMatch| 241 |one?| 248 |odd?| 253 |not| 258
+ |nextItem| 263 |negative?| 268 |multiEuclidean| 273
+ |mulmod| 279 |min| 286 |max| 296 |mask| 306 |length| 311
+ |lcm| 316 |latex| 327 |invmod| 332 |init| 338 |inc| 342
+ |hash| 347 |gcdPolynomial| 357 |gcd| 363 |factorial| 374
+ |factor| 379 |extendedEuclidean| 384 |exquo| 397
+ |expressIdealMember| 403 |even?| 409 |euclideanSize| 414
+ |divide| 419 |differentiate| 425 |dec| 436 |copy| 441
+ |convert| 446 |coerce| 471 |characteristic| 491 |bit?| 495
+ |binomial| 501 |base| 507 |associates?| 511 |addmod| 517
+ |abs| 524 ^ 529 |\\/| 541 |Zero| 547 |Or| 551 |One| 557
+ |OMwrite| 561 |Not| 585 D 590 |And| 601 >= 607 > 613 = 619
+ <= 625 < 631 |/\\| 637 - 643 + 654 ** 660 * 672)
+ '((|noetherian| . 0) (|canonicalsClosed| . 0)
+ (|canonical| . 0) (|canonicalUnitNormal| . 0)
+ (|multiplicativeValuation| . 0) (|noZeroDivisors| . 0)
+ ((|commutative| "*") . 0) (|rightUnitary| . 0)
+ (|leftUnitary| . 0) (|unitsKnown| . 0))
+ (CONS (|makeByteWordVec2| 1
+ '(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
+ (CONS '#(|IntegerNumberSystem&| |EuclideanDomain&|
+ |UniqueFactorizationDomain&| NIL NIL
+ |GcdDomain&| |IntegralDomain&| |Algebra&| NIL
+ NIL |DifferentialRing&| |OrderedRing&| NIL NIL
+ |Module&| NIL NIL |Ring&| NIL NIL NIL NIL NIL
+ |AbelianGroup&| NIL NIL |AbelianMonoid&|
+ |Monoid&| NIL NIL |OrderedSet&|
+ |AbelianSemiGroup&| |SemiGroup&| |Logic&| NIL
+ |SetCategory&| NIL NIL NIL NIL NIL NIL
+ |RetractableTo&| NIL |BasicType&| NIL)
+ (CONS '#((|IntegerNumberSystem|)
+ (|EuclideanDomain|)
+ (|UniqueFactorizationDomain|)
+ (|PrincipalIdealDomain|)
+ (|OrderedIntegralDomain|) (|GcdDomain|)
+ (|IntegralDomain|) (|Algebra| $$)
+ (|CharacteristicZero|)
+ (|LinearlyExplicitRingOver| 12)
+ (|DifferentialRing|) (|OrderedRing|)
+ (|CommutativeRing|) (|EntireRing|)
+ (|Module| $$) (|OrderedAbelianGroup|)
+ (|BiModule| $$ $$) (|Ring|)
+ (|OrderedCancellationAbelianMonoid|)
+ (|LeftModule| $$) (|Rng|)
+ (|RightModule| $$)
+ (|OrderedAbelianMonoid|)
+ (|AbelianGroup|)
+ (|OrderedAbelianSemiGroup|)
+ (|CancellationAbelianMonoid|)
+ (|AbelianMonoid|) (|Monoid|)
+ (|StepThrough|) (|PatternMatchable| 12)
+ (|OrderedSet|) (|AbelianSemiGroup|)
+ (|SemiGroup|) (|Logic|) (|RealConstant|)
+ (|SetCategory|) (|OpenMath|)
+ (|ConvertibleTo| 89)
+ (|ConvertibleTo| 90)
+ (|CombinatorialFunctionCategory|)
+ (|ConvertibleTo| 91)
+ (|ConvertibleTo| 93)
+ (|RetractableTo| 12)
+ (|ConvertibleTo| 12) (|BasicType|)
+ (|CoercibleTo| 29))
+ (|makeByteWordVec2| 104
+ '(1 8 7 0 9 3 8 7 0 10 10 11 2 8 7 0 12
+ 13 1 8 7 0 14 0 15 0 16 2 8 0 10 15
+ 17 1 8 7 0 18 1 8 7 0 19 1 8 7 0 20 1
+ 12 29 0 30 1 0 0 12 33 2 0 22 0 0 1 1
+ 0 0 0 41 1 0 22 0 65 2 0 0 0 0 48 1 0
+ 84 0 85 1 0 0 0 1 1 0 22 0 1 2 0 0 0
+ 0 1 2 0 88 0 0 1 3 0 0 0 0 0 74 1 0 0
+ 0 1 1 0 101 0 1 2 0 22 0 0 1 1 0 12 0
+ 1 2 0 0 0 0 71 0 0 0 1 1 0 94 0 1 1 0
+ 12 0 1 2 0 0 0 0 59 1 0 26 27 28 2 0
+ 77 27 78 79 1 0 88 0 1 1 0 87 0 1 1 0
+ 22 0 1 1 0 86 0 1 1 0 0 0 83 0 0 0 82
+ 2 0 0 0 0 58 1 0 96 95 1 1 0 22 0 1 3
+ 0 0 0 0 0 1 2 0 0 0 0 80 1 0 22 0 1 2
+ 0 0 0 0 1 3 0 92 0 91 92 1 1 0 22 0
+ 66 1 0 22 0 64 1 0 0 0 42 1 0 88 0 1
+ 1 0 22 0 75 2 0 97 95 0 1 3 0 0 0 0 0
+ 72 0 0 0 39 2 0 0 0 0 68 0 0 0 38 2 0
+ 0 0 0 67 1 0 0 0 1 1 0 0 0 70 1 0 0
+ 95 1 2 0 0 0 0 1 1 0 10 0 1 2 0 0 0 0
+ 1 0 0 0 1 1 0 0 0 50 1 0 0 0 69 1 0
+ 104 0 1 2 0 102 102 102 1 1 0 0 95 1
+ 2 0 0 0 0 62 1 0 0 0 1 1 0 101 0 1 2
+ 0 98 0 0 1 3 0 100 0 0 0 1 2 0 88 0 0
+ 1 2 0 97 95 0 1 1 0 22 0 1 1 0 56 0 1
+ 2 0 60 0 0 61 1 0 0 0 1 2 0 0 0 56 1
+ 1 0 0 0 51 1 0 0 0 1 1 0 89 0 1 1 0
+ 90 0 1 1 0 91 0 1 1 0 93 0 1 1 0 12 0
+ 32 1 0 0 12 81 1 0 0 0 1 1 0 0 12 81
+ 1 0 29 0 31 0 0 56 1 2 0 22 0 0 1 2 0
+ 0 0 0 1 0 0 0 37 2 0 22 0 0 1 3 0 0 0
+ 0 0 73 1 0 0 0 63 2 0 0 0 56 1 2 0 0
+ 0 103 1 2 0 0 0 0 44 0 0 0 35 2 0 0 0
+ 0 47 0 0 0 36 3 0 7 8 0 22 25 2 0 10
+ 0 22 23 2 0 7 8 0 24 1 0 10 0 21 1 0
+ 0 0 45 1 0 0 0 1 2 0 0 0 56 1 2 0 0 0
+ 0 46 2 0 22 0 0 1 2 0 22 0 0 1 2 0 22
+ 0 0 40 2 0 22 0 0 1 2 0 22 0 0 49 2 0
+ 0 0 0 43 1 0 0 0 52 2 0 0 0 0 54 2 0
+ 0 0 0 53 2 0 0 0 56 57 2 0 0 0 103 1
+ 2 0 0 0 0 55 2 0 0 12 0 34 2 0 0 56 0
+ 1 2 0 0 103 0 1)))))
+ '|lookupComplete|))
+
+(MAKEPROP '|SingleInteger| 'NILADIC T)
diff --git a/src/algebra/strap/STAGG-.lsp b/src/algebra/strap/STAGG-.lsp
new file mode 100644
index 00000000..4b967563
--- /dev/null
+++ b/src/algebra/strap/STAGG-.lsp
@@ -0,0 +1,297 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |STAGG-;explicitlyFinite?;AB;1| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 9)) (QREFELT $ 10)))
+
+(DEFUN |STAGG-;possiblyInfinite?;AB;2| (|x| $)
+ (SPADCALL |x| (QREFELT $ 9)))
+
+(DEFUN |STAGG-;first;ANniA;3| (|x| |n| $)
+ (PROG (#0=#:G1411 |i|)
+ (RETURN
+ (SEQ (SPADCALL
+ (PROGN
+ (LETT #0# NIL |STAGG-;first;ANniA;3|)
+ (SEQ (LETT |i| 1 |STAGG-;first;ANniA;3|) G190
+ (COND ((QSGREATERP |i| |n|) (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (|STAGG-;c2| |x|
+ (LETT |x|
+ (SPADCALL |x| (QREFELT $ 13))
+ |STAGG-;first;ANniA;3|)
+ $)
+ #0#)
+ |STAGG-;first;ANniA;3|)))
+ (LETT |i| (QSADD1 |i|) |STAGG-;first;ANniA;3|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))
+ (QREFELT $ 15))))))
+
+(DEFUN |STAGG-;c2| (|x| |r| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 18)) (|error| "Index out of range"))
+ ('T (SPADCALL |x| (QREFELT $ 19)))))
+
+(DEFUN |STAGG-;elt;AIS;5| (|x| |i| $)
+ (PROG (#0=#:G1414)
+ (RETURN
+ (SEQ (LETT |i| (- |i| (SPADCALL |x| (QREFELT $ 21)))
+ |STAGG-;elt;AIS;5|)
+ (COND
+ ((OR (< |i| 0)
+ (SPADCALL
+ (LETT |x|
+ (SPADCALL |x|
+ (PROG1 (LETT #0# |i|
+ |STAGG-;elt;AIS;5|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 22))
+ |STAGG-;elt;AIS;5|)
+ (QREFELT $ 18)))
+ (EXIT (|error| "index out of range"))))
+ (EXIT (SPADCALL |x| (QREFELT $ 19)))))))
+
+(DEFUN |STAGG-;elt;AUsA;6| (|x| |i| $)
+ (PROG (|l| #0=#:G1418 |h| #1=#:G1420 #2=#:G1421)
+ (RETURN
+ (SEQ (LETT |l|
+ (- (SPADCALL |i| (QREFELT $ 25))
+ (SPADCALL |x| (QREFELT $ 21)))
+ |STAGG-;elt;AUsA;6|)
+ (EXIT (COND
+ ((< |l| 0) (|error| "index out of range"))
+ ((NULL (SPADCALL |i| (QREFELT $ 26)))
+ (SPADCALL
+ (SPADCALL |x|
+ (PROG1 (LETT #0# |l| |STAGG-;elt;AUsA;6|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 22))
+ (QREFELT $ 27)))
+ ('T
+ (SEQ (LETT |h|
+ (- (SPADCALL |i| (QREFELT $ 28))
+ (SPADCALL |x| (QREFELT $ 21)))
+ |STAGG-;elt;AUsA;6|)
+ (EXIT (COND
+ ((< |h| |l|)
+ (SPADCALL (QREFELT $ 29)))
+ ('T
+ (SPADCALL
+ (SPADCALL |x|
+ (PROG1
+ (LETT #1# |l|
+ |STAGG-;elt;AUsA;6|)
+ (|check-subtype| (>= #1# 0)
+ '(|NonNegativeInteger|) #1#))
+ (QREFELT $ 22))
+ (PROG1
+ (LETT #2# (+ (- |h| |l|) 1)
+ |STAGG-;elt;AUsA;6|)
+ (|check-subtype| (>= #2# 0)
+ '(|NonNegativeInteger|) #2#))
+ (QREFELT $ 30)))))))))))))
+
+(DEFUN |STAGG-;concat;3A;7| (|x| |y| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 27)) |y| (QREFELT $ 32)))
+
+(DEFUN |STAGG-;concat;LA;8| (|l| $)
+ (COND
+ ((NULL |l|) (SPADCALL (QREFELT $ 29)))
+ ('T
+ (SPADCALL (SPADCALL (|SPADfirst| |l|) (QREFELT $ 27))
+ (SPADCALL (CDR |l|) (QREFELT $ 35)) (QREFELT $ 32)))))
+
+(DEFUN |STAGG-;map!;M2A;9| (|f| |l| $)
+ (PROG (|y|)
+ (RETURN
+ (SEQ (LETT |y| |l| |STAGG-;map!;M2A;9|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |l| (QREFELT $ 18))
+ (QREFELT $ 10)))
+ (GO G191)))
+ (SEQ (SPADCALL |l|
+ (SPADCALL (SPADCALL |l| (QREFELT $ 19)) |f|)
+ (QREFELT $ 37))
+ (EXIT (LETT |l| (SPADCALL |l| (QREFELT $ 13))
+ |STAGG-;map!;M2A;9|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |y|)))))
+
+(DEFUN |STAGG-;fill!;ASA;10| (|x| |s| $)
+ (PROG (|y|)
+ (RETURN
+ (SEQ (LETT |y| |x| |STAGG-;fill!;ASA;10|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |y| (QREFELT $ 18))
+ (QREFELT $ 10)))
+ (GO G191)))
+ (SEQ (SPADCALL |y| |s| (QREFELT $ 37))
+ (EXIT (LETT |y| (SPADCALL |y| (QREFELT $ 13))
+ |STAGG-;fill!;ASA;10|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |x|)))))
+
+(DEFUN |STAGG-;setelt;AI2S;11| (|x| |i| |s| $)
+ (PROG (#0=#:G1437)
+ (RETURN
+ (SEQ (LETT |i| (- |i| (SPADCALL |x| (QREFELT $ 21)))
+ |STAGG-;setelt;AI2S;11|)
+ (COND
+ ((OR (< |i| 0)
+ (SPADCALL
+ (LETT |x|
+ (SPADCALL |x|
+ (PROG1 (LETT #0# |i|
+ |STAGG-;setelt;AI2S;11|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 22))
+ |STAGG-;setelt;AI2S;11|)
+ (QREFELT $ 18)))
+ (EXIT (|error| "index out of range"))))
+ (EXIT (SPADCALL |x| |s| (QREFELT $ 37)))))))
+
+(DEFUN |STAGG-;setelt;AUs2S;12| (|x| |i| |s| $)
+ (PROG (|l| |h| #0=#:G1442 #1=#:G1443 |z| |y|)
+ (RETURN
+ (SEQ (LETT |l|
+ (- (SPADCALL |i| (QREFELT $ 25))
+ (SPADCALL |x| (QREFELT $ 21)))
+ |STAGG-;setelt;AUs2S;12|)
+ (EXIT (COND
+ ((< |l| 0) (|error| "index out of range"))
+ ('T
+ (SEQ (LETT |h|
+ (COND
+ ((SPADCALL |i| (QREFELT $ 26))
+ (- (SPADCALL |i| (QREFELT $ 28))
+ (SPADCALL |x| (QREFELT $ 21))))
+ ('T (SPADCALL |x| (QREFELT $ 42))))
+ |STAGG-;setelt;AUs2S;12|)
+ (EXIT (COND
+ ((< |h| |l|) |s|)
+ ('T
+ (SEQ (LETT |y|
+ (SPADCALL |x|
+ (PROG1
+ (LETT #0# |l|
+ |STAGG-;setelt;AUs2S;12|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|)
+ #0#))
+ (QREFELT $ 22))
+ |STAGG-;setelt;AUs2S;12|)
+ (LETT |z|
+ (SPADCALL |y|
+ (PROG1
+ (LETT #1# (+ (- |h| |l|) 1)
+ |STAGG-;setelt;AUs2S;12|)
+ (|check-subtype| (>= #1# 0)
+ '(|NonNegativeInteger|)
+ #1#))
+ (QREFELT $ 22))
+ |STAGG-;setelt;AUs2S;12|)
+ (SEQ G190
+ (COND
+ ((NULL
+ (SPADCALL
+ (SPADCALL |y| |z|
+ (QREFELT $ 43))
+ (QREFELT $ 10)))
+ (GO G191)))
+ (SEQ
+ (SPADCALL |y| |s|
+ (QREFELT $ 37))
+ (EXIT
+ (LETT |y|
+ (SPADCALL |y|
+ (QREFELT $ 13))
+ |STAGG-;setelt;AUs2S;12|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |s|)))))))))))))
+
+(DEFUN |STAGG-;concat!;3A;13| (|x| |y| $)
+ (SEQ (COND
+ ((SPADCALL |x| (QREFELT $ 18)) |y|)
+ ('T
+ (SEQ (SPADCALL (SPADCALL |x| (QREFELT $ 45)) |y|
+ (QREFELT $ 46))
+ (EXIT |x|))))))
+
+(DEFUN |StreamAggregate&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|StreamAggregate&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$| (LIST '|StreamAggregate&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (GETREFV 52) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (COND
+ ((|HasAttribute| |#1| '|shallowlyMutable|)
+ (PROGN
+ (QSETREFV $ 33
+ (CONS (|dispatchFunction| |STAGG-;concat;3A;7|) $))
+ (QSETREFV $ 36
+ (CONS (|dispatchFunction| |STAGG-;concat;LA;8|) $))
+ (QSETREFV $ 39
+ (CONS (|dispatchFunction| |STAGG-;map!;M2A;9|) $))
+ (QSETREFV $ 40
+ (CONS (|dispatchFunction| |STAGG-;fill!;ASA;10|) $))
+ (QSETREFV $ 41
+ (CONS (|dispatchFunction| |STAGG-;setelt;AI2S;11|) $))
+ (QSETREFV $ 44
+ (CONS (|dispatchFunction| |STAGG-;setelt;AUs2S;12|) $))
+ (QSETREFV $ 47
+ (CONS (|dispatchFunction| |STAGG-;concat!;3A;13|) $)))))
+ $))))
+
+(MAKEPROP '|StreamAggregate&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|Boolean|) (0 . |cyclic?|) (5 . |not|)
+ |STAGG-;explicitlyFinite?;AB;1|
+ |STAGG-;possiblyInfinite?;AB;2| (10 . |rest|) (|List| 7)
+ (15 . |construct|) (|NonNegativeInteger|)
+ |STAGG-;first;ANniA;3| (20 . |empty?|) (25 . |first|)
+ (|Integer|) (30 . |minIndex|) (35 . |rest|)
+ |STAGG-;elt;AIS;5| (|UniversalSegment| 20) (41 . |lo|)
+ (46 . |hasHi|) (51 . |copy|) (56 . |hi|) (61 . |empty|)
+ (65 . |first|) |STAGG-;elt;AUsA;6| (71 . |concat!|)
+ (77 . |concat|) (|List| $) (83 . |concat|) (88 . |concat|)
+ (93 . |setfirst!|) (|Mapping| 7 7) (99 . |map!|)
+ (105 . |fill!|) (111 . |setelt|) (118 . |maxIndex|)
+ (123 . |eq?|) (129 . |setelt|) (136 . |tail|)
+ (141 . |setrest!|) (147 . |concat!|) '"rest" '"last"
+ '"first" '"value")
+ '#(|setelt| 153 |possiblyInfinite?| 167 |map!| 172 |first|
+ 178 |fill!| 184 |explicitlyFinite?| 190 |elt| 195
+ |concat!| 207 |concat| 213)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 47
+ '(1 6 8 0 9 1 8 0 0 10 1 6 0 0 13 1 6 0
+ 14 15 1 6 8 0 18 1 6 7 0 19 1 6 20 0
+ 21 2 6 0 0 16 22 1 24 20 0 25 1 24 8
+ 0 26 1 6 0 0 27 1 24 20 0 28 0 6 0 29
+ 2 6 0 0 16 30 2 6 0 0 0 32 2 0 0 0 0
+ 33 1 6 0 34 35 1 0 0 34 36 2 6 7 0 7
+ 37 2 0 0 38 0 39 2 0 0 0 7 40 3 0 7 0
+ 20 7 41 1 6 20 0 42 2 6 8 0 0 43 3 0
+ 7 0 24 7 44 1 6 0 0 45 2 6 0 0 0 46 2
+ 0 0 0 0 47 3 0 7 0 20 7 41 3 0 7 0 24
+ 7 44 1 0 8 0 12 2 0 0 38 0 39 2 0 0 0
+ 16 17 2 0 0 0 7 40 1 0 8 0 11 2 0 7 0
+ 20 23 2 0 0 0 24 31 2 0 0 0 0 47 1 0
+ 0 34 36 2 0 0 0 0 33)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/STAGG.lsp b/src/algebra/strap/STAGG.lsp
new file mode 100644
index 00000000..95a087cb
--- /dev/null
+++ b/src/algebra/strap/STAGG.lsp
@@ -0,0 +1,41 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |StreamAggregate;CAT| 'NIL)
+
+(DEFPARAMETER |StreamAggregate;AL| 'NIL)
+
+(DEFUN |StreamAggregate| (#0=#:G1405)
+ (LET (#1=#:G1406)
+ (COND
+ ((SETQ #1# (|assoc| (|devaluate| #0#) |StreamAggregate;AL|))
+ (CDR #1#))
+ (T (SETQ |StreamAggregate;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1# (|StreamAggregate;| #0#)))
+ |StreamAggregate;AL|))
+ #1#))))
+
+(DEFUN |StreamAggregate;| (|t#1|)
+ (PROG (#0=#:G1404)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (COND
+ (|StreamAggregate;CAT|)
+ ('T
+ (LETT |StreamAggregate;CAT|
+ (|Join| (|UnaryRecursiveAggregate|
+ '|t#1|)
+ (|LinearAggregate| '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|explicitlyFinite?|
+ ((|Boolean|) $))
+ T)
+ ((|possiblyInfinite?|
+ ((|Boolean|) $))
+ T))
+ NIL '((|Boolean|)) NIL))
+ . #1=(|StreamAggregate|))))) . #1#)
+ (SETELT #0# 0 (LIST '|StreamAggregate| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/SYMBOL.lsp b/src/algebra/strap/SYMBOL.lsp
new file mode 100644
index 00000000..82291964
--- /dev/null
+++ b/src/algebra/strap/SYMBOL.lsp
@@ -0,0 +1,816 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |SYMBOL;writeOMSym| (|dev| |x| $)
+ (COND
+ ((SPADCALL |x| (|getShellEntry| $ 22))
+ (|error| "Cannot convert a scripted symbol to OpenMath"))
+ ('T (SPADCALL |dev| |x| (|getShellEntry| $ 26)))))
+
+(DEFUN |SYMBOL;OMwrite;$S;2| (|x| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |SYMBOL;OMwrite;$S;2|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |SYMBOL;OMwrite;$S;2|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 28))
+ (|getShellEntry| $ 29))
+ |SYMBOL;OMwrite;$S;2|)
+ (SPADCALL |dev| (|getShellEntry| $ 30))
+ (|SYMBOL;writeOMSym| |dev| |x| $)
+ (SPADCALL |dev| (|getShellEntry| $ 31))
+ (SPADCALL |dev| (|getShellEntry| $ 32))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|) |SYMBOL;OMwrite;$S;2|)
+ (EXIT |s|)))))
+
+(DEFUN |SYMBOL;OMwrite;$BS;3| (|x| |wholeObj| $)
+ (PROG (|sp| |dev| |s|)
+ (RETURN
+ (SEQ (LETT |s| "" |SYMBOL;OMwrite;$BS;3|)
+ (LETT |sp| (OM-STRINGTOSTRINGPTR |s|)
+ |SYMBOL;OMwrite;$BS;3|)
+ (LETT |dev|
+ (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 28))
+ (|getShellEntry| $ 29))
+ |SYMBOL;OMwrite;$BS;3|)
+ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 30))))
+ (|SYMBOL;writeOMSym| |dev| |x| $)
+ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 31))))
+ (SPADCALL |dev| (|getShellEntry| $ 32))
+ (LETT |s| (OM-STRINGPTRTOSTRING |sp|)
+ |SYMBOL;OMwrite;$BS;3|)
+ (EXIT |s|)))))
+
+(DEFUN |SYMBOL;OMwrite;Omd$V;4| (|dev| |x| $)
+ (SEQ (SPADCALL |dev| (|getShellEntry| $ 30))
+ (|SYMBOL;writeOMSym| |dev| |x| $)
+ (EXIT (SPADCALL |dev| (|getShellEntry| $ 31)))))
+
+(DEFUN |SYMBOL;OMwrite;Omd$BV;5| (|dev| |x| |wholeObj| $)
+ (SEQ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 30))))
+ (|SYMBOL;writeOMSym| |dev| |x| $)
+ (EXIT (COND
+ (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 31)))))))
+
+(DEFUN |SYMBOL;convert;$If;6| (|s| $)
+ (SPADCALL |s| (|getShellEntry| $ 45)))
+
+(PUT '|SYMBOL;convert;$S;7| '|SPADreplace| '(XLAM (|s|) |s|))
+
+(DEFUN |SYMBOL;convert;$S;7| (|s| $) |s|)
+
+(DEFUN |SYMBOL;coerce;S$;8| (|s| $) (VALUES (INTERN |s|)))
+
+(PUT '|SYMBOL;=;2$B;9| '|SPADreplace| 'EQUAL)
+
+(DEFUN |SYMBOL;=;2$B;9| (|x| |y| $) (EQUAL |x| |y|))
+
+(PUT '|SYMBOL;<;2$B;10| '|SPADreplace|
+ '(XLAM (|x| |y|) (GGREATERP |y| |x|)))
+
+(DEFUN |SYMBOL;<;2$B;10| (|x| |y| $) (GGREATERP |y| |x|))
+
+(DEFUN |SYMBOL;coerce;$Of;11| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 52)))
+
+(DEFUN |SYMBOL;subscript;$L$;12| (|sy| |lx| $)
+ (SPADCALL |sy| (LIST |lx| NIL NIL NIL NIL) (|getShellEntry| $ 56)))
+
+(DEFUN |SYMBOL;elt;$L$;13| (|sy| |lx| $)
+ (SPADCALL |sy| |lx| (|getShellEntry| $ 57)))
+
+(DEFUN |SYMBOL;superscript;$L$;14| (|sy| |lx| $)
+ (SPADCALL |sy| (LIST NIL |lx| NIL NIL NIL) (|getShellEntry| $ 56)))
+
+(DEFUN |SYMBOL;argscript;$L$;15| (|sy| |lx| $)
+ (SPADCALL |sy| (LIST NIL NIL NIL NIL |lx|) (|getShellEntry| $ 56)))
+
+(DEFUN |SYMBOL;patternMatch;$P2Pmr;16| (|x| |p| |l| $)
+ (SPADCALL |x| |p| |l| (|getShellEntry| $ 64)))
+
+(DEFUN |SYMBOL;patternMatch;$P2Pmr;17| (|x| |p| |l| $)
+ (SPADCALL |x| |p| |l| (|getShellEntry| $ 71)))
+
+(DEFUN |SYMBOL;convert;$P;18| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 74)))
+
+(DEFUN |SYMBOL;convert;$P;19| (|x| $)
+ (SPADCALL |x| (|getShellEntry| $ 76)))
+
+(DEFUN |SYMBOL;syprefix| (|sc| $)
+ (PROG (|ns| #0=#:G1449 |n| #1=#:G1450)
+ (RETURN
+ (SEQ (LETT |ns|
+ (LIST (LENGTH (QVELT |sc| 3)) (LENGTH (QVELT |sc| 2))
+ (LENGTH (QVELT |sc| 1)) (LENGTH (QVELT |sc| 0)))
+ |SYMBOL;syprefix|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((< (LENGTH |ns|) 2) 'NIL)
+ ('T (ZEROP (|SPADfirst| |ns|)))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |ns| (CDR |ns|) |SYMBOL;syprefix|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL
+ (CONS (STRCONC (|getShellEntry| $ 37)
+ (|SYMBOL;istring|
+ (LENGTH (QVELT |sc| 4)) $))
+ (PROGN
+ (LETT #0# NIL |SYMBOL;syprefix|)
+ (SEQ (LETT |n| NIL |SYMBOL;syprefix|)
+ (LETT #1# (NREVERSE |ns|)
+ |SYMBOL;syprefix|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |n| (CAR #1#)
+ |SYMBOL;syprefix|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT
+ (LETT #0#
+ (CONS (|SYMBOL;istring| |n| $)
+ #0#)
+ |SYMBOL;syprefix|)))
+ (LETT #1# (CDR #1#)
+ |SYMBOL;syprefix|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #0#)))))
+ (|getShellEntry| $ 79)))))))
+
+(DEFUN |SYMBOL;syscripts| (|sc| $)
+ (PROG (|all|)
+ (RETURN
+ (SEQ (LETT |all| (QVELT |sc| 3) |SYMBOL;syscripts|)
+ (LETT |all|
+ (SPADCALL (QVELT |sc| 2) |all| (|getShellEntry| $ 80))
+ |SYMBOL;syscripts|)
+ (LETT |all|
+ (SPADCALL (QVELT |sc| 1) |all| (|getShellEntry| $ 80))
+ |SYMBOL;syscripts|)
+ (LETT |all|
+ (SPADCALL (QVELT |sc| 0) |all| (|getShellEntry| $ 80))
+ |SYMBOL;syscripts|)
+ (EXIT (SPADCALL |all| (QVELT |sc| 4) (|getShellEntry| $ 80)))))))
+
+(DEFUN |SYMBOL;script;$L$;22| (|sy| |ls| $)
+ (PROG (|sc|)
+ (RETURN
+ (SEQ (LETT |sc| (VECTOR NIL NIL NIL NIL NIL)
+ |SYMBOL;script;$L$;22|)
+ (COND
+ ((NULL (NULL |ls|))
+ (SEQ (QSETVELT |sc| 0 (|SPADfirst| |ls|))
+ (EXIT (LETT |ls| (CDR |ls|) |SYMBOL;script;$L$;22|)))))
+ (COND
+ ((NULL (NULL |ls|))
+ (SEQ (QSETVELT |sc| 1 (|SPADfirst| |ls|))
+ (EXIT (LETT |ls| (CDR |ls|) |SYMBOL;script;$L$;22|)))))
+ (COND
+ ((NULL (NULL |ls|))
+ (SEQ (QSETVELT |sc| 2 (|SPADfirst| |ls|))
+ (EXIT (LETT |ls| (CDR |ls|) |SYMBOL;script;$L$;22|)))))
+ (COND
+ ((NULL (NULL |ls|))
+ (SEQ (QSETVELT |sc| 3 (|SPADfirst| |ls|))
+ (EXIT (LETT |ls| (CDR |ls|) |SYMBOL;script;$L$;22|)))))
+ (COND
+ ((NULL (NULL |ls|))
+ (SEQ (QSETVELT |sc| 4 (|SPADfirst| |ls|))
+ (EXIT (LETT |ls| (CDR |ls|) |SYMBOL;script;$L$;22|)))))
+ (EXIT (SPADCALL |sy| |sc| (|getShellEntry| $ 82)))))))
+
+(DEFUN |SYMBOL;script;$R$;23| (|sy| |sc| $)
+ (COND
+ ((SPADCALL |sy| (|getShellEntry| $ 22))
+ (|error| "Cannot add scripts to a scripted symbol"))
+ ('T
+ (CONS (SPADCALL
+ (SPADCALL
+ (STRCONC (|SYMBOL;syprefix| |sc| $)
+ (SPADCALL
+ (SPADCALL |sy| (|getShellEntry| $ 83))
+ (|getShellEntry| $ 84)))
+ (|getShellEntry| $ 48))
+ (|getShellEntry| $ 53))
+ (|SYMBOL;syscripts| |sc| $)))))
+
+(DEFUN |SYMBOL;string;$S;24| (|e| $)
+ (COND
+ ((NULL (SPADCALL |e| (|getShellEntry| $ 22))) (PNAME |e|))
+ ('T (|error| "Cannot form string from non-atomic symbols."))))
+
+(DEFUN |SYMBOL;latex;$S;25| (|e| $)
+ (PROG (|ss| |lo| |sc| |s|)
+ (RETURN
+ (SEQ (LETT |s| (PNAME (SPADCALL |e| (|getShellEntry| $ 83)))
+ |SYMBOL;latex;$S;25|)
+ (COND
+ ((< 1 (QCSIZE |s|))
+ (COND
+ ((SPADCALL (SPADCALL |s| 1 (|getShellEntry| $ 85))
+ (SPADCALL "\\" (|getShellEntry| $ 40))
+ (|getShellEntry| $ 86))
+ (LETT |s| (STRCONC "\\mbox{\\it " (STRCONC |s| "}"))
+ |SYMBOL;latex;$S;25|)))))
+ (COND
+ ((NULL (SPADCALL |e| (|getShellEntry| $ 22))) (EXIT |s|)))
+ (LETT |ss| (SPADCALL |e| (|getShellEntry| $ 87))
+ |SYMBOL;latex;$S;25|)
+ (LETT |lo| (QVELT |ss| 0) |SYMBOL;latex;$S;25|)
+ (COND
+ ((NULL (NULL |lo|))
+ (SEQ (LETT |sc| "_{" |SYMBOL;latex;$S;25|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lo|)
+ (|getShellEntry| $ 88)))
+ (GO G191)))
+ (SEQ (LETT |sc|
+ (STRCONC |sc|
+ (SPADCALL (|SPADfirst| |lo|)
+ (|getShellEntry| $ 89)))
+ |SYMBOL;latex;$S;25|)
+ (LETT |lo| (CDR |lo|)
+ |SYMBOL;latex;$S;25|)
+ (EXIT (COND
+ ((NULL (NULL |lo|))
+ (LETT |sc| (STRCONC |sc| ", ")
+ |SYMBOL;latex;$S;25|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |sc| (STRCONC |sc| "}") |SYMBOL;latex;$S;25|)
+ (EXIT (LETT |s| (STRCONC |s| |sc|)
+ |SYMBOL;latex;$S;25|)))))
+ (LETT |lo| (QVELT |ss| 1) |SYMBOL;latex;$S;25|)
+ (COND
+ ((NULL (NULL |lo|))
+ (SEQ (LETT |sc| "^{" |SYMBOL;latex;$S;25|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lo|)
+ (|getShellEntry| $ 88)))
+ (GO G191)))
+ (SEQ (LETT |sc|
+ (STRCONC |sc|
+ (SPADCALL (|SPADfirst| |lo|)
+ (|getShellEntry| $ 89)))
+ |SYMBOL;latex;$S;25|)
+ (LETT |lo| (CDR |lo|)
+ |SYMBOL;latex;$S;25|)
+ (EXIT (COND
+ ((NULL (NULL |lo|))
+ (LETT |sc| (STRCONC |sc| ", ")
+ |SYMBOL;latex;$S;25|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |sc| (STRCONC |sc| "}") |SYMBOL;latex;$S;25|)
+ (EXIT (LETT |s| (STRCONC |s| |sc|)
+ |SYMBOL;latex;$S;25|)))))
+ (LETT |lo| (QVELT |ss| 2) |SYMBOL;latex;$S;25|)
+ (COND
+ ((NULL (NULL |lo|))
+ (SEQ (LETT |sc| "{}^{" |SYMBOL;latex;$S;25|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lo|)
+ (|getShellEntry| $ 88)))
+ (GO G191)))
+ (SEQ (LETT |sc|
+ (STRCONC |sc|
+ (SPADCALL (|SPADfirst| |lo|)
+ (|getShellEntry| $ 89)))
+ |SYMBOL;latex;$S;25|)
+ (LETT |lo| (CDR |lo|)
+ |SYMBOL;latex;$S;25|)
+ (EXIT (COND
+ ((NULL (NULL |lo|))
+ (LETT |sc| (STRCONC |sc| ", ")
+ |SYMBOL;latex;$S;25|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |sc| (STRCONC |sc| "}") |SYMBOL;latex;$S;25|)
+ (EXIT (LETT |s| (STRCONC |sc| |s|)
+ |SYMBOL;latex;$S;25|)))))
+ (LETT |lo| (QVELT |ss| 3) |SYMBOL;latex;$S;25|)
+ (COND
+ ((NULL (NULL |lo|))
+ (SEQ (LETT |sc| "{}_{" |SYMBOL;latex;$S;25|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lo|)
+ (|getShellEntry| $ 88)))
+ (GO G191)))
+ (SEQ (LETT |sc|
+ (STRCONC |sc|
+ (SPADCALL (|SPADfirst| |lo|)
+ (|getShellEntry| $ 89)))
+ |SYMBOL;latex;$S;25|)
+ (LETT |lo| (CDR |lo|)
+ |SYMBOL;latex;$S;25|)
+ (EXIT (COND
+ ((NULL (NULL |lo|))
+ (LETT |sc| (STRCONC |sc| ", ")
+ |SYMBOL;latex;$S;25|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |sc| (STRCONC |sc| "}") |SYMBOL;latex;$S;25|)
+ (EXIT (LETT |s| (STRCONC |sc| |s|)
+ |SYMBOL;latex;$S;25|)))))
+ (LETT |lo| (QVELT |ss| 4) |SYMBOL;latex;$S;25|)
+ (COND
+ ((NULL (NULL |lo|))
+ (SEQ (LETT |sc| "\\left( {" |SYMBOL;latex;$S;25|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lo|)
+ (|getShellEntry| $ 88)))
+ (GO G191)))
+ (SEQ (LETT |sc|
+ (STRCONC |sc|
+ (SPADCALL (|SPADfirst| |lo|)
+ (|getShellEntry| $ 89)))
+ |SYMBOL;latex;$S;25|)
+ (LETT |lo| (CDR |lo|)
+ |SYMBOL;latex;$S;25|)
+ (EXIT (COND
+ ((NULL (NULL |lo|))
+ (LETT |sc| (STRCONC |sc| ", ")
+ |SYMBOL;latex;$S;25|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |sc| (STRCONC |sc| "} \\right)")
+ |SYMBOL;latex;$S;25|)
+ (EXIT (LETT |s| (STRCONC |s| |sc|)
+ |SYMBOL;latex;$S;25|)))))
+ (EXIT |s|)))))
+
+(DEFUN |SYMBOL;anyRadix| (|n| |s| $)
+ (PROG (|qr| |ns| #0=#:G1500)
+ (RETURN
+ (SEQ (EXIT (SEQ (LETT |ns| "" |SYMBOL;anyRadix|)
+ (EXIT (SEQ G190 NIL
+ (SEQ (LETT |qr|
+ (DIVIDE2 |n| (QCSIZE |s|))
+ |SYMBOL;anyRadix|)
+ (LETT |n| (QCAR |qr|)
+ |SYMBOL;anyRadix|)
+ (LETT |ns|
+ (SPADCALL
+ (SPADCALL |s|
+ (+ (QCDR |qr|)
+ (SPADCALL |s|
+ (|getShellEntry| $ 91)))
+ (|getShellEntry| $ 85))
+ |ns| (|getShellEntry| $ 92))
+ |SYMBOL;anyRadix|)
+ (EXIT
+ (COND
+ ((ZEROP |n|)
+ (PROGN
+ (LETT #0# |ns|
+ |SYMBOL;anyRadix|)
+ (GO #0#))))))
+ NIL (GO G190) G191 (EXIT NIL)))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |SYMBOL;new;$;27| ($)
+ (PROG (|sym|)
+ (RETURN
+ (SEQ (LETT |sym|
+ (|SYMBOL;anyRadix|
+ (SPADCALL (|getShellEntry| $ 9)
+ (|getShellEntry| $ 93))
+ (|getShellEntry| $ 19) $)
+ |SYMBOL;new;$;27|)
+ (SPADCALL (|getShellEntry| $ 9)
+ (+ (SPADCALL (|getShellEntry| $ 9)
+ (|getShellEntry| $ 93))
+ 1)
+ (|getShellEntry| $ 94))
+ (EXIT (SPADCALL (STRCONC "%" |sym|) (|getShellEntry| $ 48)))))))
+
+(DEFUN |SYMBOL;new;2$;28| (|x| $)
+ (PROG (|u| |n| |xx|)
+ (RETURN
+ (SEQ (LETT |n|
+ (SEQ (LETT |u|
+ (SPADCALL |x| (|getShellEntry| $ 12)
+ (|getShellEntry| $ 97))
+ |SYMBOL;new;2$;28|)
+ (EXIT (COND
+ ((QEQCAR |u| 1) 0)
+ ('T (+ (QCDR |u|) 1)))))
+ |SYMBOL;new;2$;28|)
+ (SPADCALL (|getShellEntry| $ 12) |x| |n|
+ (|getShellEntry| $ 98))
+ (LETT |xx|
+ (COND
+ ((NULL (SPADCALL |x| (|getShellEntry| $ 22)))
+ (SPADCALL |x| (|getShellEntry| $ 84)))
+ ('T
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 83))
+ (|getShellEntry| $ 84))))
+ |SYMBOL;new;2$;28|)
+ (LETT |xx| (STRCONC "%" |xx|) |SYMBOL;new;2$;28|)
+ (LETT |xx|
+ (COND
+ ((NULL (< (SPADCALL
+ (SPADCALL |xx|
+ (SPADCALL |xx|
+ (|getShellEntry| $ 99))
+ (|getShellEntry| $ 85))
+ (|getShellEntry| $ 18)
+ (|getShellEntry| $ 100))
+ (SPADCALL (|getShellEntry| $ 18)
+ (|getShellEntry| $ 91))))
+ (STRCONC |xx|
+ (|SYMBOL;anyRadix| |n|
+ (|getShellEntry| $ 20) $)))
+ ('T
+ (STRCONC |xx|
+ (|SYMBOL;anyRadix| |n|
+ (|getShellEntry| $ 18) $))))
+ |SYMBOL;new;2$;28|)
+ (COND
+ ((NULL (SPADCALL |x| (|getShellEntry| $ 22)))
+ (EXIT (SPADCALL |xx| (|getShellEntry| $ 48)))))
+ (EXIT (SPADCALL (SPADCALL |xx| (|getShellEntry| $ 48))
+ (SPADCALL |x| (|getShellEntry| $ 87))
+ (|getShellEntry| $ 82)))))))
+
+(DEFUN |SYMBOL;resetNew;V;29| ($)
+ (PROG (|k| #0=#:G1523)
+ (RETURN
+ (SEQ (SPADCALL (|getShellEntry| $ 9) 0 (|getShellEntry| $ 94))
+ (SEQ (LETT |k| NIL |SYMBOL;resetNew;V;29|)
+ (LETT #0#
+ (SPADCALL (|getShellEntry| $ 12)
+ (|getShellEntry| $ 103))
+ |SYMBOL;resetNew;V;29|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |k| (CAR #0#) |SYMBOL;resetNew;V;29|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (SPADCALL |k| (|getShellEntry| $ 12)
+ (|getShellEntry| $ 104))))
+ (LETT #0# (CDR #0#) |SYMBOL;resetNew;V;29|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT (SPADCALL (|getShellEntry| $ 105)))))))
+
+(DEFUN |SYMBOL;scripted?;$B;30| (|sy| $)
+ (SPADCALL (ATOM |sy|) (|getShellEntry| $ 88)))
+
+(DEFUN |SYMBOL;name;2$;31| (|sy| $)
+ (PROG (|str| |i| #0=#:G1530 #1=#:G1529 #2=#:G1527)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((NULL (SPADCALL |sy| (|getShellEntry| $ 22))) |sy|)
+ ('T
+ (SEQ (LETT |str|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |sy|
+ (|getShellEntry| $ 107))
+ (|getShellEntry| $ 108))
+ (|getShellEntry| $ 84))
+ |SYMBOL;name;2$;31|)
+ (SEQ (EXIT (SEQ
+ (LETT |i|
+ (+ (|getShellEntry| $ 38) 1)
+ |SYMBOL;name;2$;31|)
+ (LETT #0# (QCSIZE |str|)
+ |SYMBOL;name;2$;31|)
+ G190
+ (COND ((> |i| #0#) (GO G191)))
+ (SEQ
+ (EXIT
+ (COND
+ ((NULL
+ (SPADCALL
+ (SPADCALL |str| |i|
+ (|getShellEntry| $ 85))
+ (|getShellEntry| $ 109)))
+ (PROGN
+ (LETT #2#
+ (PROGN
+ (LETT #1#
+ (SPADCALL
+ (SPADCALL |str|
+ (SPADCALL |i|
+ (QCSIZE |str|)
+ (|getShellEntry| $
+ 111))
+ (|getShellEntry| $
+ 112))
+ (|getShellEntry| $ 48))
+ |SYMBOL;name;2$;31|)
+ (GO #1#))
+ |SYMBOL;name;2$;31|)
+ (GO #2#))))))
+ (LETT |i| (+ |i| 1)
+ |SYMBOL;name;2$;31|)
+ (GO G190) G191 (EXIT NIL)))
+ #2# (EXIT #2#))
+ (EXIT (|error| "Improper scripted symbol"))))))
+ #1# (EXIT #1#)))))
+
+(DEFUN |SYMBOL;scripts;$R;32| (|sy| $)
+ (PROG (|lscripts| |str| |nstr| |j| #0=#:G1533 |nscripts| |m| |n|
+ #1=#:G1542 |i| #2=#:G1543 |a| #3=#:G1544 |allscripts|)
+ (RETURN
+ (SEQ (COND
+ ((NULL (SPADCALL |sy| (|getShellEntry| $ 22)))
+ (VECTOR NIL NIL NIL NIL NIL))
+ ('T
+ (SEQ (LETT |nscripts| (LIST 0 0 0 0 0)
+ |SYMBOL;scripts;$R;32|)
+ (LETT |lscripts| (LIST NIL NIL NIL NIL NIL)
+ |SYMBOL;scripts;$R;32|)
+ (LETT |str|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |sy|
+ (|getShellEntry| $ 107))
+ (|getShellEntry| $ 108))
+ (|getShellEntry| $ 84))
+ |SYMBOL;scripts;$R;32|)
+ (LETT |nstr| (QCSIZE |str|) |SYMBOL;scripts;$R;32|)
+ (LETT |m|
+ (SPADCALL |nscripts| (|getShellEntry| $ 114))
+ |SYMBOL;scripts;$R;32|)
+ (SEQ (LETT |j| (+ (|getShellEntry| $ 38) 1)
+ |SYMBOL;scripts;$R;32|)
+ (LETT |i| |m| |SYMBOL;scripts;$R;32|) G190
+ (COND
+ ((OR (> |j| |nstr|)
+ (NULL (SPADCALL
+ (SPADCALL |str| |j|
+ (|getShellEntry| $ 85))
+ (|getShellEntry| $ 109))))
+ (GO G191)))
+ (SEQ (EXIT (SPADCALL |nscripts| |i|
+ (PROG1
+ (LETT #0#
+ (-
+ (SPADCALL
+ (SPADCALL |str| |j|
+ (|getShellEntry| $ 85))
+ (|getShellEntry| $ 42))
+ (|getShellEntry| $ 43))
+ |SYMBOL;scripts;$R;32|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (|getShellEntry| $ 115))))
+ (LETT |i|
+ (PROG1 (+ |i| 1)
+ (LETT |j| (+ |j| 1)
+ |SYMBOL;scripts;$R;32|))
+ |SYMBOL;scripts;$R;32|)
+ (GO G190) G191 (EXIT NIL))
+ (LETT |nscripts|
+ (SPADCALL (CDR |nscripts|)
+ (|SPADfirst| |nscripts|)
+ (|getShellEntry| $ 116))
+ |SYMBOL;scripts;$R;32|)
+ (LETT |allscripts|
+ (SPADCALL
+ (SPADCALL |sy| (|getShellEntry| $ 107))
+ (|getShellEntry| $ 117))
+ |SYMBOL;scripts;$R;32|)
+ (LETT |m|
+ (SPADCALL |lscripts| (|getShellEntry| $ 118))
+ |SYMBOL;scripts;$R;32|)
+ (SEQ (LETT |n| NIL |SYMBOL;scripts;$R;32|)
+ (LETT #1# |nscripts| |SYMBOL;scripts;$R;32|)
+ (LETT |i| |m| |SYMBOL;scripts;$R;32|) G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |n| (CAR #1#)
+ |SYMBOL;scripts;$R;32|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((<
+ (SPADCALL |allscripts|
+ (|getShellEntry| $ 119))
+ |n|)
+ (|error|
+ "Improper script count in symbol"))
+ ('T
+ (SEQ
+ (SPADCALL |lscripts| |i|
+ (PROGN
+ (LETT #2# NIL
+ |SYMBOL;scripts;$R;32|)
+ (SEQ
+ (LETT |a| NIL
+ |SYMBOL;scripts;$R;32|)
+ (LETT #3#
+ (SPADCALL |allscripts| |n|
+ (|getShellEntry| $ 120))
+ |SYMBOL;scripts;$R;32|)
+ G190
+ (COND
+ ((OR (ATOM #3#)
+ (PROGN
+ (LETT |a| (CAR #3#)
+ |SYMBOL;scripts;$R;32|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #2#
+ (CONS
+ (SPADCALL |a|
+ (|getShellEntry| $ 53))
+ #2#)
+ |SYMBOL;scripts;$R;32|)))
+ (LETT #3# (CDR #3#)
+ |SYMBOL;scripts;$R;32|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #2#))))
+ (|getShellEntry| $ 121))
+ (EXIT
+ (LETT |allscripts|
+ (SPADCALL |allscripts| |n|
+ (|getShellEntry| $ 122))
+ |SYMBOL;scripts;$R;32|)))))))
+ (LETT |i|
+ (PROG1 (+ |i| 1)
+ (LETT #1# (CDR #1#)
+ |SYMBOL;scripts;$R;32|))
+ |SYMBOL;scripts;$R;32|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (VECTOR (SPADCALL |lscripts| |m|
+ (|getShellEntry| $ 123))
+ (SPADCALL |lscripts| (+ |m| 1)
+ (|getShellEntry| $ 123))
+ (SPADCALL |lscripts| (+ |m| 2)
+ (|getShellEntry| $ 123))
+ (SPADCALL |lscripts| (+ |m| 3)
+ (|getShellEntry| $ 123))
+ (SPADCALL |lscripts| (+ |m| 4)
+ (|getShellEntry| $ 123)))))))))))
+
+(DEFUN |SYMBOL;istring| (|n| $)
+ (COND
+ ((< 9 |n|) (|error| "Can have at most 9 scripts of each kind"))
+ ('T (ELT (|getShellEntry| $ 17) (+ |n| 0)))))
+
+(DEFUN |SYMBOL;list;$L;34| (|sy| $)
+ (COND
+ ((NULL (SPADCALL |sy| (|getShellEntry| $ 22)))
+ (|error| "Cannot convert a symbol to a list if it is not subscripted"))
+ ('T |sy|)))
+
+(DEFUN |SYMBOL;sample;$;35| ($)
+ (SPADCALL "aSymbol" (|getShellEntry| $ 48)))
+
+(DEFUN |Symbol| ()
+ (PROG ()
+ (RETURN
+ (PROG (#0=#:G1551)
+ (RETURN
+ (COND
+ ((LETT #0# (HGET |$ConstructorCache| '|Symbol|) |Symbol|)
+ (|CDRwithIncrement| (CDAR #0#)))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (CDDAR (HPUT |$ConstructorCache| '|Symbol|
+ (LIST
+ (CONS NIL (CONS 1 (|Symbol;|))))))
+ (LETT #0# T |Symbol|))
+ (COND ((NOT #0#) (HREM |$ConstructorCache| '|Symbol|)))))))))))
+
+(DEFUN |Symbol;| ()
+ (PROG (|dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$| '(|Symbol|) . #0=(|Symbol|))
+ (LETT $ (|newShell| 126) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|haddProp| |$ConstructorCache| '|Symbol| NIL (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 9 (SPADCALL 0 (|getShellEntry| $ 8)))
+ (|setShellEntry| $ 12 (SPADCALL (|getShellEntry| $ 11)))
+ (|setShellEntry| $ 17
+ (SPADCALL (LIST "0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
+ (|getShellEntry| $ 16)))
+ (|setShellEntry| $ 18 "0123456789")
+ (|setShellEntry| $ 19 "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
+ (|setShellEntry| $ 20 "abcdefghijklmnopqrstuvwxyz")
+ (|setShellEntry| $ 37 "*")
+ (|setShellEntry| $ 38 (QCSIZE (|getShellEntry| $ 37)))
+ (|setShellEntry| $ 43
+ (SPADCALL (SPADCALL "0" (|getShellEntry| $ 40))
+ (|getShellEntry| $ 42)))
+ $))))
+
+(MAKEPROP '|Symbol| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|Integer|) (|Reference| 6)
+ (0 . |ref|) '|count| (|AssociationList| $$ 6)
+ (5 . |empty|) '|xcount| (|String|) (|List| 13)
+ (|PrimitiveArray| 13) (9 . |construct|) '|istrings|
+ '|nums| 'ALPHAS '|alphas| (|Boolean|)
+ |SYMBOL;scripted?;$B;30| (|Void|) (|Symbol|)
+ (|OpenMathDevice|) (14 . |OMputVariable|)
+ (|OpenMathEncoding|) (20 . |OMencodingXML|)
+ (24 . |OMopenString|) (30 . |OMputObject|)
+ (35 . |OMputEndObject|) (40 . |OMclose|)
+ |SYMBOL;OMwrite;$S;2| |SYMBOL;OMwrite;$BS;3|
+ |SYMBOL;OMwrite;Omd$V;4| |SYMBOL;OMwrite;Omd$BV;5| '|hd|
+ '|lhd| (|Character|) (45 . |char|) (|NonNegativeInteger|)
+ (50 . |ord|) '|ord0| (|InputForm|) (55 . |convert|)
+ |SYMBOL;convert;$If;6| |SYMBOL;convert;$S;7|
+ |SYMBOL;coerce;S$;8| |SYMBOL;=;2$B;9| |SYMBOL;<;2$B;10|
+ (|OutputForm|) (60 . |outputForm|) |SYMBOL;coerce;$Of;11|
+ (|List| 51) (|List| 54) |SYMBOL;script;$L$;22|
+ |SYMBOL;subscript;$L$;12| |SYMBOL;elt;$L$;13|
+ |SYMBOL;superscript;$L$;14| |SYMBOL;argscript;$L$;15|
+ (|PatternMatchResult| 6 24) (|Pattern| 6)
+ (|PatternMatchSymbol| 6) (65 . |patternMatch|)
+ (|PatternMatchResult| 6 $) |SYMBOL;patternMatch;$P2Pmr;16|
+ (|Float|) (|PatternMatchResult| 67 24) (|Pattern| 67)
+ (|PatternMatchSymbol| 67) (72 . |patternMatch|)
+ (|PatternMatchResult| 67 $)
+ |SYMBOL;patternMatch;$P2Pmr;17| (79 . |coerce|)
+ |SYMBOL;convert;$P;18| (84 . |coerce|)
+ |SYMBOL;convert;$P;19| (|List| $) (89 . |concat|)
+ (94 . |concat|)
+ (|Record| (|:| |sub| 54) (|:| |sup| 54) (|:| |presup| 54)
+ (|:| |presub| 54) (|:| |args| 54))
+ |SYMBOL;script;$R$;23| |SYMBOL;name;2$;31|
+ |SYMBOL;string;$S;24| (100 . |elt|) (106 . ~=)
+ |SYMBOL;scripts;$R;32| (112 . |not|) (117 . |latex|)
+ |SYMBOL;latex;$S;25| (122 . |minIndex|) (127 . |concat|)
+ (133 . |elt|) (138 . |setelt|) |SYMBOL;new;$;27|
+ (|Union| 6 '"failed") (144 . |search|) (150 . |setelt|)
+ (157 . |maxIndex|) (162 . |position|) |SYMBOL;new;2$;28|
+ (|List| $$) (168 . |keys|) (173 . |remove!|)
+ (179 . |void|) |SYMBOL;resetNew;V;29| |SYMBOL;list;$L;34|
+ (183 . |first|) (188 . |digit?|) (|UniversalSegment| 6)
+ (193 . SEGMENT) (199 . |elt|) (|List| 41)
+ (205 . |minIndex|) (210 . |setelt|) (217 . |concat|)
+ (223 . |rest|) (228 . |minIndex|) (233 . |#|)
+ (238 . |first|) (244 . |setelt|) (251 . |rest|)
+ (257 . |elt|)
+ (CONS IDENTITY
+ (FUNCALL (|dispatchFunction| |SYMBOL;sample;$;35|)
+ $))
+ (|SingleInteger|))
+ '#(~= 263 |superscript| 269 |subscript| 275 |string| 281
+ |scripts| 286 |scripted?| 291 |script| 296 |sample| 308
+ |resetNew| 312 |patternMatch| 316 |new| 330 |name| 339
+ |min| 344 |max| 350 |list| 356 |latex| 361 |hash| 366
+ |elt| 371 |convert| 377 |coerce| 397 |argscript| 407
+ |OMwrite| 413 >= 437 > 443 = 449 <= 455 < 461)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 '(0 0 0 0 0 0 0 0 0 0 0))
+ (CONS '#(|OrderedSet&| NIL NIL |SetCategory&|
+ |BasicType&| NIL NIL NIL NIL NIL NIL)
+ (CONS '#((|OrderedSet|) (|PatternMatchable| 67)
+ (|PatternMatchable| 6) (|SetCategory|)
+ (|BasicType|) (|ConvertibleTo| 69)
+ (|ConvertibleTo| 62)
+ (|ConvertibleTo| 24) (|OpenMath|)
+ (|ConvertibleTo| 44) (|CoercibleTo| 51))
+ (|makeByteWordVec2| 125
+ '(1 7 0 6 8 0 10 0 11 1 15 0 14 16 2 25
+ 23 0 24 26 0 27 0 28 2 25 0 13 27 29
+ 1 25 23 0 30 1 25 23 0 31 1 25 23 0
+ 32 1 39 0 13 40 1 39 41 0 42 1 44 0
+ 24 45 1 51 0 24 52 3 63 61 24 62 61
+ 64 3 70 68 24 69 68 71 1 69 0 24 74 1
+ 62 0 24 76 1 13 0 78 79 2 54 0 0 0 80
+ 2 13 39 0 6 85 2 39 21 0 0 86 1 21 0
+ 0 88 1 51 13 0 89 1 13 6 0 91 2 13 0
+ 39 0 92 1 7 6 0 93 2 7 6 0 6 94 2 10
+ 96 2 0 97 3 10 6 0 2 6 98 1 13 6 0 99
+ 2 13 6 39 0 100 1 10 102 0 103 2 10
+ 96 2 0 104 0 23 0 105 1 102 2 0 108 1
+ 39 21 0 109 2 110 0 6 6 111 2 13 0 0
+ 110 112 1 113 6 0 114 3 113 41 0 6 41
+ 115 2 113 0 0 41 116 1 102 0 0 117 1
+ 55 6 0 118 1 102 41 0 119 2 102 0 0
+ 41 120 3 55 54 0 6 54 121 2 102 0 0
+ 41 122 2 55 54 0 6 123 2 0 21 0 0 1 2
+ 0 0 0 54 59 2 0 0 0 54 57 1 0 13 0 84
+ 1 0 81 0 87 1 0 21 0 22 2 0 0 0 55 56
+ 2 0 0 0 81 82 0 0 0 124 0 0 23 106 3
+ 0 65 0 62 65 66 3 0 72 0 69 72 73 1 0
+ 0 0 101 0 0 0 95 1 0 0 0 83 2 0 0 0 0
+ 1 2 0 0 0 0 1 1 0 78 0 107 1 0 13 0
+ 90 1 0 125 0 1 2 0 0 0 54 58 1 0 62 0
+ 77 1 0 69 0 75 1 0 24 0 47 1 0 44 0
+ 46 1 0 0 13 48 1 0 51 0 53 2 0 0 0 54
+ 60 3 0 23 25 0 21 36 2 0 13 0 21 34 2
+ 0 23 25 0 35 1 0 13 0 33 2 0 21 0 0 1
+ 2 0 21 0 0 1 2 0 21 0 0 49 2 0 21 0 0
+ 1 2 0 21 0 0 50)))))
+ '|lookupComplete|))
+
+(MAKEPROP '|Symbol| 'NILADIC T)
diff --git a/src/algebra/strap/TSETCAT-.lsp b/src/algebra/strap/TSETCAT-.lsp
new file mode 100644
index 00000000..2b979ff7
--- /dev/null
+++ b/src/algebra/strap/TSETCAT-.lsp
@@ -0,0 +1,1031 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |TSETCAT-;=;2SB;1| (|ts| |us| $)
+ (PROG (#0=#:G1451 #1=#:G1457)
+ (RETURN
+ (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 12))
+ (SPADCALL |us| (|getShellEntry| $ 12)))
+ ((OR (SPADCALL |us| (|getShellEntry| $ 12))
+ (NULL (SPADCALL
+ (PROG2 (LETT #0#
+ (SPADCALL |ts|
+ (|getShellEntry| $ 14))
+ |TSETCAT-;=;2SB;1|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 10) #0#))
+ (PROG2 (LETT #0#
+ (SPADCALL |us|
+ (|getShellEntry| $ 14))
+ |TSETCAT-;=;2SB;1|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 10) #0#))
+ (|getShellEntry| $ 15))))
+ 'NIL)
+ ('T
+ (SPADCALL
+ (PROG2 (LETT #1# (SPADCALL |ts| (|getShellEntry| $ 17))
+ |TSETCAT-;=;2SB;1|)
+ (QCDR #1#)
+ (|check-union| (QEQCAR #1# 0) (|getShellEntry| $ 6) #1#))
+ (PROG2 (LETT #1# (SPADCALL |us| (|getShellEntry| $ 17))
+ |TSETCAT-;=;2SB;1|)
+ (QCDR #1#)
+ (|check-union| (QEQCAR #1# 0) (|getShellEntry| $ 6) #1#))
+ (|getShellEntry| $ 18)))))))
+
+(DEFUN |TSETCAT-;infRittWu?;2SB;2| (|ts| |us| $)
+ (PROG (|p| #0=#:G1464 |q| |v|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |us| (|getShellEntry| $ 12))
+ (SPADCALL (SPADCALL |ts| (|getShellEntry| $ 12))
+ (|getShellEntry| $ 20)))
+ ((SPADCALL |ts| (|getShellEntry| $ 12)) 'NIL)
+ ('T
+ (SEQ (LETT |p|
+ (PROG2 (LETT #0#
+ (SPADCALL |ts|
+ (|getShellEntry| $ 21))
+ |TSETCAT-;infRittWu?;2SB;2|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 10) #0#))
+ |TSETCAT-;infRittWu?;2SB;2|)
+ (LETT |q|
+ (PROG2 (LETT #0#
+ (SPADCALL |us|
+ (|getShellEntry| $ 21))
+ |TSETCAT-;infRittWu?;2SB;2|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 10) #0#))
+ |TSETCAT-;infRittWu?;2SB;2|)
+ (EXIT (COND
+ ((SPADCALL |p| |q| (|getShellEntry| $ 22))
+ 'T)
+ ((SPADCALL |p| |q| (|getShellEntry| $ 23))
+ 'NIL)
+ ('T
+ (SEQ (LETT |v|
+ (SPADCALL |p|
+ (|getShellEntry| $ 24))
+ |TSETCAT-;infRittWu?;2SB;2|)
+ (EXIT (SPADCALL
+ (SPADCALL |ts| |v|
+ (|getShellEntry| $ 25))
+ (SPADCALL |us| |v|
+ (|getShellEntry| $ 25))
+ (|getShellEntry| $ 26))))))))))))))
+
+(DEFUN |TSETCAT-;reduced?;PSMB;3| (|p| |ts| |redOp?| $)
+ (PROG (|lp|)
+ (RETURN
+ (SEQ (LETT |lp| (SPADCALL |ts| (|getShellEntry| $ 29))
+ |TSETCAT-;reduced?;PSMB;3|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp|) 'NIL)
+ ('T
+ (SPADCALL |p| (|SPADfirst| |lp|) |redOp?|))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |lp| (CDR |lp|)
+ |TSETCAT-;reduced?;PSMB;3|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (NULL |lp|))))))
+
+(DEFUN |TSETCAT-;basicSet;LMU;4| (|ps| |redOp?| $)
+ (PROG (|b| |bs| |p| |ts|)
+ (RETURN
+ (SEQ (LETT |ps| (SPADCALL (ELT $ 32) |ps| (|getShellEntry| $ 34))
+ |TSETCAT-;basicSet;LMU;4|)
+ (EXIT (COND
+ ((SPADCALL (ELT $ 35) |ps| (|getShellEntry| $ 36))
+ (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |ps|
+ (SPADCALL (ELT $ 22) |ps|
+ (|getShellEntry| $ 37))
+ |TSETCAT-;basicSet;LMU;4|)
+ (LETT |bs| (SPADCALL (|getShellEntry| $ 38))
+ |TSETCAT-;basicSet;LMU;4|)
+ (LETT |ts| NIL |TSETCAT-;basicSet;LMU;4|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |ps|)
+ (|getShellEntry| $ 20)))
+ (GO G191)))
+ (SEQ (LETT |b| (|SPADfirst| |ps|)
+ |TSETCAT-;basicSet;LMU;4|)
+ (LETT |bs|
+ (SPADCALL |bs| |b|
+ (|getShellEntry| $ 39))
+ |TSETCAT-;basicSet;LMU;4|)
+ (LETT |ps| (CDR |ps|)
+ |TSETCAT-;basicSet;LMU;4|)
+ (EXIT
+ (SEQ G190
+ (COND
+ ((NULL
+ (COND
+ ((NULL |ps|) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL
+ (LETT |p|
+ (|SPADfirst| |ps|)
+ |TSETCAT-;basicSet;LMU;4|)
+ |bs| |redOp?|
+ (|getShellEntry| $ 40))
+ (|getShellEntry| $ 20)))))
+ (GO G191)))
+ (SEQ
+ (LETT |ts| (CONS |p| |ts|)
+ |TSETCAT-;basicSet;LMU;4|)
+ (EXIT
+ (LETT |ps| (CDR |ps|)
+ |TSETCAT-;basicSet;LMU;4|)))
+ NIL (GO G190) G191 (EXIT NIL))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (CONS 0 (CONS |bs| |ts|)))))))))))
+
+(DEFUN |TSETCAT-;basicSet;LMMU;5| (|ps| |pred?| |redOp?| $)
+ (PROG (|bps| |b| |bs| |p| |gps| |ts|)
+ (RETURN
+ (SEQ (LETT |ps| (SPADCALL (ELT $ 32) |ps| (|getShellEntry| $ 34))
+ |TSETCAT-;basicSet;LMMU;5|)
+ (EXIT (COND
+ ((SPADCALL (ELT $ 35) |ps| (|getShellEntry| $ 36))
+ (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |gps| NIL |TSETCAT-;basicSet;LMMU;5|)
+ (LETT |bps| NIL |TSETCAT-;basicSet;LMMU;5|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |ps|)
+ (|getShellEntry| $ 20)))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |ps|)
+ |TSETCAT-;basicSet;LMMU;5|)
+ (LETT |ps| (CDR |ps|)
+ |TSETCAT-;basicSet;LMMU;5|)
+ (EXIT
+ (COND
+ ((SPADCALL |p| |pred?|)
+ (LETT |gps| (CONS |p| |gps|)
+ |TSETCAT-;basicSet;LMMU;5|))
+ ('T
+ (LETT |bps| (CONS |p| |bps|)
+ |TSETCAT-;basicSet;LMMU;5|)))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |gps|
+ (SPADCALL (ELT $ 22) |gps|
+ (|getShellEntry| $ 37))
+ |TSETCAT-;basicSet;LMMU;5|)
+ (LETT |bs| (SPADCALL (|getShellEntry| $ 38))
+ |TSETCAT-;basicSet;LMMU;5|)
+ (LETT |ts| NIL |TSETCAT-;basicSet;LMMU;5|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |gps|)
+ (|getShellEntry| $ 20)))
+ (GO G191)))
+ (SEQ (LETT |b| (|SPADfirst| |gps|)
+ |TSETCAT-;basicSet;LMMU;5|)
+ (LETT |bs|
+ (SPADCALL |bs| |b|
+ (|getShellEntry| $ 39))
+ |TSETCAT-;basicSet;LMMU;5|)
+ (LETT |gps| (CDR |gps|)
+ |TSETCAT-;basicSet;LMMU;5|)
+ (EXIT
+ (SEQ G190
+ (COND
+ ((NULL
+ (COND
+ ((NULL |gps|) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL
+ (LETT |p|
+ (|SPADfirst| |gps|)
+ |TSETCAT-;basicSet;LMMU;5|)
+ |bs| |redOp?|
+ (|getShellEntry| $ 40))
+ (|getShellEntry| $ 20)))))
+ (GO G191)))
+ (SEQ
+ (LETT |ts| (CONS |p| |ts|)
+ |TSETCAT-;basicSet;LMMU;5|)
+ (EXIT
+ (LETT |gps| (CDR |gps|)
+ |TSETCAT-;basicSet;LMMU;5|)))
+ NIL (GO G190) G191 (EXIT NIL))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (LETT |ts|
+ (SPADCALL (ELT $ 22)
+ (SPADCALL |ts| |bps|
+ (|getShellEntry| $ 44))
+ (|getShellEntry| $ 37))
+ |TSETCAT-;basicSet;LMMU;5|)
+ (EXIT (CONS 0 (CONS |bs| |ts|)))))))))))
+
+(DEFUN |TSETCAT-;initials;SL;6| (|ts| $)
+ (PROG (|p| |ip| |lip| |lp|)
+ (RETURN
+ (SEQ (LETT |lip| NIL |TSETCAT-;initials;SL;6|)
+ (EXIT (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 12)) |lip|)
+ ('T
+ (SEQ (LETT |lp|
+ (SPADCALL |ts| (|getShellEntry| $ 29))
+ |TSETCAT-;initials;SL;6|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lp|)
+ (|getShellEntry| $ 20)))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |lp|)
+ |TSETCAT-;initials;SL;6|)
+ (COND
+ ((NULL
+ (SPADCALL
+ (LETT |ip|
+ (SPADCALL |p|
+ (|getShellEntry| $ 46))
+ |TSETCAT-;initials;SL;6|)
+ (|getShellEntry| $ 35)))
+ (LETT |lip|
+ (CONS
+ (SPADCALL |ip|
+ (|getShellEntry| $ 47))
+ |lip|)
+ |TSETCAT-;initials;SL;6|)))
+ (EXIT
+ (LETT |lp| (CDR |lp|)
+ |TSETCAT-;initials;SL;6|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |lip| (|getShellEntry| $ 48)))))))))))
+
+(DEFUN |TSETCAT-;degree;SNni;7| (|ts| $)
+ (PROG (|lp| |d|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 12)) 0)
+ ('T
+ (SEQ (LETT |lp| (SPADCALL |ts| (|getShellEntry| $ 29))
+ |TSETCAT-;degree;SNni;7|)
+ (LETT |d|
+ (SPADCALL (|SPADfirst| |lp|)
+ (|getShellEntry| $ 51))
+ |TSETCAT-;degree;SNni;7|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (NULL
+ (LETT |lp| (CDR |lp|)
+ |TSETCAT-;degree;SNni;7|))
+ (|getShellEntry| $ 20)))
+ (GO G191)))
+ (SEQ (EXIT (LETT |d|
+ (* |d|
+ (SPADCALL (|SPADfirst| |lp|)
+ (|getShellEntry| $ 51)))
+ |TSETCAT-;degree;SNni;7|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |d|))))))))
+
+(DEFUN |TSETCAT-;quasiComponent;SR;8| (|ts| $)
+ (CONS (SPADCALL |ts| (|getShellEntry| $ 29))
+ (SPADCALL |ts| (|getShellEntry| $ 53))))
+
+(DEFUN |TSETCAT-;normalized?;PSB;9| (|p| |ts| $)
+ (SPADCALL |p| (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 57)))
+
+(DEFUN |TSETCAT-;stronglyReduced?;PSB;10| (|p| |ts| $)
+ (SPADCALL |p| (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 59)))
+
+(DEFUN |TSETCAT-;headReduced?;PSB;11| (|p| |ts| $)
+ (SPADCALL (SPADCALL |p| (|getShellEntry| $ 61)) |ts|
+ (|getShellEntry| $ 62)))
+
+(DEFUN |TSETCAT-;initiallyReduced?;PSB;12| (|p| |ts| $)
+ (PROG (|lp| |red|)
+ (RETURN
+ (SEQ (LETT |lp| (SPADCALL |ts| (|getShellEntry| $ 29))
+ |TSETCAT-;initiallyReduced?;PSB;12|)
+ (LETT |red| 'T |TSETCAT-;initiallyReduced?;PSB;12|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((OR (NULL |lp|)
+ (SPADCALL |p| (|getShellEntry| $ 35)))
+ 'NIL)
+ ('T |red|)))
+ (GO G191)))
+ (SEQ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp|) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 24))
+ (SPADCALL (|SPADfirst| |lp|)
+ (|getShellEntry| $ 24))
+ (|getShellEntry| $ 64)))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |lp| (CDR |lp|)
+ |TSETCAT-;initiallyReduced?;PSB;12|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((NULL (NULL |lp|))
+ (COND
+ ((SPADCALL
+ (SPADCALL (|SPADfirst| |lp|)
+ (|getShellEntry| $ 24))
+ (SPADCALL |p|
+ (|getShellEntry| $ 24))
+ (|getShellEntry| $ 65))
+ (COND
+ ((SPADCALL |p| (|SPADfirst| |lp|)
+ (|getShellEntry| $ 66))
+ (SEQ
+ (LETT |lp| (CDR |lp|)
+ |TSETCAT-;initiallyReduced?;PSB;12|)
+ (EXIT
+ (LETT |p|
+ (SPADCALL |p|
+ (|getShellEntry| $ 46))
+ |TSETCAT-;initiallyReduced?;PSB;12|))))
+ ('T
+ (LETT |red| 'NIL
+ |TSETCAT-;initiallyReduced?;PSB;12|))))
+ ('T
+ (LETT |p|
+ (SPADCALL |p|
+ (|getShellEntry| $ 46))
+ |TSETCAT-;initiallyReduced?;PSB;12|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |red|)))))
+
+(DEFUN |TSETCAT-;reduce;PSMMP;13| (|p| |ts| |redOp| |redOp?| $)
+ (PROG (|ts0| #0=#:G1539 |reductor| #1=#:G1542)
+ (RETURN
+ (SEQ (COND
+ ((OR (SPADCALL |ts| (|getShellEntry| $ 12))
+ (SPADCALL |p| (|getShellEntry| $ 35)))
+ |p|)
+ ('T
+ (SEQ (LETT |ts0| |ts| |TSETCAT-;reduce;PSMMP;13|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |ts|
+ (|getShellEntry| $ 12))
+ 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 35))
+ (|getShellEntry| $ 20)))))
+ (GO G191)))
+ (SEQ (LETT |reductor|
+ (PROG2
+ (LETT #0#
+ (SPADCALL |ts|
+ (|getShellEntry| $ 14))
+ |TSETCAT-;reduce;PSMMP;13|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 10) #0#))
+ |TSETCAT-;reduce;PSMMP;13|)
+ (LETT |ts|
+ (PROG2
+ (LETT #1#
+ (SPADCALL |ts|
+ (|getShellEntry| $ 17))
+ |TSETCAT-;reduce;PSMMP;13|)
+ (QCDR #1#)
+ (|check-union| (QEQCAR #1# 0)
+ (|getShellEntry| $ 6) #1#))
+ |TSETCAT-;reduce;PSMMP;13|)
+ (EXIT (COND
+ ((NULL
+ (SPADCALL |p| |reductor|
+ |redOp?|))
+ (SEQ
+ (LETT |p|
+ (SPADCALL |p| |reductor|
+ |redOp|)
+ |TSETCAT-;reduce;PSMMP;13|)
+ (EXIT
+ (LETT |ts| |ts0|
+ |TSETCAT-;reduce;PSMMP;13|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |p|))))))))
+
+(DEFUN |TSETCAT-;rewriteSetWithReduction;LSMML;14|
+ (|lp| |ts| |redOp| |redOp?| $)
+ (PROG (|p| |rs|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 70)) |lp|)
+ ('T
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 32) |lp|
+ (|getShellEntry| $ 34))
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|)
+ (EXIT (COND
+ ((NULL |lp|) |lp|)
+ ((SPADCALL (ELT $ 35) |lp|
+ (|getShellEntry| $ 36))
+ (LIST (|spadConstant| $ 71)))
+ ('T
+ (SEQ (LETT |rs| NIL
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|)
+ (SEQ G190
+ (COND
+ ((NULL
+ (SPADCALL (NULL |lp|)
+ (|getShellEntry| $ 20)))
+ (GO G191)))
+ (SEQ
+ (LETT |p| (|SPADfirst| |lp|)
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|)
+ (LETT |lp| (CDR |lp|)
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|)
+ (LETT |p|
+ (SPADCALL
+ (SPADCALL |p| |ts| |redOp|
+ |redOp?|
+ (|getShellEntry| $ 72))
+ (|getShellEntry| $ 47))
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|)
+ (EXIT
+ (COND
+ ((NULL
+ (SPADCALL |p|
+ (|getShellEntry| $ 32)))
+ (COND
+ ((SPADCALL |p|
+ (|getShellEntry| $ 35))
+ (SEQ
+ (LETT |lp| NIL
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|)
+ (EXIT
+ (LETT |rs|
+ (LIST
+ (|spadConstant| $ 71))
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|))))
+ ('T
+ (LETT |rs|
+ (CONS |p| |rs|)
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|)))))))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |rs|
+ (|getShellEntry| $ 48))))))))))))))
+
+(DEFUN |TSETCAT-;stronglyReduce;PSP;15| (|p| |ts| $)
+ (SPADCALL |p| |ts| (ELT $ 74) (ELT $ 66) (|getShellEntry| $ 72)))
+
+(DEFUN |TSETCAT-;headReduce;PSP;16| (|p| |ts| $)
+ (SPADCALL |p| |ts| (ELT $ 76) (ELT $ 77) (|getShellEntry| $ 72)))
+
+(DEFUN |TSETCAT-;initiallyReduce;PSP;17| (|p| |ts| $)
+ (SPADCALL |p| |ts| (ELT $ 79) (ELT $ 80) (|getShellEntry| $ 72)))
+
+(DEFUN |TSETCAT-;removeZero;PSP;18| (|p| |ts| $)
+ (PROG (|v| |tsv-| #0=#:G1565 #1=#:G1574 |q|)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((OR (SPADCALL |p| (|getShellEntry| $ 35))
+ (SPADCALL |ts| (|getShellEntry| $ 12)))
+ |p|)
+ ('T
+ (SEQ (LETT |v|
+ (SPADCALL |p| (|getShellEntry| $ 24))
+ |TSETCAT-;removeZero;PSP;18|)
+ (LETT |tsv-|
+ (SPADCALL |ts| |v|
+ (|getShellEntry| $ 82))
+ |TSETCAT-;removeZero;PSP;18|)
+ (COND
+ ((SPADCALL |v| |ts| (|getShellEntry| $ 83))
+ (SEQ (LETT |q|
+ (SPADCALL |p|
+ (PROG2
+ (LETT #0#
+ (SPADCALL |ts| |v|
+ (|getShellEntry| $ 84))
+ |TSETCAT-;removeZero;PSP;18|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 10) #0#))
+ (|getShellEntry| $ 74))
+ |TSETCAT-;removeZero;PSP;18|)
+ (EXIT (COND
+ ((SPADCALL |q|
+ (|getShellEntry| $ 32))
+ (PROGN
+ (LETT #1# |q|
+ |TSETCAT-;removeZero;PSP;18|)
+ (GO #1#)))
+ ((SPADCALL
+ (SPADCALL |q| |tsv-|
+ (|getShellEntry| $ 85))
+ (|getShellEntry| $ 32))
+ (PROGN
+ (LETT #1#
+ (|spadConstant| $ 86)
+ |TSETCAT-;removeZero;PSP;18|)
+ (GO #1#))))))))
+ (EXIT (COND
+ ((SPADCALL |tsv-|
+ (|getShellEntry| $ 12))
+ |p|)
+ ('T
+ (SEQ (LETT |q| (|spadConstant| $ 86)
+ |TSETCAT-;removeZero;PSP;18|)
+ (SEQ G190
+ (COND
+ ((NULL
+ (SPADCALL
+ (SPADCALL |p| |v|
+ (|getShellEntry| $ 87))
+ (|getShellEntry| $ 89)))
+ (GO G191)))
+ (SEQ
+ (LETT |q|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 46))
+ |tsv-|
+ (|getShellEntry| $ 85))
+ (SPADCALL |p|
+ (|getShellEntry| $ 90))
+ (|getShellEntry| $ 91))
+ |q| (|getShellEntry| $ 92))
+ |TSETCAT-;removeZero;PSP;18|)
+ (EXIT
+ (LETT |p|
+ (SPADCALL |p|
+ (|getShellEntry| $ 93))
+ |TSETCAT-;removeZero;PSP;18|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT
+ (SPADCALL |q|
+ (SPADCALL |p| |tsv-|
+ (|getShellEntry| $ 85))
+ (|getShellEntry| $ 92)))))))))))
+ #1# (EXIT #1#)))))
+
+(DEFUN |TSETCAT-;reduceByQuasiMonic;PSP;19| (|p| |ts| $)
+ (COND
+ ((OR (SPADCALL |p| (|getShellEntry| $ 35))
+ (SPADCALL |ts| (|getShellEntry| $ 12)))
+ |p|)
+ ('T
+ (QVELT (SPADCALL |p| (SPADCALL |ts| (|getShellEntry| $ 95))
+ (|getShellEntry| $ 97))
+ 1))))
+
+(DEFUN |TSETCAT-;autoReduced?;SMB;20| (|ts| |redOp?| $)
+ (PROG (|p| |lp|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 12)) 'T)
+ ('T
+ (SEQ (LETT |lp| (SPADCALL |ts| (|getShellEntry| $ 29))
+ |TSETCAT-;autoReduced?;SMB;20|)
+ (LETT |p| (|SPADfirst| |lp|)
+ |TSETCAT-;autoReduced?;SMB;20|)
+ (LETT |lp| (CDR |lp|)
+ |TSETCAT-;autoReduced?;SMB;20|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp|) 'NIL)
+ ('T (SPADCALL |p| |lp| |redOp?|))))
+ (GO G191)))
+ (SEQ (LETT |p| (|SPADfirst| |lp|)
+ |TSETCAT-;autoReduced?;SMB;20|)
+ (EXIT (LETT |lp| (CDR |lp|)
+ |TSETCAT-;autoReduced?;SMB;20|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (NULL |lp|)))))))))
+
+(DEFUN |TSETCAT-;stronglyReduced?;SB;21| (|ts| $)
+ (SPADCALL |ts| (ELT $ 59) (|getShellEntry| $ 101)))
+
+(DEFUN |TSETCAT-;normalized?;SB;22| (|ts| $)
+ (SPADCALL |ts| (ELT $ 57) (|getShellEntry| $ 101)))
+
+(DEFUN |TSETCAT-;headReduced?;SB;23| (|ts| $)
+ (SPADCALL |ts| (ELT $ 104) (|getShellEntry| $ 101)))
+
+(DEFUN |TSETCAT-;initiallyReduced?;SB;24| (|ts| $)
+ (SPADCALL |ts| (ELT $ 106) (|getShellEntry| $ 101)))
+
+(DEFUN |TSETCAT-;mvar;SV;25| (|ts| $)
+ (PROG (#0=#:G1593)
+ (RETURN
+ (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 12))
+ (|error| "Error from TSETCAT in mvar : #1 is empty"))
+ ('T
+ (SPADCALL
+ (PROG2 (LETT #0# (SPADCALL |ts| (|getShellEntry| $ 14))
+ |TSETCAT-;mvar;SV;25|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (|getShellEntry| $ 10)
+ #0#))
+ (|getShellEntry| $ 24)))))))
+
+(DEFUN |TSETCAT-;first;SU;26| (|ts| $)
+ (PROG (|lp|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 12)) (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 23)
+ (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 37))
+ |TSETCAT-;first;SU;26|)
+ (EXIT (CONS 0 (|SPADfirst| |lp|))))))))))
+
+(DEFUN |TSETCAT-;last;SU;27| (|ts| $)
+ (PROG (|lp|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 12)) (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 22)
+ (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 37))
+ |TSETCAT-;last;SU;27|)
+ (EXIT (CONS 0 (|SPADfirst| |lp|))))))))))
+
+(DEFUN |TSETCAT-;rest;SU;28| (|ts| $)
+ (PROG (|lp|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |ts| (|getShellEntry| $ 12)) (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 23)
+ (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 37))
+ |TSETCAT-;rest;SU;28|)
+ (EXIT (CONS 0
+ (SPADCALL (CDR |lp|)
+ (|getShellEntry| $ 111)))))))))))
+
+(DEFUN |TSETCAT-;coerce;SL;29| (|ts| $)
+ (SPADCALL (ELT $ 23) (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 37)))
+
+(DEFUN |TSETCAT-;algebraicVariables;SL;30| (|ts| $)
+ (PROG (#0=#:G1618 |p| #1=#:G1619)
+ (RETURN
+ (SEQ (PROGN
+ (LETT #0# NIL |TSETCAT-;algebraicVariables;SL;30|)
+ (SEQ (LETT |p| NIL |TSETCAT-;algebraicVariables;SL;30|)
+ (LETT #1# (SPADCALL |ts| (|getShellEntry| $ 29))
+ |TSETCAT-;algebraicVariables;SL;30|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |p| (CAR #1#)
+ |TSETCAT-;algebraicVariables;SL;30|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (LETT #0#
+ (CONS
+ (SPADCALL |p|
+ (|getShellEntry| $ 24))
+ #0#)
+ |TSETCAT-;algebraicVariables;SL;30|)))
+ (LETT #1# (CDR #1#)
+ |TSETCAT-;algebraicVariables;SL;30|)
+ (GO G190) G191 (EXIT (NREVERSE0 #0#))))))))
+
+(DEFUN |TSETCAT-;algebraic?;VSB;31| (|v| |ts| $)
+ (SPADCALL |v| (SPADCALL |ts| (|getShellEntry| $ 116))
+ (|getShellEntry| $ 117)))
+
+(DEFUN |TSETCAT-;select;SVU;32| (|ts| |v| $)
+ (PROG (|lp|)
+ (RETURN
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 23)
+ (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 37))
+ |TSETCAT-;select;SVU;32|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp|) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL |v|
+ (SPADCALL (|SPADfirst| |lp|)
+ (|getShellEntry| $ 24))
+ (|getShellEntry| $ 65))
+ (|getShellEntry| $ 20)))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |lp| (CDR |lp|)
+ |TSETCAT-;select;SVU;32|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((NULL |lp|) (CONS 1 "failed"))
+ ('T (CONS 0 (|SPADfirst| |lp|)))))))))
+
+(DEFUN |TSETCAT-;collectQuasiMonic;2S;33| (|ts| $)
+ (PROG (|newlp| |lp|)
+ (RETURN
+ (SEQ (LETT |lp| (SPADCALL |ts| (|getShellEntry| $ 29))
+ |TSETCAT-;collectQuasiMonic;2S;33|)
+ (LETT |newlp| NIL |TSETCAT-;collectQuasiMonic;2S;33|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (NULL |lp|) (|getShellEntry| $ 20)))
+ (GO G191)))
+ (SEQ (COND
+ ((SPADCALL
+ (SPADCALL (|SPADfirst| |lp|)
+ (|getShellEntry| $ 46))
+ (|getShellEntry| $ 35))
+ (LETT |newlp| (CONS (|SPADfirst| |lp|) |newlp|)
+ |TSETCAT-;collectQuasiMonic;2S;33|)))
+ (EXIT (LETT |lp| (CDR |lp|)
+ |TSETCAT-;collectQuasiMonic;2S;33|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |newlp| (|getShellEntry| $ 111)))))))
+
+(DEFUN |TSETCAT-;collectUnder;SVS;34| (|ts| |v| $)
+ (PROG (|lp|)
+ (RETURN
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 23)
+ (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 37))
+ |TSETCAT-;collectUnder;SVS;34|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp|) 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL (|SPADfirst| |lp|)
+ (|getShellEntry| $ 24))
+ |v| (|getShellEntry| $ 64))
+ (|getShellEntry| $ 20)))))
+ (GO G191)))
+ (SEQ (EXIT (LETT |lp| (CDR |lp|)
+ |TSETCAT-;collectUnder;SVS;34|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |lp| (|getShellEntry| $ 111)))))))
+
+(DEFUN |TSETCAT-;collectUpper;SVS;35| (|ts| |v| $)
+ (PROG (|lp2| |lp1|)
+ (RETURN
+ (SEQ (LETT |lp1|
+ (SPADCALL (ELT $ 23)
+ (SPADCALL |ts| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 37))
+ |TSETCAT-;collectUpper;SVS;35|)
+ (LETT |lp2| NIL |TSETCAT-;collectUpper;SVS;35|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((NULL |lp1|) 'NIL)
+ ('T
+ (SPADCALL |v|
+ (SPADCALL (|SPADfirst| |lp1|)
+ (|getShellEntry| $ 24))
+ (|getShellEntry| $ 64)))))
+ (GO G191)))
+ (SEQ (LETT |lp2| (CONS (|SPADfirst| |lp1|) |lp2|)
+ |TSETCAT-;collectUpper;SVS;35|)
+ (EXIT (LETT |lp1| (CDR |lp1|)
+ |TSETCAT-;collectUpper;SVS;35|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL (REVERSE |lp2|) (|getShellEntry| $ 111)))))))
+
+(DEFUN |TSETCAT-;construct;LS;36| (|lp| $)
+ (PROG (|rif|)
+ (RETURN
+ (SEQ (LETT |rif| (SPADCALL |lp| (|getShellEntry| $ 123))
+ |TSETCAT-;construct;LS;36|)
+ (EXIT (COND
+ ((QEQCAR |rif| 0) (QCDR |rif|))
+ ('T
+ (|error| "in construct : LP -> $ from TSETCAT : bad arg"))))))))
+
+(DEFUN |TSETCAT-;retractIfCan;LU;37| (|lp| $)
+ (PROG (|rif|)
+ (RETURN
+ (SEQ (COND
+ ((NULL |lp|) (CONS 0 (SPADCALL (|getShellEntry| $ 38))))
+ ('T
+ (SEQ (LETT |lp|
+ (SPADCALL (ELT $ 23) |lp|
+ (|getShellEntry| $ 37))
+ |TSETCAT-;retractIfCan;LU;37|)
+ (LETT |rif|
+ (SPADCALL (CDR |lp|) (|getShellEntry| $ 123))
+ |TSETCAT-;retractIfCan;LU;37|)
+ (EXIT (COND
+ ((QEQCAR |rif| 0)
+ (SPADCALL (QCDR |rif|) (|SPADfirst| |lp|)
+ (|getShellEntry| $ 125)))
+ ('T
+ (|error| "in retractIfCan : LP -> ... from TSETCAT : bad arg")))))))))))
+
+(DEFUN |TSETCAT-;extend;SPS;38| (|ts| |p| $)
+ (PROG (|eif|)
+ (RETURN
+ (SEQ (LETT |eif| (SPADCALL |ts| |p| (|getShellEntry| $ 125))
+ |TSETCAT-;extend;SPS;38|)
+ (EXIT (COND
+ ((QEQCAR |eif| 0) (QCDR |eif|))
+ ('T
+ (|error| "in extend : ($,P) -> $ from TSETCAT : bad ars"))))))))
+
+(DEFUN |TSETCAT-;coHeight;SNni;39| (|ts| $)
+ (PROG (|n| |m| #0=#:G1659)
+ (RETURN
+ (SEQ (LETT |n| (SPADCALL (|getShellEntry| $ 128))
+ |TSETCAT-;coHeight;SNni;39|)
+ (LETT |m| (LENGTH (SPADCALL |ts| (|getShellEntry| $ 29)))
+ |TSETCAT-;coHeight;SNni;39|)
+ (EXIT (PROG2 (LETT #0#
+ (SPADCALL |n| |m|
+ (|getShellEntry| $ 129))
+ |TSETCAT-;coHeight;SNni;39|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (|NonNegativeInteger|)
+ #0#)))))))
+
+(DEFUN |TriangularSetCategory&| (|#1| |#2| |#3| |#4| |#5|)
+ (PROG (|dv$1| |dv$2| |dv$3| |dv$4| |dv$5| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|)
+ . #0=(|TriangularSetCategory&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$3| (|devaluate| |#3|) . #0#)
+ (LETT |dv$4| (|devaluate| |#4|) . #0#)
+ (LETT |dv$5| (|devaluate| |#5|) . #0#)
+ (LETT |dv$|
+ (LIST '|TriangularSetCategory&| |dv$1| |dv$2| |dv$3|
+ |dv$4| |dv$5|) . #0#)
+ (LETT $ (|newShell| 132) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#4| '(|Finite|)))) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (|setShellEntry| $ 7 |#2|)
+ (|setShellEntry| $ 8 |#3|)
+ (|setShellEntry| $ 9 |#4|)
+ (|setShellEntry| $ 10 |#5|)
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (|setShellEntry| $ 130
+ (CONS (|dispatchFunction| |TSETCAT-;coHeight;SNni;39|)
+ $))))
+ $))))
+
+(MAKEPROP '|TriangularSetCategory&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|local| |#3|) (|local| |#4|) (|local| |#5|) (|Boolean|)
+ (0 . |empty?|) (|Union| 10 '"failed") (5 . |first|)
+ (10 . =) (|Union| $ '"failed") (16 . |rest|) (21 . =)
+ |TSETCAT-;=;2SB;1| (27 . |not|) (32 . |last|)
+ (37 . |infRittWu?|) (43 . |supRittWu?|) (49 . |mvar|)
+ (54 . |collectUpper|) (60 . |infRittWu?|)
+ |TSETCAT-;infRittWu?;2SB;2| (|List| 10) (66 . |members|)
+ (|Mapping| 11 10 10) |TSETCAT-;reduced?;PSMB;3|
+ (71 . |zero?|) (|Mapping| 11 10) (76 . |remove|)
+ (82 . |ground?|) (87 . |any?|) (93 . |sort|)
+ (99 . |empty|) (103 . |extend|) (109 . |reduced?|)
+ (|Record| (|:| |bas| $) (|:| |top| 28))
+ (|Union| 41 '"failed") |TSETCAT-;basicSet;LMU;4|
+ (116 . |concat|) |TSETCAT-;basicSet;LMMU;5| (122 . |init|)
+ (127 . |primPartElseUnitCanonical|)
+ (132 . |removeDuplicates|) |TSETCAT-;initials;SL;6|
+ (|NonNegativeInteger|) (137 . |mdeg|)
+ |TSETCAT-;degree;SNni;7| (142 . |initials|)
+ (|Record| (|:| |close| 28) (|:| |open| 28))
+ |TSETCAT-;quasiComponent;SR;8| (|List| $)
+ (147 . |normalized?|) |TSETCAT-;normalized?;PSB;9|
+ (153 . |reduced?|) |TSETCAT-;stronglyReduced?;PSB;10|
+ (159 . |head|) (164 . |stronglyReduced?|)
+ |TSETCAT-;headReduced?;PSB;11| (170 . <) (176 . =)
+ (182 . |reduced?|) |TSETCAT-;initiallyReduced?;PSB;12|
+ (|Mapping| 10 10 10) |TSETCAT-;reduce;PSMMP;13|
+ (188 . |trivialIdeal?|) (193 . |One|) (197 . |reduce|)
+ |TSETCAT-;rewriteSetWithReduction;LSMML;14|
+ (205 . |lazyPrem|) |TSETCAT-;stronglyReduce;PSP;15|
+ (211 . |headReduce|) (217 . |headReduced?|)
+ |TSETCAT-;headReduce;PSP;16| (223 . |initiallyReduce|)
+ (229 . |initiallyReduced?|)
+ |TSETCAT-;initiallyReduce;PSP;17| (235 . |collectUnder|)
+ (241 . |algebraic?|) (247 . |select|) (253 . |removeZero|)
+ (259 . |Zero|) (263 . |degree|) (|Integer|)
+ (269 . |positive?|) (274 . |mainMonomial|) (279 . *)
+ (285 . +) (291 . |tail|) |TSETCAT-;removeZero;PSP;18|
+ (296 . |collectQuasiMonic|)
+ (|Record| (|:| |rnum| 7) (|:| |polnum| 10) (|:| |den| 7))
+ (301 . |remainder|) |TSETCAT-;reduceByQuasiMonic;PSP;19|
+ (|Mapping| 11 10 28) |TSETCAT-;autoReduced?;SMB;20|
+ (307 . |autoReduced?|) |TSETCAT-;stronglyReduced?;SB;21|
+ |TSETCAT-;normalized?;SB;22| (313 . |headReduced?|)
+ |TSETCAT-;headReduced?;SB;23| (319 . |initiallyReduced?|)
+ |TSETCAT-;initiallyReduced?;SB;24| |TSETCAT-;mvar;SV;25|
+ |TSETCAT-;first;SU;26| |TSETCAT-;last;SU;27|
+ (325 . |construct|) |TSETCAT-;rest;SU;28|
+ |TSETCAT-;coerce;SL;29| (|List| 9)
+ |TSETCAT-;algebraicVariables;SL;30|
+ (330 . |algebraicVariables|) (335 . |member?|)
+ |TSETCAT-;algebraic?;VSB;31| |TSETCAT-;select;SVU;32|
+ |TSETCAT-;collectQuasiMonic;2S;33|
+ |TSETCAT-;collectUnder;SVS;34|
+ |TSETCAT-;collectUpper;SVS;35| (341 . |retractIfCan|)
+ |TSETCAT-;construct;LS;36| (346 . |extendIfCan|)
+ |TSETCAT-;retractIfCan;LU;37| |TSETCAT-;extend;SPS;38|
+ (352 . |size|) (356 . |subtractIfCan|) (362 . |coHeight|)
+ (|OutputForm|))
+ '#(|stronglyReduced?| 367 |stronglyReduce| 378 |select| 384
+ |rewriteSetWithReduction| 390 |retractIfCan| 398 |rest|
+ 403 |removeZero| 408 |reduced?| 414 |reduceByQuasiMonic|
+ 421 |reduce| 427 |quasiComponent| 435 |normalized?| 440
+ |mvar| 451 |last| 456 |initials| 461 |initiallyReduced?|
+ 466 |initiallyReduce| 477 |infRittWu?| 483 |headReduced?|
+ 489 |headReduce| 500 |first| 506 |extend| 511 |degree| 517
+ |construct| 522 |collectUpper| 527 |collectUnder| 533
+ |collectQuasiMonic| 539 |coerce| 544 |coHeight| 549
+ |basicSet| 554 |autoReduced?| 567 |algebraicVariables| 573
+ |algebraic?| 578 = 584)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 130
+ '(1 6 11 0 12 1 6 13 0 14 2 10 11 0 0
+ 15 1 6 16 0 17 2 6 11 0 0 18 1 11 0 0
+ 20 1 6 13 0 21 2 10 11 0 0 22 2 10 11
+ 0 0 23 1 10 9 0 24 2 6 0 0 9 25 2 6
+ 11 0 0 26 1 6 28 0 29 1 10 11 0 32 2
+ 28 0 33 0 34 1 10 11 0 35 2 28 11 33
+ 0 36 2 28 0 30 0 37 0 6 0 38 2 6 0 0
+ 10 39 3 6 11 10 0 30 40 2 28 0 0 0 44
+ 1 10 0 0 46 1 10 0 0 47 1 28 0 0 48 1
+ 10 50 0 51 1 6 28 0 53 2 10 11 0 56
+ 57 2 10 11 0 56 59 1 10 0 0 61 2 6 11
+ 10 0 62 2 9 11 0 0 64 2 9 11 0 0 65 2
+ 10 11 0 0 66 1 6 11 0 70 0 10 0 71 4
+ 6 10 10 0 68 30 72 2 10 0 0 0 74 2 10
+ 0 0 0 76 2 10 11 0 0 77 2 10 0 0 0 79
+ 2 10 11 0 0 80 2 6 0 0 9 82 2 6 11 9
+ 0 83 2 6 13 0 9 84 2 6 10 10 0 85 0
+ 10 0 86 2 10 50 0 9 87 1 88 11 0 89 1
+ 10 0 0 90 2 10 0 0 0 91 2 10 0 0 0 92
+ 1 10 0 0 93 1 6 0 0 95 2 6 96 10 0 97
+ 2 6 11 0 99 101 2 10 11 0 56 104 2 10
+ 11 0 56 106 1 6 0 28 111 1 6 114 0
+ 116 2 114 11 9 0 117 1 6 16 28 123 2
+ 6 16 0 10 125 0 9 50 128 2 50 16 0 0
+ 129 1 0 50 0 130 1 0 11 0 102 2 0 11
+ 10 0 60 2 0 10 10 0 75 2 0 13 0 9 119
+ 4 0 28 28 0 68 30 73 1 0 16 28 126 1
+ 0 16 0 112 2 0 10 10 0 94 3 0 11 10 0
+ 30 31 2 0 10 10 0 98 4 0 10 10 0 68
+ 30 69 1 0 54 0 55 1 0 11 0 103 2 0 11
+ 10 0 58 1 0 9 0 108 1 0 13 0 110 1 0
+ 28 0 49 1 0 11 0 107 2 0 11 10 0 67 2
+ 0 10 10 0 81 2 0 11 0 0 27 1 0 11 0
+ 105 2 0 11 10 0 63 2 0 10 10 0 78 1 0
+ 13 0 109 2 0 0 0 10 127 1 0 50 0 52 1
+ 0 0 28 124 2 0 0 0 9 122 2 0 0 0 9
+ 121 1 0 0 0 120 1 0 28 0 113 1 0 50 0
+ 130 3 0 42 28 33 30 45 2 0 42 28 30
+ 43 2 0 11 0 99 100 1 0 114 0 115 2 0
+ 11 9 0 118 2 0 11 0 0 19)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/TSETCAT.lsp b/src/algebra/strap/TSETCAT.lsp
new file mode 100644
index 00000000..8304c820
--- /dev/null
+++ b/src/algebra/strap/TSETCAT.lsp
@@ -0,0 +1,200 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |TriangularSetCategory;CAT| 'NIL)
+
+(DEFPARAMETER |TriangularSetCategory;AL| 'NIL)
+
+(DEFUN |TriangularSetCategory| (&REST #0=#:G1439 &AUX #1=#:G1437)
+ (DSETQ #1# #0#)
+ (LET (#2=#:G1438)
+ (COND
+ ((SETQ #2#
+ (|assoc| (|devaluateList| #1#) |TriangularSetCategory;AL|))
+ (CDR #2#))
+ (T (SETQ |TriangularSetCategory;AL|
+ (|cons5| (CONS (|devaluateList| #1#)
+ (SETQ #2#
+ (APPLY #'|TriangularSetCategory;|
+ #1#)))
+ |TriangularSetCategory;AL|))
+ #2#))))
+
+(DEFUN |TriangularSetCategory;| (|t#1| |t#2| |t#3| |t#4|)
+ (PROG (#0=#:G1436)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1| |t#2| |t#3| |t#4|)
+ (LIST (|devaluate| |t#1|)
+ (|devaluate| |t#2|)
+ (|devaluate| |t#3|)
+ (|devaluate| |t#4|)))
+ (COND
+ (|TriangularSetCategory;CAT|)
+ ('T
+ (LETT |TriangularSetCategory;CAT|
+ (|Join| (|PolynomialSetCategory| '|t#1|
+ '|t#2| '|t#3| '|t#4|)
+ (|mkCategory| '|domain|
+ '(((|infRittWu?|
+ ((|Boolean|) $ $))
+ T)
+ ((|basicSet|
+ ((|Union|
+ (|Record| (|:| |bas| $)
+ (|:| |top|
+ (|List| |t#4|)))
+ "failed")
+ (|List| |t#4|)
+ (|Mapping| (|Boolean|)
+ |t#4| |t#4|)))
+ T)
+ ((|basicSet|
+ ((|Union|
+ (|Record| (|:| |bas| $)
+ (|:| |top|
+ (|List| |t#4|)))
+ "failed")
+ (|List| |t#4|)
+ (|Mapping| (|Boolean|)
+ |t#4|)
+ (|Mapping| (|Boolean|)
+ |t#4| |t#4|)))
+ T)
+ ((|initials|
+ ((|List| |t#4|) $))
+ T)
+ ((|degree|
+ ((|NonNegativeInteger|) $))
+ T)
+ ((|quasiComponent|
+ ((|Record|
+ (|:| |close|
+ (|List| |t#4|))
+ (|:| |open|
+ (|List| |t#4|)))
+ $))
+ T)
+ ((|normalized?|
+ ((|Boolean|) |t#4| $))
+ T)
+ ((|normalized?|
+ ((|Boolean|) $))
+ T)
+ ((|reduced?|
+ ((|Boolean|) |t#4| $
+ (|Mapping| (|Boolean|)
+ |t#4| |t#4|)))
+ T)
+ ((|stronglyReduced?|
+ ((|Boolean|) |t#4| $))
+ T)
+ ((|headReduced?|
+ ((|Boolean|) |t#4| $))
+ T)
+ ((|initiallyReduced?|
+ ((|Boolean|) |t#4| $))
+ T)
+ ((|autoReduced?|
+ ((|Boolean|) $
+ (|Mapping| (|Boolean|)
+ |t#4| (|List| |t#4|))))
+ T)
+ ((|stronglyReduced?|
+ ((|Boolean|) $))
+ T)
+ ((|headReduced?|
+ ((|Boolean|) $))
+ T)
+ ((|initiallyReduced?|
+ ((|Boolean|) $))
+ T)
+ ((|reduce|
+ (|t#4| |t#4| $
+ (|Mapping| |t#4| |t#4|
+ |t#4|)
+ (|Mapping| (|Boolean|)
+ |t#4| |t#4|)))
+ T)
+ ((|rewriteSetWithReduction|
+ ((|List| |t#4|)
+ (|List| |t#4|) $
+ (|Mapping| |t#4| |t#4|
+ |t#4|)
+ (|Mapping| (|Boolean|)
+ |t#4| |t#4|)))
+ T)
+ ((|stronglyReduce|
+ (|t#4| |t#4| $))
+ T)
+ ((|headReduce|
+ (|t#4| |t#4| $))
+ T)
+ ((|initiallyReduce|
+ (|t#4| |t#4| $))
+ T)
+ ((|removeZero|
+ (|t#4| |t#4| $))
+ T)
+ ((|collectQuasiMonic| ($ $))
+ T)
+ ((|reduceByQuasiMonic|
+ (|t#4| |t#4| $))
+ T)
+ ((|zeroSetSplit|
+ ((|List| $)
+ (|List| |t#4|)))
+ T)
+ ((|zeroSetSplitIntoTriangularSystems|
+ ((|List|
+ (|Record|
+ (|:| |close| $)
+ (|:| |open|
+ (|List| |t#4|))))
+ (|List| |t#4|)))
+ T)
+ ((|first|
+ ((|Union| |t#4| "failed")
+ $))
+ T)
+ ((|last|
+ ((|Union| |t#4| "failed")
+ $))
+ T)
+ ((|rest|
+ ((|Union| $ "failed") $))
+ T)
+ ((|algebraicVariables|
+ ((|List| |t#3|) $))
+ T)
+ ((|algebraic?|
+ ((|Boolean|) |t#3| $))
+ T)
+ ((|select|
+ ((|Union| |t#4| "failed")
+ $ |t#3|))
+ T)
+ ((|extendIfCan|
+ ((|Union| $ "failed") $
+ |t#4|))
+ T)
+ ((|extend| ($ $ |t#4|)) T)
+ ((|coHeight|
+ ((|NonNegativeInteger|) $))
+ (|has| |t#3| (|Finite|))))
+ '((|finiteAggregate| T)
+ (|shallowlyMutable| T))
+ '((|NonNegativeInteger|)
+ (|Boolean|) (|List| |t#3|)
+ (|List|
+ (|Record| (|:| |close| $)
+ (|:| |open|
+ (|List| |t#4|))))
+ (|List| |t#4|) (|List| $))
+ NIL))
+ . #1=(|TriangularSetCategory|))))) . #1#)
+ (SETELT #0# 0
+ (LIST '|TriangularSetCategory| (|devaluate| |t#1|)
+ (|devaluate| |t#2|) (|devaluate| |t#3|)
+ (|devaluate| |t#4|)))))))
diff --git a/src/algebra/strap/UFD-.lsp b/src/algebra/strap/UFD-.lsp
new file mode 100644
index 00000000..eb1afd12
--- /dev/null
+++ b/src/algebra/strap/UFD-.lsp
@@ -0,0 +1,83 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |UFD-;squareFreePart;2S;1| (|x| $)
+ (PROG (|s| |f| #0=#:G1403 #1=#:G1401 #2=#:G1399 #3=#:G1400)
+ (RETURN
+ (SEQ (SPADCALL
+ (SPADCALL
+ (LETT |s| (SPADCALL |x| (|getShellEntry| $ 8))
+ |UFD-;squareFreePart;2S;1|)
+ (|getShellEntry| $ 10))
+ (PROGN
+ (LETT #3# NIL |UFD-;squareFreePart;2S;1|)
+ (SEQ (LETT |f| NIL |UFD-;squareFreePart;2S;1|)
+ (LETT #0# (SPADCALL |s| (|getShellEntry| $ 14))
+ |UFD-;squareFreePart;2S;1|)
+ G190
+ (COND
+ ((OR (ATOM #0#)
+ (PROGN
+ (LETT |f| (CAR #0#)
+ |UFD-;squareFreePart;2S;1|)
+ NIL))
+ (GO G191)))
+ (SEQ (EXIT (PROGN
+ (LETT #1# (QCAR |f|)
+ |UFD-;squareFreePart;2S;1|)
+ (COND
+ (#3#
+ (LETT #2#
+ (SPADCALL #2# #1#
+ (|getShellEntry| $ 15))
+ |UFD-;squareFreePart;2S;1|))
+ ('T
+ (PROGN
+ (LETT #2# #1#
+ |UFD-;squareFreePart;2S;1|)
+ (LETT #3# 'T
+ |UFD-;squareFreePart;2S;1|)))))))
+ (LETT #0# (CDR #0#) |UFD-;squareFreePart;2S;1|)
+ (GO G190) G191 (EXIT NIL))
+ (COND (#3# #2#) ('T (|spadConstant| $ 16))))
+ (|getShellEntry| $ 15))))))
+
+(DEFUN |UFD-;prime?;SB;2| (|x| $)
+ (EQL (LENGTH (SPADCALL (SPADCALL |x| (|getShellEntry| $ 18))
+ (|getShellEntry| $ 22)))
+ 1))
+
+(DEFUN |UniqueFactorizationDomain&| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|)
+ . #0=(|UniqueFactorizationDomain&|))
+ (LETT |dv$| (LIST '|UniqueFactorizationDomain&| |dv$1|) . #0#)
+ (LETT $ (|newShell| 25) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$| (|buildPredVector| 0 0 NIL) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ $))))
+
+(MAKEPROP '|UniqueFactorizationDomain&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|Factored| $)
+ (0 . |squareFree|) (|Factored| 6) (5 . |unit|) (|Integer|)
+ (|Record| (|:| |factor| 6) (|:| |exponent| 11))
+ (|List| 12) (10 . |factors|) (15 . *) (21 . |One|)
+ |UFD-;squareFreePart;2S;1| (25 . |factor|)
+ (|Union| '"nil" '"sqfr" '"irred" '"prime")
+ (|Record| (|:| |flg| 19) (|:| |fctr| 6) (|:| |xpnt| 11))
+ (|List| 20) (30 . |factorList|) (|Boolean|)
+ |UFD-;prime?;SB;2|)
+ '#(|squareFreePart| 35 |prime?| 40) 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 24
+ '(1 6 7 0 8 1 9 6 0 10 1 9 13 0 14 2 6
+ 0 0 0 15 0 6 0 16 1 6 7 0 18 1 9 21 0
+ 22 1 0 0 0 17 1 0 23 0 24)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/UFD.lsp b/src/algebra/strap/UFD.lsp
new file mode 100644
index 00000000..ee4b7a18
--- /dev/null
+++ b/src/algebra/strap/UFD.lsp
@@ -0,0 +1,27 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |UniqueFactorizationDomain;AL| 'NIL)
+
+(DEFUN |UniqueFactorizationDomain| ()
+ (LET (#:G1387)
+ (COND
+ (|UniqueFactorizationDomain;AL|)
+ (T (SETQ |UniqueFactorizationDomain;AL|
+ (|UniqueFactorizationDomain;|))))))
+
+(DEFUN |UniqueFactorizationDomain;| ()
+ (PROG (#0=#:G1385)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|Join| (|GcdDomain|)
+ (|mkCategory| '|domain|
+ '(((|prime?| ((|Boolean|) $)) T)
+ ((|squareFree| ((|Factored| $) $)) T)
+ ((|squareFreePart| ($ $)) T)
+ ((|factor| ((|Factored| $) $)) T))
+ NIL '((|Factored| $) (|Boolean|)) NIL))
+ |UniqueFactorizationDomain|)
+ (SETELT #0# 0 '(|UniqueFactorizationDomain|))))))
+
+(MAKEPROP '|UniqueFactorizationDomain| 'NILADIC T)
diff --git a/src/algebra/strap/ULSCAT.lsp b/src/algebra/strap/ULSCAT.lsp
new file mode 100644
index 00000000..94ef7e99
--- /dev/null
+++ b/src/algebra/strap/ULSCAT.lsp
@@ -0,0 +1,113 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |UnivariateLaurentSeriesCategory;CAT| 'NIL)
+
+(DEFPARAMETER |UnivariateLaurentSeriesCategory;AL| 'NIL)
+
+(DEFUN |UnivariateLaurentSeriesCategory| (#0=#:G1388)
+ (LET (#1=#:G1389)
+ (COND
+ ((SETQ #1#
+ (|assoc| (|devaluate| #0#)
+ |UnivariateLaurentSeriesCategory;AL|))
+ (CDR #1#))
+ (T (SETQ |UnivariateLaurentSeriesCategory;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1#
+ (|UnivariateLaurentSeriesCategory;|
+ #0#)))
+ |UnivariateLaurentSeriesCategory;AL|))
+ #1#))))
+
+(DEFUN |UnivariateLaurentSeriesCategory;| (|t#1|)
+ (PROG (#0=#:G1387)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (|sublisV|
+ (PAIR '(#1=#:G1386) (LIST '(|Integer|)))
+ (COND
+ (|UnivariateLaurentSeriesCategory;CAT|)
+ ('T
+ (LETT |UnivariateLaurentSeriesCategory;CAT|
+ (|Join|
+ (|UnivariatePowerSeriesCategory|
+ '|t#1| '#1#)
+ (|mkCategory| '|domain|
+ '(((|series|
+ ($
+ (|Stream|
+ (|Record|
+ (|:| |k| (|Integer|))
+ (|:| |c| |t#1|)))))
+ T)
+ ((|multiplyCoefficients|
+ ($
+ (|Mapping| |t#1|
+ (|Integer|))
+ $))
+ T)
+ ((|rationalFunction|
+ ((|Fraction|
+ (|Polynomial| |t#1|))
+ $ (|Integer|)))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|rationalFunction|
+ ((|Fraction|
+ (|Polynomial| |t#1|))
+ $ (|Integer|) (|Integer|)))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|integrate| ($ $))
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|)))))
+ ((|integrate| ($ $ (|Symbol|)))
+ (AND
+ (|has| |t#1|
+ (SIGNATURE |variables|
+ ((|List| (|Symbol|)) |t#1|)))
+ (|has| |t#1|
+ (SIGNATURE |integrate|
+ (|t#1| |t#1| (|Symbol|))))
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|))))))
+ ((|integrate| ($ $ (|Symbol|)))
+ (AND
+ (|has| |t#1|
+ (|AlgebraicallyClosedFunctionSpace|
+ (|Integer|)))
+ (|has| |t#1|
+ (|PrimitiveFunctionCategory|))
+ (|has| |t#1|
+ (|TranscendentalFunctionCategory|))
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|)))))))
+ '(((|RadicalCategory|)
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|)))))
+ ((|TranscendentalFunctionCategory|)
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|)))))
+ ((|Field|)
+ (|has| |t#1| (|Field|))))
+ '((|Symbol|)
+ (|Fraction|
+ (|Polynomial| |t#1|))
+ (|Integer|)
+ (|Stream|
+ (|Record|
+ (|:| |k| (|Integer|))
+ (|:| |c| |t#1|))))
+ NIL))
+ . #2=(|UnivariateLaurentSeriesCategory|)))))) . #2#)
+ (SETELT #0# 0
+ (LIST '|UnivariateLaurentSeriesCategory|
+ (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/UPOLYC-.lsp b/src/algebra/strap/UPOLYC-.lsp
new file mode 100644
index 00000000..ff1ac0da
--- /dev/null
+++ b/src/algebra/strap/UPOLYC-.lsp
@@ -0,0 +1,1231 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |UPOLYC-;variables;SL;1| (|p| $)
+ (COND
+ ((OR (SPADCALL |p| (|getShellEntry| $ 9))
+ (ZEROP (SPADCALL |p| (|getShellEntry| $ 11))))
+ NIL)
+ ('T (LIST (SPADCALL (|getShellEntry| $ 13))))))
+
+(DEFUN |UPOLYC-;degree;SSaosNni;2| (|p| |v| $)
+ (SPADCALL |p| (|getShellEntry| $ 11)))
+
+(DEFUN |UPOLYC-;totalDegree;SLNni;3| (|p| |lv| $)
+ (COND ((NULL |lv|) 0) ('T (SPADCALL |p| (|getShellEntry| $ 17)))))
+
+(DEFUN |UPOLYC-;degree;SLL;4| (|p| |lv| $)
+ (COND
+ ((NULL |lv|) NIL)
+ ('T (LIST (SPADCALL |p| (|getShellEntry| $ 11))))))
+
+(DEFUN |UPOLYC-;eval;SLLS;5| (|p| |lv| |lq| $)
+ (COND
+ ((NULL |lv|) |p|)
+ ((NULL (NULL (CDR |lv|)))
+ (|error| "can only eval a univariate polynomial once"))
+ ('T
+ (SPADCALL |p| (|SPADfirst| |lv|) (|SPADfirst| |lq|)
+ (|getShellEntry| $ 21)))))
+
+(DEFUN |UPOLYC-;eval;SSaos2S;6| (|p| |v| |q| $)
+ (SPADCALL |p| |q| (|getShellEntry| $ 24)))
+
+(DEFUN |UPOLYC-;eval;SLLS;7| (|p| |lv| |lr| $)
+ (COND
+ ((NULL |lv|) |p|)
+ ((NULL (NULL (CDR |lv|)))
+ (|error| "can only eval a univariate polynomial once"))
+ ('T
+ (SPADCALL |p| (|SPADfirst| |lv|) (|SPADfirst| |lr|)
+ (|getShellEntry| $ 26)))))
+
+(DEFUN |UPOLYC-;eval;SSaosRS;8| (|p| |v| |r| $)
+ (SPADCALL (SPADCALL |p| |r| (|getShellEntry| $ 29))
+ (|getShellEntry| $ 30)))
+
+(DEFUN |UPOLYC-;eval;SLS;9| (|p| |le| $)
+ (COND
+ ((NULL |le|) |p|)
+ ((NULL (NULL (CDR |le|)))
+ (|error| "can only eval a univariate polynomial once"))
+ ('T
+ (COND
+ ((QEQCAR (SPADCALL
+ (SPADCALL (|SPADfirst| |le|)
+ (|getShellEntry| $ 33))
+ (|getShellEntry| $ 35))
+ 1)
+ |p|)
+ ('T
+ (SPADCALL |p|
+ (SPADCALL (|SPADfirst| |le|) (|getShellEntry| $ 36))
+ (|getShellEntry| $ 24)))))))
+
+(DEFUN |UPOLYC-;mainVariable;SU;10| (|p| $)
+ (COND
+ ((ZEROP (SPADCALL |p| (|getShellEntry| $ 11))) (CONS 1 "failed"))
+ ('T (CONS 0 (SPADCALL (|getShellEntry| $ 13))))))
+
+(DEFUN |UPOLYC-;minimumDegree;SSaosNni;11| (|p| |v| $)
+ (SPADCALL |p| (|getShellEntry| $ 41)))
+
+(DEFUN |UPOLYC-;minimumDegree;SLL;12| (|p| |lv| $)
+ (COND
+ ((NULL |lv|) NIL)
+ ('T (LIST (SPADCALL |p| (|getShellEntry| $ 41))))))
+
+(DEFUN |UPOLYC-;monomial;SSaosNniS;13| (|p| |v| |n| $)
+ (SPADCALL (CONS #'|UPOLYC-;monomial;SSaosNniS;13!0| (VECTOR $ |n|))
+ |p| (|getShellEntry| $ 46)))
+
+(DEFUN |UPOLYC-;monomial;SSaosNniS;13!0| (|#1| $$)
+ (SPADCALL |#1| (|getShellEntry| $$ 1)
+ (|getShellEntry| (|getShellEntry| $$ 0) 44)))
+
+(DEFUN |UPOLYC-;coerce;SaosS;14| (|v| $)
+ (SPADCALL (|spadConstant| $ 49) 1 (|getShellEntry| $ 50)))
+
+(DEFUN |UPOLYC-;makeSUP;SSup;15| (|p| $)
+ (COND
+ ((SPADCALL |p| (|getShellEntry| $ 9)) (|spadConstant| $ 53))
+ ('T
+ (SPADCALL
+ (SPADCALL (SPADCALL |p| (|getShellEntry| $ 54))
+ (SPADCALL |p| (|getShellEntry| $ 11))
+ (|getShellEntry| $ 55))
+ (SPADCALL (SPADCALL |p| (|getShellEntry| $ 56))
+ (|getShellEntry| $ 57))
+ (|getShellEntry| $ 58)))))
+
+(DEFUN |UPOLYC-;unmakeSUP;SupS;16| (|sp| $)
+ (COND
+ ((SPADCALL |sp| (|getShellEntry| $ 60)) (|spadConstant| $ 61))
+ ('T
+ (SPADCALL
+ (SPADCALL (SPADCALL |sp| (|getShellEntry| $ 62))
+ (SPADCALL |sp| (|getShellEntry| $ 63))
+ (|getShellEntry| $ 50))
+ (SPADCALL (SPADCALL |sp| (|getShellEntry| $ 64))
+ (|getShellEntry| $ 65))
+ (|getShellEntry| $ 66)))))
+
+(DEFUN |UPOLYC-;karatsubaDivide;SNniR;17| (|p| |n| $)
+ (SPADCALL |p|
+ (SPADCALL (|spadConstant| $ 49) |n| (|getShellEntry| $ 50))
+ (|getShellEntry| $ 69)))
+
+(DEFUN |UPOLYC-;shiftRight;SNniS;18| (|p| |n| $)
+ (QCAR (SPADCALL |p|
+ (SPADCALL (|spadConstant| $ 49) |n| (|getShellEntry| $ 50))
+ (|getShellEntry| $ 69))))
+
+(DEFUN |UPOLYC-;shiftLeft;SNniS;19| (|p| |n| $)
+ (SPADCALL |p|
+ (SPADCALL (|spadConstant| $ 49) |n| (|getShellEntry| $ 50))
+ (|getShellEntry| $ 72)))
+
+(DEFUN |UPOLYC-;solveLinearPolynomialEquation;LSupU;20| (|lpp| |pp| $)
+ (SPADCALL |lpp| |pp| (|getShellEntry| $ 78)))
+
+(DEFUN |UPOLYC-;factorPolynomial;SupF;21| (|pp| $)
+ (SPADCALL |pp| (|getShellEntry| $ 84)))
+
+(DEFUN |UPOLYC-;factorSquareFreePolynomial;SupF;22| (|pp| $)
+ (SPADCALL |pp| (|getShellEntry| $ 87)))
+
+(DEFUN |UPOLYC-;factor;SF;23| (|p| $)
+ (PROG (|ansR| #0=#:G1516 |w| #1=#:G1517)
+ (RETURN
+ (SEQ (COND
+ ((ZEROP (SPADCALL |p| (|getShellEntry| $ 11)))
+ (SEQ (LETT |ansR|
+ (SPADCALL
+ (SPADCALL |p| (|getShellEntry| $ 54))
+ (|getShellEntry| $ 90))
+ |UPOLYC-;factor;SF;23|)
+ (EXIT (SPADCALL
+ (SPADCALL
+ (SPADCALL |ansR|
+ (|getShellEntry| $ 92))
+ (|getShellEntry| $ 30))
+ (PROGN
+ (LETT #0# NIL |UPOLYC-;factor;SF;23|)
+ (SEQ (LETT |w| NIL
+ |UPOLYC-;factor;SF;23|)
+ (LETT #1#
+ (SPADCALL |ansR|
+ (|getShellEntry| $ 97))
+ |UPOLYC-;factor;SF;23|)
+ G190
+ (COND
+ ((OR (ATOM #1#)
+ (PROGN
+ (LETT |w| (CAR #1#)
+ |UPOLYC-;factor;SF;23|)
+ NIL))
+ (GO G191)))
+ (SEQ
+ (EXIT
+ (LETT #0#
+ (CONS
+ (VECTOR (QVELT |w| 0)
+ (SPADCALL (QVELT |w| 1)
+ (|getShellEntry| $ 30))
+ (QVELT |w| 2))
+ #0#)
+ |UPOLYC-;factor;SF;23|)))
+ (LETT #1# (CDR #1#)
+ |UPOLYC-;factor;SF;23|)
+ (GO G190) G191
+ (EXIT (NREVERSE0 #0#))))
+ (|getShellEntry| $ 101)))))
+ ('T
+ (SPADCALL (ELT $ 65)
+ (SPADCALL (SPADCALL |p| (|getShellEntry| $ 57))
+ (|getShellEntry| $ 102))
+ (|getShellEntry| $ 106))))))))
+
+(DEFUN |UPOLYC-;vectorise;SNniV;24| (|p| |n| $)
+ (PROG (|v| |m| |i| #0=#:G1522 #1=#:G1518)
+ (RETURN
+ (SEQ (LETT |m|
+ (SPADCALL
+ (LETT |v|
+ (SPADCALL |n| (|spadConstant| $ 108)
+ (|getShellEntry| $ 110))
+ |UPOLYC-;vectorise;SNniV;24|)
+ (|getShellEntry| $ 111))
+ |UPOLYC-;vectorise;SNniV;24|)
+ (SEQ (LETT |i| (SPADCALL |v| (|getShellEntry| $ 111))
+ |UPOLYC-;vectorise;SNniV;24|)
+ (LETT #0# (QVSIZE |v|) |UPOLYC-;vectorise;SNniV;24|)
+ G190 (COND ((> |i| #0#) (GO G191)))
+ (SEQ (EXIT (SPADCALL |v| |i|
+ (SPADCALL |p|
+ (PROG1
+ (LETT #1# (- |i| |m|)
+ |UPOLYC-;vectorise;SNniV;24|)
+ (|check-subtype| (>= #1# 0)
+ '(|NonNegativeInteger|)
+ #1#))
+ (|getShellEntry| $ 112))
+ (|getShellEntry| $ 113))))
+ (LETT |i| (+ |i| 1) |UPOLYC-;vectorise;SNniV;24|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |v|)))))
+
+(DEFUN |UPOLYC-;retract;SR;25| (|p| $)
+ (COND
+ ((SPADCALL |p| (|getShellEntry| $ 9)) (|spadConstant| $ 108))
+ ((ZEROP (SPADCALL |p| (|getShellEntry| $ 11)))
+ (SPADCALL |p| (|getShellEntry| $ 54)))
+ ('T (|error| "Polynomial is not of degree 0"))))
+
+(DEFUN |UPOLYC-;retractIfCan;SU;26| (|p| $)
+ (COND
+ ((SPADCALL |p| (|getShellEntry| $ 9))
+ (CONS 0 (|spadConstant| $ 108)))
+ ((ZEROP (SPADCALL |p| (|getShellEntry| $ 11)))
+ (CONS 0 (SPADCALL |p| (|getShellEntry| $ 54))))
+ ('T (CONS 1 "failed"))))
+
+(DEFUN |UPOLYC-;init;S;27| ($)
+ (SPADCALL (|spadConstant| $ 118) (|getShellEntry| $ 30)))
+
+(DEFUN |UPOLYC-;nextItemInner| (|n| $)
+ (PROG (|nn| |n1| |n2| #0=#:G1543 |n3|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |n| (|getShellEntry| $ 9))
+ (CONS 0
+ (SPADCALL
+ (PROG2 (LETT #0#
+ (SPADCALL (|spadConstant| $ 108)
+ (|getShellEntry| $ 121))
+ |UPOLYC-;nextItemInner|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 7) #0#))
+ (|getShellEntry| $ 30))))
+ ((ZEROP (SPADCALL |n| (|getShellEntry| $ 11)))
+ (SEQ (LETT |nn|
+ (SPADCALL
+ (SPADCALL |n| (|getShellEntry| $ 54))
+ (|getShellEntry| $ 121))
+ |UPOLYC-;nextItemInner|)
+ (EXIT (COND
+ ((QEQCAR |nn| 1) (CONS 1 "failed"))
+ ('T
+ (CONS 0
+ (SPADCALL (QCDR |nn|)
+ (|getShellEntry| $ 30))))))))
+ ('T
+ (SEQ (LETT |n1| (SPADCALL |n| (|getShellEntry| $ 56))
+ |UPOLYC-;nextItemInner|)
+ (LETT |n2| (|UPOLYC-;nextItemInner| |n1| $)
+ |UPOLYC-;nextItemInner|)
+ (EXIT (COND
+ ((QEQCAR |n2| 0)
+ (CONS 0
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |n|
+ (|getShellEntry| $ 54))
+ (SPADCALL |n|
+ (|getShellEntry| $ 11))
+ (|getShellEntry| $ 50))
+ (QCDR |n2|)
+ (|getShellEntry| $ 66))))
+ ((< (+ 1
+ (SPADCALL |n1|
+ (|getShellEntry| $ 11)))
+ (SPADCALL |n| (|getShellEntry| $ 11)))
+ (CONS 0
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |n|
+ (|getShellEntry| $ 54))
+ (SPADCALL |n|
+ (|getShellEntry| $ 11))
+ (|getShellEntry| $ 50))
+ (SPADCALL
+ (PROG2
+ (LETT #0#
+ (SPADCALL
+ (|spadConstant| $ 118)
+ (|getShellEntry| $ 121))
+ |UPOLYC-;nextItemInner|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 7) #0#))
+ (+ 1
+ (SPADCALL |n1|
+ (|getShellEntry| $ 11)))
+ (|getShellEntry| $ 50))
+ (|getShellEntry| $ 66))))
+ ('T
+ (SEQ (LETT |n3|
+ (SPADCALL
+ (SPADCALL |n|
+ (|getShellEntry| $ 54))
+ (|getShellEntry| $ 121))
+ |UPOLYC-;nextItemInner|)
+ (EXIT (COND
+ ((QEQCAR |n3| 1)
+ (CONS 1 "failed"))
+ ('T
+ (CONS 0
+ (SPADCALL (QCDR |n3|)
+ (SPADCALL |n|
+ (|getShellEntry| $ 11))
+ (|getShellEntry| $ 50)))))))))))))))))
+
+(DEFUN |UPOLYC-;nextItem;SU;29| (|n| $)
+ (PROG (|n1| #0=#:G1556)
+ (RETURN
+ (SEQ (LETT |n1| (|UPOLYC-;nextItemInner| |n| $)
+ |UPOLYC-;nextItem;SU;29|)
+ (EXIT (COND
+ ((QEQCAR |n1| 1)
+ (CONS 0
+ (SPADCALL
+ (PROG2 (LETT #0#
+ (SPADCALL (|spadConstant| $ 118)
+ (|getShellEntry| $ 121))
+ |UPOLYC-;nextItem;SU;29|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 7) #0#))
+ (+ 1
+ (SPADCALL |n| (|getShellEntry| $ 11)))
+ (|getShellEntry| $ 50))))
+ ('T |n1|)))))))
+
+(DEFUN |UPOLYC-;content;SSaosS;30| (|p| |v| $)
+ (SPADCALL (SPADCALL |p| (|getShellEntry| $ 124))
+ (|getShellEntry| $ 30)))
+
+(DEFUN |UPOLYC-;primeFactor| (|p| |q| $)
+ (PROG (#0=#:G1562 |p1|)
+ (RETURN
+ (SEQ (LETT |p1|
+ (PROG2 (LETT #0#
+ (SPADCALL |p|
+ (SPADCALL |p| |q|
+ (|getShellEntry| $ 126))
+ (|getShellEntry| $ 127))
+ |UPOLYC-;primeFactor|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0) (|getShellEntry| $ 6)
+ #0#))
+ |UPOLYC-;primeFactor|)
+ (EXIT (COND
+ ((SPADCALL |p1| |p| (|getShellEntry| $ 128)) |p|)
+ ('T (|UPOLYC-;primeFactor| |p1| |q| $))))))))
+
+(DEFUN |UPOLYC-;separate;2SR;32| (|p| |q| $)
+ (PROG (|a| #0=#:G1568)
+ (RETURN
+ (SEQ (LETT |a| (|UPOLYC-;primeFactor| |p| |q| $)
+ |UPOLYC-;separate;2SR;32|)
+ (EXIT (CONS |a|
+ (PROG2 (LETT #0#
+ (SPADCALL |p| |a|
+ (|getShellEntry| $ 127))
+ |UPOLYC-;separate;2SR;32|)
+ (QCDR #0#)
+ (|check-union| (QEQCAR #0# 0)
+ (|getShellEntry| $ 6) #0#))))))))
+
+(DEFUN |UPOLYC-;differentiate;SM2S;33| (|x| |deriv| |x'| $)
+ (PROG (|dg| |lc| #0=#:G1573 |d|)
+ (RETURN
+ (SEQ (LETT |d| (|spadConstant| $ 61)
+ |UPOLYC-;differentiate;SM2S;33|)
+ (SEQ G190
+ (COND
+ ((NULL (< 0
+ (LETT |dg|
+ (SPADCALL |x| (|getShellEntry| $ 11))
+ |UPOLYC-;differentiate;SM2S;33|)))
+ (GO G191)))
+ (SEQ (LETT |lc| (SPADCALL |x| (|getShellEntry| $ 54))
+ |UPOLYC-;differentiate;SM2S;33|)
+ (LETT |d|
+ (SPADCALL
+ (SPADCALL |d|
+ (SPADCALL |x'|
+ (SPADCALL
+ (SPADCALL |dg| |lc|
+ (|getShellEntry| $ 132))
+ (PROG1
+ (LETT #0# (- |dg| 1)
+ |UPOLYC-;differentiate;SM2S;33|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (|getShellEntry| $ 50))
+ (|getShellEntry| $ 72))
+ (|getShellEntry| $ 66))
+ (SPADCALL (SPADCALL |lc| |deriv|) |dg|
+ (|getShellEntry| $ 50))
+ (|getShellEntry| $ 66))
+ |UPOLYC-;differentiate;SM2S;33|)
+ (EXIT (LETT |x|
+ (SPADCALL |x| (|getShellEntry| $ 56))
+ |UPOLYC-;differentiate;SM2S;33|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |d|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |x| (|getShellEntry| $ 54))
+ |deriv|)
+ (|getShellEntry| $ 30))
+ (|getShellEntry| $ 66)))))))
+
+(DEFUN |UPOLYC-;ncdiff| (|n| |x'| $)
+ (PROG (#0=#:G1591 |n1|)
+ (RETURN
+ (COND
+ ((ZEROP |n|) (|spadConstant| $ 61))
+ ((ZEROP (LETT |n1|
+ (PROG1 (LETT #0# (- |n| 1) |UPOLYC-;ncdiff|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ |UPOLYC-;ncdiff|))
+ |x'|)
+ ('T
+ (SPADCALL
+ (SPADCALL |x'|
+ (SPADCALL (|spadConstant| $ 49) |n1|
+ (|getShellEntry| $ 50))
+ (|getShellEntry| $ 72))
+ (SPADCALL
+ (SPADCALL (|spadConstant| $ 49) 1
+ (|getShellEntry| $ 50))
+ (|UPOLYC-;ncdiff| |n1| |x'| $) (|getShellEntry| $ 72))
+ (|getShellEntry| $ 66)))))))
+
+(DEFUN |UPOLYC-;differentiate;SM2S;35| (|x| |deriv| |x'| $)
+ (PROG (|dg| |lc| |d|)
+ (RETURN
+ (SEQ (LETT |d| (|spadConstant| $ 61)
+ |UPOLYC-;differentiate;SM2S;35|)
+ (SEQ G190
+ (COND
+ ((NULL (< 0
+ (LETT |dg|
+ (SPADCALL |x| (|getShellEntry| $ 11))
+ |UPOLYC-;differentiate;SM2S;35|)))
+ (GO G191)))
+ (SEQ (LETT |lc| (SPADCALL |x| (|getShellEntry| $ 54))
+ |UPOLYC-;differentiate;SM2S;35|)
+ (LETT |d|
+ (SPADCALL
+ (SPADCALL |d|
+ (SPADCALL (SPADCALL |lc| |deriv|)
+ |dg| (|getShellEntry| $ 50))
+ (|getShellEntry| $ 66))
+ (SPADCALL |lc|
+ (|UPOLYC-;ncdiff| |dg| |x'| $)
+ (|getShellEntry| $ 135))
+ (|getShellEntry| $ 66))
+ |UPOLYC-;differentiate;SM2S;35|)
+ (EXIT (LETT |x|
+ (SPADCALL |x| (|getShellEntry| $ 56))
+ |UPOLYC-;differentiate;SM2S;35|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |d|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |x| (|getShellEntry| $ 54))
+ |deriv|)
+ (|getShellEntry| $ 30))
+ (|getShellEntry| $ 66)))))))
+
+(DEFUN |UPOLYC-;differentiate;SMS;36| (|x| |deriv| $)
+ (SPADCALL |x| |deriv| (|spadConstant| $ 48) (|getShellEntry| $ 136)))
+
+(DEFUN |UPOLYC-;differentiate;2S;37| (|x| $)
+ (PROG (|dg| #0=#:G1600 |d|)
+ (RETURN
+ (SEQ (LETT |d| (|spadConstant| $ 61)
+ |UPOLYC-;differentiate;2S;37|)
+ (SEQ G190
+ (COND
+ ((NULL (< 0
+ (LETT |dg|
+ (SPADCALL |x| (|getShellEntry| $ 11))
+ |UPOLYC-;differentiate;2S;37|)))
+ (GO G191)))
+ (SEQ (LETT |d|
+ (SPADCALL |d|
+ (SPADCALL
+ (SPADCALL |dg|
+ (SPADCALL |x|
+ (|getShellEntry| $ 54))
+ (|getShellEntry| $ 132))
+ (PROG1
+ (LETT #0# (- |dg| 1)
+ |UPOLYC-;differentiate;2S;37|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (|getShellEntry| $ 50))
+ (|getShellEntry| $ 66))
+ |UPOLYC-;differentiate;2S;37|)
+ (EXIT (LETT |x|
+ (SPADCALL |x| (|getShellEntry| $ 56))
+ |UPOLYC-;differentiate;2S;37|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |d|)))))
+
+(DEFUN |UPOLYC-;differentiate;SSaosS;38| (|x| |v| $)
+ (SPADCALL |x| (|getShellEntry| $ 139)))
+
+(DEFUN |UPOLYC-;elt;3F;39| (|g| |f| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |g| (|getShellEntry| $ 142)) |f|
+ (|getShellEntry| $ 144))
+ (SPADCALL (SPADCALL |g| (|getShellEntry| $ 145)) |f|
+ (|getShellEntry| $ 144))
+ (|getShellEntry| $ 146)))
+
+(DEFUN |UPOLYC-;pseudoQuotient;3S;40| (|p| |q| $)
+ (PROG (|n| #0=#:G1646 #1=#:G1648)
+ (RETURN
+ (SEQ (LETT |n|
+ (+ (- (SPADCALL |p| (|getShellEntry| $ 11))
+ (SPADCALL |q| (|getShellEntry| $ 11)))
+ 1)
+ |UPOLYC-;pseudoQuotient;3S;40|)
+ (EXIT (COND
+ ((< |n| 1) (|spadConstant| $ 61))
+ ('T
+ (PROG2 (LETT #1#
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |q|
+ (|getShellEntry| $ 54))
+ (PROG1
+ (LETT #0# |n|
+ |UPOLYC-;pseudoQuotient;3S;40|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (|getShellEntry| $ 148))
+ |p| (|getShellEntry| $ 135))
+ (SPADCALL |p| |q|
+ (|getShellEntry| $ 149))
+ (|getShellEntry| $ 150))
+ |q| (|getShellEntry| $ 127))
+ |UPOLYC-;pseudoQuotient;3S;40|)
+ (QCDR #1#)
+ (|check-union| (QEQCAR #1# 0)
+ (|getShellEntry| $ 6) #1#)))))))))
+
+(DEFUN |UPOLYC-;pseudoDivide;2SR;41| (|p| |q| $)
+ (PROG (|n| |prem| #0=#:G1654 |lc| #1=#:G1656)
+ (RETURN
+ (SEQ (LETT |n|
+ (+ (- (SPADCALL |p| (|getShellEntry| $ 11))
+ (SPADCALL |q| (|getShellEntry| $ 11)))
+ 1)
+ |UPOLYC-;pseudoDivide;2SR;41|)
+ (EXIT (COND
+ ((< |n| 1)
+ (VECTOR (|spadConstant| $ 49) (|spadConstant| $ 61)
+ |p|))
+ ('T
+ (SEQ (LETT |prem|
+ (SPADCALL |p| |q|
+ (|getShellEntry| $ 149))
+ |UPOLYC-;pseudoDivide;2SR;41|)
+ (LETT |lc|
+ (SPADCALL
+ (SPADCALL |q|
+ (|getShellEntry| $ 54))
+ (PROG1
+ (LETT #0# |n|
+ |UPOLYC-;pseudoDivide;2SR;41|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (|getShellEntry| $ 148))
+ |UPOLYC-;pseudoDivide;2SR;41|)
+ (EXIT (VECTOR |lc|
+ (PROG2
+ (LETT #1#
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |lc| |p|
+ (|getShellEntry| $ 135))
+ |prem|
+ (|getShellEntry| $ 150))
+ |q| (|getShellEntry| $ 127))
+ |UPOLYC-;pseudoDivide;2SR;41|)
+ (QCDR #1#)
+ (|check-union| (QEQCAR #1# 0)
+ (|getShellEntry| $ 6) #1#))
+ |prem|))))))))))
+
+(DEFUN |UPOLYC-;composite;FSU;42| (|f| |q| $)
+ (PROG (|n| |d|)
+ (RETURN
+ (SEQ (LETT |n|
+ (SPADCALL (SPADCALL |f| (|getShellEntry| $ 142)) |q|
+ (|getShellEntry| $ 154))
+ |UPOLYC-;composite;FSU;42|)
+ (EXIT (COND
+ ((QEQCAR |n| 1) (CONS 1 "failed"))
+ ('T
+ (SEQ (LETT |d|
+ (SPADCALL
+ (SPADCALL |f|
+ (|getShellEntry| $ 145))
+ |q| (|getShellEntry| $ 154))
+ |UPOLYC-;composite;FSU;42|)
+ (EXIT (COND
+ ((QEQCAR |d| 1) (CONS 1 "failed"))
+ ('T
+ (CONS 0
+ (SPADCALL (QCDR |n|) (QCDR |d|)
+ (|getShellEntry| $ 155))))))))))))))
+
+(DEFUN |UPOLYC-;composite;2SU;43| (|p| |q| $)
+ (PROG (|cqr| |v| |u| |w| #0=#:G1682)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |p| (|getShellEntry| $ 158)) (CONS 0 |p|))
+ ('T
+ (SEQ (EXIT (SEQ (LETT |cqr|
+ (SPADCALL |p| |q|
+ (|getShellEntry| $ 159))
+ |UPOLYC-;composite;2SU;43|)
+ (COND
+ ((SPADCALL (QVELT |cqr| 2)
+ (|getShellEntry| $ 158))
+ (SEQ (LETT |v|
+ (SPADCALL (QVELT |cqr| 2)
+ (QVELT |cqr| 0)
+ (|getShellEntry| $ 160))
+ |UPOLYC-;composite;2SU;43|)
+ (EXIT
+ (COND
+ ((QEQCAR |v| 0)
+ (SEQ
+ (LETT |u|
+ (SPADCALL (QVELT |cqr| 1)
+ |q|
+ (|getShellEntry| $ 154))
+ |UPOLYC-;composite;2SU;43|)
+ (EXIT
+ (COND
+ ((QEQCAR |u| 0)
+ (SEQ
+ (LETT |w|
+ (SPADCALL (QCDR |u|)
+ (QVELT |cqr| 0)
+ (|getShellEntry| $
+ 160))
+ |UPOLYC-;composite;2SU;43|)
+ (EXIT
+ (COND
+ ((QEQCAR |w| 0)
+ (PROGN
+ (LETT #0#
+ (CONS 0
+ (SPADCALL
+ (QCDR |v|)
+ (SPADCALL
+ (SPADCALL
+ (|spadConstant|
+ $ 49)
+ 1
+ (|getShellEntry|
+ $ 50))
+ (QCDR |w|)
+ (|getShellEntry|
+ $ 72))
+ (|getShellEntry|
+ $ 66)))
+ |UPOLYC-;composite;2SU;43|)
+ (GO #0#))))))))))))))))
+ (EXIT (CONS 1 "failed"))))
+ #0# (EXIT #0#))))))))
+
+(DEFUN |UPOLYC-;elt;S2F;44| (|p| |f| $)
+ (PROG (|n| #0=#:G1688 |ans|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |p| (|getShellEntry| $ 9))
+ (|spadConstant| $ 162))
+ ('T
+ (SEQ (LETT |ans|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |p| (|getShellEntry| $ 54))
+ (|getShellEntry| $ 30))
+ (|getShellEntry| $ 163))
+ |UPOLYC-;elt;S2F;44|)
+ (LETT |n| (SPADCALL |p| (|getShellEntry| $ 11))
+ |UPOLYC-;elt;S2F;44|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL
+ (LETT |p|
+ (SPADCALL |p|
+ (|getShellEntry| $ 56))
+ |UPOLYC-;elt;S2F;44|)
+ (|getShellEntry| $ 9))
+ (|getShellEntry| $ 164)))
+ (GO G191)))
+ (SEQ (EXIT (LETT |ans|
+ (SPADCALL
+ (SPADCALL |ans|
+ (SPADCALL |f|
+ (PROG1
+ (LETT #0#
+ (- |n|
+ (LETT |n|
+ (SPADCALL |p|
+ (|getShellEntry| $ 11))
+ |UPOLYC-;elt;S2F;44|))
+ |UPOLYC-;elt;S2F;44|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (|getShellEntry| $ 165))
+ (|getShellEntry| $ 166))
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |p|
+ (|getShellEntry| $ 54))
+ (|getShellEntry| $ 30))
+ (|getShellEntry| $ 163))
+ (|getShellEntry| $ 167))
+ |UPOLYC-;elt;S2F;44|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((ZEROP |n|) |ans|)
+ ('T
+ (SPADCALL |ans|
+ (SPADCALL |f| |n|
+ (|getShellEntry| $ 168))
+ (|getShellEntry| $ 166))))))))))))
+
+(DEFUN |UPOLYC-;order;2SNni;45| (|p| |q| $)
+ (PROG (|u| #0=#:G1702 |ans|)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((SPADCALL |p| (|getShellEntry| $ 9))
+ (|error| "order: arguments must be nonzero"))
+ ((< (SPADCALL |q| (|getShellEntry| $ 11)) 1)
+ (|error| "order: place must be non-trivial"))
+ ('T
+ (SEQ (LETT |ans| 0 |UPOLYC-;order;2SNni;45|)
+ (EXIT (SEQ G190 NIL
+ (SEQ
+ (LETT |u|
+ (SPADCALL |p| |q|
+ (|getShellEntry| $ 127))
+ |UPOLYC-;order;2SNni;45|)
+ (EXIT
+ (COND
+ ((QEQCAR |u| 1)
+ (PROGN
+ (LETT #0# |ans|
+ |UPOLYC-;order;2SNni;45|)
+ (GO #0#)))
+ ('T
+ (SEQ
+ (LETT |p| (QCDR |u|)
+ |UPOLYC-;order;2SNni;45|)
+ (EXIT
+ (LETT |ans| (+ |ans| 1)
+ |UPOLYC-;order;2SNni;45|)))))))
+ NIL (GO G190) G191 (EXIT NIL)))))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |UPOLYC-;squareFree;SF;46| (|p| $)
+ (SPADCALL |p| (|getShellEntry| $ 172)))
+
+(DEFUN |UPOLYC-;squareFreePart;2S;47| (|p| $)
+ (SPADCALL |p| (|getShellEntry| $ 174)))
+
+(DEFUN |UPOLYC-;gcdPolynomial;3Sup;48| (|pp| |qq| $)
+ (COND
+ ((SPADCALL |pp| (|getShellEntry| $ 176))
+ (SPADCALL |qq| (|getShellEntry| $ 177)))
+ ((SPADCALL |qq| (|getShellEntry| $ 176))
+ (SPADCALL |pp| (|getShellEntry| $ 177)))
+ ('T
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL (SPADCALL |pp| (|getShellEntry| $ 178))
+ (SPADCALL |qq| (|getShellEntry| $ 178))
+ (|getShellEntry| $ 126))
+ (SPADCALL
+ (SPADCALL (SPADCALL |pp| (|getShellEntry| $ 179))
+ (SPADCALL |qq| (|getShellEntry| $ 179))
+ (|getShellEntry| $ 180))
+ (|getShellEntry| $ 179))
+ (|getShellEntry| $ 181))
+ (|getShellEntry| $ 177)))))
+
+(DEFUN |UPOLYC-;squareFreePolynomial;SupF;49| (|pp| $)
+ (SPADCALL |pp| (|getShellEntry| $ 184)))
+
+(DEFUN |UPOLYC-;elt;F2R;50| (|f| |r| $)
+ (SPADCALL
+ (SPADCALL (SPADCALL |f| (|getShellEntry| $ 142)) |r|
+ (|getShellEntry| $ 29))
+ (SPADCALL (SPADCALL |f| (|getShellEntry| $ 145)) |r|
+ (|getShellEntry| $ 29))
+ (|getShellEntry| $ 186)))
+
+(DEFUN |UPOLYC-;euclideanSize;SNni;51| (|x| $)
+ (COND
+ ((SPADCALL |x| (|getShellEntry| $ 9))
+ (|error| "euclideanSize called on 0 in Univariate Polynomial"))
+ ('T (SPADCALL |x| (|getShellEntry| $ 11)))))
+
+(DEFUN |UPOLYC-;divide;2SR;52| (|x| |y| $)
+ (PROG (|lc| |f| #0=#:G1714 |n| |quot|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |y| (|getShellEntry| $ 9))
+ (|error| "division by 0 in Univariate Polynomials"))
+ ('T
+ (SEQ (LETT |quot| (|spadConstant| $ 61)
+ |UPOLYC-;divide;2SR;52|)
+ (LETT |lc|
+ (SPADCALL
+ (SPADCALL |y| (|getShellEntry| $ 54))
+ (|getShellEntry| $ 189))
+ |UPOLYC-;divide;2SR;52|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x|
+ (|getShellEntry| $ 9))
+ 'NIL)
+ ('T
+ (SPADCALL
+ (<
+ (SPADCALL |x|
+ (|getShellEntry| $ 11))
+ (SPADCALL |y|
+ (|getShellEntry| $ 11)))
+ (|getShellEntry| $ 164)))))
+ (GO G191)))
+ (SEQ (LETT |f|
+ (SPADCALL |lc|
+ (SPADCALL |x|
+ (|getShellEntry| $ 54))
+ (|getShellEntry| $ 190))
+ |UPOLYC-;divide;2SR;52|)
+ (LETT |n|
+ (PROG1
+ (LETT #0#
+ (-
+ (SPADCALL |x|
+ (|getShellEntry| $ 11))
+ (SPADCALL |y|
+ (|getShellEntry| $ 11)))
+ |UPOLYC-;divide;2SR;52|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ |UPOLYC-;divide;2SR;52|)
+ (LETT |quot|
+ (SPADCALL |quot|
+ (SPADCALL |f| |n|
+ (|getShellEntry| $ 50))
+ (|getShellEntry| $ 66))
+ |UPOLYC-;divide;2SR;52|)
+ (EXIT (LETT |x|
+ (SPADCALL |x|
+ (SPADCALL
+ (SPADCALL |f| |n|
+ (|getShellEntry| $ 50))
+ |y| (|getShellEntry| $ 72))
+ (|getShellEntry| $ 150))
+ |UPOLYC-;divide;2SR;52|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (CONS |quot| |x|)))))))))
+
+(DEFUN |UPOLYC-;integrate;2S;53| (|p| $)
+ (PROG (|l| |d| |ans|)
+ (RETURN
+ (SEQ (LETT |ans| (|spadConstant| $ 61) |UPOLYC-;integrate;2S;53|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL |p| (|spadConstant| $ 61)
+ (|getShellEntry| $ 192)))
+ (GO G191)))
+ (SEQ (LETT |l| (SPADCALL |p| (|getShellEntry| $ 54))
+ |UPOLYC-;integrate;2S;53|)
+ (LETT |d|
+ (+ 1 (SPADCALL |p| (|getShellEntry| $ 11)))
+ |UPOLYC-;integrate;2S;53|)
+ (LETT |ans|
+ (SPADCALL |ans|
+ (SPADCALL
+ (SPADCALL
+ (SPADCALL |d|
+ (|getShellEntry| $ 194))
+ (|getShellEntry| $ 195))
+ (SPADCALL |l| |d|
+ (|getShellEntry| $ 50))
+ (|getShellEntry| $ 196))
+ (|getShellEntry| $ 66))
+ |UPOLYC-;integrate;2S;53|)
+ (EXIT (LETT |p|
+ (SPADCALL |p| (|getShellEntry| $ 56))
+ |UPOLYC-;integrate;2S;53|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |ans|)))))
+
+(DEFUN |UnivariatePolynomialCategory&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|)
+ . #0=(|UnivariatePolynomialCategory&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$|
+ (LIST '|UnivariatePolynomialCategory&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (|newShell| 203) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasCategory| |#2|
+ '(|Algebra| (|Fraction| (|Integer|))))
+ (|HasCategory| |#2| '(|Field|))
+ (|HasCategory| |#2| '(|GcdDomain|))
+ (|HasCategory| |#2| '(|IntegralDomain|))
+ (|HasCategory| |#2| '(|CommutativeRing|))
+ (|HasCategory| |#2| '(|StepThrough|)))) . #0#))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (|setShellEntry| $ 7 |#2|)
+ (COND
+ ((|HasCategory| |#2| '(|PolynomialFactorizationExplicit|))
+ (PROGN
+ (|setShellEntry| $ 82
+ (CONS (|dispatchFunction|
+ |UPOLYC-;solveLinearPolynomialEquation;LSupU;20|)
+ $))
+ (|setShellEntry| $ 86
+ (CONS (|dispatchFunction|
+ |UPOLYC-;factorPolynomial;SupF;21|)
+ $))
+ (|setShellEntry| $ 88
+ (CONS (|dispatchFunction|
+ |UPOLYC-;factorSquareFreePolynomial;SupF;22|)
+ $))
+ (|setShellEntry| $ 107
+ (CONS (|dispatchFunction| |UPOLYC-;factor;SF;23|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 6)
+ (PROGN
+ (|setShellEntry| $ 119
+ (CONS (|dispatchFunction| |UPOLYC-;init;S;27|) $))
+ NIL
+ (|setShellEntry| $ 123
+ (CONS (|dispatchFunction| |UPOLYC-;nextItem;SU;29|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (PROGN
+ (|setShellEntry| $ 125
+ (CONS (|dispatchFunction| |UPOLYC-;content;SSaosS;30|)
+ $))
+ NIL
+ (|setShellEntry| $ 130
+ (CONS (|dispatchFunction| |UPOLYC-;separate;2SR;32|)
+ $)))))
+ (COND
+ ((|testBitVector| |pv$| 5)
+ (|setShellEntry| $ 134
+ (CONS (|dispatchFunction|
+ |UPOLYC-;differentiate;SM2S;33|)
+ $)))
+ ('T
+ (PROGN
+ (|setShellEntry| $ 134
+ (CONS (|dispatchFunction|
+ |UPOLYC-;differentiate;SM2S;35|)
+ $)))))
+ (COND
+ ((|testBitVector| |pv$| 4)
+ (PROGN
+ (|setShellEntry| $ 147
+ (CONS (|dispatchFunction| |UPOLYC-;elt;3F;39|) $))
+ (|setShellEntry| $ 151
+ (CONS (|dispatchFunction|
+ |UPOLYC-;pseudoQuotient;3S;40|)
+ $))
+ (|setShellEntry| $ 153
+ (CONS (|dispatchFunction|
+ |UPOLYC-;pseudoDivide;2SR;41|)
+ $))
+ (|setShellEntry| $ 157
+ (CONS (|dispatchFunction| |UPOLYC-;composite;FSU;42|)
+ $))
+ (|setShellEntry| $ 161
+ (CONS (|dispatchFunction| |UPOLYC-;composite;2SU;43|)
+ $))
+ (|setShellEntry| $ 169
+ (CONS (|dispatchFunction| |UPOLYC-;elt;S2F;44|) $))
+ (|setShellEntry| $ 170
+ (CONS (|dispatchFunction| |UPOLYC-;order;2SNni;45|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (PROGN
+ (|setShellEntry| $ 173
+ (CONS (|dispatchFunction| |UPOLYC-;squareFree;SF;46|)
+ $))
+ (|setShellEntry| $ 175
+ (CONS (|dispatchFunction|
+ |UPOLYC-;squareFreePart;2S;47|)
+ $)))))
+ (COND
+ ((|HasCategory| |#2| '(|PolynomialFactorizationExplicit|))
+ (PROGN
+ (|setShellEntry| $ 182
+ (CONS (|dispatchFunction|
+ |UPOLYC-;gcdPolynomial;3Sup;48|)
+ $))
+ (|setShellEntry| $ 185
+ (CONS (|dispatchFunction|
+ |UPOLYC-;squareFreePolynomial;SupF;49|)
+ $)))))
+ (COND
+ ((|testBitVector| |pv$| 2)
+ (PROGN
+ (|setShellEntry| $ 187
+ (CONS (|dispatchFunction| |UPOLYC-;elt;F2R;50|) $))
+ (|setShellEntry| $ 188
+ (CONS (|dispatchFunction|
+ |UPOLYC-;euclideanSize;SNni;51|)
+ $))
+ (|setShellEntry| $ 191
+ (CONS (|dispatchFunction| |UPOLYC-;divide;2SR;52|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (|setShellEntry| $ 197
+ (CONS (|dispatchFunction| |UPOLYC-;integrate;2S;53|) $))))
+ $))))
+
+(MAKEPROP '|UnivariatePolynomialCategory&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (|Boolean|) (0 . |zero?|) (|NonNegativeInteger|)
+ (5 . |degree|) (|SingletonAsOrderedSet|) (10 . |create|)
+ (|List| 12) |UPOLYC-;variables;SL;1|
+ |UPOLYC-;degree;SSaosNni;2| (14 . |totalDegree|)
+ |UPOLYC-;totalDegree;SLNni;3| (|List| 10)
+ |UPOLYC-;degree;SLL;4| (19 . |eval|) (|List| $)
+ |UPOLYC-;eval;SLLS;5| (26 . |elt|)
+ |UPOLYC-;eval;SSaos2S;6| (32 . |eval|) (|List| 7)
+ |UPOLYC-;eval;SLLS;7| (39 . |elt|) (45 . |coerce|)
+ |UPOLYC-;eval;SSaosRS;8| (|Equation| 6) (50 . |lhs|)
+ (|Union| 12 '"failed") (55 . |mainVariable|) (60 . |rhs|)
+ (|Equation| $) (|List| 37) |UPOLYC-;eval;SLS;9|
+ |UPOLYC-;mainVariable;SU;10| (65 . |minimumDegree|)
+ |UPOLYC-;minimumDegree;SSaosNni;11|
+ |UPOLYC-;minimumDegree;SLL;12| (70 . +) (|Mapping| 10 10)
+ (76 . |mapExponents|) |UPOLYC-;monomial;SSaosNniS;13|
+ (82 . |One|) (86 . |One|) (90 . |monomial|)
+ |UPOLYC-;coerce;SaosS;14| (|SparseUnivariatePolynomial| 7)
+ (96 . |Zero|) (100 . |leadingCoefficient|)
+ (105 . |monomial|) (111 . |reductum|) (116 . |makeSUP|)
+ (121 . +) |UPOLYC-;makeSUP;SSup;15| (127 . |zero?|)
+ (132 . |Zero|) (136 . |leadingCoefficient|)
+ (141 . |degree|) (146 . |reductum|) (151 . |unmakeSUP|)
+ (156 . +) |UPOLYC-;unmakeSUP;SupS;16|
+ (|Record| (|:| |quotient| $) (|:| |remainder| $))
+ (162 . |monicDivide|) |UPOLYC-;karatsubaDivide;SNniR;17|
+ |UPOLYC-;shiftRight;SNniS;18| (168 . *)
+ |UPOLYC-;shiftLeft;SNniS;19|
+ (|SparseUnivariatePolynomial| 6) (|List| 74)
+ (|Union| 75 '"failed")
+ (|PolynomialFactorizationByRecursionUnivariate| 7 6)
+ (174 . |solveLinearPolynomialEquationByRecursion|)
+ (|SparseUnivariatePolynomial| $) (|List| 79)
+ (|Union| 80 '"failed")
+ (180 . |solveLinearPolynomialEquation|) (|Factored| 74)
+ (186 . |factorByRecursion|) (|Factored| 79)
+ (191 . |factorPolynomial|)
+ (196 . |factorSquareFreeByRecursion|)
+ (201 . |factorSquareFreePolynomial|) (|Factored| $)
+ (206 . |factor|) (|Factored| 7) (211 . |unit|)
+ (|Union| '"nil" '"sqfr" '"irred" '"prime") (|Integer|)
+ (|Record| (|:| |flg| 93) (|:| |fctr| 7) (|:| |xpnt| 94))
+ (|List| 95) (216 . |factorList|)
+ (|Record| (|:| |flg| 93) (|:| |fctr| 6) (|:| |xpnt| 94))
+ (|List| 98) (|Factored| 6) (221 . |makeFR|)
+ (227 . |factorPolynomial|) (|Mapping| 6 52)
+ (|Factored| 52) (|FactoredFunctions2| 52 6) (232 . |map|)
+ (238 . |factor|) (243 . |Zero|) (|Vector| 7) (247 . |new|)
+ (253 . |minIndex|) (258 . |coefficient|)
+ (264 . |qsetelt!|) |UPOLYC-;vectorise;SNniV;24|
+ |UPOLYC-;retract;SR;25| (|Union| 7 '"failed")
+ |UPOLYC-;retractIfCan;SU;26| (271 . |init|) (275 . |init|)
+ (|Union| $ '"failed") (279 . |nextItem|) (284 . |One|)
+ (288 . |nextItem|) (293 . |content|) (298 . |content|)
+ (304 . |gcd|) (310 . |exquo|) (316 . =)
+ (|Record| (|:| |primePart| $) (|:| |commonPart| $))
+ (322 . |separate|) (328 . |Zero|) (332 . *)
+ (|Mapping| 7 7) (338 . |differentiate|) (345 . *)
+ (351 . |differentiate|) |UPOLYC-;differentiate;SMS;36|
+ |UPOLYC-;differentiate;2S;37| (358 . |differentiate|)
+ |UPOLYC-;differentiate;SSaosS;38| (|Fraction| 6)
+ (363 . |numer|) (|Fraction| $) (368 . |elt|)
+ (374 . |denom|) (379 . /) (385 . |elt|) (391 . **)
+ (397 . |pseudoRemainder|) (403 . -)
+ (409 . |pseudoQuotient|)
+ (|Record| (|:| |coef| 7) (|:| |quotient| $)
+ (|:| |remainder| $))
+ (415 . |pseudoDivide|) (421 . |composite|) (427 . /)
+ (|Union| 143 '"failed") (433 . |composite|)
+ (439 . |ground?|) (444 . |pseudoDivide|) (450 . |exquo|)
+ (456 . |composite|) (462 . |Zero|) (466 . |coerce|)
+ (471 . |not|) (476 . **) (482 . *) (488 . +) (494 . **)
+ (500 . |elt|) (506 . |order|)
+ (|UnivariatePolynomialSquareFree| 7 6)
+ (512 . |squareFree|) (517 . |squareFree|)
+ (522 . |squareFreePart|) (527 . |squareFreePart|)
+ (532 . |zero?|) (537 . |unitCanonical|) (542 . |content|)
+ (547 . |primitivePart|) (552 . |subResultantGcd|)
+ (558 . *) (564 . |gcdPolynomial|)
+ (|UnivariatePolynomialSquareFree| 6 74)
+ (570 . |squareFree|) (575 . |squareFreePolynomial|)
+ (580 . /) (586 . |elt|) (592 . |euclideanSize|)
+ (597 . |inv|) (602 . *) (608 . |divide|) (614 . ~=)
+ (|Fraction| 94) (620 . |coerce|) (625 . |inv|) (630 . *)
+ (636 . |integrate|) (|Symbol|) (|List| 198)
+ (|Union| 94 '"failed") (|Union| 193 '"failed")
+ (|OutputForm|))
+ '#(|vectorise| 641 |variables| 647 |unmakeSUP| 652
+ |totalDegree| 657 |squareFreePolynomial| 663
+ |squareFreePart| 668 |squareFree| 673
+ |solveLinearPolynomialEquation| 678 |shiftRight| 684
+ |shiftLeft| 690 |separate| 696 |retractIfCan| 702
+ |retract| 707 |pseudoQuotient| 712 |pseudoDivide| 718
+ |order| 724 |nextItem| 730 |monomial| 735 |minimumDegree|
+ 742 |makeSUP| 754 |mainVariable| 759 |karatsubaDivide| 764
+ |integrate| 770 |init| 775 |gcdPolynomial| 779
+ |factorSquareFreePolynomial| 785 |factorPolynomial| 790
+ |factor| 795 |eval| 800 |euclideanSize| 834 |elt| 839
+ |divide| 857 |differentiate| 863 |degree| 887 |content|
+ 899 |composite| 905 |coerce| 917)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 197
+ '(1 6 8 0 9 1 6 10 0 11 0 12 0 13 1 6
+ 10 0 17 3 6 0 0 12 0 21 2 6 0 0 0 24
+ 3 6 0 0 12 7 26 2 6 7 0 7 29 1 6 0 7
+ 30 1 32 6 0 33 1 6 34 0 35 1 32 6 0
+ 36 1 6 10 0 41 2 10 0 0 0 44 2 6 0 45
+ 0 46 0 6 0 48 0 7 0 49 2 6 0 7 10 50
+ 0 52 0 53 1 6 7 0 54 2 52 0 7 10 55 1
+ 6 0 0 56 1 6 52 0 57 2 52 0 0 0 58 1
+ 52 8 0 60 0 6 0 61 1 52 7 0 62 1 52
+ 10 0 63 1 52 0 0 64 1 6 0 52 65 2 6 0
+ 0 0 66 2 6 68 0 0 69 2 6 0 0 0 72 2
+ 77 76 75 74 78 2 0 81 80 79 82 1 77
+ 83 74 84 1 0 85 79 86 1 77 83 74 87 1
+ 0 85 79 88 1 7 89 0 90 1 91 7 0 92 1
+ 91 96 0 97 2 100 0 6 99 101 1 7 85 79
+ 102 2 105 100 103 104 106 1 0 89 0
+ 107 0 7 0 108 2 109 0 10 7 110 1 109
+ 94 0 111 2 6 7 0 10 112 3 109 7 0 94
+ 7 113 0 7 0 118 0 0 0 119 1 7 120 0
+ 121 0 74 0 122 1 0 120 0 123 1 6 7 0
+ 124 2 0 0 0 12 125 2 6 0 0 0 126 2 6
+ 120 0 0 127 2 6 8 0 0 128 2 0 129 0 0
+ 130 0 74 0 131 2 7 0 10 0 132 3 0 0 0
+ 133 0 134 2 6 0 7 0 135 3 6 0 0 133 0
+ 136 1 6 0 0 139 1 141 6 0 142 2 6 143
+ 0 143 144 1 141 6 0 145 2 141 0 0 0
+ 146 2 0 143 143 143 147 2 7 0 0 10
+ 148 2 6 0 0 0 149 2 6 0 0 0 150 2 0 0
+ 0 0 151 2 0 152 0 0 153 2 6 120 0 0
+ 154 2 141 0 6 6 155 2 0 156 143 0 157
+ 1 6 8 0 158 2 6 152 0 0 159 2 6 120 0
+ 7 160 2 0 120 0 0 161 0 141 0 162 1
+ 141 0 6 163 1 8 0 0 164 2 141 0 0 94
+ 165 2 141 0 0 0 166 2 141 0 0 0 167 2
+ 141 0 0 10 168 2 0 143 0 143 169 2 0
+ 10 0 0 170 1 171 100 6 172 1 0 89 0
+ 173 1 171 6 6 174 1 0 0 0 175 1 74 8
+ 0 176 1 74 0 0 177 1 74 6 0 178 1 74
+ 0 0 179 2 74 0 0 0 180 2 74 0 6 0 181
+ 2 0 79 79 79 182 1 183 83 74 184 1 0
+ 85 79 185 2 7 0 0 0 186 2 0 7 143 7
+ 187 1 0 10 0 188 1 7 0 0 189 2 7 0 0
+ 0 190 2 0 68 0 0 191 2 6 8 0 0 192 1
+ 193 0 94 194 1 193 0 0 195 2 6 0 193
+ 0 196 1 0 0 0 197 2 0 109 0 10 114 1
+ 0 14 0 15 1 0 0 52 67 2 0 10 0 14 18
+ 1 0 85 79 185 1 0 0 0 175 1 0 89 0
+ 173 2 0 81 80 79 82 2 0 0 0 10 71 2 0
+ 0 0 10 73 2 0 129 0 0 130 1 0 116 0
+ 117 1 0 7 0 115 2 0 0 0 0 151 2 0 152
+ 0 0 153 2 0 10 0 0 170 1 0 120 0 123
+ 3 0 0 0 12 10 47 2 0 19 0 14 43 2 0
+ 10 0 12 42 1 0 52 0 59 1 0 34 0 40 2
+ 0 68 0 10 70 1 0 0 0 197 0 0 0 119 2
+ 0 79 79 79 182 1 0 85 79 88 1 0 85 79
+ 86 1 0 89 0 107 3 0 0 0 12 0 25 3 0 0
+ 0 14 22 23 3 0 0 0 14 27 28 3 0 0 0
+ 12 7 31 2 0 0 0 38 39 1 0 10 0 188 2
+ 0 143 0 143 169 2 0 7 143 7 187 2 0
+ 143 143 143 147 2 0 68 0 0 191 3 0 0
+ 0 133 0 134 2 0 0 0 133 137 1 0 0 0
+ 138 2 0 0 0 12 140 2 0 10 0 12 16 2 0
+ 19 0 14 20 2 0 0 0 12 125 2 0 120 0 0
+ 161 2 0 156 143 0 157 1 0 0 12 51)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/UPOLYC.lsp b/src/algebra/strap/UPOLYC.lsp
new file mode 100644
index 00000000..895e13e4
--- /dev/null
+++ b/src/algebra/strap/UPOLYC.lsp
@@ -0,0 +1,158 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |UnivariatePolynomialCategory;CAT| 'NIL)
+
+(DEFPARAMETER |UnivariatePolynomialCategory;AL| 'NIL)
+
+(DEFUN |UnivariatePolynomialCategory| (#0=#:G1424)
+ (LET (#1=#:G1425)
+ (COND
+ ((SETQ #1#
+ (|assoc| (|devaluate| #0#)
+ |UnivariatePolynomialCategory;AL|))
+ (CDR #1#))
+ (T (SETQ |UnivariatePolynomialCategory;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1#
+ (|UnivariatePolynomialCategory;|
+ #0#)))
+ |UnivariatePolynomialCategory;AL|))
+ #1#))))
+
+(DEFUN |UnivariatePolynomialCategory;| (|t#1|)
+ (PROG (#0=#:G1423)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (|sublisV|
+ (PAIR '(#1=#:G1421 #2=#:G1422)
+ (LIST '(|NonNegativeInteger|)
+ '(|SingletonAsOrderedSet|)))
+ (COND
+ (|UnivariatePolynomialCategory;CAT|)
+ ('T
+ (LETT |UnivariatePolynomialCategory;CAT|
+ (|Join|
+ (|PolynomialCategory| '|t#1| '#1#
+ '#2#)
+ (|Eltable| '|t#1| '|t#1|)
+ (|Eltable| '$ '$)
+ (|DifferentialRing|)
+ (|DifferentialExtension| '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|vectorise|
+ ((|Vector| |t#1|) $
+ (|NonNegativeInteger|)))
+ T)
+ ((|makeSUP|
+ ((|SparseUnivariatePolynomial|
+ |t#1|)
+ $))
+ T)
+ ((|unmakeSUP|
+ ($
+ (|SparseUnivariatePolynomial|
+ |t#1|)))
+ T)
+ ((|multiplyExponents|
+ ($ $ (|NonNegativeInteger|)))
+ T)
+ ((|divideExponents|
+ ((|Union| $ "failed") $
+ (|NonNegativeInteger|)))
+ T)
+ ((|monicDivide|
+ ((|Record| (|:| |quotient| $)
+ (|:| |remainder| $))
+ $ $))
+ T)
+ ((|karatsubaDivide|
+ ((|Record| (|:| |quotient| $)
+ (|:| |remainder| $))
+ $ (|NonNegativeInteger|)))
+ T)
+ ((|shiftRight|
+ ($ $ (|NonNegativeInteger|)))
+ T)
+ ((|shiftLeft|
+ ($ $ (|NonNegativeInteger|)))
+ T)
+ ((|pseudoRemainder| ($ $ $)) T)
+ ((|differentiate|
+ ($ $ (|Mapping| |t#1| |t#1|)
+ $))
+ T)
+ ((|discriminant| (|t#1| $))
+ (|has| |t#1|
+ (|CommutativeRing|)))
+ ((|resultant| (|t#1| $ $))
+ (|has| |t#1|
+ (|CommutativeRing|)))
+ ((|elt|
+ ((|Fraction| $)
+ (|Fraction| $)
+ (|Fraction| $)))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|order|
+ ((|NonNegativeInteger|) $ $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|subResultantGcd| ($ $ $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|composite|
+ ((|Union| $ "failed") $ $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|composite|
+ ((|Union| (|Fraction| $)
+ "failed")
+ (|Fraction| $) $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|pseudoQuotient| ($ $ $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|pseudoDivide|
+ ((|Record| (|:| |coef| |t#1|)
+ (|:| |quotient| $)
+ (|:| |remainder| $))
+ $ $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|separate|
+ ((|Record|
+ (|:| |primePart| $)
+ (|:| |commonPart| $))
+ $ $))
+ (|has| |t#1| (|GcdDomain|)))
+ ((|elt|
+ (|t#1| (|Fraction| $) |t#1|))
+ (|has| |t#1| (|Field|)))
+ ((|integrate| ($ $))
+ (|has| |t#1|
+ (|Algebra|
+ (|Fraction| (|Integer|))))))
+ '(((|StepThrough|)
+ (|has| |t#1| (|StepThrough|)))
+ ((|Eltable| (|Fraction| $)
+ (|Fraction| $))
+ (|has| |t#1|
+ (|IntegralDomain|)))
+ ((|EuclideanDomain|)
+ (|has| |t#1| (|Field|)))
+ (|additiveValuation|
+ (|has| |t#1| (|Field|))))
+ '((|Fraction| $)
+ (|NonNegativeInteger|)
+ (|SparseUnivariatePolynomial|
+ |t#1|)
+ (|Vector| |t#1|))
+ NIL))
+ . #3=(|UnivariatePolynomialCategory|)))))) . #3#)
+ (SETELT #0# 0
+ (LIST '|UnivariatePolynomialCategory|
+ (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/URAGG-.lsp b/src/algebra/strap/URAGG-.lsp
new file mode 100644
index 00000000..06ae51f1
--- /dev/null
+++ b/src/algebra/strap/URAGG-.lsp
@@ -0,0 +1,612 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |URAGG-;elt;AfirstS;1| (|x| T0 $) (SPADCALL |x| (QREFELT $ 8)))
+
+(DEFUN |URAGG-;elt;AlastS;2| (|x| T1 $) (SPADCALL |x| (QREFELT $ 11)))
+
+(DEFUN |URAGG-;elt;ArestA;3| (|x| T2 $) (SPADCALL |x| (QREFELT $ 14)))
+
+(DEFUN |URAGG-;second;AS;4| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 14)) (QREFELT $ 8)))
+
+(DEFUN |URAGG-;third;AS;5| (|x| $)
+ (SPADCALL (SPADCALL (SPADCALL |x| (QREFELT $ 14)) (QREFELT $ 14))
+ (QREFELT $ 8)))
+
+(DEFUN |URAGG-;cyclic?;AB;6| (|x| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 20)) 'NIL)
+ ('T
+ (SPADCALL (SPADCALL (|URAGG-;findCycle| |x| $) (QREFELT $ 20))
+ (QREFELT $ 21)))))
+
+(DEFUN |URAGG-;last;AS;7| (|x| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 23)) (QREFELT $ 8)))
+
+(DEFUN |URAGG-;nodes;AL;8| (|x| $)
+ (PROG (|l|)
+ (RETURN
+ (SEQ (LETT |l| NIL |URAGG-;nodes;AL;8|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |x| (QREFELT $ 20))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (LETT |l| (CONS |x| |l|) |URAGG-;nodes;AL;8|)
+ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;nodes;AL;8|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (NREVERSE |l|))))))
+
+(DEFUN |URAGG-;children;AL;9| (|x| $)
+ (PROG (|l|)
+ (RETURN
+ (SEQ (LETT |l| NIL |URAGG-;children;AL;9|)
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 20)) |l|)
+ ('T (CONS (SPADCALL |x| (QREFELT $ 14)) |l|))))))))
+
+(DEFUN |URAGG-;leaf?;AB;10| (|x| $) (SPADCALL |x| (QREFELT $ 20)))
+
+(DEFUN |URAGG-;value;AS;11| (|x| $)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 20)) (|error| "value of empty object"))
+ ('T (SPADCALL |x| (QREFELT $ 8)))))
+
+(DEFUN |URAGG-;less?;ANniB;12| (|l| |n| $)
+ (PROG (|i|)
+ (RETURN
+ (SEQ (LETT |i| |n| |URAGG-;less?;ANniB;12|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((< 0 |i|)
+ (SPADCALL (SPADCALL |l| (QREFELT $ 20))
+ (QREFELT $ 21)))
+ ('T 'NIL)))
+ (GO G191)))
+ (SEQ (LETT |l| (SPADCALL |l| (QREFELT $ 14))
+ |URAGG-;less?;ANniB;12|)
+ (EXIT (LETT |i| (- |i| 1) |URAGG-;less?;ANniB;12|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (< 0 |i|))))))
+
+(DEFUN |URAGG-;more?;ANniB;13| (|l| |n| $)
+ (PROG (|i|)
+ (RETURN
+ (SEQ (LETT |i| |n| |URAGG-;more?;ANniB;13|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((< 0 |i|)
+ (SPADCALL (SPADCALL |l| (QREFELT $ 20))
+ (QREFELT $ 21)))
+ ('T 'NIL)))
+ (GO G191)))
+ (SEQ (LETT |l| (SPADCALL |l| (QREFELT $ 14))
+ |URAGG-;more?;ANniB;13|)
+ (EXIT (LETT |i| (- |i| 1) |URAGG-;more?;ANniB;13|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((ZEROP |i|)
+ (SPADCALL (SPADCALL |l| (QREFELT $ 20))
+ (QREFELT $ 21)))
+ ('T 'NIL)))))))
+
+(DEFUN |URAGG-;size?;ANniB;14| (|l| |n| $)
+ (PROG (|i|)
+ (RETURN
+ (SEQ (LETT |i| |n| |URAGG-;size?;ANniB;14|)
+ (SEQ G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |l| (QREFELT $ 20)) 'NIL)
+ ('T (< 0 |i|))))
+ (GO G191)))
+ (SEQ (LETT |l| (SPADCALL |l| (QREFELT $ 14))
+ |URAGG-;size?;ANniB;14|)
+ (EXIT (LETT |i| (- |i| 1) |URAGG-;size?;ANniB;14|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |l| (QREFELT $ 20)) (ZEROP |i|))
+ ('T 'NIL)))))))
+
+(DEFUN |URAGG-;#;ANni;15| (|x| $)
+ (PROG (|k|)
+ (RETURN
+ (SEQ (SEQ (LETT |k| 0 |URAGG-;#;ANni;15|) G190
+ (COND
+ ((NULL (SPADCALL (SPADCALL |x| (QREFELT $ 20))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (COND
+ ((EQL |k| 1000)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 34))
+ (EXIT (|error| "cyclic list"))))))
+ (EXIT (LETT |x| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;#;ANni;15|)))
+ (LETT |k| (QSADD1 |k|) |URAGG-;#;ANni;15|) (GO G190)
+ G191 (EXIT NIL))
+ (EXIT |k|)))))
+
+(DEFUN |URAGG-;tail;2A;16| (|x| $)
+ (PROG (|k| |y|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |x| (QREFELT $ 20)) (|error| "empty list"))
+ ('T
+ (SEQ (LETT |y| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;tail;2A;16|)
+ (SEQ (LETT |k| 0 |URAGG-;tail;2A;16|) G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |y| (QREFELT $ 20))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (COND
+ ((EQL |k| 1000)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 34))
+ (EXIT (|error| "cyclic list"))))))
+ (EXIT (LETT |y|
+ (SPADCALL
+ (LETT |x| |y| |URAGG-;tail;2A;16|)
+ (QREFELT $ 14))
+ |URAGG-;tail;2A;16|)))
+ (LETT |k| (QSADD1 |k|) |URAGG-;tail;2A;16|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |x|))))))))
+
+(DEFUN |URAGG-;findCycle| (|x| $)
+ (PROG (#0=#:G1475 |y|)
+ (RETURN
+ (SEQ (EXIT (SEQ (LETT |y| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;findCycle|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |y| (QREFELT $ 20))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (COND
+ ((SPADCALL |x| |y| (QREFELT $ 37))
+ (PROGN
+ (LETT #0# |x| |URAGG-;findCycle|)
+ (GO #0#))))
+ (LETT |x| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;findCycle|)
+ (LETT |y| (SPADCALL |y| (QREFELT $ 14))
+ |URAGG-;findCycle|)
+ (COND
+ ((SPADCALL |y| (QREFELT $ 20))
+ (PROGN
+ (LETT #0# |y| |URAGG-;findCycle|)
+ (GO #0#))))
+ (COND
+ ((SPADCALL |x| |y| (QREFELT $ 37))
+ (PROGN
+ (LETT #0# |y| |URAGG-;findCycle|)
+ (GO #0#))))
+ (EXIT (LETT |y|
+ (SPADCALL |y| (QREFELT $ 14))
+ |URAGG-;findCycle|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |y|)))
+ #0# (EXIT #0#)))))
+
+(DEFUN |URAGG-;cycleTail;2A;18| (|x| $)
+ (PROG (|y| |z|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL
+ (LETT |y|
+ (LETT |x| (SPADCALL |x| (QREFELT $ 38))
+ |URAGG-;cycleTail;2A;18|)
+ |URAGG-;cycleTail;2A;18|)
+ (QREFELT $ 20))
+ |x|)
+ ('T
+ (SEQ (LETT |z| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;cycleTail;2A;18|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |x| |z| (QREFELT $ 37))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (LETT |y| |z| |URAGG-;cycleTail;2A;18|)
+ (EXIT (LETT |z|
+ (SPADCALL |z| (QREFELT $ 14))
+ |URAGG-;cycleTail;2A;18|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |y|))))))))
+
+(DEFUN |URAGG-;cycleEntry;2A;19| (|x| $)
+ (PROG (|l| |z| |k| |y|)
+ (RETURN
+ (SEQ (COND
+ ((SPADCALL |x| (QREFELT $ 20)) |x|)
+ ((SPADCALL
+ (LETT |y| (|URAGG-;findCycle| |x| $)
+ |URAGG-;cycleEntry;2A;19|)
+ (QREFELT $ 20))
+ |y|)
+ ('T
+ (SEQ (LETT |z| (SPADCALL |y| (QREFELT $ 14))
+ |URAGG-;cycleEntry;2A;19|)
+ (SEQ (LETT |l| 1 |URAGG-;cycleEntry;2A;19|) G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |y| |z| (QREFELT $ 37))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (EXIT (LETT |z|
+ (SPADCALL |z| (QREFELT $ 14))
+ |URAGG-;cycleEntry;2A;19|)))
+ (LETT |l| (QSADD1 |l|)
+ |URAGG-;cycleEntry;2A;19|)
+ (GO G190) G191 (EXIT NIL))
+ (LETT |y| |x| |URAGG-;cycleEntry;2A;19|)
+ (SEQ (LETT |k| 1 |URAGG-;cycleEntry;2A;19|) G190
+ (COND ((QSGREATERP |k| |l|) (GO G191)))
+ (SEQ (EXIT (LETT |y|
+ (SPADCALL |y| (QREFELT $ 14))
+ |URAGG-;cycleEntry;2A;19|)))
+ (LETT |k| (QSADD1 |k|)
+ |URAGG-;cycleEntry;2A;19|)
+ (GO G190) G191 (EXIT NIL))
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |x| |y| (QREFELT $ 37))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (LETT |x| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;cycleEntry;2A;19|)
+ (EXIT (LETT |y|
+ (SPADCALL |y| (QREFELT $ 14))
+ |URAGG-;cycleEntry;2A;19|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (EXIT |x|))))))))
+
+(DEFUN |URAGG-;cycleLength;ANni;20| (|x| $)
+ (PROG (|k| |y|)
+ (RETURN
+ (SEQ (COND
+ ((OR (SPADCALL |x| (QREFELT $ 20))
+ (SPADCALL
+ (LETT |x| (|URAGG-;findCycle| |x| $)
+ |URAGG-;cycleLength;ANni;20|)
+ (QREFELT $ 20)))
+ 0)
+ ('T
+ (SEQ (LETT |y| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;cycleLength;ANni;20|)
+ (SEQ (LETT |k| 1 |URAGG-;cycleLength;ANni;20|) G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |x| |y| (QREFELT $ 37))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (EXIT (LETT |y|
+ (SPADCALL |y| (QREFELT $ 14))
+ |URAGG-;cycleLength;ANni;20|)))
+ (LETT |k| (QSADD1 |k|)
+ |URAGG-;cycleLength;ANni;20|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |k|))))))))
+
+(DEFUN |URAGG-;rest;ANniA;21| (|x| |n| $)
+ (PROG (|i|)
+ (RETURN
+ (SEQ (SEQ (LETT |i| 1 |URAGG-;rest;ANniA;21|) G190
+ (COND ((QSGREATERP |i| |n|) (GO G191)))
+ (SEQ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 20))
+ (|error| "Index out of range"))
+ ('T
+ (LETT |x| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;rest;ANniA;21|)))))
+ (LETT |i| (QSADD1 |i|) |URAGG-;rest;ANniA;21|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT |x|)))))
+
+(DEFUN |URAGG-;last;ANniA;22| (|x| |n| $)
+ (PROG (|m| #0=#:G1498)
+ (RETURN
+ (SEQ (LETT |m| (SPADCALL |x| (QREFELT $ 43))
+ |URAGG-;last;ANniA;22|)
+ (EXIT (COND
+ ((< |m| |n|) (|error| "index out of range"))
+ ('T
+ (SPADCALL
+ (SPADCALL |x|
+ (PROG1 (LETT #0# (- |m| |n|)
+ |URAGG-;last;ANniA;22|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 44))
+ (QREFELT $ 45)))))))))
+
+(DEFUN |URAGG-;=;2AB;23| (|x| |y| $)
+ (PROG (|k| #0=#:G1508)
+ (RETURN
+ (SEQ (EXIT (COND
+ ((SPADCALL |x| |y| (QREFELT $ 37)) 'T)
+ ('T
+ (SEQ (SEQ (LETT |k| 0 |URAGG-;=;2AB;23|) G190
+ (COND
+ ((NULL (COND
+ ((SPADCALL |x| (QREFELT $ 20))
+ 'NIL)
+ ('T
+ (SPADCALL
+ (SPADCALL |y|
+ (QREFELT $ 20))
+ (QREFELT $ 21)))))
+ (GO G191)))
+ (SEQ (COND
+ ((EQL |k| 1000)
+ (COND
+ ((SPADCALL |x| (QREFELT $ 34))
+ (EXIT (|error| "cyclic list"))))))
+ (COND
+ ((NULL
+ (SPADCALL
+ (SPADCALL |x| (QREFELT $ 8))
+ (SPADCALL |y| (QREFELT $ 8))
+ (QREFELT $ 47)))
+ (EXIT
+ (PROGN
+ (LETT #0# 'NIL
+ |URAGG-;=;2AB;23|)
+ (GO #0#)))))
+ (LETT |x|
+ (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;=;2AB;23|)
+ (EXIT
+ (LETT |y|
+ (SPADCALL |y| (QREFELT $ 14))
+ |URAGG-;=;2AB;23|)))
+ (LETT |k| (QSADD1 |k|) |URAGG-;=;2AB;23|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (COND
+ ((SPADCALL |x| (QREFELT $ 20))
+ (SPADCALL |y| (QREFELT $ 20)))
+ ('T 'NIL)))))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |URAGG-;node?;2AB;24| (|u| |v| $)
+ (PROG (|k| #0=#:G1513)
+ (RETURN
+ (SEQ (EXIT (SEQ (SEQ (LETT |k| 0 |URAGG-;node?;2AB;24|) G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |v| (QREFELT $ 20))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (EXIT (COND
+ ((SPADCALL |u| |v|
+ (QREFELT $ 49))
+ (PROGN
+ (LETT #0# 'T
+ |URAGG-;node?;2AB;24|)
+ (GO #0#)))
+ ('T
+ (SEQ
+ (COND
+ ((EQL |k| 1000)
+ (COND
+ ((SPADCALL |v|
+ (QREFELT $ 34))
+ (EXIT
+ (|error|
+ "cyclic list"))))))
+ (EXIT
+ (LETT |v|
+ (SPADCALL |v|
+ (QREFELT $ 14))
+ |URAGG-;node?;2AB;24|)))))))
+ (LETT |k| (QSADD1 |k|)
+ |URAGG-;node?;2AB;24|)
+ (GO G190) G191 (EXIT NIL))
+ (EXIT (SPADCALL |u| |v| (QREFELT $ 49)))))
+ #0# (EXIT #0#)))))
+
+(DEFUN |URAGG-;setelt;Afirst2S;25| (|x| T3 |a| $)
+ (SPADCALL |x| |a| (QREFELT $ 51)))
+
+(DEFUN |URAGG-;setelt;Alast2S;26| (|x| T4 |a| $)
+ (SPADCALL |x| |a| (QREFELT $ 53)))
+
+(DEFUN |URAGG-;setelt;Arest2A;27| (|x| T5 |a| $)
+ (SPADCALL |x| |a| (QREFELT $ 55)))
+
+(DEFUN |URAGG-;concat;3A;28| (|x| |y| $)
+ (SPADCALL (SPADCALL |x| (QREFELT $ 45)) |y| (QREFELT $ 57)))
+
+(DEFUN |URAGG-;setlast!;A2S;29| (|x| |s| $)
+ (SEQ (COND
+ ((SPADCALL |x| (QREFELT $ 20))
+ (|error| "setlast: empty list"))
+ ('T
+ (SEQ (SPADCALL (SPADCALL |x| (QREFELT $ 23)) |s|
+ (QREFELT $ 51))
+ (EXIT |s|))))))
+
+(DEFUN |URAGG-;setchildren!;ALA;30| (|u| |lv| $)
+ (COND
+ ((EQL (LENGTH |lv|) 1)
+ (SPADCALL |u| (|SPADfirst| |lv|) (QREFELT $ 55)))
+ ('T (|error| "wrong number of children specified"))))
+
+(DEFUN |URAGG-;setvalue!;A2S;31| (|u| |s| $)
+ (SPADCALL |u| |s| (QREFELT $ 51)))
+
+(DEFUN |URAGG-;split!;AIA;32| (|p| |n| $)
+ (PROG (#0=#:G1524 |q|)
+ (RETURN
+ (SEQ (COND
+ ((< |n| 1) (|error| "index out of range"))
+ ('T
+ (SEQ (LETT |p|
+ (SPADCALL |p|
+ (PROG1 (LETT #0# (- |n| 1)
+ |URAGG-;split!;AIA;32|)
+ (|check-subtype| (>= #0# 0)
+ '(|NonNegativeInteger|) #0#))
+ (QREFELT $ 44))
+ |URAGG-;split!;AIA;32|)
+ (LETT |q| (SPADCALL |p| (QREFELT $ 14))
+ |URAGG-;split!;AIA;32|)
+ (SPADCALL |p| (SPADCALL (QREFELT $ 62))
+ (QREFELT $ 55))
+ (EXIT |q|))))))))
+
+(DEFUN |URAGG-;cycleSplit!;2A;33| (|x| $)
+ (PROG (|y| |z|)
+ (RETURN
+ (SEQ (COND
+ ((OR (SPADCALL
+ (LETT |y| (SPADCALL |x| (QREFELT $ 38))
+ |URAGG-;cycleSplit!;2A;33|)
+ (QREFELT $ 20))
+ (SPADCALL |x| |y| (QREFELT $ 37)))
+ |y|)
+ ('T
+ (SEQ (LETT |z| (SPADCALL |x| (QREFELT $ 14))
+ |URAGG-;cycleSplit!;2A;33|)
+ (SEQ G190
+ (COND
+ ((NULL (SPADCALL
+ (SPADCALL |z| |y| (QREFELT $ 37))
+ (QREFELT $ 21)))
+ (GO G191)))
+ (SEQ (LETT |x| |z| |URAGG-;cycleSplit!;2A;33|)
+ (EXIT (LETT |z|
+ (SPADCALL |z| (QREFELT $ 14))
+ |URAGG-;cycleSplit!;2A;33|)))
+ NIL (GO G190) G191 (EXIT NIL))
+ (SPADCALL |x| (SPADCALL (QREFELT $ 62))
+ (QREFELT $ 55))
+ (EXIT |y|))))))))
+
+(DEFUN |UnaryRecursiveAggregate&| (|#1| |#2|)
+ (PROG (|dv$1| |dv$2| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|)
+ . #0=(|UnaryRecursiveAggregate&|))
+ (LETT |dv$2| (|devaluate| |#2|) . #0#)
+ (LETT |dv$|
+ (LIST '|UnaryRecursiveAggregate&| |dv$1| |dv$2|) . #0#)
+ (LETT $ (GETREFV 67) . #0#)
+ (QSETREFV $ 0 |dv$|)
+ (QSETREFV $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (|HasAttribute| |#1| '|shallowlyMutable|))) . #0#))
+ (|stuffDomainSlots| $)
+ (QSETREFV $ 6 |#1|)
+ (QSETREFV $ 7 |#2|)
+ (COND
+ ((|HasAttribute| |#1| '|finiteAggregate|)
+ (QSETREFV $ 46
+ (CONS (|dispatchFunction| |URAGG-;last;ANniA;22|) $))))
+ (COND
+ ((|HasCategory| |#2| '(|SetCategory|))
+ (PROGN
+ (QSETREFV $ 48
+ (CONS (|dispatchFunction| |URAGG-;=;2AB;23|) $))
+ (QSETREFV $ 50
+ (CONS (|dispatchFunction| |URAGG-;node?;2AB;24|) $)))))
+ (COND
+ ((|testBitVector| |pv$| 1)
+ (PROGN
+ (QSETREFV $ 52
+ (CONS (|dispatchFunction| |URAGG-;setelt;Afirst2S;25|)
+ $))
+ (QSETREFV $ 54
+ (CONS (|dispatchFunction| |URAGG-;setelt;Alast2S;26|)
+ $))
+ (QSETREFV $ 56
+ (CONS (|dispatchFunction| |URAGG-;setelt;Arest2A;27|)
+ $))
+ (QSETREFV $ 58
+ (CONS (|dispatchFunction| |URAGG-;concat;3A;28|) $))
+ (QSETREFV $ 59
+ (CONS (|dispatchFunction| |URAGG-;setlast!;A2S;29|) $))
+ (QSETREFV $ 60
+ (CONS (|dispatchFunction|
+ |URAGG-;setchildren!;ALA;30|)
+ $))
+ (QSETREFV $ 61
+ (CONS (|dispatchFunction| |URAGG-;setvalue!;A2S;31|)
+ $))
+ (QSETREFV $ 64
+ (CONS (|dispatchFunction| |URAGG-;split!;AIA;32|) $))
+ (QSETREFV $ 65
+ (CONS (|dispatchFunction| |URAGG-;cycleSplit!;2A;33|)
+ $)))))
+ $))))
+
+(MAKEPROP '|UnaryRecursiveAggregate&| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|)
+ (0 . |first|) '"first" |URAGG-;elt;AfirstS;1| (5 . |last|)
+ '"last" |URAGG-;elt;AlastS;2| (10 . |rest|) '"rest"
+ |URAGG-;elt;ArestA;3| |URAGG-;second;AS;4|
+ |URAGG-;third;AS;5| (|Boolean|) (15 . |empty?|)
+ (20 . |not|) |URAGG-;cyclic?;AB;6| (25 . |tail|)
+ |URAGG-;last;AS;7| (|List| $) |URAGG-;nodes;AL;8|
+ |URAGG-;children;AL;9| |URAGG-;leaf?;AB;10|
+ |URAGG-;value;AS;11| (|NonNegativeInteger|)
+ |URAGG-;less?;ANniB;12| |URAGG-;more?;ANniB;13|
+ |URAGG-;size?;ANniB;14| (30 . |cyclic?|)
+ |URAGG-;#;ANni;15| |URAGG-;tail;2A;16| (35 . |eq?|)
+ (41 . |cycleEntry|) |URAGG-;cycleTail;2A;18|
+ |URAGG-;cycleEntry;2A;19| |URAGG-;cycleLength;ANni;20|
+ |URAGG-;rest;ANniA;21| (46 . |#|) (51 . |rest|)
+ (57 . |copy|) (62 . |last|) (68 . =) (74 . =) (80 . =)
+ (86 . |node?|) (92 . |setfirst!|) (98 . |setelt|)
+ (105 . |setlast!|) (111 . |setelt|) (118 . |setrest!|)
+ (124 . |setelt|) (131 . |concat!|) (137 . |concat|)
+ (143 . |setlast!|) (149 . |setchildren!|)
+ (155 . |setvalue!|) (161 . |empty|) (|Integer|)
+ (165 . |split!|) (171 . |cycleSplit!|) '"value")
+ '#(|value| 176 |third| 181 |tail| 186 |split!| 191 |size?|
+ 197 |setvalue!| 203 |setlast!| 209 |setelt| 215
+ |setchildren!| 236 |second| 242 |rest| 247 |nodes| 253
+ |node?| 258 |more?| 264 |less?| 270 |leaf?| 276 |last| 281
+ |elt| 292 |cyclic?| 310 |cycleTail| 315 |cycleSplit!| 320
+ |cycleLength| 325 |cycleEntry| 330 |concat| 335 |children|
+ 341 = 346 |#| 352)
+ 'NIL
+ (CONS (|makeByteWordVec2| 1 'NIL)
+ (CONS '#()
+ (CONS '#()
+ (|makeByteWordVec2| 65
+ '(1 6 7 0 8 1 6 7 0 11 1 6 0 0 14 1 6
+ 19 0 20 1 19 0 0 21 1 6 0 0 23 1 6 19
+ 0 34 2 6 19 0 0 37 1 6 0 0 38 1 6 30
+ 0 43 2 6 0 0 30 44 1 6 0 0 45 2 0 0 0
+ 30 46 2 7 19 0 0 47 2 0 19 0 0 48 2 6
+ 19 0 0 49 2 0 19 0 0 50 2 6 7 0 7 51
+ 3 0 7 0 9 7 52 2 6 7 0 7 53 3 0 7 0
+ 12 7 54 2 6 0 0 0 55 3 0 0 0 15 0 56
+ 2 6 0 0 0 57 2 0 0 0 0 58 2 0 7 0 7
+ 59 2 0 0 0 25 60 2 0 7 0 7 61 0 6 0
+ 62 2 0 0 0 63 64 1 0 0 0 65 1 0 7 0
+ 29 1 0 7 0 18 1 0 0 0 36 2 0 0 0 63
+ 64 2 0 19 0 30 33 2 0 7 0 7 61 2 0 7
+ 0 7 59 3 0 7 0 12 7 54 3 0 0 0 15 0
+ 56 3 0 7 0 9 7 52 2 0 0 0 25 60 1 0 7
+ 0 17 2 0 0 0 30 42 1 0 25 0 26 2 0 19
+ 0 0 50 2 0 19 0 30 32 2 0 19 0 30 31
+ 1 0 19 0 28 2 0 0 0 30 46 1 0 7 0 24
+ 2 0 7 0 12 13 2 0 0 0 15 16 2 0 7 0 9
+ 10 1 0 19 0 22 1 0 0 0 39 1 0 0 0 65
+ 1 0 30 0 41 1 0 0 0 40 2 0 0 0 0 58 1
+ 0 25 0 27 2 0 19 0 0 48 1 0 30 0 35)))))
+ '|lookupComplete|))
diff --git a/src/algebra/strap/URAGG.lsp b/src/algebra/strap/URAGG.lsp
new file mode 100644
index 00000000..e6d16cf0
--- /dev/null
+++ b/src/algebra/strap/URAGG.lsp
@@ -0,0 +1,113 @@
+
+(/VERSIONCHECK 2)
+
+(DEFPARAMETER |UnaryRecursiveAggregate;CAT| 'NIL)
+
+(DEFPARAMETER |UnaryRecursiveAggregate;AL| 'NIL)
+
+(DEFUN |UnaryRecursiveAggregate| (#0=#:G1426)
+ (LET (#1=#:G1427)
+ (COND
+ ((SETQ #1#
+ (|assoc| (|devaluate| #0#) |UnaryRecursiveAggregate;AL|))
+ (CDR #1#))
+ (T (SETQ |UnaryRecursiveAggregate;AL|
+ (|cons5| (CONS (|devaluate| #0#)
+ (SETQ #1#
+ (|UnaryRecursiveAggregate;| #0#)))
+ |UnaryRecursiveAggregate;AL|))
+ #1#))))
+
+(DEFUN |UnaryRecursiveAggregate;| (|t#1|)
+ (PROG (#0=#:G1425)
+ (RETURN
+ (PROG1 (LETT #0#
+ (|sublisV|
+ (PAIR '(|t#1|) (LIST (|devaluate| |t#1|)))
+ (COND
+ (|UnaryRecursiveAggregate;CAT|)
+ ('T
+ (LETT |UnaryRecursiveAggregate;CAT|
+ (|Join| (|RecursiveAggregate| '|t#1|)
+ (|mkCategory| '|domain|
+ '(((|concat| ($ $ $)) T)
+ ((|concat| ($ |t#1| $)) T)
+ ((|first| (|t#1| $)) T)
+ ((|elt| (|t#1| $ "first"))
+ T)
+ ((|first|
+ ($ $
+ (|NonNegativeInteger|)))
+ T)
+ ((|rest| ($ $)) T)
+ ((|elt| ($ $ "rest")) T)
+ ((|rest|
+ ($ $
+ (|NonNegativeInteger|)))
+ T)
+ ((|last| (|t#1| $)) T)
+ ((|elt| (|t#1| $ "last")) T)
+ ((|last|
+ ($ $
+ (|NonNegativeInteger|)))
+ T)
+ ((|tail| ($ $)) T)
+ ((|second| (|t#1| $)) T)
+ ((|third| (|t#1| $)) T)
+ ((|cycleEntry| ($ $)) T)
+ ((|cycleLength|
+ ((|NonNegativeInteger|) $))
+ T)
+ ((|cycleTail| ($ $)) T)
+ ((|concat!| ($ $ $))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|concat!| ($ $ |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|cycleSplit!| ($ $))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|setfirst!|
+ (|t#1| $ |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|setelt|
+ (|t#1| $ "first" |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|setrest!| ($ $ $))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|setelt| ($ $ "rest" $))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|setlast!|
+ (|t#1| $ |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|setelt|
+ (|t#1| $ "last" |t#1|))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|)))
+ ((|split!|
+ ($ $ (|Integer|)))
+ (|has| $
+ (ATTRIBUTE
+ |shallowlyMutable|))))
+ NIL
+ '((|Integer|)
+ (|NonNegativeInteger|))
+ NIL))
+ . #1=(|UnaryRecursiveAggregate|))))) . #1#)
+ (SETELT #0# 0
+ (LIST '|UnaryRecursiveAggregate| (|devaluate| |t#1|)))))))
diff --git a/src/algebra/strap/VECTOR.lsp b/src/algebra/strap/VECTOR.lsp
new file mode 100644
index 00000000..7de3d0c1
--- /dev/null
+++ b/src/algebra/strap/VECTOR.lsp
@@ -0,0 +1,133 @@
+
+(/VERSIONCHECK 2)
+
+(DEFUN |VECTOR;vector;L$;1| (|l| $)
+ (SPADCALL |l| (|getShellEntry| $ 8)))
+
+(DEFUN |VECTOR;convert;$If;2| (|x| $)
+ (SPADCALL
+ (LIST (SPADCALL (SPADCALL "vector" (|getShellEntry| $ 12))
+ (|getShellEntry| $ 14))
+ (SPADCALL (SPADCALL |x| (|getShellEntry| $ 15))
+ (|getShellEntry| $ 16)))
+ (|getShellEntry| $ 18)))
+
+(DEFUN |Vector| (#0=#:G1402)
+ (PROG ()
+ (RETURN
+ (PROG (#1=#:G1403)
+ (RETURN
+ (COND
+ ((LETT #1#
+ (|lassocShiftWithFunction| (LIST (|devaluate| #0#))
+ (HGET |$ConstructorCache| '|Vector|)
+ '|domainEqualList|)
+ |Vector|)
+ (|CDRwithIncrement| #1#))
+ ('T
+ (UNWIND-PROTECT
+ (PROG1 (|Vector;| #0#) (LETT #1# T |Vector|))
+ (COND ((NOT #1#) (HREM |$ConstructorCache| '|Vector|)))))))))))
+
+(DEFUN |Vector;| (|#1|)
+ (PROG (|dv$1| |dv$| $ |pv$|)
+ (RETURN
+ (PROGN
+ (LETT |dv$1| (|devaluate| |#1|) . #0=(|Vector|))
+ (LETT |dv$| (LIST '|Vector| |dv$1|) . #0#)
+ (LETT $ (|newShell| 36) . #0#)
+ (|setShellEntry| $ 0 |dv$|)
+ (|setShellEntry| $ 3
+ (LETT |pv$|
+ (|buildPredVector| 0 0
+ (LIST (OR (AND (|HasCategory| |#1|
+ '(|OrderedSet|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (AND (|HasCategory| |#1|
+ '(|SetCategory|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|)))))
+ (OR (AND (|HasCategory| |#1|
+ '(|SetCategory|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (|HasCategory| |#1|
+ '(|CoercibleTo| (|OutputForm|))))
+ (|HasCategory| |#1|
+ '(|ConvertibleTo| (|InputForm|)))
+ (OR (|HasCategory| |#1| '(|OrderedSet|))
+ (|HasCategory| |#1| '(|SetCategory|)))
+ (|HasCategory| |#1| '(|OrderedSet|))
+ (|HasCategory| (|Integer|) '(|OrderedSet|))
+ (|HasCategory| |#1| '(|SetCategory|))
+ (|HasCategory| |#1| '(|AbelianSemiGroup|))
+ (|HasCategory| |#1| '(|AbelianMonoid|))
+ (|HasCategory| |#1| '(|AbelianGroup|))
+ (|HasCategory| |#1| '(|Monoid|))
+ (|HasCategory| |#1| '(|Ring|))
+ (AND (|HasCategory| |#1|
+ '(|RadicalCategory|))
+ (|HasCategory| |#1| '(|Ring|)))
+ (AND (|HasCategory| |#1| '(|SetCategory|))
+ (|HasCategory| |#1|
+ (LIST '|Evalable|
+ (|devaluate| |#1|))))
+ (|HasCategory| |#1|
+ '(|CoercibleTo| (|OutputForm|))))) . #0#))
+ (|haddProp| |$ConstructorCache| '|Vector| (LIST |dv$1|)
+ (CONS 1 $))
+ (|stuffDomainSlots| $)
+ (|setShellEntry| $ 6 |#1|)
+ (COND
+ ((|testBitVector| |pv$| 3)
+ (|setShellEntry| $ 19
+ (CONS (|dispatchFunction| |VECTOR;convert;$If;2|) $))))
+ $))))
+
+(MAKEPROP '|Vector| '|infovec|
+ (LIST '#(NIL NIL NIL NIL NIL (|IndexedVector| 6 (NRTEVAL 1))
+ (|local| |#1|) (|List| 6) (0 . |construct|)
+ |VECTOR;vector;L$;1| (|String|) (|Symbol|) (5 . |coerce|)
+ (|InputForm|) (10 . |convert|) (15 . |parts|)
+ (20 . |convert|) (|List| $) (25 . |convert|)
+ (30 . |convert|) (|Mapping| 6 6 6) (|Boolean|)
+ (|NonNegativeInteger|) (|Equation| 6) (|List| 23)
+ (|Integer|) (|Mapping| 21 6) (|Mapping| 21 6 6)
+ (|UniversalSegment| 25) (|Void|) (|Mapping| 6 6)
+ (|OutputForm|) (|Matrix| 6) (|SingleInteger|)
+ (|Union| 6 '"failed") (|List| 25))
+ '#(|vector| 35 |parts| 40 |convert| 45 |construct| 50)
+ '((|shallowlyMutable| . 0) (|finiteAggregate| . 0))
+ (CONS (|makeByteWordVec2| 5
+ '(0 0 0 0 0 0 0 5 0 0 1 4 0 0 1 2 3 4))
+ (CONS '#(|VectorCategory&|
+ |OneDimensionalArrayAggregate&|
+ |FiniteLinearAggregate&| |LinearAggregate&|
+ |IndexedAggregate&| |Collection&|
+ |HomogeneousAggregate&| |OrderedSet&|
+ |Aggregate&| |EltableAggregate&| |Evalable&|
+ |SetCategory&| NIL NIL |InnerEvalable&| NIL
+ NIL |BasicType&|)
+ (CONS '#((|VectorCategory| 6)
+ (|OneDimensionalArrayAggregate| 6)
+ (|FiniteLinearAggregate| 6)
+ (|LinearAggregate| 6)
+ (|IndexedAggregate| 25 6)
+ (|Collection| 6)
+ (|HomogeneousAggregate| 6)
+ (|OrderedSet|) (|Aggregate|)
+ (|EltableAggregate| 25 6) (|Evalable| 6)
+ (|SetCategory|) (|Type|)
+ (|Eltable| 25 6) (|InnerEvalable| 6 6)
+ (|CoercibleTo| 31) (|ConvertibleTo| 13)
+ (|BasicType|))
+ (|makeByteWordVec2| 19
+ '(1 0 0 7 8 1 11 0 10 12 1 13 0 11 14 1
+ 0 7 0 15 1 7 13 0 16 1 13 0 17 18 1 0
+ 13 0 19 1 0 0 7 9 1 0 7 0 15 1 3 13 0
+ 19 1 0 0 7 8)))))
+ '|lookupIncomplete|))