This web page contains the listing of a small Kenzo demonstration. The file is slightly arranged for a more convenient understanding, but it comes from actual computations on the Linux PC Isabelle of Ecole Polytechnique at Palaiseau (GDR Medicis).
Three typical computations are shown:
Sometimes an end of line is replaced by `...' if not really important. Frequently, too long parts of the listing are removed and you see only the indication "[... Lines deleted ...]". In fact several computations are put together, so that the prompt numbering can be non-sequential. The Kenzo display form of many chain complex generators is <...>, but the Web browser then looks for an html keyword and does not understand! You can see the actual text by looking at the source file, but this does not really disturb the demo.
The usual Lisp banner beginning a Lisp session appears. A text USER(...) is the Lisp prompt. The file-list file contains various indications about the structure of the Kenzo program, mainly the list of file components.
Allegro CL 4.3 [Linux/X86; R1] (4/23/97 12:30) Copyright (C) 1985-1996, Franz Inc., Berkeley, CA, USA. All R... ;; Optimization settings: safety 1, space 1, speed 1, debug 2. ;; For a complete description of all compiler switches given the ;; current optimization settings evaluate (EXPLAIN-COMPILER-SE... USER(1): (load "file-list") ; Loading ./file-list.lisp FILE 1: classes FILE 2: macros FILE 3: various FILE 4: combinations FILE 5: chain-complexes FILE 6: chcm-elementary-op FILE 7: effective-homology FILE 8: homology-groups FILE 9: searching-homology FILE 10: cones FILE 11: tensor-products FILE 12: coalgebras FILE 13: cobar FILE 14: algebras FILE 15: bar FILE 16: simplicial-sets FILE 17: simplicial-mrphs FILE 18: delta FILE 19: special-smsts FILE 20: suspensions FILE 21: disk-pasting FILE 22: cartesian-products FILE 23: eilenberg-zilber FILE 24: kan FILE 25: simplicial-groups FILE 26: fibrations FILE 27: loop-spaces FILE 28: ls-twisted-products FILE 29: lp-space-efhm FILE 30: classifying-spaces FILE 31: k-pi-n FILE 32: serre FILE 33: cs-twisted-products FILE 34: cl-space-efhm FILE 35: whitehead FILE 36: smith T
Then the compiled files can be loaded:
USER(2): (load-cfiles) ; Fast loading ./classes.fasl ; Fast loading ./macros.fasl ; Fast loading ./various.fasl ; Fast loading ./combinations.fasl ; Fast loading ./chain-complexes.fasl ; Fast loading ./chcm-elementary-op.fasl ; Fast loading ./effective-homology.fasl ; Fast loading ./homology-groups.fasl ; Fast loading ./searching-homology.fasl ; Fast loading ./cones.fasl ; Fast loading ./tensor-products.fasl ; Fast loading ./coalgebras.fasl ; Fast loading ./cobar.fasl ; Fast loading ./algebras.fasl ; Fast loading ./bar.fasl ; Fast loading ./simplicial-sets.fasl ; Fast loading ./simplicial-mrphs.fasl ; Fast loading ./delta.fasl ; Fast loading ./special-smsts.fasl ; Fast loading ./suspensions.fasl ; Fast loading ./disk-pasting.fasl ; Fast loading ./cartesian-products.fasl ; Fast loading ./eilenberg-zilber.fasl ; Fast loading ./kan.fasl ; Fast loading ./simplicial-groups.fasl ; Fast loading ./fibrations.fasl ; Fast loading ./loop-spaces.fasl ; Fast loading ./ls-twisted-products.fasl ; Fast loading ./lp-space-efhm.fasl ; Fast loading ./classifying-spaces.fasl ; Fast loading ./k-pi-n.fasl ; Fast loading ./serre.fasl ; Fast loading ./cs-twisted-products.fasl ; Fast loading ./cl-space-efhm.fasl ; Fast loading ./whitehead.fasl ; Fast loading ./smith.fasl ("classes" "macros" "various" "combinations" "chain-complexes"...
We intend to construct the Moore space where the homology is only H4 = Z2. The moore function is used and the result is assigned to the symbol m:
USER(3): (setf m (moore 2 4)) [K1 Simplicial-Set]
The result is the Kenzo object #1 ([K1...]) and this object is a simplicial set. The function loop-space is then used to construct the third loop-space and the result is assigned to the symbol o3m:
USER(4): (setf o3m (loop-space m 3)) [K30 Simplicial-Group]
The result is the Kenzo object #30 and it is a simplicial group. We want to compute the H5(... ; Z) of this 3-loop-space:
USER(5): (homology o3m 5) Computing boundary-matrix in dimension 5. Rank of the source-module : 23. ;; Clock -> 1998-12-28, 13h 25m 33s. Computing the boundary of the generator 1 (dimension 5) : <>]>>]>> End of computing. ;; Clock -> 1998-12-28, 13h 25m 33s. Computing the boundary of the generator 2 (dimension 5) : < >]>>]>> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-28, 13h 25m 38s. Computing the boundary of the generator 23 (dimension 5) : < >]>>][1 < >]>>]... End of computing. Computing boundary-matrix in dimension 6. Rank of the source-module : 53. ;; Clock -> 1998-12-28, 13h 25m 38s. Computing the boundary of the generator 1 (dimension 6) : < >]>>]>> End of computing. [ ... Lines deleted ...] ;; Clock -> 1998-12-28, 13h 26m 43s. Computing the boundary of the generator 53 (dimension 6) : < >]>>][1 < >]>>]... End of computing. Homology in dimension 5 : Component Z/2Z Component Z/2Z Component Z/2Z Component Z/2Z Component Z/2Z ---done--- ;; Clock -> 1998-12-28, 13h 26m 46s.
The result H5 = Z25 is obtained in 2 minutes.
Another Lisp session is started and we want now to construct the space \Omega(\Omega(S3) \cup2 D3). The 3-sphere is constructed and assigned to the symbol s3, and the loop-space is assigned to the symbol os3:
USER(3): (setf s3 (sphere 3)) [K1 Simplicial-Set] USER(4): (setf os3 (loop-space s3)) [K6 Simplicial-Group]
We attach a 3-disk, that is a 3-simplex, to the loop-space. The faces number 0 and 2 of the 3-simplex are identified with the "fundamental" simplex of the loop space; on the contrary the faces number 1 and 3 are collapsed to the base point. This is done as follows; the resulting space, a simplicial set, is assigned to the symbol dos3:
USER(7): (setf dos3 (disk-pasting os3 3 'new (list (loop3 0 's3 1) (absm 3 +null-loop+) (loop3 0 's3 1) (absm 3 +null-loop+)))) [K18 Simplicial-Set]
We verify the homology of dos3 in dimension 2 is the right one:
USER(8): (homology dos3 2) Computing boundary-matrix in dimension 2. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 40m 26s. Computing the boundary of the generator 1 (dimension 2) : <> End of computing. Computing boundary-matrix in dimension 3. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 40m 26s. Computing the boundary of the generator 1 (dimension 3) : NEW End of computing. Homology in dimension 2 : Component Z/2Z ---done--- ;; Clock -> 1998-12-28, 14h 40m 26s.
The loop-space of dos3 is constructed and we are interested by its H5:
USER(9): (setf odos3 (loop-space dos3)) [K137 Simplicial-Group] USER(10): (homology odos3 5) Computing boundary-matrix in dimension 5. Rank of the source-module : 14. ;; Clock -> 1998-12-28, 14h 41m 3s. Computing the boundary of the generator 1 (dimension 5) : <>]>> End of computing. [ ... Lines deleted ...] ;; Clock -> 1998-12-28, 14h 41m 4s. Computing the boundary of the generator 14 (dimension 5) : < >][1 < >][1 < >][1 < >][1 < >]>> End of computing. Computing boundary-matrix in dimension 6. Rank of the source-module : 26. ;; Clock -> 1998-12-28, 14h 41m 4s. Computing the boundary of the generator 1 (dimension 6) : < >][5 < >]>> End of computing. [ ... Lines deleted ... ] ;; Clock -> 1998-12-28, 14h 41m 6s. Computing the boundary of the generator 26 (dimension 6) : < >][1 < >][1 < >][1 < >][1 < >][1 < >]>> End of computing. Homology in dimension 5 : Component Z/2Z Component Z/2Z Component Z/2Z Component Z/2Z Component Z/2Z Component Z/2Z Component Z ---done--- ;; Clock -> 1998-12-28, 14h 41m 6s.
The result H5 = Z + Z26 is obtained in 40 seconds.
Another Lisp session is started. The space P3 = P\inftyR/P²R is constructed; the ordinary cellular model of P\inftyR has one cell En for every dimension n; each n-cell is attached to the (n-1)-skeletton Pn-1R by the canonical map Sn-1 -> Pn-1R. Our space P3 is P\inftyR where the 2-skeletton is collapsed to the base point.
The Z-homology of P3 is verified up to the dimension 9.
USER(3): (setf p3 (r-proj-space 3)) [K1 Simplicial-Set] USER(4): (homology p3 0 10) Computing boundary-matrix in dimension 0. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 0) : 0 End of computing. Computing boundary-matrix in dimension 1. Rank of the source-module : 0. Homology in dimension 0 : Component Z ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 1. Rank of the source-module : 0. Computing boundary-matrix in dimension 2. Rank of the source-module : 0. Homology in dimension 1 : ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 2. Rank of the source-module : 0. Computing boundary-matrix in dimension 3. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 3) : 3 End of computing. Homology in dimension 2 : ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 3. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 3) : 3 End of computing. Computing boundary-matrix in dimension 4. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 4) : 4 End of computing. Homology in dimension 3 : Component Z/2Z ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 4. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 4) : 4 End of computing. Computing boundary-matrix in dimension 5. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 5) : 5 End of computing. Homology in dimension 4 : ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 5. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 5) : 5 End of computing. Computing boundary-matrix in dimension 6. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 6) : 6 End of computing. Homology in dimension 5 : Component Z/2Z ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 6. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 6) : 6 End of computing. Computing boundary-matrix in dimension 7. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 7) : 7 End of computing. Homology in dimension 6 : ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 7. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 7) : 7 End of computing. Computing boundary-matrix in dimension 8. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 8) : 8 End of computing. Homology in dimension 7 : Component Z/2Z ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 8. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 8) : 8 End of computing. Computing boundary-matrix in dimension 9. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 9) : 9 End of computing. Homology in dimension 8 : ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s. Computing boundary-matrix in dimension 9. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 9) : 9 End of computing. Computing boundary-matrix in dimension 10. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 14h 59m 0s. Computing the boundary of the generator 1 (dimension 10) : 10 End of computing. Homology in dimension 9 : Component Z/2Z ---done--- ;; Clock -> 1998-12-28, 14h 59m 0s.
We have H3(P3) = \pi3(P3) = Z2, and we want to construct the first stage of the Whitehead tower. We must construct the canonical fibration K(Z2,2) -> X4 -> P3, associated to the canonical Z2-cohomology class on P3. The kenzo function chml-clss constructs this cohomology class which is assigned to the symbol ch3. Then the function z2-whitehead, using the space p3 and the cohomology class ch3, constructs the desired Whitehead fibration f3. Finally the Kenzo function fibration-total extracts from this fibration the total space, assigned to the symbol x4. The \pi4 of P3 is the H4 of x4, in fact null, so that this fibration gives immediately the \pi5 of P3, certainly the H5 of x4, namely the group Z2.
USER(5): (setf ch3 (chml-clss p3 3)) [K12 Cohomology-Class (degree 3)] USER(6): (setf f3 (z2-whitehead p3 ch3)) [K37 Fibration] USER(7): (setf x4 (fibration-total f3)) [K43 Simplicial-Set] USER(8): (homology x4 0 6) Computing boundary-matrix in dimension 0. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 0) :>> End of computing. Computing boundary-matrix in dimension 1. Rank of the source-module : 0. Homology in dimension 0 : Component Z ---done--- ;; Clock -> 1998-12-28, 15h 0m 15s. Computing boundary-matrix in dimension 1. Rank of the source-module : 0. Computing boundary-matrix in dimension 2. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 2) : >> End of computing. Homology in dimension 1 : ---done--- ;; Clock -> 1998-12-28, 15h 0m 15s. Computing boundary-matrix in dimension 2. Rank of the source-module : 1. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 2) : >> End of computing. Computing boundary-matrix in dimension 3. Rank of the source-module : 2. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 3) : >> End of computing. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 2 (dimension 3) : >> End of computing. Homology in dimension 2 : ---done--- ;; Clock -> 1998-12-28, 15h 0m 15s. Computing boundary-matrix in dimension 3. Rank of the source-module : 2. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 3) : >> End of computing. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 2 (dimension 3) : >> End of computing. Computing boundary-matrix in dimension 4. Rank of the source-module : 3. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 4) : >> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 3 (dimension 4) : >> End of computing. Homology in dimension 3 : ---done--- ;; Clock -> 1998-12-28, 15h 0m 15s. Computing boundary-matrix in dimension 4. Rank of the source-module : 3. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 4) : >> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 3 (dimension 4) : >> End of computing. Computing boundary-matrix in dimension 5. Rank of the source-module : 5. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 5) : >> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 5 (dimension 5) : >> End of computing. Homology in dimension 4 : ---done--- ;; Clock -> 1998-12-28, 15h 0m 15s. Computing boundary-matrix in dimension 5. Rank of the source-module : 5. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 5) : >> End of computing. [... Lines deleted ...] Computing boundary-matrix in dimension 6. Rank of the source-module : 8. ;; Clock -> 1998-12-28, 15h 0m 15s. Computing the boundary of the generator 1 (dimension 6) : >> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-28, 15h 0m 16s. Computing the boundary of the generator 8 (dimension 6) : >> End of computing. Homology in dimension 5 : Component Z/2Z ---done--- ;; Clock -> 1998-12-28, 15h 0m 16s.
The result is obtained in 1 second. The same work gives \pi6(P3) = Z2 in 1 minute:
USER(11): (setf ch5 (chml-clss x4 5)) [K222 Cohomology-Class (degree 5)] USER(12): (setf f5 (z2-whitehead x4 ch5)) [K249 Fibration] USER(13): (setf x6 (fibration-total f5)) [K255 Simplicial-Set] USER(14): (homology x6 6) Computing boundary-matrix in dimension 6. Rank of the source-module : 11. ;; Clock -> 1998-12-28, 15h 1m 41s. Computing the boundary of the generator 1 (dimension 6) :>> < >]>>]>>> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-28, 15h 1m 43s. Computing the boundary of the generator 11 (dimension 6) : >> < >> End of computing. Computing boundary-matrix in dimension 7. Rank of the source-module : 20. ;; Clock -> 1998-12-28, 15h 1m 44s. Computing the boundary of the generator 1 (dimension 7) : >> < >]>>]>>> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-28, 15h 2m 13s. Computing the boundary of the generator 20 (dimension 7) : >> < >> 5020088 bytes have been tenured, next gc will be global. See the documentation for variable *GLOBAL-GC-BEHAVIOR* for more information. End of computing. Homology in dimension 6 : Component Z/2Z ---done--- ;; Clock -> 1998-12-28, 15h 2m 27s.
and continuing in the same way, the following result \pi7(P3) = Z2 + Z4 is obtained:
USER(15): (setf ch6 (chml-clss x6 6)) [K594 Cohomology-Class (degree 6)] USER(16): (setf f6 (z2-whitehead x6 ch6)) [K609 Fibration] USER(17): (setf x7 (fibration-total f6)) [K615 Simplicial-Set] USER(18): (homology x7 7) Computing boundary-matrix in dimension 7. Rank of the source-module : 23. ;; Clock -> 1998-12-28, 15h 6m 27s. Computing the boundary of the generator 1 (dimension 7) :>> < >> < >]>>]>>]>>> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-28, 15h 9m 10s. Computing the boundary of the generator 23 (dimension 7) : >> < >> < >> End of computing. Computing boundary-matrix in dimension 8. Rank of the source-module : 43. ;; Clock -> 1998-12-28, 15h 10m 54s. Computing the boundary of the generator 1 (dimension 8) : >> < >> < >]>>]>>]>>> End of computing. [... Lines deleted ...] ;; Clock -> 1998-12-29, 1h 6m 51s. Computing the boundary of the generator 43 (dimension 8) : >> < >> < >> End of computing. Homology in dimension 7 : Component Z/4Z Component Z/2Z ---done--- ;; Clock -> 1998-12-29, 10h 17m 32s.
but as you see, a little more time is necessary: about 20 hours; in particular 9 hours have been needed to compute the boundary of the last generator in dimension 8. These computations are done only with our effective versions of the Serre and Eilenberg-Moore spectral sequences; the next challenge consists in doing the same work with the Adams spectral sequence. A quite interesting challenge.