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",
"Let us recall some definitions in relation with the Kan simplicial sets.\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",
"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",
"### Example\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",
"**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",
"### Example\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",
"**Definition 3.** A simplicial set is a Kan simplicial set if for every hat there exists a filling.\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",
"\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",
"\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",
"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",
@ -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",
"\n",
"`kfll &rest` *args* *[Macro]*\n",
"> With only one argument (a Kan instance) return the slot `kfll` of this instance. With 4 arguments\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",
"> 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",
"\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",
"\n",
"`check-hat` *kan indx dmns hat* *[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",
"`check-horn` *kan indx dmns horn* *[Function]*\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",
"`check-kan` *kan indx dmns hat* *[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",
"`check-kan` *kan indx dmns horn* *[Function]*\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",
"### Examples\n",
"\n",
"Let us take again the small examples of the introduction. First we define a function `dkfll`, \n",
"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."
"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."
]
},
{
@ -77,14 +76,6 @@
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"SIMPLE-STYLE-WARNING: \n",
" #<SB-INT:SIMPLE-STYLE-WARNING \"undefined ~(~A~): ~S\" {1005215EB3}>\n"
]
},
{
"data": {
"text/plain": [
@ -97,23 +88,23 @@
}
],
"source": [
"(defun dkfll (indx dmns hat)\n",
"(defun dkfll (indx dmns horn)\n",
" (cond ((= 1 dmns)\n",
" (absm 1 (gmsm (first hat))))\n",
" (absm 1 (gmsm (first horn))))\n",
" ((= 0 indx)\n",
" (let ((del-1 (absm-int-ext (first hat)))\n",
" (del-2 (absm-int-ext (second hat))))\n",
" (let ((del-1 (absm-int-ext (first horn)))\n",
" (del-2 (absm-int-ext (second horn))))\n",
" (absm-ext-int\n",
" (cons (first del-1)\n",
" (cons (second del-2) (rest del-1))))))\n",
" ((= 1 indx)\n",
" (let ((del-0 (absm-int-ext (first hat)))\n",
" (del-2 (absm-int-ext (second hat))))\n",
" (let ((del-0 (absm-int-ext (first horn)))\n",
" (del-2 (absm-int-ext (second horn))))\n",
" (absm-ext-int\n",
" (cons (first del-2) del-0))))\n",
" (t\n",
" (let ((del-0 (absm-int-ext (first hat)))\n",
" (del-1 (absm-int-ext (second hat))))\n",
" (let ((del-0 (absm-int-ext (first horn)))\n",
" (del-1 (absm-int-ext (second horn))))\n",
" (absm-ext-int\n",
" (cons (first del-1) del-0))))))"
]