{ "cells": [ { "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 $\\texttt{Kenzo}$ in algebraic topology.\n", "\n", "The material is arranged in a sequence of cells. Cells marked with $\\texttt{In [*]}$ represent (editable) input expressions, which in a traditional REPL (Read-Evaluate-Print Loop) would be typed by the user. Cells marked with $\\texttt{Out [*]}$ represent the value of the correpsponding input expression. Note that if an input expression was not evaluated previously, the ouput cell might be missing. Finally, there might be additional, non-editable, diagnostic output printed between an input and output cell. This is a side-effect of the input form evaluation and can be ignored on first reading.\n", "\n", "### Getting off the Ground\n", "\n", "Load the $\\texttt{Kenzo}$ software by evaluating the follwing expression. When loaded successfully, the value of this form is a single string atom list $(\\texttt{\"kenzo\"})$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "To load \"kenzo\":\n", " Load 1 ASDF system:\n", " kenzo\n", "\n", "; Loading \"kenzo\"\n", "\n" ] }, { "data": { "text/plain": [ "(\"kenzo\")" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(ql:quickload \"kenzo\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The main functionality of the $\\texttt{Kenzo}$ software is defined in a Lisp package called $\\texttt{cat}$. Initialize the software by calling the $\\texttt{cat-init}$ function of the $\\texttt{cat}$ package. Upon successful initialization this form evaluates to $\\texttt{NIL}$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "---done---" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:cat-init)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can print the $\\texttt{Kenzo}$ version by calling the $\\texttt{kenzo-version}$ function:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "*** Kenzo-Version 1.1.7 ***\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:kenzo-version)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $\\texttt{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 $\\texttt{\"*\"}$, $\\texttt{M3}$ and $\\texttt{N4}$. Two faces of the $4$-simplex $\\texttt{N4}$ are identified with the $3$-simplex $\\texttt{M3}$, the others being contracted on the base point. To create the simplicial set one types simply: " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K1 Simplicial-Set]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def m23 (cat:moore 2 3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The system answers that a $\\texttt{Kenzo}$ object has been created, with number $1$ and type $\\texttt{SIMPLICIAL SET}$. This object may be referenced by the symbol $\\texttt{m23}$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K1 Simplicial-Set]" ] }, "execution_count": 5, "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": 6, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\n", "\n", "\n", "Computing boundary-matrix in dimension 3.\n", "Rank of the source-module : 1.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\n", "\n", "\n", "Computing boundary-matrix in dimension 4.\n", "Rank of the source-module : 1.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:homology m23 0 5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As $\\texttt{m23}$ is a simplicial set, it is possible to create the cartesian product $\\texttt{m23}\\times\\texttt{m23}$ by the function $\\texttt{crts-prdc}$. This is a new simplicial set." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K10 Simplicial-Set]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def m23xm23 (cat: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": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "( ...)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:basis m23xm23 6)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "230" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(length (cat:basis m23xm23 6))" ] }, { "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 formed by cartesian products of *degenerated simplices*. In the list, an element like $\\texttt{}$ 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 $\\texttt{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": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K3 Chain-Complex]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def t2m23 (cat:tnsr-prdc m23 m23))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "()" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat: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, $\\texttt{m23xm23}$ and $\\texttt{t2m23}$ have the same homology groups, but the computations using the tensor product are considerably faster." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/2 (dimension 3) :\n", " \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/2 (dimension 3) :\n", " \n", "End of computing.\n", "\n", "\n", "\n", "\n", "Homology in dimension 2 :\n", "\n", "\n", "\n", "---done---\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "\n", "\n", "Computing boundary-matrix in dimension 3.\n", "Rank of the source-module : 2.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/2 (dimension 3) :\n", " \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/2 (dimension 3) :\n", " \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 4.\n", "Rank of the source-module : 2.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/2 (dimension 4) :\n", " \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/2 (dimension 4) :\n", " \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 -> 2015-12-29, 1h 11m 1s.\n", "\n", "\n", "Computing boundary-matrix in dimension 4.\n", "Rank of the source-module : 2.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/2 (dimension 4) :\n", " \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/2 (dimension 4) :\n", " \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 -> 2015-12-29, 1h 11m 1s.\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 -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/1 (dimension 6) :\n", " \n", "End of computing.\n", "\n", "\n", "\n", "\n", "Homology in dimension 5 :\n", "\n", "\n", "\n", "---done---\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "\n", "\n", "Computing boundary-matrix in dimension 6.\n", "Rank of the source-module : 1.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/1 (dimension 6) :\n", " \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 7.\n", "Rank of the source-module : 2.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/2 (dimension 7) :\n", " \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/2 (dimension 7) :\n", " \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 -> 2015-12-29, 1h 11m 1s.\n", "\n", "\n", "Computing boundary-matrix in dimension 7.\n", "Rank of the source-module : 2.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/2 (dimension 7) :\n", " \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/2 (dimension 7) :\n", " \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 8.\n", "Rank of the source-module : 1.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/1 (dimension 8) :\n", " \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 -> 2015-12-29, 1h 11m 1s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat: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 $\\texttt{Kenzo}$ by the function $\\texttt{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 $\\texttt{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: $\\texttt{(2 3 4 5)}$. In dimension $0$, the only \n", "simplex is $\\texttt{NIL}$ (the base point)." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K38 Abelian-Simplicial-Group]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def kz1 (cat: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": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\n", "----------------------------------------------------------------------{CMBN 4}\n", "<1 * >\n", "<1 * >\n", "<1 * >\n", "<1 * >\n", "<1 * >\n", "------------------------------------------------------------------------------\n" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:cprd kz1 4 '(2 3 4 5))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "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": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:aprd kz1 6 (cat: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: $\\texttt{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": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K64 Abelian-Simplicial-Group]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def k-z2-2 (cat:k-z2 2))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/2 (dimension 4) :\n", "<> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/2 (dimension 4) :\n", "<> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 5.\n", "Rank of the source-module : 3.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/3 (dimension 5) :\n", "<> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/3 (dimension 5) :\n", "<> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 3/3 (dimension 5) :\n", "<> \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 -> 2015-12-29, 1h 11m 1s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat: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 $\\texttt{sphere}$ and $\\texttt{loop-space}$. Then we compute the $H_4$ and $H_5$ of $\\Omega^2 S^3$:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K174 Simplicial-Set]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def s3 (cat:sphere 3))" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K191 Simplicial-Group]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def o2s3 (cat:loop-space s3 2))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/3 (dimension 4) :\n", "<>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/3 (dimension 4) :\n", "<>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 3/3 (dimension 4) :\n", "<>][1 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 5.\n", "Rank of the source-module : 5.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/5 (dimension 5) :\n", "<>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/5 (dimension 5) :\n", "<>][1 <>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 3/5 (dimension 5) :\n", "<>][3 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 4/5 (dimension 5) :\n", "<>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 5/5 (dimension 5) :\n", "<>][1 <>][1 <>][1 <>][1 <>]>> \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 -> 2015-12-29, 1h 11m 1s.\n", "\n", "\n", "Computing boundary-matrix in dimension 5.\n", "Rank of the source-module : 5.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/5 (dimension 5) :\n", "<>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/5 (dimension 5) :\n", "<>][1 <>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 3/5 (dimension 5) :\n", "<>][3 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 4/5 (dimension 5) :\n", "<>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 5/5 (dimension 5) :\n", "<>][1 <>][1 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 6.\n", "Rank of the source-module : 8.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/8 (dimension 6) :\n", "<>][5 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/8 (dimension 6) :\n", "<>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 3/8 (dimension 6) :\n", "<>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 4/8 (dimension 6) :\n", "<>][1 <>][1 <>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 5/8 (dimension 6) :\n", "<>][1 <>][3 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 6/8 (dimension 6) :\n", "<>][3 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 7/8 (dimension 6) :\n", "<>][1 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 8/8 (dimension 6) :\n", "<>][1 <>][1 <>][1 <>][1 <>][1 <>]>> \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 -> 2015-12-29, 1h 11m 1s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat: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": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K179 Simplicial-Group]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def os3 (cat:loop-space s3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the following instruction, we locate in the symbol $\\texttt{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": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "<>" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def L1 (cat: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": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ">>" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def null-simp (cat:absm 3 cat:+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 $\\texttt{os3}$ a $3$-simplex named $\\texttt{D3}$, the attaching map being described by the list of its faces in dimension $2$." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K435 Simplicial-Set]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def dos3 (cat:disk-pasting os3 3 ' \n", " (list L1 null-simp L1 null-simp)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us compute a few homology groups of the new space $\\texttt{dos3}$:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/1 (dimension 2) :\n", "<> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 3.\n", "Rank of the source-module : 1.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/1 (dimension 3) :\n", " \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 -> 2015-12-29, 1h 11m 1s.\n", "\n", "\n", "Computing boundary-matrix in dimension 3.\n", "Rank of the source-module : 1.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/1 (dimension 3) :\n", " \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 4.\n", "Rank of the source-module : 1.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/1 (dimension 4) :\n", "<> \n", "End of computing.\n", "\n", "\n", "\n", "\n", "Homology in dimension 3 :\n", "\n", "\n", "\n", "---done---\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:homology dos3 2 4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But more interesting, let us build the loop space of the object $\\texttt{dos3}$ and let us compute the homology in dimension $5$:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K453 Simplicial-Group]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def odos3 (cat:loop-space dos3))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/14 (dimension 5) :\n", "<>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/14 (dimension 5) :\n", "<][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 3/14 (dimension 5) :\n", "<>][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 4/14 (dimension 5) :\n", "<>][1 <>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 5/14 (dimension 5) :\n", "<>][2 ][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 6/14 (dimension 5) :\n", "<>][3 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 7/14 (dimension 5) :\n", "<][1 <>][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 8/14 (dimension 5) :\n", "<][2 ][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 9/14 (dimension 5) :\n", "<>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 10/14 (dimension 5) :\n", "<>][1 <>][1 <>][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 11/14 (dimension 5) :\n", "<>][1 <>][2 ][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 12/14 (dimension 5) :\n", "<>][2 ][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 13/14 (dimension 5) :\n", "<][1 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 14/14 (dimension 5) :\n", "<>][1 <>][1 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 6.\n", "Rank of the source-module : 26.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 1/26 (dimension 6) :\n", "<>][5 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 2/26 (dimension 6) :\n", "<>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 3/26 (dimension 6) :\n", "<>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 4/26 (dimension 6) :\n", "<>][2 ][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 5/26 (dimension 6) :\n", "<>][3 <>][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 6/26 (dimension 6) :\n", "<][1 <>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 7/26 (dimension 6) :\n", "<][2 ][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 8/26 (dimension 6) :\n", "<][3 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 9/26 (dimension 6) :\n", "<>][1 <>][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 10/26 (dimension 6) :\n", "<>][2 ][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 11/26 (dimension 6) :\n", "<>][1 <>][1 <>][3 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 12/26 (dimension 6) :\n", "<>][1 <>][2 ][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 13/26 (dimension 6) :\n", "<>][1 <>][3 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 14/26 (dimension 6) :\n", "<>][2 ][1 <>][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 15/26 (dimension 6) :\n", "<>][2 ][2 ][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 16/26 (dimension 6) :\n", "<>][3 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 17/26 (dimension 6) :\n", "<][1 <>][1 <>][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 18/26 (dimension 6) :\n", "<][1 <>][2 ][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 19/26 (dimension 6) :\n", "<][2 ][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 20/26 (dimension 6) :\n", "<>][1 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 21/26 (dimension 6) :\n", "<>][1 <>][1 <>][1 <>][2 ]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 22/26 (dimension 6) :\n", "<>][1 <>][1 <>][2 ][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 23/26 (dimension 6) :\n", "<>][1 <>][2 ][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 24/26 (dimension 6) :\n", "<>][2 ][1 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 25/26 (dimension 6) :\n", "<][1 <>][1 <>][1 <>][1 <>]>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 1s.\n", "Computing the boundary of the generator 26/26 (dimension 6) :\n", "<>][1 <>][1 <>][1 <>][1 <>][1 <>]>> \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 -> 2015-12-29, 1h 11m 1s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat: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": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "NIL" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(typep s3 'cat:kan)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "T" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(typep os3 'cat:kan)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "T" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(typep os3 'cat:simplicial-group)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "NIL" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(typep os3 'cat: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": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "<>" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def L2 (cat:loop3 0 's3 2))" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\n", "----------------------------------------------------------------------{CMBN 4}\n", "<1 * <>>\n", "<-1 * <>>\n", "<1 * <>>\n", "<1 * <>>\n", "<-1 * <>>\n", "<1 * <>>\n", "------------------------------------------------------------------------------\n" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def square (cat:aprd os3 4 (cat: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 $\\texttt{L2}$. The following instruction selects the generator part of the \n", "second element of the previous combination." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "<>" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def L4 (cat:gnrt (second (cat:cmbn-list square))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us use the lisp function $\\texttt{mapcar}$ (one among the various iteration functions of Lisp) to create the list of the faces 1, 2, 3 and 4 of the object $\\texttt{L4}$, this list is a \"Kan hat\"." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(>> >> >> >>)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def hat (mapcar #'(lambda (i) (cat:face os3 i 4 l4)) '(1 2 3 4)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function $\\texttt{kfll}$ tries to find a filling of this \"Kan hat\", and we see that the face $2$ of the resulting simplex (which is very different from $\\texttt{L4}$) is the same as the face $2$ of $\\texttt{L4}$." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ">>" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def kan-simplex (cat:kfll os3 0 4 hat))" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ">>" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:face os3 2 4 kan-simplex)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ">>" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(second hat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let ${\\cal G}$ be a simplicial group $0$-reduced. $\\Omega S^3$ is such a group. The software $\\texttt{Kenzo}$ allows the construction of the universal bundle $\\bar{\\cal W}{\\cal 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$ is null." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K598 Simplicial-Set]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def cls-os3 (cat:classifying-space os3))" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "NIL" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(typep cls-os3 'cat:simplicial-group)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/1 (dimension 5) :\n", "<>]>> \n", "End of computing.\n", "\n", "\n", "\n", "\n", "Homology in dimension 4 :\n", "\n", "\n", "\n", "---done---\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat: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 $\\texttt{Kenzo}$ is the Whitehead tower. In this current 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": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K729 Cohomology-Class on K1 of degree 3]" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def ch3 (cat:chml-clss m23 3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then the function $\\texttt{z2-whitehead}$ is called to build a fibration over the simplicial set $\\texttt{m23}$ canonically associated to the cohomology class $\\texttt{ch3}$." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K730 Fibration K1 -> K64]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def f3 (cat:z2-whitehead m23 ch3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then the total space of the fibration is built:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K736 Simplicial-Set]" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def x4 (cat: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": 45, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/2 (dimension 3) :\n", ">> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 2/2 (dimension 3) :\n", ">> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 4.\n", "Rank of the source-module : 3.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/3 (dimension 4) :\n", ">> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 2/3 (dimension 4) :\n", ">> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 3/3 (dimension 4) :\n", ">> \n", "End of computing.\n", "\n", "\n", "\n", "\n", "Homology in dimension 3 :\n", "\n", "\n", "\n", "---done---\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "\n", "\n", "Computing boundary-matrix in dimension 4.\n", "Rank of the source-module : 3.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/3 (dimension 4) :\n", ">> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 2/3 (dimension 4) :\n", ">> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 3/3 (dimension 4) :\n", ">> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 5.\n", "Rank of the source-module : 4.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/4 (dimension 5) :\n", ">> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 2/4 (dimension 5) :\n", ">> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 3/4 (dimension 5) :\n", ">> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 4/4 (dimension 5) :\n", ">> \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 -> 2015-12-29, 1h 11m 2s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat: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": 46, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K817 Cohomology-Class on K802 of degree 4]" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def ch4 (cat:chml-clss x4 4))" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K832 Fibration K736 -> K818]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def f4 (cat:z2-whitehead x4 ch4))" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[K838 Simplicial-Set]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat:def x5 (cat:fibration-total f4))" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "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 -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/4 (dimension 4) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 2/4 (dimension 4) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 3/4 (dimension 4) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 4/4 (dimension 4) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 5.\n", "Rank of the source-module : 7.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/7 (dimension 5) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 2/7 (dimension 5) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 3/7 (dimension 5) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 4/7 (dimension 5) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 5/7 (dimension 5) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 6/7 (dimension 5) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 7/7 (dimension 5) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", "\n", "\n", "Homology in dimension 4 :\n", "\n", "\n", "\n", "---done---\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "\n", "\n", "Computing boundary-matrix in dimension 5.\n", "Rank of the source-module : 7.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/7 (dimension 5) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 2/7 (dimension 5) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 3/7 (dimension 5) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 4/7 (dimension 5) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 5/7 (dimension 5) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 6/7 (dimension 5) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 7/7 (dimension 5) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", "Computing boundary-matrix in dimension 6.\n", "Rank of the source-module : 14.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 1/14 (dimension 6) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 2/14 (dimension 6) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 3/14 (dimension 6) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 4/14 (dimension 6) :\n", ">> <>][3 <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 5/14 (dimension 6) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 6/14 (dimension 6) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 7/14 (dimension 6) :\n", ">> <>]>>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 8/14 (dimension 6) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 9/14 (dimension 6) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 10/14 (dimension 6) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 11/14 (dimension 6) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 12/14 (dimension 6) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 13/14 (dimension 6) :\n", ">> <>> \n", "End of computing.\n", "\n", "\n", ";; Clock -> 2015-12-29, 1h 11m 2s.\n", "Computing the boundary of the generator 14/14 (dimension 6) :\n", ">> <>> \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 -> 2015-12-29, 1h 11m 2s.\n", "\n" ] }, { "data": { "text/plain": [ "NIL" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(cat: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": 0 }