diff --git a/examples/Chapter1.ipynb b/examples/Chapter1.ipynb index f3ce06a..a7c9dd7 100644 --- a/examples/Chapter1.ipynb +++ b/examples/Chapter1.ipynb @@ -2,7 +2,7 @@ "metadata": { "language": "common-lisp", "name": "", - "signature": "sha256:a754fbeaa1dab0ce169c2df3836c81485925a3dac487688816cd112a3bc45b33" + "signature": "sha256:ce53837f0f933b602cdca49e885032e60c5523054bbed0154b1b627bcc3a6755" }, "nbformat": 3, "nbformat_minor": 0, @@ -29,13 +29,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 1, + "prompt_number": 51, "text": [ "(\"kenzo\")" ] } ], - "prompt_number": 1 + "prompt_number": 51 }, { "cell_type": "code", @@ -57,13 +57,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 2, + "prompt_number": 52, "text": [ "NIL" ] } ], - "prompt_number": 2 + "prompt_number": 52 }, { "cell_type": "heading", @@ -85,7 +85,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 3, + "prompt_number": 53, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "F-CMPR\n", @@ -96,7 +96,7 @@ ] } ], - "prompt_number": 3 + "prompt_number": 53 }, { "cell_type": "code", @@ -110,13 +110,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 3, + "prompt_number": 54, "text": [ ":LESS" ] } ], - "prompt_number": 3 + "prompt_number": 54 }, { "cell_type": "code", @@ -130,7 +130,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 7, + "prompt_number": 55, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "S-CMPR\n", @@ -142,7 +142,7 @@ ] } ], - "prompt_number": 7 + "prompt_number": 55 }, { "cell_type": "code", @@ -156,13 +156,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 4, + "prompt_number": 56, "text": [ ":GREATER" ] } ], - "prompt_number": 4 + "prompt_number": 56 }, { "cell_type": "code", @@ -176,7 +176,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 8, + "prompt_number": 57, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "L-CMPR\n", @@ -187,7 +187,7 @@ ] } ], - "prompt_number": 8 + "prompt_number": 57 }, { "cell_type": "code", @@ -201,13 +201,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 5, + "prompt_number": 58, "text": [ ":GREATER" ] } ], - "prompt_number": 5 + "prompt_number": 58 }, { "cell_type": "heading", @@ -229,7 +229,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 9, + "prompt_number": 59, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "CMBN\n", @@ -242,7 +242,7 @@ ] } ], - "prompt_number": 9 + "prompt_number": 59 }, { "cell_type": "code", @@ -256,7 +256,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 6, + "prompt_number": 60, "text": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", @@ -268,7 +268,7 @@ ] } ], - "prompt_number": 6 + "prompt_number": 60 }, { "cell_type": "code", @@ -282,7 +282,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 8, + "prompt_number": 61, "text": [ "\"-----------------------------------------------------------------[macro-doc]\n", "CMBN-NON-ZERO-P\n", @@ -292,7 +292,7 @@ ] } ], - "prompt_number": 8 + "prompt_number": 61 }, { "cell_type": "code", @@ -306,13 +306,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 7, + "prompt_number": 62, "text": [ "T" ] } ], - "prompt_number": 7 + "prompt_number": 62 }, { "cell_type": "code", @@ -326,13 +326,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 10, + "prompt_number": 63, "text": [ "((1 . U) (2 . V) (3 . W) (4 . Z))" ] } ], - "prompt_number": 10 + "prompt_number": 63 }, { "cell_type": "code", @@ -346,13 +346,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 11, + "prompt_number": 64, "text": [ "(3 . W)" ] } ], - "prompt_number": 11 + "prompt_number": 64 }, { "cell_type": "code", @@ -366,13 +366,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 12, + "prompt_number": 64, "text": [ "3" ] } ], - "prompt_number": 12 + "prompt_number": 64 }, { "cell_type": "code", @@ -386,13 +386,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 13, + "prompt_number": 64, "text": [ "W" ] } ], - "prompt_number": 13 + "prompt_number": 64 }, { "cell_type": "code", @@ -406,7 +406,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 14, + "prompt_number": 64, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "CMBN-OPPS\n", @@ -416,7 +416,7 @@ ] } ], - "prompt_number": 14 + "prompt_number": 64 }, { "cell_type": "code", @@ -430,7 +430,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 15, + "prompt_number": 64, "text": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", @@ -442,7 +442,7 @@ ] } ], - "prompt_number": 15 + "prompt_number": 64 }, { "cell_type": "code", @@ -456,7 +456,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 16, + "prompt_number": 64, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "N-CMBN\n", @@ -466,7 +466,7 @@ ] } ], - "prompt_number": 16 + "prompt_number": 64 }, { "cell_type": "code", @@ -480,7 +480,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 17, + "prompt_number": 64, "text": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", @@ -492,7 +492,7 @@ ] } ], - "prompt_number": 17 + "prompt_number": 64 }, { "cell_type": "code", @@ -506,7 +506,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 18, + "prompt_number": 64, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "2CMBN-ADD\n", @@ -519,7 +519,7 @@ ] } ], - "prompt_number": 18 + "prompt_number": 64 }, { "cell_type": "code", @@ -533,7 +533,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 20, + "prompt_number": 64, "text": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", @@ -545,7 +545,7 @@ ] } ], - "prompt_number": 20 + "prompt_number": 64 }, { "cell_type": "code", @@ -559,7 +559,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 21, + "prompt_number": 64, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "2CMBN-SBTR\n", @@ -572,7 +572,7 @@ ] } ], - "prompt_number": 21 + "prompt_number": 64 }, { "cell_type": "code", @@ -586,7 +586,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 22, + "prompt_number": 64, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "NCMBN-ADD\n", @@ -598,7 +598,7 @@ ] } ], - "prompt_number": 22 + "prompt_number": 64 }, { "cell_type": "code", @@ -613,7 +613,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 23, + "prompt_number": 64, "text": [ "\n", "----------------------------------------------------------------------{CMBN 1}\n", @@ -625,7 +625,7 @@ ] } ], - "prompt_number": 23 + "prompt_number": 64 }, { "cell_type": "heading", @@ -655,13 +655,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 24, + "prompt_number": 64, "text": [ - "#" + "#" ] } ], - "prompt_number": 24 + "prompt_number": 64 }, { "cell_type": "code", @@ -680,13 +680,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 25, + "prompt_number": 64, "text": [ - "#" + "#" ] } ], - "prompt_number": 25 + "prompt_number": 64 }, { "cell_type": "code", @@ -700,13 +700,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 26, + "prompt_number": 64, "text": [ "S0" ] } ], - "prompt_number": 26 + "prompt_number": 64 }, { "cell_type": "code", @@ -736,13 +736,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 28, + "prompt_number": 64, "text": [ - "#" + "#" ] } ], - "prompt_number": 28 + "prompt_number": 64 }, { "cell_type": "code", @@ -756,13 +756,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 29, + "prompt_number": 64, "text": [ ":GNRT" ] } ], - "prompt_number": 29 + "prompt_number": 64 }, { "cell_type": "code", @@ -776,13 +776,13 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 30, + "prompt_number": 64, "text": [ "(DIABOLO-FOR-EXAMPLE)" ] } ], - "prompt_number": 30 + "prompt_number": 64 }, { "cell_type": "code", @@ -796,7 +796,7 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 31, + "prompt_number": 64, "text": [ "\"--------------------------------------------------------------[function-doc]\n", "BUILD-CHCM\n", @@ -829,7 +829,7 @@ ] } ], - "prompt_number": 31 + "prompt_number": 64 }, { "cell_type": "code", @@ -845,16 +845,334 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 32, + "prompt_number": 64, "text": [ "[K1 Chain-Complex]" ] } ], - "prompt_number": 32 + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(documentation 'cat:chcm 'function)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "\"--------------------------------------------------------------[function-doc]\n", + "CHCM\n", + "Args: (idnm)\n", + "Return from the list *CHCM-LIST* the chain complex instance with Kenzo\n", + "identifier IDNUM or NIL, if it doesn't exist.\n", + "------------------------------------------------------------------------------\"" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:chcm 1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "[K1 Chain-Complex]" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:orgn diabolo)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "(DIABOLO-FOR-EXAMPLE)" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:idnm diabolo)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "1" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:basis diabolo 0)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "(S0 S1 S2 S3 S4 S5)" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:basis diabolo 1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "(S01 S02 S12 S23 S34 S35 S45)" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:basis diabolo 2)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "(S345)" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:basis diabolo 10)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "NIL" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:dffr diabolo 2 's345)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * S34>\n", + "<-1 * S35>\n", + "<1 * S45>\n", + "------------------------------------------------------------------------------\n" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:dffr diabolo (cat:dffr diabolo 2 's345))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "\n", + "----------------------------------------------------------------------{CMBN 0}\n", + "------------------------------------------------------------------------------\n" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "heading", + "level": 4, + "metadata": {}, + "source": [ + "An important trivial case: the unit chain complex, $\\mathbb{Z}$" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(cat:def ZCC\n", + " (the cat:chain-complex\n", + " (cat:build-chcm\n", + " :cmpr #'(lambda (gnrt1 gnrt2)\n", + " (declare (ignore gnrt1 gnrt2))\n", + " (the cat:cmpr :equal))\n", + " :basis #'(lambda (n)\n", + " (the list\n", + " (if (zerop n) '(:Z-gnrt) cat:+empty-list+)))\n", + " :bsgn :Z-gnrt\n", + " :intr-dffr #'(lambda (cmbn)\n", + " (the cat:cmbn (cat:zero-cmbn (1- (cat:cmbn-degr cmbn)))))\n", + " :strt :cmbn\n", + " :orgn '(zcc-constant))))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "[K3 Chain-Complex]" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(documentation 'cat:z-chcm 'function)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "\"--------------------------------------------------------------[function-doc]\n", + "Z-CHCM\n", + "Args: ()\n", + "Build the unit chain complex.\n", + "------------------------------------------------------------------------------\"" + ] + } + ], + "prompt_number": 64 + }, + { + "cell_type": "heading", + "level": 4, + "metadata": {}, + "source": [ + "The chain complex $\\texttt{circle}$" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(defun CIRCLE ()\n", + " (the cat:chain-complex\n", + " (cat:build-chcm\n", + " :cmpr #'(lambda (gnrt1 gnrt2)\n", + " (declare (ignore gnrt1 gnrt2))\n", + " (the cat:cmpr :equal))\n", + " :basis #'(lambda (dmns)\n", + " (the list\n", + " (case dmns (0 '(*)) (1 '(s1))\n", + " (otherwise cat:+empty-list+))))\n", + " :bsgn '*\n", + " :intr-dffr #'cat:zero-intr-dffr\n", + " :strt :cmbn\n", + " :orgn '(circle))))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 64, + "text": [ + "CIRCLE" + ] + } + ], + "prompt_number": 64 } ], "metadata": {} } ] -} +} \ No newline at end of file