kenzo/examples/14_Disk_pasting_and_suspension.ipynb
2017-10-08 20:11:31 -05:00

3804 lines
102 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"To load \"kenzo\":\n",
" Load 1 ASDF system:\n",
" kenzo\n",
"; Loading \"kenzo\"\n",
"\n"
]
},
{
"data": {
"text/plain": [
"#<PACKAGE \"CAT\">"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(ql:quickload \"kenzo\")\n",
"(in-package :cat)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Disk pasting and suspension\n",
"\n",
"## Introduction\n",
"\n",
"Let us recall the technique of space construction by *attaching maps* (**Marvin Greenberg** in\n",
"*Lectures on Algebraic Topology.* Benjamin Inc, 1967.). Let $A$ be a subspace of a space $X$ and a map $f$ of $A$ into a space $Y$. In the space $X \\coprod Y$, the disjoint union of $X$ and $Y$, let us identify each $x$ in $A$ with its image $f(x)$ in $Y$. The quotient space $Z=X\\bigcup_f Y$ of the space $X\\coprod Y$ by the equivalence relation that the identification above determines, is called the *adjunction space* of the system $(X \\supset A), (Y\\supset f(A))$. The quotient map $g: X\\coprod Y \\rightarrow Z$ sends $Y$ onto a subspace of $Z$. \n",
"\n",
"In this section, we shall take as pair $(X,A)$ the pair $(D^n, S^{n-1})$, where $D^n$ is the unit disc of $\\mathbb{R}^n$ and $S^{n-1}$ is the sphere of dimension ${n-1}$, boundary of $D^n$. In this case, the space $Z=D^n\\bigcup_f Y$ is said to be obtained from $Y$ by *attaching an n-disc via* $f$, or *disk pasting*.\n",
"\n",
"## The functions for disk pasting\n",
"\n",
"The **Kenzo** program implements the previous technique of space construction, via simplicial sets. We know that $D^n$ is homeomorphic to the standard simplex $\\Delta^n$. The method used by the implementor is the following:\n",
"\n",
"Starting from a simplicial set *ss* representing $Y$, build a new one having the same simplices as *ss* and in dimension $n$, a new added simplex described by the user. This description consists of:\n",
"- a name (a symbol) for this new generator,\n",
"- the list of all its $n+1$ faces.\n",
"\n",
"`disk-pasting` *smst dmns new faces* *[Function]*\n",
"> Construct, from the simplicial set smst, a new simplicial set by attaching the unit disc of dimension *dmns*. The argument *faces* is the list of $dmn+1$ simplices corresponding to the faces of the new simplex attached to *smst*. These simplices are, in principle, written as abstract simplices (*absm*), nevertheless it is possible to write them as geometric simplices (*gmsm*). In this case, the corresponding geometric simplices must have the correct dimension. The program will transform these possible *gmsm*s into *absm*s in the *faces* argument. The argument *new* allows the user to name this new added simplex by a symbol. The program verifies the coherence of the addition of the new simplex by calling internally the function `check-faces`.\n",
"\n",
"`chcm-disk-pasting` *chcm dmns new bndr* *[Function]*\n",
"> Construct, from the chain complex *chcm* (chain groups ${\\cal C}_*$), a new chain complex (chain groups ${\\cal C}_*'$), where:\n",
"$$C'_p=C_p,\\quad \\forall p \\not= dmns,$$\n",
"$$C'_{dmns}= C_{dmns} \\oplus \\mathbb{Z}\\, new.$$\n",
"The symbol `new` is the name given by the user to a new generator in dimension $dmns$ and *bndr* is a combination of degree $dmns-1$ representing the boundary of the generator *new*. Of course, one must have $d_{dmns-1}(bndr)=0.$\n",
"\n",
"`hmeq-disk-pasting` *hmeq dmns new bndr* `&key` *new-lbcc* *[Function]*\n",
"> Construct a homotopy equivalence by attaching the generator *new* of dimension *dmns* with boundary *bndr* to the left bottom chain complex of the homotopy equivalence *hmeq*. This modification of the left bottom chain complex is propagated along the whole new homotopy equivalence.\n",
"The key parameter *new-lbcc* is for internal use.\n",
"\n",
"### Example\n",
"\n",
"Let us begin by a trivial example corresponding to the well known following result: if $f$ maps $S^{n-1}$ onto a point $Y$, then by disk pasting we obtain a space homeomorphic to $S^n$. Here, the point $Y$ will be represented by the trivial simplicial set:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"The object is a STANDARD-OBJECT of type SIMPLICIAL-SET.\n",
"0. CMPR: #<FUNCTION S-CMPR>\n",
"1. BASIS: #<CLOSURE (FLET RSLT :IN FINITE-SS-BASIS) {1001988EEB}>\n",
"2. BSGN: *\n",
"3. DFFR: [K2 Morphism (degree -1): K1 -> K1]\n",
"4. GRMD: [K1 Simplicial-Set]\n",
"5. EFHM: \"unbound\"\n",
"6. IDNM: 1\n",
"7. ORGN: (BUILD-FINITE-SS (*))\n",
"8. CPRD: [K5 Morphism (degree 0): K1 -> K3]\n",
"9. FACE: #<CLOSURE (FLET RSLT :IN FINITE-SS-FACE) {1001988F0B}>\n",
"> \n",
"Checking the 0-simplices..."
]
},
{
"data": {
"text/plain": [
"[K1 Simplicial-Set]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def s0 (build-finite-ss '(*)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the identification process, the 1-simplices boundaries of the 2-simplex $\\Delta^2$ are applied on the 0--degeneracy of the base point $*$."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K6 Simplicial-Set]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def s2 (disk-pasting s0 \n",
" 2 \n",
" 's2 \n",
" (list (absm 1 '*) (absm 1 '*) (absm 1 '*)) )) "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Dimension = 0:\n",
"\n",
" Vertices : (*)\n",
"\n",
"Dimension = 1:\n",
"\n",
"Dimension = 2:\n",
"\n",
" Simplex : S2\n",
"\n",
" Faces : (<AbSm 0 *> <AbSm 0 *> <AbSm 0 *>)"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(show-structure s2 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"More interesting is the construction of the successive projectives spaces $P^i\\mathbb{R}$. Let us begin by $P^1\\mathbb{R}$. We start from a point (the simplicial set `s0`) and we identify the two boundary points of $\\Delta^1$ to the base point of `s0`. The new simplex to be added to `s0` is of dimension 1 and its 2 faces are the base point itself. It is well known that the resulting corresponding space is homeomorphic to the circle $S^1$."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K11 Simplicial-Set]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def p1r (disk-pasting s0 1 'd1 (list (absm 0 '*)(absm 0 '*))))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Dimension = 0:\n",
"\n",
" Vertices : (*)\n",
"\n",
"Dimension = 1:\n",
"\n",
" Simplex : D1\n",
"\n",
" Faces : (<AbSm - *> <AbSm - *>)"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(show-structure p1r 1)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
"* \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"D1 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"D1 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(dotimes (i 3) (homology p1r i))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The projective spaces $P^n\\mathbb{R}$ of higher degree may be constructed by the following iterative rule. Suppose we have built a simplicial set corresponding to $P^{n-1}\\mathbb{R}$ and that we have named the additional simplex $d_{n-1}$. Suppose also that $d_{n-2}$ has been previously defined in the same process ($d_0$ is the base point). Then the simplicial set corresponding to $P^n\\mathbb{R}$ is obtained by pasting $\\Delta^n$ with the following description of the additional simplex: \n",
"\n",
"- the name of the new simplex is $d_n$,\n",
"- the faces of $d_n$ are:\n",
"$$\n",
"\\begin{aligned}\n",
"\\partial_0 d_n & = & d_{n-1},\\\\\n",
"\\partial_1 d_n & = & \\eta_0 d_{n-2},\\\\\n",
"\\partial_2 d_n & = & \\eta_1 d_{n-2},\\\\\n",
"\\cdots & = & \\cdots , \\\\\n",
"\\partial_{n-1} d_n & = & \\eta_{n-2} d_{n-2},\\\\\n",
"\\partial_n d_n & = & d_{n-1}.\n",
"\\end{aligned}\n",
"$$\n",
"\n",
"So, applying this rule, we may construct a model for $P^i\\mathbb{R},\\, i=2,3,4$ and verify the well known results about their respective homology groups."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K31 Simplicial-Set]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def p2r (disk-pasting p1r 2 'd2\n",
" (list (absm 0 'd1)\n",
" (absm 1 '*)\n",
" (absm 0 'd1)) ))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Dimension = 0:\n",
"\n",
" Vertices : (*)\n",
"\n",
"Dimension = 1:\n",
"\n",
" Simplex : D1\n",
"\n",
" Faces : (<AbSm - *> <AbSm - *>)\n",
"\n",
"Dimension = 2:\n",
"\n",
" Simplex : D2\n",
"\n",
" Faces : (<AbSm - D1> <AbSm 0 *> <AbSm - D1>)"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(show-structure p2r 2)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
"* \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"D1 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"D1 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"D2 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"D2 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(dotimes (i 3) (homology p2r i))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K49 Simplicial-Set]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def p3r (disk-pasting p2r 3 'd3\n",
" (list (absm 0 'd2) \n",
" (absm 1 'd1)\n",
" (absm 2 'd1)\n",
" (absm 0 'd2))))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Dimension = 0:\n",
"\n",
" Vertices : (*)\n",
"\n",
"Dimension = 1:\n",
"\n",
" Simplex : D1\n",
"\n",
" Faces : (<AbSm - *> <AbSm - *>)\n",
"\n",
"Dimension = 2:\n",
"\n",
" Simplex : D2\n",
"\n",
" Faces : (<AbSm - D1> <AbSm 0 *> <AbSm - D1>)\n",
"\n",
"Dimension = 3:\n",
"\n",
" Simplex : D3\n",
"\n",
" Faces : (<AbSm - D2> <AbSm 0 D1> <AbSm 1 D1> <AbSm - D2>)"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(show-structure p3r 3)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
"* \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"D1 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"D1 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"D2 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"D2 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"D3 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"D3 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(dotimes (i 4)(homology p3r i))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K67 Simplicial-Set]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def p4r (disk-pasting p3r 4 'd4 \n",
" (list (absm 0 'd3)\n",
" (absm 1 'd2)\n",
" (absm 2 'd2) \n",
" (absm 4 'd2)\n",
" (absm 0 'd3))))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
"* \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"D1 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"D1 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"D2 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"D2 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"D3 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"D3 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"D4 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"D4 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(dotimes (i 5) (homology p4r i))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us give now some examples with the function `chcm-disk-pasting`. We are going to work with the unit chain complex (obtained by the function `z-chcm`, see chapter 1), having a unique non null component, namely a $\\mathbb{Z}$-module of degree 0 generated by the unique generator `:Z-gnrt`."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K85 Chain-Complex]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def *ccz* (z-chcm))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the function `chcm-disk-pasting`, let us construct from `*ccz*` a new chain complex having in dimension 1 a unique new generator `gen-1` whose boundary is 5 times the unique generator in dimension 0. In this new chain complex the homology group in dimension 0 is $\\mathbb{Z}/5\\,\\mathbb{Z}$."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K87 Chain-Complex]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def newcc-0 (chcm-disk-pasting *ccz* 1 'gen-1 (cmbn 0 5 :Z-gnrt)))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
":Z-GNRT \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"GEN-1 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"Component Z/5Z\n",
"\n"
]
},
{
"data": {
"text/plain": [
"(\n",
"----------------------------------------------------------------------{CMBN 0}\n",
"<1 * Z-GNRT>\n",
"------------------------------------------------------------------------------\n",
")"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(chcm-homology-gen newcc-0 0)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"GEN-1 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(chcm-homology-gen newcc-0 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us do the same with a generator whose boundary is 165 times the generator `:Z-gnrt`:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K89 Chain-Complex]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def newcc-1 (chcm-disk-pasting *ccz* 1 'gen-1 (cmbn 0 165 :Z-gnrt)))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
":Z-GNRT \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"GEN-1 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"Component Z/165Z\n",
"\n"
]
},
{
"data": {
"text/plain": [
"(\n",
"----------------------------------------------------------------------{CMBN 0}\n",
"<1 * Z-GNRT>\n",
"------------------------------------------------------------------------------\n",
")"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(chcm-homology-gen newcc-1 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now from the chain complex `newcc-1`, let us build a new one, `newcc-2`, by adding in dimension 1 a second generator whose boundary is 182 times the generator `:Z-gnrt`. The homology group in dimension 0 of this new chain complex is the null group, since 165 and 182 are relatively prime integers."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K91 Chain-Complex]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def newcc-2 (chcm-disk-pasting newcc-1 1 'gen-2 (cmbn 0 182 :Z-gnrt)))"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
":Z-GNRT \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/2 (dimension 1) :\n",
"GEN-2 \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/2 (dimension 1) :\n",
"GEN-1 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(chcm-homology-gen newcc-2 0)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/2 (dimension 1) :\n",
"GEN-2 \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/2 (dimension 1) :\n",
"GEN-1 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"Component Z\n",
"\n"
]
},
{
"data": {
"text/plain": [
"(\n",
"----------------------------------------------------------------------{CMBN 1}\n",
"<-165 * GEN-2>\n",
"<182 * GEN-1>\n",
"------------------------------------------------------------------------------\n",
")"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(chcm-homology-gen newcc-2 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As a second example, let us start from $\\Omega^1(S^3)$."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K93 Simplicial-Set]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def s3 (sphere 3))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K98 Simplicial-Group]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def os3 (loop-space s3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the following instruction, we locate in the symbol `fund-simp` the canonical generator of $\\pi_2 (\\Omega^1S^3)$, that is the 2-simplex coming from the original sphere:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AbSm - <<Loop[S3]>>>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def fund-simp (absm 0 (loop3 0 's3 1)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We need also the 2-degeneracy of the base point of the loop space:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AbSm 1-0 <<Loop>>>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def null-simp (absm 3 +null-loop+))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We may build now a new object by pasting a disk $D^3$ as indicated by the following call:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K110 Simplicial-Set]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def dos3 (disk-pasting os3 3 '<D3> \n",
" (list fund-simp null-simp fund-simp null-simp)))"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"<<AlLp[2 S3]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"<D3> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology dos3 2)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"<D3> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"<<AlLp[2 S3][2 S3]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology dos3 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then, let us build the loop space of the object `dos3` and show the homology in dimension 5:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K229 Simplicial-Group]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def odos3 (loop-space dos3))"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 14.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/14 (dimension 5) :\n",
"<<AlLp[5 <<AlLp[2 S3][2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/14 (dimension 5) :\n",
"<<AlLp[2 <D3>][3 <<AlLp[2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 3/14 (dimension 5) :\n",
"<<AlLp[3 <<AlLp[2 S3][2 S3]>>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 4/14 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][3 <<AlLp[2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 5/14 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][2 <D3>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 6/14 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][3 <<AlLp[2 S3][2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 7/14 (dimension 5) :\n",
"<<AlLp[2 <D3>][1 <<AlLp[2 S3]>>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 8/14 (dimension 5) :\n",
"<<AlLp[2 <D3>][2 <D3>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 9/14 (dimension 5) :\n",
"<<AlLp[3 <<AlLp[2 S3][2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 10/14 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 11/14 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][2 <D3>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 12/14 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][2 <D3>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 13/14 (dimension 5) :\n",
"<<AlLp[2 <D3>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 14/14 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 6.\n",
"Rank of the source-module : 26.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][5 <<AlLp[2 S3][2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/26 (dimension 6) :\n",
"<<AlLp[3 <<AlLp[2 S3][2 S3]>>][3 <<AlLp[2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 3/26 (dimension 6) :\n",
"<<AlLp[5 <<AlLp[2 S3][2 S3][2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 4/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][2 <D3>][3 <<AlLp[2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 5/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][3 <<AlLp[2 S3][2 S3]>>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 6/26 (dimension 6) :\n",
"<<AlLp[2 <D3>][1 <<AlLp[2 S3]>>][3 <<AlLp[2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 7/26 (dimension 6) :\n",
"<<AlLp[2 <D3>][2 <D3>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 8/26 (dimension 6) :\n",
"<<AlLp[2 <D3>][3 <<AlLp[2 S3][2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 9/26 (dimension 6) :\n",
"<<AlLp[3 <<AlLp[2 S3][2 S3]>>][1 <<AlLp[2 S3]>>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 10/26 (dimension 6) :\n",
"<<AlLp[3 <<AlLp[2 S3][2 S3]>>][2 <D3>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 11/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][3 <<AlLp[2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 12/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][2 <D3>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 13/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][3 <<AlLp[2 S3][2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 14/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][2 <D3>][1 <<AlLp[2 S3]>>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 15/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][2 <D3>][2 <D3>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 16/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][3 <<AlLp[2 S3][2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 17/26 (dimension 6) :\n",
"<<AlLp[2 <D3>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 18/26 (dimension 6) :\n",
"<<AlLp[2 <D3>][1 <<AlLp[2 S3]>>][2 <D3>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 19/26 (dimension 6) :\n",
"<<AlLp[2 <D3>][2 <D3>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 20/26 (dimension 6) :\n",
"<<AlLp[3 <<AlLp[2 S3][2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 21/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][2 <D3>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 22/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][2 <D3>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 23/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][2 <D3>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 24/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][2 <D3>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 25/26 (dimension 6) :\n",
"<<AlLp[2 <D3>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 26/26 (dimension 6) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 5 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"Component Z/2Z\n",
"\n",
"Component Z/2Z\n",
"\n",
"Component Z/2Z\n",
"\n",
"Component Z/2Z\n",
"\n",
"Component Z/2Z\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology odos3 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Searching Homology for objects created by disk pasting\n",
"\n",
"The comment list of an object created by disk pasting contains various informations as shown by the simple following example"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"The object is a STANDARD-OBJECT of type SIMPLICIAL-SET.\n",
"0. CMPR: #<FUNCTION S-CMPR>\n",
"1. BASIS: #<CLOSURE (FLET RSLT :IN FINITE-SS-BASIS) {1001988EEB}>\n",
"2. BSGN: *\n",
"3. DFFR: [K2 Morphism (degree -1): K1 -> K1]\n",
"4. GRMD: [K1 Simplicial-Set]\n",
"5. EFHM: [K19 Homotopy-Equivalence K1 <= K1 => K1]\n",
"6. IDNM: 1\n",
"7. ORGN: (BUILD-FINITE-SS (*))\n",
"8. CPRD: [K5 Morphism (degree 0): K1 -> K3]\n",
"9. FACE: #<CLOSURE (FLET RSLT :IN FINITE-SS-FACE) {1001988F0B}>\n",
"> \n",
"Checking the 0-simplices..."
]
},
{
"data": {
"text/plain": [
"[K1 Simplicial-Set]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def s0 (build-finite-ss '(*)))"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K372 Simplicial-Set]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def s2 (disk-pasting s0 \n",
" 2 \n",
" 's2 \n",
" (list (absm 1 '*) (absm 1 '*) (absm 1 '*)) ))"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(DISK-PASTING [K1 Simplicial-Set] 2 S2 (<AbSm 0 *> <AbSm 0 *> <AbSm 0 *>))"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(orgn s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In fact, the comment list contains the very arguments used to realize the attaching. The method retrieves those arguments, gets the homotopy equivalence value of the `efhm` slot of the old object -creating it if necessary - then build a new homotopy equivalence, by calling the function `hmeq-disk-pasting` *hmeq* which takes into account the attaching.\n",
"\n",
"```commonlisp\n",
"(DEFMETHOD SEARCH-EFHM (smst (orgn (eql 'disk-pasting)))\n",
" (declare (type simplicial-set smst))\n",
" (the homotopy-equivalence\n",
" (destructuring-bind (old-smst dmns new faces) (rest (orgn smst))\n",
" (declare\n",
" (type simplicial-set old-smst)\n",
" (fixnum dmns)\n",
" (symbol new)\n",
" (ignore faces))\n",
" (hmeq-disk-pasting \n",
" (efhm old-smst)\n",
" dmns new (? smst dmns new)\n",
" :new-lbcc smst))))\n",
"```\n",
"\n",
"## The functions for the suspension\n",
"\n",
"In **Kenzo** the suspension process is realized by the function `suspension`. This function has one argument, a reduced object (chain complex, simplicial set, etc.). **If the object is not reduced, the result is undefined**. The CLOS mechanism is used to apply an adequate method for building the suspension of the object. For a chain complex, a new base point is created with name `:s-bsgn` and the degree of the generators is increased by 1. If the suspension process is applied to a homotopy equivalence, then firstly, the left bottom chain complex is suspended and secondly, the modification is propagated along the whole homotopy equivalence.\n",
"\n",
"`suspension-cmpr` *cmpr* *[Function]*\n",
"> From the comparison function *cmpr*, build a comparison function to compare two generators of a suspension.\n",
"\n",
"`suspension-basis` *basis* *[Function]*\n",
"> From the function *basis* of a chain complex, build a basis function for the suspension of this chain complex. In degree 0, the only generator is `:s-bsgn`, in degree 1, the basis is void and in degree $k,\\,k\\ge 2$, the elements of the basis of the suspension are the elements of the initial chain complex in degree $k-1$.\n",
"\n",
"`suspension-intr-dffr` *dffr* *[Function]*\n",
"> From the lisp differential function *dffr* of a chain complex, build the lisp differential function for the suspension of this chain complex.\n",
"\n",
"`suspension-intr-cprd` *cmbn* *[Function]*\n",
"> Return the result of the application of the coproduct of a suspension (considered as a coalgebra) upon the combination *cmbn*. Note that this function does not need any other argument than the combination.\n",
"\n",
"`suspension-face` *face* *[Function]*\n",
"> From the function face of a simplicial set, build the face function for the suspension of this simplicial set.\n",
"\n",
"`suspension-intr` *mrph* *[Function]*\n",
"> From a **Kenzo** morphism *mrph*, build an internal function corresponding to the suspension of the initial morphism. This function will be applied to a combination assumed to belong to a suspension of a chain complex.\n",
"\n",
"`suspension` *obj* `&optional` *(n 1)* *[Function]*\n",
"> Construct a new object, the suspension of the **reduced** object *obj*. The (geometrical) base point of the suspension of a chain complex (or simplicial set) is named `:s-bsgn`. The optional parameter *n* (default: 1) allows to create in one instruction iterated suspensions. This function calls the adequate method (`suspension-1`) for the object *obj*.\n",
"\n",
"`suspension-1` *chcm* *[Method]*\n",
"> Build the chain complex suspension of the chain complex *chcm*, using the basic functions above, as shown in the following call to `build-chcm`:\n",
"```commonlisp\n",
" (build-chcm\n",
" :cmpr (suspension-cmpr cmpr)\n",
" :basis (suspension-basis basis)\n",
" :bsgn :s-bsgn\n",
" :intr-dffr (suspension-intr-dffr dffr)\n",
" :strt :cmbn\n",
" :orgn `(suspension ,chcm))\n",
"```\n",
"\n",
"`suspension-1` *clbg* *[Method]*\n",
"> Return the coalgebra associated to the suspension of the coalgebra *clbg*. This calls internally the method for the suspension of the chain complex *clbg* then assigns the function `suspension-intr-cprd` to the value of the slot `cprd`.\n",
"\n",
"`suspension-1` *smst* *[Method]*\n",
"> Return the simplicial set, suspension of the simplicial set *smst*. This function uses the previous basic function `suspension-face`. The resulting object is also a coalgebra with a coproduct defined by the function `suspension-intr-cprd`.\n",
"\n",
"`suspension-1` *mrph* *[Method]*\n",
"> Build the suspension of the morphism *mrph*. This is a morphism of the same degree as *mrph*. If *mrph* is the zero morphism, return the zero morphism between the suspensions of the source and target of *mrph*. If *mrph* is the identity morphim, return the identity morphism upon the suspension of the source of *mrph*. Otherwise, return the morphism built by the following call to `build-mrph`:\n",
"```commonlisp\n",
" (build-mrph\n",
" :sorc (suspension (sorc mrph))\n",
" :trgt (suspension (trgt mrph))\n",
" :degr (degr mrph)\n",
" :intr (suspension-intr mrph)\n",
" :strt :cmbn\n",
" :orgn `(suspension ,mrph))\n",
"```\n",
"\n",
"`suspension-1` *rdct* *[Method]*\n",
"> Build the suspension of the reduction *rdct*. If *rdct* is the trivial reduction upon a chain complex ${\\cal C}$, return the trivial reduction upon the suspension of ${\\cal C}$. Otherwise, return the reduction built by the following call to the function `build-rdct`:\n",
"```commonlisp\n",
" (build-rdct\n",
" :f (suspension (f rdct))\n",
" :g (suspension (g rdct))\n",
" :h (suspension (h rdct))\n",
" :orgn `(suspension ,rdct))\n",
"```\n",
"\n",
"`suspension-1` *hmeq* *[Method]*\n",
"> Build the suspension of the homotopy equivalence *hmeq*. If *hmeq* is the trivial \n",
"homotopy equivalence upon a chain complex ${\\cal C}$, return the trivial homotopy equivalence upon\n",
"the suspension of ${\\cal C}$. Otherwise, return the homotopy equivalence built by the following call to the function `build-hmeq`:\n",
"```commonlisp\n",
" (build-hmeq\n",
" :lrdct (suspension (lrdct hmeq))\n",
" :rrdct (suspension (rrdct hmeq))\n",
" :orgn `(suspension ,hmeq))\n",
"```\n",
"\n",
"### Examples\n",
"\n",
"Firstly we test the coproduct of the suspension of $\\bar\\Delta$. In the third statement, the generators 7 and 11 are the binary coded representation of the simplices `(0 1 2)` and `(0 1 3)` in dimension 3 of ${\\cal S}\\bar\\Delta$,"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"----------------------------------------------------------------------{CMBN 0}\n",
"------------------------------------------------------------------------------\n"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(suspension-intr-cprd (cmbn 0))"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"----------------------------------------------------------------------{CMBN 0}\n",
"<5 * <TnPr S-BSGN S-BSGN>>\n",
"------------------------------------------------------------------------------\n"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(suspension-intr-cprd (cmbn 0 5 :s-bsgn))"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"----------------------------------------------------------------------{CMBN 3}\n",
"<4 * <TnPr S-BSGN 7>>\n",
"<5 * <TnPr S-BSGN 11>>\n",
"<4 * <TnPr 7 S-BSGN>>\n",
"<5 * <TnPr 11 S-BSGN>>\n",
"------------------------------------------------------------------------------\n"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(suspension-intr-cprd (cmbn 3 4 7 5 11))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us verify now the classical result ${\\cal S}(S^n)=S^{n+1}$."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K377 Simplicial-Set]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def s1 (sphere 1))"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K382 Simplicial-Set]"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def ss1 (suspension s1))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(SUSPENSION [K377 Simplicial-Set])"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(orgn ss1)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Dimension = 0:\n",
"\n",
" Vertices : (S-BSGN)\n",
"\n",
"Dimension = 1:\n",
"\n",
"Dimension = 2:\n",
"\n",
" Simplex : S1\n",
"\n",
" Faces : (<AbSm 0 S-BSGN> <AbSm 0 S-BSGN> <AbSm 0 S-BSGN>)"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(show-structure ss1 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For comparison, let us recall the simplicial set model of $S^2$:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Dimension = 0:\n",
"\n",
" Vertices : (*)\n",
"\n",
"Dimension = 1:\n",
"\n",
"Dimension = 2:\n",
"\n",
" Simplex : S2\n",
"\n",
" Faces : (<AbSm 0 *> <AbSm 0 *> <AbSm 0 *>)"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(show-structure (sphere 2) 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us iterate twice the operation of suspension on $S^2$:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K397 Simplicial-Set]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def ss22 (suspension (sphere 2) 2))"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\n",
"Dimension = 0:\n",
"\n",
" Vertices : (S-BSGN)\n",
"\n",
"Dimension = 1:\n",
"\n",
"Dimension = 2:\n",
"\n",
"Dimension = 3:\n",
"\n",
"Dimension = 4:\n",
"\n",
" Simplex : S2\n",
"\n",
" Faces : (<AbSm 2-1-0 S-BSGN> <AbSm 2-1-0 S-BSGN> <AbSm 2-1-0 S-BSGN> <AbSm 2-1-0 S-BSGN> <AbSm 2-1-0 S-BSGN>)"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(show-structure ss22 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To test the suspension of a less simple chain complex, let us take a Moore space that we have seen in the simplicial set chapter. We know that the corresponding chain complex is connected. Let us compare the basis elements, in various degrees, of this chain complex and its suspension:"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K402 Simplicial-Set]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def m23 (moore 2 3))"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"(*) \n",
"NIL \n",
"NIL \n",
"(M3) \n",
"(N4) \n",
"NIL \n",
"NIL "
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(dotimes (i 7) (print (basis m23 i)))"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K407 Simplicial-Set]"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def sm23 (suspension m23))"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"(:S-BSGN) \n",
"NIL \n",
"NIL \n",
"NIL \n",
"(M3) \n",
"(N4) \n",
"NIL "
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(dotimes (i 7) (print (basis sm23 i)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us apply now the function `suspension` to objects built from $S^2$, namely $\\Omega(S^2)$, $S\\Omega(S^2)$, and finally $\\Omega S \\Omega(S^2)$ and let us have a look upon the homology groups. For $S^2$, we know that the only non-null homology groups are in dimension 0 and 2:"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
"* \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"S2 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"S2 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology (sphere 2) 0 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For ${\\cal S}(S^2)$, the non--null homology groups are of course in dimension 0 and 3:"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K392 Simplicial-Set]"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def ss2 (suspension (sphere 2)))"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
":S-BSGN \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"S2 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"S2 \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology ss2 0 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us verify now that, for the space $\\Omega(S^2)$, the homology groups are organized as the tensor algebra over one generator in degree 1:"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K387 Simplicial-Set]"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def s2 (sphere 2))"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K420 Simplicial-Group]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def os2 (loop-space s2))"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
"<<AlLp>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"<<AlLp[1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"<<AlLp[1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"<<AlLp[1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"<<AlLp[1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"<<AlLp[1 S2][1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"<<AlLp[1 S2][1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"<<AlLp[1 S2][1 S2][1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"<<AlLp[1 S2][1 S2][1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 5) :\n",
"<<AlLp[1 S2][1 S2][1 S2][1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology os2 0 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And, in the suspension of the previous space, we verify that the homology groups are suspended (in particular, there is no homology in dimension 1)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K529 Simplicial-Set]"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def sos2 (suspension os2))"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
":S-BSGN \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"<<AlLp[1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 2) :\n",
"<<AlLp[1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"<<AlLp[1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"<<AlLp[1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"<<AlLp[1 S2][1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"<<AlLp[1 S2][1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 5) :\n",
"<<AlLp[1 S2][1 S2][1 S2][1 S2]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology sos2 0 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At last, taking the loop space of the previous suspension, we recognize the tensor algebra over the previous tensor algebra, ${\\cal H}_*\\Omega S^2$. In each dimension, the number of generators is $2^n$:"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K547 Simplicial-Group]"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def osos2 (loop-space sos2))"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 0.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
"<<AlLp>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 0 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 1.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/1 (dimension 1) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/2 (dimension 2) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/2 (dimension 2) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 1 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 2.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/2 (dimension 2) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/2 (dimension 2) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 4.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/4 (dimension 3) :\n",
"<<AlLp[3 <<AlLp[1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/4 (dimension 3) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 3/4 (dimension 3) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 4/4 (dimension 3) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 4.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/4 (dimension 3) :\n",
"<<AlLp[3 <<AlLp[1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/4 (dimension 3) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 3/4 (dimension 3) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 4/4 (dimension 3) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 8.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/8 (dimension 4) :\n",
"<<AlLp[4 <<AlLp[1 S2][1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/8 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][3 <<AlLp[1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 3/8 (dimension 4) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 4/8 (dimension 4) :\n",
"<<AlLp[3 <<AlLp[1 S2][1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 5/8 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 6/8 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 7/8 (dimension 4) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 8/8 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 8.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/8 (dimension 4) :\n",
"<<AlLp[4 <<AlLp[1 S2][1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/8 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][3 <<AlLp[1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 3/8 (dimension 4) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 4/8 (dimension 4) :\n",
"<<AlLp[3 <<AlLp[1 S2][1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 5/8 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 6/8 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 7/8 (dimension 4) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 8/8 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 16.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 1/16 (dimension 5) :\n",
"<<AlLp[5 <<AlLp[1 S2][1 S2][1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 2/16 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][4 <<AlLp[1 S2][1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 3/16 (dimension 5) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][3 <<AlLp[1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 4/16 (dimension 5) :\n",
"<<AlLp[3 <<AlLp[1 S2][1 S2][1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 5/16 (dimension 5) :\n",
"<<AlLp[4 <<AlLp[1 S2][1 S2][1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 6/16 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][3 <<AlLp[1 S2][1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 7/16 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 8/16 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][3 <<AlLp[1 S2][1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 9/16 (dimension 5) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 10/16 (dimension 5) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 11/16 (dimension 5) :\n",
"<<AlLp[3 <<AlLp[1 S2][1 S2][1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 12/16 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 13/16 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 14/16 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 15/16 (dimension 5) :\n",
"<<AlLp[2 <<AlLp[1 S2][1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"Computing the boundary of the generator 16/16 (dimension 5) :\n",
"<<AlLp[1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>][1 <<AlLp[1 S2]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"Component Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 12h 25m 31s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology osos2 0 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Searching homology for suspensions\n",
"\n",
"The comment list of a suspension has the form `(SUSPENSION` *suspended-object*`)`. The `search-efhm` method applied to a suspension, looks for the value of the `efhm` slot of the *suspended-object*, (i.e. a homotopy equivalence), then builds the suspension of this homotopy equivalence (see the method `suspension` applied to a homotopy equivalence). Of course, this may imply a recursive process.\n",
"```commonlisp\n",
"(DEFMETHOD SEARCH-EFHM (suspension (orgn (eql 'suspension)))\n",
" (declare (type chain-complex suspension))\n",
" (suspension (efhm (second (orgn suspension)))))\n",
"```\n",
"\n",
"### Lisp files concerned in this chapter\n",
"\n",
"`disk-pasting.lisp`, `suspensions.lisp`, `searching-homology.lisp`"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "SBCL Lisp",
"language": "lisp",
"name": "lisp"
},
"language_info": {
"codemirror_mode": "text/x-common-lisp",
"mimetype": "text/x-common-lisp",
"name": "common-lisp",
"pygments_lexer": "common-lisp",
"version": "X3J13"
}
},
"nbformat": 4,
"nbformat_minor": 1
}