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

2607 lines
71 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": [
"# Overview"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this overview we try to show, without entering in detailed explanations, various possibilities of `Kenzo` in algebraic topology.\n",
"\n",
"The material is arranged in a sequence of cells. Cells marked with `In [*]` represent (editable) input expressions, which in a traditional REPL (Read-Evaluate-Print Loop) would be typed by the user in a Lisp session. Only the `In [*]` mark is visible if the Lisp statement is not yet run; if run, another `Out [*]` mark is displayed with the corresponding object returned by the execution. Finally, there might be additional, non-editable, diagnostic output printed before the output component, most often a side-effect of the input form evaluation.\n",
"\n",
"Other cells are the `text` cells, giving various explanations about the Lisp statements and their evaluations. Not editable by the user."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## `Kenzo` in Action\n",
"\n",
"Let us begin by the space $\\mathrm{Moore}(\\mathbb{Z}/2\\mathbb{Z}, 3)$ described as a simplicial set having only three non-degenerate simplices, namely in dimension $0$, $3$ and $4$. In the representation created by the software, the 0-simplex (base point), the 3-simplex and the 4-simplex are respectively 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 the base point. To create the simplicial set one types simply:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K1 Simplicial-Set]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def m23 (moore 2 3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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`."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K1 Simplicial-Set]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m23"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We may compute the homology groups of this space, using the underlying chain 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 that the corresponding homology group is null."
]
},
{
"cell_type": "code",
"execution_count": 4,
"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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"M3 \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 3) :\n",
"M3 \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, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"N4 \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, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 4) :\n",
"N4 \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, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology m23 0 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The homology of `m23` is $(Z,0,0,Z/2,0,\\ldots)$; the reduced homology is only $Z/2$ in dimension 3, defining the Moore space up to homotopy.\n",
"\n",
"As `m23` is a simplicial set, it is possible to create the cartesian product $\\texttt{m23}\\times\\texttt{m23}$ by the function `crts-prdc` (= CaRTeSian PRoDuCt). This is a new simplicial set."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K10 Simplicial-Set]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def m23xm23 (crts-prdc m23 m23))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Being a simplicial set, $\\texttt{m23xm23}$ is also a chain complex object and we may for instance ask for the basis in dimension 6."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(<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> ...)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(basis m23xm23 6)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"230"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(length *)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As shown by the last command, the number of elements of the basis is quite large (230). The user will note that the basis elements are in this particular case formed by cartesian products of *degenerated simplices*. In the list, an element like `<CrPr 1-0 N4 5-3-2 M3>` means $\\eta_1\\eta_0\\mathrm{N4}\\times\\eta_5\\eta_3\\eta_2\\mathrm{M3}$.\n",
"\n",
"We may construct also the tensor product $\\mathrm{m23}\\otimes\\mathrm{m23}$ from the underlying chain complex of the simplicial set `m23`. The tensor product of 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 we see that the basis in dimension 6 has only one element:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K3 Chain-Complex]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def t2m23 (tnsr-prdc m23 m23))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(<TnPr M3 M3>)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(basis t2m23 6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Eilenberg-Zilber theorem is used to compute the homology groups of the cartesian product space: as chain complexes, `m23xm23` and `t2m23` have the same homology groups, but the computations using the tensor product are considerably faster. The user can check Künneth's theorem."
]
},
{
"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, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 0) :\n",
"<TnPr * *> \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, 0h 48m 17s.\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, 0h 48m 17s.\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 : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/2 (dimension 3) :\n",
"<TnPr * M3> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/2 (dimension 3) :\n",
"<TnPr M3 *> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 2 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/2 (dimension 3) :\n",
"<TnPr * M3> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/2 (dimension 3) :\n",
"<TnPr M3 *> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/2 (dimension 4) :\n",
"<TnPr * N4> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/2 (dimension 4) :\n",
"<TnPr N4 *> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/2 (dimension 4) :\n",
"<TnPr * N4> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/2 (dimension 4) :\n",
"<TnPr N4 *> \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, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 0.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 6.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 6) :\n",
"<TnPr M3 M3> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 5 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 6.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 6) :\n",
"<TnPr M3 M3> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 7.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/2 (dimension 7) :\n",
"<TnPr M3 N4> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/2 (dimension 7) :\n",
"<TnPr N4 M3> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 6 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 7.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/2 (dimension 7) :\n",
"<TnPr M3 N4> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/2 (dimension 7) :\n",
"<TnPr N4 M3> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 8.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 8) :\n",
"<TnPr N4 N4> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 7 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology m23xm23 0 8)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us consider now the space $\\mathrm{K}(\\mathbb{Z}, 1)$. This is an Abelian simplicial group created in `Kenzo` by the function `k-z`. In this simplicial group, a simplex in dimension $n$ is mathematically represented by a sequence of integers, known as a *bar* object: $$ [a_1 \\mid a_2 \\mid \\ldots \\mid a_n].$$\n",
"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: `(2 3 4 5)`. In dimension 0, the only simplex is `NIL` (the base point)."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K38 Abelian-Simplicial-Group]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def kz1 (k-z 1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But this object is also a *coalgebra* and an *algebra*, and we may \n",
"see the effect of the respective induced *coproduct* and *product*: "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"----------------------------------------------------------------------{CMBN 4}\n",
"<1 * <TnPr NIL (2 3 4 5)>>\n",
"<1 * <TnPr (2) (3 4 5)>>\n",
"<1 * <TnPr (2 3) (4 5)>>\n",
"<1 * <TnPr (2 3 4) (5)>>\n",
"<1 * <TnPr (2 3 4 5) NIL>>\n",
"------------------------------------------------------------------------------\n"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cprd kz1 4 '(2 3 4 5))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"----------------------------------------------------------------------{CMBN 6}\n",
"<1 * (1 2 3 4 5 6)>\n",
"<-1 * (1 3 2 4 5 6)>\n",
"<1 * (1 3 4 2 5 6)>\n",
"<-1 * (1 3 4 5 2 6)>\n",
"<1 * (1 3 4 5 6 2)>\n",
"<1 * (3 1 2 4 5 6)>\n",
"<-1 * (3 1 4 2 5 6)>\n",
"<1 * (3 1 4 5 2 6)>\n",
"<-1 * (3 1 4 5 6 2)>\n",
"<1 * (3 4 1 2 5 6)>\n",
"... ...\n",
"------------------------------------------------------------------------------\n"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(aprd kz1 6 (tnpr 2 '(1 2) 4 '(3 4 5 6)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The printed results are the printed representation of *combinations*, i.e., integer linear combinations of generators resulting from the application of the morphisms. The degree of the combination is indicated by the information: `CMBN n`. \n",
"\n",
"In the same way, we may create the Abelian simplicial groups $\\mathrm{K}(\\mathbb{Z}/2\\mathbb{Z}, n)$:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K64 Abelian-Simplicial-Group]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def k-z2-2 (k-z2 2))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/2 (dimension 4) :\n",
"<<Abar[4 3]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/2 (dimension 4) :\n",
"<<Abar[2 1][2 1]>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 3.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/3 (dimension 5) :\n",
"<<Abar[5 4]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/3 (dimension 5) :\n",
"<<Abar[2 1][3 2]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/3 (dimension 5) :\n",
"<<Abar[3 2][2 1]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"Component Z/4Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology k-z2-2 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us play now with the sphere $S^3$ and its loop spaces. $S^3$ and $\\Omega^2 S^3$ are created by \n",
"respective calls to the functions `sphere` and `loop-space`. Then we compute the $H_4$ and $H_5$ of $\\Omega^2 S^3$:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K174 Simplicial-Set]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def s3 (sphere 3))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K191 Simplicial-Group]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def o2s3 (loop-space s3 2))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 3.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/3 (dimension 4) :\n",
"<<AlLp[1 <<AlLp[2 S3]>>][3 <<AlLp[2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/3 (dimension 4) :\n",
"<<AlLp[3 <<AlLp[2 S3][2 S3]>>][1 <<AlLp[2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/3 (dimension 4) :\n",
"<<AlLp[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 5.\n",
"Rank of the source-module : 5.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/5 (dimension 5) :\n",
"<<AlLp[5 <<AlLp[2 S3][2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/5 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/5 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 4/5 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 5/5 (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",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"Component Z/3Z\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 5.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/5 (dimension 5) :\n",
"<<AlLp[5 <<AlLp[2 S3][2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/5 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/5 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 4/5 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 5/5 (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 : 8.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/8 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/8 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/8 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 4/8 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 5/8 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 6/8 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 7/8 (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, 0h 48m 17s.\n",
"Computing the boundary of the generator 8/8 (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/3Z\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology o2s3 4 6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us take now the first loop space $\\Omega^1 S^3$"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K179 Simplicial-Group]"
]
},
"execution_count": 19,
"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 `L1` the canonical generator of $\\pi_2 (\\Omega^1S^3)$, that is the 2-simplex coming from the 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 version $G(S^3)$ (a simplicial group) of the loop space $\\Omega S^3$."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<<Loop[S3]>>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def L1 (loop3 0 's3 1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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 null loop, base point of $\\Omega^1 S^3$: "
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AbSm 1-0 <<Loop>>>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def null-simp (absm 3 +null-loop+))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We may build now a new space by pasting a disk $D3$ as indicated by the following call. It means that we \"paste\" to the space `os3` a 3-simplex named `D3`, the attaching map being described by the list of its faces in dimension 2. The faces 0 and 2 of D3 are pasted to L1, the faces 1 and 3 are collapsed on the base point; in this way the attaching map $(S^2 \\rightarrow \\Omega S^3)$ has degree 2."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K435 Simplicial-Set]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def dos3 (disk-pasting os3 3 '<D3>\n",
" (list L1 null-simp L1 null-simp)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us compute a few homology groups of the new space `dos3`:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology dos3 2 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But more interesting, let us build the loop space of the object `dos3` and let us compute the homology in dimension 5:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K453 Simplicial-Group]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def odos3 (loop-space dos3))"
]
},
{
"cell_type": "code",
"execution_count": 25,
"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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\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, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology odos3 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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 group."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(typep s3 'kan)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"T"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(typep os3 'kan)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"T"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(typep os3 'simplicial-group)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(typep os3 'ab-simplicial-group)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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$:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<<Loop[S3\\2]>>"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def L2 (loop3 0 's3 2))"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"----------------------------------------------------------------------{CMBN 4}\n",
"<1 * <<Loop[1-0 S3\\2][3-2 S3\\2]>>>\n",
"<-1 * <<Loop[2-0 S3\\2][3-1 S3\\2]>>>\n",
"<1 * <<Loop[2-1 S3\\2][3-0 S3\\2]>>>\n",
"<1 * <<Loop[3-0 S3\\2][2-1 S3\\2]>>>\n",
"<-1 * <<Loop[3-1 S3\\2][2-0 S3\\2]>>>\n",
"<1 * <<Loop[3-2 S3\\2][1-0 S3\\2]>>>\n",
"------------------------------------------------------------------------------\n"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def square (aprd os3 4 (tnpr 2 L2 2 L2)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that the result is a linear combination of words composed from degeneracies of `L2`. The following instruction selects the generator part of the \n",
"second element of the previous combination."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<<Loop[2-0 S3\\2][3-1 S3\\2]>>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def L4 (gnrt (second (cmbn-list square))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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 `L4`, this list is a \"Kan horn\"."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(<AbSm - <<Loop[1 S3\\2][2 S3\\2]>>> <AbSm - <<Loop[0 S3\\2][2 S3\\2]>>> <AbSm - <<Loop[0 S3\\2][1 S3\\2]>>> <AbSm 1 <<Loop[S3\\2]>>>)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def horn (mapcar #'(lambda (i) (face os3 i 4 l4)) '(1 2 3 4)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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 same as the face 2 of `L4`."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<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]>>>"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def kan-simplex (kfll os3 0 4 horn))"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AbSm - <<Loop[0 S3\\2][2 S3\\2]>>>"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(face os3 2 4 kan-simplex)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AbSm - <<Loop[0 S3\\2][2 S3\\2]>>>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(second horn)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let ${\\cal G}$ be a simplicial group 0-reduced. $\\Omega S^3$ is such a group. The program `Kenzo` allows the construction of the universal bundle $\\mathcal{WG}$ and in particular of its base space $\\overline{\\mathcal{W}} \\mathcal{G}$, i.e. the classifying space of ${\\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 principle should be isomorphic to $H_4 S^3 = 0$, is really null."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K598 Simplicial-Set]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def cls-os3 (classifying-space os3))"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(typep cls-os3 'simplicial-group)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\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 : 1.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/1 (dimension 5) :\n",
"<<Abar[5 <<AlLp[2 S3][2 S3]>>]>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology cls-os3 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us end this short overview with an example of computation of homotopy groups. The method used in `Kenzo` is the Whitehead tower. An extended version of the Kenzo program due to Ana Romero is more general, but in this present version only the case where the first non-null homology group (in non-null dimension) is $\\mathbb{Z}$ or $\\mathbb{Z}/{2\\mathbb{Z}}$ can be processed; however if this homology group is a direct sum of several copies of $\\mathbb{Z}$ or $\\mathbb{Z}/{2 \\mathbb{Z}}$, then the corresponding stage of the Whitehead tower may also be constructed step by step.\n",
"\n",
"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 constructed:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K729 Cohomology-Class on K1 of degree 3]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def ch3 (chml-clss m23 3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then the function `z2-whitehead` is called to build a fibration over the simplicial set `m23` canonically associated to the cohomology class `ch3`."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K730 Fibration K1 -> K64]"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def f3 (z2-whitehead m23 ch3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then the total space of the fibration is built:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K736 Simplicial-Set]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def x4 (fibration-total f3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The $H_4$ of this total space is the $\\pi_4$ of $\\mathrm{Moore}(\\mathbb{Z}/2\\mathbb{Z})$:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 3.\n",
"Rank of the source-module : 2.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/2 (dimension 3) :\n",
"<TnPr * <<Abar[3 2]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/2 (dimension 3) :\n",
"<TnPr M3 <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 3.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/3 (dimension 4) :\n",
"<TnPr * <<Abar[4 3]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/3 (dimension 4) :\n",
"<TnPr * <<Abar[2 1][2 1]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/3 (dimension 4) :\n",
"<TnPr N4 <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 3 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 3.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/3 (dimension 4) :\n",
"<TnPr * <<Abar[4 3]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/3 (dimension 4) :\n",
"<TnPr * <<Abar[2 1][2 1]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/3 (dimension 4) :\n",
"<TnPr N4 <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 4.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/4 (dimension 5) :\n",
"<TnPr * <<Abar[5 4]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/4 (dimension 5) :\n",
"<TnPr * <<Abar[2 1][3 2]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/4 (dimension 5) :\n",
"<TnPr * <<Abar[3 2][2 1]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 4/4 (dimension 5) :\n",
"<TnPr M3 <<Abar[2 1]>>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"Component Z/2Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology x4 3 5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We may now iterate the process, to compute the $\\pi_5$ of $\\mathrm{Moore}(\\mathbb{Z}/2\\mathbb{Z})$:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K817 Cohomology-Class on K802 of degree 4]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def ch4 (chml-clss x4 4))"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K832 Fibration K736 -> K818]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def f4 (z2-whitehead x4 ch4))"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[K838 Simplicial-Set]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(def x5 (fibration-total f4))"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Computing boundary-matrix in dimension 4.\n",
"Rank of the source-module : 4.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/4 (dimension 4) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[4 <<Abar[3 2]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/4 (dimension 4) :\n",
"<TnPr <TnPr * <<Abar[4 3]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/4 (dimension 4) :\n",
"<TnPr <TnPr * <<Abar[2 1][2 1]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 4/4 (dimension 4) :\n",
"<TnPr <TnPr N4 <<Abar>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 7.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[5 <<Abar[4 3]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[5 <<Abar[2 1][2 1]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar[2 1]>>> <<Abar[3 <<Abar[2 1]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 4/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar[5 4]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 5/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar[2 1][3 2]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 6/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar[3 2][2 1]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 7/7 (dimension 5) :\n",
"<TnPr <TnPr M3 <<Abar[2 1]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 4 :\n",
"\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 5.\n",
"Rank of the source-module : 7.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[5 <<Abar[4 3]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[5 <<Abar[2 1][2 1]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar[2 1]>>> <<Abar[3 <<Abar[2 1]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 4/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar[5 4]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 5/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar[2 1][3 2]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 6/7 (dimension 5) :\n",
"<TnPr <TnPr * <<Abar[3 2][2 1]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 7/7 (dimension 5) :\n",
"<TnPr <TnPr M3 <<Abar[2 1]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
"Computing boundary-matrix in dimension 6.\n",
"Rank of the source-module : 14.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 1/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[6 <<Abar[5 4]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 2/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[6 <<Abar[2 1][3 2]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 3/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[6 <<Abar[3 2][2 1]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 4/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar>>> <<Abar[3 <<Abar[2 1]>>][3 <<Abar[2 1]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 5/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar[2 1]>>> <<Abar[4 <<Abar[3 2]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 6/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar[3 2]>>> <<Abar[3 <<Abar[2 1]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 7/14 (dimension 6) :\n",
"<TnPr <TnPr M3 <<Abar>>> <<Abar[3 <<Abar[2 1]>>]>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 8/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar[6 5]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 9/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar[2 1][4 3]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 10/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar[3 2][3 2]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 11/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar[4 3][2 1]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 12/14 (dimension 6) :\n",
"<TnPr <TnPr * <<Abar[2 1][2 1][2 1]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 13/14 (dimension 6) :\n",
"<TnPr <TnPr M3 <<Abar[3 2]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"Computing the boundary of the generator 14/14 (dimension 6) :\n",
"<TnPr <TnPr N4 <<Abar[2 1]>>> <<Abar>>> \n",
"End of computing.\n",
"\n",
"\n",
"\n",
"\n",
"Homology in dimension 5 :\n",
"\n",
"\n",
"Component Z/4Z\n",
"\n",
"\n",
"---done---\n",
"\n",
";; Clock -> 2017-10-08, 0h 48m 17s.\n",
"\n"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(homology x5 4 6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So $\\pi_5(\\mathrm{Moore}(\\mathbb{Z}/2\\mathbb{Z}))$ is $\\mathbb{Z}/4\\mathbb{Z}$."
]
}
],
"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
}