Corrected LaTeX conversion errors.

This commit is contained in:
gheber 2016-03-11 16:38:58 -06:00
parent 69097c40ac
commit 8af42d89bd
3 changed files with 153 additions and 154 deletions

File diff suppressed because one or more lines are too long

View File

@ -22,55 +22,55 @@
"\n", "\n",
"### Implementation of a coalgebra\n", "### Implementation of a coalgebra\n",
"\n", "\n",
"A coalgebra is represented as an instance of the CLOS class ``COALGEBRA``, subclass of the ``CHAIN COMPLEX`` class. The definition of this new class is simply:\n", "A coalgebra is represented as an instance of the CLOS class `COALGEBRA`, subclass of the `CHAIN COMPLEX` class. The definition of this new class is simply:\n",
"\n", "\n",
"```lisp\n", "```commonlisp\n",
"(DEFCLASS COALGEBRA (chain-complex)\n", "(DEFCLASS COALGEBRA (chain-complex)\n",
" ((cprd :type morphism :initarg :cprd :reader cprd1))) ;; coproduct\n", " ((cprd :type morphism :initarg :cprd :reader cprd1))) ;; coproduct\n",
"```\n", "```\n",
"\n", "\n",
"So, this new class inherits the slots of the ``CHAIN COMPLEX`` class and has a slot of its own, namely ``cprd``, a morphism object representing the coproduct. The user will note the important following fact that, **once a coalgebra has been defined, one may use on it any\n", "So, this new class inherits the slots of the `CHAIN COMPLEX` class and has a slot of its own, namely `cprd`, a morphism object representing the coproduct. The user will note the important following fact that, **once a coalgebra has been defined, one may use on it any\n",
"function or method applicable to a chain complex**.\n", "function or method applicable to a chain complex**.\n",
"\n", "\n",
"### The function ``build-clgb``\n", "### The function `build-clgb`\n",
"\n", "\n",
"To facilitate the construction of instances of the ``COALGEBRA`` class, the software provides the function ``build-clgb``,\n", "To facilitate the construction of instances of the `COALGEBRA` class, the software provides the function `build-clgb`,\n",
"\n", "\n",
"```lisp\n", "```commonlisp\n",
"(build-clgb :cmpr cmpr :basis basis :bsgn bsgn :intr-dffr intr-dffr :dffr-strt dffr-strt :intr-cprd intr-cprd :cprd-strt cprd-strt :orgn orgn)\n", "(build-clgb :cmpr cmpr :basis basis :bsgn bsgn :intr-dffr intr-dffr :dffr-strt dffr-strt :intr-cprd intr-cprd :cprd-strt cprd-strt :orgn orgn)\n",
"```\n", "```\n",
"\n", "\n",
"defined with keyword parameters. The returned value is an instance of type ``COALGEBRA``. The keyword arguments are:\n", "defined with keyword parameters. The returned value is an instance of type `COALGEBRA`. The keyword arguments are:\n",
"\n", "\n",
"- *cmpr*, a comparison function for generators.\n", "- *cmpr*, a comparison function for generators.\n",
"- *basis*, the basis function for the underlying chain complex.\n", "- *basis*, the basis function for the underlying chain complex.\n",
"- *bsgn*, the base point, a generator of any type.\n", "- *bsgn*, the base point, a generator of any type.\n",
"- *intr-dffr*, the differential lisp function for the chain complex.\n", "- *intr-dffr*, the differential lisp function for the chain complex.\n",
"- *dffr-strt*, the strategy (``:gnrt`` or ``:cmbn``) for the differential.\n", "- *dffr-strt*, the strategy (`:gnrt` or `:cmbn`) for the differential.\n",
"- *intr-cprd*, the lisp function for the coproduct of the coalgebra.\n", "- *intr-cprd*, the lisp function for the coproduct of the coalgebra.\n",
"- *cprd-strt*, the strategy (``:gnrt`` or ``:cmbn``) for the coproduct.\n", "- *cprd-strt*, the strategy (`:gnrt` or `:cmbn`) for the coproduct.\n",
"- *orgn*, an adequate comment list.\n", "- *orgn*, an adequate comment list.\n",
"\n", "\n",
"The function ``build-clgb`` calls the function ``build-chcm`` and with the help of the function\n", "The function `build-clgb` calls the function `build-chcm` and with the help of the function\n",
"``build-mrph`` builds the coproduct morphism of degree 0, to settle the slot ``crpd`` of the instance. According to the definition, the source slot of the coproduct morphism is the underlying chain complex and the target slot is the tensor product of this chain complex with itself. As to the other objects,\n", "`build-mrph` builds the coproduct morphism of degree 0, to settle the slot `crpd` of the instance. According to the definition, the source slot of the coproduct morphism is the underlying chain complex and the target slot is the tensor product of this chain complex with itself. As to the other objects,\n",
"an identification number $n$ (slot ``idnm``) is assigned to this Kenzo object and the ``COALGEBRA`` instance is pushed onto the list ``*clgb-list*``. The associated printing method prints a string like ``[K``*n* ``Coalgebra]``.\n", "an identification number $n$ (slot `idnm`) is assigned to this Kenzo object and the `COALGEBRA` instance is pushed onto the list `*clgb-list*`. The associated printing method prints a string like `[K`*n* `Coalgebra]`.\n",
"\n", "\n",
"\n", "\n",
"\n", "\n",
"### Miscellaneous functions and macros for coalgebras\n", "### Miscellaneous functions and macros for coalgebras\n",
"\n", "\n",
"``(cat-init)`` *[Function]*\n", "`(cat-init)` *[Function]*\n",
"> Clear among others, the list ``*clgb-list*``, list of user created coalgebras and reset the global counter to 1.\n", "> Clear among others, the list `*clgb-list*`, list of user created coalgebras and reset the global counter to 1.\n",
"\n", "\n",
"``(clgb n)`` *[Function]*\n", "`(clgb n)` *[Function]*\n",
"> Retrieve in the list ``*clgb-list*`` the coalgebra instance whose identification is $n$. If it does not exist, return ``NIL``.\n", "> Retrieve in the list `*clgb-list*` the coalgebra instance whose identification is $n$. If it does not exist, return `NIL`.\n",
"\n", "\n",
"``(cprd clgb &rest)`` *[Macro]*\n", "`(cprd clgb &rest)` *[Macro]*\n",
"> Versatile macro relative to the coproduct of a coalgebra. The first argument is a ``COALGEBRA`` instance. With only one argument, this macro returns the coproduct morphism of the coalgebra.\n", "> Versatile macro relative to the coproduct of a coalgebra. The first argument is a `COALGEBRA` instance. With only one argument, this macro returns the coproduct morphism of the coalgebra.\n",
"With more arguments, it applies the coproduct morphism on a combination (``(cprd`` *clgb cmbn*``)``)\n", "With more arguments, it applies the coproduct morphism on a combination (`(cprd` *clgb cmbn*`)`)\n",
"or on a pair *degree, generator* (``(cprd ``*clgb degr gnrt*``)``).\n", "or on a pair *degree, generator* (`(cprd `*clgb degr gnrt*`)`).\n",
"\n", "\n",
"``(change-chcm-to-clgb chcm :intr-cprd intr-cprd :cprd-strt cprd-strt :orgn orgn)``\n", "`(change-chcm-to-clgb chcm :intr-cprd intr-cprd :cprd-strt cprd-strt :orgn orgn)`\n",
"> Build a coalgebra instance from the already created chain complex *chcm*. The user must give via key\n", "> Build a coalgebra instance from the already created chain complex *chcm*. The user must give via key\n",
"parameters a lisp function for the coproduct, the strategy and a comment list.\n", "parameters a lisp function for the coproduct, the strategy and a comment list.\n",
"\n", "\n",
@ -93,28 +93,28 @@
"$$ [Cobar({\\cal A})]_n = \\bigoplus ({\\bar{\\cal A}}_{i1} \\otimes \\cdots \\otimes {\\bar{\\cal A}}_{ik}),\\quad i_j >0, \\quad\n", "$$ [Cobar({\\cal A})]_n = \\bigoplus ({\\bar{\\cal A}}_{i1} \\otimes \\cdots \\otimes {\\bar{\\cal A}}_{ik}),\\quad i_j >0, \\quad\n",
"i1 + \\cdots + ik= n+k.$$\n", "i1 + \\cdots + ik= n+k.$$\n",
"\n", "\n",
"A tensor product $g_1 \\otimes \\cdots \\otimes g_k$, where $g_i$ is a generator of ${\\bar{\\cal A}}_{i}$ is called, in the software ``Kenzo``, an **algebraic loop**. The reason is the following: if $X$ is a 1-connected simplicial set, we shall see in a next chapter that the program ``Kenzo`` constructs a homotopy equivalence between the chain complex of the loop space ${\\cal C}_*(GX)$ and $Cobar({\\cal C}_*(X)) = Cobar^{{\\cal C}_*(X)}(\\mathbb{Z}, \\mathbb{Z})$, so that a generator of the last chain complex is a kind of \"algebraic\" version of a generator of a loop space. The definition of differential of the Cobar is recalled hereafter.\n", "A tensor product $g_1 \\otimes \\cdots \\otimes g_k$, where $g_i$ is a generator of ${\\bar{\\cal A}}_{i}$ is called, in the software `Kenzo`, an **algebraic loop**. The reason is the following: if $X$ is a 1-connected simplicial set, we shall see in a next chapter that the program `Kenzo` constructs a homotopy equivalence between the chain complex of the loop space ${\\cal C}_*(GX)$ and $Cobar({\\cal C}_*(X)) = Cobar^{{\\cal C}_*(X)}(\\mathbb{Z}, \\mathbb{Z})$, so that a generator of the last chain complex is a kind of \"algebraic\" version of a generator of a loop space. The definition of differential of the Cobar is recalled hereafter.\n",
"\n", "\n",
"\n", "\n",
"### Representation of an algebraic loop\n", "### Representation of an algebraic loop\n",
"\n", "\n",
"An algebraic loop is represented by a lisp object of the form:\n", "An algebraic loop is represented by a lisp object of the form:\n",
"\n", "\n",
"> ``(:ALLP`` ($i_1\\,.\\, g_1$) ... ($i_k\\,.\\, g_k$)``)``\n", "> `(:ALLP` ($i_1\\,.\\, g_1$) ... ($i_k\\,.\\, g_k$)`)`\n",
"\n", "\n",
"where the $i_j$ are the degrees *in the cobar chain complex* of the generators $g_j$. In the original coalgebra $\\cal A$, the generators $g_j$ had the degree $i_j+1$. The corresponding type is ``ALLP``.\n", "where the $i_j$ are the degrees *in the cobar chain complex* of the generators $g_j$. In the original coalgebra $\\cal A$, the generators $g_j$ had the degree $i_j+1$. The corresponding type is `ALLP`.\n",
"The function to build such an object is also called ``allp``\n", "The function to build such an object is also called `allp`\n",
"\n", "\n",
"``(allp degr1 gnr1 degr2 gnr2 ... degrk gnrk)`` *[Function]*\n", "`(allp degr1 gnr1 degr2 gnr2 ... degrk gnrk)` *[Function]*\n",
"> Construct an algebraic loop, i.e. a tensorial product of degree $\\sum degr_i$. The sequence of pairs\n", "> Construct an algebraic loop, i.e. a tensorial product of degree $\\sum degr_i$. The sequence of pairs\n",
"$\\lbrace degr_i,\\, gnr_i \\rbrace$ has an undefinite length and may be void. In this case, the algebraic loop is the null algebraic loop, identified in the system by the constant ``+null-allp+``. \n", "$\\lbrace degr_i,\\, gnr_i \\rbrace$ has an undefinite length and may be void. In this case, the algebraic loop is the null algebraic loop, identified in the system by the constant `+null-allp+`. \n",
"The function ``allp`` accepts also as unique argument a list of the form ``(`` *degr1 gnr1 degr2 gnr2 ... degrk gnrk*``)``\n", "The function `allp` accepts also as unique argument a list of the form `(` *degr1 gnr1 degr2 gnr2 ... degrk gnrk*`)`\n",
"\n", "\n",
"``(allp-p object)`` *[Function]*\n", "`(allp-p object)` *[Function]*\n",
"> Test if *object* is an algebraic loop.\n", "> Test if *object* is an algebraic loop.\n",
"\n", "\n",
"The associated printing method prints the object under the form:\n", "The associated printing method prints the object under the form:\n",
"> ``<<AlLp [`` $i_1$ $g_1$ ``] ... [`` $i_k$ $g_k$ ``]>>``\n", "> `<<AlLp [` $i_1$ $g_1$ `] ... [` $i_k$ $g_k$ `]>>`\n",
"\n", "\n",
"The user will have noted that in the Cobar, each generator $g_i$ appears with its own degree in the\n", "The user will have noted that in the Cobar, each generator $g_i$ appears with its own degree in the\n",
"underlying chain complex, **lowered by 1**.\n", "underlying chain complex, **lowered by 1**.\n",
@ -124,12 +124,12 @@
"\n", "\n",
"The definition of the differential in the Cobar, will be done in three steps. This is better understood, if we consider the following diagram. We recall that the elements of $({\\bar{\\cal A}}_*^{\\otimes_p})_q$ are by convention of degree $q-p$ in the Cobar.\n", "The definition of the differential in the Cobar, will be done in three steps. This is better understood, if we consider the following diagram. We recall that the elements of $({\\bar{\\cal A}}_*^{\\otimes_p})_q$ are by convention of degree $q-p$ in the Cobar.\n",
"\n", "\n",
"- A chain complex called ``vertical-cobar`` is defined with the *vertical differential* $d_v$. In this case, only the underlying chain complex structure is used.\n", "- A chain complex called `vertical-cobar` is defined with the *vertical differential* $d_v$. In this case, only the underlying chain complex structure is used.\n",
"- A horizontal differential $d_h$ is defined. This uses the coproduct structure.\n", "- A horizontal differential $d_h$ is defined. This uses the coproduct structure.\n",
"- The final chain complex ``cobar`` is created with differential $d_v+d_h$.\n", "- The final chain complex `cobar` is created with differential $d_v+d_h$.\n",
"\n", "\n",
"$$\n", "$$\n",
"\\begin{align}\n", "\\begin{aligned}\n",
" & & \\downarrow\\quad & & \\downarrow\\qquad & &\\\\\n", " & & \\downarrow\\quad & & \\downarrow\\qquad & &\\\\\n",
"\\cdots & \\quad\\rightarrow & ({\\bar{\\cal A}}_*^{\\otimes p})_q & \\qquad\\buildrel {d_h} \\over \\longrightarrow\n", "\\cdots & \\quad\\rightarrow & ({\\bar{\\cal A}}_*^{\\otimes p})_q & \\qquad\\buildrel {d_h} \\over \\longrightarrow\n",
" & ({\\bar{\\cal A}}_*^{\\otimes {p+1}})_q & \\qquad\\rightarrow & \\cdots \\\\\n", " & ({\\bar{\\cal A}}_*^{\\otimes {p+1}})_q & \\qquad\\rightarrow & \\cdots \\\\\n",
@ -137,30 +137,30 @@
"\\cdots & \\quad\\rightarrow &\\quad({\\bar{\\cal A}}_*^{\\otimes p})_{q-1} & \\qquad \\buildrel {d_h} \\over \\longrightarrow \n", "\\cdots & \\quad\\rightarrow &\\quad({\\bar{\\cal A}}_*^{\\otimes p})_{q-1} & \\qquad \\buildrel {d_h} \\over \\longrightarrow \n",
" & \\quad({\\bar{\\cal A}}_*^{\\otimes {p+1}})_{q-1} & \\qquad\\rightarrow & \\cdots \\\\ \n", " & \\quad({\\bar{\\cal A}}_*^{\\otimes {p+1}})_{q-1} & \\qquad\\rightarrow & \\cdots \\\\ \n",
" & & \\downarrow\\quad & & \\downarrow\\qquad & &\n", " & & \\downarrow\\quad & & \\downarrow\\qquad & &\n",
"\\end{align}\n", "\\end{aligned}\n",
"$$\n", "$$\n",
"\n", "\n",
"#### Definition of the vertical cobar\n", "#### Definition of the vertical cobar\n",
"\n", "\n",
"To define the vertical cobar chain complex from a chain complex ${\\cal C}$, the following functions are provided:\n", "To define the vertical cobar chain complex from a chain complex ${\\cal C}$, the following functions are provided:\n",
"\n", "\n",
"``(cobar-cmpr cmpr)`` *[Function]*\n", "`(cobar-cmpr cmpr)` *[Function]*\n",
"> From the comparison function *cmpr*, build a comparison function for objects of algebraic loop type. \n", "> From the comparison function *cmpr*, build a comparison function for objects of algebraic loop type. \n",
"\n", "\n",
"``(cobar-basis basis)`` *[Function]*\n", "`(cobar-basis basis)` *[Function]*\n",
"> From the function *basis}* of a chain complex ${\\cal C}$, build a basis function for the vertical cobar chain complex defined on ${\\cal C}$. In dimension 0, there is only one basis element, namely the null algebraic loop. If ${\\cal C}$ is locally effective, this function returns the symbol ``:locally-effective``.\n", "> From the function *basis}* of a chain complex ${\\cal C}$, build a basis function for the vertical cobar chain complex defined on ${\\cal C}$. In dimension 0, there is only one basis element, namely the null algebraic loop. If ${\\cal C}$ is locally effective, this function returns the symbol `:locally-effective`.\n",
"\n", "\n",
"``(cobar-intr-vrtc-dffr dffr)`` *[Function]*\n", "`(cobar-intr-vrtc-dffr dffr)` *[Function]*\n",
"> From the ``lisp`` function *dffr* of a chain complex ${\\cal C}$, build a lisp function for the differential of the vertical cobar chain complex, according to the formula\n", "> From the `lisp` function *dffr* of a chain complex ${\\cal C}$, build a lisp function for the differential of the vertical cobar chain complex, according to the formula\n",
"$$d_v(g_1 \\otimes \\cdots \\otimes g_n)=\n", "$$d_v(g_1 \\otimes \\cdots \\otimes g_n)=\n",
"\\sum_{i=1}^n{(-1)^{n-i+1+{\\sum_{j=1}^{i-1}{\\mid g_j \\mid}}}\n", "\\sum_{i=1}^n{(-1)^{n-i+1+{\\sum_{j=1}^{i-1}{\\mid g_j \\mid}}}\n",
" g_1 \\otimes \\cdots \\otimes g_{i-1} \\otimes {\\bf dg_i} \\otimes g_{i+1} \\otimes \\cdots \\otimes g_n},$$\n", " g_1 \\otimes \\cdots \\otimes g_{i-1} \\otimes {\\bf dg_i} \\otimes g_{i+1} \\otimes \\cdots \\otimes g_n},$$\n",
" where $dg_i$ is the differential of the generator $g_i$ in the original chain complex (function *dffr*) and $\\mid g_i \\mid$ is the degree of the generator $g_i$ *in the cobar chain complex*.\n", " where $dg_i$ is the differential of the generator $g_i$ in the original chain complex (function *dffr*) and $\\mid g_i \\mid$ is the degree of the generator $g_i$ *in the cobar chain complex*.\n",
"In general, the differential $dg_i$ is a sum of tensor products. So, applying the distribution law, the right member is a sum of tensor products, represented by a combination.\n", "In general, the differential $dg_i$ is a sum of tensor products. So, applying the distribution law, the right member is a sum of tensor products, represented by a combination.\n",
"\n", "\n",
"``(vrtc-cobar chcm)`` *[Method]*\n", "`(vrtc-cobar chcm)` *[Method]*\n",
"> Build the vertical cobar chain complex with underlying chain complex *chcm*. This is simply done by the following call to ``build-chcm``:\n", "> Build the vertical cobar chain complex with underlying chain complex *chcm*. This is simply done by the following call to `build-chcm`:\n",
"```lisp\n", "```commonlisp\n",
"(build-chcm\n", "(build-chcm\n",
" :cmpr (cobar-cmpr cmpr)\n", " :cmpr (cobar-cmpr cmpr)\n",
" :basis (cobar-basis basis)\n", " :basis (cobar-basis basis)\n",
@ -175,7 +175,7 @@
"\n", "\n",
"We are going to build a coalgebra which will be reconsidered in a next chapter (Simplicial sets). It is the coalgebra canonicaly associated to the simplicial set $\\Delta_2^\\mathbb{N}$. This simplicial set is the quotient of $\\Delta^\\mathbb{N}$ - the standard simplex spanned by the non-negative integers - by the relation identifying, firstly all the vertices with a unique one and then any 1-simplex of $\\Delta^\\mathbb{N}$ with the unique degeneracy of this unique vertex. In other words, $\\Delta_2^\\mathbb{N}$ is 1-reduced: 1 vertex, no edges.\n", "We are going to build a coalgebra which will be reconsidered in a next chapter (Simplicial sets). It is the coalgebra canonicaly associated to the simplicial set $\\Delta_2^\\mathbb{N}$. This simplicial set is the quotient of $\\Delta^\\mathbb{N}$ - the standard simplex spanned by the non-negative integers - by the relation identifying, firstly all the vertices with a unique one and then any 1-simplex of $\\Delta^\\mathbb{N}$ with the unique degeneracy of this unique vertex. In other words, $\\Delta_2^\\mathbb{N}$ is 1-reduced: 1 vertex, no edges.\n",
"\n", "\n",
"Our implementation represents any non--degenerate $n$--simplex as an integer increasing list of length $n+1$. In dimension 0, for every non-negative $m$ and $n$, the vertices ``(m)`` and ``(n)`` are identified; in dimension 1, the list $(m\\, n)$ is always an *illegal* 1-simplex. This coalgebra will be located through the symbol ``smp-deltab2``. The lisp definition uses the function ``build-smst`` that will be described in the simplicial set chapter. For the moment, it is sufficient to know, that the function ``build-smst`` allows us to create a coalgebra suitable for the tests. The definition of $\\Delta_2^\\mathbb{N}$ given here, is only for pedagogical purpose, an efficient definition using another representation for the simplices is provided in the software ``Kenzo``." "Our implementation represents any non--degenerate $n$--simplex as an integer increasing list of length $n+1$. In dimension 0, for every non-negative $m$ and $n$, the vertices `(m)` and `(n)` are identified; in dimension 1, the list $(m\\, n)$ is always an *illegal* 1-simplex. This coalgebra will be located through the symbol `smp-deltab2`. The lisp definition uses the function `build-smst` that will be described in the simplicial set chapter. For the moment, it is sufficient to know, that the function `build-smst` allows us to create a coalgebra suitable for the tests. The definition of $\\Delta_2^\\mathbb{N}$ given here, is only for pedagogical purpose, an efficient definition using another representation for the simplices is provided in the software `Kenzo`."
] ]
}, },
{ {
@ -190,7 +190,7 @@
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"SIMPLE-STYLE-WARNING: \n", "SIMPLE-STYLE-WARNING: \n",
" #<SB-INT:SIMPLE-STYLE-WARNING \"undefined ~(~A~): ~S\" {10051A4593}>\n" " #<SB-INT:SIMPLE-STYLE-WARNING \"undefined ~(~A~): ~S\" {10051A4DF3}>\n"
] ]
}, },
{ {
@ -306,7 +306,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Let us build the vertical cobar on the coalgebra ``smp-deltab2`` and apply the comparison function and the differential on some algebraic loops." "Let us build the vertical cobar on the coalgebra `smp-deltab2` and apply the comparison function and the differential on some algebraic loops."
] ]
}, },
{ {
@ -644,23 +644,23 @@
"$$d_h:({\\bar{\\cal A}}_*^{\\otimes p})_q \\longrightarrow ({\\bar{\\cal A}}_*^{\\otimes {p+1}})_q,$$\n", "$$d_h:({\\bar{\\cal A}}_*^{\\otimes p})_q \\longrightarrow ({\\bar{\\cal A}}_*^{\\otimes {p+1}})_q,$$\n",
"\n", "\n",
"$$\n", "$$\n",
"\\begin{align}\n", "\\begin{aligned}\n",
"d_h( g_1 \\otimes \\cdots \\otimes g_p) = & (-1)^p \\Delta g_1 \\otimes g_2 \\otimes \\cdots \\otimes g_p \\\\\n", "d_h( g_1 \\otimes \\cdots \\otimes g_p) = & (-1)^p \\Delta g_1 \\otimes g_2 \\otimes \\cdots \\otimes g_p \\\\\n",
" & + (-1)^{p-1} g_1 \\otimes \\Delta g_2 \\otimes \\cdots \\otimes g_p \\\\\n", " & + (-1)^{p-1} g_1 \\otimes \\Delta g_2 \\otimes \\cdots \\otimes g_p \\\\\n",
" & \\cdots \\\\\n", " & \\cdots \\\\\n",
" & - g_1 \\otimes g_2 \\otimes \\cdots \\otimes g_{p-1} \\otimes \\Delta g_p,\n", " & - g_1 \\otimes g_2 \\otimes \\cdots \\otimes g_{p-1} \\otimes \\Delta g_p,\n",
"\\end{align}\n", "\\end{aligned}\n",
"$$\n", "$$\n",
"\n", "\n",
"where $\\Delta$ is the coproduct of the coalgebra. Two functions are designed for that:\n", "where $\\Delta$ is the coproduct of the coalgebra. Two functions are designed for that:\n",
"\n", "\n",
"``(cobar-intr-hrzn-dffr cprd)`` *[Function]*\n", "`(cobar-intr-hrzn-dffr cprd)` *[Function]*\n",
"> From the coproduct morphism {\\em cprd}, build the lisp function with 2 arguments: a degree and an algebraic loop (i.e. a generator) implementing the algorithm for $d_h$.\n", "> From the coproduct morphism *cprd*, build the lisp function with 2 arguments: a degree and an algebraic loop (i.e. a generator) implementing the algorithm for $d_h$.\n",
"\n", "\n",
"``(cobar-hrzn-dffr clbg)`` *[Function]*\n", "`(cobar-hrzn-dffr clbg)` *[Function]*\n",
"> Build the horizontal differential morphism, using the slot coproduct *cprd* of\n", "> Build the horizontal differential morphism, using the slot coproduct *cprd* of\n",
"the coalgebra *clbg* and the previous function. Note that when called, this function creates, if not already created, the vertical cobar chain complex on *clbg*:\n", "the coalgebra *clbg* and the previous function. Note that when called, this function creates, if not already created, the vertical cobar chain complex on *clbg*:\n",
"```lisp\n", "```commonlisp\n",
"(build-mrph\n", "(build-mrph\n",
" :sorc (vrtc-cobar clgb) \n", " :sorc (vrtc-cobar clgb) \n",
" :trgt (vrtc-cobar clgb) \n", " :trgt (vrtc-cobar clgb) \n",
@ -672,7 +672,7 @@
"\n", "\n",
"### Example\n", "### Example\n",
"\n", "\n",
"We still use our simple coalgebra ``smp-deltab2``. The horizontal differential uses the coproduct of the coalgebra. The following examples show the application of the coproduct (note that there are no 1-simplices in the tensor products). We verify also the property of the horizontal differential." "We still use our simple coalgebra `smp-deltab2`. The horizontal differential uses the coproduct of the coalgebra. The following examples show the application of the coproduct (note that there are no 1-simplices in the tensor products). We verify also the property of the horizontal differential."
] ]
}, },
{ {
@ -975,16 +975,15 @@
"source": [ "source": [
"#### Final definition of the cobar of a coalgebra\n", "#### Final definition of the cobar of a coalgebra\n",
"\n", "\n",
"To define completely the cobar chain complex, we have to provide the lisp function for the differential $d_v + d_h$ and, once created the vertical cobar chain complex, to call the building function ``build-chcm`` with adequate arguments.\n", "To define completely the cobar chain complex, we have to provide the lisp function for the differential $d_v + d_h$ and, once created the vertical cobar chain complex, to call the building function `build-chcm` with adequate arguments.\n",
"\n", "\n",
"``(cobar-intr-dffr vrtc-dffr hrzn-dffr)`` *[Function]*\n", "`(cobar-intr-dffr vrtc-dffr hrzn-dffr)` *[Function]*\n",
"> Define the lisp function for the differential $d_v+d_h$ from the two morphisms *vrtc-dffr* and *hrzn-dffr*. For efficiency reasons, the implementor has chosen to define this new function rather than to use simply the addition of two morphisms.\n", "> Define the lisp function for the differential $d_v+d_h$ from the two morphisms *vrtc-dffr* and *hrzn-dffr*. For efficiency reasons, the implementor has chosen to define this new function rather than to use simply the addition of two morphisms.\n",
"\n", "\n",
"``(cobar coalgebra)`` *[Method]*\n", "`(cobar coalgebra)` *[Method]*\n",
"> Build first the vertical cobar chain complex on the coalgebra. Then return a chain complex with the same slots as the vertical cobar chain complex but with new ``:intr-dffr``\n", "> Build first the vertical cobar chain complex on the coalgebra. Then return a chain complex with the same slots as the vertical cobar chain complex but with new `:intr-dffr`\n",
"and ``:orgn`` slots, as shown in the following definition:\n", "and `:orgn` slots, as shown in the following definition:\n",
"\n", "```commonlisp\n",
"```lisp\n",
"(defmethod COBAR ((coalgebra coalgebra))\n", "(defmethod COBAR ((coalgebra coalgebra))\n",
" (let ((vrtc-cobar (vrtc-cobar coalgebra))\n", " (let ((vrtc-cobar (vrtc-cobar coalgebra))\n",
" (cobar-hrzn-dffr (cobar-hrzn-dffr coalgebra)))\n", " (cobar-hrzn-dffr (cobar-hrzn-dffr coalgebra)))\n",
@ -1002,7 +1001,7 @@
"\n", "\n",
"### Example\n", "### Example\n",
"\n", "\n",
"We may now build the cobar of ``smp-deltab2`` and test the differential." "We may now build the cobar of `smp-deltab2` and test the differential."
] ]
}, },
{ {
@ -1195,26 +1194,26 @@
"source": [ "source": [
"## Other functions for the cobar construction\n", "## Other functions for the cobar construction\n",
"\n", "\n",
"The vertical cobar construction is *natural* and therefore defines a functor. Consequently, the ``Kenzo`` program contains the following methods.\n", "The vertical cobar construction is *natural* and therefore defines a functor. Consequently, the `Kenzo` program contains the following methods.\n",
"\n", "\n",
"``(vrtc-cobar mrph)`` *[Method]*\n", "`(vrtc-cobar mrph)` *[Method]*\n",
"> From the morphism *mrph*, build a new morphism between the vertical-cobar of the source of *mrph* and the vertical cobar of the target of *mrph*, the morphism itself being induced in a natural way by the underlying morphism.\n", "> From the morphism *mrph*, build a new morphism between the vertical-cobar of the source of *mrph* and the vertical cobar of the target of *mrph*, the morphism itself being induced in a natural way by the underlying morphism.\n",
"\n", "\n",
"``(vrtc-cobar rdct)`` *[Method]*\n", "`(vrtc-cobar rdct)` *[Method]*\n",
"> From the reduction *rdct*, build a new reduction, by applying the vertical cobar method to the functions $f$ and $g$. The new homotopy cannot be obtained so simply, being a function of the $f$, $g$ and $h$ of *rdct*. Nevertheless, the source and target of the new homotopy are the vertical cobar of the underlying homotopy.\n", "> From the reduction *rdct*, build a new reduction, by applying the vertical cobar method to the functions $f$ and $g$. The new homotopy cannot be obtained so simply, being a function of the $f$, $g$ and $h$ of *rdct*. Nevertheless, the source and target of the new homotopy are the vertical cobar of the underlying homotopy.\n",
"\n", "\n",
"``(vrtc-cobar hmeq)`` *[Method]*\n", "`(vrtc-cobar hmeq)` *[Method]*\n",
"> Build a homotopy equivalence by applying the vertical cobar construction to the left and right reductions of the homotopy equivalence *hmeq*.\n", "> Build a homotopy equivalence by applying the vertical cobar construction to the left and right reductions of the homotopy equivalence *hmeq*.\n",
"\n", "\n",
"``(cobar hmeq)`` *[Method]*\n", "`(cobar hmeq)` *[Method]*\n",
"> Build a homotopy equivalence where the cobar construction is applied to the underlying homotopy equivalence in the following way. First this construction is limited to the case where the left bottom chain complex of *hmeq* is a **coalgebra**. Then the vertical cobar construction is applied to *hmeq* and the horizontal differential of the left bottom chain complex is propagated upon the new homotopy equivalence with the help of the method ``add``. In other words, starting from the left bottom chain complex, firstly the easy pertubation lemma is applied to obtain a new differential on the top chain complex; then the basic perturbation lemma is applied to the right reduction. If *hmeq* is a\n", "> Build a homotopy equivalence where the cobar construction is applied to the underlying homotopy equivalence in the following way. First this construction is limited to the case where the left bottom chain complex of *hmeq* is a **coalgebra**. Then the vertical cobar construction is applied to *hmeq* and the horizontal differential of the left bottom chain complex is propagated upon the new homotopy equivalence with the help of the method `add`. In other words, starting from the left bottom chain complex, firstly the easy pertubation lemma is applied to obtain a new differential on the top chain complex; then the basic perturbation lemma is applied to the right reduction. If *hmeq* is a\n",
"trivial homotopy equivalence, this function returns a trivial one, built on the cobar of the left bottom chain complex of *hmeq*.\n", "trivial homotopy equivalence, this function returns a trivial one, built on the cobar of the left bottom chain complex of *hmeq*.\n",
"\n", "\n",
"### Lisp files concerned in this chapter\n", "### Lisp files concerned in this chapter\n",
"\n", "\n",
"``coalgebras.lisp``, ``cobar.lisp``.\n", "`coalgebras.lisp`, `cobar.lisp`.\n",
"\n", "\n",
"[``classes.lisp``, ``macros.lisp``, ``various.lisp``]." "[`classes.lisp`, `macros.lisp`, `various.lisp`]."
] ]
} }
], ],

View File

@ -18,74 +18,74 @@
"\n", "\n",
"### Implementation of an algebra\n", "### Implementation of an algebra\n",
"\n", "\n",
"An algebra is represented as an instance of the CLOS class ``ALGEBRA``, subclass of the `` CHAIN COMPLEX`` class. The definition of this new class is simply:\n", "An algebra is represented as an instance of the CLOS class `ALGEBRA`, subclass of the ` CHAIN COMPLEX` class. The definition of this new class is simply:\n",
"\n", "\n",
"```lisp\n", "```commonlisp\n",
"(DEFCLASS ALGEBRA (chain-complex)\n", "(DEFCLASS ALGEBRA (chain-complex)\n",
" ((aprd :type morphism :initarg :aprd :reader aprd1))) ;; product\n", " ((aprd :type morphism :initarg :aprd :reader aprd1))) ;; product\n",
"```\n", "```\n",
"\n", "\n",
"So, this new class inherits the slots of the ``CHAIN COMPLEX`` class and has a slot of its own, namely ``aprd``, an object of type ``MORPHISM`` representing the product. Like in a coalgebra, the user will note the important following fact that, **once an algebra has been defined, one may use on it any function or method applicable to a chain complex**.\n", "So, this new class inherits the slots of the `CHAIN COMPLEX` class and has a slot of its own, namely `aprd`, an object of type `MORPHISM` representing the product. Like in a coalgebra, the user will note the important following fact that, **once an algebra has been defined, one may use on it any function or method applicable to a chain complex**.\n",
"\n", "\n",
"### The function ``build-algb``\n", "### The function `build-algb`\n",
"\n", "\n",
"To facilitate the construction of instances of the ``ALGEBRA`` class, the software **Kenzo** provides the function ``build-algb``:\n", "To facilitate the construction of instances of the `ALGEBRA` class, the software **Kenzo** provides the function `build-algb`:\n",
"\n", "\n",
"```lisp\n", "```commonlisp\n",
"build-algb :cmpr cmpr :basis basis :bsgn bsgn :intr-dffr intr-dffr\n", "build-algb :cmpr cmpr :basis basis :bsgn bsgn :intr-dffr intr-dffr\n",
" :dffr-strt dffr-strt :intr-aprd intr-aprd\n", " :dffr-strt dffr-strt :intr-aprd intr-aprd\n",
" :aprd-strt aprd-strt :orgn orgn\n", " :aprd-strt aprd-strt :orgn orgn\n",
"```\n", "```\n",
"\n", "\n",
"defined with keyword parameters. The returned value is an instance of type ``ALGEBRA``. \n", "defined with keyword parameters. The returned value is an instance of type `ALGEBRA`. \n",
"The keyword arguments are:\n", "The keyword arguments are:\n",
"\n", "\n",
"- *cmpr*, a comparison function for generators.\n", "- *cmpr*, a comparison function for generators.\n",
"- *basis*, the basis function for the underlying chain complex.\n", "- *basis*, the basis function for the underlying chain complex.\n",
"- *bsgn*, the base point, a generator of any type.\n", "- *bsgn*, the base point, a generator of any type.\n",
"- *intr-dffr*, the differential lisp function for the chain complex.\n", "- *intr-dffr*, the differential lisp function for the chain complex.\n",
"- *dffr-strt*, the strategy (``:gnrt`` or ``:cmbn``) for the differential.\n", "- *dffr-strt*, the strategy (`:gnrt` or `:cmbn`) for the differential.\n",
"- *intr-aprd*, the lisp function for the product of the algebra.\n", "- *intr-aprd*, the lisp function for the product of the algebra.\n",
"- *aprd-strt*, the strategy (``:gnrt`` or ``:cmbn``) for the coproduct.\n", "- *aprd-strt*, the strategy (`:gnrt` or `:cmbn`) for the coproduct.\n",
"- *orgn*, an adequate comment list.\n", "- *orgn*, an adequate comment list.\n",
"\n", "\n",
"The function ``build-algb`` calls the function ``build-chcm`` and with the help of the function ``build-mrph`` builds the product morphism of degree 0 to settle the\n", "The function `build-algb` calls the function `build-chcm` and with the help of the function `build-mrph` builds the product morphism of degree 0 to settle the\n",
"slot ``aprd`` of the instance. According to the definition, the source slot of the product morphism is the tensor product of this chain complex with itself and the target slot is the underlying chain complex. An identification number $n$ (slot ``idnm``) is assigned to this Kenzo object and the ``ALGEBRA`` instance is pushed onto the list ``*algb-list*``. \n", "slot `aprd` of the instance. According to the definition, the source slot of the product morphism is the tensor product of this chain complex with itself and the target slot is the underlying chain complex. An identification number $n$ (slot `idnm`) is assigned to this Kenzo object and the `ALGEBRA` instance is pushed onto the list `*algb-list*`. \n",
"The associated printing method prints a string like ``[K``*n* ``Algebra]``.\n", "The associated printing method prints a string like `[K`*n* `Algebra]`.\n",
"\n", "\n",
"### Miscellaneous functions and macros for algebras\n", "### Miscellaneous functions and macros for algebras\n",
"\n", "\n",
"``cat-init`` *[Function]*\n", "`cat-init` *[Function]*\n",
"> Clear among others, the list ``*algb-list*``, list of user created algebras and reset the global counter to 1.\n", "> Clear among others, the list `*algb-list*`, list of user created algebras and reset the global counter to 1.\n",
"\n", "\n",
"``algb`` *n* *[Function]*\n", "`algb` *n* *[Function]*\n",
"> Retrieve in the list ``*algb-list*`` the algebra instance whose identification is $n$. If it does not exist, return ``NIL``.\n", "> Retrieve in the list `*algb-list*` the algebra instance whose identification is $n$. If it does not exist, return `NIL`.\n",
"\n", "\n",
"``aprd`` *algb* ``&rest`` *[Macro]*\n", "`aprd` *algb* `&rest` *[Macro]*\n",
"> Versatile macro relative to the product of an algebra. The first argument is an ``ALGEBRA``\n", "> Versatile macro relative to the product of an algebra. The first argument is an `ALGEBRA`\n",
"instance. With only one argument, this macro returns the product morphism of the algebra.\n", "instance. With only one argument, this macro returns the product morphism of the algebra.\n",
"With more arguments, it applies the product morphism on a combination (``(aprd`` *algb cmbn*``)``)\n", "With more arguments, it applies the product morphism on a combination (`(aprd` *algb cmbn*`)`)\n",
"or on a pair *degree, tensor-product* (``(aprd`` *algb degr tensor-product*``)``).\n", "or on a pair *degree, tensor-product* (`(aprd` *algb degr tensor-product*`)`).\n",
"\n", "\n",
"``change-chcm-to-algb`` *chcm* ``:intr-aprd`` *intr-aprd* ``:aprd-strt`` *aprd-strt* ``:orgn`` *orgn* *[Function]*\n", "`change-chcm-to-algb` *chcm* `:intr-aprd` *intr-aprd* `:aprd-strt` *aprd-strt* `:orgn` *orgn* *[Function]*\n",
"> Build an algebra instance from the already created chain complex *chcm*. The user must give via key parameters a lisp function for the product, its strategy and a comment list.\n", "> Build an algebra instance from the already created chain complex *chcm*. The user must give via key parameters a lisp function for the product, its strategy and a comment list.\n",
"\n", "\n",
"## Hopf Algebra\n", "## Hopf Algebra\n",
"\n", "\n",
"In **Kenzo**, a Hopf Algebra is an instance of the class ``HOPF-ALGEBRA``, the definition of which being simply:\n", "In **Kenzo**, a Hopf Algebra is an instance of the class `HOPF-ALGEBRA`, the definition of which being simply:\n",
"\n", "\n",
"```lisp\n", "```commonlisp\n",
"(DEFCLASS HOPF-ALGEBRA (coalgebra algebra)\n", "(DEFCLASS HOPF-ALGEBRA (coalgebra algebra)\n",
" ())\n", " ())\n",
"```\n", "```\n",
"\n", "\n",
"So, this class (multi-) inherits the slots of the ``COALGEBRA`` and ``ALGEBRA`` classes.\n", "So, this class (multi-) inherits the slots of the `COALGEBRA` and `ALGEBRA` classes.\n",
"The associated printing method prints a string like ``[K``*n* ``Hopf-Algebra]``, and the function ``hopf`` may be used to retrieve the Hopf instance, in the list ``*hopf-list*``.\n", "The associated printing method prints a string like `[K`*n* `Hopf-Algebra]`, and the function `hopf` may be used to retrieve the Hopf instance, in the list `*hopf-list*`.\n",
"\n", "\n",
"### Example of algebra\n", "### Example of algebra\n",
"\n", "\n",
"We shall see later important examples of algebras. Let us content ourself for the moment\n", "We shall see later important examples of algebras. Let us content ourself for the moment\n",
"to define the trivial algebra on a given chain complex *having only one generator in degree* 0}. If this chain complex *chcm* already exists, we use simply the function ``change-chcm-to-algb`` and we have to provide for the keyword ``:intr-aprd``, a lisp function for the product morphism. We recall that the argument of the product in the algebra is a tensor product.\n", "to define the trivial algebra on a given chain complex *having only one generator in degree* 0}. If this chain complex *chcm* already exists, we use simply the function `change-chcm-to-algb` and we have to provide for the keyword `:intr-aprd`, a lisp function for the product morphism. We recall that the argument of the product in the algebra is a tensor product.\n",
"This function must obey the rule of the multiplication by the unit and otherwise will return a null combination of degree the sum of the two degrees in the tensor product." "This function must obey the rule of the multiplication by the unit and otherwise will return a null combination of degree the sum of the two degrees in the tensor product."
] ]
}, },
@ -127,7 +127,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"A good example of a chain complex to be given as argument to the previous function, is the simplicial set ``smp-deltab2`` that we used as simple example in the coalgebra chapter:" "A good example of a chain complex to be given as argument to the previous function, is the simplicial set `smp-deltab2` that we used as simple example in the coalgebra chapter:"
] ]
}, },
{ {
@ -142,7 +142,7 @@
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"SIMPLE-STYLE-WARNING: \n", "SIMPLE-STYLE-WARNING: \n",
" #<SB-INT:SIMPLE-STYLE-WARNING \"undefined ~(~A~): ~S\" {100530E433}>\n" " #<SB-INT:SIMPLE-STYLE-WARNING \"undefined ~(~A~): ~S\" {100530D143}>\n"
] ]
}, },
{ {
@ -199,7 +199,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Note that now ``smp-deltab2`` is of type ``ALGEBRA`` and has kept its Kenzo numbering." "Note that now `smp-deltab2` is of type `ALGEBRA` and has kept its Kenzo numbering."
] ]
}, },
{ {
@ -237,7 +237,7 @@
"text": [ "text": [
"\n", "\n",
"The object is a STANDARD-OBJECT of type CAT::ALGEBRA.\n", "The object is a STANDARD-OBJECT of type CAT::ALGEBRA.\n",
"0. CMPR: #<FUNCTION (LAMBDA (GSM1 GSM2) :IN \"/root/cl-jupyter-master/cl-jupyter.lisp\") {100521D23B}>\n", "0. CMPR: #<FUNCTION (LAMBDA (GSM1 GSM2) :IN \"/root/cl-jupyter-master/cl-jupyter.lisp\") {100521C55B}>\n",
"1. BASIS: :LOCALLY-EFFECTIVE\n", "1. BASIS: :LOCALLY-EFFECTIVE\n",
"2. BSGN: (0)\n", "2. BSGN: (0)\n",
"3. DFFR: [K2 Morphism (degree -1): K1 -> K1]\n", "3. DFFR: [K2 Morphism (degree -1): K1 -> K1]\n",
@ -378,22 +378,22 @@
"\n", "\n",
"### Representation of a bar object\n", "### Representation of a bar object\n",
"\n", "\n",
"An elementary bar object - not to be confused with the chain complex $Bar({\\cal A})$ - is represented in ``Kenzo`` by a lisp object of the form:\n", "An elementary bar object - not to be confused with the chain complex $Bar({\\cal A})$ - is represented in `Kenzo` by a lisp object of the form:\n",
"\n", "\n",
"``(:ABAR`` ($i_1\\, . \\, a_1$) \\ldots ($i_k\\, . \\, a_k$)``)``\n", "`(:ABAR` ($i_1\\, . \\, a_1$) \\ldots ($i_k\\, . \\, a_k$)`)`\n",
"\n", "\n",
"where the $i_j$ are the degrees *in the bar chain complex* of the generators $a_j$.\n", "where the $i_j$ are the degrees *in the bar chain complex* of the generators $a_j$.\n",
"In the original algebra $\\cal A$, the generators $a_j$ had the degree $i_j-1$. The corresponding type is ``ABAR``. The function building such an object is also called ``abar``\n", "In the original algebra $\\cal A$, the generators $a_j$ had the degree $i_j-1$. The corresponding type is `ABAR`. The function building such an object is also called `abar`\n",
"\n", "\n",
"``abar`` *degr1 gnr1 degr2 gnr2 ... degrk gnrk* *[Function]*\n", "`abar` *degr1 gnr1 degr2 gnr2 ... degrk gnrk* *[Function]*\n",
"> Construct an elementary bar object, i.e. a \"suspended tensorial product\" of degree $\\sum degr_i$. The sequence of pairs $\\lbrace degr_i,\\, gnr_i \\rbrace$ has an undefinite length and may be void. In this case, the bar is the null bar object, also located in the system through the constant ``+null-abar+``. The function ``abar`` accepts also as unique argument a list of the form ``(``*degr1 gnr1 degr2 gnr2 ... degrk gnrk*``)``.\n", "> Construct an elementary bar object, i.e. a \"suspended tensorial product\" of degree $\\sum degr_i$. The sequence of pairs $\\lbrace degr_i,\\, gnr_i \\rbrace$ has an undefinite length and may be void. In this case, the bar is the null bar object, also located in the system through the constant `+null-abar+`. The function `abar` accepts also as unique argument a list of the form `(`*degr1 gnr1 degr2 gnr2 ... degrk gnrk*`)`.\n",
"\n", "\n",
"``abar-p`` *object* *[Function]*\n", "`abar-p` *object* *[Function]*\n",
"> Test if *object* is an elementary bar object.\n", "> Test if *object* is an elementary bar object.\n",
"\n", "\n",
"The associated printing method prints the object under the form:\n", "The associated printing method prints the object under the form:\n",
"\n", "\n",
"``<<Abar [``$i_1\\quad a_1$ ``]`` ... ``[`` $i_k\\quad a_k$ ``] >>``\n", "`<<Abar [`$i_1\\quad a_1$ `]` ... `[` $i_k\\quad a_k$ `] >>`\n",
"\n", "\n",
"#### Examples\n", "#### Examples\n",
"\n", "\n",
@ -477,7 +477,7 @@
"if we consider the following diagram.\n", "if we consider the following diagram.\n",
"\n", "\n",
"$$\n", "$$\n",
"\\begin{align}\n", "\\begin{aligned}\n",
" & & \\downarrow\\quad & & \\downarrow\\quad \\cr\n", " & & \\downarrow\\quad & & \\downarrow\\quad \\cr\n",
"\\cdots\\quad & \\leftarrow & ({\\bar{\\cal A}}_*^{\\otimes p})_q & \\qquad\\buildrel {d_h} \\over \\longleftarrow \n", "\\cdots\\quad & \\leftarrow & ({\\bar{\\cal A}}_*^{\\otimes p})_q & \\qquad\\buildrel {d_h} \\over \\longleftarrow \n",
" & ({\\bar{\\cal A}}_*^{\\otimes {p+1}})_q & \\quad\\leftarrow & \\cdots \\cr\n", " & ({\\bar{\\cal A}}_*^{\\otimes {p+1}})_q & \\quad\\leftarrow & \\cdots \\cr\n",
@ -485,34 +485,34 @@
"\\cdots\\quad & \\leftarrow &({\\bar{\\cal A}}_*^{\\otimes p})_{q-1} & \\qquad\\buildrel {d_h} \\over \\longleftarrow \n", "\\cdots\\quad & \\leftarrow &({\\bar{\\cal A}}_*^{\\otimes p})_{q-1} & \\qquad\\buildrel {d_h} \\over \\longleftarrow \n",
" & ({\\bar{\\cal A}}_*^{\\otimes {p+1}})_{q-1} & \\quad\\leftarrow & \\cdots \\cr \n", " & ({\\bar{\\cal A}}_*^{\\otimes {p+1}})_{q-1} & \\quad\\leftarrow & \\cdots \\cr \n",
" & & \\downarrow\\quad & & \\downarrow\\quad \\cr\n", " & & \\downarrow\\quad & & \\downarrow\\quad \\cr\n",
"\\end{align}\n", "\\end{aligned}\n",
"$$\n", "$$\n",
"\n", "\n",
"- A chain complex called ``vertical-bar`` is defined with the *vertical differential* $d_v$. In this case, only the underlying chain complex structure is used.\n", "- A chain complex called `vertical-bar` is defined with the *vertical differential* $d_v$. In this case, only the underlying chain complex structure is used.\n",
"- A horizontal differential $d_h$ is defined. This uses the product structure.\n", "- A horizontal differential $d_h$ is defined. This uses the product structure.\n",
"- The final chain complex ``bar`` is created with differential $d_v+d_h$.\n", "- The final chain complex `bar` is created with differential $d_v+d_h$.\n",
"\n", "\n",
"#### Definition of the vertical bar\n", "#### Definition of the vertical bar\n",
"\n", "\n",
"To define the vertical bar chain complex from the chain complex ${\\cal A}$, the following functions are provided:\n", "To define the vertical bar chain complex from the chain complex ${\\cal A}$, the following functions are provided:\n",
"\n", "\n",
"``bar-cmpr`` *cmpr* *[Function]*\n", "`bar-cmpr` *cmpr* *[Function]*\n",
"> From the comparison function *cmpr*, build a comparison function for objects of type ``abar``.\n", "> From the comparison function *cmpr*, build a comparison function for objects of type `abar`.\n",
"\n", "\n",
"``bar-basis`` *basis* *[Function]*\n", "`bar-basis` *basis* *[Function]*\n",
"> From the function *basis* of a chain complex ${\\cal A}$, build a basis function for the vertical bar chain complex defined on ${\\cal A}$. In dimension 0, there is only one basis element, namely the null abar object. If ${\\cal A}$ is locally effective, this function returns the symbol ``:locally-effective``.\n", "> From the function *basis* of a chain complex ${\\cal A}$, build a basis function for the vertical bar chain complex defined on ${\\cal A}$. In dimension 0, there is only one basis element, namely the null abar object. If ${\\cal A}$ is locally effective, this function returns the symbol `:locally-effective`.\n",
"\n", "\n",
"``bar-intr-vrtc-dffr`` *dffr* *[Function]*\n", "`bar-intr-vrtc-dffr` *dffr* *[Function]*\n",
"> From the ``lisp`` function *dffr* of a chain complex ${\\cal A}$, build a lisp function for the differential of the vertical bar chain complex, according to the formula:\n", "> From the `lisp` function *dffr* of a chain complex ${\\cal A}$, build a lisp function for the differential of the vertical bar chain complex, according to the formula:\n",
"$$d_v [a_1 \\mid \\cdots \\mid a_n]=\n", "$$d_v [a_1 \\mid \\cdots \\mid a_n]=\n",
"-\\sum_{i=1}^n{(-1)^{\\sum_{j=1}^{i-1}{\\mid a_j \\mid}}}\n", "-\\sum_{i=1}^n{(-1)^{\\sum_{j=1}^{i-1}{\\mid a_j \\mid}}}\n",
" {[a_1 \\mid \\cdots \\mid a_{i-1} \\mid {\\bf da_i} \\mid a_{i+1} \\mid \\cdots \\mid a_n]},$$\n", " {[a_1 \\mid \\cdots \\mid a_{i-1} \\mid {\\bf da_i} \\mid a_{i+1} \\mid \\cdots \\mid a_n]},$$\n",
"where $da_i$ is the differential of the generator $a_i$ in the original chain complex (function *dffr*) and $\\mid a_i \\mid$ is the degree of the generator $a_i$ {\\em in the bar chain complex}.\n", "where $da_i$ is the differential of the generator $a_i$ in the original chain complex (function *dffr*) and $\\mid a_i \\mid$ is the degree of the generator $a_i$ *in the bar chain complex*.\n",
"In general, the differential $da_i$ is a sum of objects. So, applying the distributive law, the right member is a sum of bar objects, represented by a combination.\n", "In general, the differential $da_i$ is a sum of objects. So, applying the distributive law, the right member is a sum of bar objects, represented by a combination.\n",
"\n", "\n",
"``vrtc-bar`` *chcm* *[Method]*\n", "`vrtc-bar` *chcm* *[Method]*\n",
"> Build the vertical bar chain complex from the underlying chain complex *chcm*. This is simply done by the call to ``build-chcm``:\n", "> Build the vertical bar chain complex from the underlying chain complex *chcm*. This is simply done by the call to `build-chcm`:\n",
"```lisp\n", "``lisp\n",
" (build-chcm\n", " (build-chcm\n",
" :cmpr (bar-cmpr cmpr)\n", " :cmpr (bar-cmpr cmpr)\n",
" :basis (bar-basis basis)\n", " :basis (bar-basis basis)\n",
@ -520,12 +520,12 @@
" :intr-dffr (bar-intr-vrtc-dffr dffr)\n", " :intr-dffr (bar-intr-vrtc-dffr dffr)\n",
" :strt :gnrt\n", " :strt :gnrt\n",
" :orgn `(vrtc-bar ,chcm))\n", " :orgn `(vrtc-bar ,chcm))\n",
"```\n", "``\n",
"where, *cmpr*, *basis* and *dffr* are extracted from the chain complex *chcm*. Note that the base generator is the null bar object.\n", "where, *cmpr*, *basis* and *dffr* are extracted from the chain complex *chcm*. Note that the base generator is the null bar object.\n",
"\n", "\n",
"#### Examples\n", "#### Examples\n",
"\n", "\n",
"First, let us test the functions ``bar-cmpr`` and ``bar-basis``. With the first one, applied to the elementary comparison function ``s-cmpr``, we create a comparison function suitable for algebras where the generators are symbols." "First, let us test the functions `bar-cmpr` and `bar-basis`. With the first one, applied to the elementary comparison function `s-cmpr`, we create a comparison function suitable for algebras where the generators are symbols."
] ]
}, },
{ {
@ -620,7 +620,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"Let us suppose now that the function ``simple-basis`` is the basis function for a certain algebra (chain complex): in degree $i$, the basis is only the list $(a_i)$." "Let us suppose now that the function `simple-basis` is the basis function for a certain algebra (chain complex): in degree $i$, the basis is only the list $(a_i)$."
] ]
}, },
{ {
@ -633,7 +633,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"#<FUNCTION (LAMBDA (DEGR) :IN \"/root/cl-jupyter-master/cl-jupyter.lisp\") {1005C9C4FB}>" "#<FUNCTION (LAMBDA (DEGR) :IN \"/root/cl-jupyter-master/cl-jupyter.lisp\") {1005C9C5CB}>"
] ]
}, },
"execution_count": 16, "execution_count": 16,
@ -672,7 +672,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"The function ``bar-basis`` creates the function for the basis of the corresponding bar chain complex. Note that when this new function is applied, it returns a priori the null abar in dimension 0 and a null basis in dimension 1. Note also that the basis elements of the underlying algebra (the $a_i$'s) are suspended." "The function `bar-basis` creates the function for the basis of the corresponding bar chain complex. Note that when this new function is applied, it returns a priori the null abar in dimension 0 and a null basis in dimension 1. Note also that the basis elements of the underlying algebra (the $a_i$'s) are suspended."
] ]
}, },
{ {
@ -685,7 +685,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"#<CLOSURE (FLET CAT::RSLT :IN BAR-BASIS) {1005D5F34B}>" "#<CLOSURE (FLET CAT::RSLT :IN BAR-BASIS) {1005D5F11B}>"
] ]
}, },
"execution_count": 18, "execution_count": 18,
@ -738,7 +738,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"To test the vertical differential, let us take the simplicial set ``smp-deltab2`` which is also a chain complex. We may use it for testing the function ``vrtc-bar`` which defines a chain complex independently of the product of the algebra. We recall that, in dimension $n$, the elements of the chain complex ``smp-deltab2`` are represented by lists of increasing $n+1$ integers. So, in the abar objects, the degree of such elements are $n+1$." "To test the vertical differential, let us take the simplicial set `smp-deltab2` which is also a chain complex. We may use it for testing the function `vrtc-bar` which defines a chain complex independently of the product of the algebra. We recall that, in dimension $n$, the elements of the chain complex `smp-deltab2` are represented by lists of increasing $n+1$ integers. So, in the abar objects, the degree of such elements are $n+1$."
] ]
}, },
{ {
@ -835,14 +835,14 @@
" [a_1 \\mid \\cdots \\mid a_{i-2} \\mid {\\bf a_{i-1}a_i} \\mid a_{i+1} \\mid \\cdots \\mid a_k]$$\n", " [a_1 \\mid \\cdots \\mid a_{i-2} \\mid {\\bf a_{i-1}a_i} \\mid a_{i+1} \\mid \\cdots \\mid a_k]$$\n",
"\n", "\n",
"where the product in the algebra is noted simply by the concatenation and $\\mid a_i \\mid$\n", "where the product in the algebra is noted simply by the concatenation and $\\mid a_i \\mid$\n",
"is the degree of $a_i$ in $Bar({\\cal A})$. In ``Kenzo``, two functions are designed for building the horizontal differential:\n", "is the degree of $a_i$ in $Bar({\\cal A})$. In `Kenzo`, two functions are designed for building the horizontal differential:\n",
"\n", "\n",
"``bar-intr-hrzn-dffr`` *aprd* *[Function]*\n", "`bar-intr-hrzn-dffr` *aprd* *[Function]*\n",
"> From the product morphism *aprd*, build the lisp function with 2 arguments: a degree and an ``abar`` object (i.e. a generator) realizing the algorithm for $d_h$.\n", "> From the product morphism *aprd*, build the lisp function with 2 arguments: a degree and an `abar` object (i.e. a generator) realizing the algorithm for $d_h$.\n",
"\n", "\n",
"``bar-hrzn-dffr`` *algb* *[Function]*\n", "`bar-hrzn-dffr` *algb* *[Function]*\n",
"Build the horizontal differential morphism, using the slot product *aprd* of the algebra *algb* and the previous function. Note that when called, this function creates, if not already created, the vertical bar chain complex on * algb*:\n", "Build the horizontal differential morphism, using the slot product *aprd* of the algebra *algb* and the previous function. Note that when called, this function creates, if not already created, the vertical bar chain complex on * algb*:\n",
"```lisp\n", "```commonlisp\n",
" (build-mrph\n", " (build-mrph\n",
" :sorc (vrtc-bar algb) \n", " :sorc (vrtc-bar algb) \n",
" :trgt (vrtc-bar algb) \n", " :trgt (vrtc-bar algb) \n",
@ -854,15 +854,15 @@
"\n", "\n",
"#### Final definition of the bar of an algebra\n", "#### Final definition of the bar of an algebra\n",
"\n", "\n",
"To define completely the bar chain complex, we have to provide the lisp function for the differential $d_v + d_h$ and, once created the vertical bar chain complex, we have to call the building function ``build-chcm`` with adequate arguments.\n", "To define completely the bar chain complex, we have to provide the lisp function for the differential $d_v + d_h$ and, once created the vertical bar chain complex, we have to call the building function `build-chcm` with adequate arguments.\n",
"\n", "\n",
"``bar-intr-dffr`` *vrtc-dffr hrzn-dffr* *[Function]*\n", "`bar-intr-dffr` *vrtc-dffr hrzn-dffr* *[Function]*\n",
"> Define the lisp function for the differential $d_v+d_h$ from the two morphisms *vrtc-dffr* and *hrzn-dffr*. For efficiency reasons, the implementor has chosen to define this new function rather than to use simply\n", "> Define the lisp function for the differential $d_v+d_h$ from the two morphisms *vrtc-dffr* and *hrzn-dffr*. For efficiency reasons, the implementor has chosen to define this new function rather than to use simply\n",
"the addition of two morphisms.\n", "the addition of two morphisms.\n",
"\n", "\n",
"``bar`` *algebra* *[Method]*\n", "`bar` *algebra* *[Method]*\n",
"> Build first the vertical bar chain complex on the algebra. Then return a chain complex with the same slots as the vertical bar chain complex but with new ``:intr-dffr`` and ``:orgn`` slots, as shown in the following definition:\n", "> Build first the vertical bar chain complex on the algebra. Then return a chain complex with the same slots as the vertical bar chain complex but with new `:intr-dffr` and `:orgn` slots, as shown in the following definition:\n",
"```lisp\n", "```commonlisp\n",
" (defmethod BAR ((algebra algebra))\n", " (defmethod BAR ((algebra algebra))\n",
" (let ((vrtc-bar (vrtc-bar algebra))\n", " (let ((vrtc-bar (vrtc-bar algebra))\n",
" (bar-hrzn-dffr (bar-hrzn-dffr algebra)))\n", " (bar-hrzn-dffr (bar-hrzn-dffr algebra)))\n",
@ -882,26 +882,26 @@
"\n", "\n",
"## Other functions for the bar construction\n", "## Other functions for the bar construction\n",
"\n", "\n",
"The vertical bar construction is *natural* and therefore defines a functor. Consequently, the ``Kenzo`` program contains the following methods.\n", "The vertical bar construction is *natural* and therefore defines a functor. Consequently, the `Kenzo` program contains the following methods.\n",
"\n", "\n",
"``vrtc-bar`` *mrph* *[Method]*\n", "`vrtc-bar` *mrph* *[Method]*\n",
"> From the morphism *mrph*, build a new morphism between the vertical-bar of the source of *mrph* and the vertical bar of the target of *mrph*, the morphism itself being induced in a natural way by the underlying morphism.\n", "> From the morphism *mrph*, build a new morphism between the vertical-bar of the source of *mrph* and the vertical bar of the target of *mrph*, the morphism itself being induced in a natural way by the underlying morphism.\n",
"\n", "\n",
"``vrtc-bar`` *rdct* *[Method]*\n", "`vrtc-bar` *rdct* *[Method]*\n",
"> From the reduction *rdct*, build a new reduction, by applying the vertical bar method to the functions $f$ and $g$. The new homotopy cannot be obtained so simply, being a function of the $f$, $g$ and $h$ of *rdct*. Nevertheless, the source and target of the new homotopy are the vertical bar of the underlying homotopy.\n", "> From the reduction *rdct*, build a new reduction, by applying the vertical bar method to the functions $f$ and $g$. The new homotopy cannot be obtained so simply, being a function of the $f$, $g$ and $h$ of *rdct*. Nevertheless, the source and target of the new homotopy are the vertical bar of the underlying homotopy.\n",
"\n", "\n",
"``vrtc-bar`` *hmeq* *[Method]*\n", "`vrtc-bar` *hmeq* *[Method]*\n",
"> Build a homotopy equivalence by applying the vertical bar construction to the left and right reductions of the homotopy equivalence *hmeq*.\n", "> Build a homotopy equivalence by applying the vertical bar construction to the left and right reductions of the homotopy equivalence *hmeq*.\n",
"\n", "\n",
"``bar`` *hmeq* *[Method]*\n", "`bar` *hmeq* *[Method]*\n",
"> Build a homotopy equivalence where the bar construction is applied to the underlying homotopy equivalence in the following way. First this construction is limited to the case where the left bottom chain complex of *hmeq* is an ** algebra**. Then the vertical bar construction is applied to *hmeq* and the horizontal differential of the left bottom chain complex is propagated upon the new homotopy equivalence with the help of the method ``add``. In other words,\n", "> Build a homotopy equivalence where the bar construction is applied to the underlying homotopy equivalence in the following way. First this construction is limited to the case where the left bottom chain complex of *hmeq* is an ** algebra**. Then the vertical bar construction is applied to *hmeq* and the horizontal differential of the left bottom chain complex is propagated upon the new homotopy equivalence with the help of the method `add`. In other words,\n",
"starting from the left bottom chain complex, firstly the easy pertubation lemma is applied to obtain a new differential on the top chain complex; then the basic perturbation lemma is applied to the right reduction. If *hmeq* is a trivial homotopy equivalence, this function returns a trivial one, built on the bar of the left bottom chain complex of * hmeq*.\n", "starting from the left bottom chain complex, firstly the easy pertubation lemma is applied to obtain a new differential on the top chain complex; then the basic perturbation lemma is applied to the right reduction. If *hmeq* is a trivial homotopy equivalence, this function returns a trivial one, built on the bar of the left bottom chain complex of * hmeq*.\n",
"\n", "\n",
"### Lisp files concerned in this chapter\n", "### Lisp files concerned in this chapter\n",
"\n", "\n",
"``algebras.lisp``, ``bar.lisp``.\n", "`algebras.lisp`, `bar.lisp`.\n",
"\n", "\n",
"[``classes.lisp``, ``macros.lisp``, ``various.lisp``]." "[`classes.lisp`, `macros.lisp`, `various.lisp`]."
] ]
} }
], ],