\chapter {Loop spaces fibrations} \section{The canonical loop space fibration} Let $X$ be a simplicial set. The software {\tt Kenzo} implements the {\bf canonical} twisted cartesian product\index{twisted cartesian product} of $X$ by its loop space $GX$, denoted $X \times_\tau GX$, giving the Kan\footnote {{\bf Daniel M. Kan}. {\em A combinatorial definition of homotopy groups}, Ann. of Math., 1958, vol. 67, pp 282--312.} model of the contractible path space of $X$. The {\em canonical fibration} $$ GX\quad \hookrightarrow\quad X \times_\tau GX \hskip 1.2em \longrightarrow \hskip -1.2em \longrightarrow \quad X,$$ is defined by the trivial application $\tau$, where $\tau(x)$ is the {\em letter} $x$ in $GX$. This twisted cartesian product has the same simplices as the non-twisted one. So both associated chain complexes are equal as graded modules. The essential difference resides in the differential morphism. More precisely, the face operator $\partial_n$ behaves differently in the twisted cartesian product. Let $(x,g) \in X \times_\tau GX$, the rule for the face operators are: \begin{eqnarray*} \partial_i(x,g) & = & (\partial_i x, \partial_i g), \qquad i [K1 Simplicial-Set] (setf gdb (loop-space db)) ==> [K6 Simplicial-Group] \end{verbatim}} Let us compare the faces of a cartesian product in $\bar{\Delta} \times \Omega(\bar{\Delta})$ and the faces of the same object in $\bar{\Delta} \times_\tau \Omega(\bar{\Delta})$: {\footnotesize\begin{verbatim} (setf crts-pr (crts-prdc db gdb)) ==> [K18 Simplicial-Set] (setf tw-crts-pr (twisted-crts-prdc db)) ==> [K23 Simplicial-Set] (setf smpx (crpr 0 (code '(0 1 2 3 4)) 0 (loop3 0 (code '(0 1 2 3 4 5)) 1))) ==> >> (dotimes (j 5) (print (face crts-pr j 4 smpx))) ==> >>> >>> >>> >>> >>> (dotimes (j 5) (print (face tw-crts-pr j 4 smpx))) ==> >>> >>> >>> >>> >>> \end{verbatim}} \newpage {\footnotesize\begin{verbatim} (setf smpx2 (crpr 0 (code '(1 2 3 4 5)) 0 (loop3 0 (code '(5 6 7 8 9 10)) 1))) ==> >> (dotimes (j 5) (print (face crts-pr j 4 smpx2))) ==> >>> >>> >>> >>> >>> (dotimes (j 5) (print (face tw-crts-pr j 4 smpx2))) ==> >>> >>> >>> >>> >>> \end{verbatim}} The user will have noted that we may obtain the same twisted cartesian product by the fibration theory. Let us define a general function {\tt loop-fbr} with a reduced simplicial set, {\em space}, as argument. This function uses the function {\tt fibration-total} that we have seen in the chapter about fibrations. Here, we see that the lisp function for the simplicial morphism, (keyword {\tt :sintr}), implements straightforwardly the canonical twisting operator which applies a simplex of $X$ to the corresponding $1$--letter word of $GX$. Note that the execution time by the fibration function is a little longer than for the direct twisted cartesian product and it requires more memory. {\footnotesize\begin{verbatim} (defun loop-fbr (space) (fibration-total (build-smmr :sorc space :trgt (loop-space space) :degr -1 :sintr #'(lambda (dmns gmsm) (absm 0 (loop3 0 gmsm 1))) :orgn `(total-fibration ,space)))) (setf fb-tt-db (loop-fbr db)) ==> [K46 Simplicial-Set] (dotimes (j 5) (print(face fb-tt-db j 4 smpx2))) >>> >>> >>> >>> >>> (time (dotimes (j 1000) (face tw-crts-pr 4 4 smpx2))) ==> ; cpu time (non-gc) 143,480 msec (00:02:23.480) user, 40 msec system ; cpu time (gc) 2,140 msec user, 40 msec system ; cpu time (total) 145,620 msec (00:02:25.620) user, 80 msec system ; real time 146,899 msec (00:02:26.899) ; space allocation: ; 16,122,082 cons cells, 11,000 symbols, 6,226,992 other bytes (time (dotimes (j 1000) (face fb-tt-db 4 4 smpx2))) ==> ; cpu time (non-gc) 215,190 msec (00:03:35.190) user, 40 msec system ; cpu time (gc) 3,630 msec user, 50 msec system ; cpu time (total) 218,820 msec (00:03:38.820) user, 90 msec system ; real time 221,946 msec (00:03:41.946) ; space allocation: ; 23,859,004 cons cells, 17,000 symbols, 10,536,128 other bytes \end{verbatim}} The four following statements show the relationship between the differentials: {\footnotesize\begin{verbatim} (setf perturb (dtau-d db)) ==> [K51 Morphism (degree -1)] (? perturb 4 smpx2) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> <-1 * >>> ------------------------------------------------------------------------------ \end{verbatim}} \newpage {\footnotesize\begin{verbatim} (? crts-pr 4 smpx2) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> <-1 * >>> <1 * >>> <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? tw-crts-pr 4 smpx2) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> <-1 * >>> <1 * >>> <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ \end{verbatim}} The same type of tests may be done with another reduced simplicial set, namely $P^3{\R}$. {\footnotesize\begin{verbatim} (setf pri3 (R-proj-space 3)) ==> [K52 Simplicial-Set] (setf tw-pri3 (twisted-crts-prdc pri3)) ==> [K74 Simplicial-Set] (basis tw-pri3) ==> :LOCALLY-EFFECTIVE (setf crt-pri3 (crts-prdc pri3 (loop-space pri3))) ==> [K69 Simplicial-Set] (setf s (crpr 0 4 0 (loop3 0 5 1))) ==> >> \end{verbatim}} \newpage {\footnotesize\begin{verbatim} (dotimes (i 5) (print (face crt-pri3 i 4 s))) ==> >>> >>> >>> >>> >>> (dotimes (i 5) (print (face tw-pri3 i 4 s))) ==> >>> >>> >>> >>> >>> (setf fb-tt-pri3 (loop-fbr pri3)) ==> [K80 Simplicial-Set] (dotimes (j 5) (print (face fb-tt-pri3 j 4 s))) >>> >>> >>> >>> >>> \end{verbatim}} Let us check now the Szczarba reduction, with the simplicial set $\bar{\Delta}$. {\footnotesize\begin{verbatim} (setf szc-reduc (szczarba db)) ==> [K107 Reduction] (pre-check-rdct szc-reduc) ==> ---done--- (setf *tc* (cmbn 2 1 (crpr 0 (code '(0 1 2)) 0 (loop3 0 (code '(5 6 7 8)) 1)))) ----------------------------------------------------------------------{CMBN 2} <1 * >>> ------------------------------------------------------------------------------ (setf *bc* (cmbn 2 1 (tnpr 0 (code '(0)) 2 (loop3 0 (code '(5 6 7 8)) 1)) 10 (tnpr 1 (code '(10 11)) 1 (loop3 0 (code '(0 1 2)) 1)) 100 (tnpr 2 (code '(0 1 2)) 0 (loop3 0 (code '(10 11)) 1)))) ----------------------------------------------------------------------{CMBN 2} <1 * >>> <10 * >>> <100 * >>> ------------------------------------------------------------------------------ (pre-check-rdct szc-reduc) ==> ---done--- (check-rdct) ==> *TC* => ----------------------------------------------------------------------{CMBN 2} <1 * >>> ------------------------------------------------------------------------------ *BC* => ----------------------------------------------------------------------{CMBN 2} <1 * >>> <10 * >>> <100 * >>> ------------------------------------------------------------------------------ Checking *TDD* = 0 Result: ----------------------------------------------------------------------{CMBN 0} ------------------------------------------------------------------------------ ....... All results null ...... Checking *HG* = 0 Result: ----------------------------------------------------------------------{CMBN 3} ------------------------------------------------------------------------------ ---done--- \end{verbatim}} \newpage \section{Exercice with the twisting cochain.} Let $B$ be a reduced simplicial set and its loop space $GB$ (a simplicial group). In the following examples, we shall use the efficient {\tt Kenzo} version of the simplicial set $\bar{\Delta}$, i.e. the simplices are input and printed under their binary form coding. \subsection {The twisting cochain.} The\index{twisting cochain} twisting cochain $t$ is the morphism $$t: aug \circ d_{\otimes t} \circ coaug$$ where, \begin{enumerate} \item $coaug$ is the morphism $$ coaug: B \rightarrow B \otimes GB,$$ $$ coaug(b) = b \otimes 1_{GB}. $$ \item $d_{\otimes t}$ is the differential morphism of the twisted tensor product $B \otimes_t GB$. \item $aug$ is the morphism $$aug: B \otimes GB \longrightarrow GB , $$ \begin{eqnarray*} aug(b_i \otimes g_j)& = & g_j, \qquad b_i \in B_0, \\ aug(b_i \otimes g_j)& = & 0, \qquad b_i \in B_k,\, k\not=0. \end{eqnarray*} \end{enumerate} We recall that, as graded modules, $B\otimes GB$ and $B \otimes_t GB$ are identical. \par First, we create $\bar{\Delta}$ and $G\bar{\Delta}$. The function {\tt twisted-tnsr-prdc} extracts the twisted tensor product $\bar{\Delta} \otimes_t G\bar{\Delta}$ from the reduction obtained by a call to the function {\tt szczarba}. {\footnotesize\begin{verbatim} (setf d (deltab)) ==> [K1 Simplicial-Set] (setf gd (loop-space d)) ==> [K6 Simplicial-Group] (setf d-twtp-gd (twisted-tnsr-prdc d)) ==> [K49 Chain-Complex] \end{verbatim}} Let us define the coaugmentation and augmentation morphisms. As usual, it is sufficient to define the algorithm on a generator. {\footnotesize\begin{verbatim} (setf coaug (build-mrph :sorc d :trgt d-twtp-gd :degr 0 :intr #'(lambda (degr gnrt) (term-cmbn degr 1 (tnpr degr gnrt 0 +null-loop+))) :strt :gnrt :orgn '(coaug. d --> d-twtp-gd))) ==> [K52 Morphism (degree 0)] (? coaug 3 15) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> ------------------------------------------------------------------------------ (? coaug (cmbn 4 1 31 1 62 1 124)) ==> ----------------------------------------------------------------------{CMBN 4} <1 * >>> <1 * >>> <1 * >>> ------------------------------------------------------------------------------ (setf aug (build-mrph :sorc d-twtp-gd :trgt gd :degr 0 :intr #'(lambda (degr tnpr) (with-tnpr (degr1 gmsm1 degr2 loop2) tnpr (if (zerop degr1) (term-cmbn degr 1 loop2) (zero-cmbn degr)))) :strt :gnrt :orgn '(aug. of d-twtp-gd))) ==> [K53 Morphism (degree 0)] (? aug (cmbn 2 9 (tnpr 0 1 2 (loop3 0 15 1)) 3 (tnpr 1 3 1 (loop3 0 7 1)))) ==> ----------------------------------------------------------------------{CMBN 2} <9 * <>> ------------------------------------------------------------------------------ \end{verbatim}} The morphism {\tt cochain} is simply a composition of morphisms. We apply it upon the simplices {\tt (0)}, {\tt (0 1 2)}, {\tt (0 1 2 3)}, ..., coded as the integers $1,7,15,\ldots$. {\footnotesize\begin{verbatim} (setf cochain (i-cmps aug (dffr d-twtp-gd) coaug)) ==> [K55 Morphism (degree -1)] (? cochain 0 1) ==> ----------------------------------------------------------------------{CMBN -1} ------------------------------------------------------------------------------ (? cochain 2 7) ==> ----------------------------------------------------------------------{CMBN 1} <1 * <>> ------------------------------------------------------------------------------ (? cochain 3 15) ==> ----------------------------------------------------------------------{CMBN 2} <1 * <>> <-1 * <>> ------------------------------------------------------------------------------ (? cochain 4 31) ==> ----------------------------------------------------------------------{CMBN 3} <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> ------------------------------------------------------------------------------ (? cochain 5 63) ==> ----------------------------------------------------------------------{CMBN 4} <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> ------------------------------------------------------------------------------ \end{verbatim}} We verify, that for a simplex in dimension $n$, the length of the resulting combination is $(n-1)!$. {\footnotesize\begin{verbatim} (length(cmbn-list *)) ==> 24 (? cochain 6 127) ==> ----------------------------------------------------------------------{CMBN 5} <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> <1 * <>> <-1 * <>> <-1 * <>> <1 * <>> ... ... ------------------------------------------------------------------------------ (length(cmbn-list *)) ==> 120 \end{verbatim}} \subsection {Expression of the differential $d_{\otimes t}$} The differential $d_{\otimes t}$ of the twisted tensor product $B \otimes_t GB$ may be expressed as the sum of the differential of the simple tensor product $B \otimes GB$ and the following morphism of degree $-1$, $$\nabla: B \otimes GB \longrightarrow B \otimes GB,$$ where $\nabla$ is the composition of the morphisms of the following sequence: $$B\otimes GB \buildrel {\Delta\otimes 1_{GB}} \over \longrightarrow (B\otimes B) \otimes GB \buildrel {assoc} \over \longrightarrow B \otimes (B \otimes GB) \buildrel {1_B \otimes (t \otimes 1_{GB})} \over \longrightarrow B \otimes (GB \otimes GB) \buildrel {1_B \otimes \varpi} \over \longrightarrow B \otimes GB.$$ In the previous formula, $\Delta$ is the coproduct in the coalgebra $B$, $\varpi$ is the product in the algebra $GB$, $1_B$ is the identity morphism in $B$ and $1_{GB}$ the identity morphism in $GB$. We need also, as in a previous example, an ``assoc'' morphism for the compound tensor product. The user will note the easiness for coding in {\tt Kenzo} such a long composition of morphisms. {\footnotesize\begin{verbatim} (setf 3-left (tnsr-prdc (tnsr-prdc d d) gd)) ==> [K56 Chain-Complex] (setf 3-right (tnsr-prdc d (tnsr-prdc d gd))) ==> [K58 Chain-Complex] (setf assoc (build-mrph :sorc 3-left :trgt 3-right :degr 0 :intr #'(lambda (degr a2-a) (with-tnpr (degra2 gnrta2 degra gnrta) a2-a (with-tnpr (degr1 gnrt1 degr2 gnrt2) gnrta2 (cmbn (+ degr1 degr2 degra) 1 (tnpr degr1 gnrt1 (+ degr2 degra) (tnpr degr2 gnrt2 degra gnrta)))))) :strt :gnrt :orgn '(assoc-double-tensor-product))) ==> [K60 Morphism (degree 0)] (setf id-d (idnt-mrph d)) ==> [K61 Morphism (degree 0)] (setf id-gd (idnt-mrph gd)) ==> [K62 Morphism (degree 0)] (setf nabla (add (dffr (tnsr-prdc d gd)) (i-cmps (tnsr-prdc id-d (aprd gd)) (tnsr-prdc id-d (tnsr-prdc cochain id-gd)) assoc (tnsr-prdc (cprd d) id-gd)))) ==> [K74 Morphism (degree -1)] \end{verbatim}} We verify that the morphism {\tt nabla} and the differential of the twisted tensor product (accessible through the symbol {\tt d-twtp-gd}) return the same results: {\footnotesize\begin{verbatim} (? (dffr d-twtp-gd) 2 (tnpr 1 3 1 (loop3 0 7 1))) ==> ----------------------------------------------------------------------{CMBN 1} <1 * >>> <-1 * >>> <1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (? nabla 2 (tnpr 1 3 1 (loop3 0 7 1))) ==> ----------------------------------------------------------------------{CMBN 1} <1 * >>> <-1 * >>> <1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (setf zero (sbtr nabla (dffr d-twtp-gd))) ==> [K75 Morphism (degree -1)] (? zero 2 (tnpr 1 3 1 (loop3 0 7 1))) ==> ----------------------------------------------------------------------{CMBN 1} ------------------------------------------------------------------------------ (? zero 5 (tnpr 3 15 2 (loop3 0 15 1))) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ \end{verbatim}} \newpage \subsection {The cup product of the twisting cochain} The cup product\index{twisting cochain!cup product} $t \sqcup t$ of the twisting cochain $t$, $$t\sqcup t: B \longrightarrow GB$$ is defined by the following composition of morphisms: $$B \buildrel {\Delta} \over \longrightarrow B \otimes B \buildrel {t \otimes t} \over \longrightarrow GB \otimes GB \buildrel {\varpi} \over \longrightarrow GB.$$ We may now verify the formula $$ d_{GB} \circ t + t \circ d_B + t\sqcup t =0,$$ where $d_B$ and $d_{GB}$ are the respective differential morphisms in $B$ and $GB$. {\footnotesize\begin{verbatim} (setf t-cup-t (i-cmps (aprd gd) (tnsr-prdc cochain cochain) (cprd d))) ==> [K78 Morphism (degree -2)] (setf dt (cmps (dffr gd) cochain)) ==> [K79 Morphism (degree -2)] (setf td (cmps cochain (dffr d))) ==> [K80 Morphism (degree -2)] (setf zero-2 (i-add dt td t-cup-t)) ==> [K82 Morphism (degree -2)] (? zero-2 3 15) ==> ----------------------------------------------------------------------{CMBN 1} ------------------------------------------------------------------------------ (? zero-2 4 31) ==> ----------------------------------------------------------------------{CMBN 2} ------------------------------------------------------------------------------ (? zero-2 5 63) ==> ----------------------------------------------------------------------{CMBN 3} ------------------------------------------------------------------------------ (? zero-2 6 127) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ \end{verbatim}} So the user has easily verified the {\em cochain condition} for the twisting cochain $t$. \newpage \section {The essential contraction} It is known that if $B$ is a reduced simplicial set, the space $B \times_\tau GB$ is contractible. So it is possible to build a reduction of this space over ${\Z}$. This reduction depends of the important contraction $$\chi_{\times\tau}: {{\cal C}_*(B) \times_\tau {\cal C}_*(GB)} \longrightarrow {{\cal C}_*(B) \times_\tau {\cal C}_*(GB)}, $$ which is a homotopy operator (degree: $+1$) satisfying the relation $$d \circ \chi_{\times\tau} + \chi_{\times\tau} \circ d =1.$$ Now, from the reduction $$ \diagram{ {{\cal C}_*(X \times_\tau GX)} & \stackrel{h}{\longrightarrow} & {}^s{{\cal C}_*(X \times_\tau GX)} \cr {\scriptstyle f} \downarrow \uparrow {\scriptstyle g} \cr {{\cal C}_*(X) \otimes_t {\cal C}_*(GX)} \cr } $$ there is also an induced contraction $$\chi_{\otimes t}: {{\cal C}_*(B) \otimes_t {\cal C}_*(GB)} \longrightarrow {{\cal C}_*(B) \otimes_t {\cal C}_*(GB)}, $$ defined by $\chi_{\otimes t}= f \circ \chi_{\times\tau} \circ g$. This implies that the twisted tensor product is also contractible over ${\Z}$. \par The two functions of {\tt Kenzo} for this construction are: \vskip 0.35cm {\parindent=0mm {\leftskip=5mm {\tt crts-contraction} {\em space} \hfill {\em [Function]} \par} {\leftskip=15mm Return the homotopy morphism corresponding to the contraction $\chi_{\times\tau}$. The lisp definition is: {\footnotesize\begin{verbatim} (defun CRTS-CONTRACTION (space &aux (twisted-crts-prdc (twisted-crts-prdc space))) (the morphism (build-mrph :sorc twisted-crts-prdc :trgt twisted-crts-prdc :degr +1 :intr (crts-contraction-intr (cmpr space) (bspn space) (face space) (cmpr twisted-crts-prdc)) :strt :gnrt :orgn `(crts-contraction ,space)))) \end{verbatim}} At execution time, the work is essentialy done by the function put in the slot {\tt :intr}. \par} {\leftskip=5mm {\tt tnpr-contraction} {\em space} \hfill {\em [Function]} \par} {\leftskip=15mm Return the induced morphism $\chi_{\otimes t}= f \circ \chi_{\times\tau} \circ g$, as shown by the lisp definition: {\footnotesize\begin{verbatim} (defun TNPR-CONTRACTION (space &aux (szczarba (szczarba space)) (f (f szczarba)) (g (g szczarba)) (crts-contraction (crts-contraction space))) (the morphism (i-cmps f crts-contraction g))) \end{verbatim}} \par} } \subsection* {Examples} Let us use again our familiar simplicial set $\bar\Delta$. First we apply the homotopy operator $\chi_{\times t}$ upon various generators. Note that the binary coding of the simplices allows normal arithmetic operators to generate them. {\footnotesize\begin{verbatim} (setf delta (deltab)) ==> [K1 Simplicial-Set] (setf chi-x (crts-contraction delta)) ==> [K28 Morphism (degree 1): K23 -> K23] (? chi-x 0 (crpr 0 1 0 +null-loop+)) ==> ----------------------------------------------------------------------{CMBN 1} ------------------------------------------------------------------------------ (? chi-x 0 (crpr 0 1 0 (loop3 0 96 1))) ==> ----------------------------------------------------------------------{CMBN 1} <-1 * >>> ------------------------------------------------------------------------------ (? chi-x 0 (crpr 0 1 0 (loop3 0 96 1 0 (+ 256 128) 1))) ==> ----------------------------------------------------------------------{CMBN 1} <-1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (? chi-x 0 (crpr 0 1 0 (loop3 0 96 1 0 (+ 256 128) 1 0 (+ 512 1024) 1))) ==> ----------------------------------------------------------------------{CMBN 1} <-1 * >>> <-1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (? chi-x 0 (crpr 0 1 0 (loop3 0 96 2))) ==> ----------------------------------------------------------------------{CMBN 1} <-1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (? chi-x 1 (crpr 0 3 0 (loop3 0 (+ 32 64 128) 1))) ==> ----------------------------------------------------------------------{CMBN 2} <1 * >>> <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-x 2 (crpr 0 7 0 (loop3 0 (+ 32 64 128 256) 1))) ==> ----------------------------------------------------------------------{CMBN 3} <-1 * >>> <1 * >>> <-1 * >>> <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-x 3 (crpr 2 7 1 (loop3 2 (+ 32 64 128) 2 4 (+ 32 64 128) -2))) ==> ----------------------------------------------------------------------{CMBN 4} <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-x 3 (crpr 2 7 4 (loop3 2 (+ 32 64 128) 2 1 (+ 32 64 128) -2))) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ (? chi-x 3 (crpr 2 7 1 (loop3 2 (+ 32 64 128) -2 4 (+ 32 64 128) 2))) ==> ----------------------------------------------------------------------{CMBN 4} <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-x 3 (crpr 2 7 4 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2))) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ (? chi-x 3 (crpr 1 7 2 (loop3 2 (+ 32 64 128) 2 4 (+ 32 64 128) -2))) ==> ----------------------------------------------------------------------{CMBN 4} <-1 * >>> ------------------------------------------------------------------------------ (? chi-x 3 (crpr 4 7 2 (loop3 2 (+ 32 64 128) 2 1 (+ 32 64 128) -2))) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ (? chi-x 3 (crpr 1 7 2 (loop3 2 (+ 32 64 128) -2 4 (+ 32 64 128) 2))) ==> ----------------------------------------------------------------------{CMBN 4} <-1 * >>> ------------------------------------------------------------------------------ (? chi-x 3 (crpr 4 7 2 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2))) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ \end{verbatim}} Then, for testing $\chi_{\otimes t}$ we use the image of all those generators by the function {\tt f} of the Brown reduction. $$ \diagram{ {{\cal C}_*(X \times_\tau GX)} & \stackrel{h}{\longrightarrow} & {}^s{{\cal C}_*(X \times_\tau GX)} \cr {\scriptstyle f} \downarrow \uparrow {\scriptstyle g} \cr {{\cal C}_*(X) \otimes_t {\cal C}_*(GX)} \cr } $$ {\footnotesize\begin{verbatim} (setf *tnpr-with-degrees* t) ==> T (setf chi-t (tnpr-contraction delta)) ==> [K54 Morphism (degree 1): K50 -> K50] (setf reduc (szczarba delta)) ==> [K52 Reduction] (setf f (f reduc)) ==> [K42 Morphism (degree 0): K23 -> K50] (? f 0 (crpr 0 1 0 +null-loop+)) ==> ----------------------------------------------------------------------{CMBN 0} <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 1} ------------------------------------------------------------------------------ (? f 0 (crpr 0 1 0 (loop3 0 96 1))) ==> ----------------------------------------------------------------------{CMBN 0} <1 * >>> ------------------------------------------------------------------------------ \end{verbatim}} \newpage {\footnotesize\begin{verbatim} (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 1} <-1 * >>> ------------------------------------------------------------------------------ (? f 0 (crpr 0 1 0 (loop3 0 96 1 0 (+ 256 128) 1))) ==> ----------------------------------------------------------------------{CMBN 0} <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 1} <-1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (? f 0 (crpr 0 1 0 (loop3 0 96 1 0 (+ 256 128) 1 0 (+ 512 1024) 1))) ==> ----------------------------------------------------------------------{CMBN 0} <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 1} <-1 * >>> <-1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (? f 0 (crpr 0 1 0 (loop3 0 96 2))) ==> ----------------------------------------------------------------------{CMBN 0} <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 1} <-1 * >>> <-1 * >>> ------------------------------------------------------------------------------ \end{verbatim}} \newpage {\footnotesize\begin{verbatim} (? f 1 (crpr 0 3 0 (loop3 0 (+ 32 64 128) 1))) ==> ----------------------------------------------------------------------{CMBN 1} <1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 2} <-1 * >>> <1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? f 2 (crpr 0 7 0 (loop3 0 (+ 32 64 128 256) 1))) ==> ----------------------------------------------------------------------{CMBN 2} <-1 * >>> <1 * >>> <1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> <-1 * >>> <-1 * >>> <1 * >>> <-1 * >>> <1 * >>> <1 * >>> <-1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (? f 3 (crpr 2 7 1 (loop3 2 (+ 32 64 128) 2 4 (+ 32 64 128) -2))) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> ------------------------------------------------------------------------------ \end{verbatim}} \newpage {\footnotesize\begin{verbatim} (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 4} <1 * >>> ------------------------------------------------------------------------------ (? f 3 (crpr 2 7 4 (loop3 2 (+ 32 64 128) 2 1 (+ 32 64 128) -2))) ==> ----------------------------------------------------------------------{CMBN 3} ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ (? f 3 (crpr 2 7 1 (loop3 2 (+ 32 64 128) -2 4 (+ 32 64 128) 2))) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 4} <1 * >>> ------------------------------------------------------------------------------ (? f 3 (crpr 2 7 4 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2))) ==> ----------------------------------------------------------------------{CMBN 3} ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ (? f 3 (crpr 1 7 2 (loop3 2 (+ 32 64 128) 2 4 (+ 32 64 128) -2))) ==> ----------------------------------------------------------------------{CMBN 3} <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ (? f 3 (crpr 4 7 2 (loop3 2 (+ 32 64 128) 2 1 (+ 32 64 128) -2))) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ (? f 3 (crpr 1 7 2 (loop3 2 (+ 32 64 128) -2 4 (+ 32 64 128) 2))) ==> ----------------------------------------------------------------------{CMBN 3} <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ (? f 3 (crpr 4 7 2 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2))) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> <-1 * >>> <1 * >>> ------------------------------------------------------------------------------ (? chi-t *) ==> ----------------------------------------------------------------------{CMBN 4} ------------------------------------------------------------------------------ \end{verbatim}} We verify now the required property of the homotopy operator $\chi_{\times\tau}$. As usual, we build by composition a morphism {\tt zero}. {\footnotesize\begin{verbatim} (setf dfr (bndr (twisted-crts-prdc delta))) ==> [K24 Morphism (degree -1)] (setf zero (i-sbtr (idnt-mrph (sorc dfr)) (cmps dfr chi-x) (cmps chi-x dfr))) ==> [K33 Morphism (degree 0)] (setf simplx (crpr 4 7 2 (loop3 2 (+ 32 64 128) -2 1 (+ 32 64 128) 2))) ==> >> (? zero 3 simplx) ----------------------------------------------------------------------{CMBN 3} ------------------------------------------------------------------------------ \end{verbatim}} Then, we do the same test for the homotopy operator $\chi_{\otimes t}$. {\footnotesize\begin{verbatim} (setf tw (twisted-tnsr-prdc d)) ==> [K55 Chain-Complex] (setf zero-2 (i-sbtr (idnt-mrph tw) (cmps tw chi-t) (cmps chi-t tw))) ==> [K64 Morphism (degree 0)] (setf simpx2 (tnpr 0 1 3 (loop3 0 (mask 5) 2 0 (* 32 (mask 5)) -1))) ==> >> (time (? zero-2 3 simpx2)) ==> ; cpu time (non-gc) 6,050 msec user, 260 msec system ; cpu time (gc) 450 msec user, 0 msec system ; cpu time (total) 6,500 msec user, 260 msec system ; real time 6,903 msec ; space allocation: ; 947,980 cons cells, 0 symbols, 71,344 other bytes ----------------------------------------------------------------------{CMBN 3} ------------------------------------------------------------------------------ \end{verbatim}} Note nevertheless that the relation is not satisfied for the base generator $*\otimes *$, namely the tensor product of both base generators. This is due to the fact that both contractions, $\chi_{\times t}$ and $\chi_{\otimes t}$, correspond to reductions over ${\Z}$ and not on $0$. {\footnotesize\begin{verbatim} (setf gnrt-0 (tnpr 0 1 0 +null-loop+)) ==> >> (? zero-2 0 gnrt-0) ==> ----------------------------------------------------------------------{CMBN 0} <1 * >>> ------------------------------------------------------------------------------ \end{verbatim}} Let us build, for instance, the reduction of the twisted tensor product over ${\Z}$ and check it. In that case, the two homomorphisms $f$ and $g$ are respectively the {\em augmentation} and {\em coaugmentation} morphisms. $$ \diagram{ {{\cal C}_*(B) \otimes_t {\cal C}_*(GB)} & \stackrel{\chi_{\otimes t}}{\longrightarrow} & {}^s{{\cal C}_*(B) \otimes_t {\cal C}_*(GB)} \cr {\scriptstyle aug} \downarrow \uparrow {\scriptstyle coaug} \cr {{\cal C}_*({\Z})} \cr } $$ We recall that, the unit chain complex corresponding to ${\Z}$ is built by the function {\tt z-chcm}. The unique generator in degree $0$ is {\tt :z-gnrt}. {\footnotesize\begin{verbatim} (setf aug (build-mrph :sorc tw :trgt (z-chcm) :degr 0 :intr #'(lambda (degr gnrt) (if (zerop degr) (term-cmbn 0 1 :z-gnrt) (zero-cmbn degr))) :strt :gnrt :orgn '(aug tw))) ==> [K67 Cohomology-Class (degree 0)] (setf coaug (build-mrph :sorc (z-chcm) :trgt tw :degr 0 :intr #'(lambda (degr gnrt) (if (zerop degr) (term-cmbn 0 1 (tnpr 0 1 0 +null-loop+)) (zero-cmbn degr))) :strt :gnrt :orgn '(coaug tw))) ==> [K68 Morphism (degree 0)] (setf rdct (build-rdct :f aug :g coaug :h Chi-t :orgn '(reduction-tw-Z))) ==> [K69 Reduction] (pre-check-rdct rdct) ==> ---done--- (setf *tc* (cmbn 3 1 (tnpr 1 3 2 (loop3 0 15 2)))) ==> ----------------------------------------------------------------------{CMBN 3} <1 * >>> ------------------------------------------------------------------------------ (setf *bc* (cmbn 0 1 :z-gnrt)) ==> ----------------------------------------------------------------------{CMBN 0} <1 * Z-GNRT> ------------------------------------------------------------------------------ (check-rdct) ==> *TC* => ----------------------------------------------------------------------{CMBN 3} <1 * >>> ------------------------------------------------------------------------------ *BC* => ----------------------------------------------------------------------{CMBN 0} <1 * Z-GNRT> ------------------------------------------------------------------------------ Checking *TDD* = 0 Result: ----------------------------------------------------------------------{CMBN 1} ------------------------------------------------------------------------------ ....... All results null ...... Checking *HG* = 0 Result: ----------------------------------------------------------------------{CMBN 1} ------------------------------------------------------------------------------ \end{verbatim}} \newpage \section {An unproved property of the algebraic Kan contraction} Since the early version of the software (1990), and through a host of examples, an amazing algebraic property of the Kan contraction $\chi_{\otimes t}$ has been experimentally discovered. Many computations have been done of $\chi_{\otimes t}(b \otimes g)$, for various choices of $b \otimes g$ and in all these cases, as soon as $degree(b) > 0$, then the result is null. In other words, $\chi_{\otimes t}$ {\em is null outside the base fiber.} Up to now, no actual proof of this result has yet been given. \par We show that, using the ``soft'' version of $\bar{\Delta}$. {\footnotesize\begin{verbatim} (setf db (soft-deltab)) ==> [K1 Simplicial-Set] (setf tt (tnpr-contraction db)) ==> [K54 Morphism (degree 1)] (setf gnrt1 (tnpr 3 (code '(0 1 2 3 4)) 4 (loop3 0 (code '(0 1 2 3 4 5)) 2))) ==> >> (? tt 7 gnrt1) ==> ----------------------------------------------------------------------{CMBN 8} ------------------------------------------------------------------------------ (setf gnrt2 (tnpr 4 (code '(2 4 6 8 10 12)) 5 (loop3 0 (code '(1 3 5 7 9 11 13)) 5))) ==> >> (? tt 9 gnrt2) ==> ----------------------------------------------------------------------{CMBN 10} ------------------------------------------------------------------------------ \end{verbatim}} \newpage But if $degree(b) = 0$, then the result is non--null in general. {\footnotesize\begin{verbatim} (? tt 2 (tnpr 0 (code '(0)) 2 (loop3 0 (code '(0 1 2 3)) 1))) ==> ----------------------------------------------------------------------{CMBN 3} <-1 * >>> <1 * >>> <1 * >>> <-1 * >>> <-1 * >>> ------------------------------------------------------------------------------ (? tt 4 (tnpr 0 (code '(0)) 4 (loop3 0 (code '(1 2 3 4 5 6)) 3))) ==> ----------------------------------------------------------------------{CMBN 5} <1 * >>> <1 * >>> ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ------------------------------------------------------------------------------ (length *) ==> 537 \end{verbatim}} \subsection* {Lisp file concerned in this chapter} {\tt ls-twisted-products.lisp}.