1
2(SDEFUN |IDPO;coerce;$Of;1| ((|x| $) ($ |OutputForm|))
3        (SPROG ((#1=#:G476 NIL) (|t| NIL) (#2=#:G475 NIL))
4               (SEQ
5                (SPADCALL
6                 (PROGN
7                  (LETT #2# NIL)
8                  (SEQ (LETT |t| NIL) (LETT #1# |x|) G190
9                       (COND
10                        ((OR (ATOM #1#) (PROGN (LETT |t| (CAR #1#)) NIL))
11                         (GO G191)))
12                       (SEQ
13                        (EXIT
14                         (LETT #2#
15                               (CONS
16                                (SPADCALL (SPADCALL (QCAR |t|) (QREFELT $ 10))
17                                          (SPADCALL (QCDR |t|) (QREFELT $ 11))
18                                          (QREFELT $ 12))
19                                #2#))))
20                       (LETT #1# (CDR #1#)) (GO G190) G191
21                       (EXIT (NREVERSE #2#))))
22                 (QREFELT $ 14)))))
23
24(PUT '|IDPO;listOfTerms;$L;2| '|SPADreplace| '(XLAM (|x|) |x|))
25
26(SDEFUN |IDPO;listOfTerms;$L;2|
27        ((|x| $) ($ |List| (|Record| (|:| |k| S) (|:| |c| A)))) |x|)
28
29(SDEFUN |IDPO;monomial?;$B;3| ((|x| $) ($ |Boolean|))
30        (COND ((NULL |x|) NIL) ('T (NULL (CDR |x|)))))
31
32(PUT '|IDPO;numberOfMonomials;$Nni;4| '|SPADreplace| 'LENGTH)
33
34(SDEFUN |IDPO;numberOfMonomials;$Nni;4| ((|x| $) ($ |NonNegativeInteger|))
35        (LENGTH |x|))
36
37(SDEFUN |IDPO;monomial;AS$;5| ((|r| A) (|s| S) ($ $))
38        (COND
39         ((SPADCALL |r| (|spadConstant| $ 24) (QREFELT $ 25))
40          (|spadConstant| $ 23))
41         ('T (LIST (CONS |s| |r|)))))
42
43(SDEFUN |IDPO;map;M2$;6| ((|f| |Mapping| A A) (|x| $) ($ $))
44        (SPROG ((|a| (A)) (#1=#:G492 NIL) (|tm| NIL) (#2=#:G491 NIL))
45               (SEQ
46                (PROGN
47                 (LETT #2# NIL)
48                 (SEQ (LETT |tm| NIL) (LETT #1# |x|) G190
49                      (COND
50                       ((OR (ATOM #1#) (PROGN (LETT |tm| (CAR #1#)) NIL))
51                        (GO G191)))
52                      (SEQ
53                       (EXIT
54                        (COND
55                         ((NULL
56                           (SPADCALL (LETT |a| (SPADCALL (QCDR |tm|) |f|))
57                                     (|spadConstant| $ 24) (QREFELT $ 25)))
58                          (LETT #2# (CONS (CONS (QCAR |tm|) |a|) #2#))))))
59                      (LETT #1# (CDR #1#)) (GO G190) G191
60                      (EXIT (NREVERSE #2#)))))))
61
62(SDEFUN |IDPO;monomial;AS$;7| ((|r| A) (|s| S) ($ $)) (LIST (CONS |s| |r|)))
63
64(SDEFUN |IDPO;map;M2$;8| ((|f| |Mapping| A A) (|x| $) ($ $))
65        (SPROG ((#1=#:G499 NIL) (|tm| NIL) (#2=#:G498 NIL))
66               (SEQ
67                (PROGN
68                 (LETT #2# NIL)
69                 (SEQ (LETT |tm| NIL) (LETT #1# |x|) G190
70                      (COND
71                       ((OR (ATOM #1#) (PROGN (LETT |tm| (CAR #1#)) NIL))
72                        (GO G191)))
73                      (SEQ
74                       (EXIT
75                        (LETT #2#
76                              (CONS
77                               (CONS (QCAR |tm|) (SPADCALL (QCDR |tm|) |f|))
78                               #2#))))
79                      (LETT #1# (CDR #1#)) (GO G190) G191
80                      (EXIT (NREVERSE #2#)))))))
81
82(SDEFUN |IDPO;=;2$B;9| ((|x| $) (|y| $) ($ |Boolean|))
83        (SPROG ((#1=#:G509 NIL))
84               (SEQ
85                (EXIT
86                 (SEQ
87                  (SEQ G190
88                       (COND
89                        ((NULL (COND ((NULL |x|) NIL) ('T (NULL (NULL |y|)))))
90                         (GO G191)))
91                       (SEQ
92                        (EXIT
93                         (COND
94                          ((OR
95                            (SPADCALL (QCAR (|SPADfirst| |x|))
96                                      (QCAR (|SPADfirst| |y|)) (QREFELT $ 29))
97                            (SPADCALL (QCDR (|SPADfirst| |x|))
98                                      (QCDR (|SPADfirst| |y|)) (QREFELT $ 30)))
99                           (PROGN (LETT #1# NIL) (GO #2=#:G508)))
100                          ('T
101                           (SEQ (LETT |x| (CDR |x|))
102                                (EXIT (LETT |y| (CDR |y|))))))))
103                       NIL (GO G190) G191 (EXIT NIL))
104                  (EXIT (COND ((NULL |x|) (NULL |y|)) ('T NIL)))))
105                #2# (EXIT #1#))))
106
107(SDEFUN |IDPO;reductum;2$;10| ((|x| $) ($ $))
108        (COND ((NULL |x|) (|spadConstant| $ 23)) ('T (CDR |x|))))
109
110(SDEFUN |IDPO;leadingCoefficient;$A;11| ((|x| $) ($ A))
111        (COND ((NULL |x|) (|spadConstant| $ 24)) ('T (QCDR (|SPADfirst| |x|)))))
112
113(SDEFUN |IDPO;smaller?;2$B;12| ((|x| $) (|y| $) ($ |Boolean|))
114        (SPROG ((#1=#:G523 NIL))
115               (SEQ
116                (EXIT
117                 (SEQ G190 NIL
118                      (SEQ
119                       (EXIT
120                        (COND
121                         ((NULL |y|)
122                          (COND
123                           ((NULL |x|) (PROGN (LETT #1# NIL) (GO #2=#:G522)))
124                           ('T
125                            (PROGN
126                             (LETT #1#
127                                   (SPADCALL (QCDR (|SPADfirst| |x|))
128                                             (|spadConstant| $ 24)
129                                             (QREFELT $ 34)))
130                             (GO #2#)))))
131                         ((NULL |x|)
132                          (PROGN
133                           (LETT #1#
134                                 (SPADCALL (|spadConstant| $ 24)
135                                           (QCDR (|SPADfirst| |y|))
136                                           (QREFELT $ 34)))
137                           (GO #2#)))
138                         ((SPADCALL (QCAR (|SPADfirst| |x|))
139                                    (QCAR (|SPADfirst| |y|)) (QREFELT $ 35))
140                          (COND
141                           ((SPADCALL (QCDR (|SPADfirst| |x|))
142                                      (QCDR (|SPADfirst| |y|)) (QREFELT $ 25))
143                            (SEQ (LETT |x| (CDR |x|))
144                                 (EXIT (LETT |y| (CDR |y|)))))
145                           ('T
146                            (PROGN
147                             (LETT #1#
148                                   (SPADCALL (QCDR (|SPADfirst| |x|))
149                                             (QCDR (|SPADfirst| |y|))
150                                             (QREFELT $ 34)))
151                             (GO #2#)))))
152                         ((SPADCALL (QCAR (|SPADfirst| |x|))
153                                    (QCAR (|SPADfirst| |y|)) (QREFELT $ 36))
154                          (PROGN
155                           (LETT #1#
156                                 (SPADCALL (|spadConstant| $ 24)
157                                           (QCDR (|SPADfirst| |y|))
158                                           (QREFELT $ 34)))
159                           (GO #2#)))
160                         ('T
161                          (PROGN
162                           (LETT #1#
163                                 (SPADCALL (QCDR (|SPADfirst| |x|))
164                                           (|spadConstant| $ 24)
165                                           (QREFELT $ 34)))
166                           (GO #2#))))))
167                      NIL (GO G190) G191 (EXIT NIL)))
168                #2# (EXIT #1#))))
169
170(PUT '|IDPO;reductum;2$;13| '|SPADreplace| 'CDR)
171
172(SDEFUN |IDPO;reductum;2$;13| ((|x| $) ($ $)) (CDR |x|))
173
174(SDEFUN |IDPO;leadingCoefficient;$A;14| ((|x| $) ($ A))
175        (COND
176         ((NULL |x|)
177          (|error| "Can't take leadingCoefficient of empty product element"))
178         ('T (QCDR (|SPADfirst| |x|)))))
179
180(SDEFUN |IDPO;smaller?;2$B;15| ((|x| $) (|y| $) ($ |Boolean|))
181        (SPROG ((#1=#:G536 NIL))
182               (SEQ
183                (EXIT
184                 (SEQ G190 NIL
185                      (SEQ
186                       (EXIT
187                        (COND
188                         ((NULL |y|)
189                          (COND
190                           ((OR (NULL |x|) 'T)
191                            (PROGN (LETT #1# NIL) (GO #2=#:G535)))))
192                         ((NULL |x|) (PROGN (LETT #1# 'T) (GO #2#)))
193                         ((SPADCALL (QCAR (|SPADfirst| |x|))
194                                    (QCAR (|SPADfirst| |y|)) (QREFELT $ 35))
195                          (COND
196                           ((SPADCALL (QCDR (|SPADfirst| |x|))
197                                      (QCDR (|SPADfirst| |y|)) (QREFELT $ 25))
198                            (SEQ (LETT |x| (CDR |x|))
199                                 (EXIT (LETT |y| (CDR |y|)))))
200                           ('T
201                            (PROGN
202                             (LETT #1#
203                                   (SPADCALL (QCDR (|SPADfirst| |x|))
204                                             (QCDR (|SPADfirst| |y|))
205                                             (QREFELT $ 34)))
206                             (GO #2#)))))
207                         ((SPADCALL (QCAR (|SPADfirst| |x|))
208                                    (QCAR (|SPADfirst| |y|)) (QREFELT $ 36))
209                          (PROGN (LETT #1# 'T) (GO #2#)))
210                         ('T (PROGN (LETT #1# NIL) (GO #2#))))))
211                      NIL (GO G190) G191 (EXIT NIL)))
212                #2# (EXIT #1#))))
213
214(SDEFUN |IDPO;leadingSupport;$S;16| ((|x| $) ($ S))
215        (COND
216         ((NULL |x|)
217          (|error| "Can't take leadingCoefficient of empty product element"))
218         ('T (QCAR (|SPADfirst| |x|)))))
219
220(SDEFUN |IDPO;leadingMonomial;2$;17| ((|x| $) ($ $))
221        (SPADCALL (QCDR (|SPADfirst| |x|)) (QCAR (|SPADfirst| |x|))
222                  (QREFELT $ 26)))
223
224(SDEFUN |IDPO;compareterm|
225        ((|a| |Record| (|:| |k| S) (|:| |c| A))
226         (|b| |Record| (|:| |k| S) (|:| |c| A)) ($ |Boolean|))
227        (SPADCALL (QCAR |b|) (QCAR |a|) (QREFELT $ 36)))
228
229(SDEFUN |IDPO;construct;L$;19|
230        ((|lx| |List| (|Record| (|:| |k| S) (|:| |c| A))) ($ $))
231        (SPADCALL (CONS (|function| |IDPO;compareterm|) $) |lx| (QREFELT $ 41)))
232
233(PUT '|IDPO;constructOrdered;L$;20| '|SPADreplace| '(XLAM (|lx|) |lx|))
234
235(SDEFUN |IDPO;constructOrdered;L$;20|
236        ((|lx| |List| (|Record| (|:| |k| S) (|:| |c| A))) ($ $)) |lx|)
237
238(SDEFUN |IDPO;leadingTerm;$R;21| ((|x| $) ($ |Record| (|:| |k| S) (|:| |c| A)))
239        (COND
240         ((NULL |x|)
241          (|error| "Can't take leadingCoefficient of empty product element"))
242         ('T (|SPADfirst| |x|))))
243
244(SDEFUN |IDPO;hashUpdate!;Hs$Hs;22| ((|s| |HashState|) (|x| $) ($ |HashState|))
245        (SPROG ((#1=#:G551 NIL) (|t| NIL) (|xl| (|Rep|)))
246               (SEQ (LETT |xl| |x|)
247                    (SEQ (LETT |t| NIL) (LETT #1# |xl|) G190
248                         (COND
249                          ((OR (ATOM #1#) (PROGN (LETT |t| (CAR #1#)) NIL))
250                           (GO G191)))
251                         (SEQ
252                          (LETT |s| (SPADCALL |s| (QCAR |t|) (QREFELT $ 46)))
253                          (EXIT
254                           (LETT |s|
255                                 (SPADCALL |s| (QCDR |t|) (QREFELT $ 47)))))
256                         (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
257                    (EXIT |s|))))
258
259(PUT '|IDPO;Zero;$;23| '|SPADreplace| '(XLAM NIL NIL))
260
261(SDEFUN |IDPO;Zero;$;23| (($ $)) NIL)
262
263(PUT '|IDPO;zero?;$B;24| '|SPADreplace| 'NULL)
264
265(SDEFUN |IDPO;zero?;$B;24| ((|x| $) ($ |Boolean|)) (NULL |x|))
266
267(SDEFUN |IDPO;add_gen| ((|x| |Rep|) (|y| |Rep|) ($ |Rep|))
268        (SPROG
269         ((|res| (|Rep|)) (|end| (|Rep|)) (|endcell| (|Rep|))
270          (|newcell| (|Rep|)) (|r| (A)))
271         (SEQ
272          (COND ((NULL |x|) |y|) ((NULL |y|) |x|)
273                (#1='T
274                 (SEQ (LETT |endcell| NIL) (LETT |res| NIL)
275                      (SEQ G190
276                           (COND
277                            ((NULL
278                              (COND ((NULL |x|) NIL) ('T (NULL (NULL |y|)))))
279                             (GO G191)))
280                           (SEQ (LETT |newcell| NIL)
281                                (COND
282                                 ((SPADCALL (QCAR (|SPADfirst| |x|))
283                                            (QCAR (|SPADfirst| |y|))
284                                            (QREFELT $ 35))
285                                  (SEQ
286                                   (LETT |r|
287                                         (SPADCALL (QCDR (|SPADfirst| |x|))
288                                                   (QCDR (|SPADfirst| |y|))
289                                                   (QREFELT $ 50)))
290                                   (COND
291                                    ((NULL (SPADCALL |r| (QREFELT $ 51)))
292                                     (LETT |newcell|
293                                           (CONS
294                                            (CONS (QCAR (|SPADfirst| |x|)) |r|)
295                                            NIL))))
296                                   (LETT |x| (CDR |x|))
297                                   (EXIT (LETT |y| (CDR |y|)))))
298                                 ((SPADCALL (QCAR (|SPADfirst| |y|))
299                                            (QCAR (|SPADfirst| |x|))
300                                            (QREFELT $ 36))
301                                  (SEQ
302                                   (LETT |newcell|
303                                         (CONS (|SPADfirst| |x|) NIL))
304                                   (EXIT (LETT |x| (CDR |x|)))))
305                                 ('T
306                                  (SEQ
307                                   (LETT |newcell|
308                                         (CONS (|SPADfirst| |y|) NIL))
309                                   (EXIT (LETT |y| (CDR |y|))))))
310                                (EXIT
311                                 (COND
312                                  ((NULL (NULL |newcell|))
313                                   (COND
314                                    ((NULL |endcell|)
315                                     (SEQ (LETT |res| |newcell|)
316                                          (EXIT (LETT |endcell| |res|))))
317                                    ('T
318                                     (SEQ (RPLACD |endcell| |newcell|)
319                                          (EXIT
320                                           (LETT |endcell| |newcell|)))))))))
321                           NIL (GO G190) G191 (EXIT NIL))
322                      (COND ((NULL |x|) (LETT |end| |y|))
323                            (#1# (LETT |end| |x|)))
324                      (COND ((NULL |res|) (LETT |res| |end|))
325                            (#1# (RPLACD |endcell| |end|)))
326                      (EXIT |res|)))))))
327
328(SDEFUN |IDPO;add_si|
329        ((|x| |List| (|Record| (|:| |k| (|SingleInteger|)) (|:| |c| A)))
330         (|y| . #1=(|List| (|Record| (|:| |k| (|SingleInteger|)) (|:| |c| A))))
331         ($ |List| (|Record| (|:| |k| (|SingleInteger|)) (|:| |c| A))))
332        (SPROG
333         ((|res|
334           #2=(|List| (|Record| (|:| |k| (|SingleInteger|)) (|:| |c| A))))
335          (|end| #1#) (|endcell| #2#) (|newcell| #2#) (|r| (A)))
336         (SEQ (LETT |endcell| NIL) (LETT |res| NIL)
337              (SEQ G190
338                   (COND
339                    ((NULL (COND ((NULL |x|) NIL) ('T (NULL (NULL |y|)))))
340                     (GO G191)))
341                   (SEQ (LETT |newcell| NIL)
342                        (COND
343                         ((|eql_SI| (QCAR (|SPADfirst| |x|))
344                                    (QCAR (|SPADfirst| |y|)))
345                          (SEQ
346                           (LETT |r|
347                                 (SPADCALL (QCDR (|SPADfirst| |x|))
348                                           (QCDR (|SPADfirst| |y|))
349                                           (QREFELT $ 50)))
350                           (COND
351                            ((NULL (SPADCALL |r| (QREFELT $ 51)))
352                             (LETT |newcell|
353                                   (CONS (CONS (QCAR (|SPADfirst| |x|)) |r|)
354                                         NIL))))
355                           (LETT |x| (CDR |x|)) (EXIT (LETT |y| (CDR |y|)))))
356                         ((SPADCALL (QCAR (|SPADfirst| |y|))
357                                    (QCAR (|SPADfirst| |x|)) (QREFELT $ 53))
358                          (SEQ (LETT |newcell| (CONS (|SPADfirst| |x|) NIL))
359                               (EXIT (LETT |x| (CDR |x|)))))
360                         ('T
361                          (SEQ (LETT |newcell| (CONS (|SPADfirst| |y|) NIL))
362                               (EXIT (LETT |y| (CDR |y|))))))
363                        (EXIT
364                         (COND
365                          ((NULL (NULL |newcell|))
366                           (COND
367                            ((NULL |endcell|)
368                             (SEQ (LETT |res| |newcell|)
369                                  (EXIT (LETT |endcell| |res|))))
370                            ('T
371                             (SEQ (RPLACD |endcell| |newcell|)
372                                  (EXIT (LETT |endcell| |newcell|)))))))))
373                   NIL (GO G190) G191 (EXIT NIL))
374              (COND ((NULL |x|) (LETT |end| |y|)) (#3='T (LETT |end| |x|)))
375              (COND ((NULL |res|) (LETT |res| |end|))
376                    (#3# (RPLACD |endcell| |end|)))
377              (EXIT |res|))))
378
379(SDEFUN |IDPO;+;3$;27| ((|x| $) (|y| $) ($ $))
380        (SPROG
381         ((#1=#:G597 NIL) (|msi| (|SingleInteger|)) (|degy| (|Integer|))
382          (|degx| (|Integer|)))
383         (SEQ
384          (EXIT
385           (COND ((NULL |x|) |y|) ((NULL |y|) |x|)
386                 ('T
387                  (SEQ (LETT |degx| (QCAR (|SPADfirst| |x|)))
388                       (LETT |degy| (QCAR (|SPADfirst| |y|)))
389                       (LETT |msi| MOST-POSITIVE-FIXNUM)
390                       (COND
391                        ((< |degx| |msi|)
392                         (COND
393                          ((< |degy| |msi|)
394                           (EXIT
395                            (PROGN
396                             (LETT #1# (|IDPO;add_si| |x| |y| $))
397                             (GO #2=#:G596)))))))
398                       (EXIT (|IDPO;add_gen| |x| |y| $))))))
399          #2# (EXIT #1#))))
400
401(SDEFUN |IDPO;+;3$;28| ((|x| $) (|y| $) ($ $)) (|IDPO;add_gen| |x| |y| $))
402
403(SDEFUN |IDPO;*;Nni2$;29| ((|n| |NonNegativeInteger|) (|x| $) ($ $))
404        (SPROG ((|a| (A)) (#1=#:G602 NIL) (|u| NIL) (#2=#:G601 NIL))
405               (SEQ
406                (COND ((EQL |n| 0) (|spadConstant| $ 23)) ((EQL |n| 1) |x|)
407                      ('T
408                       (PROGN
409                        (LETT #2# NIL)
410                        (SEQ (LETT |u| NIL) (LETT #1# |x|) G190
411                             (COND
412                              ((OR (ATOM #1#) (PROGN (LETT |u| (CAR #1#)) NIL))
413                               (GO G191)))
414                             (SEQ
415                              (EXIT
416                               (COND
417                                ((SPADCALL
418                                  (LETT |a|
419                                        (SPADCALL |n| (QCDR |u|)
420                                                  (QREFELT $ 55)))
421                                  (|spadConstant| $ 24) (QREFELT $ 30))
422                                 (LETT #2#
423                                       (CONS (CONS (QCAR |u|) |a|) #2#))))))
424                             (LETT #1# (CDR #1#)) (GO G190) G191
425                             (EXIT (NREVERSE #2#)))))))))
426
427(SDEFUN |IDPO;-;2$;30| ((|x| $) ($ $))
428        (SPROG ((#1=#:G606 NIL) (|u| NIL) (#2=#:G605 NIL))
429               (SEQ
430                (PROGN
431                 (LETT #2# NIL)
432                 (SEQ (LETT |u| NIL) (LETT #1# |x|) G190
433                      (COND
434                       ((OR (ATOM #1#) (PROGN (LETT |u| (CAR #1#)) NIL))
435                        (GO G191)))
436                      (SEQ
437                       (EXIT
438                        (LETT #2#
439                              (CONS
440                               (CONS (QCAR |u|)
441                                     (SPADCALL (QCDR |u|) (QREFELT $ 57)))
442                               #2#))))
443                      (LETT #1# (CDR #1#)) (GO G190) G191
444                      (EXIT (NREVERSE #2#)))))))
445
446(SDEFUN |IDPO;*;I2$;31| ((|n| |Integer|) (|x| $) ($ $))
447        (SPROG ((|a| (A)) (#1=#:G610 NIL) (|u| NIL) (#2=#:G609 NIL))
448               (SEQ
449                (COND ((EQL |n| 0) (|spadConstant| $ 23)) ((EQL |n| 1) |x|)
450                      ('T
451                       (PROGN
452                        (LETT #2# NIL)
453                        (SEQ (LETT |u| NIL) (LETT #1# |x|) G190
454                             (COND
455                              ((OR (ATOM #1#) (PROGN (LETT |u| (CAR #1#)) NIL))
456                               (GO G191)))
457                             (SEQ
458                              (EXIT
459                               (COND
460                                ((SPADCALL
461                                  (LETT |a|
462                                        (SPADCALL |n| (QCDR |u|)
463                                                  (QREFELT $ 60)))
464                                  (|spadConstant| $ 24) (QREFELT $ 30))
465                                 (LETT #2#
466                                       (CONS (CONS (QCAR |u|) |a|) #2#))))))
467                             (LETT #1# (CDR #1#)) (GO G190) G191
468                             (EXIT (NREVERSE #2#)))))))))
469
470(SDEFUN |IDPO;-;3$;32| ((|x| $) (|y| $) ($ $))
471        (SPROG
472         ((|res| (|Rep|)) (|end| ($)) (|endcell| (|Rep|)) (|newcell| ($))
473          (|r| (A)))
474         (SEQ
475          (COND ((NULL |x|) (SPADCALL |y| (QREFELT $ 58))) ((NULL |y|) |x|)
476                (#1='T
477                 (SEQ (LETT |endcell| NIL) (LETT |res| NIL)
478                      (SEQ G190
479                           (COND
480                            ((NULL
481                              (COND ((NULL |x|) NIL) ('T (NULL (NULL |y|)))))
482                             (GO G191)))
483                           (SEQ (LETT |newcell| NIL)
484                                (COND
485                                 ((SPADCALL (QCAR (|SPADfirst| |x|))
486                                            (QCAR (|SPADfirst| |y|))
487                                            (QREFELT $ 35))
488                                  (SEQ
489                                   (LETT |r|
490                                         (SPADCALL (QCDR (|SPADfirst| |x|))
491                                                   (QCDR (|SPADfirst| |y|))
492                                                   (QREFELT $ 62)))
493                                   (COND
494                                    ((NULL (SPADCALL |r| (QREFELT $ 51)))
495                                     (LETT |newcell|
496                                           (CONS
497                                            (CONS (QCAR (|SPADfirst| |x|)) |r|)
498                                            NIL))))
499                                   (LETT |x| (CDR |x|))
500                                   (EXIT (LETT |y| (CDR |y|)))))
501                                 ((SPADCALL (QCAR (|SPADfirst| |y|))
502                                            (QCAR (|SPADfirst| |x|))
503                                            (QREFELT $ 36))
504                                  (SEQ
505                                   (LETT |newcell|
506                                         (CONS (|SPADfirst| |x|) NIL))
507                                   (EXIT (LETT |x| (CDR |x|)))))
508                                 ('T
509                                  (SEQ
510                                   (LETT |newcell|
511                                         (CONS
512                                          (CONS (QCAR (|SPADfirst| |y|))
513                                                (SPADCALL
514                                                 (QCDR (|SPADfirst| |y|))
515                                                 (QREFELT $ 57)))
516                                          NIL))
517                                   (EXIT (LETT |y| (CDR |y|))))))
518                                (EXIT
519                                 (COND
520                                  ((NULL (NULL |newcell|))
521                                   (COND
522                                    ((NULL |endcell|)
523                                     (SEQ (LETT |res| |newcell|)
524                                          (EXIT (LETT |endcell| |res|))))
525                                    ('T
526                                     (SEQ (RPLACD |endcell| |newcell|)
527                                          (EXIT
528                                           (LETT |endcell| |newcell|)))))))))
529                           NIL (GO G190) G191 (EXIT NIL))
530                      (COND
531                       ((NULL |x|) (LETT |end| (SPADCALL |y| (QREFELT $ 58))))
532                       (#1# (LETT |end| |x|)))
533                      (COND ((NULL |res|) (LETT |res| |end|))
534                            (#1# (RPLACD |endcell| |end|)))
535                      (EXIT |res|)))))))
536
537(SDEFUN |IDPO;subtractIfCan;2$U;33| ((|x| $) (|y| $) ($ |Union| $ #1="failed"))
538        (SPROG
539         ((|res| (|Rep|)) (|endcell| (|Rep|)) (|newcell| ($)) (|r| (A))
540          (#2=#:G663 NIL) (|ru| (|Union| A #1#)))
541         (SEQ
542          (EXIT
543           (COND ((NULL |y|) (CONS 0 |x|))
544                 (#3='T
545                  (SEQ (LETT |endcell| NIL) (LETT |res| NIL)
546                       (SEQ G190
547                            (COND
548                             ((NULL
549                               (COND ((NULL |x|) NIL) ('T (NULL (NULL |y|)))))
550                              (GO G191)))
551                            (SEQ (LETT |newcell| NIL)
552                                 (COND
553                                  ((SPADCALL (QCAR (|SPADfirst| |x|))
554                                             (QCAR (|SPADfirst| |y|))
555                                             (QREFELT $ 35))
556                                   (SEQ
557                                    (LETT |ru|
558                                          (SPADCALL (QCDR (|SPADfirst| |x|))
559                                                    (QCDR (|SPADfirst| |y|))
560                                                    (QREFELT $ 65)))
561                                    (EXIT
562                                     (COND
563                                      ((QEQCAR |ru| 1)
564                                       (PROGN
565                                        (LETT #2# (CONS 1 "failed"))
566                                        (GO #4=#:G662)))
567                                      ('T
568                                       (SEQ (LETT |r| (QCDR |ru|))
569                                            (COND
570                                             ((NULL
571                                               (SPADCALL |r| (QREFELT $ 51)))
572                                              (LETT |newcell|
573                                                    (CONS
574                                                     (CONS
575                                                      (QCAR (|SPADfirst| |x|))
576                                                      |r|)
577                                                     NIL))))
578                                            (LETT |x| (CDR |x|))
579                                            (EXIT (LETT |y| (CDR |y|)))))))))
580                                  ((SPADCALL (QCAR (|SPADfirst| |y|))
581                                             (QCAR (|SPADfirst| |x|))
582                                             (QREFELT $ 36))
583                                   (SEQ
584                                    (LETT |newcell|
585                                          (CONS (|SPADfirst| |x|) NIL))
586                                    (EXIT (LETT |x| (CDR |x|)))))
587                                  ('T
588                                   (SEQ
589                                    (LETT |ru|
590                                          (SPADCALL (|spadConstant| $ 24)
591                                                    (QCDR (|SPADfirst| |y|))
592                                                    (QREFELT $ 65)))
593                                    (EXIT
594                                     (COND
595                                      ((QEQCAR |ru| 1)
596                                       (PROGN
597                                        (LETT #2# (CONS 1 "failed"))
598                                        (GO #4#)))
599                                      ('T
600                                       (SEQ (LETT |r| (QCDR |ru|))
601                                            (LETT |newcell|
602                                                  (CONS
603                                                   (CONS
604                                                    (QCAR (|SPADfirst| |y|))
605                                                    |r|)
606                                                   NIL))
607                                            (EXIT (LETT |y| (CDR |y|))))))))))
608                                 (EXIT
609                                  (COND
610                                   ((NULL (NULL |newcell|))
611                                    (COND
612                                     ((NULL |endcell|)
613                                      (SEQ (LETT |res| |newcell|)
614                                           (EXIT (LETT |endcell| |res|))))
615                                     ('T
616                                      (SEQ (RPLACD |endcell| |newcell|)
617                                           (EXIT
618                                            (LETT |endcell| |newcell|)))))))))
619                            NIL (GO G190) G191 (EXIT NIL))
620                       (EXIT
621                        (COND
622                         ((NULL |x|)
623                          (SEQ
624                           (SEQ G190
625                                (COND ((NULL (NULL (NULL |y|))) (GO G191)))
626                                (SEQ
627                                 (LETT |ru|
628                                       (SPADCALL (|spadConstant| $ 24)
629                                                 (QCDR (|SPADfirst| |y|))
630                                                 (QREFELT $ 65)))
631                                 (EXIT
632                                  (COND
633                                   ((QEQCAR |ru| 1)
634                                    (PROGN
635                                     (LETT #2# (CONS 1 "failed"))
636                                     (GO #4#)))
637                                   ('T
638                                    (SEQ (LETT |r| (QCDR |ru|))
639                                         (LETT |newcell|
640                                               (CONS
641                                                (CONS (QCAR (|SPADfirst| |y|))
642                                                      |r|)
643                                                NIL))
644                                         (LETT |y| (CDR |y|))
645                                         (EXIT
646                                          (COND
647                                           ((NULL |endcell|)
648                                            (SEQ (LETT |res| |newcell|)
649                                                 (EXIT
650                                                  (LETT |endcell| |res|))))
651                                           ('T
652                                            (SEQ (RPLACD |endcell| |newcell|)
653                                                 (EXIT
654                                                  (LETT |endcell|
655                                                        |newcell|)))))))))))
656                                NIL (GO G190) G191 (EXIT NIL))
657                           (EXIT (CONS 0 |res|))))
658                         (#3#
659                          (SEQ
660                           (COND ((NULL |res|) (LETT |res| |x|))
661                                 (#3# (RPLACD |endcell| |x|)))
662                           (EXIT (CONS 0 |res|))))))))))
663          #4# (EXIT #2#))))
664
665(SDEFUN |IDPO;<;2$B;34| ((|x| $) (|y| $) ($ |Boolean|))
666        (SPADCALL |x| |y| (QREFELT $ 37)))
667
668(SDEFUN |IDPO;sup;3$;35| ((|x| $) (|y| $) ($ $))
669        (SPROG ((|u| (A)))
670               (SEQ
671                (COND ((NULL |y|) |x|) ((NULL |x|) |y|)
672                      ((SPADCALL (QCAR (|SPADfirst| |x|))
673                                 (QCAR (|SPADfirst| |y|)) (QREFELT $ 68))
674                       (CONS (|SPADfirst| |y|)
675                             (SPADCALL |x| (CDR |y|) (QREFELT $ 69))))
676                      ((SPADCALL (QCAR (|SPADfirst| |x|))
677                                 (QCAR (|SPADfirst| |y|)) (QREFELT $ 70))
678                       (CONS (|SPADfirst| |x|)
679                             (SPADCALL (CDR |x|) |y| (QREFELT $ 69))))
680                      ('T
681                       (SEQ
682                        (LETT |u|
683                              (SPADCALL (QCDR (|SPADfirst| |x|))
684                                        (QCDR (|SPADfirst| |y|))
685                                        (QREFELT $ 71)))
686                        (EXIT
687                         (CONS (CONS (QCAR (|SPADfirst| |x|)) |u|)
688                               (SPADCALL (CDR |x|) (CDR |y|)
689                                         (QREFELT $ 69))))))))))
690
691(PUT '|IDPO;construct;L$;36| '|SPADreplace| '(XLAM (|lx|) |lx|))
692
693(SDEFUN |IDPO;construct;L$;36|
694        ((|lx| |List| (|Record| (|:| |k| S) (|:| |c| A))) ($ $)) |lx|)
695
696(PUT '|IDPO;Zero;$;37| '|SPADreplace| '(XLAM NIL NIL))
697
698(SDEFUN |IDPO;Zero;$;37| (($ $)) NIL)
699
700(SDEFUN |IDPO;do_copy| ((|xr| |Rep|) ($ |Rep|))
701        (SPROG ((|res| ($)) (#1=#:G678 NIL) (|t| NIL))
702               (SEQ (LETT |res| NIL)
703                    (SEQ (LETT |t| NIL) (LETT #1# |xr|) G190
704                         (COND
705                          ((OR (ATOM #1#) (PROGN (LETT |t| (CAR #1#)) NIL))
706                           (GO G191)))
707                         (SEQ
708                          (EXIT
709                           (LETT |res|
710                                 (CONS (CONS (QCAR |t|) (QCDR |t|)) |res|))))
711                         (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
712                    (EXIT (NREVERSE |res|)))))
713
714(SDEFUN |IDPO;+;3$;39| ((|x| $) (|y| $) ($ $))
715        (SPROG
716         ((|xr| (|Rep|)) (|cxr| (|Rep|)) (|pxr| (|Rep|))
717          (|first_time| #1=(|Boolean|)) (|done| #1#) (|nxr| (|Rep|)) (|tc| (A))
718          (|t| (|Record| (|:| |k| S) (|:| |c| A))) (|sc| (A)) (|sk| (S))
719          (#2=#:G692 NIL) (|s| NIL) (|yr| (|Rep|)) (|xxr| (|Rep|)))
720         (SEQ (LETT |xxr| |x|) (LETT |yr| |y|)
721              (EXIT
722               (COND ((NULL |xxr|) |y|) ((NULL |yr|) |x|)
723                     ((> (LENGTH |yr|) (LENGTH |xxr|))
724                      (SPADCALL |y| |x| (QREFELT $ 54)))
725                     ('T
726                      (SEQ (LETT |xr| (|IDPO;do_copy| |xxr| $))
727                           (SEQ (LETT |s| NIL) (LETT #2# |yr|) G190
728                                (COND
729                                 ((OR (ATOM #2#)
730                                      (PROGN (LETT |s| (CAR #2#)) NIL))
731                                  (GO G191)))
732                                (SEQ (LETT |sk| (QCAR |s|))
733                                     (LETT |sc| (QCDR |s|)) (LETT |done| NIL)
734                                     (LETT |first_time| 'T) (LETT |nxr| |xr|)
735                                     (LETT |cxr| |xr|)
736                                     (SEQ G190
737                                          (COND
738                                           ((NULL
739                                             (NULL (OR (NULL |cxr|) |done|)))
740                                            (GO G191)))
741                                          (SEQ (LETT |t| (|SPADfirst| |cxr|))
742                                               (COND
743                                                ((SPADCALL (QCAR |t|) |sk|
744                                                           (QREFELT $ 35))
745                                                 (SEQ
746                                                  (LETT |tc|
747                                                        (SPADCALL (QCDR |t|)
748                                                                  |sc|
749                                                                  (QREFELT $
750                                                                           50)))
751                                                  (COND
752                                                   ((SPADCALL |tc|
753                                                              (|spadConstant| $
754                                                                              24)
755                                                              (QREFELT $ 25))
756                                                    (COND
757                                                     (|first_time|
758                                                      (LETT |nxr| (CDR |cxr|)))
759                                                     ('T
760                                                      (|qset_rest| |pxr|
761                                                                   (CDR
762                                                                    |cxr|)))))
763                                                   ('T
764                                                    (PROGN
765                                                     (RPLACD |t| |tc|)
766                                                     (QCDR |t|))))
767                                                  (EXIT (LETT |done| 'T)))))
768                                               (LETT |first_time| NIL)
769                                               (LETT |pxr| |cxr|)
770                                               (EXIT (LETT |cxr| (CDR |cxr|))))
771                                          NIL (GO G190) G191 (EXIT NIL))
772                                     (LETT |xr| |nxr|)
773                                     (EXIT
774                                      (COND
775                                       ((NULL |done|)
776                                        (LETT |xr|
777                                              (CONS (CONS |sk| |sc|) |xr|))))))
778                                (LETT #2# (CDR #2#)) (GO G190) G191 (EXIT NIL))
779                           (EXIT |xr|))))))))
780
781(SDEFUN |IDPO;=;2$B;40| ((|x| $) (|y| $) ($ |Boolean|))
782        (SPROG
783         ((#1=#:G702 NIL) (|done| (|Boolean|)) (#2=#:G704 NIL) (|t| NIL)
784          (|sc| (A)) (|sk| (S)) (#3=#:G703 NIL) (|s| NIL) (|yr| (|Rep|))
785          (|xr| (|Rep|)))
786         (SEQ
787          (EXIT
788           (SEQ (LETT |xr| |x|) (LETT |yr| |y|)
789                (EXIT
790                 (COND
791                  ((SPADCALL (LENGTH |xr|) (LENGTH |yr|) (QREFELT $ 72)) NIL)
792                  ('T
793                   (SEQ
794                    (SEQ (LETT |s| NIL) (LETT #3# |yr|) G190
795                         (COND
796                          ((OR (ATOM #3#) (PROGN (LETT |s| (CAR #3#)) NIL))
797                           (GO G191)))
798                         (SEQ (LETT |sk| (QCAR |s|)) (LETT |sc| (QCDR |s|))
799                              (LETT |done| NIL)
800                              (SEQ (LETT |t| NIL) (LETT #2# |xr|) G190
801                                   (COND
802                                    ((OR (ATOM #2#)
803                                         (PROGN (LETT |t| (CAR #2#)) NIL)
804                                         (NULL (NULL |done|)))
805                                     (GO G191)))
806                                   (SEQ
807                                    (EXIT
808                                     (COND
809                                      ((SPADCALL (QCAR |t|) |sk|
810                                                 (QREFELT $ 35))
811                                       (COND
812                                        ((SPADCALL (QCDR |t|) |sc|
813                                                   (QREFELT $ 25))
814                                         (LETT |done| 'T))
815                                        ('T
816                                         (PROGN
817                                          (LETT #1# NIL)
818                                          (GO #4=#:G701))))))))
819                                   (LETT #2# (CDR #2#)) (GO G190) G191
820                                   (EXIT NIL))
821                              (EXIT
822                               (COND
823                                ((NULL |done|)
824                                 (PROGN (LETT #1# NIL) (GO #4#))))))
825                         (LETT #3# (CDR #3#)) (GO G190) G191 (EXIT NIL))
826                    (EXIT 'T)))))))
827          #4# (EXIT #1#))))
828
829(SDEFUN |IDPO;subtractIfCan;2$U;41| ((|x| $) (|y| $) ($ |Union| $ #1="failed"))
830        (SPROG
831         ((|xr| (|Rep|)) (#2=#:G724 NIL) (|tcu| (|Union| A #1#))
832          (|cxr| (|Rep|)) (|pxr| (|Rep|)) (|first_time| #3=(|Boolean|))
833          (|done| #3#) (|nxr| (|Rep|)) (|tc| (A))
834          (|t| (|Record| (|:| |k| S) (|:| |c| A))) (|sc| (A)) (|sk| (S))
835          (#4=#:G725 NIL) (|s| NIL) (|yr| (|Rep|)))
836         (SEQ
837          (EXIT
838           (SEQ (LETT |yr| |y|)
839                (EXIT
840                 (COND ((NULL |yr|) (CONS 0 |x|))
841                       ('T
842                        (SEQ (LETT |xr| (|IDPO;do_copy| |x| $))
843                             (SEQ (LETT |s| NIL) (LETT #4# |yr|) G190
844                                  (COND
845                                   ((OR (ATOM #4#)
846                                        (PROGN (LETT |s| (CAR #4#)) NIL))
847                                    (GO G191)))
848                                  (SEQ (LETT |sk| (QCAR |s|))
849                                       (LETT |sc| (QCDR |s|)) (LETT |done| NIL)
850                                       (LETT |first_time| 'T) (LETT |nxr| |xr|)
851                                       (LETT |cxr| |xr|)
852                                       (SEQ G190
853                                            (COND
854                                             ((NULL
855                                               (NULL (OR (NULL |cxr|) |done|)))
856                                              (GO G191)))
857                                            (SEQ (LETT |t| (|SPADfirst| |cxr|))
858                                                 (COND
859                                                  ((SPADCALL (QCAR |t|) |sk|
860                                                             (QREFELT $ 35))
861                                                   (SEQ
862                                                    (LETT |tcu|
863                                                          (SPADCALL (QCDR |t|)
864                                                                    |sc|
865                                                                    (QREFELT $
866                                                                             65)))
867                                                    (EXIT
868                                                     (COND
869                                                      ((QEQCAR |tcu| 1)
870                                                       (PROGN
871                                                        (LETT #2#
872                                                              (CONS 1
873                                                                    "failed"))
874                                                        (GO #5=#:G723)))
875                                                      ('T
876                                                       (SEQ
877                                                        (LETT |tc|
878                                                              (QCDR |tcu|))
879                                                        (COND
880                                                         ((SPADCALL |tc|
881                                                                    (|spadConstant|
882                                                                     $ 24)
883                                                                    (QREFELT $
884                                                                             25))
885                                                          (COND
886                                                           (|first_time|
887                                                            (LETT |nxr|
888                                                                  (CDR |cxr|)))
889                                                           ('T
890                                                            (|qset_rest| |pxr|
891                                                                         (CDR
892                                                                          |cxr|)))))
893                                                         ('T
894                                                          (PROGN
895                                                           (RPLACD |t| |tc|)
896                                                           (QCDR |t|))))
897                                                        (EXIT
898                                                         (LETT |done|
899                                                               'T)))))))))
900                                                 (LETT |first_time| NIL)
901                                                 (LETT |pxr| |cxr|)
902                                                 (EXIT
903                                                  (LETT |cxr| (CDR |cxr|))))
904                                            NIL (GO G190) G191 (EXIT NIL))
905                                       (LETT |xr| |nxr|)
906                                       (EXIT
907                                        (COND
908                                         ((NULL |done|)
909                                          (SEQ
910                                           (LETT |tcu|
911                                                 (SPADCALL
912                                                  (|spadConstant| $ 24) |sc|
913                                                  (QREFELT $ 65)))
914                                           (EXIT
915                                            (COND
916                                             ((QEQCAR |tcu| 1)
917                                              (PROGN
918                                               (LETT #2# (CONS 1 "failed"))
919                                               (GO #5#)))
920                                             ('T
921                                              (LETT |xr|
922                                                    (CONS
923                                                     (CONS |sk| (QCDR |tcu|))
924                                                     |xr|))))))))))
925                                  (LETT #4# (CDR #4#)) (GO G190) G191
926                                  (EXIT NIL))
927                             (EXIT (CONS 0 |xr|))))))))
928          #5# (EXIT #2#))))
929
930(SDEFUN |IDPO;-;2$;42| ((|x| $) ($ $)) (SPADCALL (ELT $ 57) |x| (QREFELT $ 28)))
931
932(DECLAIM (NOTINLINE |IndexedDirectProductObject;|))
933
934(DEFUN |IndexedDirectProductObject| (&REST #1=#:G729)
935  (SPROG NIL
936         (PROG (#2=#:G730)
937           (RETURN
938            (COND
939             ((LETT #2#
940                    (|lassocShiftWithFunction| (|devaluateList| #1#)
941                                               (HGET |$ConstructorCache|
942                                                     '|IndexedDirectProductObject|)
943                                               '|domainEqualList|))
944              (|CDRwithIncrement| #2#))
945             ('T
946              (UNWIND-PROTECT
947                  (PROG1 (APPLY (|function| |IndexedDirectProductObject;|) #1#)
948                    (LETT #2# T))
949                (COND
950                 ((NOT #2#)
951                  (HREM |$ConstructorCache|
952                        '|IndexedDirectProductObject|))))))))))
953
954(DEFUN |IndexedDirectProductObject;| (|#1| |#2|)
955  (SPROG
956   ((|pv$| NIL) (#1=#:G728 NIL) ($ NIL) (|dv$| NIL) (DV$2 NIL) (DV$1 NIL))
957   (PROGN
958    (LETT DV$1 (|devaluate| |#1|))
959    (LETT DV$2 (|devaluate| |#2|))
960    (LETT |dv$| (LIST '|IndexedDirectProductObject| DV$1 DV$2))
961    (LETT $ (GETREFV 75))
962    (QSETREFV $ 0 |dv$|)
963    (QSETREFV $ 3
964              (LETT |pv$|
965                    (|buildPredVector| 0 0
966                                       (LIST
967                                        (|HasCategory| |#1| '(|AbelianGroup|))
968                                        (AND
969                                         (|HasCategory| |#1|
970                                                        '(|OrderedAbelianMonoidSup|))
971                                         (|HasCategory| |#2| '(|OrderedSet|)))
972                                        (OR
973                                         (AND
974                                          (|HasCategory| |#1|
975                                                         '(|OrderedAbelianMonoid|))
976                                          (|HasCategory| |#2| '(|OrderedSet|)))
977                                         (AND
978                                          (|HasCategory| |#1|
979                                                         '(|OrderedAbelianMonoidSup|))
980                                          (|HasCategory| |#2|
981                                                         '(|OrderedSet|))))
982                                        (OR
983                                         (|HasCategory| |#1| '(|AbelianGroup|))
984                                         (|HasCategory| |#1|
985                                                        '(|CancellationAbelianMonoid|)))
986                                        (OR
987                                         (|HasCategory| |#1| '(|AbelianGroup|))
988                                         (|HasCategory| |#1|
989                                                        '(|AbelianMonoid|))
990                                         (|HasCategory| |#1|
991                                                        '(|CancellationAbelianMonoid|)))
992                                        (LETT #1#
993                                              (|HasCategory| |#2|
994                                                             '(|Comparable|)))
995                                        (OR
996                                         (AND
997                                          (|HasCategory| |#1| '(|Comparable|))
998                                          #1#)
999                                         (AND
1000                                          (|HasCategory| |#1| '(|Comparable|))
1001                                          (|HasCategory| |#2| '(|OrderedSet|)))
1002                                         (AND
1003                                          (|HasCategory| |#1|
1004                                                         '(|OrderedAbelianMonoid|))
1005                                          (|HasCategory| |#2| '(|OrderedSet|)))
1006                                         (AND
1007                                          (|HasCategory| |#1|
1008                                                         '(|OrderedAbelianMonoidSup|))
1009                                          (|HasCategory| |#2|
1010                                                         '(|OrderedSet|))))
1011                                        (OR
1012                                         (|HasCategory| |#1|
1013                                                        '(|AbelianMonoid|))
1014                                         (AND
1015                                          (|HasCategory| |#1| '(|Comparable|))
1016                                          #1#))
1017                                        (OR
1018                                         (|HasCategory| |#1| '(|AbelianGroup|))
1019                                         (|HasCategory| |#1|
1020                                                        '(|AbelianMonoid|))
1021                                         (|HasCategory| |#1|
1022                                                        '(|CancellationAbelianMonoid|))
1023                                         (AND
1024                                          (|HasCategory| |#1| '(|Comparable|))
1025                                          #1#)
1026                                         (AND
1027                                          (|HasCategory| |#1| '(|Comparable|))
1028                                          (|HasCategory| |#2| '(|OrderedSet|)))
1029                                         (AND
1030                                          (|HasCategory| |#1|
1031                                                         '(|OrderedAbelianMonoid|))
1032                                          (|HasCategory| |#2| '(|OrderedSet|)))
1033                                         (AND
1034                                          (|HasCategory| |#1|
1035                                                         '(|OrderedAbelianMonoidSup|))
1036                                          (|HasCategory| |#2|
1037                                                         '(|OrderedSet|))))
1038                                        (OR
1039                                         (|HasCategory| |#1|
1040                                                        '(|AbelianMonoid|))
1041                                         (AND
1042                                          (|HasCategory| |#1| '(|Comparable|))
1043                                          #1#)
1044                                         (AND
1045                                          (|HasCategory| |#1|
1046                                                         '(|OrderedAbelianMonoid|))
1047                                          (|HasCategory| |#2| '(|OrderedSet|)))
1048                                         (AND
1049                                          (|HasCategory| |#1|
1050                                                         '(|OrderedAbelianMonoidSup|))
1051                                          (|HasCategory| |#2|
1052                                                         '(|OrderedSet|))))
1053                                        (OR
1054                                         (AND
1055                                          (|HasCategory| |#1| '(|Comparable|))
1056                                          #1#)
1057                                         (AND
1058                                          (|HasCategory| |#1|
1059                                                         '(|OrderedAbelianMonoid|))
1060                                          (|HasCategory| |#2| '(|OrderedSet|)))
1061                                         (AND
1062                                          (|HasCategory| |#1|
1063                                                         '(|OrderedAbelianMonoidSup|))
1064                                          (|HasCategory| |#2|
1065                                                         '(|OrderedSet|))))
1066                                        (OR
1067                                         (|HasCategory| |#1|
1068                                                        '(|AbelianMonoid|))
1069                                         (AND
1070                                          (|HasCategory| |#1|
1071                                                         '(|OrderedAbelianMonoid|))
1072                                          (|HasCategory| |#2| '(|OrderedSet|)))
1073                                         (AND
1074                                          (|HasCategory| |#1|
1075                                                         '(|OrderedAbelianMonoidSup|))
1076                                          (|HasCategory| |#2|
1077                                                         '(|OrderedSet|))))
1078                                        (OR
1079                                         (|HasCategory| |#1|
1080                                                        '(|CancellationAbelianMonoid|))
1081                                         (AND
1082                                          (|HasCategory| |#1|
1083                                                         '(|OrderedAbelianMonoidSup|))
1084                                          (|HasCategory| |#2|
1085                                                         '(|OrderedSet|))))))))
1086    (|haddProp| |$ConstructorCache| '|IndexedDirectProductObject|
1087                (LIST DV$1 DV$2) (CONS 1 $))
1088    (|stuffDomainSlots| $)
1089    (QSETREFV $ 6 |#1|)
1090    (QSETREFV $ 7 |#2|)
1091    (SETF |pv$| (QREFELT $ 3))
1092    (QSETREFV $ 8 (|List| (|Record| (|:| |k| |#2|) (|:| |c| |#1|))))
1093    (COND
1094     ((|HasCategory| |#1| '(|AbelianMonoid|))
1095      (PROGN
1096       (QSETREFV $ 26 (CONS (|dispatchFunction| |IDPO;monomial;AS$;5|) $))
1097       (QSETREFV $ 28 (CONS (|dispatchFunction| |IDPO;map;M2$;6|) $))))
1098     ('T
1099      (PROGN
1100       (QSETREFV $ 26 (CONS (|dispatchFunction| |IDPO;monomial;AS$;7|) $))
1101       (QSETREFV $ 28 (CONS (|dispatchFunction| |IDPO;map;M2$;8|) $)))))
1102    (COND
1103     ((|testBitVector| |pv$| 6)
1104      (PROGN
1105       (QSETREFV $ 31 (CONS (|dispatchFunction| |IDPO;=;2$B;9|) $))
1106       (COND
1107        ((|HasCategory| |#1| '(|AbelianMonoid|))
1108         (PROGN
1109          (QSETREFV $ 32 (CONS (|dispatchFunction| |IDPO;reductum;2$;10|) $))
1110          (QSETREFV $ 33
1111                    (CONS (|dispatchFunction| |IDPO;leadingCoefficient;$A;11|)
1112                          $))
1113          (COND
1114           ((|HasCategory| |#1| '(|Comparable|))
1115            (PROGN
1116             (QSETREFV $ 37
1117                       (CONS (|dispatchFunction| |IDPO;smaller?;2$B;12|)
1118                             $)))))))
1119        ('T
1120         (PROGN
1121          (QSETREFV $ 32 (CONS (|dispatchFunction| |IDPO;reductum;2$;13|) $))
1122          (QSETREFV $ 33
1123                    (CONS (|dispatchFunction| |IDPO;leadingCoefficient;$A;14|)
1124                          $))
1125          (COND
1126           ((|HasCategory| |#1| '(|Comparable|))
1127            (PROGN
1128             (QSETREFV $ 37
1129                       (CONS (|dispatchFunction| |IDPO;smaller?;2$B;15|)
1130                             $))))))))
1131       (QSETREFV $ 38
1132                 (CONS (|dispatchFunction| |IDPO;leadingSupport;$S;16|) $))
1133       (QSETREFV $ 39
1134                 (CONS (|dispatchFunction| |IDPO;leadingMonomial;2$;17|) $))
1135       NIL
1136       (QSETREFV $ 42 (CONS (|dispatchFunction| |IDPO;construct;L$;19|) $))
1137       (QSETREFV $ 43
1138                 (CONS (|dispatchFunction| |IDPO;constructOrdered;L$;20|) $))
1139       (QSETREFV $ 44 (CONS (|dispatchFunction| |IDPO;leadingTerm;$R;21|) $))
1140       (QSETREFV $ 48
1141                 (CONS (|dispatchFunction| |IDPO;hashUpdate!;Hs$Hs;22|) $))
1142       (COND
1143        ((|HasCategory| |#1| '(|AbelianMonoid|))
1144         (PROGN
1145          (QSETREFV $ 23
1146                    (CONS #'|makeSpadConstant|
1147                          (LIST (|dispatchFunction| |IDPO;Zero;$;23|) $ 23)))
1148          (QSETREFV $ 49 (CONS (|dispatchFunction| |IDPO;zero?;$B;24|) $))
1149          (COND
1150           ((|domainEqual| |#2| (|NonNegativeInteger|))
1151            (PROGN
1152             (QSETREFV $ 54 (CONS (|dispatchFunction| |IDPO;+;3$;27|) $))))
1153           ('T (QSETREFV $ 54 (CONS (|dispatchFunction| |IDPO;+;3$;28|) $))))
1154          (QSETREFV $ 56 (CONS (|dispatchFunction| |IDPO;*;Nni2$;29|) $)))))
1155       (COND
1156        ((|testBitVector| |pv$| 1)
1157         (PROGN
1158          (QSETREFV $ 58 (CONS (|dispatchFunction| |IDPO;-;2$;30|) $))
1159          (QSETREFV $ 61 (CONS (|dispatchFunction| |IDPO;*;I2$;31|) $))
1160          (QSETREFV $ 63 (CONS (|dispatchFunction| |IDPO;-;3$;32|) $)))))
1161       (COND
1162        ((|HasCategory| |#1| '(|CancellationAbelianMonoid|))
1163         (QSETREFV $ 66
1164                   (CONS (|dispatchFunction| |IDPO;subtractIfCan;2$U;33|) $))))
1165       (COND
1166        ((|HasCategory| |#1| '(|OrderedAbelianMonoid|))
1167         (QSETREFV $ 67 (CONS (|dispatchFunction| |IDPO;<;2$B;34|) $))))
1168       (COND
1169        ((|HasCategory| |#2| '(|OrderedSet|))
1170         (COND
1171          ((|HasCategory| |#1| '(|OrderedAbelianMonoidSup|))
1172           (QSETREFV $ 69 (CONS (|dispatchFunction| |IDPO;sup;3$;35|) $))))))))
1173     ('T
1174      (PROGN
1175       (QSETREFV $ 42 (CONS (|dispatchFunction| |IDPO;construct;L$;36|) $))
1176       (COND
1177        ((|HasCategory| |#1| '(|AbelianMonoid|))
1178         (PROGN
1179          (QSETREFV $ 23
1180                    (CONS #'|makeSpadConstant|
1181                          (LIST (|dispatchFunction| |IDPO;Zero;$;37|) $ 23)))
1182          (QSETREFV $ 54 (CONS (|dispatchFunction| |IDPO;+;3$;39|) $))
1183          (QSETREFV $ 31 (CONS (|dispatchFunction| |IDPO;=;2$B;40|) $))
1184          (COND
1185           ((|HasCategory| |#1| '(|CancellationAbelianMonoid|))
1186            (QSETREFV $ 66
1187                      (CONS (|dispatchFunction| |IDPO;subtractIfCan;2$U;41|)
1188                            $))))
1189          (COND
1190           ((|testBitVector| |pv$| 1)
1191            (QSETREFV $ 58
1192                      (CONS (|dispatchFunction| |IDPO;-;2$;42|) $))))))))))
1193    $)))
1194
1195(MAKEPROP '|IndexedDirectProductObject| '|infovec|
1196          (LIST
1197           '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) (|local| |#2|) '|Rep|
1198              (|OutputForm|) (0 . |coerce|) (5 . |coerce|) (10 . |rarrow|)
1199              (|List| $) (16 . |bracket|) |IDPO;coerce;$Of;1|
1200              (|Record| (|:| |k| 7) (|:| |c| 6)) (|List| 16)
1201              |IDPO;listOfTerms;$L;2| (|Boolean|) |IDPO;monomial?;$B;3|
1202              (|NonNegativeInteger|) |IDPO;numberOfMonomials;$Nni;4|
1203              (21 . |Zero|) (25 . |Zero|) (29 . =) (35 . |monomial|)
1204              (|Mapping| 6 6) (41 . |map|) (47 . ~=) (53 . ~=) (59 . =)
1205              (65 . |reductum|) (70 . |leadingCoefficient|) (75 . |smaller?|)
1206              (81 . =) (87 . |smaller?|) (93 . |smaller?|)
1207              (99 . |leadingSupport|) (104 . |leadingMonomial|)
1208              (|Mapping| 19 16 16) (109 . |sort|) (115 . |construct|)
1209              (120 . |constructOrdered|) (125 . |leadingTerm|) (|HashState|)
1210              (130 . |hashUpdate!|) (136 . |hashUpdate!|) (142 . |hashUpdate!|)
1211              (148 . |zero?|) (153 . +) (159 . |zero?|) (|SingleInteger|)
1212              (164 . |smaller?|) (170 . +) (176 . *) (182 . *) (188 . -)
1213              (193 . -) (|Integer|) (198 . *) (204 . *) (210 . -) (216 . -)
1214              (|Union| $ '"failed") (222 . |subtractIfCan|)
1215              (228 . |subtractIfCan|) (234 . <) (240 . <) (246 . |sup|)
1216              (252 . >) (258 . |sup|) (264 . ~=) (|String|)
1217              (|PositiveInteger|))
1218           '#(~= 270 |zero?| 276 |sup| 281 |subtractIfCan| 287 |smaller?| 293
1219              |sample| 299 |reductum| 303 |opposite?| 308 |numberOfMonomials|
1220              314 |monomial?| 319 |monomial| 324 |min| 330 |max| 336 |map| 342
1221              |listOfTerms| 348 |leadingTerm| 353 |leadingSupport| 358
1222              |leadingMonomial| 363 |leadingCoefficient| 368 |latex| 373
1223              |hashUpdate!| 378 |hash| 384 |constructOrdered| 389 |construct|
1224              394 |coerce| 399 |Zero| 404 >= 408 > 414 = 420 <= 426 < 432 - 438
1225              + 449 * 455)
1226           'NIL
1227           (CONS (|makeByteWordVec2| 9 '(0 0 2 0 2 1 3 3 4 3 5 7 5 9 8 3 9))
1228                 (CONS
1229                  '#(NIL NIL NIL NIL NIL |AbelianGroup&| NIL NIL NIL
1230                     |OrderedSet&| |AbelianMonoid&| NIL |AbelianSemiGroup&|
1231                     |SetCategory&| NIL |PartialOrder&| |BasicType&|)
1232                  (CONS
1233                   '#((|IndexedDirectProductCategory| 6 7)
1234                      (|IndexedProductCategory| 6 7)
1235                      (|OrderedAbelianMonoidSup|) (|AbelianProductCategory| 6)
1236                      (|OrderedCancellationAbelianMonoid|) (|AbelianGroup|)
1237                      (|OrderedAbelianMonoid|) (|OrderedAbelianSemiGroup|)
1238                      (|CancellationAbelianMonoid|) (|OrderedSet|)
1239                      (|AbelianMonoid|) (|Comparable|) (|AbelianSemiGroup|)
1240                      (|SetCategory|) (|CoercibleTo| 9) (|PartialOrder|)
1241                      (|BasicType|))
1242                   (|makeByteWordVec2| 74
1243                                       '(1 7 9 0 10 1 6 9 0 11 2 9 0 0 0 12 1 9
1244                                         0 13 14 0 0 0 23 0 6 0 24 2 6 19 0 0
1245                                         25 2 0 0 6 7 26 2 0 0 27 0 28 2 7 19 0
1246                                         0 29 2 6 19 0 0 30 2 0 19 0 0 31 1 0 0
1247                                         0 32 1 0 6 0 33 2 6 19 0 0 34 2 7 19 0
1248                                         0 35 2 7 19 0 0 36 2 0 19 0 0 37 1 0 7
1249                                         0 38 1 0 0 0 39 2 8 0 40 0 41 1 0 0 17
1250                                         42 1 0 0 17 43 1 0 16 0 44 2 7 45 45 0
1251                                         46 2 6 45 45 0 47 2 0 45 45 0 48 1 0
1252                                         19 0 49 2 6 0 0 0 50 1 6 19 0 51 2 52
1253                                         19 0 0 53 2 0 0 0 0 54 2 6 0 21 0 55 2
1254                                         0 0 21 0 56 1 6 0 0 57 1 0 0 0 58 2 6
1255                                         0 59 0 60 2 0 0 59 0 61 2 6 0 0 0 62 2
1256                                         0 0 0 0 63 2 6 64 0 0 65 2 0 64 0 0 66
1257                                         2 0 19 0 0 67 2 7 19 0 0 68 2 0 0 0 0
1258                                         69 2 7 19 0 0 70 2 6 0 0 0 71 2 21 19
1259                                         0 0 72 2 10 19 0 0 1 1 12 19 0 49 2 2
1260                                         0 0 0 69 2 13 64 0 0 66 2 11 19 0 0 37
1261                                         0 12 0 1 1 6 0 0 32 2 12 19 0 0 1 1 0
1262                                         21 0 22 1 0 19 0 20 2 0 0 6 7 26 2 3 0
1263                                         0 0 1 2 3 0 0 0 1 2 0 0 27 0 28 1 0 17
1264                                         0 18 1 6 16 0 44 1 6 7 0 38 1 6 0 0 39
1265                                         1 6 6 0 33 1 10 73 0 1 2 10 45 45 0 48
1266                                         1 10 52 0 1 1 6 0 17 43 1 0 0 17 42 1
1267                                         10 9 0 15 0 12 0 23 2 3 19 0 0 1 2 3
1268                                         19 0 0 1 2 10 19 0 0 31 2 3 19 0 0 1 2
1269                                         3 19 0 0 67 1 1 0 0 58 2 1 0 0 0 63 2
1270                                         12 0 0 0 54 2 12 0 21 0 56 2 12 0 74 0
1271                                         1 2 1 0 59 0 61)))))
1272           '|lookupComplete|))
1273