diff --git a/examples/Chapter15.ipynb b/examples/Chapter15.ipynb new file mode 100644 index 0000000..71b499b --- /dev/null +++ b/examples/Chapter15.ipynb @@ -0,0 +1,4424 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Loop spaces fibrations\n", + "\n", + "## The canonical loop space fibration\n", + "\n", + "Let $X$ be a simplicial set. The software `Kenzo` implements the *canonical* twisted cartesian product of $X$ by its loop space $GX$, denoted $X \\times_\\tau GX$, giving the Kan (**Daniel M. Kan**. *A combinatorial definition of homotopy groups*, Ann. of Math., 1958, vol. 67, pp 282-312.) model of the contractible path space of $X$. The *canonical fibration*\n", + "$$ GX\\quad \\hookrightarrow\\quad X \\times_\\tau GX \\hskip 1.2em \\longrightarrow \\hskip -1.2em \\longrightarrow \n", + " \\quad X,$$\n", + "is defined by the trivial application $\\tau$, where $\\tau(x)$ is the *letter* $x$ in $GX$. This twisted cartesian product has the same simplices as the non-twisted one. So both associated chain complexes are equal as graded modules. The essential difference resides in the differential morphism. More precisely, the face operator $\\partial_n$ behaves differently in the twisted cartesian product. Let $(x,g) \\in X \\times_\\tau GX$, the rule for the face operators are:\n", + "$$\n", + "\\begin{aligned}\n", + "\\partial_i(x,g) & = & (\\partial_i x, \\partial_i g), \\qquad i From the simplicial set $X$, here the argument *space*, return the twisted cartesian product $X \\times_\\tau GX$ (a simplicial set). This function calls internally the functions `loop-space` and `crts-prdc` described in preceding chapters. The slot `grmd` of the resulting instance is set with the ordinary cartesian product $X \\times GX$.\n", + "\n", + "`dtau-d` *space* *[Function]*\n", + "> From the simplicial set $X$, here the argument *space*, build the morphism perturbation (degree -1)\n", + "$$d_\\tau-d: X \\times GX \\longrightarrow X \\times GX.$$\n", + "The work is essentialy done by the lisp function `dtau-d-intr` which computes the difference between the differential morphisms taking in account the discrepancy between the last face operator ($\\partial_n$) in both chain complexes, $X \\times_\\tau GX$ and $X \\times GX$.\n", + "\n", + "`szczarba` *space* *[Function]*\n", + "> Starting from the simplicial set $X$, (the argument *space*), return two values: \n", + "1- The reduction\n", + "$$\n", + "\\begin{aligned}\n", + "{{\\cal C}_*(X \\times_\\tau GX)}\\quad & \\stackrel{h}{\\longrightarrow} & {}^s{{\\cal C}_*(X \\times_\\tau GX)} \\cr\n", + " {\\scriptstyle f} \\downarrow \\uparrow {\\scriptstyle g}\\qquad \\cr\n", + " \\quad{{\\cal C}_*(X) \\otimes_t {\\cal C}_*(GX)} \\cr\n", + "\\end{aligned}\n", + "$$\n", + "obtained by perturbing by $d_\\tau-d$ the top chain complex of the reduction \n", + "$$\n", + "\\begin{aligned}\n", + "{{\\cal C}_*(X \\times GX)}\\quad & \\stackrel{h}{\\longrightarrow} & {}^s{{\\cal C}_*(X \\times GX)} \\cr\n", + " {\\scriptstyle f} \\downarrow \\uparrow {\\scriptstyle g}\\qquad \\cr\n", + " \\quad{{\\cal C}_*(X) \\otimes {\\cal C}_*(GX)} \\cr\n", + "\\end{aligned}\n", + "$$\n", + "2- The morphism corresponding to the perturbation of the bottom chain complex induced by the perturbation $d_\\tau-d$ upon the top chain complex of the above reduction.\n", + "\n", + "This algorithm implements in particular in a very efficient way the formulas of Szczarba (**R.H. Szczarba.** *The homology of twisted cartesian products.* Transactions of the American Math. Society, 1961, vol. 100, pp. 197-216).\n", + "\n", + "`twisted-tnsr-prdc` *space* *[Function]*\n", + "> Return the twisted tensor product (a chain complex) $X \\otimes_t GX$. This is done simply by extraction of the bottom chain complex from the reduction `(szczarba` *space*`)`.\n", + "\n", + "### Examples\n", + "\n", + "For testing the functions above, we shall use a \"soft\" version of $\\bar{\\Delta}$ analogous to `soft-delta` or `soft-delta-infinity`. The input of the simplices will be done in clear with the help of the macro `code`. As this version does not exists in `Kenzo`, we have modified some functions of `soft-delta`, as indicated." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "SOFT-DELTAB-CMPR" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(DEFUN SOFT-DELTAB-CMPR (gmsm1 gmsm2)\n", + " (if (= 1 (logcount (cdr gmsm1))) \n", + " :EQUAL\n", + " (f-cmpr (cdr gmsm1)(cdr gmsm2)) ))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "SOFT-DELTAB-BNDR" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(DEFUN SOFT-DELTAB-BNDR (dmns gmsm)\n", + " (declare\n", + " (fixnum dmns)\n", + " (type soft-dlop gmsm))\n", + " (the cmbn\n", + " (if (< dmns 2)\n", + " (zero-cmbn (1- dmns))\n", + " (make-cmbn\n", + " :degr (1- dmns)\n", + " :list (mapcar #'(lambda (term)\n", + " (with-term (cffc gmsm) term\n", + " (term cffc (d gmsm))))\n", + " (cmbn-list (delta-bndr dmns (cdr gmsm))))))))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "SIMPLE-STYLE-WARNING: \n", + " #\n" + ] + }, + { + "data": { + "text/plain": [ + "SOFT-DELTAB" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(DEFUN SOFT-DELTAB ()\n", + " (the simplicial-set\n", + " (build-smst\n", + " :cmpr #'soft-deltab-cmpr\n", + " :basis :locally-effective\n", + " :bspn (d 1)\n", + " :face #'soft-delta-face\n", + ";;; :intr-dgnl #'soft-delta-dgnl :dgnl-strt :gnrt\n", + " :intr-bndr #'soft-deltab-bndr :bndr-strt :gnrt\n", + " :orgn `(soft-deltab))))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "CODE" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(defmacro code (arg) `(d (dlop-ext-int ,arg)))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K1 Simplicial-Set]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def db (soft-deltab))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K6 Simplicial-Group]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def gdb (loop-space db))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us compare the faces of a cartesian product in $\\bar{\\Delta} \\times \\Omega(\\bar{\\Delta})$ and the faces of the same object in $\\bar{\\Delta} \\times_\\tau \\Omega(\\bar{\\Delta})$:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K18 Simplicial-Set]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def crts-pr (crts-prdc db gdb))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K23 Simplicial-Set]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def tw-crts-pr (twisted-crts-prdc db))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ">>" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def smpx (crpr 0 (code '(0 1 2 3 4)) \n", + " 0 (loop3 0 (code '(0 1 2 3 4 5)) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> " + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(dotimes (j 5)\n", + " (print (face crts-pr j 4 smpx)))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> " + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(dotimes (j 5)\n", + " (print (face tw-crts-pr j 4 smpx)))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ">>" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def smpx2 (crpr 0 (code '(1 2 3 4 5)) \n", + " 0 (loop3 0 (code '(5 6 7 8 9 10)) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> " + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(dotimes (j 5)\n", + " (print (face crts-pr j 4 smpx2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> " + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(dotimes (j 5)\n", + " (print (face tw-crts-pr j 4 smpx2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The user will have noted that we may obtain the same twisted cartesian product by the fibration theory. Let us define a general function `loop-fbr` with a reduced simplicial set, *space*, as argument. This function uses the function `fibration-total` that we have seen in the chapter about fibrations. Here, we see that the lisp function for the simplicial morphism, (keyword `:sintr`), implements straightforwardly the canonical twisting operator which applies a simplex of $X$ to the corresponding 1-letter word of $GX$. Note that the execution time by the fibration function is a little longer than for the direct twisted cartesian product and it requires more memory." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "SIMPLE-STYLE-WARNING: \n", + " #\n", + "\n", + "SIMPLE-STYLE-WARNING: \n", + " #\n" + ] + }, + { + "data": { + "text/plain": [ + "LOOP-FBR" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(defun loop-fbr (space)\n", + " (fibration-total\n", + " (build-smmr\n", + " :sorc space \n", + " :trgt (loop-space space) \n", + " :degr -1\n", + " :sintr #'(lambda (dmns gmsm)\n", + " (absm 0 (loop3 0 gmsm 1)))\n", + " :orgn `(total-fibration ,space))))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K29 Simplicial-Set]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def fb-tt-db (loop-fbr db))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> " + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(dotimes (j 5)\n", + " (print(face fb-tt-db j 4 smpx2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(time (dotimes (j 1000) (face tw-crts-pr 4 4 smpx2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(time (dotimes (j 1000) (face fb-tt-db 4 4 smpx2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The four following statements show the relationship between the differentials:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K34 Morphism (degree -1): K18 -> K18]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def perturb (dtau-d db))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? perturb 4 smpx2)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? crts-pr 4 smpx2)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? tw-crts-pr 4 smpx2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The same type of tests may be done with another reduced simplicial set, namely $P^3\\mathbb{R}$." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K35 Simplicial-Set]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def pri3 (R-proj-space 3))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K57 Simplicial-Set]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def tw-pri3 (twisted-crts-prdc pri3))" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ":LOCALLY-EFFECTIVE" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(basis tw-pri3)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K52 Simplicial-Set]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def crt-pri3 (crts-prdc pri3 (loop-space pri3)))" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ">>" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def s (crpr 0 4 0 (loop3 0 5 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> " + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(dotimes (i 5) (print (face crt-pri3 i 4 s)))" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> " + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(dotimes (i 5) (print (face tw-pri3 i 4 s)))" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K63 Simplicial-Set]" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def fb-tt-pri3 (loop-fbr pri3))" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> \n", + ">>> " + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(dotimes (j 5) (print (face fb-tt-pri3 j 4 s)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us check now the Szczarba reduction, with the simplicial set $\\bar{\\Delta}$." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K90 Reduction K23 => K88]" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def szc-reduc (szczarba db))" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "---done---" + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(pre-check-rdct szc-reduc)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(setf *tc* (cmbn 2 1 (crpr 0 (code '(0 1 2)) \n", + " 0 (loop3 0 (code '(5 6 7 8)) 1))))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<1 * >>>\n", + "<10 * >>>\n", + "<100 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(setf *bc* (cmbn 2 1 (tnpr 0 (code '(0)) 2 (loop3 0 (code '(5 6 7 8)) 1))\n", + " 10 (tnpr 1 (code '(10 11)) 1 (loop3 0 (code '(0 1 2)) 1))\n", + " 100 (tnpr 2 (code '(0 1 2)) 0 (loop3 0 (code '(10 11)) 1))))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "---done---" + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(pre-check-rdct szc-reduc)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "*TC* => \n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n", + "\n", + "*BC* => \n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<1 * >>>\n", + "<10 * >>>\n", + "<100 * >>>\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *TDD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 0}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *BDD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 0}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *DF-FD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *DG-GD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *ID-FG* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 2}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *ID-GF-DH-HD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 2}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *HH* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *FH* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 3}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *HG* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 3}\n", + "------------------------------------------------------------------------------\n", + "\n", + "---done---" + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(check-rdct-no-wait)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercice with the twisting cochain.\n", + "\n", + "Let $B$ be a reduced simplicial set and its loop space $GB$ (a simplicial group). In the following examples, we shall use the efficient `Kenzo` version of the simplicial set $\\bar{\\Delta}$, i.e. the simplices are input and printed under their binary form coding.\n", + "\n", + "### The twisting cochain.\n", + "\n", + "The twisting cochain $t$ is the morphism\n", + "$$t: aug \\circ d_{\\otimes t} \\circ coaug$$\n", + "where,\n", + "- $coaug$ is the morphism \n", + "$$ coaug: B \\rightarrow B \\otimes GB,$$\n", + "$$ coaug(b) = b \\otimes 1_{GB}. $$\n", + "- $d_{\\otimes t}$ is the differential morphism of the twisted tensor product $B \\otimes_t GB$.\n", + "- $aug$ is the morphism\n", + "$$aug: B \\otimes GB \\longrightarrow GB , $$\n", + "$$\n", + "\\begin{aligned}\n", + "aug(b_i \\otimes g_j)& = g_j, & b_i \\in B_0, \\\\\n", + "aug(b_i \\otimes g_j)& = 0, & b_i \\in B_k,\\, k\\not=0.\n", + "\\end{aligned}\n", + "$$\n", + "We recall that, as graded modules, $B\\otimes GB$ and $B \\otimes_t GB$ are identical.\n", + "\n", + "First, we create $\\bar{\\Delta}$ and $G\\bar{\\Delta}$. The function `twisted-tnsr-prdc` extracts the twisted tensor product $\\bar{\\Delta} \\otimes_t G\\bar{\\Delta}$ from the reduction obtained by a call to the function `szczarba`." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K112 Simplicial-Set]" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def d (deltab))" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K117 Simplicial-Group]" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def gd (loop-space d))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K160 Chain-Complex]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def d-twtp-gd (twisted-tnsr-prdc d))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us define the coaugmentation and augmentation morphisms. As usual, it is sufficient to define the algorithm on a generator." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K163 Morphism (degree 0): K112 -> K160]" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def coaug (build-mrph \n", + " :sorc d \n", + " :trgt d-twtp-gd \n", + " :degr 0\n", + " :intr #'(lambda (degr gnrt)\n", + " (term-cmbn degr 1 (tnpr degr gnrt 0 +null-loop+)))\n", + " :strt :gnrt \n", + " :orgn '(coaug. d --> d-twtp-gd)))" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? coaug 3 15)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? coaug (cmbn 4 1 31 1 62 1 124))" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "SIMPLE-STYLE-WARNING: \n", + " #\n", + "\n", + "SIMPLE-STYLE-WARNING: \n", + " #\n" + ] + }, + { + "data": { + "text/plain": [ + "[K164 Morphism (degree 0): K160 -> K117]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def aug (build-mrph\n", + " :sorc d-twtp-gd\n", + " :trgt gd\n", + " :degr 0\n", + " :intr #'(lambda (degr tnpr)\n", + " (with-tnpr (degr1 gmsm1 degr2 loop2) tnpr\n", + " (if (zerop degr1)\n", + " (term-cmbn degr 1 loop2)\n", + " (zero-cmbn degr))))\n", + " :strt :gnrt\n", + " :orgn '(aug. of d-twtp-gd)))" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<9 * <>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? aug (cmbn 2 9 (tnpr 0 1 2 (loop3 0 15 1))\n", + " 3 (tnpr 1 3 1 (loop3 0 7 1))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The morphism {\\tt cochain} is simply a composition of morphisms. We apply it upon the simplices `(0)`, `(0 1 2)`, `(0 1 2 3)`, ..., coded as the integers $1,7,15,\\ldots$." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K166 Morphism (degree -1): K112 -> K117]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def cochain (i-cmps aug (dffr d-twtp-gd) coaug))" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN -1}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? cochain 0 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * <>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? cochain 2 7)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<1 * <>>\n", + "<-1 * <>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? cochain 3 15)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<-1 * <>>\n", + "<1 * <>>\n", + "<1 * <>>\n", + "<-1 * <>>\n", + "<-1 * <>>\n", + "<1 * <>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? cochain 4 31)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<-1 * <>>\n", + "<1 * <>>\n", + "<1 * <>>\n", + "<-1 * <>>\n", + "<-1 * <>>\n", + "<1 * <>>\n", + "<1 * <>>\n", + "<-1 * <>>\n", + "<-1 * <>>\n", + "<1 * <>>\n", + "... ...\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? cochain 5 63)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We verify, that for a simplex in dimension $n$, the length of the resulting combination is $(n-1)!$." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "24" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(length(cmbn-list *))" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 5}\n", + "<1 * <>>\n", + "<-1 * <>>\n", + "<-1 * <>>\n", + "<1 * <>>\n", + "<1 * <>>\n", + "<-1 * <>>\n", + "<-1 * <>>\n", + "<1 * <>>\n", + "<1 * <>>\n", + "<-1 * <>>\n", + "... ...\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? cochain 6 127)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "120" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(length(cmbn-list *))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Expression of the differential $d_{\\otimes t}$\n", + "\n", + "The differential $d_{\\otimes t}$ of the twisted tensor product $B \\otimes_t GB$ may be expressed as the sum of the differential of the simple tensor product $B \\otimes GB$ and the following morphism of degree -1,\n", + "$$\\nabla: B \\otimes GB \\longrightarrow B \\otimes GB,$$\n", + "where $\\nabla$ is the composition of the morphisms of the following sequence:\n", + "$$B\\otimes GB \\buildrel {\\Delta\\otimes 1_{GB}} \\over \\longrightarrow (B\\otimes B) \\otimes GB\n", + " \\buildrel {assoc} \\over \\longrightarrow B \\otimes (B \\otimes GB)\n", + " \\buildrel {1_B \\otimes (t \\otimes 1_{GB})} \\over \\longrightarrow B \\otimes (GB \\otimes GB)\n", + " \\buildrel {1_B \\otimes \\varpi} \\over \\longrightarrow B \\otimes GB.$$\n", + "In the previous formula, $\\Delta$ is the coproduct in the coalgebra $B$, $\\varpi$ is the product in the algebra $GB$, $1_B$ is the identity morphism in $B$ and $1_{GB}$ the identity morphism in $GB$. We need also, as in a previous example, an \"assoc\" morphism for the compound tensor product. The user will note the easiness for coding in `Kenzo` such a long composition of morphisms." + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K167 Chain-Complex]" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def 3-left (tnsr-prdc (tnsr-prdc d d) gd))" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K169 Chain-Complex]" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def 3-right (tnsr-prdc d (tnsr-prdc d gd)))" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "SIMPLE-STYLE-WARNING: \n", + " #\n", + "\n", + "SIMPLE-STYLE-WARNING: \n", + " #\n" + ] + }, + { + "data": { + "text/plain": [ + "[K171 Morphism (degree 0): K167 -> K169]" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def assoc1 (build-mrph\n", + " :sorc 3-left\n", + " :trgt 3-right\n", + " :degr 0\n", + " :intr #'(lambda (degr a2-a) \n", + " (with-tnpr (degra2 gnrta2 degra gnrta) a2-a\n", + " (with-tnpr (degr1 gnrt1 degr2 gnrt2) gnrta2\n", + " (cmbn (+ degr1 degr2 degra) \n", + " 1 (tnpr degr1 \n", + " gnrt1 \n", + " (+ degr2 degra) \n", + " (tnpr degr2 gnrt2 degra gnrta))))))\n", + " :strt :gnrt\n", + " :orgn '(assoc-double-tensor-product)))" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K172 Morphism (degree 0): K112 -> K112]" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def id-d (idnt-mrph d))" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K173 Morphism (degree 0): K117 -> K117]" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def id-gd (idnt-mrph gd))" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K185 Morphism (degree -1): K139 -> K139]" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def nabla \n", + " (add (dffr (tnsr-prdc d gd))\n", + " (i-cmps (tnsr-prdc id-d (aprd gd))\n", + " (tnsr-prdc id-d (tnsr-prdc cochain id-gd))\n", + " assoc1\n", + " (tnsr-prdc (cprd d) id-gd))))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We verify that the morphism `nabla` and the differential of the twisted tensor product (accessible through the symbol `d-twtp-gd`) return the same results:" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? (dffr d-twtp-gd) 2 (tnpr 1 3 1 (loop3 0 7 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? nabla 2 (tnpr 1 3 1 (loop3 0 7 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K186 Morphism (degree -1): K139 -> K139]" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def zero (sbtr nabla (dffr d-twtp-gd)))" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? zero 2 (tnpr 1 3 1 (loop3 0 7 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? zero 5 (tnpr 3 15 2 (loop3 0 15 1)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The cup product of the twisting cochain\n", + "\n", + "The cup product $t \\sqcup t$ of the twisting cochain $t$,\n", + "$$t\\sqcup t: B \\longrightarrow GB$$\n", + "is defined by the following composition of morphisms:\n", + "$$B \\buildrel {\\Delta} \\over \\longrightarrow B \\otimes B\n", + " \\buildrel {t \\otimes t} \\over \\longrightarrow GB \\otimes GB \n", + " \\buildrel {\\varpi} \\over \\longrightarrow GB.$$\n", + "We may now verify the formula\n", + "$$ d_{GB} \\circ t + t \\circ d_B + t\\sqcup t =0,$$\n", + "where $d_B$ and $d_{GB}$ are the respective differential morphisms in $B$ and $GB$." + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K189 Morphism (degree -2): K112 -> K117]" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def t-cup-t (i-cmps (aprd gd) (tnsr-prdc cochain cochain) (cprd d)))" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K190 Morphism (degree -2): K112 -> K117]" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def dt (cmps (dffr gd) cochain))" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K191 Morphism (degree -2): K112 -> K117]" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def td (cmps cochain (dffr d)))" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K193 Morphism (degree -2): K112 -> K117]" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def zero-2 (i-add dt td t-cup-t))" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? zero-2 3 15)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 2}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? zero-2 4 31)" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? zero-2 5 63)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? zero-2 6 127)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So the user has easily verified the *cochain condition* for the twisting cochain $t$.\n", + "\n", + "## The essential contraction\n", + "\n", + "It is known that if $B$ is a reduced simplicial set, the space $B \\times_\\tau GB$ is contractible. So it is possible to build a reduction of this space over $\\mathbb{Z}$. This reduction depends of the important contraction\n", + "$$\\chi_{\\times\\tau}: {{\\cal C}_*(B) \\times_\\tau {\\cal C}_*(GB)} \\longrightarrow \n", + " {{\\cal C}_*(B) \\times_\\tau {\\cal C}_*(GB)}, $$\n", + "which is a homotopy operator (degree: $+1$) satisfying the relation\n", + "$$d \\circ \\chi_{\\times\\tau} + \\chi_{\\times\\tau} \\circ d =1.$$\n", + "Now, from the reduction\n", + "$$\n", + "\\begin{aligned}\n", + "{{\\cal C}_*(X \\times_\\tau GX)} \\quad& \\stackrel{h}{\\longrightarrow} & {}^s{{\\cal C}_*(X \\times_\\tau GX)} \\cr\n", + " {\\scriptstyle f} \\downarrow \\uparrow {\\scriptstyle g} \\qquad \\cr\n", + " {{\\cal C}_*(X) \\otimes_t {\\cal C}_*(GX)} \\cr\n", + "\\end{aligned}\n", + "$$\n", + "there is also an induced contraction \n", + "$$\\chi_{\\otimes t}: {{\\cal C}_*(B) \\otimes_t {\\cal C}_*(GB)} \\longrightarrow \n", + " {{\\cal C}_*(B) \\otimes_t {\\cal C}_*(GB)}, $$\n", + "defined by $\\chi_{\\otimes t}= f \\circ \\chi_{\\times\\tau} \\circ g$.\n", + "This implies that the twisted tensor product is also contractible over $\\mathbb{Z}$.\n", + "\n", + "The two functions of `Kenzo` for this construction are:\n", + "\n", + "`crts-contraction` *space* *[Function]*\n", + "> Return the homotopy morphism corresponding to the contraction $\\chi_{\\times\\tau}$. The lisp definition is:\n", + "```commonlisp\n", + " (defun CRTS-CONTRACTION \n", + " (space\n", + " &aux (twisted-crts-prdc (twisted-crts-prdc space)))\n", + " (the morphism\n", + " (build-mrph\n", + " :sorc twisted-crts-prdc \n", + " :trgt twisted-crts-prdc \n", + " :degr +1\n", + " :intr (crts-contraction-intr \n", + " (cmpr space)\n", + " (bspn space) \n", + " (face space) \n", + " (cmpr twisted-crts-prdc))\n", + " :strt :gnrt\n", + " :orgn `(crts-contraction ,space))))\n", + "```\n", + "At execution time, the work is essentialy done by the function put in the slot `:intr`.\n", + "\n", + "`tnpr-contraction` *space* *[Function]*\n", + "> Return the induced morphism $\\chi_{\\otimes t}= f \\circ \\chi_{\\times\\tau} \\circ g$, as shown by the lisp definition:\n", + "```commonlisp\n", + " (defun TNPR-CONTRACTION \n", + " (space\n", + " &aux (szczarba (szczarba space))\n", + " (f (f szczarba))\n", + " (g (g szczarba))\n", + " (crts-contraction (crts-contraction space)))\n", + " (the morphism\n", + " (i-cmps f crts-contraction g)))\n", + "```\n", + "\n", + "### Examples\n", + "\n", + "Let us use again our familiar simplicial set $\\bar\\Delta$. First we apply the homotopy operator $\\chi_{\\times t}$ upon various generators. Note that the binary coding of the simplices allows normal arithmetic operators to generate them." + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K112 Simplicial-Set]" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def delta (deltab))" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K194 Morphism (degree 1): K134 -> K134]" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def chi-x (crts-contraction delta))" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 0 (crpr 0 1 0 +null-loop+))" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 0 (crpr 0 1 0 (loop3 0 96 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 0 (crpr 0 1 0 (loop3 0 96 1 0 (+ 256 128) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 0 (crpr 0 1 0 (loop3 0 96 1 0 (+ 256 128) 1 0 (+ 512 1024) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 0 (crpr 0 1 0 (loop3 0 96 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 1 (crpr 0 3 0 (loop3 0 (+ 32 64 128) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 2 (crpr 0 7 0 (loop3 0 (+ 32 64 128 256) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 3 (crpr 2 7 1 (loop3 2 (+ 32 64 128) 2 4 (+ 32 64 128) -2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 3 (crpr 2 7 4 (loop3 2 (+ 32 64 128) 2 1 (+ 32 64 128) -2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 3 (crpr 2 7 1 (loop3 2 (+ 32 64 128) -2 4 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 3 (crpr 2 7 4 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 3 (crpr 1 7 2 (loop3 2 (+ 32 64 128) 2 4 (+ 32 64 128) -2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 3 (crpr 4 7 2 (loop3 2 (+ 32 64 128) 2 1 (+ 32 64 128) -2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 3 (crpr 1 7 2 (loop3 2 (+ 32 64 128) -2 4 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-x 3 (crpr 4 7 2 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then, for testing $\\chi_{\\otimes t}$ we use the image of all those generators by the function `f` of the Brown reduction.\n", + "$$\n", + "\\begin{aligned}\n", + " {{\\cal C}_*(X \\times_\\tau GX)} \\quad& \\stackrel{h}{\\longrightarrow} & {}^s{{\\cal C}_*(X \\times_\\tau GX)} \\cr\n", + " {\\scriptstyle f} \\downarrow \\uparrow {\\scriptstyle g}\\qquad \\cr\n", + " {{\\cal C}_*(X) \\otimes_t {\\cal C}_*(GX)} \\cr\n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "T" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(setf *tnpr-with-degrees* t)" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K196 Morphism (degree 1): K160 -> K160]" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def chi-t (tnpr-contraction delta))" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K162 Reduction K134 => K160]" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def reduc (szczarba delta))" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K152 Morphism (degree 0): K134 -> K160]" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def f (f reduc))" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 0}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 0 (crpr 0 1 0 +null-loop+))" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 0}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 0 (crpr 0 1 0 (loop3 0 96 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 0}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 0 (crpr 0 1 0 (loop3 0 96 1 0 (+ 256 128) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 0}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 0 (crpr 0 1 0 (loop3 0 96 1 0 (+ 256 128) 1 0 (+ 512 1024) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 0}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 0 (crpr 0 1 0 (loop3 0 96 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 1}\n", + "<1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 1 (crpr 0 3 0 (loop3 0 (+ 32 64 128) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 2}\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 2 (crpr 0 7 0 (loop3 0 (+ 32 64 128 256) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 3 (crpr 2 7 1 (loop3 2 (+ 32 64 128) 2 4 (+ 32 64 128) -2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 111, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 3 (crpr 2 7 4 (loop3 2 (+ 32 64 128) 2 1 (+ 32 64 128) -2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 3 (crpr 2 7 1 (loop3 2 (+ 32 64 128) -2 4 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 115, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 3 (crpr 2 7 4 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 3 (crpr 1 7 2 (loop3 2 (+ 32 64 128) 2 4 (+ 32 64 128) -2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 3 (crpr 4 7 2 (loop3 2 (+ 32 64 128) 2 1 (+ 32 64 128) -2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 3 (crpr 1 7 2 (loop3 2 (+ 32 64 128) -2 4 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? f 3 (crpr 4 7 2 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? chi-t *)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We verify now the required property of the homotopy operator $\\chi_{\\times\\tau}$. As usual, we build by composition a morphism `zero`." + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K135 Morphism (degree -1): K134 -> K134]" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def dfr (bndr (twisted-crts-prdc delta)))" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K201 Morphism (degree 0): K134 -> K134]" + ] + }, + "execution_count": 127, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def zero (i-sbtr (idnt-mrph (sorc dfr)) (cmps dfr chi-x) \n", + " (cmps chi-x dfr)))" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ">>" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def simplx (crpr 4 7 2 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 129, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? zero 3 simplx)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then, we do the same test for the homotopy operator $\\chi_{\\otimes t}$." + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K160 Chain-Complex]" + ] + }, + "execution_count": 130, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def tw (twisted-tnsr-prdc d))" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K206 Morphism (degree 0): K160 -> K160]" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def zero-2 (i-sbtr (idnt-mrph tw) (cmps tw chi-t) (cmps chi-t tw)))" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ">>" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def simpx2 (tnpr 0 1 3 (loop3 0 (mask 5) 2 0 (* 32 (mask 5)) -1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(time (? zero-2 3 simpx2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note nevertheless that the relation is not satisfied for the base generator $*\\otimes *$, namely the tensor product of both base generators. This is due to the fact that both contractions, $\\chi_{\\times t}$ and $\\chi_{\\otimes t}$, correspond to reductions over $\\mathbb{Z}$ and not on 0." + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ">>" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def gnrt-0 (tnpr 0 1 0 +null-loop+))" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 0}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? zero-2 0 gnrt-0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us build, for instance, the reduction of the twisted tensor product over $\\mathbb{Z}$ and check it. In that case, the two homomorphisms $f$ and $g$ are respectively the *augmentation* and *coaugmentation* morphisms.\n", + "$$\n", + "\\begin{aligned}\n", + "{{\\cal C}_*(B) \\otimes_t {\\cal C}_*(GB)} & \\qquad\\stackrel{\\chi_{\\otimes t}}{\\longrightarrow} &\n", + " {}^s{{\\cal C}_*(B) \\otimes_t {\\cal C}_*(GB)} \\cr\n", + " {\\scriptstyle aug} \\downarrow \\uparrow {\\scriptstyle coaug}\\quad & & \\cr\n", + " {{\\cal C}_*(\\mathbb{Z})} \\qquad& & \\cr\n", + "\\end{aligned}\n", + "$$\n", + "We recall that, the unit chain complex corresponding to $\\mathbb{Z}$ is built by the function `z-chcm`. The unique generator in degree 0 is `:z-gnrt`." + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "SIMPLE-STYLE-WARNING: \n", + " #\n" + ] + }, + { + "data": { + "text/plain": [ + "[K209 Cohomology-Class on K160 of degree 0]" + ] + }, + "execution_count": 136, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def aug (build-mrph\n", + " :sorc tw \n", + " :trgt (z-chcm) \n", + " :degr 0\n", + " :intr #'(lambda (degr gnrt)\n", + " (if (zerop degr)\n", + " (term-cmbn 0 1 :z-gnrt)\n", + " (zero-cmbn degr)))\n", + " :strt :gnrt \n", + " :orgn '(aug tw)))" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "SIMPLE-STYLE-WARNING: \n", + " #\n" + ] + }, + { + "data": { + "text/plain": [ + "[K210 Morphism (degree 0): K207 -> K160]" + ] + }, + "execution_count": 137, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def coaug (build-mrph\n", + " :sorc (z-chcm) \n", + " :trgt tw \n", + " :degr 0\n", + " :intr #'(lambda (degr gnrt)\n", + " (if (zerop degr)\n", + " (term-cmbn 0 1 (tnpr 0 1 0 +null-loop+))\n", + " (zero-cmbn degr)))\n", + " :strt :gnrt\n", + " :orgn '(coaug tw)))" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K211 Reduction K160 => K207]" + ] + }, + "execution_count": 138, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def rdct (build-rdct :f aug \n", + " :g coaug \n", + " :h Chi-t \n", + " :orgn '(reduction-tw-Z)))" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "---done---" + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 139, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(pre-check-rdct rdct)" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 140, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(setf *tc* (cmbn 3 1 (tnpr 1 3 2 (loop3 0 15 2))))" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 0}\n", + "<1 * Z-GNRT>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(setf *bc* (cmbn 0 1 :z-gnrt))" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "*TC* => \n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<1 * >>>\n", + "------------------------------------------------------------------------------\n", + "\n", + "*BC* => \n", + "----------------------------------------------------------------------{CMBN 0}\n", + "<1 * Z-GNRT>\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *TDD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *BDD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN -2}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *DF-FD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 2}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *DG-GD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN -1}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *ID-FG* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 0}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *ID-GF-DH-HD* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 3}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *HH* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 5}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *FH* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 4}\n", + "------------------------------------------------------------------------------\n", + "\n", + "Checking *HG* = 0\n", + "Result: \n", + "----------------------------------------------------------------------{CMBN 1}\n", + "------------------------------------------------------------------------------\n", + "\n", + "---done---" + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(check-rdct-no-wait)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## An unproved property of the algebraic Kan contraction\n", + "\n", + "Since the early version of the software (1990), and through a host of examples, an amazing algebraic property of the Kan contraction $\\chi_{\\otimes t}$ has been experimentally discovered. Many computations have been done of $\\chi_{\\otimes t}(b \\otimes g)$, for various choices of $b \\otimes g$ and in all these cases, as soon as $degree(b) > 0$, then the result is null.\n", + "In other words, $\\chi_{\\otimes t}$ *is null outside the base fiber.* Up to now, no actual proof of this result has yet been given.\n", + "\n", + "We show that, using the \"soft\" version of $\\bar{\\Delta}$." + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K1 Simplicial-Set]" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def db (soft-deltab))" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[K231 Morphism (degree 1): K88 -> K88]" + ] + }, + "execution_count": 144, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def tt (tnpr-contraction db))" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ">>" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def gnrt1 (tnpr 3 (code '(0 1 2 3 4)) \n", + " 4 (loop3 0 (code '(0 1 2 3 4 5)) 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 8}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? tt 7 gnrt1)" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + ">>" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(def gnrt2 (tnpr 4 (code '(2 4 6 8 10 12)) \n", + " 5 (loop3 0 (code '(1 3 5 7 9 11 13)) 5)))" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 10}\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? tt 9 gnrt2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But if $degree(b) = 0$, then the result is non-null in general." + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 3}\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? tt 2 (tnpr 0 (code '(0)) 2 (loop3 0 (code '(0 1 2 3)) 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "----------------------------------------------------------------------{CMBN 5}\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "... ...\n", + "------------------------------------------------------------------------------\n" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(? tt 4 (tnpr 0 (code '(0)) 4 (loop3 0 (code '(1 2 3 4 5 6)) 3)))" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "TYPE-ERROR: \n", + " #>>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<-1 * >>>\n", + "<1 * >>>\n", + "<1 * >>>\n", + "<-1 * >>>\n", + "... ...\n", + "------------------------------------------------------------------------------\n", + ">\n" + ] + }, + { + "data": { + "text/plain": [ + "NIL" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(length *)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lisp file concerned in this chapter\n", + "\n", + "`ls-twisted-products.lisp`." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SBCL Lisp", + "language": "lisp", + "name": "lisp" + }, + "language_info": { + "codemirror_mode": "text/x-common-lisp", + "mimetype": "text/x-common-lisp", + "name": "common-lisp", + "pygments_lexer": "common-lisp", + "version": "X3J13" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}