diff --git a/examples/Chapter1.ipynb b/examples/Chapter1.ipynb index 441db96..25185ee 100644 --- a/examples/Chapter1.ipynb +++ b/examples/Chapter1.ipynb @@ -2,86 +2,36 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": 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" - } - ], + "outputs": [], "source": [ "(ql:quickload 'kenzo)" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "#" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(in-package \"CAT\")" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(cat-init)" ] @@ -128,23 +78,12 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": 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": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(cl-jupyter-user:png-from-file \"diabolo.png\")" ] @@ -198,88 +137,48 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - ":LESS" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(f-cmpr 123 789)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - ":GREATER" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(s-cmpr 'circulation 'circular)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - ":EQUAL" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(s-cmpr 'qwerty 'qwerty)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - ":GREATER" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(l-cmpr '(1 a b) '(1 a))" ] @@ -343,278 +242,132 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * U>\n", - "<2 * V>\n", - "<3 * W>\n", - "<4 * Z>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def comb1 (cmbn 1 1 'u 2 'v 3 'w 4 'z))" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "T" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(cmbn-non-zero-p comb1)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "((1 . U) (2 . V) (3 . W) (4 . Z))" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(cmbn-list comb1)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(3 . W)" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def term3 (third *)) ;; not a Kenzo object!" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "3" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(cffc term3)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "W" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(gnrt term3)" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<-1 * U>\n", - "<-2 * V>\n", - "<-3 * W>\n", - "<-4 * Z>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def mcomb1 (cmbn-opps comb1))" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<10 * U>\n", - "<20 * V>\n", - "<30 * W>\n", - "<40 * Z>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def comb2 (n-cmbn 10 comb1))" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<11 * U>\n", - "<22 * V>\n", - "<33 * W>\n", - "<44 * Z>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def cmb12 (2cmbn-add #'s-cmpr comb1 comb2))" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<-10 * U>\n", - "<-20 * V>\n", - "<-30 * W>\n", - "<-40 * Z>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(2cmbn-sbtr #'s-cmpr comb1 cmb12)" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<55 * U>\n", - "<110 * V>\n", - "<165 * W>\n", - "<220 * Z>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(ncmbn-add #'s-cmpr\n", " comb1 comb2 comb1 comb2 comb1 comb2 comb1 comb2 comb1 comb2)" @@ -688,22 +441,12 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "#" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def diabolo-cmpr #'s-cmpr)" ] @@ -717,22 +460,12 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "#" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def diabolo-basis #'(lambda (dmn)\n", " (case dmn\n", @@ -751,22 +484,12 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "S0" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def diabolo-bspn 's0)" ] @@ -784,22 +507,12 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "#" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def diabolo-pure-dffr\n", " #'(lambda (dmn gnr)\n", @@ -829,44 +542,24 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - ":GNRT" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def diabolo-strt :GNRT)" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(DIABOLO-FOR-EXAMPLE)" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def diabolo-orgn '(diabolo-for-example))" ] @@ -880,22 +573,12 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K1 Chain-Complex]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def diabolo (build-chcm :cmpr diabolo-cmpr :basis diabolo-basis\n", " :bsgn diabolo-bspn :intr-dffr diabolo-pure-dffr\n", @@ -935,227 +618,120 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "([K1 Chain-Complex])" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "*chcm-list*" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K1 Chain-Complex]" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(chcm 1)" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(DIABOLO-FOR-EXAMPLE)" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(orgn diabolo)" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(idnm diabolo)" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(S0 S1 S2 S3 S4 S5)" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(basis diabolo 0)" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(S01 S02 S12 S23 S34 S35 S45)" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(basis diabolo 1)" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(S345)" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(basis diabolo 2)" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(basis diabolo 10)" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * S34>\n", - "<-1 * S35>\n", - "<1 * S45>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(dffr diabolo 2 's345)" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 0}\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(dffr diabolo *)" ] @@ -1171,22 +747,12 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K3 Chain-Complex]" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def ZCC\n", " (the chain-complex\n", @@ -1233,22 +799,12 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "MY-CIRCLE" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(defun MY-CIRCLE ()\n", " (the chain-complex\n", @@ -1347,74 +903,36 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(cat-init)" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K1 Chain-Complex]" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def ZCC (z-chcm))" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K3 Cohomology-Class on K1 of degree 1]" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def zero-morphism (build-mrph :sorc ZCC\n", " :trgt ZCC\n", @@ -1427,22 +945,12 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K4 Cohomology-Class on K1 of degree 0]" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def id-morphism (build-mrph :sorc ZCC\n", " :trgt ZCC\n", @@ -1537,22 +1045,12 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "#" - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def ccn-boundary #'(lambda (dgr gnr)\n", " (if (evenp (+ dgr gnr))\n", @@ -1562,22 +1060,12 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K5 Chain-Complex]" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def ccn (build-chcm :cmpr #'f-cmpr\n", " :basis #'(lambda (n) ( K5]" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def upper-shift (build-mrph\n", " :sorc ccn :trgt ccn :strt :gnrt :degr +1\n", @@ -1614,22 +1092,12 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K8 Morphism (degree -1): K5 -> K5]" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def lower-shift (build-mrph\n", " :sorc ccn :trgt ccn :strt :gnrt :degr -1\n", @@ -1639,126 +1107,60 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 12>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? ccn 2 22)" ] }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 0}\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? ccn *) ;(* means the result of the previous command)" ] }, { "cell_type": "code", - "execution_count": 49, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 5}\n", - "<1 * 50>\n", - "<5 * 55>\n", - "<9 * 59>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def combn (cmbn 5 1 50 5 55 9 59))" ] }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 4}\n", - "<5 * 45>\n", - "<9 * 49>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? ccn combn)" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 3}\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? ccn *)" ] @@ -1772,50 +1174,24 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 16>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? upper-shift 0 6)" ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 4}\n", - "<1 * 41>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? lower-shift 5 51)" ] @@ -1830,25 +1206,12 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 3}\n", - "<1 * 31>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? lower-shift *)" ] @@ -1862,28 +1225,12 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 10>\n", - "<2 * 11>\n", - "<3 * 12>\n", - "<4 * 13>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def comb1 (cmbn 1 1 10 2 11 3 12 4 13))" ] @@ -1897,44 +1244,24 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K9 Morphism (degree 0): K5 -> K5]" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def identity? (cmps upper-shift lower-shift))" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(degr identity?)" ] @@ -1948,52 +1275,24 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 10>\n", - "<2 * 11>\n", - "<3 * 12>\n", - "<4 * 13>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? identity? comb1)" ] }, { "cell_type": "code", - "execution_count": 59, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(2cmbn-sbtr (cmpr ccn) comb1 *)" ] @@ -2007,72 +1306,36 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K10 Morphism (degree 2): K5 -> K5]" - ] - }, - "execution_count": 60, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def upper-shift2 (cmps upper-shift upper-shift))" ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(degr upper-shift2)" ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 3}\n", - "<1 * 30>\n", - "<2 * 31>\n", - "<3 * 32>\n", - "<4 * 33>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? upper-shift2 comb1)" ] @@ -2086,72 +1349,36 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K11 Morphism (degree 1): K5 -> K5]" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def twice-up-shift (add upper-shift upper-shift))" ] }, { "cell_type": "code", - "execution_count": 64, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(degr twice-up-shift)" ] }, { "cell_type": "code", - "execution_count": 65, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 2}\n", - "<2 * 20>\n", - "<4 * 21>\n", - "<6 * 22>\n", - "<8 * 23>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? twice-up-shift comb1)" ] @@ -2165,177 +1392,84 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K12 Morphism (degree 0): K5 -> K5]" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def up-d (cmps upper-shift (dffr1 ccn)))" ] }, { "cell_type": "code", - "execution_count": 67, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K13 Morphism (degree 0): K5 -> K5]" - ] - }, - "execution_count": 67, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def d-up (cmps (dffr1 ccn) upper-shift))" ] }, { "cell_type": "code", - "execution_count": 68, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 11>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? up-d 1 11)" ] }, { "cell_type": "code", - "execution_count": 69, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? d-up 1 11)" ] }, { "cell_type": "code", - "execution_count": 70, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "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" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(def comb3 (cmbn 1 1 10 2 11 3 12 4 13 5 14 6 15))" ] }, { "cell_type": "code", - "execution_count": 71, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<2 * 11>\n", - "<4 * 13>\n", - "<6 * 15>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? up-d comb3)" ] }, { "cell_type": "code", - "execution_count": 72, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "----------------------------------------------------------------------{CMBN 1}\n", - "<1 * 10>\n", - "<3 * 12>\n", - "<5 * 14>\n", - "------------------------------------------------------------------------------\n" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(? d-up comb3)" ] @@ -2364,22 +1498,12 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K1 Chain-Complex]" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(k 1)" ] @@ -2393,225 +1517,98 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Object: [K1 Chain-Complex]\n", - " Origin: (Z-CHCM)\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(kd 1)" ] }, { "cell_type": "code", - "execution_count": 75, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K3 Cohomology-Class on K1 of degree 1]" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(k 3)" ] }, { "cell_type": "code", - "execution_count": 76, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Object: [K3 Cohomology-Class on K1 of degree 1]\n", - " Origin: (ZERO MORPHISM ON ZCC)\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 76, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(kd 3)" ] }, { "cell_type": "code", - "execution_count": 77, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Object: [K8 Morphism (degree -1): K5 -> K5]\n", - " Origin: (CCN SHIFT -10)\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(kd 8)" ] }, { "cell_type": "code", - "execution_count": 78, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Object: [K5 Chain-Complex]\n", - " Origin: (CCN)\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(kd 5)" ] }, { "cell_type": "code", - "execution_count": 79, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Object: [K9 Morphism (degree 0): K5 -> K5]\n", - " Origin: (2MRPH-CMPS [K7 Morphism (degree 1): K5 -> K5] [K8 Morphism (degree -1): K5 -> K5] GNRT)\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(kd 9)" ] }, { "cell_type": "code", - "execution_count": 80, + "execution_count": null, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Object: [K9 Morphism (degree 0): K5 -> K5]\n", - " Origin: (2MRPH-CMPS [K7 Morphism (degree 1): K5 -> K5] [K8 Morphism (degree -1): K5 -> K5] GNRT)\n", - "\n", - "\n", - "Object: [K8 Morphism (degree -1): K5 -> K5]\n", - " Origin: (CCN SHIFT -10)\n", - "\n", - "\n", - "Object: [K7 Morphism (degree 1): K5 -> K5]\n", - " Origin: (CCN SHIFT 10)\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "(9 8 7)" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "(kd2 9)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Lisp files concerned in this chapter\n", + "\n", + "``combinations.lisp``, ``chain-complexes.lisp``, ``chcm-elementary-op.lisp``.\n", + "\n", + "[``classes.lisp``, ``macros.lisp``, ``various.lisp``]." + ] } ], "metadata": { diff --git a/examples/Chapter2.ipynb b/examples/Chapter2.ipynb index 9e28781..287ea8a 100644 --- a/examples/Chapter2.ipynb +++ b/examples/Chapter2.ipynb @@ -1389,6 +1389,17 @@ "source": [ "(check-rdct-no-wait)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Lisp files concerned in this chapter\n", + "\n", + "``effective-homology.lisp``, ``cones.lisp``.\n", + "\n", + "[``classes.lisp``, ``macros.lisp``, ``various.lisp``]." + ] } ], "metadata": { diff --git a/examples/Chapter3.ipynb b/examples/Chapter3.ipynb index 0e1c204..5002abb 100644 --- a/examples/Chapter3.ipynb +++ b/examples/Chapter3.ipynb @@ -1,2404 +1,634 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "(ql:quickload :kenzo)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(in-package \"CAT\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(cat-init)" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Chapter 3\n", "# The Homology Module\n", - "## Example" + "\n", + "This chapter is devoted to the description of the functions for computing the homology groups of a chain complex.\n", + "\n", + "## List of functions\n", + "\n", + "``(chcm-homology chcm dim)`` *[Function]*\n", + "> Return a description of the homology group in dimension *dim* of the chain complex *chcm* in terms of *components* of the form $\\mathbb{Z}$ or $\\mathbb{Z}/{n\\, \\mathbb{Z}}$. The desired homology group is the direct sum of these components. No canonical presentation is looked for, so that, if for instance, a homology group is $\\mathbb{Z}/{6\\, \\mathbb{Z}}$, it can be displayed as one component\n", + "$\\mathbb{Z}/{6\\, \\mathbb{Z}}$ or two components $\\mathbb{Z}/{2\\, \\mathbb{Z}}$ and $\\mathbb{Z}/{3\\, \\mathbb{Z}}$. On the other hand, if the component part is void, this means the homology group is the null group. The function ``chcm-homology`` implements the usual algorithms to compute the homology group associated to two integer matrices, the composite of which is null. The current version is verbose: for each group asked for, the program displays the rank of each integer matrix and each generator of the source module. Timing indications are also given. In the examples, only the components are printed.\n", + "\n", + "``{chcm-homology-gen chcm n)`` *[Function]*\n", + "> This function computes the homology group in dimension $n$ of the chain complex *chcm* and prints a generator of degree $n$ in *chcm* for each component of the group (in general a combination of the basis elements of degree $n$ of the chain complex.\n", + "\n", + "``(chcm-mat chcm n)`` *[Function]*\n", + "> Return the matrix of the linear homomorphism $d_n: C_n \\rightarrow C_{n-1}$, where $C_n$ is the $n$--th chain group of the chain complex *chcm*. More precisely, each column of this matrix contains the integer coefficients in the basis of $C_{n-1}$ of the image by $d_n$ of each basis element of $C_n$. So the number of lines (resp. columns) of the matrix is the number of elements of the basis of $C_{n-1}$ (resp. $C_n$). The homology group ${\\cal H}_n={\\cal Z}_n/{\\cal B}_n$ is computed from the two matrices ``MZ`` $=$ ``chcm-mat`` *(chcm,n)* and ``NB`` $=$ ``chcm-mat`` *(chcm, n+1)*. By well known algorithms on matrix reduction (**S. MacLane & G. Birkhoff**, *Algebra*, The MacMillan Company, 1967), the matrix ``MZ`` is used to find a basis for the kernel ${\\cal Z}_n$ and the matrix ``NB``, to find in ${\\cal Z}_n$ a presentation of the group ${\\cal H}_n={\\cal Z}_n/{\\cal B}_n$ by generators and relations. This is performed by the internal function ``homologie`` (beware: not ``homology``!).\n", + "\n", + "``(homology chcm degr1 &optional (degr2 (1+ degr1)))`` *[Method]*\n", + "> Compute the homology groups from $degr_1$ to $degr_2-1$ (default: only $degr_1$, if *degr2* is omitted) of the right chain complex of the homotopy equivalence contained in the slot ``:efhm`` of the\n", + "chain complex instance {\\em chcm}. At the creation of the chain complex, this slot is unbound and is set during execution by an adequate CLOS method. If this slot cannot be bound, an error is returned and the homology groups cannot be computed. A more elaborated explanation of the mechanism used by the function ``homology`` is given in the section: **The general method for computing homology groups.**\n", + "\n", + "\n", + "## Example\n", + "\n", + "Let us get the homology groups for the example ``diabolo`` of the chapter 1." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(\"kenzo\")" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(ql:quickload \"kenzo\")" - ] - }, - { - "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": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K1 Chain-Complex]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:def diabolo (cat:build-chcm\n", - " :cmpr #'cat:s-cmpr\n", - " :basis #'(lambda (dmn)\n", - " (case dmn\n", - " (0 '(s0 s1 s2 s3 s4 s5))\n", - " (1 '(s01 s02 s12 s23 s34 s35 s45))\n", - " (2 '(s345))\n", - " (otherwise nil)))\n", - " :bsgn 's0\n", - " :intr-dffr #'(lambda (dmn gnr)\n", - " (unless (<= 0 dmn 2)\n", - " (error \"Incorrect dimension for diabolo-dp.\"))\n", - " (case dmn\n", - " (0 (cat:cmbn -1)) ; Note the null combination of degree -1\n", - " (1 (case gnr\n", - " (s01 (cat:cmbn 0 -1 's0 1 's1))\n", - " (s02 (cat:cmbn 0 -1 's0 1 's2))\n", - " (s12 (cat:cmbn 0 -1 's1 1 's2))\n", - " (s23 (cat:cmbn 0 -1 's2 1 's3))\n", - " (s34 (cat:cmbn 0 -1 's3 1 's4))\n", - " (s35 (cat:cmbn 0 -1 's3 1 's5))\n", - " (s45 (cat:cmbn 0 -1 's4 1 's5))))\n", - " (2 (case gnr\n", - " (s345 (cat:cmbn 1 1 's34 -1 's35 1 's45))))\n", - " (otherwise (error \"Bad generator for complex diabolo\"))))\n", - " :strt :GNRT\n", - " :orgn '(diabolo-for-example)))" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing boundary-matrix in dimension 0.\n", - "Rank of the source-module : 6.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/6 (dimension 0) :\n", - "S0 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/6 (dimension 0) :\n", - "S1 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/6 (dimension 0) :\n", - "S2 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/6 (dimension 0) :\n", - "S3 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/6 (dimension 0) :\n", - "S4 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/6 (dimension 0) :\n", - "S5 \n", - "End of computing.\n", - "\n", - "\n", - "Computing boundary-matrix in dimension 1.\n", - "Rank of the source-module : 7.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/7 (dimension 1) :\n", - "S01 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/7 (dimension 1) :\n", - "S02 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/7 (dimension 1) :\n", - "S12 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/7 (dimension 1) :\n", - "S23 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/7 (dimension 1) :\n", - "S34 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/7 (dimension 1) :\n", - "S35 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/7 (dimension 1) :\n", - "S45 \n", - "End of computing.\n", - "\n", - "\n", - "\n", - "\n", - "Homology in dimension 0 :\n", - "\n", - "\n", - "Component Z\n", - "\n", - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:chcm-homology diabolo 0)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing boundary-matrix in dimension 1.\n", - "Rank of the source-module : 7.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/7 (dimension 1) :\n", - "S01 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/7 (dimension 1) :\n", - "S02 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/7 (dimension 1) :\n", - "S12 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/7 (dimension 1) :\n", - "S23 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/7 (dimension 1) :\n", - "S34 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/7 (dimension 1) :\n", - "S35 \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/7 (dimension 1) :\n", - "S45 \n", - "End of computing.\n", - "\n", - "\n", - "Computing boundary-matrix in dimension 2.\n", - "Rank of the source-module : 1.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/1 (dimension 2) :\n", - "S345 \n", - "End of computing.\n", - "\n", - "\n", - "\n", - "\n", - "Homology in dimension 1 :\n", - "\n", - "\n", - "Component Z\n", - "\n", - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:chcm-homology diabolo 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "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-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/1 (dimension 2) :\n", - "S345 \n", - "End of computing.\n", - "\n", - "\n", - "Computing boundary-matrix in dimension 3.\n", - "Rank of the source-module : 0.\n", - "\n", - "\n", - "\n", - "\n", - "Homology in dimension 2 :\n", - "\n", - "\n", - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:chcm-homology diabolo 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "#" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:def duncehat-basis #'(lambda (dmn)\n", - " (case dmn\n", - " (0 '((0) (1) (2) (3) (4) (5) (6) (7)))\n", - " (1 '((0 1) (0 2) (0 3)\n", - " (0 4) (0 5) (0 6)\n", - " (0 7) (1 2) (1 3)\n", - " (1 4) (1 5) (1 6)\n", - " (1 7) (2 3) (2 4)\n", - " (2 6) (2 7) (3 4)\n", - " (3 5) (4 5) (4 6)\n", - " (5 6) (5 7) (6 7)))\n", - " (2 '((0 1 5) (0 1 6) (0 1 7)\n", - " (0 2 3) (0 2 4) (0 2 6)\n", - " (0 3 4) (0 5 7) (1 2 3)\n", - " (1 2 4) (1 2 7) (1 3 5)\n", - " (1 4 6) (2 6 7) (3 4 5)\n", - " (4 5 6) (5 6 7)))\n", - " (otherwise nil))))" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "#" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:def duncehat-df #'(lambda (dmn gnr)\n", + "(def diabolo (build-chcm\n", + " :cmpr #'s-cmpr\n", + " :basis #'(lambda (dmn)\n", " (case dmn\n", - " (0 (cat:cmbn -1))\n", - " (1 (cat:cmbn 0 -1 (list (first gnr)) 1 (rest gnr)))\n", - " (2 (cat:cmbn 1 1 (list (first gnr) (second gnr))\n", - " -1 (list (first gnr) (third gnr))\n", - " 1 (rest gnr)))\n", - " (otherwise nil))))" + " (0 '(s0 s1 s2 s3 s4 s5))\n", + " (1 '(s01 s02 s12 s23 s34 s35 s45))\n", + " (2 '(s345))\n", + " (otherwise nil)))\n", + " :bsgn 's0\n", + " :intr-dffr #'(lambda (dmn gnr)\n", + " (unless (<= 0 dmn 2)\n", + " (error \"Incorrect dimension for diabolo-dp.\"))\n", + " (case dmn\n", + " (0 (cmbn -1)) ; Note the null combination of degree -1\n", + " (1 (case gnr\n", + " (s01 (cmbn 0 -1 's0 1 's1))\n", + " (s02 (cmbn 0 -1 's0 1 's2))\n", + " (s12 (cmbn 0 -1 's1 1 's2))\n", + " (s23 (cmbn 0 -1 's2 1 's3))\n", + " (s34 (cmbn 0 -1 's3 1 's4))\n", + " (s35 (cmbn 0 -1 's3 1 's5))\n", + " (s45 (cmbn 0 -1 's4 1 's5))))\n", + " (2 (case gnr\n", + " (s345 (cmbn 1 1 's34 -1 's35 1 's45))))\n", + " (otherwise (error \"Bad generator for complex diabolo\"))))\n", + " :strt :GNRT\n", + " :orgn '(diabolo-for-example)))" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K3 Chain-Complex]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:def duncehat (cat:build-chcm :cmpr #'cat:l-cmpr\n", - " :basis duncehat-basis\n", - " :bsgn '(0)\n", - " :intr-dffr duncehat-df\n", - " :strt :gnrt\n", - " :orgn '(dunce hat)))" + "(chcm-homology diabolo 0)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing boundary-matrix in dimension 0.\n", - "Rank of the source-module : 8.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/8 (dimension 0) :\n", - "(0) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/8 (dimension 0) :\n", - "(1) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/8 (dimension 0) :\n", - "(2) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/8 (dimension 0) :\n", - "(3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/8 (dimension 0) :\n", - "(4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/8 (dimension 0) :\n", - "(5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/8 (dimension 0) :\n", - "(6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 8/8 (dimension 0) :\n", - "(7) \n", - "End of computing.\n", - "\n", - "\n", - "Computing boundary-matrix in dimension 1.\n", - "Rank of the source-module : 24.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/24 (dimension 1) :\n", - "(0 1) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/24 (dimension 1) :\n", - "(0 2) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/24 (dimension 1) :\n", - "(0 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/24 (dimension 1) :\n", - "(0 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/24 (dimension 1) :\n", - "(0 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/24 (dimension 1) :\n", - "(0 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/24 (dimension 1) :\n", - "(0 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 8/24 (dimension 1) :\n", - "(1 2) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 9/24 (dimension 1) :\n", - "(1 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 10/24 (dimension 1) :\n", - "(1 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 11/24 (dimension 1) :\n", - "(1 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 12/24 (dimension 1) :\n", - "(1 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 13/24 (dimension 1) :\n", - "(1 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 14/24 (dimension 1) :\n", - "(2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 15/24 (dimension 1) :\n", - "(2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 16/24 (dimension 1) :\n", - "(2 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 17/24 (dimension 1) :\n", - "(2 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 18/24 (dimension 1) :\n", - "(3 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 19/24 (dimension 1) :\n", - "(3 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 20/24 (dimension 1) :\n", - "(4 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 21/24 (dimension 1) :\n", - "(4 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 22/24 (dimension 1) :\n", - "(5 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 23/24 (dimension 1) :\n", - "(5 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 24/24 (dimension 1) :\n", - "(6 7) \n", - "End of computing.\n", - "\n", - "\n", - "\n", - "\n", - "Homology in dimension 0 :\n", - "\n", - "\n", - "Component Z\n", - "\n", - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:chcm-homology duncehat 0)" + "(chcm-homology diabolo 1)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing boundary-matrix in dimension 1.\n", - "Rank of the source-module : 24.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/24 (dimension 1) :\n", - "(0 1) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/24 (dimension 1) :\n", - "(0 2) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/24 (dimension 1) :\n", - "(0 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/24 (dimension 1) :\n", - "(0 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/24 (dimension 1) :\n", - "(0 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/24 (dimension 1) :\n", - "(0 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/24 (dimension 1) :\n", - "(0 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 8/24 (dimension 1) :\n", - "(1 2) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 9/24 (dimension 1) :\n", - "(1 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 10/24 (dimension 1) :\n", - "(1 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 11/24 (dimension 1) :\n", - "(1 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 12/24 (dimension 1) :\n", - "(1 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 13/24 (dimension 1) :\n", - "(1 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 14/24 (dimension 1) :\n", - "(2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 15/24 (dimension 1) :\n", - "(2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 16/24 (dimension 1) :\n", - "(2 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 17/24 (dimension 1) :\n", - "(2 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 18/24 (dimension 1) :\n", - "(3 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 19/24 (dimension 1) :\n", - "(3 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 20/24 (dimension 1) :\n", - "(4 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 21/24 (dimension 1) :\n", - "(4 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 22/24 (dimension 1) :\n", - "(5 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 23/24 (dimension 1) :\n", - "(5 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 24/24 (dimension 1) :\n", - "(6 7) \n", - "End of computing.\n", - "\n", - "\n", - "Computing boundary-matrix in dimension 2.\n", - "Rank of the source-module : 17.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/17 (dimension 2) :\n", - "(0 1 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/17 (dimension 2) :\n", - "(0 1 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/17 (dimension 2) :\n", - "(0 1 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/17 (dimension 2) :\n", - "(0 2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/17 (dimension 2) :\n", - "(0 2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/17 (dimension 2) :\n", - "(0 2 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/17 (dimension 2) :\n", - "(0 3 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 8/17 (dimension 2) :\n", - "(0 5 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 9/17 (dimension 2) :\n", - "(1 2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 10/17 (dimension 2) :\n", - "(1 2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 11/17 (dimension 2) :\n", - "(1 2 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 12/17 (dimension 2) :\n", - "(1 3 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 13/17 (dimension 2) :\n", - "(1 4 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 14/17 (dimension 2) :\n", - "(2 6 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 15/17 (dimension 2) :\n", - "(3 4 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 16/17 (dimension 2) :\n", - "(4 5 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 17/17 (dimension 2) :\n", - "(5 6 7) \n", - "End of computing.\n", - "\n", - "\n", - "\n", - "\n", - "Homology in dimension 1 :\n", - "\n", - "\n", - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:chcm-homology duncehat 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing boundary-matrix in dimension 2.\n", - "Rank of the source-module : 17.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/17 (dimension 2) :\n", - "(0 1 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/17 (dimension 2) :\n", - "(0 1 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/17 (dimension 2) :\n", - "(0 1 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/17 (dimension 2) :\n", - "(0 2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/17 (dimension 2) :\n", - "(0 2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/17 (dimension 2) :\n", - "(0 2 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/17 (dimension 2) :\n", - "(0 3 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 8/17 (dimension 2) :\n", - "(0 5 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 9/17 (dimension 2) :\n", - "(1 2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 10/17 (dimension 2) :\n", - "(1 2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 11/17 (dimension 2) :\n", - "(1 2 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 12/17 (dimension 2) :\n", - "(1 3 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 13/17 (dimension 2) :\n", - "(1 4 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 14/17 (dimension 2) :\n", - "(2 6 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 15/17 (dimension 2) :\n", - "(3 4 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 16/17 (dimension 2) :\n", - "(4 5 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 17/17 (dimension 2) :\n", - "(5 6 7) \n", - "End of computing.\n", - "\n", - "\n", - "Computing boundary-matrix in dimension 3.\n", - "Rank of the source-module : 0.\n", - "\n", - "\n", - "\n", - "\n", - "Homology in dimension 2 :\n", - "\n", - "\n", - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:chcm-homology duncehat 2)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing boundary-matrix in dimension 1.\n", - "Rank of the source-module : 24.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/24 (dimension 1) :\n", - "(0 1) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/24 (dimension 1) :\n", - "(0 2) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/24 (dimension 1) :\n", - "(0 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/24 (dimension 1) :\n", - "(0 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/24 (dimension 1) :\n", - "(0 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/24 (dimension 1) :\n", - "(0 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/24 (dimension 1) :\n", - "(0 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 8/24 (dimension 1) :\n", - "(1 2) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 9/24 (dimension 1) :\n", - "(1 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 10/24 (dimension 1) :\n", - "(1 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 11/24 (dimension 1) :\n", - "(1 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 12/24 (dimension 1) :\n", - "(1 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 13/24 (dimension 1) :\n", - "(1 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 14/24 (dimension 1) :\n", - "(2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 15/24 (dimension 1) :\n", - "(2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 16/24 (dimension 1) :\n", - "(2 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 17/24 (dimension 1) :\n", - "(2 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 18/24 (dimension 1) :\n", - "(3 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 19/24 (dimension 1) :\n", - "(3 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 20/24 (dimension 1) :\n", - "(4 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 21/24 (dimension 1) :\n", - "(4 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 22/24 (dimension 1) :\n", - "(5 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 23/24 (dimension 1) :\n", - "(5 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 24/24 (dimension 1) :\n", - "(6 7) \n", - "End of computing.\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "\n", - "========== MATRIX 8 lines + 24 columns =====\n", - "L1=[C1=-1][C2=-1][C3=-1][C4=-1][C5=-1][C6=-1][C7=-1]\n", - "L2=[C1=1][C8=-1][C9=-1][C10=-1][C11=-1][C12=-1][C13=-1]\n", - "L3=[C2=1][C8=1][C14=-1][C15=-1][C16=-1][C17=-1]\n", - "L4=[C3=1][C9=1][C14=1][C18=-1][C19=-1]\n", - "L5=[C4=1][C10=1][C15=1][C18=1][C20=-1][C21=-1]\n", - "L6=[C5=1][C11=1][C19=1][C20=1][C22=-1][C23=-1]\n", - "L7=[C6=1][C12=1][C16=1][C21=1][C22=1][C24=-1]\n", - "L8=[C7=1][C13=1][C17=1][C23=1][C24=1]\n", - "========== END-MATRIX" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:def mz (cat:chcm-mat duncehat 1))" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing boundary-matrix in dimension 2.\n", - "Rank of the source-module : 17.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/17 (dimension 2) :\n", - "(0 1 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 2/17 (dimension 2) :\n", - "(0 1 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 3/17 (dimension 2) :\n", - "(0 1 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 4/17 (dimension 2) :\n", - "(0 2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 5/17 (dimension 2) :\n", - "(0 2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 6/17 (dimension 2) :\n", - "(0 2 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 7/17 (dimension 2) :\n", - "(0 3 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 8/17 (dimension 2) :\n", - "(0 5 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 9/17 (dimension 2) :\n", - "(1 2 3) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 10/17 (dimension 2) :\n", - "(1 2 4) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 11/17 (dimension 2) :\n", - "(1 2 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 12/17 (dimension 2) :\n", - "(1 3 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 13/17 (dimension 2) :\n", - "(1 4 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 14/17 (dimension 2) :\n", - "(2 6 7) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 15/17 (dimension 2) :\n", - "(3 4 5) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 16/17 (dimension 2) :\n", - "(4 5 6) \n", - "End of computing.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 17/17 (dimension 2) :\n", - "(5 6 7) \n", - "End of computing.\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "\n", - "========== MATRIX 24 lines + 17 columns =====\n", - "L1=[C1=1][C2=1][C3=1]\n", - "L2=[C4=1][C5=1][C6=1]\n", - "L3=[C4=-1][C7=1]\n", - "L4=[C5=-1][C7=-1]\n", - "L5=[C1=-1][C8=1]\n", - "L6=[C2=-1][C6=-1]\n", - "L7=[C3=-1][C8=-1]\n", - "L8=[C9=1][C10=1][C11=1]\n", - "L9=[C9=-1][C12=1]\n", - "L10=[C10=-1][C13=1]\n", - "L11=[C1=1][C12=-1]\n", - "L12=[C2=1][C13=-1]\n", - "L13=[C3=1][C11=-1]\n", - "L14=[C4=1][C9=1]\n", - "L15=[C5=1][C10=1]\n", - "L16=[C6=1][C14=1]\n", - "L17=[C11=1][C14=-1]\n", - "L18=[C7=1][C15=1]\n", - "L19=[C12=1][C15=-1]\n", - "L20=[C15=1][C16=1]\n", - "L21=[C13=1][C16=-1]\n", - "L22=[C16=1][C17=1]\n", - "L23=[C8=1][C17=-1]\n", - "L24=[C14=1][C17=1]\n", - "========== END-MATRIX" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:def nb (cat:chcm-mat duncehat 2))" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(cat:homologie mz nb)" + "(chcm-homology diabolo 2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 3.2 The general method for computing homology\n", - "### Example" + "Another simple example is the following 2-chain complex corresponding to the well known *dunce hat*. We shall see later in the chapter ``Simplicial Sets`` a much more elegant method to describe this object." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "---done---" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:cat-init)" + "(cl-jupyter-user:png-from-file \"dunce.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The diagram shows a permissible triangulation. For the generators, we have chosen lists rather symbols: a vertex $s_i$ is represented as ``(i)``, an edge $s_is_j$ as ``(i j)`` and a triangle $s_is_js_k$ as ``(i j k)``. The enumeration of the elements of the basis is a little cumbersome but defining the boundary homomorphism is very easy, bearing in mind the boundary rule:\n", + "\n", + "$$\n", + "\\mathbf{d}[s_0s_1\\ldots s_n] = \\sum_{i=0}^n{(-1)^is_0s_1\\ldots\\widehat{s_i}\\ldots s_n}.\n", + "$$\n", + "\n", + "As for diabolo, the vertices are implicitly ordered." ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K1 Simplicial-Set]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:def s2 (cat:sphere 2))" + "(def duncehat-basis #'(lambda (dmn)\n", + " (case dmn\n", + " (0 '((0) (1) (2) (3) (4) (5) (6) (7)))\n", + " (1 '((0 1) (0 2) (0 3)\n", + " (0 4) (0 5) (0 6)\n", + " (0 7) (1 2) (1 3)\n", + " (1 4) (1 5) (1 6)\n", + " (1 7) (2 3) (2 4)\n", + " (2 6) (2 7) (3 4)\n", + " (3 5) (4 5) (4 6)\n", + " (5 6) (5 7) (6 7)))\n", + " (2 '((0 1 5) (0 1 6) (0 1 7)\n", + " (0 2 3) (0 2 4) (0 2 6)\n", + " (0 3 4) (0 5 7) (1 2 3)\n", + " (1 2 4) (1 2 7) (1 3 5)\n", + " (1 4 6) (2 6 7) (3 4 5)\n", + " (4 5 6) (5 6 7)))\n", + " (otherwise nil))))" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K1 Simplicial-Set]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: #\n", - "CAT:BSGN: *\n", - "CAT:DFFR: [K2 Morphism (degree -1): K1 -> K1]\n", - "CAT::GRMD: [K1 Simplicial-Set]\n", - "CAT:EFHM: #\n", - "CAT:IDNM: 1\n", - "CAT:ORGN: (CAT:SPHERE 2)\n", - "CAT:CPRD: [K5 Morphism (degree 0): K1 -> K3]\n", - "CAT:FACE: #\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe s2)" + "(def duncehat-df #'(lambda (dmn gnr)\n", + " (case dmn\n", + " (0 (cmbn -1))\n", + " (1 (cmbn 0 -1 (list (first gnr)) 1 (rest gnr)))\n", + " (2 (cat:cmbn 1 1 (list (first gnr) (second gnr))\n", + " -1 (list (first gnr) (third gnr))\n", + " 1 (rest gnr)))\n", + " (otherwise nil))))" ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Computing boundary-matrix in dimension 1.\n", - "Rank of the source-module : 0.\n", - "\n", - "\n", - "Computing boundary-matrix in dimension 2.\n", - "Rank of the source-module : 1.\n", - "\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "Computing the boundary of the generator 1/1 (dimension 2) :\n", - "S2 \n", - "End of computing.\n", - "\n", - "\n", - "\n", - "\n", - "Homology in dimension 1 :\n", - "\n", - "\n", - "\n", - "---done---\n", - "\n", - ";; Clock -> 2015-08-21, 19h 37m 14s.\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:homology s2 1)" + "(def duncehat (build-chcm :cmpr #'l-cmpr\n", + " :basis duncehat-basis\n", + " :bsgn '(0)\n", + " :intr-dffr duncehat-df\n", + " :strt :gnrt\n", + " :orgn '(dunce hat)))" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K1 Simplicial-Set]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: #\n", - "CAT:BSGN: *\n", - "CAT:DFFR: [K2 Morphism (degree -1): K1 -> K1]\n", - "CAT::GRMD: [K1 Simplicial-Set]\n", - "CAT:EFHM: [K9 Homotopy-Equivalence K1 <= K1 => K1]\n", - "CAT:IDNM: 1\n", - "CAT:ORGN: (CAT:SPHERE 2)\n", - "CAT:CPRD: [K5 Morphism (degree 0): K1 -> K3]\n", - "CAT:FACE: #\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe s2)" + "(chcm-homology duncehat 0)" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(CAT:TRIVIAL-HMEQ [K1 Simplicial-Set])" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:orgn (cat:hmeq 9))" + "(chcm-homology duncehat 1)" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K10 Simplicial-Group]" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:def os2 (cat:loop-space s2))" + "(chcm-homology duncehat 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us take again the chain complex ``duncehat``. The two matrices of the homomorphisms $d_1: C_1 \\rightarrow C_0$ and $d_2: C_2 \\rightarrow C_1$ are obtained by calling ``chcm-mat``." ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K10 Simplicial-Group]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: :LOCALLY-EFFECTIVE\n", - "CAT:BSGN: <>\n", - "CAT:DFFR: [K11 Morphism (degree -1): K10 -> K10]\n", - "CAT::GRMD: [K10 Simplicial-Group]\n", - "CAT:EFHM: #\n", - "CAT:IDNM: 10\n", - "CAT:ORGN: (CAT:LOOP-SPACE [K1 Simplicial-Set])\n", - "CAT:APRD: #\n", - "CAT:CPRD: [K14 Morphism (degree 0): K10 -> K12]\n", - "CAT:FACE: #\n", - "CAT:KFLL: #\n", - "CAT:GRML: [K20 Simplicial-Morphism K15 -> K10]\n", - "CAT:GRIN: [K21 Simplicial-Morphism K10 -> K10]\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe os2)" + "(def mz (chcm-mat duncehat 1))" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(CAT:LOOP-SPACE [K1 Simplicial-Set])" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:orgn os2)" + "(def nb (chcm-mat duncehat 2))" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K118 Homotopy-Equivalence K10 <= K108 => K25]" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:efhm os2)" + "(homologie mz nb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The general method for computing homology\n", + "\n", + "Among the slots of the instance of an object inheriting the ``CHAIN COMPLEX`` class, a slot ``efhm``\n", + "has been reserved to point (possibly) to a homotopy equivalence where the right bottom chain complex is effective. The function ``homology`` is designed to get the right bottom chain complex of the homotopy equivalence value of the slot. If the slot has been bound, then the homology groups are computed by the function ``chcm-homology`` as shown in the following definition:\n", + "\n", + "```lisp\n", + "(DEFMETHOD HOMOLOGY ((chcm chain-complex) degr1 &optional (degr2 (1+ degr1)))\n", + " (do ((degr degr1 (1+ degr)))\n", + " ((>= degr degr2))\n", + " --> (chcm-homology (rbcc (efhm chcm)) degr)\n", + " (terpri) (clock) (terpri)))\n", + "```\n", + "\n", + "But, at the creation of the object, the slot ``efhm`` is unbound and as soon as the ``homology``\n", + "function tries to get the content of the slot ``efhm`` via the call ``(efchm chcm)``, the *slot-unbound* mechanism of CLOS is triggered, calling at its turn a method ``search-efhm`` depending on the object. If no method is available for this object, ``NIL`` is returned. In the following chapters, we shall see that cases have been written for cartesian products, tensor products, suspensions, disk pasting, fibrations, loop spaces, and classifying spaces. The selection of the case is done thanks to the information contained in the comment list of the object (slot ``orgn``). In each case, the ``search-efhm`` method builds - in general with a complex machinery, including a possible recursivity - a homotopy equivalence where the right bottom chain complex is *effective*. The slot ``efhm`` of the object is then settled and the homology group computation may begin. If ``NIL`` is returned, then and only at this moment, the slot-unbound mechanism looks if the chain complex is finite (checking if a basis function exists). If this is the case, then the *trivial homotopy equivalence* is built upon the chain complex and this gives the value of the slot ``efhm``. If there is no basis function, meaning that probably the chain complex is locally effective, an error is returned.\n", + "\n", + "*Remark.* The user may wonder why one does not look first if the given object is effective. We recall simply that even in the case of an effective chain complex, it is sometimes possible to find another effective chain complex, homotopic to the first and whose number of basis elements, in any dimensions, is considerably smaller in comparison with the first one. A striking case will be shown in a further chapter, showing the application of the Eilenberg-Zilber theorem to a cartesian product.\n", + "\n", + "\n", + "### Example\n", + "\n", + "*The reading of this subsection may be postponed until a full reading of this user's guide.* The following examples show how are filled the slots ``efhm`` of the various objects. Starting from the sphere $S^2$, we verify first that the *efhm* slot is unbound. Then we ask for ${\\cal H}_1$ and verify that, though there is a finite basis, ``Kenzo`` has nevertheless built a trivial homotopy equivalence on this object." ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K10 Simplicial-Group]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: :LOCALLY-EFFECTIVE\n", - "CAT:BSGN: <>\n", - "CAT:DFFR: [K11 Morphism (degree -1): K10 -> K10]\n", - "CAT::GRMD: [K10 Simplicial-Group]\n", - "CAT:EFHM: [K118 Homotopy-Equivalence K10 <= K108 => K25]\n", - "CAT:IDNM: 10\n", - "CAT:ORGN: (CAT:LOOP-SPACE [K1 Simplicial-Set])\n", - "CAT:APRD: #\n", - "CAT:CPRD: [K14 Morphism (degree 0): K10 -> K12]\n", - "CAT:FACE: #\n", - "CAT:KFLL: #\n", - "CAT:GRML: [K20 Simplicial-Morphism K15 -> K10]\n", - "CAT:GRIN: [K21 Simplicial-Morphism K10 -> K10]\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe os2)" + "(cat-init)" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K119 Simplicial-Set]" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:def s4 (cat:sphere 4))" + "(def s2 (cat:sphere 2))" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K119 Simplicial-Set]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: #\n", - "CAT:BSGN: *\n", - "CAT:DFFR: [K120 Morphism (degree -1): K119 -> K119]\n", - "CAT::GRMD: [K119 Simplicial-Set]\n", - "CAT:EFHM: #\n", - "CAT:IDNM: 119\n", - "CAT:ORGN: (CAT:SPHERE 4)\n", - "CAT:CPRD: [K123 Morphism (degree 0): K119 -> K121]\n", - "CAT:FACE: #\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe s4)" + "(inspect s2)" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K148 Simplicial-Group]" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:def ooos4 (cat:loop-space (cat:loop-space (cat:loop-space s4))))" + "(homology s2 1)" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(CAT:LOOP-SPACE [K136 Simplicial-Group])" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:orgn ooos4)" + "(inspect s2)" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(CAT:LOOP-SPACE [K124 Simplicial-Group])" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:orgn (second (cat:orgn ooos4)))" + "(orgn (cat:hmeq 9))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we create $\\Omega^1(S^2)$. Getting the value of the slot ``efhm`` by a call to the accessor function ``efhm``, triggers the search-efhm method for a loop space. A homotopy equivalence is built and the slot is set." ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(CAT:LOOP-SPACE [K119 Simplicial-Set])" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:orgn (second (cat:orgn (second (cat:orgn ooos4)))))" + "(def os2 (loop-space s2))" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(CAT:SPHERE 4)" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:orgn (second (cat:orgn (second (cat:orgn (second (cat:orgn ooos4)))))))" + "(inspect os2)" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K136 Simplicial-Group]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: :LOCALLY-EFFECTIVE\n", - "CAT:BSGN: <>\n", - "CAT:DFFR: [K137 Morphism (degree -1): K136 -> K136]\n", - "CAT::GRMD: [K136 Simplicial-Group]\n", - "CAT:EFHM: #\n", - "CAT:IDNM: 136\n", - "CAT:ORGN: (CAT:LOOP-SPACE [K124 Simplicial-Group])\n", - "CAT:APRD: #\n", - "CAT:CPRD: [K140 Morphism (degree 0): K136 -> K138]\n", - "CAT:FACE: #\n", - "CAT:KFLL: #\n", - "CAT:GRML: [K146 Simplicial-Morphism K141 -> K136]\n", - "CAT:GRIN: [K147 Simplicial-Morphism K136 -> K136]\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe (cat:smgr 136))" + "(orgn os2)" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K124 Simplicial-Group]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: :LOCALLY-EFFECTIVE\n", - "CAT:BSGN: <>\n", - "CAT:DFFR: [K125 Morphism (degree -1): K124 -> K124]\n", - "CAT::GRMD: [K124 Simplicial-Group]\n", - "CAT:EFHM: #\n", - "CAT:IDNM: 124\n", - "CAT:ORGN: (CAT:LOOP-SPACE [K119 Simplicial-Set])\n", - "CAT:APRD: #\n", - "CAT:CPRD: [K128 Morphism (degree 0): K124 -> K126]\n", - "CAT:FACE: #\n", - "CAT:KFLL: #\n", - "CAT:GRML: [K134 Simplicial-Morphism K129 -> K124]\n", - "CAT:GRIN: [K135 Simplicial-Morphism K124 -> K124]\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe (cat:smgr 124))" + "(efhm os2)" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K119 Simplicial-Set]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: #\n", - "CAT:BSGN: *\n", - "CAT:DFFR: [K120 Morphism (degree -1): K119 -> K119]\n", - "CAT::GRMD: [K119 Simplicial-Set]\n", - "CAT:EFHM: #\n", - "CAT:IDNM: 119\n", - "CAT:ORGN: (CAT:SPHERE 4)\n", - "CAT:CPRD: [K123 Morphism (degree 0): K119 -> K121]\n", - "CAT:FACE: #\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe (cat:smst 119))" + "(inspect os2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following example shows the recursion mechanism when one wants to get the value of the slot ``efhm`` of an iterated loop space, namely $\\Omega^3(S^4)$." ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "[K522 Homotopy-Equivalence K148 <= K512 => K508]" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(cat:efhm ooos4)" + "(def s4 (sphere 4))" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K124 Simplicial-Group]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: :LOCALLY-EFFECTIVE\n", - "CAT:BSGN: <>\n", - "CAT:DFFR: [K125 Morphism (degree -1): K124 -> K124]\n", - "CAT::GRMD: [K124 Simplicial-Group]\n", - "CAT:EFHM: [K426 Homotopy-Equivalence K124 <= K416 => K329]\n", - "CAT:IDNM: 124\n", - "CAT:ORGN: (CAT:LOOP-SPACE [K119 Simplicial-Set])\n", - "CAT:APRD: #\n", - "CAT:CPRD: [K128 Morphism (degree 0): K124 -> K126]\n", - "CAT:FACE: #\n", - "CAT:KFLL: #\n", - "CAT:GRML: [K134 Simplicial-Morphism K129 -> K124]\n", - "CAT:GRIN: [K135 Simplicial-Morphism K124 -> K124]\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe (cat:smgr 124))" + "(inspect s4)" ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K119 Simplicial-Set]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: #\n", - "CAT:BSGN: *\n", - "CAT:DFFR: [K120 Morphism (degree -1): K119 -> K119]\n", - "CAT::GRMD: [K119 Simplicial-Set]\n", - "CAT:EFHM: [K412 Homotopy-Equivalence K119 <= K119 => K119]\n", - "CAT:IDNM: 119\n", - "CAT:ORGN: (CAT:SPHERE 4)\n", - "CAT:CPRD: [K123 Morphism (degree 0): K119 -> K121]\n", - "CAT:FACE: #\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe (cat:smst 119))" + "(def ooos4 (loop-space (loop-space (loop-space s4))))" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[K119 Simplicial-Set]\n", - "Class: #\n", - "Wrapper: #\n", - "Instance slots\n", - "CAT:CMPR: #\n", - "CAT:BASIS: #\n", - "CAT:BSGN: *\n", - "CAT:DFFR: [K120 Morphism (degree -1): K119 -> K119]\n", - "CAT::GRMD: [K119 Simplicial-Set]\n", - "CAT:EFHM: [K412 Homotopy-Equivalence K119 <= K119 => K119]\n", - "CAT:IDNM: 119\n", - "CAT:ORGN: (CAT:SPHERE 4)\n", - "CAT:CPRD: [K123 Morphism (degree 0): K119 -> K121]\n", - "CAT:FACE: #\n" - ] - }, - { - "data": { - "text/plain": [ - "NIL" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "(describe s4)" + "(orgn ooos4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(orgn (second *))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(orgn (second *))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(orgn (second *))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(inspect (smgr 136))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(inspect (smgr 124))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(inspect (smst 119))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(efhm ooos4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(inspect (smgr 124))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(inspect (smst 119))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(inspect s4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Lisp files concerned in this chapter}\n", + "\n", + "``homology-groups.lisp``, ``searching-homology`` and files containing a ``search-efhm`` method." ] } ], "metadata": { "kernelspec": { - "display_name": "CCL Lisp", + "display_name": "SBCL Lisp", "language": "lisp", "name": "lisp" }, diff --git a/examples/diabolo.png b/examples/diabolo.png index 0e70e89..fcda9b2 100644 Binary files a/examples/diabolo.png and b/examples/diabolo.png differ diff --git a/examples/dunce.png b/examples/dunce.png new file mode 100644 index 0000000..000ccaf Binary files /dev/null and b/examples/dunce.png differ