Started iPython notebook for Chapter 2 of the Handbook.

This commit is contained in:
Gerd Heber 2015-08-17 20:59:10 -05:00
parent 48e26406cd
commit daaa610c13

861
examples/Chapter2.ipynb Normal file
View File

@ -0,0 +1,861 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"To load \"kenzo\":\n",
" Load 1 ASDF system:\n",
" kenzo\n",
"; Loading \"kenzo\"\n",
"\n"
]
},
{
"data": {
"text/plain": [
"(:KENZO)"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(ql:quickload :kenzo)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"---done---"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:cat-init)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.1 Representation of a reduction"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"\"----------------------------------------------------------------[class-doc]\n",
"REDUCTION\n",
"Slots: (tcc bcc f g h idnm orgn)\n",
"Instances of this class represent reductions of chain complexes.\n",
"\n",
" ^ h s ^ f ° g = 1\n",
" C -----> C C\n",
" ^ h ° d + d ° h = 1 - g ° f\n",
" | | ^\n",
" f | | g C\n",
" | | f ° h = 0\n",
" v h ° g = 0\n",
" C h ° h = 0\n",
"\n",
"The class has 7 slots:\n",
" ^\n",
"1. TCC, an object of type CHAIN-COMPLEX, the top chain complex C. Its reader\n",
" function is TCC1.\n",
"\n",
"2. BCC, an object of type CHAIN-COMPLEX, the bottom chain complex C. Its reader\n",
" function is BCC1.\n",
"\n",
"3. F, an object of type MORPHISM representing the morphism f. Its reader\n",
" function is F1.\n",
"\n",
"4. G, an object of type MORPHISM representing the morphism g. Its reader\n",
" function is G1.\n",
"\n",
"5. H, an object of type MORPHISM representing the morphism h. Its reader\n",
" function is H1.\n",
"\n",
"9. IDNM, an integer, a system-generated identifier for this object. Its reader\n",
" function is IDNM.\n",
"\n",
"10. ORGN, a list containg a comment indicating the origin of the object. The\n",
" should be unique (per session), since it is used in the implementation for\n",
" caching purposes. Its reader function is ORGN.\n",
"-----------------------------------------------------------------------------\""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(documentation 'cat:reduction 'type)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.2 The function $\\texttt{build-rdct}$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"\"--------------------------------------------------------------[function-doc]\n",
"BUILD-RDCT\n",
"Args: (&key f g h orgn)\n",
"Returns an instance of the class REDUCTION. The keyword arguments are as\n",
"follows:\n",
"\n",
":F F, an object of type morphism representing the morphism f of a reduction\n",
"\n",
":G G, an object of type morphism representing the morphism g of a reduction\n",
"\n",
":H H, an object of type morphism representing the morphism h of a reduction\n",
"\n",
":ORGN ORGN, a list containing a relevant and carefully chosen comment about\n",
" the origin of the chain complex. This comment should be unique\n",
" for a Kenzo session (between calls of CAT-INIT), as it is used\n",
" for caching purposes.\n",
"\n",
"Use this function instead of creating instances via the standard constructor\n",
"MAKE-INSTANCE.\n",
"------------------------------------------------------------------------------\""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(documentation 'cat:build-rdct 'function)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2.4 Verification functions"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"\"--------------------------------------------------------------[function-doc]\n",
"PRE-CHECK-RDCT\n",
"Args: (rdct)\n",
"Assigns the following Lisp global variables, using morphisms from RDCT and the\n",
"differentials and identity morphisms of the underlying chain complexes,\n",
"according to these formulas:\n",
"\n",
"*TDD* = d ° d\n",
" ^ ^\n",
" C C\n",
"\n",
"*BDD* = d ° d\n",
" C C\n",
"\n",
"*ID-FG* = Id - f ° g\n",
" C\n",
"\n",
"*ID-GF-DH-HD* = Id - g ° f - (d ° h + h ° d )\n",
" ^ ^ ^\n",
" C C C\n",
"\n",
"*HH* = h ° h\n",
"*FH* = f ° h\n",
"*HG* = h ° g\n",
"\n",
"*DF-FD* = d ° f - f ° d\n",
" C ^\n",
" C\n",
"\n",
"*DG-GD* = d ° g - g ° d\n",
" ^ C\n",
" C\n",
"\n",
"------------------------------------------------------------------------------\""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(documentation 'cat:pre-check-rdct 'function)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"\"--------------------------------------------------------------[function-doc]\n",
"CHECK-RDCT-NO-WAIT\n",
"Args: ()\n",
"Maps combinations of the top and bottom chain complexes of a reduction using\n",
"the morphisms created by PRE-CHECK-RDCT. Having no parameters, the\n",
"combinations must be provided via the Lisp global variables *TC* and *BC*,\n",
"for the top and bottom chain complex, respectively. If the morphisms are\n",
"coherent, the result of each mapping is a null combination.\n",
"------------------------------------------------------------------------------\""
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(documentation 'cat:check-rdct-no-wait 'function)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Example"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"CDELTA"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(defun cdelta (dmns)\n",
" (cat:build-chcm\n",
" :cmpr #'cat:l-cmpr\n",
" :basis :locally-effective\n",
" :bsgn '(0)\n",
" :intr-dffr\n",
" #'(lambda (degr gmsm)\n",
" (cat:make-cmbn\n",
" :degr (1- degr)\n",
" :list (do ((rslt cat:+empty-list+\n",
" (cons (cons sign\n",
" (append\n",
" (subseq gmsm 0 nark)\n",
" (subseq gmsm (1+ nark))))\n",
" rslt))\n",
" (sign 1 (- sign))\n",
" (nark 0 (1+ nark)))\n",
" ((> nark degr) rslt))))\n",
" :strt :gnrt\n",
" :orgn `(locally effective version of C_* delta ,dmns)))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"MAKE-F"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(defun make-f (tdmns bdmns)\n",
" (cat:build-mrph\n",
" :sorc (cdelta tdmns) :trgt (cdelta bdmns) :degr 0\n",
" :intr #'(lambda (degr gmsm)\n",
" (let ((pos (position-if #'(lambda (vertex) (>= vertex bdmns))\n",
" gmsm)))\n",
" (if pos\n",
" (if (< pos degr)\n",
" (cat:zero-cmbn degr)\n",
" (cat:cmbn degr 1 (nconc (butlast gmsm) (list bdmns))))\n",
" (cat:cmbn degr 1 gmsm))))\n",
" :strt :gnrt\n",
" :orgn `(projection delta ,tdmns => delta ,bdmns)))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"MAKE-G"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(defun make-g (tdmns bdmns)\n",
" (cat:build-mrph\n",
" :sorc (cdelta bdmns) :trgt (cdelta tdmns) :degr 0\n",
" :intr #'identity\n",
" :strt :cmbn\n",
" :orgn `(injection delta ,bdmns => delta ,tdmns)))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"MAKE-H"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(defun make-h (tdmns bdmns)\n",
" (cat:build-mrph\n",
" :sorc (cdelta tdmns) :trgt (cdelta tdmns) :degr +1\n",
" :intr #'(lambda (degr gmsm)\n",
" (let ((pos (position-if #'(lambda (vertex) (>= vertex bdmns))\n",
" gmsm)))\n",
" (if pos\n",
" (if (member bdmns gmsm)\n",
" (cat:zero-cmbn (1+ degr))\n",
" (cat:cmbn (1+ degr) (cat:-1-expt-n pos)\n",
" (append (subseq gmsm 0 pos) (list bdmns)\n",
" (subseq gmsm pos))))\n",
" (cat:zero-cmbn (1+ degr)))))\n",
" :strt :gnrt\n",
" :orgn `(homotopy for delta ,tdmns => ,bdmns)))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"MAKE-RDCT"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(defun make-rdct (tdmns bdmns)\n",
" (let ((rdct (cat:build-rdct\n",
" :f (make-f tdmns bdmns)\n",
" :g (make-g tdmns bdmns)\n",
" :h (make-h tdmns bdmns)\n",
" :orgn `(reduction delta ,tdmns ,bdmns))))\n",
" rdct))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[K8 Reduction K1 => K3]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:def rdct (make-rdct 6 3))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(REDUCTION DELTA 6 3)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:orgn rdct)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"---done---"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:pre-check-rdct rdct)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"----------------------------------------------------------------------{CMBN 2}\n",
"<1 * (0 1 2)>\n",
"<10 * (1 2 3)>\n",
"<100 * (1 2 4)>\n",
"<1000 * (2 3 4)>\n",
"------------------------------------------------------------------------------\n"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(setf cat:*tc* (cat:cmbn 2 1 '(0 1 2) 10 '(1 2 3) 100 '(1 2 4) 1000 '(2 3 4)))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"----------------------------------------------------------------------{CMBN 3}\n",
"<4 * (0 1 2 3)>\n",
"------------------------------------------------------------------------------\n"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(setf cat:*bc* (cat:cmbn 3 4 '(0 1 2 3)))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"*TC* => \n",
"----------------------------------------------------------------------{CMBN 2}\n",
"<1 * (0 1 2)>\n",
"<10 * (1 2 3)>\n",
"<100 * (1 2 4)>\n",
"<1000 * (2 3 4)>\n",
"------------------------------------------------------------------------------\n",
"\n",
"*BC* => \n",
"----------------------------------------------------------------------{CMBN 3}\n",
"<4 * (0 1 2 3)>\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *TDD* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 0}\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *BDD* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 1}\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *DF-FD* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 1}\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *DG-GD* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 2}\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *ID-FG* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 3}\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 4}\n",
"------------------------------------------------------------------------------\n",
"\n",
"---done---"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:check-rdct-no-wait)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[K35 Reduction K1 => K30]"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:def trdct (make-rdct 6 4))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[K39 Reduction K30 => K3]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:def brdct (make-rdct 4 3))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[K45 Reduction K1 => K3]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(setf rdct (cat:cmps brdct trdct))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"---done---"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:pre-check-rdct rdct)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"*TC* => \n",
"----------------------------------------------------------------------{CMBN 2}\n",
"<1 * (0 1 2)>\n",
"<10 * (1 2 3)>\n",
"<100 * (1 2 4)>\n",
"<1000 * (2 3 4)>\n",
"------------------------------------------------------------------------------\n",
"\n",
"*BC* => \n",
"----------------------------------------------------------------------{CMBN 3}\n",
"<4 * (0 1 2 3)>\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *TDD* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 0}\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *BDD* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 1}\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *DF-FD* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 1}\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *DG-GD* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 2}\n",
"------------------------------------------------------------------------------\n",
"\n",
"Checking *ID-FG* = 0\n",
"Result: \n",
"----------------------------------------------------------------------{CMBN 3}\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 4}\n",
"------------------------------------------------------------------------------\n",
"\n",
"---done---"
]
},
{
"data": {
"text/plain": [
"NIL"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(cat:check-rdct-no-wait)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "CCL 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
}