1
2(SDEFUN |SGCF;numberOfImproperPartitionsInternal|
3        ((|n| |Integer|) (|m| |Integer|) (|cm| |Integer|) ($ |Integer|))
4        (SPROG ((|s| (|Integer|)) (#1=#:G413 NIL) (|i| NIL))
5               (SEQ
6                (COND ((EQL |n| 0) (SPADCALL |m| |cm| (QREFELT $ 8)))
7                      ('T
8                       (SEQ (COND ((EQL |cm| 0) (COND ((> |n| 0) (EXIT 0)))))
9                            (LETT |s| 0)
10                            (SEQ (LETT |i| 0) (LETT #1# (- |n| 1)) G190
11                                 (COND ((|greater_SI| |i| #1#) (GO G191)))
12                                 (SEQ
13                                  (EXIT
14                                   (LETT |s|
15                                         (+ |s|
16                                            (|SGCF;numberOfImproperPartitionsInternal|
17                                             |i| |m| (- |cm| 1) $)))))
18                                 (LETT |i| (|inc_SI| |i|)) (GO G190) G191
19                                 (EXIT NIL))
20                            (EXIT |s|)))))))
21
22(SDEFUN |SGCF;numberOfImproperPartitions;3I;2|
23        ((|n| |Integer|) (|m| |Integer|) ($ |Integer|))
24        (SPROG ((|s| (|Integer|)) (#1=#:G418 NIL) (|i| NIL) (#2=#:G417 NIL))
25               (SEQ
26                (EXIT
27                 (SEQ
28                  (COND
29                   ((OR (< |n| 0) (< |m| 1))
30                    (PROGN (LETT #2# 0) (GO #3=#:G416))))
31                  (COND
32                   ((OR (EQL |m| 1) (EQL |n| 0))
33                    (PROGN (LETT #2# 1) (GO #3#))))
34                  (LETT |s| 0)
35                  (SEQ (LETT |i| 0) (LETT #1# |n|) G190
36                       (COND ((|greater_SI| |i| #1#) (GO G191)))
37                       (SEQ
38                        (EXIT
39                         (LETT |s|
40                               (+ |s|
41                                  (SPADCALL (- |n| |i|) (- |m| 1)
42                                            (QREFELT $ 9))))))
43                       (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
44                  (EXIT |s|)))
45                #3# (EXIT #2#))))
46
47(SDEFUN |SGCF;unrankImproperPartitions0;3IL;3|
48        ((|n| |Integer|) (|m| |Integer|) (|k| |Integer|)
49         ($ |List| (|Integer|)))
50        (SPROG
51         ((|l| (|List| (|Integer|))) (#1=#:G427 NIL) (|s| #2=(|Integer|))
52          (|sOld| #2#) (#3=#:G429 NIL) (|y| NIL) (#4=#:G428 NIL) (|t| NIL))
53         (SEQ (LETT |l| NIL)
54              (EXIT
55               (COND
56                ((< |k| 0) (|error| "counting of partitions is started at 0"))
57                ((>= |k| (SPADCALL |n| |m| (QREFELT $ 9)))
58                 (|error| "there are not so many partitions"))
59                ('T
60                 (SEQ
61                  (SEQ (LETT |t| 0) (LETT #4# (- |m| 2)) G190
62                       (COND ((|greater_SI| |t| #4#) (GO G191)))
63                       (SEQ (LETT |s| 0)
64                            (SEQ
65                             (EXIT
66                              (SEQ (LETT |y| 0) (LETT #3# |n|) G190
67                                   (COND ((|greater_SI| |y| #3#) (GO G191)))
68                                   (SEQ (LETT |sOld| |s|)
69                                        (LETT |s|
70                                              (+ |s|
71                                                 (SPADCALL (- |n| |y|)
72                                                           (- (- |m| |t|) 1)
73                                                           (QREFELT $ 9))))
74                                        (EXIT
75                                         (COND
76                                          ((> |s| |k|)
77                                           (PROGN
78                                            (LETT #1# |$NoValue|)
79                                            (GO #5=#:G420))))))
80                                   (LETT |y| (|inc_SI| |y|)) (GO G190) G191
81                                   (EXIT NIL)))
82                             #5# (EXIT #1#))
83                            (LETT |l|
84                                  (SPADCALL |l| (SPADCALL |y| (QREFELT $ 11))
85                                            (QREFELT $ 12)))
86                            (LETT |k| (- |k| |sOld|))
87                            (EXIT (LETT |n| (- |n| |y|))))
88                       (LETT |t| (|inc_SI| |t|)) (GO G190) G191 (EXIT NIL))
89                  (LETT |l|
90                        (SPADCALL |l| (SPADCALL |n| (QREFELT $ 11))
91                                  (QREFELT $ 12)))
92                  (EXIT |l|))))))))
93
94(SDEFUN |SGCF;unrankImproperPartitions1;3IL;4|
95        ((|n| |Integer|) (|m| . #1=(|Integer|)) (|k| |Integer|)
96         ($ |List| (|Integer|)))
97        (SPROG
98         ((#2=#:G442 NIL) (|i| NIL) (|nonZeroPos| (|List| (|Integer|)))
99          (|nonZeros| (|List| (|Integer|))) (#3=#:G441 NIL)
100          (|s| #4=(|Integer|)) (|sOld| #4#) (|y| NIL) (|cm| #1#)
101          (|partition| (|Vector| (|Integer|))) (#5=#:G431 NIL))
102         (SEQ (LETT |nonZeros| NIL)
103              (LETT |partition|
104                    (MAKEARR1
105                     (PROG1 (LETT #5# |m|)
106                       (|check_subtype2| (>= #5# 0) '(|NonNegativeInteger|)
107                                         '(|Integer|) #5#))
108                     0))
109              (EXIT
110               (COND
111                ((OR (< |k| 0) (>= |k| (SPADCALL |n| |m| (QREFELT $ 9))))
112                 |nonZeros|)
113                ('T
114                 (SEQ (LETT |cm| |m|)
115                      (SEQ G190
116                           (COND
117                            ((NULL (SPADCALL |n| 0 (QREFELT $ 15))) (GO G191)))
118                           (SEQ (LETT |s| 0) (LETT |cm| (- |cm| 1))
119                                (SEQ
120                                 (EXIT
121                                  (SEQ (LETT |y| |n|) G190
122                                       (COND ((< |y| 1) (GO G191)))
123                                       (SEQ (LETT |sOld| |s|)
124                                            (LETT |s|
125                                                  (+ |s|
126                                                     (|SGCF;numberOfImproperPartitionsInternal|
127                                                      (- |n| |y|) |m| |cm| $)))
128                                            (EXIT
129                                             (COND
130                                              ((> |s| |k|)
131                                               (PROGN
132                                                (LETT #3# |$NoValue|)
133                                                (GO #6=#:G433))))))
134                                       (LETT |y| (+ |y| -1)) (GO G190) G191
135                                       (EXIT NIL)))
136                                 #6# (EXIT #3#))
137                                (LETT |nonZeros|
138                                      (SPADCALL |nonZeros|
139                                                (SPADCALL |y| (QREFELT $ 11))
140                                                (QREFELT $ 12)))
141                                (LETT |k| (- |k| |sOld|))
142                                (EXIT (LETT |n| (- |n| |y|))))
143                           NIL (GO G190) G191 (EXIT NIL))
144                      (LETT |nonZeroPos|
145                            (REVERSE
146                             (SPADCALL |m| (- |m| |cm|) |k| (QREFELT $ 16))))
147                      (SEQ (LETT |i| 1) (LETT #2# (- |m| |cm|)) G190
148                           (COND ((|greater_SI| |i| #2#) (GO G191)))
149                           (SEQ
150                            (EXIT
151                             (SPADCALL |partition|
152                                       (+ 1
153                                          (SPADCALL |nonZeroPos| |i|
154                                                    (QREFELT $ 17)))
155                                       (SPADCALL |nonZeros| |i| (QREFELT $ 17))
156                                       (QREFELT $ 19))))
157                           (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
158                      (EXIT (SPADCALL |partition| (QREFELT $ 20))))))))))
159
160(SDEFUN |SGCF;subSet;3IL;5|
161        ((|n| |Integer|) (|m| . #1=(|Integer|)) (|k| . #2=(|Integer|))
162         ($ |List| (|Integer|)))
163        (SPROG
164         ((|s| #1#) (|mm| #2#) (|l| (|List| (|Integer|))) (#3=#:G451 NIL)
165          (#4=#:G453 NIL) (|y| NIL) (#5=#:G452 NIL) (|t| NIL)
166          (|bin| (|Integer|)))
167         (SEQ
168          (COND
169           ((OR (OR (OR (< |k| 0) (< |n| 0)) (< |m| 0)) (> |m| |n|))
170            (|error| "improper argument to subSet"))
171           ('T
172            (SEQ (LETT |bin| (SPADCALL |n| |m| (QREFELT $ 8)))
173                 (EXIT
174                  (COND
175                   ((>= |k| |bin|) (|error| "there are not so many subsets"))
176                   (#6='T
177                    (SEQ (LETT |l| NIL)
178                         (EXIT
179                          (COND ((EQL |n| 0) |l|)
180                                (#6#
181                                 (SEQ (LETT |mm| |k|) (LETT |s| |m|)
182                                      (SEQ (LETT |t| 0) (LETT #5# (- |m| 1))
183                                           G190
184                                           (COND
185                                            ((|greater_SI| |t| #5#) (GO G191)))
186                                           (SEQ
187                                            (SEQ
188                                             (EXIT
189                                              (SEQ (LETT |y| (- |s| 1))
190                                                   (LETT #4# (+ |n| 1)) G190
191                                                   (COND
192                                                    ((> |y| #4#) (GO G191)))
193                                                   (SEQ
194                                                    (EXIT
195                                                     (COND
196                                                      ((>
197                                                        (SPADCALL |y| |s|
198                                                                  (QREFELT $
199                                                                           8))
200                                                        |mm|)
201                                                       (PROGN
202                                                        (LETT #3# |$NoValue|)
203                                                        (GO #7=#:G444))))))
204                                                   (LETT |y| (+ |y| 1))
205                                                   (GO G190) G191 (EXIT NIL)))
206                                             #7# (EXIT #3#))
207                                            (LETT |l|
208                                                  (SPADCALL |l|
209                                                            (SPADCALL (- |y| 1)
210                                                                      (QREFELT
211                                                                       $ 11))
212                                                            (QREFELT $ 12)))
213                                            (LETT |mm|
214                                                  (- |mm|
215                                                     (SPADCALL (- |y| 1) |s|
216                                                               (QREFELT $ 8))))
217                                            (EXIT (LETT |s| (- |s| 1))))
218                                           (LETT |t| (|inc_SI| |t|)) (GO G190)
219                                           G191 (EXIT NIL))
220                                      (EXIT |l|)))))))))))))))
221
222(SDEFUN |SGCF;nextLatticePermutation;2LBL;6|
223        ((|lambda| |List| #1=(|Integer|)) (|lattP| |List| (|Integer|))
224         (|constructNotFirst| |Boolean|) ($ |List| (|Integer|)))
225        (SPROG
226         ((#2=#:G484 NIL) (|l| NIL) (|i| NIL)
227          (|rightPosition| #3=(|NonNegativeInteger|)) (#4=#:G472 NIL)
228          (|j| (|NonNegativeInteger|)) (#5=#:G483 NIL) (|ready| (|Boolean|))
229          (|leftEntry| #6=(|NonNegativeInteger|)) (#7=#:G464 NIL)
230          (|rightEntry| #6#) (#8=#:G482 NIL) (#9=#:G463 NIL)
231          (|help| (|Vector| (|Integer|))) (|n| #3#) (#10=#:G462 NIL)
232          (#11=#:G460 NIL) (#12=#:G459 #1#) (#13=#:G461 #1#) (#14=#:G481 NIL)
233          (#15=#:G400 NIL) (|rows| (|NonNegativeInteger|)) (#16=#:G455 NIL)
234          (|columns| (|NonNegativeInteger|)) (#17=#:G454 NIL)
235          (|lprime| (|List| (|Integer|))))
236         (SEQ (LETT |lprime| (SPADCALL |lambda| (QREFELT $ 23)))
237              (LETT |columns|
238                    (PROG1 (LETT #17# (|SPADfirst| |lambda|))
239                      (|check_subtype2| (>= #17# 0) '(|NonNegativeInteger|)
240                                        '(|Integer|) #17#)))
241              (LETT |rows|
242                    (PROG1 (LETT #16# (|SPADfirst| |lprime|))
243                      (|check_subtype2| (>= #16# 0) '(|NonNegativeInteger|)
244                                        '(|Integer|) #16#)))
245              (LETT |n|
246                    (PROG1
247                        (LETT #10#
248                              (PROGN
249                               (LETT #11# NIL)
250                               (SEQ (LETT #15# NIL) (LETT #14# |lambda|) G190
251                                    (COND
252                                     ((OR (ATOM #14#)
253                                          (PROGN (LETT #15# (CAR #14#)) NIL))
254                                      (GO G191)))
255                                    (SEQ
256                                     (EXIT
257                                      (PROGN
258                                       (LETT #13# #15#)
259                                       (COND (#11# (LETT #12# (+ #12# #13#)))
260                                             ('T
261                                              (PROGN
262                                               (LETT #12# #13#)
263                                               (LETT #11# 'T)))))))
264                                    (LETT #14# (CDR #14#)) (GO G190) G191
265                                    (EXIT NIL))
266                               (COND (#11# #12#) (#18='T 0))))
267                      (|check_subtype2| (>= #10# 0) '(|NonNegativeInteger|)
268                                        '(|Integer|) #10#)))
269              (EXIT
270               (COND
271                (|constructNotFirst|
272                 (SEQ (LETT |help| (MAKEARR1 |columns| 0))
273                      (LETT |rightPosition| |n|)
274                      (LETT |leftEntry|
275                            (PROG1
276                                (LETT #9#
277                                      (SPADCALL |lattP| |rightPosition|
278                                                (QREFELT $ 17)))
279                              (|check_subtype2| (>= #9# 0)
280                                                '(|NonNegativeInteger|)
281                                                '(|Integer|) #9#)))
282                      (LETT |ready| NIL)
283                      (SEQ (LETT #8# NIL) G190 (COND (#8# (GO G191)))
284                           (SEQ (LETT |rightEntry| |leftEntry|)
285                                (LETT |leftEntry|
286                                      (PROG1
287                                          (LETT #7#
288                                                (SPADCALL |lattP|
289                                                          (- |rightPosition| 1)
290                                                          (QREFELT $ 17)))
291                                        (|check_subtype2| (>= #7# 0)
292                                                          '(|NonNegativeInteger|)
293                                                          '(|Integer|) #7#)))
294                                (SPADCALL |help| |rightEntry|
295                                          (+
296                                           (SPADCALL |help| |rightEntry|
297                                                     (QREFELT $ 24))
298                                           1)
299                                          (QREFELT $ 19))
300                                (COND
301                                 ((> |rightEntry| |leftEntry|)
302                                  (COND
303                                   ((>
304                                     (-
305                                      (SPADCALL |lprime| |leftEntry|
306                                                (QREFELT $ 17))
307                                      (SPADCALL |help| |leftEntry|
308                                                (QREFELT $ 24)))
309                                     (+
310                                      (-
311                                       (SPADCALL |lprime| |rightEntry|
312                                                 (QREFELT $ 17))
313                                       (SPADCALL |help| |rightEntry|
314                                                 (QREFELT $ 24)))
315                                      1))
316                                    (SEQ (LETT |ready| 'T)
317                                         (LETT |j| (+ |leftEntry| 1))
318                                         (SEQ G190
319                                              (COND
320                                               ((NULL
321                                                 (COND
322                                                  ((EQL
323                                                    (SPADCALL |help| |j|
324                                                              (QREFELT $ 24))
325                                                    0)
326                                                   'T)
327                                                  ('T
328                                                   (<
329                                                    (-
330                                                     (SPADCALL |lprime|
331                                                               |leftEntry|
332                                                               (QREFELT $ 17))
333                                                     (SPADCALL |lprime| |j|
334                                                               (QREFELT $ 17)))
335                                                    (+
336                                                     (-
337                                                      (SPADCALL |help|
338                                                                |leftEntry|
339                                                                (QREFELT $ 24))
340                                                      (SPADCALL |help| |j|
341                                                                (QREFELT $
342                                                                         24)))
343                                                     2)))))
344                                                (GO G191)))
345                                              (SEQ (EXIT (LETT |j| (+ |j| 1))))
346                                              NIL (GO G190) G191 (EXIT NIL))
347                                         (SPADCALL |lattP|
348                                                   (- |rightPosition| 1) |j|
349                                                   (QREFELT $ 25))
350                                         (SPADCALL |help| |j|
351                                                   (-
352                                                    (SPADCALL |help| |j|
353                                                              (QREFELT $ 24))
354                                                    1)
355                                                   (QREFELT $ 19))
356                                         (SPADCALL |help| |leftEntry|
357                                                   (+
358                                                    (SPADCALL |help|
359                                                              |leftEntry|
360                                                              (QREFELT $ 24))
361                                                    1)
362                                                   (QREFELT $ 19))
363                                         (EXIT
364                                          (SEQ (LETT |l| |rightPosition|)
365                                               (LETT #5# |n|) G190
366                                               (COND ((> |l| #5#) (GO G191)))
367                                               (SEQ (LETT |j| 0)
368                                                    (SEQ G190
369                                                         (COND
370                                                          ((NULL
371                                                            (EQL
372                                                             (SPADCALL |help|
373                                                                       (+ 1
374                                                                          |j|)
375                                                                       (QREFELT
376                                                                        $ 24))
377                                                             0))
378                                                           (GO G191)))
379                                                         (SEQ
380                                                          (EXIT
381                                                           (LETT |j|
382                                                                 (+ |j| 1))))
383                                                         NIL (GO G190) G191
384                                                         (EXIT NIL))
385                                                    (SPADCALL |lattP| |l|
386                                                              (+ |j| 1)
387                                                              (QREFELT $ 25))
388                                                    (EXIT
389                                                     (SPADCALL |help| (+ 1 |j|)
390                                                               (-
391                                                                (SPADCALL
392                                                                 |help|
393                                                                 (+ 1 |j|)
394                                                                 (QREFELT $
395                                                                          24))
396                                                                1)
397                                                               (QREFELT $
398                                                                        19))))
399                                               (LETT |l| (+ |l| 1)) (GO G190)
400                                               G191 (EXIT NIL))))))))
401                                (LETT |rightPosition|
402                                      (PROG1 (LETT #4# (- |rightPosition| 1))
403                                        (|check_subtype2| (>= #4# 0)
404                                                          '(|NonNegativeInteger|)
405                                                          '(|Integer|) #4#)))
406                                (EXIT
407                                 (COND
408                                  ((EQL |rightPosition| 1)
409                                   (LETT |constructNotFirst| NIL)))))
410                           (LETT #8#
411                                 (COND
412                                  ((OR |ready| (NULL |constructNotFirst|)) 'T)
413                                  ('T NIL)))
414                           (GO G190) G191 (EXIT NIL))
415                      (EXIT (COND (|constructNotFirst| |lattP|) (#18# NIL)))))
416                (#18#
417                 (SEQ (LETT |lattP| NIL)
418                      (SEQ (LETT |i| |columns|) G190
419                           (COND ((< |i| 1) (GO G191)))
420                           (SEQ
421                            (EXIT
422                             (SEQ (LETT |l| 1)
423                                  (LETT #2#
424                                        (SPADCALL |lprime| |i| (QREFELT $ 17)))
425                                  G190
426                                  (COND ((|greater_SI| |l| #2#) (GO G191)))
427                                  (SEQ
428                                   (EXIT (LETT |lattP| (CONS |i| |lattP|))))
429                                  (LETT |l| (|inc_SI| |l|)) (GO G190) G191
430                                  (EXIT NIL))))
431                           (LETT |i| (+ |i| -1)) (GO G190) G191 (EXIT NIL))
432                      (EXIT |lattP|))))))))
433
434(SDEFUN |SGCF;makeYoungTableau;2LM;7|
435        ((|lambda| |List| (|Integer|)) (|gitter| |List| (|Integer|))
436         ($ |Matrix| (|Integer|)))
437        (SPROG
438         ((|i| (|Integer|)) (|j| (|Integer|)) (#1=#:G491 NIL) (|l| NIL)
439          (|help| (|Vector| (|Integer|))) (|ytab| (|Matrix| (|Integer|)))
440          (|rows| (|NonNegativeInteger|)) (#2=#:G486 NIL)
441          (|columns| (|NonNegativeInteger|)) (#3=#:G485 NIL)
442          (|lprime| (|List| (|Integer|))))
443         (SEQ (LETT |lprime| (SPADCALL |lambda| (QREFELT $ 23)))
444              (LETT |columns|
445                    (PROG1 (LETT #3# (|SPADfirst| |lambda|))
446                      (|check_subtype2| (>= #3# 0) '(|NonNegativeInteger|)
447                                        '(|Integer|) #3#)))
448              (LETT |rows|
449                    (PROG1 (LETT #2# (|SPADfirst| |lprime|))
450                      (|check_subtype2| (>= #2# 0) '(|NonNegativeInteger|)
451                                        '(|Integer|) #2#)))
452              (LETT |ytab| (MAKE_MATRIX1 |rows| |columns| 0))
453              (LETT |help| (MAKEARR1 |columns| 1)) (LETT |i| -1) (LETT |j| 0)
454              (SEQ (LETT |l| 1) (LETT #1# (LENGTH |gitter|)) G190
455                   (COND ((|greater_SI| |l| #1#) (GO G191)))
456                   (SEQ (LETT |j| (SPADCALL |gitter| |l| (QREFELT $ 17)))
457                        (LETT |i| (+ |i| 1))
458                        (SPADCALL |ytab| (SPADCALL |help| |j| (QREFELT $ 24))
459                                  |j| |i| (QREFELT $ 28))
460                        (EXIT
461                         (SPADCALL |help| |j|
462                                   (+ (SPADCALL |help| |j| (QREFELT $ 24)) 1)
463                                   (QREFELT $ 19))))
464                   (LETT |l| (|inc_SI| |l|)) (GO G190) G191 (EXIT NIL))
465              (EXIT |ytab|))))
466
467(SDEFUN |SGCF;listYoungTableaus;LL;8|
468        ((|lambda| |List| (|Integer|)) ($ |List| (|Matrix| (|Integer|))))
469        (SPROG
470         ((|lattice| (|List| (|Integer|)))
471          (|younglist| (|List| (|Matrix| (|Integer|))))
472          (|ytab| (|Matrix| (|Integer|))) (#1=#:G496 NIL))
473         (SEQ (LETT |younglist| NIL)
474              (LETT |lattice| (SPADCALL |lambda| |lattice| NIL (QREFELT $ 26)))
475              (SEQ (LETT #1# NIL) G190 (COND (#1# (GO G191)))
476                   (SEQ
477                    (LETT |ytab| (SPADCALL |lambda| |lattice| (QREFELT $ 29)))
478                    (LETT |younglist|
479                          (SPADCALL |younglist| (LIST |ytab|) (QREFELT $ 31)))
480                    (EXIT
481                     (LETT |lattice|
482                           (SPADCALL |lambda| |lattice| 'T (QREFELT $ 26)))))
483                   (LETT #1# (NULL |lattice|)) (GO G190) G191 (EXIT NIL))
484              (EXIT |younglist|))))
485
486(SDEFUN |SGCF;nextColeman;2L2M;9|
487        ((|alpha| |List| (|Integer|)) (|beta| |List| (|Integer|))
488         (C |Matrix| (|Integer|)) ($ |Matrix| (|Integer|)))
489        (SPROG
490         ((|vrest| #1=(|Vector| (|Integer|)))
491          (|coleman| (|Matrix| (|Integer|))) (|succ| (|Vector| (|Integer|)))
492          (#2=#:G512 NIL) (|i| (|NonNegativeInteger|)) (#3=#:G505 NIL)
493          (|j| (|Integer|)) (#4=#:G498 NIL) (#5=#:G511 NIL) (#6=#:G497 NIL)
494          (|cnull| (|Matrix| (|Integer|))) (|vzero| #1#)
495          (|vnull| (|Vector| (|Integer|))) (|ncol| #7=(|NonNegativeInteger|))
496          (|nrow| #7#))
497         (SEQ
498          (EXIT
499           (SEQ (LETT |nrow| (LENGTH |beta|)) (LETT |ncol| (LENGTH |alpha|))
500                (LETT |vnull| (SPADCALL NIL (QREFELT $ 33)))
501                (LETT |vzero| (MAKEARR1 |ncol| 0))
502                (LETT |vrest| (MAKEARR1 |ncol| 0))
503                (LETT |cnull| (MAKE_MATRIX1 1 1 0))
504                (LETT |coleman| (SPADCALL C (QREFELT $ 34)))
505                (COND
506                 ((SPADCALL |coleman| |cnull| (QREFELT $ 35))
507                  (SEQ
508                   (LETT |i|
509                         (PROG1 (LETT #6# (- |nrow| 1))
510                           (|check_subtype2| (>= #6# 0) '(|NonNegativeInteger|)
511                                             '(|Integer|) #6#)))
512                   (LETT |vrest|
513                         (SPADCALL (SPADCALL |coleman| |i| (QREFELT $ 36))
514                                   (SPADCALL |coleman| |nrow| (QREFELT $ 36))
515                                   (QREFELT $ 37)))
516                   (LETT |succ|
517                         (SPADCALL |vrest|
518                                   (SPADCALL |coleman| |i| (QREFELT $ 36))
519                                   (SPADCALL |beta| |i| (QREFELT $ 17))
520                                   (QREFELT $ 38)))
521                   (SEQ G190
522                        (COND
523                         ((NULL (SPADCALL |succ| |vnull| (QREFELT $ 39)))
524                          (GO G191)))
525                        (SEQ
526                         (COND
527                          ((EQL |i| 1)
528                           (PROGN (LETT #5# |cnull|) (GO #8=#:G510))))
529                         (LETT |i|
530                               (PROG1 (LETT #4# (- |i| 1))
531                                 (|check_subtype2| (>= #4# 0)
532                                                   '(|NonNegativeInteger|)
533                                                   '(|Integer|) #4#)))
534                         (LETT |vrest|
535                               (SPADCALL |vrest|
536                                         (SPADCALL |coleman| |i|
537                                                   (QREFELT $ 36))
538                                         (QREFELT $ 37)))
539                         (EXIT
540                          (LETT |succ|
541                                (SPADCALL |vrest|
542                                          (SPADCALL |coleman| |i|
543                                                    (QREFELT $ 36))
544                                          (SPADCALL |beta| |i| (QREFELT $ 17))
545                                          (QREFELT $ 38)))))
546                        NIL (GO G190) G191 (EXIT NIL))
547                   (LETT |j| |i|)
548                   (LETT |coleman|
549                         (SPADCALL |coleman| |i| |succ| (QREFELT $ 40)))
550                   (EXIT
551                    (LETT |vrest|
552                          (SPADCALL |vrest|
553                                    (SPADCALL |coleman| |i| (QREFELT $ 36))
554                                    (QREFELT $ 41))))))
555                 ('T
556                  (SEQ (LETT |vrest| (SPADCALL |alpha| (QREFELT $ 33)))
557                       (LETT |coleman| (MAKE_MATRIX1 |nrow| |ncol| 0))
558                       (EXIT (LETT |j| 0)))))
559                (SEQ
560                 (LETT |i|
561                       (PROG1 (LETT #3# (+ |j| 1))
562                         (|check_subtype2| (>= #3# 0) '(|NonNegativeInteger|)
563                                           '(|Integer|) #3#)))
564                 (LETT #2# (- |nrow| 1)) G190 (COND ((> |i| #2#) (GO G191)))
565                 (SEQ
566                  (LETT |succ|
567                        (SPADCALL |vrest| |vnull|
568                                  (SPADCALL |beta| |i| (QREFELT $ 17))
569                                  (QREFELT $ 38)))
570                  (LETT |coleman|
571                        (SPADCALL |coleman| |i| |succ| (QREFELT $ 40)))
572                  (EXIT
573                   (LETT |vrest| (SPADCALL |vrest| |succ| (QREFELT $ 41)))))
574                 (LETT |i| (+ |i| 1)) (GO G190) G191 (EXIT NIL))
575                (EXIT (SPADCALL |coleman| |nrow| |vrest| (QREFELT $ 40)))))
576          #8# (EXIT #5#))))
577
578(SDEFUN |SGCF;nextPartition;2VIV;10|
579        ((|gamma| |Vector| (|Integer|)) (|part| |Vector| (|Integer|))
580         (|number| |Integer|) ($ |Vector| (|Integer|)))
581        (SPADCALL (SPADCALL |gamma| (QREFELT $ 20)) |part| |number|
582                  (QREFELT $ 43)))
583
584(SDEFUN |SGCF;nextPartition;LVIV;11|
585        ((|gamma| |List| (|Integer|)) (|part| |Vector| (|Integer|))
586         (|number| |Integer|) ($ |Vector| (|Integer|)))
587        (SPROG
588         ((#1=#:G526 NIL) (|k| NIL) (|j| (|NonNegativeInteger|))
589          (|sum| (|Integer|)) (|i| (|NonNegativeInteger|)) (#2=#:G525 NIL)
590          (|vnull| (|Vector| (|Integer|))) (|n| (|NonNegativeInteger|)))
591         (SEQ
592          (EXIT
593           (SEQ (LETT |n| (LENGTH |gamma|)) (LETT |vnull| (MAKE-ARRAY 0))
594                (COND
595                 ((SPADCALL |part| |vnull| (QREFELT $ 44))
596                  (SEQ (LETT |i| 2)
597                       (LETT |sum| (SPADCALL |part| 1 (QREFELT $ 24)))
598                       (SEQ G190
599                            (COND
600                             ((NULL
601                               (COND
602                                ((EQL (SPADCALL |part| |i| (QREFELT $ 24))
603                                      (SPADCALL |gamma| |i| (QREFELT $ 17)))
604                                 'T)
605                                ('T (EQL |sum| 0))))
606                              (GO G191)))
607                            (SEQ
608                             (LETT |sum|
609                                   (+ |sum|
610                                      (SPADCALL |part| |i| (QREFELT $ 24))))
611                             (LETT |i| (+ |i| 1))
612                             (EXIT
613                              (COND
614                               ((EQL |i| (+ 1 |n|))
615                                (PROGN (LETT #2# |vnull|) (GO #3=#:G524))))))
616                            NIL (GO G190) G191 (EXIT NIL))
617                       (LETT |sum| (- |sum| 1))
618                       (EXIT
619                        (SPADCALL |part| |i|
620                                  (+ (SPADCALL |part| |i| (QREFELT $ 24)) 1)
621                                  (QREFELT $ 19)))))
622                 ('T
623                  (SEQ (LETT |sum| |number|) (LETT |part| (MAKEARR1 |n| 0))
624                       (EXIT (LETT |i| (+ 1 |n|))))))
625                (LETT |j| 1)
626                (SEQ G190
627                     (COND
628                      ((NULL (> |sum| (SPADCALL |gamma| |j| (QREFELT $ 17))))
629                       (GO G191)))
630                     (SEQ
631                      (SPADCALL |part| |j|
632                                (SPADCALL |gamma| |j| (QREFELT $ 17))
633                                (QREFELT $ 19))
634                      (LETT |sum|
635                            (- |sum| (SPADCALL |gamma| |j| (QREFELT $ 17))))
636                      (EXIT (LETT |j| (+ |j| 1))))
637                     NIL (GO G190) G191 (EXIT NIL))
638                (SPADCALL |part| |j| |sum| (QREFELT $ 19))
639                (SEQ (LETT |k| (+ |j| 1)) (LETT #1# (- |i| 1)) G190
640                     (COND ((> |k| #1#) (GO G191)))
641                     (SEQ (EXIT (SPADCALL |part| |k| 0 (QREFELT $ 19))))
642                     (LETT |k| (+ |k| 1)) (GO G190) G191 (EXIT NIL))
643                (EXIT |part|)))
644          #3# (EXIT #2#))))
645
646(SDEFUN |SGCF;inverseColeman;2LML;12|
647        ((|alpha| |List| (|Integer|)) (|beta| |List| (|Integer|))
648         (C |Matrix| (|Integer|)) ($ |List| (|Integer|)))
649        (SPROG
650         ((|pi| (|List| (|Integer|))) (#1=#:G538 NIL) (|k| NIL) (#2=#:G537 NIL)
651          (|i| NIL) (#3=#:G536 NIL) (|j| NIL) (|sum| (|Integer|))
652          (#4=#:G535 NIL) (|help| (|Vector| (|Integer|)))
653          (|ncol| #5=(|NonNegativeInteger|)) (|nrow| #5#))
654         (SEQ (LETT |pi| NIL) (LETT |nrow| (LENGTH |beta|))
655              (LETT |ncol| (LENGTH |alpha|)) (LETT |help| (MAKEARR1 |nrow| 0))
656              (LETT |sum| 1)
657              (SEQ (LETT |i| 1) (LETT #4# |nrow|) G190
658                   (COND ((|greater_SI| |i| #4#) (GO G191)))
659                   (SEQ (SPADCALL |help| |i| |sum| (QREFELT $ 19))
660                        (EXIT
661                         (LETT |sum|
662                               (+ |sum|
663                                  (SPADCALL |beta| |i| (QREFELT $ 17))))))
664                   (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
665              (SEQ (LETT |j| 1) (LETT #3# |ncol|) G190
666                   (COND ((|greater_SI| |j| #3#) (GO G191)))
667                   (SEQ
668                    (EXIT
669                     (SEQ (LETT |i| 1) (LETT #2# |nrow|) G190
670                          (COND ((|greater_SI| |i| #2#) (GO G191)))
671                          (SEQ
672                           (EXIT
673                            (SEQ (LETT |k| 2)
674                                 (LETT #1#
675                                       (+ 1
676                                          (SPADCALL C |i| |j| (QREFELT $ 45))))
677                                 G190 (COND ((|greater_SI| |k| #1#) (GO G191)))
678                                 (SEQ
679                                  (LETT |pi|
680                                        (SPADCALL |pi|
681                                                  (SPADCALL
682                                                   (SPADCALL |help| |i|
683                                                             (QREFELT $ 24))
684                                                   (QREFELT $ 11))
685                                                  (QREFELT $ 12)))
686                                  (EXIT
687                                   (SPADCALL |help| |i|
688                                             (+
689                                              (SPADCALL |help| |i|
690                                                        (QREFELT $ 24))
691                                              1)
692                                             (QREFELT $ 19))))
693                                 (LETT |k| (|inc_SI| |k|)) (GO G190) G191
694                                 (EXIT NIL))))
695                          (LETT |i| (|inc_SI| |i|)) (GO G190) G191
696                          (EXIT NIL))))
697                   (LETT |j| (|inc_SI| |j|)) (GO G190) G191 (EXIT NIL))
698              (EXIT |pi|))))
699
700(SDEFUN |SGCF;coleman;3LM;13|
701        ((|alpha| |List| (|Integer|)) (|beta| |List| (|Integer|))
702         (|pi| |List| (|Integer|)) ($ |Matrix| (|Integer|)))
703        (SPROG
704         ((#1=#:G556 NIL) (|j| NIL) (|betasum| #2=(|NonNegativeInteger|))
705          (#3=#:G548 NIL) (|help| (|List| (|Integer|))) (#4=#:G546 NIL)
706          (#5=#:G555 NIL) (|i| NIL) (|temp| (|List| (|List| (|Integer|))))
707          (|alphasum| #2#) (#6=#:G542 NIL) (#7=#:G540 NIL) (#8=#:G554 NIL)
708          (|colematrix| (|Matrix| (|Integer|)))
709          (|ncol| #9=(|NonNegativeInteger|)) (|nrow| #9#))
710         (SEQ (LETT |nrow| (LENGTH |beta|)) (LETT |ncol| (LENGTH |alpha|))
711              (LETT |temp| NIL) (LETT |help| NIL)
712              (LETT |colematrix| (MAKE_MATRIX1 |nrow| |ncol| 0))
713              (LETT |betasum| 0) (LETT |alphasum| 0)
714              (SEQ (LETT |i| 1) (LETT #8# |ncol|) G190
715                   (COND ((|greater_SI| |i| #8#) (GO G191)))
716                   (SEQ (LETT |help| NIL)
717                        (SEQ (LETT |j| (SPADCALL |alpha| |i| (QREFELT $ 17)))
718                             G190 (COND ((< |j| 1) (GO G191)))
719                             (SEQ
720                              (EXIT
721                               (LETT |help|
722                                     (CONS
723                                      (SPADCALL |pi|
724                                                (+
725                                                 (PROG1 (LETT #7# |j|)
726                                                   (|check_subtype2| (>= #7# 0)
727                                                                     '(|NonNegativeInteger|)
728                                                                     '(|Integer|)
729                                                                     #7#))
730                                                 |alphasum|)
731                                                (QREFELT $ 17))
732                                      |help|))))
733                             (LETT |j| (+ |j| -1)) (GO G190) G191 (EXIT NIL))
734                        (LETT |alphasum|
735                              (PROG1
736                                  (LETT #6#
737                                        (+ |alphasum|
738                                           (SPADCALL |alpha| |i|
739                                                     (QREFELT $ 17))))
740                                (|check_subtype2| (>= #6# 0)
741                                                  '(|NonNegativeInteger|)
742                                                  '(|Integer|) #6#)))
743                        (EXIT
744                         (LETT |temp|
745                               (SPADCALL |temp|
746                                         (SPADCALL |help| (QREFELT $ 48))
747                                         (QREFELT $ 49)))))
748                   (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
749              (SEQ (LETT |i| 1) (LETT #5# |nrow|) G190
750                   (COND ((|greater_SI| |i| #5#) (GO G191)))
751                   (SEQ (LETT |help| NIL)
752                        (SEQ (LETT |j| (SPADCALL |beta| |i| (QREFELT $ 17)))
753                             G190 (COND ((< |j| 1) (GO G191)))
754                             (SEQ
755                              (EXIT
756                               (LETT |help|
757                                     (CONS
758                                      (+
759                                       (PROG1 (LETT #4# |j|)
760                                         (|check_subtype2| (>= #4# 0)
761                                                           '(|NonNegativeInteger|)
762                                                           '(|Integer|) #4#))
763                                       |betasum|)
764                                      |help|))))
765                             (LETT |j| (+ |j| -1)) (GO G190) G191 (EXIT NIL))
766                        (LETT |betasum|
767                              (PROG1
768                                  (LETT #3#
769                                        (+ |betasum|
770                                           (SPADCALL |beta| |i|
771                                                     (QREFELT $ 17))))
772                                (|check_subtype2| (>= #3# 0)
773                                                  '(|NonNegativeInteger|)
774                                                  '(|Integer|) #3#)))
775                        (EXIT
776                         (SEQ (LETT |j| 1) (LETT #1# |ncol|) G190
777                              (COND ((|greater_SI| |j| #1#) (GO G191)))
778                              (SEQ
779                               (EXIT
780                                (SPADCALL |colematrix| |i| |j|
781                                          (SPADCALL
782                                           (SPADCALL
783                                            (SPADCALL |help| (QREFELT $ 51))
784                                            (SPADCALL
785                                             (SPADCALL |temp| |j|
786                                                       (QREFELT $ 52))
787                                             (QREFELT $ 51))
788                                            (QREFELT $ 53))
789                                           (QREFELT $ 55))
790                                          (QREFELT $ 28))))
791                              (LETT |j| (|inc_SI| |j|)) (GO G190) G191
792                              (EXIT NIL))))
793                   (LETT |i| (|inc_SI| |i|)) (GO G190) G191 (EXIT NIL))
794              (EXIT |colematrix|))))
795
796(DECLAIM (NOTINLINE |SymmetricGroupCombinatoricFunctions;|))
797
798(DEFUN |SymmetricGroupCombinatoricFunctions| ()
799  (SPROG NIL
800         (PROG (#1=#:G558)
801           (RETURN
802            (COND
803             ((LETT #1#
804                    (HGET |$ConstructorCache|
805                          '|SymmetricGroupCombinatoricFunctions|))
806              (|CDRwithIncrement| (CDAR #1#)))
807             ('T
808              (UNWIND-PROTECT
809                  (PROG1
810                      (CDDAR
811                       (HPUT |$ConstructorCache|
812                             '|SymmetricGroupCombinatoricFunctions|
813                             (LIST
814                              (CONS NIL
815                                    (CONS 1
816                                          (|SymmetricGroupCombinatoricFunctions;|))))))
817                    (LETT #1# T))
818                (COND
819                 ((NOT #1#)
820                  (HREM |$ConstructorCache|
821                        '|SymmetricGroupCombinatoricFunctions|))))))))))
822
823(DEFUN |SymmetricGroupCombinatoricFunctions;| ()
824  (SPROG ((|dv$| NIL) ($ NIL) (|pv$| NIL))
825         (PROGN
826          (LETT |dv$| '(|SymmetricGroupCombinatoricFunctions|))
827          (LETT $ (GETREFV 57))
828          (QSETREFV $ 0 |dv$|)
829          (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL)))
830          (|haddProp| |$ConstructorCache|
831                      '|SymmetricGroupCombinatoricFunctions| NIL (CONS 1 $))
832          (|stuffDomainSlots| $)
833          (SETF |pv$| (QREFELT $ 3))
834          $)))
835
836(MAKEPROP '|SymmetricGroupCombinatoricFunctions| '|infovec|
837          (LIST
838           '#(NIL NIL NIL NIL NIL NIL (|Integer|)
839              (|IntegerCombinatoricFunctions| 6) (0 . |binomial|)
840              |SGCF;numberOfImproperPartitions;3I;2| (|List| 6) (6 . |list|)
841              (11 . |append|) |SGCF;unrankImproperPartitions0;3IL;3|
842              (|Boolean|) (17 . ~=) |SGCF;subSet;3IL;5| (23 . |elt|)
843              (|Vector| 6) (29 . |setelt!|) (36 . |entries|)
844              |SGCF;unrankImproperPartitions1;3IL;4|
845              (|PartitionsAndPermutations|) (41 . |conjugate|) (46 . |elt|)
846              (52 . |setelt!|) |SGCF;nextLatticePermutation;2LBL;6|
847              (|Matrix| 6) (59 . |setelt!|) |SGCF;makeYoungTableau;2LM;7|
848              (|List| 27) (67 . |append|) |SGCF;listYoungTableaus;LL;8|
849              (73 . |vector|) (78 . |copy|) (83 . ~=) (89 . |row|) (95 . +)
850              |SGCF;nextPartition;2VIV;10| (101 . =) (107 . |setRow!|)
851              (114 . -) |SGCF;nextColeman;2L2M;9| |SGCF;nextPartition;LVIV;11|
852              (120 . ~=) (126 . |elt|) |SGCF;inverseColeman;2LML;12|
853              (|List| 10) (133 . |list|) (138 . |append|) (|Set| 6)
854              (144 . |set|) (149 . |elt|) (155 . |intersect|)
855              (|NonNegativeInteger|) (161 . |#|) |SGCF;coleman;3LM;13|)
856           '#(|unrankImproperPartitions1| 166 |unrankImproperPartitions0| 173
857              |subSet| 180 |numberOfImproperPartitions| 187 |nextPartition| 193
858              |nextLatticePermutation| 207 |nextColeman| 214 |makeYoungTableau|
859              221 |listYoungTableaus| 227 |inverseColeman| 232 |coleman| 239)
860           'NIL
861           (CONS (|makeByteWordVec2| 1 '(0))
862                 (CONS '#(NIL)
863                       (CONS
864                        '#((|Join|
865                            (|mkCategory|
866                             (LIST
867                              '((|coleman|
868                                 ((|Matrix| (|Integer|)) (|List| (|Integer|))
869                                  (|List| (|Integer|)) (|List| (|Integer|))))
870                                T)
871                              '((|inverseColeman|
872                                 ((|List| (|Integer|)) (|List| (|Integer|))
873                                  (|List| (|Integer|)) (|Matrix| (|Integer|))))
874                                T)
875                              '((|listYoungTableaus|
876                                 ((|List| (|Matrix| (|Integer|)))
877                                  (|List| (|Integer|))))
878                                T)
879                              '((|makeYoungTableau|
880                                 ((|Matrix| (|Integer|)) (|List| (|Integer|))
881                                  (|List| (|Integer|))))
882                                T)
883                              '((|nextColeman|
884                                 ((|Matrix| (|Integer|)) (|List| (|Integer|))
885                                  (|List| (|Integer|)) (|Matrix| (|Integer|))))
886                                T)
887                              '((|nextLatticePermutation|
888                                 ((|List| (|Integer|)) (|List| (|Integer|))
889                                  (|List| (|Integer|)) (|Boolean|)))
890                                T)
891                              '((|nextPartition|
892                                 ((|Vector| (|Integer|)) (|Vector| (|Integer|))
893                                  (|Vector| (|Integer|)) (|Integer|)))
894                                T)
895                              '((|nextPartition|
896                                 ((|Vector| (|Integer|)) (|List| (|Integer|))
897                                  (|Vector| (|Integer|)) (|Integer|)))
898                                T)
899                              '((|numberOfImproperPartitions|
900                                 ((|Integer|) (|Integer|) (|Integer|)))
901                                T)
902                              '((|subSet|
903                                 ((|List| (|Integer|)) (|Integer|) (|Integer|)
904                                  (|Integer|)))
905                                T)
906                              '((|unrankImproperPartitions0|
907                                 ((|List| (|Integer|)) (|Integer|) (|Integer|)
908                                  (|Integer|)))
909                                T)
910                              '((|unrankImproperPartitions1|
911                                 ((|List| (|Integer|)) (|Integer|) (|Integer|)
912                                  (|Integer|)))
913                                T))
914                             (LIST) NIL NIL)))
915                        (|makeByteWordVec2| 56
916                                            '(2 7 6 6 6 8 1 10 0 6 11 2 10 0 0
917                                              0 12 2 6 14 0 0 15 2 10 6 0 6 17
918                                              3 18 6 0 6 6 19 1 18 10 0 20 1 22
919                                              10 10 23 2 18 6 0 6 24 3 10 6 0 6
920                                              6 25 4 27 6 0 6 6 6 28 2 30 0 0 0
921                                              31 1 18 0 10 33 1 27 0 0 34 2 27
922                                              14 0 0 35 2 27 18 0 6 36 2 18 0 0
923                                              0 37 2 18 14 0 0 39 3 27 0 0 6 18
924                                              40 2 18 0 0 0 41 2 18 14 0 0 44 3
925                                              27 6 0 6 6 45 1 47 0 10 48 2 47 0
926                                              0 0 49 1 50 0 10 51 2 47 10 0 6
927                                              52 2 50 0 0 0 53 1 50 54 0 55 3 0
928                                              10 6 6 6 21 3 0 10 6 6 6 13 3 0
929                                              10 6 6 6 16 2 0 6 6 6 9 3 0 18 18
930                                              18 6 38 3 0 18 10 18 6 43 3 0 10
931                                              10 10 14 26 3 0 27 10 10 27 42 2
932                                              0 27 10 10 29 1 0 30 10 32 3 0 10
933                                              10 10 27 46 3 0 27 10 10 10
934                                              56)))))
935           '|lookupComplete|))
936
937(MAKEPROP '|SymmetricGroupCombinatoricFunctions| 'NILADIC T)
938