Added Francis' changes.

This commit is contained in:
gheber 2016-04-12 18:54:05 -05:00
parent c57247e8a1
commit 3e17919559
2 changed files with 129 additions and 126 deletions

File diff suppressed because one or more lines are too long

View File

@ -10,22 +10,24 @@
"\n", "\n",
"Let us recall some definitions in relation with the Kan simplicial sets.\n", "Let us recall some definitions in relation with the Kan simplicial sets.\n",
"\n", "\n",
"**Definition 1.** A Kan \"hat\" of dimension $n$ and index $i$ is a collection of $n$ simplices of dimension $(n-1)$, noted $(\\sigma_0, \\ldots, \\sigma_{i-1}, \\sigma_{i+1}, \\ldots, \\sigma_n)$, such that the following conditions are fulfilled:\n", "**Definition 1.** A Kan \"horn\" of dimension $n$ and index $i$ is a collection of $n$ simplices of dimension $(n-1)$, noted $(\\sigma_0, \\ldots, \\sigma_{i-1}, \\sigma_{i+1}, \\ldots, \\sigma_n)$, such that the following conditions are fulfilled:\n",
"$$ \\partial_j\\sigma_k=\\partial_k\\sigma_{j+1},\\quad k \\not= i,\\quad j+1 \\not= i, \\quad 0 \\leq j \\leq n-1, \\quad 0 \\leq k \\leq n-1, \\quad k \\leq j. $$\n", "$$ \\partial_j\\sigma_k=\\partial_k\\sigma_{j+1},\\quad k \\not= i,\\quad j+1 \\not= i, \\quad 0 \\leq j \\leq n-1, \\quad 0 \\leq k \\leq n-1, \\quad k \\leq j. $$\n",
"Note that there is no $\\sigma_i$ term in the list above; in a sense, the Kan process consists in constructing the missing $\\sigma_i$ to be considered as a \"composition\" of the given $\\sigma_j$'s.\n", "Note that there is no $\\sigma_i$ term in the list above; in a sense, the Kan process consists in constructing the missing $\\sigma_i$ to be considered as a \"composition\" of the given $\\sigma_j$'s.\n",
"\n", "\n",
"### Example\n", "### Example\n",
"\n", "\n",
"We are going to work with the simplices of $\\Delta^\\mathbb{N}$. The set $(\\sigma_1, \\sigma_2) = $ `((0 2), (0 1))` is a Kan hat of dimension 2 and index 0. In effect, $\\delta_1\\sigma_1=\\delta_1\\sigma_2 =$ `(0)`. Likewise, the two sets `((1 2), (0 1))` and `((1 2), (0 2))` are Kan hats of dimension 2 and of respective index 1 and 2. Of course, this definition applies equally if the simplices are degenerate.\n", "We are going to work with the simplices of $\\Delta^\\mathbb{N}$. The set $(\\sigma_1, \\sigma_2) = $ `((0 2), (0 1))` is a Kan horn of dimension 2 and index 0. In effect, $\\partial_1\\sigma_1=\\partial_1\\sigma_2 =$ `(0)`. Likewise, the two sets `((1 2), (0 1))` and `((1 2), (0 2))` are Kan horns of dimension 2 and of respective index 1 and 2. Of course, this definition applies equally if the simplices are degenerate.\n",
"\n", "\n",
"**Definition 2.** A *filling* of a Kan hat $(\\sigma_0, \\ldots, \\sigma_{i-1}, \\sigma_{i+1}, \\ldots, \\sigma_n)$, is an $n$-simplex $\\tilde{\\sigma}$, such that for every $j \\not= i$, $\\partial_j\\tilde{\\sigma}=\\sigma_j.$\n", "**Definition 2.** A *filling* of a Kan horn $(\\sigma_0, \\ldots, \\sigma_{i-1}, \\sigma_{i+1}, \\ldots, \\sigma_n)$, is an $n$-simplex $\\tilde{\\sigma}$, such that for every $j \\not= i$, $\\partial_j\\tilde{\\sigma}=\\sigma_j.$\n",
"\n", "\n",
"### Example\n", "### Example\n",
"\n", "\n",
"A filling of `((0 2), (0 1))` is the 2-simplex `(0 1 2)`. A filling of the Kan hat `((1 1), (0 1))` is the degenerate 2-simplex `(0 1 1)`. A filling of the vertex `(0)` is the degenerate 1-simplex `(0 0)`.\n", "A filling of `((0 2), (0 1))` is the 2-simplex `(0 1 2)`. A filling of the Kan horn `((1 1), (0 1))` is the degenerate 2-simplex `(0 1 1)`. A filling of the vertex `(0)` is the degenerate 1-simplex `(0 0)`.\n",
"\n", "\n",
"**Definition 3.** A simplicial set is a Kan simplicial set if for every hat there exists a filling.\n", "**Definition 3.** A simplicial set is a Kan simplicial set if for every hat there exists a filling.\n",
"\n", "\n",
"In a *constructive* context, an *algorithm* must be provided able to *compute* a solution for the Kan problem. In the Kenzo program, a Kan simplicial-set has an extra slot `kfll` devoted to this problem.\n",
"\n",
"### Representation of a Kan simplicial set\n", "### Representation of a Kan simplicial set\n",
"\n", "\n",
"A Kan simplicial set is implemented as an instance of the class `KAN`, subclass of the class `SIMPLICIAL-SET`.\n", "A Kan simplicial set is implemented as an instance of the class `KAN`, subclass of the class `SIMPLICIAL-SET`.\n",
@ -38,7 +40,7 @@
"We recall that this new class inherits also from the class `CHAIN-COMPLEX`. It has one slot of its own:\n", "We recall that this new class inherits also from the class `CHAIN-COMPLEX`. It has one slot of its own:\n",
"\n", "\n",
"`kfll`\n", "`kfll`\n",
"> an object of type `KFLL`, in fact a lisp function with 3 parameters describing a Kan hat: an index (an integer), a dimension (an integer) and the Kan hat (a list of abstract simplices). This function must return a filling of the Kan hat argument, i.e. an abstract simplex satisfying the theoritical definition.\n", "> an object of type `KFLL`, in fact a lisp function with 3 parameters describing a Kan horn: an index (an integer), a dimension (an integer) and the Kan horn (a list of abstract simplices). This function must return a filling of the Kan horn argument, i.e. an abstract simplex satisfying the theoritical definition.\n",
"\n", "\n",
"A printing method has been associated to the class `KAN` and the external representation of an instance is a string like `[K`*n* `Kan-Simplicial-Set]`, where *n* is the number plate of the Kenzo object.\n", "A printing method has been associated to the class `KAN` and the external representation of an instance is a string like `[K`*n* `Kan-Simplicial-Set]`, where *n* is the number plate of the Kenzo object.\n",
"\n", "\n",
@ -51,23 +53,20 @@
"> Retrieve in the list `*Kan-list*` the Kan object instance whose the Kenzo identification is n. If it does not exist, return `NIL`.\n", "> Retrieve in the list `*Kan-list*` the Kan object instance whose the Kenzo identification is n. If it does not exist, return `NIL`.\n",
"\n", "\n",
"`kfll &rest` *args* *[Macro]*\n", "`kfll &rest` *args* *[Macro]*\n",
"> With only one argument (a Kan instance) return the slot `kfll` of this instance. With 4 arguments\n", "> With only one argument (a Kan instance) return the slot `kfll` of this instance. With 4 arguments like `(kfll` *kan indx dmns horn*`)`, return a filling of the Kan horn *horn*, of dimension *dmns* and of index *indx* by applying the filling function value of the slot `kfll` of the Kan instance *kan*.\n",
"like `(kfll` *kan indx dmns hat*`)`, return a filling of the Kan hat *hat*, of dimension *dmns*\n",
"and of index *indx* by applying the filling function value of the slot `kfll` of the Kan instance *kan*.\n",
"\n", "\n",
"`smst-kan` *smst kfll* *[Function]*\n", "`smst-kan` *smst kfll* *[Function]*\n",
"> With the filling lisp function *kfll*, **transform** the simplicial set *smst* in an object of type `KAN` (in other word, *smst* is `modified`). This is the easiest way to build a Kan simplicial set.\n", "> With the filling lisp function *kfll*, **transform** the simplicial set *smst* in an object of type `KAN` (in other word, *smst* is `modified`). This is the easiest way to build a Kan simplicial set.\n",
"\n", "\n",
"`check-hat` *kan indx dmns hat* *[Function]*\n", "`check-horn` *kan indx dmns horn* *[Function]*\n",
"> Useful verification function to check if the collection of simplices `hat` is a valid Kan hat of dimension *dmns* and of index *indx* in the Kan simplicial set *kan*. In fact this works equally if *kan* is a general simplicial set.\n", "> Useful verification function to check if the collection of simplices `horn` is a valid Kan horn of dimension *dmns* and of index *indx* in the Kan simplicial set *kan*. In fact this works equally if *kan* is a general simplicial set.\n",
"\n", "\n",
"`check-kan` *kan indx dmns hat* *[Function]*\n", "`check-kan` *kan indx dmns horn* *[Function]*\n",
"> Useful verification function to check if the collection of simplices *hat* is a valid Kan hat of dimension *dmns* and of index *indx* in the Kan simplicial set *kan*. This verification function applies the filling function of the instance *kan* to the argument *hat* and perform the verification of the faces relations upon the resulting $dmns$-simplex.\n", "> Useful verification function to check if the collection of simplices *horn* is a valid Kan horn of dimension *dmns* and of index *indx* in the Kan simplicial set *kan*. This verification function applies the filling function of the instance *kan* to the argument *horn* and perform the verification of the faces relations upon the resulting $dmns$-simplex.\n",
"\n", "\n",
"### Examples\n", "### Examples\n",
"\n", "\n",
"Let us take again the small examples of the introduction. First we define a function `dkfll`, \n", "Let us take again the small examples of the introduction. First we define a function `dkfll`, a filling function suitable for a Kan horn in $\\Delta^\\mathbb{N}$. The user will note that in the abstract simplices the degeneracy operators and the geometric simplices are coded in binary."
"a filling function suitable for a Kan hat in $\\Delta^\\mathbb{N}$. The user will note that in the abstract simplices the degeneracy operators and the geometric simplices are coded in binary."
] ]
}, },
{ {
@ -77,14 +76,6 @@
"collapsed": false "collapsed": false
}, },
"outputs": [ "outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"SIMPLE-STYLE-WARNING: \n",
" #<SB-INT:SIMPLE-STYLE-WARNING \"undefined ~(~A~): ~S\" {1005215EB3}>\n"
]
},
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
@ -97,23 +88,23 @@
} }
], ],
"source": [ "source": [
"(defun dkfll (indx dmns hat)\n", "(defun dkfll (indx dmns horn)\n",
" (cond ((= 1 dmns)\n", " (cond ((= 1 dmns)\n",
" (absm 1 (gmsm (first hat))))\n", " (absm 1 (gmsm (first horn))))\n",
" ((= 0 indx)\n", " ((= 0 indx)\n",
" (let ((del-1 (absm-int-ext (first hat)))\n", " (let ((del-1 (absm-int-ext (first horn)))\n",
" (del-2 (absm-int-ext (second hat))))\n", " (del-2 (absm-int-ext (second horn))))\n",
" (absm-ext-int\n", " (absm-ext-int\n",
" (cons (first del-1)\n", " (cons (first del-1)\n",
" (cons (second del-2) (rest del-1))))))\n", " (cons (second del-2) (rest del-1))))))\n",
" ((= 1 indx)\n", " ((= 1 indx)\n",
" (let ((del-0 (absm-int-ext (first hat)))\n", " (let ((del-0 (absm-int-ext (first horn)))\n",
" (del-2 (absm-int-ext (second hat))))\n", " (del-2 (absm-int-ext (second horn))))\n",
" (absm-ext-int\n", " (absm-ext-int\n",
" (cons (first del-2) del-0))))\n", " (cons (first del-2) del-0))))\n",
" (t\n", " (t\n",
" (let ((del-0 (absm-int-ext (first hat)))\n", " (let ((del-0 (absm-int-ext (first horn)))\n",
" (del-1 (absm-int-ext (second hat))))\n", " (del-1 (absm-int-ext (second horn))))\n",
" (absm-ext-int\n", " (absm-ext-int\n",
" (cons (first del-1) del-0))))))" " (cons (first del-1) del-0))))))"
] ]