kenzo/doc/doc_src/aldoc.tex
2015-07-01 22:46:17 +01:00

551 lines
24 KiB
TeX

\chapter{Algebras and Bars}
\section{Algebra}
An algebra is a pair $(A, \varpi)$ where
\begin{enumerate}
\item $A$ is a chain complex.
\item $\varpi$ (the {\em product}) is a chain complex morphism
$$\varpi: A \otimes A \rightarrow A.$$
\end{enumerate}
These components must satisfy the usual structural properties of the algebras.
\subsection {Implementation of an algebra}
An algebra is represented as an instance\index{class!{\tt ALGEBRA}}
of the CLOS class {\tt ALGEBRA}, subclass
of the {\tt CHAIN COMPLEX} class. The definition of this new class is simply:
{\footnotesize\begin{verbatim}
(DEFCLASS ALGEBRA (chain-complex)
((aprd :type morphism :initarg :aprd :reader aprd1))) ;; product
\end{verbatim}}
So, this new class inherits the slots of the {\tt CHAIN COMPLEX} class and has a slot
of its own, namely {\tt aprd}, an object of type {\tt MORPHISM} representing the product. Like in a coalgebra,
the user will note the important following fact that, {\bf once an algebra has been defined, one may use on it any
function or method applicable to a chain complex}.
\subsection {The function build-algb}
To\index{function!{\tt build-algb}} facilitate the construction of instances of the {\tt ALGEBRA} class,
the software {\bf Kenzo} provides the function {\tt build-algb}:
\vskip 0.40cm
{\tt build-algb :cmpr} {\em cmpr} {\tt :basis} {\em basis} {\tt :bsgn} {\em bsgn} {\tt :intr-dffr} {\em intr-dffr}\par
\hspace*{22.5mm}{\tt :dffr-strt} {\em dffr-strt} {\tt :intr-aprd} {\em intr-aprd} \par
\hspace*{22.5mm}{\tt :aprd-strt} {\em aprd-strt} {\tt :orgn} {\em orgn}
\vskip 0.40cm
defined with keyword parameters. The returned value is an instance of type {\tt ALGEBRA}.
The keyword arguments are:
\begin{itemize}
\item[--] {\em cmpr}, a comparison function for generators.
\item[--] {\em basis}, the basis function for the underlying chain complex.
\item[--] {\em bsgn}, the base point, a generator of any type.
\item[--] {\em intr-dffr}, the differential lisp function for the chain complex.
\item[--] {\em dffr-strt}, the strategy ({\tt :gnrt} or {\tt :cmbn}) for the differential.
\item[--] {\em intr-aprd}, the lisp function for the product of the algebra.
\item[--] {\em aprd-strt}, the strategy ({\tt :gnrt} or {\tt :cmbn}) for the coproduct.
\item[--] {\em orgn}, an adequate comment list.
\end{itemize}
The function {\tt build-algb} calls the function {\tt build-chcm} and with the help of the function
{\tt build-mrph} builds the product morphism of degree $0$ to settle the
slot {\tt 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 {\tt idnm}) is assigned to this Kenzo object
and the {\tt ALGEBRA} instance is pushed onto the list {\tt *algb-list*}.
The associated printing method prints a string like
{\tt [K{\em n} Algebra]}.
\newpage
\subsection {Miscellaneous functions and macros for algebras}
{\parindent=0mm
{\leftskip=5mm
{\tt cat-init} \hfill {\em [Function]} \par}
{\leftskip=15mm
Clear among others, the list {\tt *algb-list*}, list of user created algebras and reset
the global counter to $1$. \par}
{\leftskip=5mm
{\tt algb} {\em n}\hfill {\em [Function]} \par}
{\leftskip=15mm
Retrieve in the list {\tt *algb-list*} the algebra instance whose identification is $n$.
If it does not exist, return {\tt NIL}. \par}
{\leftskip=5mm
{\tt aprd} {\em algb} {\tt \&rest} \hfill {\em [Macro]} \par}
{\leftskip=15mm
Versatile macro relative to the product of an algebra. The first argument is an {\tt ALGEBRA}
instance. With only one argument, this macro returns the product morphism of the algebra.
With more arguments, it applies the product morphism on a combination ({\tt (aprd {\em algb cmbn})})
or on a pair {\em degree, tensor-product} ({\tt (aprd {\em algb degr tensor-product})}). \par}
{\leftskip=5mm
{\tt change-chcm-to-algb} {\em chcm} {\tt :intr-aprd} {\em intr-aprd} {\tt :aprd-strt} {\em aprd-strt} \par
\hspace* {10mm}{\tt :orgn} {\em orgn}\hfill {\em [Function]} \par}
{\leftskip=15mm
Build an algebra instance from the already created chain complex {\em chcm}. The user must give via key
parameters a lisp function for the product, its strategy and a comment list. \par}
}
\section {Hopf Algebra}
In {\bf Kenzo}, a Hopf Algebra is an instance\index{class!{\tt HOPF-ALGEBRA}}
of the class {\tt HOPF-ALGEBRA}, the definition of which being simply:
{\footnotesize\begin{verbatim}
(DEFCLASS HOPF-ALGEBRA (coalgebra algebra)
())
\end{verbatim}}
So, this class (multi--) inherits the slots of the {\tt COALGEBRA} and {\tt ALGEBRA} classes.
\par
The associated printing method prints a string like
{\tt [K{\em n} Hopf-Algebra]}, and the function {\tt hopf} may be used to retrieve the
Hopf instance, in the list {\tt *hopf-list*}.
\subsection {Example of algebra}
We shall see later important examples of algebras. Let us content ourself for the moment
to define the trivial algebra on a given chain complex {\em having only one generator in degree $0$}.
If this chain complex {\em chcm} already exists, we
use simply the function {\tt change-chcm-to-algb} and we have to provide for the keyword {\tt :intr-aprd},
a lisp function for the product morphism. We recall that the argument of the product in the algebra is a 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.
{\footnotesize\begin{verbatim}
(defun trivial-algebra (chcm)
(change-chcm-to-algb
chcm
:intr-aprd #'(lambda (degr tnpr)
(with-tnpr (degr1 gnrt1 degr2 gnrt2) tnpr
(if (zerop degr1)
(cmbn degr2 1 gnrt2)
(if (zerop degr2)
(cmbn degr1 1 gnrt1)
(zero-cmbn (+ degr1 degr2))))))
:aprd-strt :gnrt
:orgn `(trivial-algebra ,chcm)))
\end{verbatim}}
A good example of a chain complex to be given as argument to the previous function,
is the simplicial set {\tt smp-deltab2} that we used as
simple example in the coalgebra chapter:
{\footnotesize\begin{verbatim}
(setf smp-deltab2
(build-smst
:cmpr #'(lambda(gsm1 gsm2)
(if(rest gsm1) (l-cmpr gsm1 gsm2) :equal))
:basis :locally-effective
:bspn '(0)
:face #'(lambda (i dmn gsm)
(case dmn
(0 (error "No face in dimension 0"))
(1 (error "No non-degenerate simplex in dimension 1"))
(2 (absm 1 '(0)))
(otherwise (absm 0 (append (subseq gsm 0 i)
(subseq gsm (1+ i))))) ))
:orgn '(simple-deltab2)))
[K1 Simplicial-Set]
(trivial-algebra smp-deltab2) ==>
[K1 Algebra]
\end{verbatim}}
Note that now {\tt smp-deltab2} is of type {\tt ALGEBRA} and has kept
its Kenzo numbering.
{\footnotesize\begin{verbatim}
smp-deltab2 ==>
[K1 Algebra]
(inspect smp-deltab2) ==>
ALGEBRA @ #x3065ea = [K1 Algebra]
0 Class --------> #<STANDARD-CLASS ALGEBRA>
1 ORGN ---------> (SIMPLE-DELTAB2), a proper list with 1 element
2 IDNM ---------> fixnum 1 [#x00000004]
3 EFHM ---------> The symbol :--UNBOUND--
4 GRMD ---------> [K1 Algebra]
5 DFFR ---------> [K2 Morphism (degree -1)]
6 BSGN ---------> (0), a proper list with 1 element
7 BASIS --------> The symbol :LOCALLY-EFFECTIVE
8 CMPR ---------> #<Interpreted Function (unnamed) @ #x306652>
9 APRD ---------> [K6 Morphism (degree 0)]
\end{verbatim}}
Let us test now the product in this trivial algebra:
{\footnotesize\begin{verbatim}
(aprd smp-deltab2 3 (tnpr 0 '(0) 3 '(1 2 3 4))) ==>
----------------------------------------------------------------------{CMBN 3}
<1 * (1 2 3 4)>
------------------------------------------------------------------------------
(aprd smp-deltab2 3 (tnpr 3 '(1 2 3 4) 0 '(0)))
----------------------------------------------------------------------{CMBN 3}
<1 * (1 2 3 4)>
------------------------------------------------------------------------------
(aprd smp-deltab2 5 (tnpr 2 '(0 1 2) 3 '(6 7 8 9))) ==>
----------------------------------------------------------------------{CMBN 5}
------------------------------------------------------------------------------
\end{verbatim}}
\section {The Bar construction}
Let $\cal A$ be an associative algebra, assumed connected and ${\cal A}_0 \simeq {\Z}$.
Furthermore let us suppose that ${\cal A}$ is a free ${\Z}$--module. Then it is possible
to define a chain complex, $Bar^{\cal A}(\Z, \Z)$ -- simply denoted here by $Bar({\cal A})$ --
whose $n$-th component is the free ${\Z}$--module generated by the ``bars'':
$$ [Bar({\cal A})]_n = \{ [g_1 \mid g_2 \mid \ldots \mid g_k] \}, \quad \sum_{j=1}^{k} [deg(g_j)+1] =n. $$
The object\index{bar object} noted $[g_1 \mid g_2 \mid \ldots \mid g_k]$
with $\sum_{j=1}^{k} [deg(g_j)+1] =n$, is tra\-di\-ti\-o\-nal\-ly
called a {\em bar} and is in fact, an element of the $n$--th iterated suspension of
${\cal A}^{\otimes n}$. The integer $n$ is the {\em total degree}. The structure of
the bar of the algebra ${\cal A}$ is recalled in the following figure, where $\bar{\cal A}$
is ${\cal A}$ without its component of degree $0$. In the vertical sense, we have the {\em tensorial degree},
whereas in the horizontal one, we have the {\em simplicial degree}. The {\em total degree} $n$ is the
sum of both degrees.
$$\begin{array}{|ccccc}
\vdots & \vdots & \vdots &\vdots & \vdots \\
0 & \bar{\cal A}_3 & (\bar{\cal A} \otimes \bar{\cal A})_3 &
(\bar{\cal A}\otimes \bar{\cal A}\otimes\bar{\cal A})_3 & \cdots \\
0 & \bar{\cal A}_2 & (\bar{\cal A}\otimes\bar{\cal A})_2 & 0 & \cdots \\
0 & \bar{\cal A}_1 & 0 & 0 & \cdots \\
{\Z} & 0 & 0 & 0 & \cdots \\ \hline
& & & & \\
\bar{\cal A}^{\otimes 0} & \bar{\cal A}^{\otimes 1} & \bar{\cal A}^{\otimes 2} &
\bar{\cal A}^{\otimes 3} & \cdots
\end{array} $$
\subsection {Representation of a bar object}
An elementary bar object\index{bar object!representation}
-- not to be confused with the chain complex $Bar({\cal A})$ --
is represented in {\tt Kenzo} by a lisp object of the form:
\begin{center} {\tt (:ABAR ($i_1\, . \, a_1$) \ldots ($i_k\, . \, a_k$))} \end{center}
where the $i_j$ are the degrees {\bf in the bar chain complex} of the generators $a_j$.
In the original algebra $\cal A$, the generators $a_j$ had the degree $i_j-1$.
The corresponding type is {\tt ABAR}.
The function building such an object is also called {\tt abar}
\vskip 0.35cm
{\parindent=0mm
{\leftskip=5mm
{\tt abar} {\em degr1 gnr1 degr2 gnr2 ... degrk gnrk}\hfill {\em [Function]} \par}
{\leftskip=15mm
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 {\tt +null-abar+}. The function
{\tt abar} accepts also as unique argument a list of the form
{\em {\tt (}degr1 gnr1 degr2 gnr2 ... degrk gnrk{\tt )}}. \par}
{\leftskip=5mm
{\tt abar-p} {\em object}\hfill {\em [Function]} \par}
{\leftskip=15mm
Test if {\em object} is an elementary bar object. \par}
}
\vskip 0.35cm
The associated printing method prints the object under the form:
\begin{center}
{\tt <<Abar [$i_1\quad a_1$] ... [$i_k\quad a_k$] >>}
\end{center}
\subsection* {Examples}
These simple commands show the two different ways to create bar objects
from elements of an algebra (or a chain complex).
{\footnotesize\begin{verbatim}
(abar 2 'a 3 'b 5 'c) ==>
<<Abar[2 A][3 B][5 C]>>
(abar '(2 a 3 b 5 c)) ==>
<<Abar[2 A][3 B][5 C]>>
(abar) ==>
<<Abar>>
\end{verbatim}}
\subsection {Definition of the chain complex Bar}
The\index{chain complex!bar} definition of the differential\index{bar!differential} in the bar chain complex,
will be done in three steps. This is better understood,
if we consider the following diagram.
$$\diagram{
% & & \vdots & & \vdots \cr
& & \downarrow & & \downarrow \cr
\cdots & \leftarrow & ({\bar{\cal A}}_*^{\otimes p})_q & \buildrel {d_h} \over \longleftarrow
& ({\bar{\cal A}}_*^{\otimes {p+1}})_q & \leftarrow & \cdots \cr
% & & \vfl {\displaystyle {d_v}}{}
% & & \vfl {\displaystyle {d_v}}{} \cr
& & \downarrow {\scriptstyle d}_v & & \downarrow {\scriptstyle d}_v \cr
\cdots & \leftarrow &({\bar{\cal A}}_*^{\otimes p})_{q-1} & \buildrel {d_h} \over \longleftarrow
& ({\bar{\cal A}}_*^{\otimes {p+1}})_{q-1} & \leftarrow & \cdots \cr
& & \downarrow & & \downarrow \cr
% & & \vdots & & \vdots \cr
}$$
\begin{itemize}
\item A chain complex called {\tt vertical-bar} is defined with the {\em vertical differential} $d_v$.
In this case, only the underlying chain complex structure is used.
\item A horizontal differential $d_h$ is defined. This uses the product structure.
\item The final chain complex {\tt bar} is created with differential $d_v+d_h$.
\end{itemize}
\subsubsection {Definition of the vertical bar}
To\index{bar!vertical} define the vertical bar chain complex from the chain complex ${\cal A}$, the
following functions are provided:
\vskip 0.45cm
{\parindent=0mm
{\leftskip=5mm
{\tt bar-cmpr} {\em cmpr}\hfill {\em [Function]} \par}
{\leftskip=15mm
From the comparison function {\em cmpr}, build a comparison function for objects
of type {\tt abar}. \par}
{\leftskip=5mm
{\tt bar-basis} {\em basis}\hfill {\em [Function]} \par}
{\leftskip=15mm
From the function {\em 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 {\tt :locally-effective}. \par}
{\leftskip=5mm
{\tt bar-intr-vrtc-dffr} {\em dffr}\hfill {\em [Function]} \par}
{\leftskip=15mm
From the {\tt lisp} function {\em dffr} of a chain complex ${\cal A}$, build a
lisp function for the differential of the vertical bar chain complex, according to the formula:
$$d_v [a_1 \mid \cdots \mid a_n]=
-\sum_{i=1}^n{(-1)^{\sum_{j=1}^{i-1}{\mid a_j \mid}}}
{[a_1 \mid \cdots \mid a_{i-1} \mid {\bf da_i} \mid a_{i+1} \mid \cdots \mid a_n]},$$
where $da_i$ is the differential of the generator $a_i$ in the original chain complex (function {\em dffr})
and $\mid a_i \mid$ is the degree of the generator $a_i$ {\em in the bar chain complex}.
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. \par}
{\leftskip=5mm
{\tt vrtc-bar} {\em chcm}\hfill {\em [Method]} \par}
{\leftskip=15mm
Build the vertical bar chain complex from the underlying chain complex {\em chcm}. This is simply done by the
call to {\tt build-chcm}:
{\footnotesize\begin{verbatim}
(build-chcm
:cmpr (bar-cmpr cmpr)
:basis (bar-basis basis)
:bsgn +null-abar+
:intr-dffr (bar-intr-vrtc-dffr dffr)
:strt :gnrt
:orgn `(vrtc-bar ,chcm))
\end{verbatim}}
where, {\em cmpr}, {\em basis} and {\em dffr} are extracted from the chain complex {\em chcm}. Note that
the base generator is the null bar object. \par}
}
\subsection* {Examples}
First, let us test the functions {\tt bar-cmpr} and {\tt bar-basis}. With the first one, applied
to the elementary comparison function {\tt s-cmpr}, we create a comparison function suitable
for algebras where the generators are symbols.
{\footnotesize\begin{verbatim}
(setf cmpr-for-bar (bar-cmpr #'s-cmpr))
(funcall cmpr-for-bar (abar)(abar)) ==>
:EQUAL
(funcall cmpr-for-bar (abar 3 'a 7 'q) (abar)) ==>
:GREATER
(funcall cmpr-for-bar (abar '(1 x 2 y 3 z) )(abar 1 'x 2 'y 3 'z)) ==>
:EQUAL
\end{verbatim}}
Let us suppose now that the function {\tt simple-basis} is the basis function for a certain
algebra (chain complex): in degree $i$, the basis is only the list $(a_i)$.
{\footnotesize\begin{verbatim}
(setf simple-basis #'(lambda(degr)
(list (intern(format nil "A~D" degr)))))
(funcall simple-basis 5) ==>
(A5)
\end{verbatim}}
The function {\tt bar-basis} creates the function for the basis of the cor\-res\-pon\-ding 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.
{\footnotesize\begin{verbatim}
(setf basis-for-bar (bar-basis simple-basis))
(dotimes (i 7)
(format t "~%~D ~A" i (funcall basis-for-bar i))) ==>
0 (<<Abar>>)
1 NIL
2 (<<Abar[2 A1]>>)
3 (<<Abar[3 A2]>>)
4 (<<Abar[4 A3]>> <<Abar[2 A1][2 A1]>>)
5 (<<Abar[5 A4]>> <<Abar[2 A1][3 A2]>> <<Abar[3 A2][2 A1]>>)
6 (<<Abar[6 A5]>> <<Abar[2 A1][4 A3]>> <<Abar[3 A2][3 A2]>>
<<Abar[4 A3][2 A1]>> <<Abar[2 A1][2 A1][2 A1]>>)
\end{verbatim}}
To test the vertical differential, let us take the simplicial set {\tt smp-deltab2} which is also a chain complex.
We may use it for testing the function {\tt 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 {\tt smp-deltab2} are represented by lists of increasing $n+1$ integers. So, in the abar objects,
the degree of such elements are $n+1$.
{\footnotesize\begin{verbatim}
(setf vrt-bar (vrtc-bar smp-deltab2)) ==>
[K6 Chain-Complex]
(? vrt-bar 9 (abar 4 '(0 1 2 3) 5 '(4 5 6 7 8))) ==>
----------------------------------------------------------------------{CMBN 8}
<-1 * <<Abar[3 (0 1 2)][5 (4 5 6 7 8)]>>>
<1 * <<Abar[3 (0 1 3)][5 (4 5 6 7 8)]>>>
<-1 * <<Abar[3 (0 2 3)][5 (4 5 6 7 8)]>>>
<1 * <<Abar[3 (1 2 3)][5 (4 5 6 7 8)]>>>
<-1 * <<Abar[4 (0 1 2 3)][4 (4 5 6 7)]>>>
<1 * <<Abar[4 (0 1 2 3)][4 (4 5 6 8)]>>>
<-1 * <<Abar[4 (0 1 2 3)][4 (4 5 7 8)]>>>
<1 * <<Abar[4 (0 1 2 3)][4 (4 6 7 8)]>>>
<-1 * <<Abar[4 (0 1 2 3)][4 (5 6 7 8)]>>>
------------------------------------------------------------------------------
(? vrt-bar *) ==>
----------------------------------------------------------------------{CMBN 7}
------------------------------------------------------------------------------
\end{verbatim}}
\subsubsection {Definition of the horizontal differential}
So\index{differential!horizontal in bar} far, the algebra structure has not been used
but now it will be the main ingredient.
The canonical ``horizontal'' differential $d_h$ is defined as follows:
$$d_h:({\bar{\cal A}}_*^{\otimes p})_q \longrightarrow ({\bar{\cal A}}_*^{\otimes {p-1}})_q,$$
$$d_h [a_1 \mid \cdots \mid a_k] = \sum_{i=2}^n{(-1)^{\sum_{j=1}^{i-1}{\mid a_j \mid}}}
[a_1 \mid \cdots \mid a_{i-2} \mid {\bf a_{i-1}a_i} \mid a_{i+1} \mid \cdots \mid a_k]$$
where the product in the algebra is noted simply by the concatenation and $\mid a_i \mid$
is the degree of $a_i$ in $Bar({\cal A})$.
In {\tt Kenzo}, two functions are designed for building the horizontal differential:
\vskip 0.45cm
{\parindent=0mm
{\leftskip=5mm
{\tt bar-intr-hrzn-dffr} {\em aprd}\hfill {\em [Function]} \par}
{\leftskip=15mm
From the product morphism {\em aprd}, build the lisp function with 2 arguments:
a degree and an {\tt abar} object (i.e. a generator) realizing the algorithm for $d_h$. \par}
{\leftskip=5mm
{\tt bar-hrzn-dffr} {\em algb}\hfill {\em [Function]} \par}
{\leftskip=15mm
Build the horizontal differential morphism, using the slot pro\-duct {\em aprd} of
the algebra {\em algb} and the previous function.
Note that when called, this function creates, if not already created,
the vertical bar chain complex on {\em algb}:
{\footnotesize\begin{verbatim}
(build-mrph
:sorc (vrtc-bar algb)
:trgt (vrtc-bar algb)
:degr -1
:intr (bar-intr-hrzn-dffr aprd)
:strt :gnrt
:orgn `(bar-hrzn-dffr ,algb))
\end{verbatim}}
\par}}
\subsubsection {Final definition of the bar of an algebra}
To define completely the bar chain complex\index{bar!of an algebra}, 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 {\tt build-chcm} with adequate arguments.
\vskip 0.45cm
{\parindent=0mm
{\leftskip=5mm
{\tt bar-intr-dffr} {\em vrtc-dffr hrzn-dffr}\hfill {\em [Function]} \par}
{\leftskip=15mm
Define the lisp function for the differential $d_v+d_h$ from the two morphisms
{\em vrtc-dffr} and {\em hrzn-dffr}. For efficiency reasons, the implementor
has chosen to define this new function rather than to use simply
the addition of two morphisms.\par}
{\leftskip=5mm
{\tt bar} {\em algebra}\hfill {\em [Method]} \par}
{\leftskip=15mm
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 {\tt :intr-dffr}
and {\tt :orgn} slots, as shown in the following definition: \par}
}
{\footnotesize\begin{verbatim}
(defmethod BAR ((algebra algebra))
(let ((vrtc-bar (vrtc-bar algebra))
(bar-hrzn-dffr (bar-hrzn-dffr algebra)))
(declare (type chain-complex vrtc-abr hrzn-bar))
(the chain-complex
(build-chcm
:cmpr (cmpr vrtc-bar)
:basis (basis vrtc-bar)
:bsgn +null-abar+
:intr-dffr (bar-intr-dffr (dffr vrtc-bar)
bar-hrzn-dffr)
:strt :gnrt
:orgn `(add ,vrtc-bar ,bar-hrzn-dffr)))))
\end{verbatim}}
We postpone the examples for the bar of an algebra, up to the chapter on
simplicial groups where we shall build interesting examples of algebras.
\newpage
\section {Other functions for the bar construction}
The\index{functor!vertical bar} vertical bar construction is {\em natural}
and therefore defines a functor.
Consequently, the {\tt Kenzo} program contains the following methods.
\vskip 0.45cm
{\parindent=0mm
{\leftskip=5mm
{\tt vrtc-bar} {\em mrph}\hfill {\em [Method]} \par}
{\leftskip=15mm
From the morphism {\em mrph}, build a new morphism between the vertical-bar of the source
of {\em mrph} and the vertical bar of the target of {\em mrph}, the morphism itself being
induced in a natural way by the underlying morphism. \par}
{\leftskip=5mm
{\tt vrtc-bar} {\em rdct}\hfill {\em [Method]} \par}
{\leftskip=15mm
From the reduction {\em 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 {\em rdct}. Nevertheless, the source and target
of the new homotopy are the vertical bar of the underlying homotopy. \par}
{\leftskip=5mm
{\tt vrtc-bar} {\em hmeq}\hfill {\em [Method]} \par}
{\leftskip=15mm
Build a homotopy equivalence by applying the vertical bar cons\-truc\-ti\-on
to the left and right reductions of the homotopy equivalence {\em hmeq}. \par}
{\leftskip=5mm
{\tt bar} {\em hmeq}\hfill {\em [Method]} \par}
{\leftskip=15mm
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 {\em hmeq} is an {\bf algebra}. Then the vertical bar
construction is applied to {\em hmeq} and the horizontal differential of the left bottom chain complex
is propagated upon the new homotopy equivalence with the help of the method {\tt 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 {\em hmeq} is a trivial homotopy equivalence, this function returns a trivial one,
built on the bar of the left bottom chain complex of {\em hmeq}. \par}
}
\subsection* {Lisp files concerned in this chapter}
{\tt algebras.lisp}, {\tt bar.lisp}.
\par
[{\tt classes.lisp}, {\tt macros.lisp}, {\tt various.lisp}].