Ongoing Org experiment.

This commit is contained in:
Gerd Heber 2017-12-30 18:04:17 -06:00
parent 3746758860
commit 78110ace2e
4 changed files with 239 additions and 70 deletions

View File

@ -1,3 +1,8 @@
#+BEGIN_SRC lisp :session 00 :exports none :results silent
(ql:quickload "kenzo")
(use-package :cat)
#+END_SRC
* Overview * Overview
@ -9,11 +14,11 @@ labelled =*=, =M3= and =N4=. The faces 0 and 2 of the 4-simplex =N4= are
identified with (pasted to) the 3-simplex =M3=, the others being contracted on identified with (pasted to) the 3-simplex =M3=, the others being contracted on
the base point. To create the simplicial set one types simply: the base point. To create the simplicial set one types simply:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar m23) (defvar m23)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf m23 (moore 2 3)) (setf m23 (moore 2 3))
#+END_SRC #+END_SRC
@ -23,7 +28,7 @@ the base point. To create the simplicial set one types simply:
The system answers that a Kenzo object has been created, with number 1 and The system answers that a Kenzo object has been created, with number 1 and
type =SIMPLICIAL SET=. This object may be referenced by the symbol =m23=. type =SIMPLICIAL SET=. This object may be referenced by the symbol =m23=.
#+BEGIN_SRC lisp :session cat #+BEGIN_SRC lisp :session 00
m23 m23
#+END_SRC #+END_SRC
@ -35,7 +40,7 @@ complex induced by the simplicial set description. Here we compute the $H_i$
from 0 to 4 included. When in the answer the component part is void, it means from 0 to 4 included. When in the answer the component part is void, it means
that the corresponding homology group is null. that the corresponding homology group is null.
#+BEGIN_SRC lisp :session cat :results output #+BEGIN_SRC lisp :session 00 :results output
(homology m23 0 5) (homology m23 0 5)
#+END_SRC #+END_SRC
@ -180,11 +185,11 @@ As =m23= is a simplicial set, it is possible to create the cartesian product
=m23xm23= by the function =crts-prdc= (= CaRTeSian PRoDuCt). This is a new =m23xm23= by the function =crts-prdc= (= CaRTeSian PRoDuCt). This is a new
simplicial set. simplicial set.
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar m23xm23) (defvar m23xm23)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf m23xm23 (crts-prdc m23 m23)) (setf m23xm23 (crts-prdc m23 m23))
#+END_SRC #+END_SRC
@ -194,14 +199,14 @@ simplicial set.
Being a simplicial set, =m23xm23= is also a chain complex object and we may for Being a simplicial set, =m23xm23= is also a chain complex object and we may for
instance ask for the basis in dimension 6. instance ask for the basis in dimension 6.
#+BEGIN_SRC lisp :session cat :exports both :results verbatim #+BEGIN_SRC lisp :session 00 :exports both :results verbatim
(basis m23xm23 6) (basis m23xm23 6)
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: (<CrPr 1-0 N4 3-2 N4> <CrPr 1-0 N4 4-2 N4> <CrPr 1-0 N4 4-3 N4> <CrPr 1-0 N4 4-3-2 M3> <CrPr 1-0 N4 5-2 N4> <CrPr 1-0 N4 5-3 N4> <CrPr 1-0 N4 5-3-2 M3> <CrPr 1-0 N4 5-4 N4> <CrPr 1-0 N4 5-4-2 M3> <CrPr 1-0 N4 5-4-3 M3> ...) : (<CrPr 1-0 N4 3-2 N4> <CrPr 1-0 N4 4-2 N4> <CrPr 1-0 N4 4-3 N4> <CrPr 1-0 N4 4-3-2 M3> <CrPr 1-0 N4 5-2 N4> <CrPr 1-0 N4 5-3 N4> <CrPr 1-0 N4 5-3-2 M3> <CrPr 1-0 N4 5-4 N4> <CrPr 1-0 N4 5-4-2 M3> <CrPr 1-0 N4 5-4-3 M3> ...)
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(length (basis m23xm23 6)) (length (basis m23xm23 6))
#+END_SRC #+END_SRC
@ -220,18 +225,18 @@ two simplicial sets do not make sense, and Kenzo understands to work on the
underlying chain complex =m23=. This tensor product is a new chain complex and underlying chain complex =m23=. This tensor product is a new chain complex and
we see that the basis in dimension 6 has only one element: we see that the basis in dimension 6 has only one element:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar t2m23) (defvar t2m23)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf t2m23 (tnsr-prdc m23 m23)) (setf t2m23 (tnsr-prdc m23 m23))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: [K3 Chain-Complex] : [K3 Chain-Complex]
#+BEGIN_SRC lisp :session cat :exports both :results verbatim #+BEGIN_SRC lisp :session 00 :exports both :results verbatim
(basis t2m23 6) (basis t2m23 6)
#+END_SRC #+END_SRC
@ -243,7 +248,7 @@ cartesian product space: as chain complexes, =m23xm23= and =t2m23= have the
same homology groups, but the computations using the tensor product are same homology groups, but the computations using the tensor product are
considerably faster. The user can check Künneth's theorem. considerably faster. The user can check Künneth's theorem.
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(homology m23xm23 0 8) (homology m23xm23 0 8)
#+END_SRC #+END_SRC
@ -518,11 +523,11 @@ In =Kenzo=, a non-degenerate simplex of $\mathrm{K}(\mathbb{Z}, 1)$ in
dimension $n$ will be simply a list of $n$ non-null integers, for instance: dimension $n$ will be simply a list of $n$ non-null integers, for instance:
=(2 3 4 5)=. In dimension 0, the only simplex is =NIL= (the base point). =(2 3 4 5)=. In dimension 0, the only simplex is =NIL= (the base point).
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar kz1) (defvar kz1)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf kz1 (k-z 1)) (setf kz1 (k-z 1))
#+END_SRC #+END_SRC
@ -532,7 +537,7 @@ dimension $n$ will be simply a list of $n$ non-null integers, for instance:
But this object is also a /coalgebra/ and an /algebra/, and we may see the But this object is also a /coalgebra/ and an /algebra/, and we may see the
effect of the respective induced /coproduct/ and /product/: effect of the respective induced /coproduct/ and /product/:
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (cprd kz1 4 '(2 3 4 5))) (princ (cprd kz1 4 '(2 3 4 5)))
#+END_SRC #+END_SRC
@ -546,7 +551,7 @@ effect of the respective induced /coproduct/ and /product/:
: <1 * <TnPr (2 3 4 5) NIL>> : <1 * <TnPr (2 3 4 5) NIL>>
: ------------------------------------------------------------------------------ : ------------------------------------------------------------------------------
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (aprd kz1 6 (tnpr 2 '(1 2) 4 '(3 4 5 6)))) (princ (aprd kz1 6 (tnpr 2 '(1 2) 4 '(3 4 5 6))))
#+END_SRC #+END_SRC
@ -576,11 +581,11 @@ morphisms. The degree of the combination is indicated by the information:
In the same way, we may create the Abelian simplicial groups In the same way, we may create the Abelian simplicial groups
$\mathrm{K}(\mathbb{Z}/2\mathbb{Z}, n)$: $\mathrm{K}(\mathbb{Z}/2\mathbb{Z}, n)$:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar k-z2-2) (defvar k-z2-2)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf k-z2-2 (k-z2 2)) (setf k-z2-2 (k-z2 2))
#+END_SRC #+END_SRC
@ -650,7 +655,7 @@ Let us play now with the sphere $S^3$ and its loop spaces. $S^3$ and
$\Omega^2 S^3$ are created by respective calls to the functions =sphere= and $\Omega^2 S^3$ are created by respective calls to the functions =sphere= and
=loop-space=. Then we compute the $H_4$ and $H_5$ of $\Omega^2 S^3$: =loop-space=. Then we compute the $H_4$ and $H_5$ of $\Omega^2 S^3$:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar s3) (defvar s3)
#+END_SRC #+END_SRC
@ -661,18 +666,18 @@ $\Omega^2 S^3$ are created by respective calls to the functions =sphere= and
#+RESULTS: #+RESULTS:
: [K174 Simplicial-Set] : [K174 Simplicial-Set]
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar o2s3) (defvar o2s3)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf o2s3 (loop-space s3 2)) (setf o2s3 (loop-space s3 2))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: [K191 Simplicial-Group] : [K191 Simplicial-Group]
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(homology o2s3 4 6) (homology o2s3 4 6)
#+END_SRC #+END_SRC
@ -854,11 +859,11 @@ Component Z/2Z
Let us take now the first loop space $\Omega^1 S^3$ Let us take now the first loop space $\Omega^1 S^3$
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar os3) (defvar os3)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf os3 (loop-space s3)) (setf os3 (loop-space s3))
#+END_SRC #+END_SRC
@ -871,11 +876,11 @@ original sphere. In fact, the object created by the command
$\texttt{(loop3 0 's3 1)}$ is the "word" $S3^1$ belonging to the Kan simplicial $\texttt{(loop3 0 's3 1)}$ is the "word" $S3^1$ belonging to the Kan simplicial
version $G(S^3)$ (a simplicial group) of the loop space $\Omega S^3$. version $G(S^3)$ (a simplicial group) of the loop space $\Omega S^3$.
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar L1) (defvar L1)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (setf L1 (loop3 0 's3 1))) (princ (setf L1 (loop3 0 's3 1)))
#+END_SRC #+END_SRC
@ -886,11 +891,11 @@ Let us consider also the 2-degeneracy of the base point of the loop space. In
the printed result, the user will recognize the degeneracy $\eta_1\eta_0$ of the printed result, the user will recognize the degeneracy $\eta_1\eta_0$ of
the null loop, base point of $\Omega^1 S^3$: the null loop, base point of $\Omega^1 S^3$:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar null-simp) (defvar null-simp)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (setf null-simp (absm 3 +null-loop+))) (princ (setf null-simp (absm 3 +null-loop+)))
#+END_SRC #+END_SRC
@ -905,11 +910,11 @@ following call. It means that we "paste" to the space =os3= a 3-simplex named
collapsed on the base point; in this way the attaching map collapsed on the base point; in this way the attaching map
$(S^2 \rightarrow \Omega S^3)$ has degree 2. $(S^2 \rightarrow \Omega S^3)$ has degree 2.
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar dos3) (defvar dos3)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf dos3 (disk-pasting os3 3 '<D3> (list L1 null-simp L1 null-simp))) (setf dos3 (disk-pasting os3 3 '<D3> (list L1 null-simp L1 null-simp)))
#+END_SRC #+END_SRC
@ -918,7 +923,7 @@ $(S^2 \rightarrow \Omega S^3)$ has degree 2.
Let us compute a few homology groups of the new space =dos3=: Let us compute a few homology groups of the new space =dos3=:
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(homology dos3 2 4) (homology dos3 2 4)
#+END_SRC #+END_SRC
@ -993,18 +998,18 @@ Homology in dimension 3 :
But more interesting, let us build the loop space of the object =dos3= and let But more interesting, let us build the loop space of the object =dos3= and let
us compute the homology in dimension 5: us compute the homology in dimension 5:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar odos3) (defvar odos3)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf odos3 (loop-space dos3)) (setf odos3 (loop-space dos3))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: [K471 Simplicial-Group] : [K471 Simplicial-Group]
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(homology odos3 5) (homology odos3 5)
#+END_SRC #+END_SRC
@ -1289,21 +1294,21 @@ Let us continue with the Kan theory. First, we check that $S^3$ is not of type
Kan and that $\Omega S^3$ is indeed of type Kan and a non-Abelian simplicial Kan and that $\Omega S^3$ is indeed of type Kan and a non-Abelian simplicial
group. group.
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(typep s3 'kan) (typep s3 'kan)
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: NIL : NIL
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(typep os3 'kan) (typep os3 'kan)
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: T : T
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(typep os3 'simplicial-group) (typep os3 'simplicial-group)
#+END_SRC #+END_SRC
@ -1320,22 +1325,22 @@ group.
Let us create the word $L2=(S3)^2$, i.e an object belonging to $\Omega S^3$ and Let us create the word $L2=(S3)^2$, i.e an object belonging to $\Omega S^3$ and
let us apply the product of the underlying algebra upon $L2 \otimes L2$: let us apply the product of the underlying algebra upon $L2 \otimes L2$:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar L2) (defvar L2)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (setf L2 (loop3 0 's3 2))) (princ (setf L2 (loop3 0 's3 2)))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: <<Loop[S3\2]>> : <<Loop[S3\2]>>
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar square) (defvar square)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (setf square (aprd os3 4 (tnpr 2 L2 2 L2)))) (princ (setf square (aprd os3 4 (tnpr 2 L2 2 L2))))
#+END_SRC #+END_SRC
@ -1354,11 +1359,11 @@ We see that the result is a linear combination of words composed from
degeneracies of =L2=. The following instruction selects the generator part of degeneracies of =L2=. The following instruction selects the generator part of
the second element of the previous combination. the second element of the previous combination.
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar L4) (defvar L4)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (setf L4 (gnrt (second (cmbn-list square))))) (princ (setf L4 (gnrt (second (cmbn-list square)))))
#+END_SRC #+END_SRC
@ -1370,11 +1375,11 @@ Let us use the lisp function =mapcar= (one among the various iteration
functions of Lisp) to create the list of the faces 1, 2, 3 and 4 of the object functions of Lisp) to create the list of the faces 1, 2, 3 and 4 of the object
=L4=, this list is a "Kan horn". =L4=, this list is a "Kan horn".
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar horn) (defvar horn)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (setf horn (mapcar #'(lambda (i) (face os3 i 4 l4)) '(1 2 3 4)))) (princ (setf horn (mapcar #'(lambda (i) (face os3 i 4 l4)) '(1 2 3 4))))
#+END_SRC #+END_SRC
@ -1386,11 +1391,11 @@ The function =kfll= tries to find a filling of this "Kan horn", and we see that
the face 2 of the resulting simplex (which is very different from =L4=) is the the face 2 of the resulting simplex (which is very different from =L4=) is the
same as the face 2 of =L4=. same as the face 2 of =L4=.
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar kan-simplex) (defvar kan-simplex)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (setf kan-simplex (kfll os3 0 4 horn))) (princ (setf kan-simplex (kfll os3 0 4 horn)))
#+END_SRC #+END_SRC
@ -1398,7 +1403,7 @@ same as the face 2 of =L4=.
: :
: <AbSm - <<Loop[3-1 S3\2][2-1 S3\-2][2-0 S3\2][1-0 S3\-2][2-1 S3\2][3-1 S3\-2][1-0 S3\2][3-1 S3\2][3-0 S3\-2][1-0 S3\-2][3-0 S3\2][2-0 S3\-2][1-0 S3\2][3-0 S3\-2][2-0 S3\2][3-0 S3\2]>>> : <AbSm - <<Loop[3-1 S3\2][2-1 S3\-2][2-0 S3\2][1-0 S3\-2][2-1 S3\2][3-1 S3\-2][1-0 S3\2][3-1 S3\2][3-0 S3\-2][1-0 S3\-2][3-0 S3\2][2-0 S3\-2][1-0 S3\2][3-0 S3\-2][2-0 S3\2][3-0 S3\2]>>>
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (face os3 2 4 kan-simplex)) (princ (face os3 2 4 kan-simplex))
#+END_SRC #+END_SRC
@ -1406,7 +1411,7 @@ same as the face 2 of =L4=.
: :
: <AbSm - <<Loop[0 S3\2][2 S3\2]>>> : <AbSm - <<Loop[0 S3\2][2 S3\2]>>>
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(princ (second horn)) (princ (second horn))
#+END_SRC #+END_SRC
@ -1422,25 +1427,25 @@ ${\cal G}$. In our case, as $\Omega S^3$ in non-Abelian, the result is not a
simplicial group but only a simplicial set. We verify that the $H_4$, which in simplicial group but only a simplicial set. We verify that the $H_4$, which in
principle should be isomorphic to $H_4 S^3 = 0$, is really null. principle should be isomorphic to $H_4 S^3 = 0$, is really null.
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar cls-os3) (defvar cls-os3)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf cls-os3 (classifying-space os3)) (setf cls-os3 (classifying-space os3))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: [K938 Simplicial-Set] : [K938 Simplicial-Set]
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(typep cls-os3 'simplicial-group) (typep cls-os3 'simplicial-group)
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: NIL : NIL
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(homology cls-os3 4) (homology cls-os3 4)
#+END_SRC #+END_SRC
@ -1486,11 +1491,11 @@ We take again $\mathrm{Moore}(\mathbb{Z}/2\mathbb{Z}, 3)$ whose $H_3$ is
$\mathbb{Z}/2\mathbb{Z}$. First the fundamental cohomology class is $\mathbb{Z}/2\mathbb{Z}$. First the fundamental cohomology class is
constructed: constructed:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar ch3) (defvar ch3)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf ch3 (chml-clss m23 3)) (setf ch3 (chml-clss m23 3))
#+END_SRC #+END_SRC
@ -1500,11 +1505,11 @@ constructed:
Then the function =z2-whitehead= is called to build a fibration over the Then the function =z2-whitehead= is called to build a fibration over the
simplicial set =m23= canonically associated to the cohomology class =ch3=. simplicial set =m23= canonically associated to the cohomology class =ch3=.
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar f3) (defvar f3)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf f3 (z2-whitehead m23 ch3)) (setf f3 (z2-whitehead m23 ch3))
#+END_SRC #+END_SRC
@ -1513,11 +1518,11 @@ simplicial set =m23= canonically associated to the cohomology class =ch3=.
Then the total space of the fibration is built: Then the total space of the fibration is built:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar x4) (defvar x4)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf x4 (fibration-total f3)) (setf x4 (fibration-total f3))
#+END_SRC #+END_SRC
@ -1527,7 +1532,7 @@ Then the total space of the fibration is built:
The $H_4$ of this total space is the $\pi_4$ of The $H_4$ of this total space is the $\pi_4$ of
$\mathrm{Moore}(\mathbb{Z}/2\mathbb{Z})$: $\mathrm{Moore}(\mathbb{Z}/2\mathbb{Z})$:
#+BEGIN_SRC lisp :session cat :exports both :results output #+BEGIN_SRC lisp :session 00 :exports both :results output
(homology x4 3 5) (homology x4 3 5)
#+END_SRC #+END_SRC
@ -1650,29 +1655,29 @@ Component Z/2Z
We may now iterate the process, to compute the $\pi_5$ of We may now iterate the process, to compute the $\pi_5$ of
$\mathrm{Moore}(\mathbb{Z}/2\mathbb{Z})$: $\mathrm{Moore}(\mathbb{Z}/2\mathbb{Z})$:
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar ch4) (defvar ch4)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf ch4 (chml-clss x4 4)) (setf ch4 (chml-clss x4 4))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: [K1318 Cohomology-Class on K1303 of degree 4] : [K1318 Cohomology-Class on K1303 of degree 4]
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar f4) (defvar f4)
#+END_SRC #+END_SRC
#+BEGIN_SRC lisp :session cat :exports both #+BEGIN_SRC lisp :session 00 :exports both
(setf f4 (z2-whitehead x4 ch4)) (setf f4 (z2-whitehead x4 ch4))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
: [K1333 Fibration K1237 -> K1319] : [K1333 Fibration K1237 -> K1319]
#+BEGIN_SRC lisp :session cat :exports none #+BEGIN_SRC lisp :session 00 :exports none
(defvar x5) (defvar x5)
#+END_SRC #+END_SRC

View File

@ -0,0 +1,168 @@
#+BEGIN_SRC lisp :session 01 :exports none :results silent
(ql:quickload "kenzo")
(use-package :cat)
#+END_SRC
* Chain Complexes
** Introduction
In the Kenzo program, a /chain complex/[fn:1]$(C_p, d_p)$ is a collection of free
\(\mathbb{Z}\)-modules $(C_p)$, one for each \(p\in\mathbb{Z}\), together with
a homomorphism $d_p : C_p \rightarrow C_{p-1}$, such that, for all
$p$, $d_{p-1} \circ d_p = 0$.
*In the Kenzo program*, a /morphism/ $f=(f_p)$, of degree $k$, from a chain
complex $(C_p, d_p)$ to another $(C'_p, d'_p)$ is a collection of homomorphisms
$$f_p : C_p \rightarrow C'_{p+k}.$$
This is expressed by the following diagram, generally not assumed commutative.
#+BEGIN_EXPORT latex
\[
\begin{aligned}
\cdots & \leftarrow & C_{p-1} & \quad\xleftarrow{d_p} & C_p & \quad\xleftarrow{d_{p+1}} & C_{p+1} & \quad\leftarrow & \cdots \\
& & f_{p-1} \Bigg\downarrow & & f_p \Bigg\downarrow & & f_{p+1} \Bigg\downarrow \\
\cdots & \leftarrow & C'_{p+k-1} & \quad\xleftarrow{d'_{p+k}} & C'_{p+k} &
\quad\xleftarrow{d'_{p+k+1}} & C'_{p+k+1} & \quad\leftarrow & \cdots
\end{aligned}
\]
#+END_EXPORT
Three types of morphisms are most generally considered.
1. $k=0$. If the commutativity relation $d'_p\circ f_p=f_{p-1}\circ d_p$ holds
for every $p$, then the morphism $f$ is an ordinary chain complex morphism
or /chain map/.
2. $k=-1$. If $(C_p,d_p)=(C'_p,d'_p)$ and $f_p=d_p$, then $f$ is the
/differential/ of the chain complex $(C_p,d_p)$ and, in fact, this
differential is implemented in the =Kenzo= program as a morphism of
degree $-1$. Also, if $d_p \neq f_p$ and $(d_{p-1}+f_{p-1})(d_p+f_p) = 0$
for every $p$, then $f_\ast$ is a perturbation of the differential $d_\ast$.
3. $k=+1$. In this case, $f$ is usually a /homotopy operator/, that is, some
relation $$d'_{p+1}\circ f_p+f_{p-1}\circ d_p=g_p-g'_p$$ is satisfied for
two (ordinary) chain complex morphisms $g_\ast$ and $g'_\ast$, and $f_\ast$
is a homotopy between $g_\ast$ and $g'_\ast$.
For technical reasons, these three types of morphisms have been implemented in
the =Kenzo= program in a unique type.
[fn:1] *P.J. Giblin* in /Graph, Surface and Homology/, Chapman and Hall Math.
series, 1981.
** Generators, terms, and combinations
To become familiar with the Lisp functions implementing the chain complexes,
the best is to begin with an example. /Simplicial complexes/ are good
candidates for this purpose, and we shall take as a typical example the
following simplicial complex.
[[./diabolo.pdf]]
In this simplicial complex, called here /diabolo/, there are 3 non-null chain
groups.
- $C_0$, the free \(\mathbb{Z}\)-module on the set of vertices
$\{s_0,s_1,s_2,s_3,s_4,s_5\}$
- $C_1$, the free \(\mathbb{Z}\)-module on the set of edges
$\{s_{01},s_{02},s_{12},s_{23},s_{34},s_{35}, s_{45}\}$
- $C_2$, the free \(\mathbb{Z}\)-module on the set of triangles (here a
singleton) $\{s_{345}\}$
The elements of either of those groups $C_p$ are linear integer combinations of
the corresponding basis $\beta_p$, i.e. elements of the form:
$$
\sum_{b \in \beta_p} \lambda_b b.
$$
For example $2 s_{02} - 3 s_{34} \in C_1$. An element $b$ of the basis
$\beta_p$ of $C_p$ is called a /generator/ of $C_p$ and in our specific case
this generator will be represented by a Lisp symbol. For instance, $s_{45}$
will be translated into =s45=. However, the user should be aware that in more
realistic usage of the software, generators may be of any type. A product such
as $\lambda_i\sigma_i$ is called a /term/ and a sum of terms, a /combination/.
*** Representation of a combination
A combination is represented internally in the system by a structure having the
following general form:
$$\#\texttt{S(CMBN}\quad\texttt{DEGREE P}\quad\texttt{LIST (}\texttt{(}
\lambda_1\cdot\sigma_1\texttt{)}\dots\texttt{(}\lambda_k\cdot\sigma_k
\texttt{)))}$$
and containing
1. The degree of the combination corresponding to the index \(p\in\mathbb{Z}\)
of the group $C_p$ to which this combination belongs.
2. The list of the internal representation of the terms, namely the list of
pairs $(\lambda_i\cdot\sigma_i)$.
This choice of representation implies that only homogeneous combinations will
be considered. The type =CMBN= and a printing method are provided with this
internal representation. The external form of a combination is shown in the
examples.
*** Ordering the generators
In order to speed up the execution of algorithms involving combinations, the
list of pairs $(\lambda_i.\sigma_i)$ is ordered by an adequate ordering
function (e.g., the lexicographical ordering on the symbols). For programming
convenience, an enumerated type =CMPR= has been defined:
#+BEGIN_EXAMPLE
(deftype cmpr() '(member :less :equal :greater))
#+END_EXAMPLE
A number of macros, functions and methods have been defined on usual sets
(symbols, numbers, lists, etc.) taking their value in the set
=[:less, :equal, :greater]=. Of course, the user may define its own function
for a particular case. There exists functions to compare various couples of
usual items:
=f-cmpr= /n1 n2/ | /[Function]/
+ Return =:less=, =:equal=, =:greater=, according to the result of the
canonical comparison of both integers /n1/ and /n2/.
=s-cmpr= /symbol1 symbol2/ | /[Function]/
+ Return =:less=, =:equal=, =:greater=, according to the result of the Lisp
comparison functions on the strings =(symbol-name= /symbol1/ =)= and
=(symbol-name= /symbol2/ =)=
=l-cmpr= /list1 list2/ | /[Function]/
+ Return =:less=, =:equal=, =:greater=, according to the lexicographical
ordering of the two lists /list1/ and /list2/, making sense only if /list1/
and /list2/ are lists made of integers, symbols and/or lists; in the last
case, the qualifier /list/ is to be understood recursively.
**** Examples
#+BEGIN_SRC lisp :session 01 :exports both
(f-cmpr 123 789)
#+END_SRC
#+RESULTS:
: :LESS
#+BEGIN_SRC lisp :session 01 :exports both
(s-cmpr 'circulation 'circular)
#+END_SRC
#+RESULTS:
: :GREATER
#+BEGIN_SRC lisp :session 02 :exports both
(s-cmpr 'qwerty 'qwerty)
#+END_SRC
#+RESULTS:
: :EQUAL
#+BEGIN_SRC lisp :session 02 :exports both
(l-cmpr '(1 a b) '(1 a))
#+END_SRC
#+RESULTS:
: :GREATER

View File

@ -2,10 +2,6 @@
#+AUTHOR: Julio Rubio Garcia, Francis Sergeraert, Yvon Siret #+AUTHOR: Julio Rubio Garcia, Francis Sergeraert, Yvon Siret
#+DATE: April 26, 1999 #+DATE: April 26, 1999
#+BEGIN_SRC lisp :session cat :exports none :results silent
(ql:quickload "kenzo")
(use-package :cat)
#+END_SRC
#+INCLUDE: "Foreword.org" #+INCLUDE: "Foreword.org"
#+INCLUDE: "00_Overview.org" #+INCLUDE: "00_Overview.org"
#+INCLUDE: "01_Chain_Complexes.org"

BIN
doc/org/diabolo.pdf Normal file

Binary file not shown.