diff --git a/examples/Chapter1.ipynb b/examples/Chapter1.ipynb index 36bdacf..bb5b5af 100644 --- a/examples/Chapter1.ipynb +++ b/examples/Chapter1.ipynb @@ -1,12 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chapter 1" - ] - }, { "cell_type": "code", "execution_count": 1, @@ -21,6 +14,7 @@ "To load \"kenzo\":\n", " Load 1 ASDF system:\n", " kenzo\n", + "\n", "; Loading \"kenzo\"\n", "\n" ] @@ -28,7 +22,7 @@ { "data": { "text/plain": [ - "(\"kenzo\")" + "(KENZO)" ] }, "execution_count": 1, @@ -37,7 +31,7 @@ } ], "source": [ - "(ql:quickload \"kenzo\")" + "(ql:quickload 'kenzo)" ] }, { @@ -74,7 +68,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 1.2.2 Ordering the generators" + "# Chain Complexes\n", + "\n", + "## Introduction\n", + "\n", + "## Generators, terms, and combinations\n", + "\n", + "To become familiar with the Lisp functions implementing the chain complexes, the best is to begin with an example. *Simplicial complexes* are good candidates for this purpose, and we shall take as a typical example the following simplicial complex." ] }, { @@ -83,6 +83,57 @@ "metadata": { "collapsed": false }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAD5CAYAAADMd4SKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACh1SURBVHhe7d0LkFZlHcfxB8UL4zXNdIwIgUlNnbyPl10kdVzM+wyjLFqhKQZYluGik5YllUs2XlJINKGpWHSYvOdCyiQgGmrmJTVjsVHSNK+paSoSv2fPf3n27Hn3Avteznm+n5m3c3tfzXfPe87/PM/vPGfAmrUcAABAwW2UTAEAAAqNogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBogcAAESBoicSS5cudQMGDOh4jR49OtnS2bx58/z2SZMmJWsAACgGip4IrFy50tXX1ydL7RYsWNClsNFyY2NjsgQA+WcXcvbq7oLO3oPiouiJwPz58/20ubnZrVmzxrW1tfnlhQsX+qmMGDHCzZw50w0fPjxZAwD5phbu9IWcjnPTp09PltYp1fqNYqHoicjUqVN9q8+wYcN88bNixYpkSzsVQ9OmTUuWACDf5s6d66ctLS3+mLdkyRK/vGjRIj81KoLU+o3io+iJQFNTUzLnfEuOmm/VshNSAaRiCACKxlp76urqfPHT2trql0WtQbognDhxYrIGRUbREwn90MOuK7XqpAsfACiSKVOmJHPr8jrpbqzx48f7Y+OMGTOSNSgyip6IqDUnbOJV4aOrHAAoIuvKD6kbywofhZp1HJwzZ45fRvFR9ERAP3Bd4eguBlETb0NDg58HgKJT4aOXsj2iwkf5RoWaRXe3hndtaZ4LwmKi6ImAmm9F/drWxGuhPRVAAFBE6sIPC5ixY8dyh2rkKHoioB+6XeGE0s2+AFAkEyZM8FNrydFL3VkqfKzrK3wZzXNBWEwD1v5xOfMBAApJt6Pr7iyjgic9XIdRUSScFouLogcAAESB7i0AABAFih4AABAFih4AABAFih4AABAFgswReu655zoeuHf44Ye7XXbZxc8DQNFx/IsbRU9EnnzySXfssce6V1991W266aZ+3QcffOA++clPujvvvNPtueeefh0AFA3HPwhFTyT0gz/ssMPc6tWr3VtvvZWsbbfNNtu4jTfe2N1333388AEUDsc/GIqeSAwdOtS98MIL7uOPP07WdLbRRhu5IUOG+KZfACgSjn8wBJkjoB+ymnRL/eBF2/SeV155JVkDAPnH8Q8hip4IKLQ3aNCgZKm0LbbYwi1evDhZAoD84/iHEEVPJHrTi/nRRx916e8GgLzj+AdD0RMB3Zb53nvvJUul6T16LwAUBcc/hCh6IqBxKHbYYQcf1itF2wYOHOgeeuihZA0A5F9vj396D2P2FB93b0VCt2yOHDnSj0vx7rvvJmvbqS97k002cW+++aZf/uY3v+muuuoqPw8AeaNj2YMPPuhf999/v9txxx3dHXfc4Y9/77//fvKudjr+adwe5Xm4Zb34KHoiosLnmGOO8Xco2J99wIAB7lOf+pS76667XGtrqzv//PP9+n333ddde+217qCDDvLLAFCLPvzwQ/fYY4+5v/zlL52mb7/9tt++9957uwsuuMB3X2n6xhtv+OOfWnfC4x8FTxwoeiKkWzhvvPFGP3/GGWd0atLVldHkyZPdn//8Z7/805/+1E2ZMsXPA0C1vfzyyx2FjRU5Tz31VLK1q/POO88df/zxyZJzL730kmtsbPTzK1eupEsrMhQ9kTr99NP9dPbs2X6api6un//8537+xBNPdNdcc4379Kc/7ZcBoBreeecd19zc7I9H1h3fnf3228/97Gc/S5bWGTVqlJ9y+osPQeYIPfHEE37sCr00n+Xqq692N910k38uza233ur22Wcfd/PNNydbAaDyttxyS3fppZe6Rx55xF155ZXuiCOOSLZ0pRzPqaeemiwB7Sh6IqT+6+eff96/NF/KySef7JuO1dLz73//251yyinu3HPPTbYCQHUMGzbMH4vuueeeTl1XoaOPPtpnE4EQRU9kNPhWWOhovrsBudSldcstt/hsj6gFSE3Gyv4AQLU88MAD/lh0++23J2vWUbGjogdIo+iJjIqcpUuXJkvOz3fX2mMUZtZBRgcThZwPPvhgd/nllydbAaBydOw55JBD/LFojz32cJdcckmyxfnhN770pS/57i0gjaInMlkFTm+KHtHt6+pL/8Y3vuGXdXv7SSed5P75z3/6ZQAoJx1rdMyxoTV0F5aG1lDm0KjgOfLII5MloDOKnoiUatVJt/70hJAzgErTMUZj7uiYs9122/lA89lnn+23bb311m6rrbbyt5/TrYXu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", + "text/plain": [ + "#" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(png-from-file \"diabolo.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this simplicial complex, called here *diabolo*, there are 3 associated chain groups.\n", + "\n", + "* $C_0$, the free $\\mathbb{Z}$-module on the set of vertices $\\{s_0,s_1,s_2,s_3,s_4,s_5\\}$\n", + "* $C_1$, the free $\\mathbb{Z}$-module on the set of edges $\\{s_{01},s_{02},s_{12},s_{23},s_{34},s_{35}, s_{45}\\}$\n", + "* $C_2$, the free $\\mathbb{Z}$-module on the set of triangles (here a singleton) $\\{s_{345}\\}$\n", + "\n", + "The elements of either of those groups $C_p$ are linear integer combinations of the corresponding basis (set of $\\sigma_i$'s), i.e., elements of the form\n", + "$$\\sum\\lambda_i\\sigma_i, \\quad \\lambda_i\\in\\mathbb{Z}.$$\n", + "An element $\\sigma_i$ of any basis is also called a *generator* and in our specific case this generator will be represented by a Lisp symbol. For instance, $s_{45}$ will be translated into $\\texttt{s45}$. However, the user should be aware that in more realistic usage of the software, generators may be of any type. A product such as $\\lambda_i\\sigma_i$ is called a *term* and a sum of terms, a *combination*.\n", + "\n", + "### Representation of a combination\n", + "\n", + "A combination is represented internally in the system by a list habing the following general form:\n", + "$$\\texttt{(:cmbn degree}\\quad(\\lambda_1\\cdot\\sigma_1)\\dots(\\lambda_k\\cdot\\sigma_k)\\texttt{)}$$\n", + "and containing\n", + "\n", + "1. The degree of the combination corresponding to the index $p\\in\\mathbb{Z}$ of the group $C_p$ to which this combination belongs.\n", + "2. The list of the internal representation of the terms, namely the list of pairs $(\\lambda_i\\cdot\\sigma_i)$.\n", + "\n", + "This choice of representation implaies that only homogeneous combinations will be considered. A type $\\texttt{CMBN}$ and a printing method are provided with this internal representation. The external form of a combination is shown in the examples.\n", + "\n", + "### Ordering the generators" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -95,7 +146,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -106,7 +157,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -117,7 +168,7 @@ ":LESS" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -128,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -145,7 +196,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -156,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -167,7 +218,7 @@ ":GREATER" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -178,7 +229,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -194,7 +245,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -205,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -216,7 +267,7 @@ ":GREATER" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -229,12 +280,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 1.2.3 Functions handling combinations" + "### Functions handling combinations" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -252,7 +303,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -263,7 +314,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -280,7 +331,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -291,7 +342,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -306,7 +357,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -317,7 +368,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -328,7 +379,7 @@ "T" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -346,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -357,7 +408,7 @@ "((1 . U) (2 . V) (3 . W) (4 . Z))" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -368,7 +419,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -379,7 +430,7 @@ "(3 . W)" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -390,7 +441,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -405,7 +456,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -416,7 +467,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -427,7 +478,7 @@ "3" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -438,7 +489,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -453,7 +504,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -464,7 +515,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -475,7 +526,7 @@ "W" ] }, - "execution_count": 18, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -486,7 +537,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -501,7 +552,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 19, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -512,7 +563,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -529,7 +580,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 20, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -540,7 +591,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -555,7 +606,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 21, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -566,7 +617,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -583,7 +634,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 22, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -594,7 +645,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -612,7 +663,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 23, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -623,7 +674,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -640,7 +691,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 24, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -651,7 +702,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -669,7 +720,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 25, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -680,7 +731,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -697,7 +748,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 26, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -708,7 +759,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -725,7 +776,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 27, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -739,38 +790,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 1.3.1 The function build-chcm" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "## Representation of a chain complex\n", + "\n", + "### The function build-chcm\n", + "\n", "#### A first example of a chain complex" ] }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "#" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:def diabolo-cmpr #'cat:s-cmpr)" - ] - }, { "cell_type": "code", "execution_count": 29, @@ -781,7 +807,7 @@ { "data": { "text/plain": [ - "#" + "#" ] }, "execution_count": 29, @@ -789,6 +815,28 @@ "output_type": "execute_result" } ], + "source": [ + "(cat:def diabolo-cmpr #'cat:s-cmpr)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "#" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "(cat:def diabolo-basis #'(lambda (dmn)\n", " (case dmn\n", @@ -800,7 +848,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -811,7 +859,7 @@ "S0" ] }, - "execution_count": 30, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -822,7 +870,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -830,10 +878,10 @@ { "data": { "text/plain": [ - "#" + "#" ] }, - "execution_count": 31, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -860,7 +908,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -871,7 +919,7 @@ ":GNRT" ] }, - "execution_count": 32, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -882,7 +930,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -893,7 +941,7 @@ "(DIABOLO-FOR-EXAMPLE)" ] }, - "execution_count": 33, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -904,7 +952,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -932,17 +980,19 @@ " of the differential homomorphism, either by generator or by\n", " combination. The default is :GNRT\n", "\n", - ":ORGN ORGN, a list containing a relevant and carefully chosen comment about\n", - " the origin of the chain complex. This comment should be unique\n", - " for a Kenzo session (between calls of CAT-INIT), as it is used\n", - " for caching purposes.\n", + ":ORGN ORGN, a list which is the copy of a Lisp statement, in principle the\n", + " statement which was at the origin of the creation of this Kenzo\n", + " object. A caching process, using this slot, prevents the creation\n", + " of multiple copies of the same mathematical object, which is\n", + " important for efficiency. It is used also for debugging and\n", + " analyzing the program.\n", "\n", "Use this function instead of creating instances via the standard constructor\n", "MAKE-INSTANCE.\n", "------------------------------------------------------------------------------\"" ] }, - "execution_count": 34, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -953,7 +1003,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -964,7 +1014,7 @@ "[K1 Chain-Complex]" ] }, - "execution_count": 35, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -977,7 +1027,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -993,35 +1043,13 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(documentation 'cat:chcm 'function)" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K1 Chain-Complex]" - ] - }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "(cat:chcm 1)" + "(documentation 'cat:chcm 'function)" ] }, { @@ -1034,7 +1062,7 @@ { "data": { "text/plain": [ - "(DIABOLO-FOR-EXAMPLE)" + "[K1 Chain-Complex]" ] }, "execution_count": 38, @@ -1043,7 +1071,7 @@ } ], "source": [ - "(cat:orgn diabolo)" + "(cat:chcm 1)" ] }, { @@ -1056,7 +1084,7 @@ { "data": { "text/plain": [ - "1" + "(DIABOLO-FOR-EXAMPLE)" ] }, "execution_count": 39, @@ -1065,7 +1093,7 @@ } ], "source": [ - "(cat:idnm diabolo)" + "(cat:orgn diabolo)" ] }, { @@ -1078,7 +1106,7 @@ { "data": { "text/plain": [ - "(S0 S1 S2 S3 S4 S5)" + "1" ] }, "execution_count": 40, @@ -1087,7 +1115,7 @@ } ], "source": [ - "(cat:basis diabolo 0)" + "(cat:idnm diabolo)" ] }, { @@ -1100,7 +1128,7 @@ { "data": { "text/plain": [ - "(S01 S02 S12 S23 S34 S35 S45)" + "(S0 S1 S2 S3 S4 S5)" ] }, "execution_count": 41, @@ -1109,7 +1137,7 @@ } ], "source": [ - "(cat:basis diabolo 1)" + "(cat:basis diabolo 0)" ] }, { @@ -1122,7 +1150,7 @@ { "data": { "text/plain": [ - "(S345)" + "(S01 S02 S12 S23 S34 S35 S45)" ] }, "execution_count": 42, @@ -1131,7 +1159,7 @@ } ], "source": [ - "(cat:basis diabolo 2)" + "(cat:basis diabolo 1)" ] }, { @@ -1144,7 +1172,7 @@ { "data": { "text/plain": [ - "NIL" + "(S345)" ] }, "execution_count": 43, @@ -1152,13 +1180,35 @@ "output_type": "execute_result" } ], + "source": [ + "(cat:basis diabolo 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "(cat:basis diabolo 10)" ] }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 45, "metadata": { "collapsed": false }, @@ -1174,7 +1224,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 44, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1185,7 +1235,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -1198,7 +1248,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 45, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -1216,7 +1266,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -1227,7 +1277,7 @@ "[K3 Chain-Complex]" ] }, - "execution_count": 46, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1251,7 +1301,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -1266,7 +1316,7 @@ "------------------------------------------------------------------------------\"" ] }, - "execution_count": 47, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -1284,7 +1334,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -1295,7 +1345,7 @@ "CIRCLE" ] }, - "execution_count": 48, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1321,12 +1371,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 1.4 Morphisms" + "## Morphisms" ] }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -1377,13 +1427,15 @@ "9. IDNM, an integer, a system-generated identifier for this object. Its reader\n", " function is IDNM.\n", "\n", - "10. ORGN, a list containg a comment indicating the origin of the object. The\n", - " should be unique (per session), since it is used in the implementation for\n", - " caching purposes. Its reader function is ORGN.\n", + "10. ORGN, a list which is the copy of a Lisp statement, in principle the\n", + " statement which was at the origin of the creation of this Kenzo object.\n", + " A caching process, using this slot, prevents the creation of multiple\n", + " copies of the same mathematical object, which is important for efficiency.\n", + " It is used also for debugging and analyzing the program.\n", "-----------------------------------------------------------------------------\"" ] }, - "execution_count": 49, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -1396,12 +1448,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 1.4.1 The function $\\texttt{build-mprh}$" + "### The function $\\texttt{build-mprh}$" ] }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -1427,17 +1479,19 @@ " of the differential homomorphism, either by generator or by\n", " combination. The default is :GNRT\n", "\n", - ":ORGN ORGN, a list containing a relevant and carefully chosen comment about\n", - " the origin of the chain complex. This comment should be unique\n", - " for a Kenzo session (between calls of CAT-INIT), as it is used\n", - " for caching purposes.\n", + ":ORGN ORGN, a list which is the copy of a Lisp statement, in principle the\n", + " statement which was at the origin of the creation of this Kenzo\n", + " object. A caching process, using this slot, prevents the creation\n", + " of multiple copies of the same mathematical object, which is\n", + " important for efficiency. It is used also for debugging and\n", + " analyzing the program.\n", "\n", "Use this function instead of creating instances via the standard constructor\n", "MAKE-INSTANCE.\n", "------------------------------------------------------------------------------\"" ] }, - "execution_count": 50, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -1455,7 +1509,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -1474,35 +1528,13 @@ "NIL" ] }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:cat-init)" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K1 Chain-Complex]" - ] - }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "(cat:def ZCC (cat:z-chcm))" + "(cat:cat-init)" ] }, { @@ -1515,7 +1547,7 @@ { "data": { "text/plain": [ - "[K3 Cohomology-Class on K1 of degree 1]" + "[K1 Chain-Complex]" ] }, "execution_count": 53, @@ -1523,6 +1555,28 @@ "output_type": "execute_result" } ], + "source": [ + "(cat:def ZCC (cat:z-chcm))" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K3 Cohomology-Class on K1 of degree 1]" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "(cat:def zero-morphism (cat:build-mrph :sorc ZCC\n", " :trgt ZCC\n", @@ -1535,7 +1589,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 55, "metadata": { "collapsed": false }, @@ -1546,7 +1600,7 @@ "[K4 Cohomology-Class on K1 of degree 0]" ] }, - "execution_count": 54, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1564,12 +1618,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 1.4.3 Functions defining morphisms" + "### Applying morphisms\n", + "\n", + "### Functions defining morphisms" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 56, "metadata": { "collapsed": false }, @@ -1577,10 +1633,10 @@ { "data": { "text/plain": [ - "#" + "#" ] }, - "execution_count": 55, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -1594,7 +1650,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 57, "metadata": { "collapsed": false }, @@ -1605,7 +1661,7 @@ "[K5 Chain-Complex]" ] }, - "execution_count": 56, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -1621,7 +1677,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 58, "metadata": { "collapsed": false }, @@ -1632,7 +1688,7 @@ "[K7 Morphism (degree 1): K5 -> K5]" ] }, - "execution_count": 57, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -1646,7 +1702,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 59, "metadata": { "collapsed": false }, @@ -1657,7 +1713,7 @@ "[K8 Morphism (degree -1): K5 -> K5]" ] }, - "execution_count": 58, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -1671,7 +1727,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 60, "metadata": { "collapsed": false }, @@ -1685,7 +1741,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 59, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -1696,7 +1752,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 61, "metadata": { "collapsed": false }, @@ -1709,7 +1765,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 60, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -1720,7 +1776,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 62, "metadata": { "collapsed": false }, @@ -1736,7 +1792,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 61, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } @@ -1747,7 +1803,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 63, "metadata": { "collapsed": false }, @@ -1762,37 +1818,13 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:? ccn combn)" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 3}\n", - "------------------------------------------------------------------------------\n" - ] - }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "(cat:? ccn (cat:? ccn combn))" + "(cat:? ccn combn)" ] }, { @@ -1806,8 +1838,7 @@ "data": { "text/plain": [ "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 16>\n", + "----------------------------------------------------------------------{CMBN 3}\n", "------------------------------------------------------------------------------\n" ] }, @@ -1817,7 +1848,7 @@ } ], "source": [ - "(cat:? upper-shift 0 6)" + "(cat:? ccn (cat:? ccn combn))" ] }, { @@ -1831,8 +1862,8 @@ "data": { "text/plain": [ "\n", - "----------------------------------------------------------------------{CMBN 4}\n", - "<1 * 41>\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * 16>\n", "------------------------------------------------------------------------------\n" ] }, @@ -1842,7 +1873,7 @@ } ], "source": [ - "(cat:? lower-shift 5 51)" + "(cat:? upper-shift 0 6)" ] }, { @@ -1856,8 +1887,8 @@ "data": { "text/plain": [ "\n", - "----------------------------------------------------------------------{CMBN 3}\n", - "<1 * 31>\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<1 * 41>\n", "------------------------------------------------------------------------------\n" ] }, @@ -1867,7 +1898,7 @@ } ], "source": [ - "(cat:? lower-shift (cat:? lower-shift 5 51))" + "(cat:? lower-shift 5 51)" ] }, { @@ -1881,11 +1912,8 @@ "data": { "text/plain": [ "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 10>\n", - "<2 * 11>\n", - "<3 * 12>\n", - "<4 * 13>\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * 31>\n", "------------------------------------------------------------------------------\n" ] }, @@ -1895,7 +1923,7 @@ } ], "source": [ - "(cat:def comb1 (cat:cmbn 1 1 10 2 11 3 12 4 13))" + "(cat:? lower-shift (cat:? lower-shift 5 51))" ] }, { @@ -1904,50 +1932,6 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K9 Morphism (degree 0): K5 -> K5]" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:def identity? (cat:cmps upper-shift lower-shift))" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:degr identity?)" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": { - "collapsed": false - }, "outputs": [ { "data": { @@ -1961,13 +1945,57 @@ "------------------------------------------------------------------------------\n" ] }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(cat:def comb1 (cat:cmbn 1 1 10 2 11 3 12 4 13))" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K9 Morphism (degree 0): K5 -> K5]" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(cat:def identity? (cat:cmps upper-shift lower-shift))" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "(cat:? identity? comb1)" + "(cat:degr identity?)" ] }, { @@ -1982,6 +2010,10 @@ "text/plain": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * 10>\n", + "<2 * 11>\n", + "<3 * 12>\n", + "<4 * 13>\n", "------------------------------------------------------------------------------\n" ] }, @@ -1991,7 +2023,7 @@ } ], "source": [ - "(cat:2cmbn-sbtr (cat:cmpr ccn) comb1 (cat:? identity? comb1))" + "(cat:? identity? comb1)" ] }, { @@ -2004,7 +2036,9 @@ { "data": { "text/plain": [ - "[K10 Morphism (degree 2): K5 -> K5]" + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n" ] }, "execution_count": 72, @@ -2013,7 +2047,7 @@ } ], "source": [ - "(cat:def upper-shift2 (cat:cmps upper-shift upper-shift))" + "(cat:2cmbn-sbtr (cat:cmpr ccn) comb1 (cat:? identity? comb1))" ] }, { @@ -2026,7 +2060,7 @@ { "data": { "text/plain": [ - "2" + "[K10 Morphism (degree 2): K5 -> K5]" ] }, "execution_count": 73, @@ -2034,13 +2068,35 @@ "output_type": "execute_result" } ], + "source": [ + "(cat:def upper-shift2 (cat:cmps upper-shift upper-shift))" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "(cat:degr upper-shift2)" ] }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 75, "metadata": { "collapsed": false }, @@ -2057,35 +2113,13 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:? upper-shift2 comb1)" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K11 Morphism (degree 1): K5 -> K5]" - ] - }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "(cat:def twice-up-shift (cat:add upper-shift upper-shift))" + "(cat:? upper-shift2 comb1)" ] }, { @@ -2098,7 +2132,7 @@ { "data": { "text/plain": [ - "1" + "[K11 Morphism (degree 1): K5 -> K5]" ] }, "execution_count": 76, @@ -2106,13 +2140,35 @@ "output_type": "execute_result" } ], + "source": [ + "(cat:def twice-up-shift (cat:add upper-shift upper-shift))" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "(cat:degr twice-up-shift)" ] }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 78, "metadata": { "collapsed": false }, @@ -2129,35 +2185,13 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:? twice-up-shift comb1)" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K12 Morphism (degree 0): K5 -> K5]" - ] - }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "(cat:def up-d (cat:cmps upper-shift (cat:dffr1 ccn)))" + "(cat:? twice-up-shift comb1)" ] }, { @@ -2170,7 +2204,7 @@ { "data": { "text/plain": [ - "[K13 Morphism (degree 0): K5 -> K5]" + "[K12 Morphism (degree 0): K5 -> K5]" ] }, "execution_count": 79, @@ -2179,7 +2213,7 @@ } ], "source": [ - "(cat:def d-up (cat:cmps (cat:dffr1 ccn) upper-shift))" + "(cat:def up-d (cat:cmps upper-shift (cat:dffr1 ccn)))" ] }, { @@ -2192,10 +2226,7 @@ { "data": { "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 11>\n", - "------------------------------------------------------------------------------\n" + "[K13 Morphism (degree 0): K5 -> K5]" ] }, "execution_count": 80, @@ -2204,7 +2235,7 @@ } ], "source": [ - "(cat:? up-d 1 11)" + "(cat:def d-up (cat:cmps (cat:dffr1 ccn) upper-shift))" ] }, { @@ -2219,6 +2250,7 @@ "text/plain": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * 11>\n", "------------------------------------------------------------------------------\n" ] }, @@ -2228,7 +2260,7 @@ } ], "source": [ - "(cat:? d-up 1 11)" + "(cat:? up-d 1 11)" ] }, { @@ -2243,12 +2275,6 @@ "text/plain": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 10>\n", - "<2 * 11>\n", - "<3 * 12>\n", - "<4 * 13>\n", - "<5 * 14>\n", - "<6 * 15>\n", "------------------------------------------------------------------------------\n" ] }, @@ -2258,7 +2284,7 @@ } ], "source": [ - "(cat:def comb3 (cat:cmbn 1 1 10 2 11 3 12 4 13 5 14 6 15))" + "(cat:? d-up 1 11)" ] }, { @@ -2273,8 +2299,11 @@ "text/plain": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * 10>\n", "<2 * 11>\n", + "<3 * 12>\n", "<4 * 13>\n", + "<5 * 14>\n", "<6 * 15>\n", "------------------------------------------------------------------------------\n" ] @@ -2285,7 +2314,7 @@ } ], "source": [ - "(cat:? up-d comb3)" + "(cat:def comb3 (cat:cmbn 1 1 10 2 11 3 12 4 13 5 14 6 15))" ] }, { @@ -2294,6 +2323,33 @@ "metadata": { "collapsed": false }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<2 * 11>\n", + "<4 * 13>\n", + "<6 * 15>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(cat:? up-d comb3)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -2306,7 +2362,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 84, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -2319,12 +2375,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### 1.4.4 Accessing $\\texttt{Kenzo}$ objects" + "### Accessing $\\texttt{Kenzo}$ objects" ] }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 86, "metadata": { "collapsed": false }, @@ -2335,7 +2391,7 @@ "[K1 Chain-Complex]" ] }, - "execution_count": 85, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -2346,7 +2402,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 87, "metadata": { "collapsed": false }, @@ -2367,7 +2423,7 @@ "NIL" ] }, - "execution_count": 86, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -2378,7 +2434,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 88, "metadata": { "collapsed": false }, @@ -2389,7 +2445,7 @@ "[K3 Cohomology-Class on K1 of degree 1]" ] }, - "execution_count": 87, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -2400,7 +2456,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 89, "metadata": { "collapsed": false }, @@ -2421,7 +2477,7 @@ "NIL" ] }, - "execution_count": 88, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -2432,7 +2488,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 90, "metadata": { "collapsed": false }, @@ -2453,7 +2509,7 @@ "NIL" ] }, - "execution_count": 89, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } @@ -2464,7 +2520,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 91, "metadata": { "collapsed": false }, @@ -2485,7 +2541,7 @@ "NIL" ] }, - "execution_count": 90, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -2496,7 +2552,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 92, "metadata": { "collapsed": false }, @@ -2517,7 +2573,7 @@ "NIL" ] }, - "execution_count": 91, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } @@ -2528,7 +2584,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 93, "metadata": { "collapsed": false }, @@ -2557,7 +2613,7 @@ "(9 8 7)" ] }, - "execution_count": 92, + "execution_count": 93, "metadata": {}, "output_type": "execute_result" } @@ -2569,7 +2625,7 @@ ], "metadata": { "kernelspec": { - "display_name": "CCL Lisp", + "display_name": "SBCL Lisp", "language": "lisp", "name": "lisp" }, diff --git a/examples/diabolo.png b/examples/diabolo.png new file mode 100644 index 0000000..0e70e89 Binary files /dev/null and b/examples/diabolo.png differ