1
2(PUT '|COCHNC;coChainComplex;L$;1| '|SPADreplace| '(XLAM (|v|) |v|))
3
4(SDEFUN |COCHNC;coChainComplex;L$;1|
5        ((|v| |List| (|Matrix| (|Integer|))) ($ $)) |v|)
6
7(SDEFUN |COCHNC;coChainComplex;Cc$;2| ((|s| |ChainComplex|) ($ $))
8        (SPROG ((|tm| ($)))
9               (SEQ (LETT |tm| (SPADCALL |s| (QREFELT $ 11)))
10                    (LETT |tm| (NREVERSE |tm|))
11                    (EXIT (SPADCALL (ELT $ 13) |tm| (QREFELT $ 15))))))
12
13(SDEFUN |COCHNC;validate;$B;3| ((|a| $) ($ |Boolean|))
14        (SPROG
15         ((|last| #1=(|Matrix| (|Integer|))) (#2=#:G415 NIL)
16          (|prod| (|Matrix| (|Integer|))) (|m| #1#) (#3=#:G416 NIL) (|x| NIL)
17          (|len| (|NonNegativeInteger|)))
18         (SEQ
19          (EXIT
20           (SEQ (LETT |len| (LENGTH |a|))
21                (COND ((< |len| 2) (PROGN (LETT #2# 'T) (GO #4=#:G414))))
22                (LETT |last| (SPADCALL |a| 1 (QREFELT $ 18)))
23                (SEQ (LETT |x| 2) (LETT #3# |len|) G190
24                     (COND ((|greater_SI| |x| #3#) (GO G191)))
25                     (SEQ (LETT |m| (SPADCALL |a| |x| (QREFELT $ 18)))
26                          (COND
27                           ((SPADCALL (SPADCALL |m| (QREFELT $ 19))
28                                      (SPADCALL |last| (QREFELT $ 20))
29                                      (QREFELT $ 22))
30                            (SEQ
31                             (SPADCALL
32                              (SPADCALL
33                               (SPADCALL
34                                (SPADCALL
35                                 (SPADCALL "validate failed nRows="
36                                           (QREFELT $ 25))
37                                 (SPADCALL (SPADCALL |m| (QREFELT $ 19))
38                                           (QREFELT $ 26))
39                                 (QREFELT $ 27))
40                                (SPADCALL " not equal to nCols "
41                                          (QREFELT $ 25))
42                                (QREFELT $ 27))
43                               (SPADCALL (SPADCALL |last| (QREFELT $ 20))
44                                         (QREFELT $ 26))
45                               (QREFELT $ 27))
46                              (QREFELT $ 29))
47                             (EXIT (PROGN (LETT #2# NIL) (GO #4#))))))
48                          (LETT |prod| (SPADCALL |last| |m| (QREFELT $ 30)))
49                          (COND
50                           ((NULL (SPADCALL |prod| (QREFELT $ 31)))
51                            (SEQ
52                             (SPADCALL
53                              (SPADCALL
54                               (SPADCALL
55                                (SPADCALL
56                                 (SPADCALL
57                                  (SPADCALL
58                                   (SPADCALL
59                                    "validate failed: product of adjacent maps should be zero"
60                                    (QREFELT $ 25))
61                                   (SPADCALL |last| (QREFELT $ 32))
62                                   (QREFELT $ 27))
63                                  (SPADCALL " * " (QREFELT $ 25))
64                                  (QREFELT $ 27))
65                                 (SPADCALL |m| (QREFELT $ 32)) (QREFELT $ 27))
66                                (SPADCALL " = " (QREFELT $ 25)) (QREFELT $ 27))
67                               (SPADCALL |prod| (QREFELT $ 32)) (QREFELT $ 27))
68                              (QREFELT $ 29))
69                             (EXIT (PROGN (LETT #2# NIL) (GO #4#))))))
70                          (EXIT (LETT |last| |m|)))
71                     (LETT |x| (|inc_SI| |x|)) (GO G190) G191 (EXIT NIL))
72                (EXIT 'T)))
73          #4# (EXIT #2#))))
74
75(SDEFUN |COCHNC;coboundary;$Nni2L;4|
76        ((|a| $) (|n| |NonNegativeInteger|) (|inp| |List| VS) ($ |List| VS))
77        (SPROG
78         ((|res| (|List| VS)) (#1=#:G430 NIL) (|i| NIL) (#2=#:G429 NIL)
79          (|res1| (|List| VS)) (|val| (VS)) (#3=#:G428 NIL) (|v| NIL)
80          (|fst| (|Boolean|)) (|vs| (|Vector| (|Integer|)))
81          (|m| (|Matrix| (|Integer|))) (|b| (|Vector| (|Integer|)))
82          (|base| (|List| (|Integer|))) (#4=#:G427 NIL) (|x| NIL)
83          (#5=#:G426 NIL) (#6=#:G425 NIL) (|p| NIL)
84          (|inpn| (|NonNegativeInteger|))
85          (|maps| (|List| (|Matrix| (|Integer|)))))
86         (SEQ (LETT |maps| (REVERSE |a|)) (LETT |res| NIL)
87              (LETT |inpn| (LENGTH |inp|))
88              (SEQ (LETT |p| 1) (LETT #6# |inpn|) G190
89                   (COND ((|greater_SI| |p| #6#) (GO G191)))
90                   (SEQ
91                    (LETT |base|
92                          (PROGN
93                           (LETT #5# NIL)
94                           (SEQ (LETT |x| 1) (LETT #4# |inpn|) G190
95                                (COND ((|greater_SI| |x| #4#) (GO G191)))
96                                (SEQ
97                                 (EXIT
98                                  (LETT #5#
99                                        (CONS (COND ((EQL |x| |p|) 1) ('T 0))
100                                              #5#))))
101                                (LETT |x| (|inc_SI| |x|)) (GO G190) G191
102                                (EXIT (NREVERSE #5#)))))
103                    (LETT |b| (SPADCALL |base| (QREFELT $ 36)))
104                    (LETT |m|
105                          (SPADCALL (SPADCALL |maps| |n| (QREFELT $ 18))
106                                    (QREFELT $ 13)))
107                    (LETT |vs| (SPADCALL |b| |m| (QREFELT $ 37)))
108                    (LETT |fst| 'T) (LETT |res1| NIL)
109                    (SEQ (LETT |v| NIL)
110                         (LETT #3# (SPADCALL |vs| (QREFELT $ 38))) G190
111                         (COND
112                          ((OR (ATOM #3#) (PROGN (LETT |v| (CAR #3#)) NIL))
113                           (GO G191)))
114                         (SEQ (LETT |val| (SPADCALL |inp| |p| (QREFELT $ 40)))
115                              (COND
116                               ((EQL |v| 0)
117                                (LETT |res1|
118                                      (SPADCALL |res1| (|spadConstant| $ 41)
119                                                (QREFELT $ 42)))))
120                              (COND
121                               ((> |v| 0)
122                                (LETT |res1|
123                                      (SPADCALL |res1|
124                                                (SPADCALL |val| (QREFELT $ 43))
125                                                (QREFELT $ 42)))))
126                              (EXIT
127                               (COND
128                                ((< |v| 0)
129                                 (LETT |res1|
130                                       (SPADCALL |res1| |val|
131                                                 (QREFELT $ 42)))))))
132                         (LETT #3# (CDR #3#)) (GO G190) G191 (EXIT NIL))
133                    (EXIT
134                     (COND ((NULL |res|) (LETT |res| |res1|))
135                           ('T
136                            (LETT |res|
137                                  (PROGN
138                                   (LETT #2# NIL)
139                                   (SEQ (LETT |i| 1) (LETT #1# (LENGTH |res1|))
140                                        G190
141                                        (COND
142                                         ((|greater_SI| |i| #1#) (GO G191)))
143                                        (SEQ
144                                         (EXIT
145                                          (LETT #2#
146                                                (CONS
147                                                 (SPADCALL
148                                                  (SPADCALL |res| |i|
149                                                            (QREFELT $ 40))
150                                                  (SPADCALL |res1| |i|
151                                                            (QREFELT $ 40))
152                                                  (QREFELT $ 44))
153                                                 #2#))))
154                                        (LETT |i| (|inc_SI| |i|)) (GO G190)
155                                        G191 (EXIT (NREVERSE #2#)))))))))
156                   (LETT |p| (|inc_SI| |p|)) (GO G190) G191 (EXIT NIL))
157              (EXIT |res|))))
158
159(SDEFUN |COCHNC;coHomology;$L;5| ((|a| $) ($ |List| (|Homology|)))
160        (SPROG
161         ((|prev| (|Matrix| (|Integer|))) (|notFirst| (|Boolean|))
162          (|res| (|List| (|Homology|))) (|m2| (|Homology|)) (#1=#:G436 NIL)
163          (|m1| NIL))
164         (SEQ (LETT |res| NIL) (LETT |prev| (MAKE_MATRIX 0 0))
165              (LETT |notFirst| NIL)
166              (SEQ (LETT |m1| NIL) (LETT #1# |a|) G190
167                   (COND
168                    ((OR (ATOM #1#) (PROGN (LETT |m1| (CAR #1#)) NIL))
169                     (GO G191)))
170                   (SEQ
171                    (COND
172                     (|notFirst|
173                      (SEQ (LETT |m2| (SPADCALL |m1| |prev| (QREFELT $ 48)))
174                           (EXIT
175                            (LETT |res|
176                                  (SPADCALL |res| |m2| (QREFELT $ 50)))))))
177                    (LETT |notFirst| 'T) (EXIT (LETT |prev| |m1|)))
178                   (LETT #1# (CDR #1#)) (GO G190) G191 (EXIT NIL))
179              (EXIT |res|))))
180
181(SDEFUN |COCHNC;coerce;$Of;6| ((|s| $) ($ |OutputForm|))
182        (SPROG
183         ((|lst| (|List| (|OutputForm|))) (#1=#:G441 NIL) (|x| NIL)
184          (#2=#:G440 NIL))
185         (SEQ
186          (LETT |lst|
187                (PROGN
188                 (LETT #2# NIL)
189                 (SEQ (LETT |x| NIL) (LETT #1# |s|) G190
190                      (COND
191                       ((OR (ATOM #1#) (PROGN (LETT |x| (CAR #1#)) NIL))
192                        (GO G191)))
193                      (SEQ
194                       (EXIT
195                        (LETT #2# (CONS (SPADCALL |x| (QREFELT $ 32)) #2#))))
196                      (LETT #1# (CDR #1#)) (GO G190) G191
197                      (EXIT (NREVERSE #2#)))))
198          (EXIT (SPADCALL |lst| (QREFELT $ 53))))))
199
200(DECLAIM (NOTINLINE |CoChainComplex;|))
201
202(DEFUN |CoChainComplex| (#1=#:G442)
203  (SPROG NIL
204         (PROG (#2=#:G443)
205           (RETURN
206            (COND
207             ((LETT #2#
208                    (|lassocShiftWithFunction| (LIST (|devaluate| #1#))
209                                               (HGET |$ConstructorCache|
210                                                     '|CoChainComplex|)
211                                               '|domainEqualList|))
212              (|CDRwithIncrement| #2#))
213             ('T
214              (UNWIND-PROTECT (PROG1 (|CoChainComplex;| #1#) (LETT #2# T))
215                (COND
216                 ((NOT #2#)
217                  (HREM |$ConstructorCache| '|CoChainComplex|))))))))))
218
219(DEFUN |CoChainComplex;| (|#1|)
220  (SPROG ((|pv$| NIL) ($ NIL) (|dv$| NIL) (DV$1 NIL))
221         (PROGN
222          (LETT DV$1 (|devaluate| |#1|))
223          (LETT |dv$| (LIST '|CoChainComplex| DV$1))
224          (LETT $ (GETREFV 57))
225          (QSETREFV $ 0 |dv$|)
226          (QSETREFV $ 3 (LETT |pv$| (|buildPredVector| 0 0 NIL)))
227          (|haddProp| |$ConstructorCache| '|CoChainComplex| (LIST DV$1)
228                      (CONS 1 $))
229          (|stuffDomainSlots| $)
230          (QSETREFV $ 6 |#1|)
231          (SETF |pv$| (QREFELT $ 3))
232          (QSETREFV $ 7 (|List| (|Matrix| (|Integer|))))
233          $)))
234
235(MAKEPROP '|CoChainComplex| '|infovec|
236          (LIST
237           '#(NIL NIL NIL NIL NIL NIL (|local| |#1|) '|Rep| (|List| 12)
238              |COCHNC;coChainComplex;L$;1| (|ChainComplex|)
239              (0 . |transition_matrices|) (|Matrix| 17) (5 . |transpose|)
240              (|Mapping| 12 12) (10 . |map|) |COCHNC;coChainComplex;Cc$;2|
241              (|Integer|) (16 . |elt|) (22 . |maxRowIndex|)
242              (27 . |maxColIndex|) (|Boolean|) (32 . ~=) (|String|)
243              (|OutputForm|) (38 . |message|) (43 . |coerce|) (48 . |hconcat|)
244              (|Void|) (54 . |print|) (59 . *) (65 . |zero?|) (70 . |coerce|)
245              |COCHNC;validate;$B;3| (|List| 17) (|Vector| 17) (75 . |vector|)
246              (80 . *) (86 . |entries|) (|List| 6) (91 . |elt|) (97 . |Zero|)
247              (101 . |concat|) (107 . -) (112 . +) (|NonNegativeInteger|)
248              |COCHNC;coboundary;$Nni2L;4| (|Homology|) (118 . |homologyGroup|)
249              (|List| 47) (124 . |concat|) |COCHNC;coHomology;$L;5| (|List| $)
250              (130 . |commaSeparate|) |COCHNC;coerce;$Of;6| (|SingleInteger|)
251              (|HashState|))
252           '#(~= 135 |validate| 141 |latex| 146 |hashUpdate!| 151 |hash| 157
253              |coerce| 162 |coboundary| 167 |coHomology| 174 |coChainComplex|
254              179 = 189)
255           'NIL
256           (CONS (|makeByteWordVec2| 1 '(0 0 0))
257                 (CONS '#(|SetCategory&| |BasicType&| NIL)
258                       (CONS
259                        '#((|SetCategory|) (|BasicType|) (|CoercibleTo| 24))
260                        (|makeByteWordVec2| 56
261                                            '(1 10 8 0 11 1 12 0 0 13 2 7 0 14
262                                              0 15 2 7 12 0 17 18 1 12 17 0 19
263                                              1 12 17 0 20 2 17 21 0 0 22 1 24
264                                              0 23 25 1 17 24 0 26 2 24 0 0 0
265                                              27 1 24 28 0 29 2 12 0 0 0 30 1
266                                              12 21 0 31 1 12 24 0 32 1 35 0 34
267                                              36 2 12 35 35 0 37 1 35 34 0 38 2
268                                              39 6 0 17 40 0 6 0 41 2 39 0 0 6
269                                              42 1 6 0 0 43 2 6 0 0 0 44 2 47 0
270                                              12 12 48 2 49 0 0 47 50 1 24 0 52
271                                              53 2 0 21 0 0 1 1 0 21 0 33 1 0
272                                              23 0 1 2 0 56 56 0 1 1 0 55 0 1 1
273                                              0 24 0 54 3 0 39 0 45 39 46 1 0
274                                              49 0 51 1 0 0 8 9 1 0 0 10 16 2 0
275                                              21 0 0 1)))))
276           '|lookupComplete|))
277