diff --git a/examples/Chapter1.ipynb b/examples/Chapter1.ipynb index 5241dfe..f0aba9f 100644 --- a/examples/Chapter1.ipynb +++ b/examples/Chapter1.ipynb @@ -14,6 +14,17 @@ "collapsed": false }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "To load \"kenzo\":\n", + " Load 1 ASDF system:\n", + " kenzo\n", + "; Loading \"kenzo\"\n", + ".\n" + ] + }, { "data": { "text/plain": [ @@ -236,8 +247,8 @@ "Args: (degr &rest rest)\n", "Returns a combination of degree DEGR from a sum of terms provided as a sequence\n", "CF1 GNRT1 CF2 GNRT2 ... CFn GNRTn of coefficient / generator pairs in REST.\n", - "REST can be of arbitrary even length and can be empty, in which case the\n", - "combination is an instance of the null combination of degree DEGR.\n", + "REST can be of arbitrary length including NIL, in which case the combination\n", + "is an instance of the null combination of degree DEGR.\n", "------------------------------------------------------------------------------\"" ] }, @@ -689,7 +700,7 @@ { "data": { "text/plain": [ - "#" + "#" ] }, "execution_count": 26, @@ -711,7 +722,7 @@ { "data": { "text/plain": [ - "#" + "#" ] }, "execution_count": 27, @@ -760,7 +771,7 @@ { "data": { "text/plain": [ - "#" + "#" ] }, "execution_count": 29, @@ -1264,39 +1275,53 @@ { "data": { "text/plain": [ - "\"-----------------------------------------------------------------[class-doc]\n", + "\"----------------------------------------------------------------[class-doc]\n", "MORPHISM\n", "Slots: (sorc trgt degr intr strt ???-clnm ?-clnm rslts idnm orgn)\n", "Intances of this class represent morphisms between chain complexes, and the\n", "differential homomorphism of a chain complex is treated as a morphism of\n", "degree -1. The class has 10 slots:\n", "\n", - "1. SORC, an object of class CHAIN-COMPLEX, the source chain complex of this\n", - " morphism.\n", + "1. SORC, an object of type CHAIN-COMPLEX, the source chain complex of this\n", + " morphism. Its reader function is SORC.\n", "\n", - "2. TRGT, an object of class CHAIN-COMPLEX, the target chain complex of this\n", - " morphism.\n", + "2. TRGT, an object of type CHAIN-COMPLEX, the target chain complex of this\n", + " morphism. Its reader function is TRGT.\n", "\n", - "3. DEGR, an integer, the degree of the morphism.\n", + "3. DEGR, an integer, the degree of the morphism. Its reader function is DEGR.\n", "\n", - "4. INTR, a Lisp function implementing the morphism, taking account of the\n", - " strategy STRT.\n", + "4. INTR, a Lisp INTeRnal function implementing the morphism, taking account\n", + " of the strategy STRT. Its reader function is INTR.\n", "\n", - "5. STRT, a symbol, one of :GNRT or :CMBN.\n", + "5. STRT, a symbol, one of :GNRT or :CMBN. Its reader function is STRT.\n", "\n", - "6. ???-CLNM, an integer updated by the system for internal statistics.\n", + " If this slot is :GNRT, the implementation of INTR is a function:\n", + " (function (degr gnrt) cmbn)\n", + " and for any call of this function, the result is stored in the slot\n", + " RSLTS to avoid later a possibly long recalculation for the same\n", + " argument.\n", "\n", - "7. ?-CLNM, another integer maintained by the system for internal pusposes.\n", + " If this slot is :CMBN, the implementation of INTR is a function:\n", + " (function (cmbn) cmbn)\n", + " and the RSLTS slot is not used. Think for example to an identity or\n", + " null function, where storing a result is wasted time.\n", + "\n", + "6. ???-CLNM, an integer updated by the system for internal statistics. Its\n", + " reader function is ???-CLNM.\n", + "\n", + "7. ?-CLNM, another integer maintained by the system for internal pusposes. Its\n", + " reader function is ?-CLNM.\n", "\n", "8. RSLTS, an array of length +MAXIMAL-DIMENSION+ reserved by the system for\n", - " caching intermediate results.\n", + " caching intermediate results. Its reader function is RSLTS.\n", "\n", - "9. IDNM, an integer, a system-generated identifier for this object.\n", + "9. IDNM, an integer, a system-generated identifier for this object. Its reader\n", + " function is IDNM.\n", "\n", "10. ORGN, a list containg a comment indicating the origin of the object. The\n", " should be unique (per session), since it is used in the implementation for\n", - " caching purposes.\n", - "------------------------------------------------------------------------------\"" + " caching purposes. Its reader function is ORGN.\n", + "-----------------------------------------------------------------------------\"" ] }, "execution_count": 47, @@ -1493,7 +1518,7 @@ { "data": { "text/plain": [ - "#" + "#" ] }, "execution_count": 53, @@ -1788,7 +1813,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 65, "metadata": { "collapsed": false }, @@ -1805,7 +1830,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -1816,7 +1841,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 66, "metadata": { "collapsed": false }, @@ -1827,7 +1852,7 @@ "[K9 Morphism (degree 0): K5 -> K5]" ] }, - "execution_count": 64, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -1838,7 +1863,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 67, "metadata": { "collapsed": false }, @@ -1849,7 +1874,7 @@ "0" ] }, - "execution_count": 64, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } @@ -1860,7 +1885,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 68, "metadata": { "collapsed": false }, @@ -1877,7 +1902,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -1888,7 +1913,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 69, "metadata": { "collapsed": false }, @@ -1901,7 +1926,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -1912,7 +1937,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 70, "metadata": { "collapsed": false }, @@ -1923,7 +1948,7 @@ "[K10 Morphism (degree 2): K5 -> K5]" ] }, - "execution_count": 64, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -1934,7 +1959,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 71, "metadata": { "collapsed": false }, @@ -1945,7 +1970,7 @@ "2" ] }, - "execution_count": 64, + "execution_count": 71, "metadata": {}, "output_type": "execute_result" } @@ -1956,7 +1981,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 72, "metadata": { "collapsed": false }, @@ -1973,7 +1998,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -1984,7 +2009,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 73, "metadata": { "collapsed": false }, @@ -1995,7 +2020,7 @@ "[K11 Morphism (degree 1): K5 -> K5]" ] }, - "execution_count": 64, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -2006,7 +2031,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 74, "metadata": { "collapsed": false }, @@ -2017,7 +2042,7 @@ "1" ] }, - "execution_count": 64, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -2028,7 +2053,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 75, "metadata": { "collapsed": false }, @@ -2045,7 +2070,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -2056,7 +2081,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 76, "metadata": { "collapsed": false }, @@ -2067,7 +2092,7 @@ "[K12 Morphism (degree 0): K5 -> K5]" ] }, - "execution_count": 64, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } @@ -2078,7 +2103,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 77, "metadata": { "collapsed": false }, @@ -2089,7 +2114,7 @@ "[K13 Morphism (degree 0): K5 -> K5]" ] }, - "execution_count": 64, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } @@ -2100,7 +2125,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 78, "metadata": { "collapsed": false }, @@ -2114,7 +2139,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 78, "metadata": {}, "output_type": "execute_result" } @@ -2125,7 +2150,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 79, "metadata": { "collapsed": false }, @@ -2138,7 +2163,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -2149,7 +2174,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 80, "metadata": { "collapsed": false }, @@ -2168,7 +2193,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } @@ -2179,7 +2204,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 81, "metadata": { "collapsed": false }, @@ -2195,7 +2220,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } @@ -2206,7 +2231,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 82, "metadata": { "collapsed": false }, @@ -2222,7 +2247,7 @@ "------------------------------------------------------------------------------\n" ] }, - "execution_count": 64, + "execution_count": 82, "metadata": {}, "output_type": "execute_result" } @@ -2240,7 +2265,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 83, "metadata": { "collapsed": false }, @@ -2251,7 +2276,7 @@ "[K1 Chain-Complex]" ] }, - "execution_count": 64, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -2262,7 +2287,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 84, "metadata": { "collapsed": false }, @@ -2283,7 +2308,7 @@ "NIL" ] }, - "execution_count": 64, + "execution_count": 84, "metadata": {}, "output_type": "execute_result" } @@ -2294,7 +2319,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 85, "metadata": { "collapsed": false }, @@ -2305,7 +2330,7 @@ "[K3 Cohomology-Class on K1 of degree 1]" ] }, - "execution_count": 64, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -2316,7 +2341,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 86, "metadata": { "collapsed": false }, @@ -2337,7 +2362,7 @@ "NIL" ] }, - "execution_count": 64, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -2348,7 +2373,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 87, "metadata": { "collapsed": false }, @@ -2369,7 +2394,7 @@ "NIL" ] }, - "execution_count": 64, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -2380,7 +2405,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 88, "metadata": { "collapsed": false }, @@ -2401,7 +2426,7 @@ "NIL" ] }, - "execution_count": 64, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -2412,7 +2437,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 89, "metadata": { "collapsed": false }, @@ -2433,7 +2458,7 @@ "NIL" ] }, - "execution_count": 64, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -2444,7 +2469,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 90, "metadata": { "collapsed": false }, @@ -2473,7 +2498,7 @@ "(9 8 7)" ] }, - "execution_count": 64, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } diff --git a/src/combinations.lisp b/src/combinations.lisp index db15957..5665d20 100644 --- a/src/combinations.lisp +++ b/src/combinations.lisp @@ -137,8 +137,8 @@ CMBN Args: (degr &rest rest) Returns a combination of degree DEGR from a sum of terms provided as a sequence CF1 GNRT1 CF2 GNRT2 ... CFn GNRTn of coefficient / generator pairs in REST. -REST can be of arbitrary even length and can be empty, in which case the -combination is an instance of the null combination of degree DEGR. +REST can be of arbitrary length including NIL, in which case the combination +is an instance of the null combination of degree DEGR. ------------------------------------------------------------------------------" (the cmbn (make-cmbn :degr degr