Fibered Biset Functors\footnote{MR Subject Classification 19A22, 20C15, 20C20
\small Robert Boltje\thanks{Research supported by the NSF
DMS-0200592
The theory of biset functors, introduced by Serge Bouc, gives a unified treatment of operations in representation theory that are induced by permutation bimodules. In this paper, by considering fibered bisets, we introduce and describe the basic theory of fibered biset functors which is a natural framework for operations induced by monomial bimodules. The main result of this paper is the classification of simple fibered biset functors.
BCI.tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%   Boltje, �oskun: Fibered Biset Functors.
%
%   Version sent to 
%   ---Advances in Mathematics, Dec. 4, 2016
%   --- ArXiv, Dec 4, 2016
%
%





\documentclass[12pt]{article}

\input diagram.tex
%\input reflist.tex

%\usepackage{diagram}
\usepackage{amsmath} % eg. for \begin{equation}
%\usepackage{amscd}
\usepackage[mathscr]{eucal}
\usepackage{amssymb} % eg. for \leqslant
\usepackage{theorem}
%\usepackage{rotating}

\topmargin=-1cm
\textheight=22cm
\oddsidemargin=0cm
\textwidth=16cm

%%%%%%%%%%%%%%%%%%%% THEOREM- UND GLEICHUNGSDEFINITIONEN %%%%%%%%%%%%%

\theoremstyle{change}  % puts numbers IN FRONT of "Theorem"
\newtheorem{theorem}{Theorem}[section] % defines environment "Theorem".
                                       % puts number "2.5" in front of
                                       % "Theorem", if counter
                                       %  "theorem"  has value 5 and
                                       %  counter "mysection" has value 2.
      % When counter "mysection" increases with "stepcounter"-command,
      % then counter "theorem" is automatically reset.
\newtheorem{lemma}[theorem]{Lemma}  % defines environment "Lemma", that
                                    % is numbered in the same way as the
                                    % environment theorem.
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{corollary}[theorem]{Corollary}
\theorembodyfont{\rmfamily}  % has the effect that the content of Remark,
                             % Example, and Examples is set in
                             % "\rmfamily".
\newtheorem{remark}[theorem]{Remark}
\newtheorem{example}[theorem]{Example}
\newtheorem{examples}[theorem]{Examples}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{notation}[theorem]{Notation}
\newtheorem{nothing}[theorem]{} % empty Theoremumgebung.
\newtheorem{questions}[theorem]{Questions}
\newtheorem{hypothesis}[theorem]{Hypothesis}

\newenvironment{proof}{\noindent{\bf Proof}\ }{\qed\bigskip}

%\newcounter{equation}[theorem]
      % The new environment has the same effect as the old one except
      % for creating the label (2.5.c) if it is the third equation in
      % the environment "Theorem 2.5".
%\renewcommand{\theequation}{\thetheorem.{\rm \alph{equation}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%% MACROS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\renewcommand{\le}{\leqslant} % needs amssymb-Paket
\renewcommand{\ge}{\geqslant}

%\newcommand{\mylabel}[1]{\label{#1}\marginpar{#1}}
\newcommand{\mylabel}[1]{\label{#1}}

\newcommand{\abar}{\bar{a}}
\newcommand{\alphabar}{\bar{\alpha}}
\newcommand{\Aut}{\mathrm{Aut}}
%\newcommand{\radd}[1]{\catfont{add}_{#1}}
\newcommand{\bbar}{\bar{b}}
\newcommand{\Bbar}{\bar{B}}
\newcommand{\Bbark}{\Bbar_k}
\newcommand{\BbarkG}{\Bbar_k^{|G|}}
\newcommand{\BbarkH}{\Bbar_k^{|H|}}
\newcommand{\Bbarkn}{\Bbar_k^n}
\newcommand{\Bksm}{B_k^<}
\newcommand{\BksmG}{B_k^{<|G|}}
\newcommand{\BksmH}{B_k^{<|H|}}
\newcommand{\Bksmn}{B_k^{<n}}
\newcommand{\betabar}{\bar{\beta}}
%\newcommand{\calB}{\mathcal{B}}
\newcommand{\calC}{\mathcal{C}}
\newcommand{\calCkA}{\calC_k^A}                       
\newcommand{\calE}{\mathcal{E}}
\newcommand{\calF}{\mathcal{F}}
\newcommand{\calFkA}{\calF_k^A}
\newcommand{\calH}{\mathcal{H}}
\newcommand{\calI}{\mathcal{I}}
\newcommand{\calK}{\mathcal{K}}
\newcommand{\calM}{\mathcal{M}}
\newcommand{\calMc}{\calM^c}
\newcommand{\calMG}{\mathcalM_G}
\newcommand{\calMred}{\calM^{\mathrm{red}}}
\newcommand{\calP}{\mathcal{P}}
\newcommand{\calPkA}{\calP_k^A}                               
\newcommand{\calPbarkA}{\bar{\calP}_k^A}                    
\newcommand{\calR}{\mathcal{R}}
\newcommand{\calRtilde}{\tilde{\calR}}
\newcommand{\calS}{\mathcal{S}}
\newcommand{\calSbar}{\bar{\cal{S}}}
\newcommand{\calStilde}{\tilde{\calS}}
\newcommand{\calSkA}{\calS_k^A}                                      
\newcommand{\calSbarkA}{\bar{\calS}_k^A}                        
%\newcommand{\calT}{\mathcal{T}}
\newcommand{\can}{\mathrm{can}}
\newcommand{\catfont}{\mathsf}
\newcommand{\cbar}{\bar{c}}
\newcommand{\CC}{\mathbb{C}}
\newcommand{\cdotG}{\mathop{\cdot}\limits_{G}}
\newcommand{\cdotH}{\mathop{\cdot}\limits_{H}}
\newcommand{\cdotHj}{\mathop{\cdot}\limits_{H_j}}
\newcommand{\cdotK}{\mathop{\cdot}\limits_{K}}
\newcommand{\Def}{\mathrm{Def}}
\newcommand{\Del}{\mathrm{Del}}
\newcommand{\dia}{\mathrm{diag}}
\newcommand{\ebar}{\bar{e}}
\newcommand{\Ebar}{\bar{E}}
\newcommand{\End}{\mathrm{End}}
\newcommand{\etabar}{\bar{\eta}}
%\newcommand{\Etilde}{\widetilde{E}}
\newcommand{\Ext}{\mathrm{Ext}}
\newcommand{\fbar}{\bar{f}}
\newcommand{\fraka}{\mathfrak{a}}
\newcommand{\gammabar}{\bar{\gamma}}
\newcommand{\Gbar}{\bar{G}}
%\newcommand{\gH}{\lexp{g}{H}}
%\newcommand{\Ghat}{\widehat{G}}
\newcommand{\GHsetA}{\lset{G\times H}^A}
%\newcommand{\gHphi}{\lexp{g}{\Hphi}}
\newcommand{\Gmon}{\lmon{G}}
\newcommand{\Gperm}{\lperm{G}}
\newcommand{\Gset}{\lset{G}}
\newcommand{\GsetA}{\lset{G}^A}
\newcommand{\GsetGA}{\lset{G}_G^A}
\newcommand{\GsetHA}{\lset{G}_H^A}
\newcommand{\GsetKA}{\lset{G}_K^A}
\newcommand{\GsetLA}{\lset{G}_L^A}
\newcommand{\Gtilde}{\tilde{G}}
\newcommand{\Hbar}{\bar{H}}
%\newcommand{\Hhat}{\widehat{H}}
\newcommand{\HsetGA}{\lset{H}_G^A}
\newcommand{\HsetKA}{\lset{H}_K^A}
\newcommand{\Hom}{\mathrm{Hom}}
\newcommand{\Htilde}{\tilde{H}}
%\newcommand{\Ibar}{\bar{I}}
\newcommand{\id}{\mathrm{id}}
%\newcommand{\Ihat}{\widehat{I}}
\newcommand{\im}{\mathrm{im}}
\newcommand{\Ind}{\mathrm{Ind}}
\newcommand{\ind}{\mathrm{ind}}
\newcommand{\Inf}{\mathrm{Inf}}
%\newcommand{\ind}{\mathrm{ind}}
\newcommand{\Inn}{\mathrm{Inn}}
\newcommand{\Ins}{\mathrm{Ins}}
\newcommand{\iotatilde}{\tilde{\iota}}
\newcommand{\Irr}{\mathrm{Irr}}
\newcommand{\Isom}{\mathrm{Iso}}
%\newcommand{\Jbar}{\bar{J}}
%\newcommand{\Jhat}{\widehat{J}}
\newcommand{\kappabar}{\bar{\kappa}}
\newcommand{\kappatilde}{\tilde{\kappa}}
\newcommand{\kappattilde}{\tilde{\kappatilde}}
\newcommand{\Kbar}{\bar{K}}
\newcommand{\Khat}{\hat{K}}
\newcommand{\kMod}{\lMod{k}}
\newcommand{\KsetLA}{\lset{K}_L^A}
\newcommand{\Ktilde}{\tilde{K}}
\newcommand{\Kttilde}{\tilde{\Ktilde}}
\newcommand{\ktilde}{\tilde{k}}
\newcommand{\lambdabar}{\bar{\lambda}}
\newcommand{\lDelta}[1]{\llap{\phantom{|}}_{#1}\Delta}
\newcommand{\Lbar}{\bar{L}}
\newcommand{\lexp}[2]{\setbox0=\hbox{$#2$} \setbox1=\vbox to
                 \ht0{}\,\box1^{#1}\!#2}
\newcommand{\lGamma}[1]{\llap{\phantom{|}}_{#1}\Gamma}
\newcommand{\Lhat}{\hat{L}}
\newcommand{\lin}{\mathrm{lin}}
\newcommand{\liso}{\buildrel\sim\over\longrightarrow}
\newcommand{\lmod}[1]{\llap{\phantom{|}}_{#1}\catfont{mod}}
\newcommand{\lMod}[1]{\llap{\phantom{|}}_{#1}\catfont{Mod}}
\newcommand{\lmon}[1]{\llap{\phantom{|}}_{#1}\catfont{mon}}
\newcommand{\lperm}[1]{\llap{\phantom{|}}_{#1}\catfont{perm}}
\newcommand{\lset}[1]{\llap{\phantom{|}}_{#1}\catfont{set}}
%\newcommand{\lra}{\longrightarrow}
\newcommand{\Ltilde}{\tilde{L}}
\newcommand{\ltilde}{\tilde{l}}
\newcommand{\Mat}{\mathrm{Mat}}
\newcommand{\myiso}{\buildrel\sim\over\to}
\newcommand{\mubar}{\bar{\mu}}
\newcommand{\mutilde}{\tilde{\mu}}
\newcommand{\NN}{\mathbb{N}}
\newcommand{\omegabar}{\bar{\omega}}
\newcommand{\Out}{\mathrm{Out}}
\newcommand{\pbar}{\bar{p}}
%\newcommand{\Phat}{\widehat{P}}
\newcommand{\phibar}{\bar{\phi}}
\newcommand{\phiop}{\phi^{\mathrm{op}}}
\newcommand{\phitilde}{\tilde{\phi}}
\newcommand{\pitilde}{\tilde{\pi}}
\newcommand{\Pmon}{\lmon{P}}
\newcommand{\pr}{\mathrm{pr}}
\newcommand{\psitilde}{\tilde{\psi}}
%\newcommand{\Ptilde}{\widetilde{P}}
\newcommand{\qed}{\nobreak\hfill
                  \vbox{\hrule\hbox{\vrule\hbox to 5pt
                  {\vbox to 8pt{\vfil}\hfil}\vrule}\hrule}}
%\newcommand{\Qhat}{\widehat{Q}}
\newcommand{\QQ}{\mathbb{Q}}
%\newcommand{\Qtilde}{\widetilde{Q}}
%\newcommand{\Rad}{\mathrm{Rad}}
\newcommand{\Res}{\mathrm{Res}}
%\newcommand{\res}{\mathrm{res}}
%%\newcommand{\resp}{{\res_+}}
%\newcommand{\Rhat}{\widehat{R}}
%\newcommand{\rmod}[1]{\catfont{mod}_{#1}}
%\newcommand{\rproj}[1]{\catfont{proj}_{#1}}
%\newcommand{\Rtilde}{\widetilde{R}}
\newcommand{\sbar}{\bar{s}}
%\newcommand{\scrL}{\mathscr{L}}
%\newcommand{\scrM}{\mathscr{M}}
%\newcommand{\scrN}{\mathscr{N}}
\newcommand{\scrX}{\mathscr{X}}
\newcommand{\scrY}{\mathscr{Y}}
\newcommand{\catset}{\catfont{set}}
\newcommand{\setA}{\catset^A}
\newcommand{\sigmatilde}{\tilde{\sigma}}
%\newcommand{\stab}{\mathrm{stab}}
\newcommand{\Stilde}{\tilde{S}}
\newcommand{\thetatilde}{\tilde{\theta}}
\newcommand{\torA}{\mathrm{tor}A}
\newcommand{\Ubar}{\bar{U}}
\newcommand{\Uop}{U^{\mathrm{op}}}
\newcommand{\Utilde}{\tilde{U}}
%\newcommand{\Vhat}{\widehat{V}}
\newcommand{\Vtilde}{\widetilde{V}}
\newcommand{\Wtilde}{\widetilde{W}}
\newcommand{\xbar}{\bar{x}}
%\newcommand{\xhat}{\widehat{x}}
%\newcommand{\Xhat}{\widehat{X}}
\newcommand{\xop}{x^{\mathrm{op}}}
\newcommand{\Xop}{X^{\mathrm{op}}}
%\newcommand{\xybar}{\overline{xy}}
\newcommand{\ybar}{\bar{y}}
\newcommand{\Yop}{Y^{\mathrm{op}}}
\newcommand{\Ztilde}{\tilde{Z}}
\newcommand{\ZZ}{\mathbb{Z}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%% TITLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\title{Fibered Biset Functors\footnote{MR Subject Classification 19A22, 20C15, 20C20}}
\author{\small Robert Boltje\thanks{Research supported by the NSF, DMS-0200592}\\
        \small Department of Mathematics\\
        \small University of California\\
        \small Santa Cruz, CA 95064\\
        \small U.S.A.\\
        \small boltje@math.ucsc.edu %
        \and
        \small Olcay Co\c{s}kun\thanks{Research supported partially by  T\"ubitak-1001-113F240.}\\
        \small Department of Mathematics\\
        \small Bo\u{g}azi\c{c}i University\\
        \small Bebek, 34342 Istanbul\\
        \small T\"{u}rkiye\\
        \small olcay.coskun@boun.edu.tr}
\date{December 4, 2016}

%%%%%%%%%%%%%%%%%%% BEGIN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\sloppy

\maketitle

%%%%%%%%%%%%%%%%%%%%%%%%%%%% ABSTRACT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{abstract}
The theory of biset functors, introduced by Serge Bouc, gives a unified treatment of operations in representation theory that are induced by permutation bimodules. In this paper, by considering fibered bisets, we introduce and describe the basic theory of fibered biset functors which is a natural framework for operations induced by monomial bimodules. The main result of this paper is the classification of simple fibered biset functors. 
\end{abstract}

%%%%%%%%%%%%%%%%%%%%%% INTRODUCTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section*{Introduction}

In \cite{Bouc1996a} and \cite{BoucBook} Serge Bouc introduced and developed the theory of {\em biset functors}. This notion provides a framework for situations where structural maps that behave like {\em restriction}, {\em induction}, {\em inflation}, and {\em deflation}, or a subset of them, are present. Typical examples of biset functors are the various representation rings, as for instance the Burnside ring, the character ring, the Green ring, and the trivial source ring of a finite group $G$. The Brauer character ring of $G$ and cohomology groups in fixed degree of $G$ are other examples (no deflation in these cases). The theory of biset functors proved to be the right framework to prove striking results: The determination of the Dade group of endo-permutation modules of a $p$-group (see \cite{BoucThevenaz2000a} for the final result, or \cite{Thevenaz2007} for an overview) and the determination of the unit group of the Burnside ring of a $p$-group (see \cite{Bouc2010a} or \cite{BoucBook}). Both the Dade group and the unit group of the Burnside ring provide further examples of biset functors. 

Biset functors are additive, abelian group valued functors on the biset category, whose objects are finite groups and whose morphism sets are given by the Grothendieck groups $B(G,H)$ of finite $(G,H)$-bisets. The composition is induced by a construction that imitates the tensor product of bimodules. Restriction, induction, inflation and deflation can be seen as particular transitive bisets.

Recently, a category analogous to the biset category, whose objects are finite sets and morphisms are correspondences between them, together with functors on this category have been considered by Bouc and Th\'evenaz, see~\cite{BoucThevenaz2015}. Again surprising connections to other areas, for instance to lattice theory, came to light.

In this article we strive to systematically develop a similar theory of {\em fibered biset functors}. The motivation comes from the fact that representation rings of finite groups carry more structure, by considering multiplication with one-dimensional representations as structural maps. Monomial Burnside rings have been introduced by Dress in \cite{Dress} in great generality and utilized by the first author in the formalism of canonical induction formulas, see \cite{Boltje1989} and \cite{Boltje1998}. See also \cite{Barker} and \cite{Romero2013a} for some basic properties. Let $A$ be a multiplicatively written abelian group. The $A$-fibered Burnside ring $B^A(G)$ is the Grothendieck group of $A$-fibered $G$-sets, i.e., $G\times A$-sets with finitely many orbits which are free as $A$-sets. A $\ZZ$-basis of $B^A(G)$ is parametrized by $G$-conjugacy classes of pairs $(H,\phi)$, where $H$ is a subgroup of $G$ and $\phi\in\Hom(H,A)$. Similarly one defines $A$-fibered $(G,H)$-bisets and their Grothendieck groups $B^A(G,H)=B^A(G\times H)$. Also fibered bisets allow a tensor product construction which gives rise to the $A$-fibered biset category over a commutative ring $k$, denoted by $\calC_k^A$. Its objects are again finite groups and its morphism sets are given by $B_k^A(G,H):=k\otimes B^A(G,H)$. The $k$-linear functors from $\calCkA$ to $\lMod{k}$ together with natural transformations form the abelian category $\calFkA$ of {\em $A$-fibered biset functors over $k$}. If $k=\ZZ$, we usually suppress the index $k$. In the case that $A$ is the unit group of a field $K$, one obtains a natural linearization map from $B^A(G)$ to various representation rings of $KG$-modules, by mapping the class of $(H,\phi)$ to $\Ind_H^G(K_\phi)$, where $K_\phi$ denotes the one-dimensional $KH$-module associated with the homomorphism $\phi\colon H\to K^\times$. Using the linearization map one can interpret these representation rings as additive functors on the $A$-fibered biset category with values in the category of abelian groups, i.e., as {\em $A$-fibered biset functors}.

One has a natural embedding $B(G)\to B^A(G)$ and also a natural splitting map $B^A(G)\to B(G)$ of this embedding in the category of rings. The embedding allows to view the biset category as a subcategory of the $A$-fibered biset category. To view an $A$-fibered biset functor $F$ via restriction as a biset functor means forgetting some of its structure. Thus, if a biset functor comes via restriction from an $A$-fibered biset functor it is worth trying to understand its richer structure as an $A$-fibered biset functor. 

The main goal of this paper is to determine the simple $A$-fibered biset functors. For this we first need to study the tensor product of $A$-fibered bisets and how transitive $A$-fibered bisets can be factored through smaller groups. This is done in Sections~1 and 2. The situation for bisets is as follows: It is shown in \cite{BoucBook} that a transitive $(G,H)$-biset
$(G\times H)/ U$, with $U\le G\times H$, is equal to the product of five canonical bisets. More precisely, one has
\begin{equation}\label{eqn biset decomposition}
\Big(\frac{G\times H}{U}\Big) = \
\Ind_P^G\times_P\Inf_{P/K}^P\times_{P/K}\mbox{\rm c}_{P/K,Q/L}^\eta\times_{Q/L}\Def^Q_{Q/L}\times_{Q}\Res^H_Q.
\end{equation}
Here, $P=p_1(U)$ and $Q = p_2(U)$ are the first and the second projections of the subgroup $U\le G\times H$ and $K = p_1(U\cap (P\times 1))$ and 
$L = p_2(U\cap (1\times Q))$. In this case, the groups $P/K$ and $Q/L$ are isomorphic and a canonical isomorphism $\eta$ is 
determined by $U$. Moreover, $\times_?$ denotes the product of bisets. See \ref{4 operations} for the description of 
the factors appearing in (\ref{eqn biset decomposition}). We usually write a transitive {\em $A$-fibered} $(G,H)$-biset $X$ in the form $\left(\frac{G\times H}{U,\phi}\right)$, where $U\le G\times H$ is the stabilizer of the $A$-orbit of a chosen element $x\in X$ and $\phi\colon U\to A$ is the homomorphism  arising from the action of $U$ on this $A$-orbit. Different choices of $x$ lead to $G\times H$-conjugates of $(U,\phi)$. In Corollary~\ref{Mackey formula for fibered bisets 2} we derive a Mackey formula for the tensor product of two transitive $A$-fibered bisets and use it to show an analogue of the decomposition in (\ref{eqn biset decomposition}). As above, $U$ determines a quintuple $(P,K,\eta,L,Q)$. Further, the homomorphism $\phi\colon U\to A$ determines the following data: Let $\phi_1\times \phi_2^{-1}$ be the decomposition of the restriction of $\phi$ to $K\times L$ and let $\hat K$ (resp.~$\hat L$) be the kernel of $\phi_1$ (resp. $\phi_2^{-1}$). We write $l(U,\phi) = (P,K,\phi_1)$ and $r(U,\phi) = (Q,L,\phi_2)$ and call them the left and the right invariants of $(U,\phi)$. In Proposition~\ref{decomposition} we prove the following decomposition
\begin{equation}\label{eqn fibered biset decomposition 1}
\left(\frac{G\times H}{U,\phi}\right) = 
\Ind_P^G\otimes_{AP}\Inf_{P/\hat K}^P\otimes_{AP/\hat K}\mbox{\rm Y}\otimes_{AQ/\hat L}\Def^Q_{Q/\hat L}\otimes_{AQ}\Res^H_Q.
\end{equation}
Here, $Y$ is a transitive $A$-fibered $(P/\hat K, Q/\hat L)$-biset with stabilizing pair $(\bar U,\bar \phi)$ such that the first and the second projections of $\bar U$ are surjective, and the homomorphisms $\bar\phi_1$ and $\bar\phi_2$ are faithful. In contrast to the theory of bisets is that in general the $A$-fibered biset $Y$ can be factored through groups of smaller order than $P/\Khat$ and $Q/\Lhat$. The problem remains to decompose $Y$ further by factoring through a smallest possible group. It is solved in Section~10 under additional assumptions on $A$, see Hypothesis~\ref{hypothesis}, which hold for instance if $A$ is the group of units of an algebraically closed field. Under this assumption, we decompose $X$ as follows. For simplicity, assume $P=G, Q=H, \hat K =1$ and $\hat L=1$. Set $\tilde K = G^\prime\cap K$ and $\tilde L = H^\prime \cap L$, where $G^\prime$ (resp.~$H^\prime$)  denotes the derived subgroup of $G$ (resp.~H). We construct a triple $(\tilde G, M, \mu)$, where $\tilde G$ is a central extension of $G/K$ by $\tilde K$, $M$ is a subgroup of $G\times \tilde G$, and $\mu\in\Hom(M,A)$, with additional properties as described in Section \ref{sec completely reduced pairs}, and also a triple $(\tilde H, N,\psi)$ with analogous properties related to $H$, $L$, and $\tilde{L}$, such that 
\begin{equation*}
Y \cong \Ins_{\tilde G}^G\otimes_{A\tilde G} X\otimes_{A\tilde H} \Del_{\tilde H}^H\,,
\end{equation*}
where $X$ is an $A$-fibered $(\tilde G,\tilde H)$-biset which is reduced, that is, cannot be factored further through a group of order smaller than $|\Gtilde|=|\Htilde|$. 
Here the \emph{insertion} fibered biset $\Ins_{\tilde G}^G$ \emph{inserts} the section $K/\tilde K$ into the group $\tilde G$ and the 
\emph{deletion} fibered biset $\Del^H_{\tilde H}$ \emph{deletes} the section $L/\tilde L$ from the group $H$. Unfortunately, the construction of $\Ins_{\tilde G}^G$ and $\Del^H_{\tilde H}$ uses choices which make them not canonical.

In Section~3 we introduce $A$-fibered biset functors and recall basic properties of such functor categories from \cite{Bouc1996a}. In order to determine the simple $A$-fibered biset functors over a commutative ring $k$ one needs to find the simple modules of the endomorphism algebra $E_k^A(G) = B_k^A(G,G)$ of a finite group $G$ which are annihilated by the ideal $I^A_k(G)$ of endomorphisms that factor through groups of smaller order. In order to determine the simple $E_k^A(G)/I_k^A(G)$-modules we consider the subalgebra $E_k^{A,c}(G)$ of $E_k^A(G)$ spanned over $k$ by the isomorphism classes of {\em covering} transitive $A$-fibered $(G,G)$-bisets $\left(\frac{G\times G}{U,\phi}\right)$, i.e., satisfying $p_1(U)=G=p_2(U)$. This subalgebra of $E_k^A(G)$ covers $E_k^A(G)/I_k^A(G)$ and it is isomorphic to a product of matrix rings over group algebras $k\Gamma_{(G,K,\kappa)}$. Here, $\Gamma_{(G,K,\kappa)}$ is the group of isomorphism classes of covering transitive $A$-fibered $(G,G)$-bisets $\left(\frac{G\times G}{U,\phi}\right) $ with $l(U,\phi)=(G,K,\kappa)=r(U,\phi)$. This result is proved in the course of Sections~4, 5, and 6. In Section~4 we introduce the central idempotents of $E_G^c$ which split the algebra $E_G^c$ into matrix rings. In Section~5 we determine an equivalence relation on the pairs $(K,\kappa)$ whose equivalence classes will parametrize the various matrix components. And in Section~6 we prove that $E_k^{A,c}(G)$ has the announced structure. In Section~7, the groups $\Gamma_{(G,K,\kappa)}$ are identified as extensions of a subgroup of the outer automorphism group $\Out(G/K)$ (determined by $\kappa$) and the group $\Hom(G/K,A)$. Section~8 is devoted to understanding which simple modules of $E_G^c$ are annihilated by $E_G\cap I_G$. For a given matrix component, indexed by $(K,\kappa)$, this only depends on the pair $(K,\kappa)$. Pairs that will lead to simple $E_G/I_G$-modules are called {\em reduced} pairs. Unfortunately, for general $A$ we do not have a handy criterion when $(K,\kappa)$ is reduced. Proposition~\ref{conditions for reduced} gives a necessary and a (different) sufficient condition for $(K,\kappa)$ to be reduced.

In Section~9 we show that the simple $A$-fibered biset functors are parametrized by equivalence classes of quadruples $(G,K,\kappa, [V])$, where $G$ is a finite group, $(K,\kappa)$ is a reduced pair, and $[V]$ is the isomorphism class of a simple $k\Gamma_{(G,K,\kappa)}$-module. This equivalence relation involves the notion of {\em linkage} of two tripes $(G,K,\kappa)$ and $(H,L,\lambda)$ by a pair $(U,\phi)$ with $U\le G\times H$ and $\phi\in\Hom(U,A)$ such that $l(U,\phi)=(G,K,\kappa)$ and $r(U,\phi)=(H,L,\lambda)$. In Proposition~\ref{linkage criterion} a group cohomology criterion is given to determine if two triples are linked. There exist examples of such linked triples with $G$ and $H$ not isomorphic. They lead to a negative answer of a question asked by Bouc, see Remark~\ref{rem Romero}, which has been observed independently by Romero in \cite{Romero2012a}.

In Section~10, we show that under a further hypothesis on the group $A$, one can show that a pair $(K,\kappa)$ is reduced if and only if $K\le Z(G)\cap G'$ and $\kappa$ is injective. This uses lengthy computations in the cohomology groups $H^2(G/K,A)$ and related cohomology groups. Finally, in Section~11 we realize some representation rings as simple fibered biset functors over appropriate fields of coefficients.


\bigskip
{\bf Notation}\quad
Throughout the paper, we will adopt the following conventions:

If $G$ is a group, $H\le G$ is a subgroup and $x\in G$, then $\lexp{x}{H}:=xHx^{-1}$. By $H<G$ we indicate that $H$ is a proper subgroup of $G$, i.e., $H\neq G$. If $k$ is a commutative ring we denote by $kG$ or $k[G]$ the group algebra of $G$ over $k$. If $H\le G$ and $M$ is a left $k[H]$-module then $\lexp{x}{M}$ is the $k[\lexp{x}{H}]$-module with underlying $k$-module equal to $M$ and $\lexp{x}{H}$-action given by $xhx^{-1}\cdot m := h m$, for $h\in H$ and $m\in M$. If $A$ is an abelian group, $\phi\colon H\to A$ is a group homomorphism and $x\in G$, then we define the homomorphism $\lexp{x}{\phi}\colon\lexp{x}{H}\to A$ by $xhx^{-1}\mapsto \phi(h)$ for $h\in H$.

For any ring $R$, the isomorphism class of an irreducible left $R$-module $V$ is denoted by $[V]$ and the set of isomorphism classes of simple left $R$-modules is denoted by $\Irr(R)$.


\bigskip
{\bf Acknowledgement} Work on this paper began 2007 during a visit of the second author at UC Santa Cruz. Since then both authors have enjoyed the support of the following institutions while working on this projects: UC Santa Cruz, MSRI,  Bo\u{g}azi\c{c}i University, Nesin Mathematics Village, Centre Interfacultaire Bernoulli. We would like to express our gratitude to these institutions.

%If $M$ is an $R[G]$-module and $H\le G$, the $H$-coinvariant module $M_H$ is defined as $M/IM$, where $I\subset R[H]$ is the augmentation ideal, i.e., the set of all $R$-linear combinations of elements of the form $h-1$, $h\in H$. For $m\in M$ we abbreviate $m+IM$ just by $\overline{m}$. Note that $M_H$ is an $R[N_G(H)/H]$-module in a natural way by setting $(nH)\cdot \overline{m}:=\overline{nm}$, for $n\in N_G(H)$ and $m\in M$. Note also that $M\mapsto M_H$ is a functor from the category of $R[G]$-modules to the category of $R[N_G(H)/H]$-modules which is equivalent to the tensor functor $R\otimes_{R[H]}-$, where $R$ is considered as the trivial right $R[H]$-module.



%%%%%%%%%%%%%%%%%%%%%%% SECTION 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{$A$-Fibered Bisets}\label{sec fibered bisets}

Throughout this article, we fix a multiplicatively written abelian
group $A$. For every finite group $G$, we set
\begin{equation*}
  G^*:=\Hom(G,A)
\end{equation*}
and view $G^*$ as an abelian group with point-wise multiplication.


\begin{nothing} {\bf The categories $\GsetA$ and $\GsetHA$.}\quad
Let $G$ be a finite group. An {\em $A$-fibered $G$-set} is a left
$A\times G$-set $X$ which is free as an $A$-set and has finitely many
$A$-orbits. A morphism between two $A$-fibered $G$-sets is just an
$A\times G$-equivariant map. The $A$-fibered $G$-sets and their
morphisms form a category which we denote by $\GsetA$.

We often consider a left $G$-set $X$ also as a right $G$-set via
\begin{equation*}
  xg=g^{-1}x
\end{equation*} 
for any $x\in X$ and $g\in G$
and vice-versa. However, when we view a left $A$-set as a right
$A$-set we always do this via
\begin{equation}\label{two-sided A-action}
  xa=ax
\end{equation}
and vice-versa. Elements of $A$ play a similar role as the elements of a commutative ring $k$, when
switching sides for modules over the group algebra $kG$.

If also $H$ is a finite group we denote by the category $\GsetHA$ of {\em
$A$-fibered $(G,H)$-bisets} as the category $\lset{G\times H}^A$. By
the above convention, we can view an object $X\in\lset{G\times H}^A$
as equipped with a left $G$-action, a right $H$-action and a two-sided
$A$-action through (\ref{two-sided A-action}), all three commuting with each other.
\end{nothing}

\begin{nothing}\label{noth M_G}{\bf The set $\calM_G=\calM^A(G)$.}\quad
For a finite group $G$, we denote by $\calM^A(G)$ the set of all pairs
$(K,\kappa)$ where $K$ is a subgroup of $G$ and $\kappa\in K^*$. Often we will just write $\calM_G$ for $\calM^A(G)$. The
set $\calM_G$ has a poset structure given by $(L,\lambda)\le
(K,\kappa)$ if $L\le K$ and $\lambda=\kappa|_L$. Moreover, $G$ acts on
$\calM_G$ by conjugation via
$\lexp{g}{(K,\kappa)}:=(\lexp{g}{K},\lexp{g}{\kappa})$ for $g\in G$.
Note that conjugation respects the poset structure. We denote the
$G$-orbit of $(K,\kappa)$ by $[K,\kappa]_G$.

Let also $H$ be a finite group and let $(U,\phi)\in\calM_{G\times
H}$. We denote by
\begin{equation*}
  p_1\colon G\times H\to G\quad\text{and}\quad p_2\colon G\times H\to
  H
\end{equation*}
the projection maps and set
\begin{equation*}
  k_1(U):=\{g\in G\mid (g,1)\in U\}\quad\text{and}\quad
  k_2(U):=\{h\in H\mid (1,h)\in U\}\,.
\end{equation*}
We also set
\begin{equation*}
  k(U):=k_1(U)\times k_2(U)\le U\,,
\end{equation*}
the largest \lq rectangular\rq\ subgroup of $U$. Furthermore, for
$i=1,2$, we define homomorphisms $\phi_i\in k_i(U)^*$ by
\begin{equation*}
  \phi|_{k(U)}=\phi_1\times\phi_2^{-1}\,.
\end{equation*}
The reason we use $\phi_2^{-1}$ in the above equation is that later
formulas will look nicer. Finally, we associate to $(U,\phi)$ its {\em
left invariants} and {\em right invariants}
\begin{equation*}
  l(U,\phi):=(p_1(U),k_1(U),\phi_1)\quad\text{and}\quad
  r(U,\phi):=(p_2(U),k_2(U),\phi_2)\,.
\end{equation*}
Sometimes we will only be interested in part of these invariants and
also define
\begin{equation*}
  l_0(U,\phi):=(k_1(U),\phi_1)\quad\text{and}\quad
  r_0(U,\phi):=(k_2(U),\phi_2)\,.
\end{equation*}
\end{nothing}

\begin{proposition}\mylabel{eta and zeta}
Let $(U,\phi)\in\calM_{G\times H}$ and set
\begin{equation*}
  (P,K,\kappa):=l(U,\phi)\quad\text{and}\quad (Q,L,\lambda):=r(U,\phi)\,.
\end{equation*}
Moreover, set
\begin{equation*}
  \Khat:=\ker(\kappa)\,,\quad \Lhat:=\ker(\lambda)\,,\quad \Ktilde:=\Khat P'\cap
K\quad \text{and}\quad \Ltilde:=\Lhat Q'\cap L\,.
\end{equation*}
Then, clearly,
\begin{equation*}
  1 \le \Khat \le \Ktilde \le K \le P \le G\quad\text{and}\quad
  1 \le \Lhat \le \Ltilde \le L \le Q \le H\,.
\end{equation*}
Moreover:

\smallskip
{\rm (a)} $\Khat$, $\Ktilde$ and $K$ are normal in $P$, and $\Lhat$,
$\Ltilde$ and $L$ are normal in $Q$.

\smallskip
{\rm (b)} $K/\Khat$ is central in $P/\Khat$ and $L/\Lhat$ is central in
$Q/\Lhat$.

\smallskip
{\rm (c)} One has group isomorphisms
\begin{equation*}
  P/K \cong U/(K\times L) \cong Q/L
\end{equation*}
which are induced by the projection maps $U\to P$ and $U\to Q$. The
resulting isomorphism
\begin{equation*}
  \eta=\eta_U\colon Q/L\to P/K
\end{equation*}
is characterized by
\begin{equation*}
  \eta(qL)=pK \iff (p,q)\in U\,,
\end{equation*}
for $q\in Q$ and $p\in P$.

\smallskip
{\rm (d)} One has group isomorphisms
\begin{equation*}
  \Ktilde/\Khat \cong
  \ker(\phi|_{\Ktilde\times\Ltilde})/(\Khat\times\Lhat) \cong
  \Ltilde/\Lhat
\end{equation*}
induced by the projection maps $\Ktilde\times\Ltilde\to\Ktilde$ and
$\Ktilde\times\Ltilde\to\Ltilde$. The resulting isomorphism
\begin{equation*}
  \zeta=\zeta_{U,\phi}\colon \Ltilde/\Lhat\to\Ktilde/\Khat
\end{equation*}
is characterized by
\begin{equation*}
  \zeta(\ltilde\Lhat)=\ktilde\Khat \iff
  \kappa(\ktilde)=\lambda(\ltilde)\,,
\end{equation*}
for $\ltilde\in\Ltilde$ and $\ktilde\in\Ktilde$.

\smallskip
{\rm (e)} If $\Khat=1$, $\Ktilde=K$ and $P=G$ then $|G|\le|H|$.
\end{proposition}

\begin{proof}
Parts~(a), (b) and (c) are easy verifications and are left to the
reader. Some parts of these statements are also known as Goursat's
theorem.

\smallskip
(d) We only show that the projection
\begin{equation*}
  \pbar_1\colon \ker(\phi|_{\Ktilde\times\Ltilde})/(\Khat\times\Lhat)
  \to \Ktilde/\Khat\,, \quad (\ktilde,\ltilde)(\Khat\times\Lhat)
  \mapsto \ktilde\Khat\,,
\end{equation*}
is an isomorphism. (The other isomorphism is proved with the same
arguments and the last statement follows easily.) Clearly, $\pbar_1$
is a well-defined group homomorphism, and it is easy to see that
$\pbar_1$ is injective. To show that $\pbar_1$ is surjective, let
$\ktilde\in\Ktilde$. After multiplying $\ktilde$ with an element from
$\Khat$ we may assume that $\ktilde\in P'$. Then, there exist elements
$g_1,g'_1,\ldots,g_n,g'_n\in P$ such that
\begin{equation*}
  \ktilde =  [g_1,g'_1]\cdots[g_n,g'_n]\,.
\end{equation*}
By the definition of $P$ there exist elements
$h_1,h'_1,\ldots,h_n,h'_n\in Q$ such that $(g_i,h_i),(g'_i,h'_i)\in U$
for $i=1,\ldots,n$. Set
\begin{equation*}
  \ltilde:=[h_1,h'_1]\cdots[h_n,h'_n]\in Q'\,.
\end{equation*}
It follows that $(\ktilde,\ltilde)\in U'$, which implies that
$\phi(\ktilde,\ltilde)=1$. Since $\Ktilde\le K$ we have $\ltilde\in
L$. Since $\ltilde$ belongs also to $Q'$, we have $\ltilde\in\Ltilde$
and $\pbar_1(\ktilde,\ltilde)=\ktilde\Khat$.

\smallskip
(e) This follows immediately from parts (c) and (d).
\end{proof}

\begin{nothing}\mylabel{stabilizing pairs}{\bf Stabilizing pairs.}\quad
Let $X$ be an $A$-fibered $(G,H)$-biset. We will denote the $A$-orbit
of the element $x\in X$ by $[x]$. Note that $G\times H$ acts on the
set of $A$-orbits of $X$ by $(g,h)[x]:=[(g,h)x]$. For $x\in X$, let
$S_x\le G\times H$ denote the stabilizer of $[x]$.

We define a map
\begin{equation}\label{stabilizing pair}
  X\to\calM_{G\times H}\,,\quad x\mapsto (S_x,\phi_x)\,,
\end{equation}
with
\begin{equation*}
  \phi_x\colon S_x \to A
\end{equation*}
determined by the equation
\begin{equation*}
  (g,h)x=\phi_x(g,h)x
\end{equation*}
for $(g,h)\in S_x$. We call $(S_x,\phi_x)$ the {\em stabilizing pair}
of $x$. With the notation introduced in the previous paragraph, we also
obtain group homomorphisms
\begin{equation*}
  \phi_{x,1}\colon k_1(S_x)\to A\quad\text{and}\quad
  \phi_{x,2}\colon k_2(S_x)\to A
\end{equation*}
determined by the equations
\begin{equation*}
  \phi_{x,1}(g)x=gx\quad\text{and}\quad \phi_{x,2}(h)x=xh\,,
\end{equation*}
for $g\in k_1(S_x)$ and $h\in k_2(S_x)$. Since the action of $G\times
H$ and $A$ on $X$ commute, the definitions of $\phi_x$, $\phi_{x,1}$
and $\phi_{x,2}$ do not depend on the choice of $x$ in its $A$-orbit.
Note also that for $(g,h)\in G\times H$, we have
\begin{equation*}
  (S_{(g,h)x},\phi_{(g,h)x})=\lexp{(g,h)}{(S_x,\phi_x)}\,,\quad
  \phi_{(g,h)x,1}=\lexp{g}{\phi_{x,1}}\,,\quad
  \phi_{(g,h)x,2}=\lexp{h}{\phi_{x,2}}\,.
\end{equation*}
Thus, the map defined in (\ref{stabilizing pair}) is constant on the
$A$-orbits of $X$, and considered as a map on the $A$-orbits of $X$, it
is $G\times H$-equivariant.
\end{nothing}

\begin{nothing} {\bf Transitive $A$-fibered $(G,H)$-bisets.}\quad
Let $X$ be an $A$-fibered $(G,H)$-biset. It is clear that the $A\times G\times
H$-action on $X$ is transitive if and only if the $G\times
H$-action on the set of $A$-orbits of $X$ is transitive. In this case
we call $X$ a {\em transitive} $A$-fibered $(G,H)$-biset. There exists
a bijective correspondence between the isomorphism classes of
transitive $A$-fibered $(G,H)$-bisets and the $G\times H$-conjugacy
classes of $\calM_{G\times H}$. We describe this correspondence. If
$X$ is a transitive $A$-fibered $(G,H)$-biset, choose an element $x\in
X$ and associate to $X$ the class $[S_x,\phi_x]_{G\times H}$ as
defined in (\ref{stabilizing pair}). Conversely, given a pair
$(U,\phi)$ we construct an $A$-fibered $(G,H)$-biset $X$ by
$X:=(A\times G\times H)/U_\phi$, where $U_\phi$ is the subgroup of
$G\times H \times A$ consisting of all elements $(\phi(u^{-1}), u)$,
with $u\in U$. If we start with the conjugate pair
$\lexp{(g,h)}{(U,\phi)}$ instead of $(U,\phi)$, we obtain the conjugate subgroup
$\lexp{(1,g,h)}{U_\phi}$ of $G\times H\times A$ and therefore, we
obtain isomorphic $A$-fibered $(G,H)$-bisets. It is easy to see that
these two constructions are mutually inverse.

For $(U,\phi)\in\calM_{G\times H}$ we denote the corresponding
transitive $A$-fibered $(G,H)$-biset and its isomorphism class by
\begin{equation*}
  \left(\frac{G\times H}{U,\phi}\right)\quad\text{and}\quad
  \left[\frac{G\times H}{U,\phi}\right]\,,
\end{equation*}
respectively.
\end{nothing}

\begin{nothing} {\bf Opposite of an $A$-fibered biset.}\quad
Let $X$ be an $A$-fibered $(G,H)$-biset. We define the {\em opposite}
$\Xop\in\HsetGA$ of $X$ as the $A$-fibered $(H,G)$-biset which has $X$ as underlying set, but endowed with the left $A\times H\times G$-action given by
\begin{equation*}
  (a,h,g)x:=(a^{-1},g,h)x\,.
\end{equation*}
In particular, if $X=\left(\frac{G\times H}{U,\phi}\right)$ then
$\Xop\cong \left(\frac{H\times G}{\Uop,\phiop}\right)$ with
\begin{equation*}
  \Uop:=\{(h,g)\in H\times G\mid (g,h)\in U\}\quad\text{and}\quad
  \phiop(h,g):=\phi(g,h)^{-1}\,.
\end{equation*}
Thus, $k_1(\Uop)=k_2(U)$, $k_2(\Uop)=k_1(U)$, $(\phiop)_1 = \phi_2$, and $(\phiop)_2=\phi_1$.
%If additionally $Y$ is an $A$-fibered $(H,K)$-biset then $(X\cdotH Y)^{\mathrm{op}}\cong \Yop\cdotH\Xop$ as $A$-fibered $(K,G)$-bisets.
\end{nothing}

\begin{nothing}{\bf The Grothendieck group.}\quad
We denote the isomorphism class of an $A$-fibered $(G,H)$-biset $X$ by
$[X]$. Let $X$ and $Y$ be two $A$-fibered $(G,H)$-bisets. The disjoint
union $X\coprod Y$ of $X$ and $Y$ is the categorical coproduct. On the
set of isomorphism classes it induces the structure of a monoid
$[X]+[Y]:=[X\coprod Y]$. The corresponding Grothendieck group is called
the {\em Burnside group} of $A$-fibered $(G,H)$-bisets and is denoted
by $B^A(G,H)$. Every $A$-fibered $(G,H)$-biset $X$ is represented
by a class $[X]$ in $B^A(G,H)$ and the elements
$\left[\frac{G\times H}{U,\phi}\right]$, with $[U,\phi]_{G\times H}\in 
G\times H\backslash\calM_{G\times H}$, form a $\ZZ$-basis of the abelian
group $B^A(G,H)$. We will denote again by $-^{\mathrm{op}}\colon B^A(G,H)\to B^A(H,G)$ the isomorphism induced by taking opposite fibered bisets. With this we have a canonical isomorphism $B^A(G,H)\cong B^A(H,G)$ of abelian groups.

As a special case, when $H$ is the trivial group we obtain the Grothendieck group $B^A(G)$ of the category $\GsetA$ with respect to disjoint unions. 
\end{nothing}

\begin{remark}\label{rem kG-mon}  (a) The group $B^A(G)$ can be interpreted as the result of the $-_+$ construction, see  \cite{Boltje1998}, applied to the group rings $\ZZ G^*=\ZZ\Hom(G,A)$.

\smallskip
(b) Assume that $A=k^\times$, the unit group of an integral domain $k$. Then $B^A(G)$ can also be interpreted as the Grothendieck group of the $k$-linear additive category $\lmon{kG}$ of finite $G$-equivariant line bundles over $k$, which was introduced in \cite{Boltje2001a}. %This category comes with a $k$-linear forgetful functor $\lmon{kG}\to\lmod{kG}$. Replacing $G$ with $G\times H$, one obtains a category $\lmon{kG}_{kH}$ whose Grothendieck group is $B(G,H;A)$ and a $k$-linear functor $\lmon{kG}_{kH}\to\lmod{kG}_{kH}$. With respect to the latter functor and the homomorphism it induces between $B(G,H;A)$ and the Grothendieck group of $\lmod{kG}_{kH}$, the functor $-^{\mathrm{op}}\colon \GsetHA\to\HsetGA$ is a lift of the $k$-dual functor $\lmod{kG}_{kH}\to\lmod{kH}_{kG}$, $M\mapsto \Hom_k(M,k)$. Moreover, the tensor product bifunctor $-\otimes_{AH}-\colon \GsetHA\times \HsetKA\to \GsetKA$ which we will define in the following section is a lift of the tensor product functor $-\otimes_{kH}-\colon \lmod{kG}_{kH}\times\lmod{kH}_{kK}\to \lmod{kG}_{kK}$.
\end{remark}




%%%%%%%%%%%%%%%% SECTION 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Tensor product of fibered bisets}\label{sec tensor product}

In this section, we introduce the tensor product of fibered bisets. The usual product construction of 
bisets does not work in the fibered case, since under this product, the $A$-action may not remain free. The remedy
is to consider the subset of free $A$-orbits in the product. We will call this construction the tensor product. After establishing associativity of the tensor product, we prove an explicit formula (see Corollary~\ref{Mackey formula for fibered bisets 2}), called the Mackey formula, for the tensor product of two transitive $A$-fibered bisets, and a first level decomposition of a transitive fibered biset into a product of standard (fibered) bisets (see Proposition~\ref{decomposition}). The latter we call the standard decomposition. The middle factor of this decomposition will be decomposed further in Section~\ref{sec completely reduced pairs}. Both the Mackey formula and the standard decomposition are completely analogous to formulas in the biset category, see \cite[Section~2.3]{BoucBook}.

\begin{nothing} {\bf The tensor product.}\quad
Given finite groups $G,H,K$ and objects $X\in\GsetHA$ and
$Y\in\HsetKA$, we will define their {\em tensor product}
$X\otimes_{AH} Y\in\GsetKA$. First recall the definition of the product
$X\times_{AH}Y$ of the right $A\times H$-set $X$ with the left
$A\times H$-set $Y$:  It is the set of $A\times H$-orbits of $X\times
Y$ under the action
\begin{equation*}
  \lexp{(a,h)}{(x,y)}= (x(a^{-1},h^{-1}),(a,h)y)
\end{equation*}
for $(a,h)\in A\times H$ and $(x,y)\in X\times Y$. We will denote the
$A\times H$-orbit of $(x,y)$ by $[x,y]_{AH}$. Note that we have $[xa,y]_{AH}=[x,ay]_{AH}$ and
$[xh,y]_{AH}=[x,hy]_{AH}$ for $a\in A$ and $h\in H$.

The set $X\times_{AH}Y$ is an $A$-set via $a[x,y]_{AH}:=[ax,y]_{AH}=[x,ay]_{AH}$ and
it is a $(G,K)$-biset via $(g,k)[x,y]_{AH}:=[gx,yk^{-1}]_{AH}$. These two
actions commute so that $X\times_{AH}Y$ is a left $A\times G\times
K$-set. However, in general the $A$-action is not free. Note that the
action of $G\times K$ permutes the free $A$-orbits of $X\times_{AH}Y$.
This allows us to define
\begin{equation*}
  X\otimes_{AH} Y\in\GsetKA
\end{equation*}
as the union of the free $A$-orbits of $X\times_{AH} Y$. If the
stabilizer of $[x,y]_{AH}$ in $A$ is trivial, i.e., if $[x,y]_{AH}\in
X\otimes_{AH}Y$, we will write $x\otimes_{AH}y$ instead of
$[x,y]_{AH}$. Note that the construction $X\otimes_{AH} Y$ is
functorial in $X$ and $Y$. It is clear from the definitions that the
tensor product respects disjoint unions:
\begin{align*}
  (X\coprod X')\otimes_{AH}Y
  & \cong (X\otimes_{AH}Y)\coprod (X'\otimes_{AH}Y)\,,\\
  X\otimes_{AH}(Y\coprod Y')
  & \cong (X\otimes_{AH}Y)\coprod (X\otimes_{AH}Y')\,,
\end{align*}
for $X,X'\in\GsetHA$ and $Y,Y'\in\HsetKA$. It is also straightforward to verify that
\begin{equation*}
  (X\otimes_{AH} Y)^{\mathrm{op}} \cong \Yop\otimes_{AH}\Xop\,,
\end{equation*}
as $A$-fibred $(K,G)$-bisets, under the map $[x,y]\mapsto [y,x]$.
\end{nothing}

\begin{nothing} {\bf Associativity.}\quad
Let $G,H,K,L$ be finite groups, let $X\in\GsetHA$, $Y\in\HsetKA$ and
$Z\in\KsetLA$ be $A$-fibered bisets. We will show that there exists an
isomorphism
\begin{equation*}
  (X\otimes_{AH} Y)\otimes_{AK} Z \cong X\otimes_{AH}(Y\otimes_{AK}Z)
\end{equation*}
which maps $(x\otimes_{AH} y)\otimes_{AK} z$ to
$x\otimes_{AH}(y\otimes_{AK} z)$ for $x\in X$, $y\in Y$ and $z\in Z$.
It is well-known that the map
\begin{align}\label{associativity isomorphism}
  (X\times_{AH} Y)\times_{AK} Z
  & \to X\times_{AH} (Y\times_{AK} Z)\,,\\
  \notag
  \bigl[[x,y]_{AH},z\bigr]_{AK}
  & \mapsto \bigl[x,[y,z]_{AK}\bigr]_{AH}\,,
\end{align}
is a bijection. It is also clear that it is an isomorphism of $A\times
G\times L$-sets. Since $(X\otimes_{AH}Y)\otimes_{AK}Z$ is a subset of
the left hand side and $X\otimes_{AH}(Y\otimes_{AK}Z)$ is a subset of
the right hand side, it suffices to show that the above isomorphism
restricts to these subsets. Note that $[[x,y]_{AH},z]_{AK}\in
(X\otimes_{AH}Y)\otimes_{AK}Z$ if and only if the stabilizer $S_1$ of
$[x,y]_{AH}$ in $A$ is trivial and the stabilizer $S_2$ of
$[[x,y]_{AH},z]_{AK}$ in $A$ is trivial. Since $S_1\le S_2$, this is
equivalent to the statement that $S_2=1$. Similarly,
$[x,[y,z]_{AK}]_{AH}\in X\otimes_{AH}(Y\otimes_{AK} Z)$ if and only if
the stabilizer $T_2$ of $[x,[y,z]_{AK}]_{AH}$ in $A$ is trivial. But
since the map in (\ref{associativity isomorphism}) is an
$A$-equivariant isomorphism, $S_2=T_2$, and the proof is complete.
\end{nothing}

\begin{nothing}\mylabel{*notation}
Our next aim is to find an explicit formula for the tensor product of
two transitive $A$-fibered bisets. For this purpose, we will need the
following notation. Let $G$, $H$ and $K$ be finite groups, let $U\le
G\times H$ and $V\in H\times K$ be subgroups, and let $\phi\in U^*$
and $\psi\in V^*$ be homomorphisms satisfying
\begin{equation}\label{compatibility condition}
  \phi_2|_{k_2(U)\cap k_1(V)} = \psi_1|_{k_2(U)\cap k_1(V)}.
\end{equation}
Following \cite{Bouc1996a}, we set
\begin{equation*}
  U*V:=\{(g,k)\in G\times K \mid \text{there exists $h\in H$ with $(g,h)\in
  U$ and $(h,k)\in V$}\}\,.
\end{equation*}
Moreover, we define $\phi*\psi\in(U*V)^*$ by
\begin{equation*}
  (\phi*\psi)(g,k):=\phi(g,h)\psi(h,k)\,,
\end{equation*}
where $h\in H$ is chosen such that $(g,h)\in U$ and $(h,k)\in V$, a construction that has also been used in \cite{Bouc2010c}.
Note that, by the condition in (\ref{compatibility condition}), this does not depend
on the choice of $h\in H$.
\end{nothing}

For the following proposition, we fix transitive $A$-fibered bisets
$X\in\GsetHA$ and $Y\in\HsetKA$, and also elements $x\in X$ and $y\in Y$.
Let $(S_x,\phi_x)\in\calM_{G\times H}$ and
$(S_y,\phi_y)\in\calM_{H\times K}$ denote their stabilizing pairs.
Also, set $H_x:=p_2(S_x)$ and $H_y:=p_1(S_y)$. Note that every
$A\times G\times K$-orbit of $X\times_{AH}Y$ has an element of the
form $[x,hy]_{AH}$, with $h\in H$.

\begin{proposition}\mylabel{Mackey formula for fibered bisets 1}
Assume the above notation.

\smallskip
{\rm (a)} Let $t,t' \in H$. The elements $[x,ty]_{AH}$ and
$[x,t'y]_{AH}$ belong to the same $A\times G\times K$-orbit of
$X\times_{AH}Y$ if and only if $H_xtH_y=H_xt'H_y$.

\smallskip
{\rm (b)} Let $t\in H$. The stabilizer of $[x,ty]_{AH}$ in $A$ is
trivial if and only if
\begin{equation*}
  \phi_{x,2}|_{H_t}=\lexp{t}{\phi_{y,1}}|_{H_t}\,,
\end{equation*}
where $H_t:=k_2(S_x)\cap\lexp{t}{k_1(S_y)}$.

\smallskip
{\rm (c)} The elements $[x,ty]_{AH}\in X\times_{AH} Y$, where $t$ runs
through a set of representatives of the double cosets $H_x\backslash
H/H_y$ such that $\phi_{x,2}|_{H_t}=\lexp{t}{\phi_{y,1}}|_{H_t}$, form
a set of representatives for the $A\times G\times K$-orbits of
$X\otimes_{AH} Y$. For $t\in H$ with
$\phi_{x,2}|_{H_t}=\lexp{t}{\phi_{y,1}}|_{H_t}$, the stabilizing pair of
$[x,ty]_{AH}$ is equal to
\begin{equation*}
  (S_x*\!\lexp{(t,1)}{S_y},\ \phi_x*\!\lexp{(t,1)}{\phi_y})\,.
\end{equation*}
\end{proposition}

\begin{proof}
(a) This follows from the following chain of equivalences:
\begin{align*}
  & \text{$[x,ty]_{AH}$ and $[x,t'y]_{AH}$ belong to the same
  $A\times G\times K$-orbit}\\
  \iff & \exists g\in G, k\in K, a\in A\colon [x,t'y]_{AH} =
  [agx,tyk]_{AH} \\
  \iff & \exists g\in G, k\in K, a,b\in A, h\in H\colon
  (x,t'y)=(agxh^{-1}b^{-1},hbtyk)\\
  \iff & \exists g\in G, k\in K, a,b\in A, h\in H\colon
    (g,h)\in S_x, ({t'}^{-1}ht,k^{-1})\in S_y,\\
    &\qquad    \phi_x(g,h)=a^{-1}b, \phi_y({t'}^{-1}ht,k^{-1})=b^{-1}\\
  \iff & \exists g\in G, h\in H, k\in K\colon (g,h)\in S_x,
  ({t'}^{-1}ht,k^{-1})\in S_y \\
  \iff & \exists h\in H \colon h\in H_x, {t'}^{-1}ht\in H_y\\
  \iff & \exists h\in H_x \colon t\in ht'H_y\\
  \iff & t\in H_xt'H_y\,.
\end{align*}

\smallskip
(b) Let $a\in A$. Then we have the following chain of equivalences:
\begin{align*}
  & [x,ty]_{AH} = [x,aty]_{AH} \\
  \iff & \exists h\in H, b\in A\colon (x,ty)=(xh^{-1}b^{-1},bhaty)\\
  \iff & \exists h\in H, b\in A\colon h\in k_2(S_x), t^{-1}ht\in
  k_1(S_y)\\
  & \qquad \phi_{x,2}(h^{-1})=b, \phi_{y,1}(t^{-1}ht)=a^{-1}b^{-1}\\
  \iff & \exists h\in k_2(S_x)\cap\lexp{t}{k_1(S_y)} \colon
  \lexp{t}{\phi_{y,1}}(h)=a^{-1}\phi_{x,2}(h)\\
  \iff & a \in\im\bigr(\phi_{x,2}|_{H_t}\cdot
  \lexp{t}{\phi_{y,1}^{-1}}|_{H_t}\bigr)\,.
\end{align*}
Thus, the stabilizer of $[x,ty]_{AH}$ in $A$ is trivial if and only if
$\phi_{x,2}|_{H_t}=\lexp{t}{\phi_{y,1}}|_{H_t}$.

\smallskip
(c) With the results from (a) and (b), we only have to verify the
statement about the stabilizing pair of $[x,ty]_{AH}$. Let
$(W,\lambda)\in\calM_{G\times K}$ denote the stabilizing pair of
$[x,ty]_{AH}$, and let $(g,k)\in G\times K$ and $a\in A$. Then we have
the chain of equivalences
\begin{align*}
  & \text{$(g,k)\in W$ and $\lambda(g,k)=a$}\\
  \iff &  [gx,tyk^{-1}]_{AH}=[x,aty]_{AH} \\
  \iff & \exists b\in A, h\in H \colon (gxh^{-1}b^{-1},hbtyk^{-1})=
  (x,aty)\\
  \iff & \exists b\in A, h\in H \colon (g,h)x=bx,
  (t^{-1}ht,k)y=ab^{-1}y\\
  \iff & \text{$(g,k)\in S_x*\!\lexp{(t,1)}{S_y}$ and there exists $h\in H$
  such that}\\
  & \qquad \text{$(g,h)\in S_x$, $(h,k)\in\lexp{(t,1)}{S_y}$ and
  $\lexp{(t,1)}{\phi_y}(h,k)=a\phi_x(g,h)^{-1}$}\\
  \iff & \text{$(g,k)\in S_x*\lexp{(t,1)}{S_y}$ and $(\phi_x * \lexp{(t,1)}{\phi_y})(g,k) = a$.} 
\end{align*}
Thus, $W=S_x*\lexp{(t,1)}{S_y}$ and $\lambda=\phi_x * \lexp{(t,1)}{\phi_y}$.
\end{proof}


The following Mackey formula is completely analogous to the formula for bisets, see \cite[Lemma~2.3.24]{BoucBook}.

\begin{corollary}[Mackey formula]\mylabel{Mackey formula for fibered bisets 2}
Let $(U,\phi)\in\calM_{G\times H}$ and $(V,\psi)\in\calM_{H\times
K}$. There exists an isomorphism of $A$-fibered $(G,K)$-bisets,
\begin{equation*}
  \left(\frac{G\times H}{U,\phi}\right)\otimes_{AH}
  \left(\frac{H\times K}{V,\psi}\right) \cong
  \coprod_{\substack{t\in p_2(U)\backslash H/p_1(V)\\
  \phi_2|_{H_t}=\lexp{t}{\psi_1}|_{H_t}}}
  \left(\frac{G\times K}{U*\lexp{(t,1)}{V},\phi*\lexp{(t,1)}{\psi}}\right)\,,
\end{equation*}
where $H_t:=k_2(U)\cap \lexp{t}{k_1(V)}$. The above isomorphism maps
the trivial coset of the $t$-component of the right hand side to the
element $U_\phi\otimes_{AH}(t,1,1)V_\psi$.
\end{corollary}

\begin{proof}
This is an immediate consequence of Proposition \ref{Mackey formula
for fibered bisets 1}(c) by choosing $x=U_\phi$ and $y=U_\psi$ to be
the trivial cosets of $(G\times H\times A)/U_\phi$ and $(H\times
K\times A)/U_\psi$, respectively.
\end{proof}


The proof of the following proposition is straightforward and is left
to the reader, see also \cite[Lemma~2.3.22]{BoucBook} for Parts (a) and (c).


\begin{proposition}\mylabel{first consequences}
Let $(U,\phi)\in\calM_{G\times H}$ and $(V,\psi)\in\calM_{H\times
K}$. 

\smallskip
{\rm (a)} One has
\begin{equation*}
  k_1(U)\le k_1(U*V)\le p_1(U*V)\le p_1(U)\quad\text{and}\quad
  k_2(V)\le k_2(U*V)\le p_2(U*V)\le p_2(V)
\end{equation*}

\smallskip
{\rm (b)} Assume that the restrictions of $\phi_2$ and $\psi_1$ to $k_2(U)\cap k_1(V)$ coincide. Then
\begin{equation*}
  l_0(U,\phi) \le l_0(U*V,\phi*\psi)
  \quad\text{and}\quad
  r_0(V,\psi) \le r_0(U*V,\phi*\psi) \,.
\end{equation*}

\smallskip
{\rm (c)} Let $\eta_U\colon p_2(U)/k_2(U)\to p_1(U)/k_1(U)$ be the
isomorphism from Proposition~{\rm \ref{eta and zeta}(c)}. Then one has
\begin{equation*}
  k_1(U*V)/k_1(U) \cong \eta_U\bigr((p_2(U)\cap
  k_1(V)k_2(U))/k_2(U)\bigr)\,.
\end{equation*}

\smallskip
{\rm (d)} If $r(U,\phi)=l(V,\psi)$ then $l(U*V,\phi*\psi)=l(U,\phi)$ and $r(U*V,\phi*\psi)=r(V,\psi)$.
\end{proposition}


Next we want to show that every transitive $A$-fibered $(G,H)$-biset
$X$ is the tensor product of the canonical operations restriction,
deflation, inflation, induction (which themselves are bisets) and a
transitive $A$-fibered $(\Gbar,\Hbar)$-biset $Y$ for certain sections
$\Gbar$ and $\Hbar$ of $G$ and $H$, respectively. First we need the following notations from \cite{Bouc1996a}.

\begin{notation}\mylabel{4 operations}
(a) Let $G$ and $H$ be finite groups. For any subgroups $H_2\le H_1\le H$ and any group homomorphism
$f\colon H_1\to G$, we set
\begin{equation*}
  \lDelta{f}(H_2):=\{(f(h),h)\mid h\in H_2\}\le G\times H\,.
\end{equation*}
For any subgroups $G_2\le G_1\le G$ and any group
homomorphism $f\colon G_1\to H$, we set
\begin{equation*}
  \Delta_f(G_2):=\{(g,f(g))\mid g\in G_2\}\le G\times H\,.
\end{equation*}
Moreover, if $f$ is the inclusion map of a subgroup, we only write
$\Delta(H_2)$, resp.~$\Delta(G_2)$.

\smallskip
(b) For a finite group $G$, a subgroup $H$ of $G$ and a normal subgroup
$N$ of $G$ one defines the objects
\begin{gather*}
  \Ind_H^G:=\left(\frac{G\times H}{\Delta(H),1}\right) \in \GsetHA\,,
  \quad
  \Res^G_H:=\left(\frac{H\times G}{\Delta(H),1}\right) \in
  \HsetGA\,,\\
  \Inf_{G/N}^G:=\left(\frac{G\times G/N}{\Delta_{\pi}(G),1}\right)
  \in\lset{G}_{G/N}^A\,,\quad
  \Def_{G/N}^G:=\left(\frac{G/N\times G}{\lDelta{\pi}(G),1}\right)
  \in\lset{G/N}_G^A\,,
\end{gather*}
where $\pi\colon G\to G/N$ denotes the canonical epimorphism. These
objects are called {\em induction, restriction, inflation} and {\em
deflation}.
\end{notation}


The following proposition is a straightforward verification, using the
explicit formula in Corollary~\ref{Mackey formula for fibered bisets
2}. It is completely analogous to the proof of Lemma~3 in
\cite[Section~3]{Bouc1996a} or \cite[Lemma~2.3.26]{BoucBook}.


\begin{proposition}\mylabel{decomposition}
Let $G$ and $H$ be finite groups and let $(U,\phi)\in\calM_{G\times
H}$. Then, with the notation from Proposition~\ref{eta and zeta},
one has the decomposition
\begin{equation*}
  \left(\frac{G\times H}{U,\phi}\right) \cong
  \Ind_P^G \otimes_{AP}
  \Inf_{P/\Khat}^P \otimes_{A(P/\Khat)}
  X \otimes_{A(Q/\Lhat)}
  \Def_{Q/\Lhat}^Q \otimes_{AQ}
  \Res^H_Q\,,
\end{equation*}
where
\begin{equation*}
  X=\left(\frac{P/\Khat \times Q/\Lhat}
  {U/(\Khat\times\Lhat),\phibar}\right)\,.
\end{equation*}
\end{proposition}


In the above proposition the homomorphism $\phibar\colon
U/(\Khat\times\Lhat)\to A$ is induced by $\phi$ and the group
$U/(\Khat\times\Lhat)$ is viewed as a subgroup of
$(P/\Khat)\times(Q/\Lhat)$ via the canonical isomorphism
\begin{equation*}
  \can\colon  (P\times Q)/(\Khat\times\Lhat) \to
  (P/\Khat) \times (Q/\Lhat)\,.
\end{equation*}

Note that setting $\Gbar:=P/\Khat$, $\Hbar:=Q/\Lhat$,
$\Ubar:=\can(U/(\Khat\times\Lhat))\le \Gbar\times \Hbar$, and
$\phibar\colon\Ubar\to A$ (using the above isomorphism), we have
\begin{equation*}
  p_1(\Ubar)=\Gbar\,,\quad \ker(\phibar_1)=\{1\}\,, \quad
  p_2(\Ubar)=\Hbar\,,\quad \ker(\phibar_2)=\{1\}\,.
\end{equation*}

%%%%%%%%%%%%%%%%%%%%%% SECTION 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{$A$-fibered Biset Functors}\label{sec fibered biset functors}

Throughout this section, let $k$ denote a commutative ring. In this section we recall and use the
general results in \cite[Sections~2 and 4]{Bouc1996a} on functor
categories, and we specialize the approach in
\cite[Section~3]{Bouc1996a} to our situation.

\begin{definition}
(a) By $\calC=\calCkA$ we denote the following category. Its objects
are the finite groups. For finite groups $G$ and $H$, we set
\begin{equation*}
  \Hom_{\calC}(G,H):= B_k^A(H,G):=k\otimes B^A(H,G)\,.
\end{equation*}
If also $K$ is a finite group then composition in $\calC$ is defined by
\begin{equation*}
-\cdotH-\colon B_k^A(K,H) \times B_k^A(H, G) \to
  B_k^A(K, G)\,,\quad (y,x)\mapsto y\cdotH x\,,
\end{equation*}
the $k$-linear extension of the bilinear map induced by taking the
tensor product of $A$-fibered bisets. The identity element of $G$ is the element $\left[\frac{G\times G}{\Delta(G),1}\right]$.

(b) An {\em $A$-fibered biset functor} over $k$ is a $k$-linear functor
from the $k$-linear category $\calCkA$ to the $k$-linear category
$\kMod$ of left $k$-modules. By $\calF=\calFkA$ we denote the
category of $A$-fibered biset functors over $k$. Their morphisms are
the natural transformations. Since the category $\kMod$ is abelian,
also the category $\calFkA$ is abelian, with point-wise
constructions of kernels, cokernels, etc. As explained in Section~2 of
\cite{Bouc1996a}, this allows to define subfunctors, quotient
functors, simple functors, projective functors, etc. If $M\in\calF$, $m\in M(H)$ and $b\in B_k^A(G,H)$, we will usually write $bm$ instead of $(\calF(b))(m)$.
\end{definition}

\begin{remark}\label{rem isomorphisms in C}
(a) Two finite groups $G$ and $H$ are isomorphic as groups if and only if they are isomorphic in $\calC$. In fact, if $\phi\colon G\to H$ is a group isomorphism then $\left[\frac{G\times H}{\Delta_\phi(G),1}\right]$ is an isomorphism between $G$ and $H$ in $\calC$. Conversely, assume $a\in B_k^A(G,H)$ and $b\in B_k^A(H,G)$ satisfy $ab=1$ and $ba=1$. Then, the equation $ab=1$ and the Mackey formula imply that there exist standard basis elements $\left[\frac{G\times H}{U,\phi}\right]$ and $\left[\frac{H\times G}{V,\psi}\right]$ such that $U*V=\Delta(G)$. Proposition~\ref{first consequences}(a) then implies that $k_1(U)=\{1\}$ and $p_1(U)=G$. Now Proposition~\ref{eta and zeta}(c) implies that $G$ is isomorphic to a section of $H$. Similarly, $ba=1$ implies that $H$ is isomorphic to a section of $G$. Thus, $G$ and $H$ are isomorphic groups.

\smallskip
(b) By Part~(a), one may replace $\calC$ with a full subcategory as long as every isomorphism type of finite groups is represented and one obtains a functor category that is equivalent to $\calF$. Thus, we may assume that $\mathrm{Ob}(\calC)$ is a set, without changing the equivalence class of $\calF$.
\end{remark}


The following remark shows that $\calF$ also has some functorial properties and rigidity when changing the abelian group $A$.


\begin{remark}\label{isomorphic calFs}
(a) If $f\colon A\to A'$ is a homomorphism of abelian groups then one obtains an induced $k$-linear homomorphism $B^A_k(G,H)\to B_k^{A'}(G,H)$ for any two finite groups $G$ and $H$. Moreover, these homomorphisms induce a $k$-linear functor $\calC_k^A\to\calC_k^{A'}$, and by restriction along this functor a $k$-linear functor $\calF_k^{A'}\to\calF_k^A$ between the associated functor categories. If $f$ is an isomorphism then all these induced $k$-linear homomorphisms and functors are isomorphisms.

\smallskip
(b) The inclusion $\torA\subseteq A$ induces a $k$-linear isomorphism $B_k^{\torA}(G,H)\myiso B_k^A(G,H)$ for any two finite groups $G$ and $H$, and further $k$-linear isomorphisms $\calC_k^{\torA}\to\calC_k^A$ and $\calF_k^A\myiso \calF_k^{\torA}$.
\end{remark}


\begin{nothing}\label{noth LGV} We recall several constructions from
\cite[Section~2]{Bouc1996a}.

\noindent For a finite group $G$ let $E_G=E_k^A(G)$ denote the endomorphism
algebra of $G$ in $\calCkA$, i.e.,
\begin{equation*}
  E_G=E_k^A(G):=\End_{\calC}(G)= B_k^A(G,G)\,.
\end{equation*}
Clearly, $E_G$ is a $k$-algebra, and for any fibered biset functor $F$,
the $k$-module $F(G)$ has the structure of a left $E_G$-module. This
way one obtains a functor, given by evaluation at $G$,
\begin{equation*}
  \calE_G\colon\calFkA\to \lMod{E_G}
\end{equation*}
which maps a functor $F\in\calFkA$ to $F(G)$ and a natural
transformation $\eta\colon F\to F'$ to $\eta_G$. The evaluation
functor $\calE_G$ has a left adjoint which we now describe. To a left
$E_G$-module $V$ one associates the functor $L_{G,V}\in\calFkA$, which is
defined on an object $H$ of $\calC$ by
\begin{equation*}
  L_{G,V}(H):=\Hom_{\calC}(G,H)\otimes_{E_G} V = B_k^A(H,G)\otimes_{E_G} V\,,
\end{equation*}
where $\Hom_{\calC}(G,H)$ is considered as a right $E_G$-module via
composition of morphisms. If also $K$ is an object of $\calC$ and if
$\phi\in\Hom_{\calC}(K,H)$ then $L_{G,V}(\phi)$ is given by
composition with $\phi$ in the first factor of the tensor product.
This way one obtains a functor
\begin{equation*}
  L_{G,-}\colon \lMod{E_G}\to\calFkA
\end{equation*}
which is left adjoint to $\calE_G$.
\end{nothing}

Lemma~1 in \cite{Bouc1996a} specializes in our situation to the
following Lemma.

\begin{lemma}\label{lem J}
Let $V$ be a simple left $E_G$-module. Then the
$A$-fibered biset functor $L_{G,V}$ has a unique maximal subfunctor
$J_{G,V}$. Its evaluation at a finite group $H$ is given by
\begin{equation*}
  J_{G,V}(H) = \left\{ \sum_{i} x_i\otimes v_i \in B_k^A(H,G)\otimes_{E_G} V %L_{G,V}(H) 
  \ \big|\ 
  \forall y\in B_k^A(G, H)\colon \sum_{i} (y\cdotH x_i)(v_i)=0 \right\}\,.
\end{equation*}
Moreover, the simple head $S_{G,V}$ of $L_{G,V}$ satisfies
$S_{G,V}(G)\cong V$.
\end{lemma}

\begin{nothing}\label{noth essential algebra}
{\bf The essential algebra.}\quad
For a finite group $G$ we set
\begin{equation*}
  I_G=I_k^A(G):=\sum_{|H|<|G|} B_k^A(G,H)\cdotH B_k^A(H,G)\subseteq B_k^A(G,G)=E_G\,.
\end{equation*}
The sum runs over all finite groups $H$ of order smaller than $|G|$. Obviously, $I_G$ is an ideal of $E_G$ and we denote by $\Ebar_G:=E_G/I_G$ the factor $k$-algebra. It is called the {\em essential algebra} of $G$.
\end{nothing}

\begin{proposition}\mylabel{simple functor proposition}
{\rm (a)} Let $S\in\calF$ be a simple functor and let $G$ be a finite group
such that $V:=S(G)\neq\{0\}$. Then $V$ is a simple $E_G$-module and
$S\cong S_{G,V}$ in $\calF$.

\smallskip
{\rm (b)} Let $S\in\calF$ be a simple functor and let $G$ be a finite group of smallest order satisfying $S(G)\neq \{0\}$. Then the simple $E_G$-module $S(G)$ is annihilated by $I_G$. In particular, every simple functor $S\in\calF$ is isomorphic to $S_{G,V}$ for some finite group $G$ and some simple $E_G$-module $V$ which is annihilated by $I_G$.

\smallskip
{\rm (c)} Let $G$ be a finite group and let $V$ be a simple $E_G$-module which is annihilated by $I_G$. Then $G$ is a {\em minimal group} for $S_{G,V}$, i.e., $S_{G,V}(G)\neq \{0\}$ and for every finite group $H$ with $S_{G,V}(H)\neq\{0\}$ one has $|G|\le|H|$.

\smallskip
{\rm (d)} For finite groups $G,H$ and simple modules $V\in\lMod{E_G}$ and
$W\in\lMod{E_H}$ one has $S_{G,V}\cong S_{H,W}$ if and only if
$S_{G,V}(H)\cong W$ as $E_H$-modules.
\end{proposition}

\begin{proof}
Part (a) follows from a short argument given at the beginning of
Section~4 in \cite{Bouc1996a}. Part~(b) is immediate from the definitions and Part~(a). To prove Part~(c) assume that $|H|<|G|$. Then the description of $J_{G,V}(H)$ in Lemma~\ref{lem J} implies that $L_{G,V}(H)=J_{G,V}(H)$. Thus, $S_{G,V}(H)= \{0\}$. Finally, Part~(d) follows immediately from Part~(a) and the last statement in Lemma~\ref{lem J}.
\end{proof}


%%%%%%%%%%%%%%%%%%%%%%% SECTION 4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Idempotents in $E_G$}\label{sec idempotents}

%Proposition~2.4(b) implies that in order to classify the simple functors $S\in\calF$, we need to classify the simple $\Ebar_G$-modules. This goal will be achieved in Section~4. The goal of this section is to introduce and study a  subalgebra $E_G^c$ of $E_G$ which covers $\Ebar_G$.

In this section, we introduce idempotents in $E_G$ that will play an important role later.

\smallskip
Recall that $G$ acts on $\calM_G$ by
conjugation. We will denote the $G$-fixed point set by $\calM_G^G$.
A pair $(K,\kappa)\in\calM_G$ is $G$-fixed if and only if $K$ is a
normal subgroup of $G$ and $\kappa$ is a $G$-stable homomorphism. Note
that if also $H$ is a finite group, $(U,\phi)\in\calM_{G\times H}$
and $p_1(U)=G$ then, by Proposition~\ref{eta and zeta}(a) and (b), one has
$l_0(U,\phi)\in\calM_G^G$.

\begin{definition}\mylabel{idempotent definition 1}
Let $G$ be a finite group and let $(K,\kappa)\in\calM_G^G$. We
define the $A$-fibered $(G,G)$-biset $E_{(K,\kappa)}$ as
\begin{equation*}
  E_{(K,\kappa)}:=\left(\frac{G\times G}{\Delta_K(G),\phi_\kappa}\right)\,,
\end{equation*}
where
\begin{gather*}
  \Delta_K(G):=\{(g_1,g_2)\in G\times G\mid g_1K=g_2K\}= (K\times \{1\})\Delta(G)
  =(\{1\}\times K)\Delta(G)\\
  \text{and}\quad
  \phi_\kappa(g_1,g_2)=\kappa(g_2^{-1}g_1)=\kappa(g_1g_2^{-1})\,.
\end{gather*}
Note that $\Delta_K(G)$ is a subgroup of $G\times G$, since $K$ is
normal in $G$, and that $\phi_\kappa$ is a homomorphism, since
$\kappa$ is $G$-stable. Note also that $E_{(K,\kappa)}^{\mathrm{op}}\cong
E_{(K,\kappa)}$.
\end{definition}

\begin{proposition}\mylabel{idempotent proposition}
Let $G$ and $H$ be finite groups and let
$(K,\kappa),(K',\kappa')\in\calM_G^G$. Moreover, let
$(U,\phi)\in\calM_{G\times H}$ with $l(U,\phi)=(G,K',\kappa')$.

\smallskip
{\rm (a)} One has $l(\Delta_K(G),\phi_\kappa)=(G,K,\kappa)=r(\Delta_K(G),\phi_\kappa)$.

\smallskip
{\rm (b)} One has
\begin{equation*}
  E_{(K,\kappa)}\otimes_{AG}
  \left(\frac{G\times H}{U,\phi}\right) \cong
  \begin{cases}
    \ \emptyset\,, & \text{if $\kappa|_{K\cap K'}\neq \kappa'|_{K\cap
    K'}$,}\\
    \left(\frac{G\times H}{(K\times 1)U,\kappa\cdot\phi}\right)\,, &
    \text{if $\kappa|_{K\cap K'} = \kappa'|_{K\cap K'}$,}
  \end{cases}
\end{equation*}
where $(\kappa\cdot\phi)((k,1)u):=\kappa(k)\phi(u)$ for $k\in K$ and
$u\in U$. Moreover, in the second case, one has
\begin{equation*}
  l((K\times1)U,\kappa\cdot\phi)= (G, KK', \kappa\cdot\kappa')\,.
\end{equation*}
In particular one has
\begin{equation*}
  E_{(K,\kappa)}\otimes_{AG} E_{(K',\kappa')} \cong
  \begin{cases}
    \ \emptyset\,, & \text{if $\kappa|_{K\cap K'}\neq\kappa'|_{K\cap K'}$,}\\
    E_{(KK',\kappa\cdot\kappa')}\,, &
    \text{if $\kappa|_{K\cap K'}=\kappa'|_{K\cap K'}$.}
  \end{cases}
\end{equation*}

\smallskip
{\rm (c)} Assume that $(K,\kappa)\le(K',\kappa')$. Then
\begin{equation*}
  E_{(K,\kappa)}\otimes_{AG}\left(\frac{G\times H}{U,\phi}\right)
  \cong \left(\frac{G\times H}{U,\phi}\right)\,.
\end{equation*}
In particular, one has $E_{(K,\kappa)}\otimes_{AG}E_{(K',\kappa')}
\cong E_{(K',\kappa')}$ and $E_{(K,\kappa)}\otimes_{AG}E_{(K,\kappa)}
\cong E_{(K,\kappa)}$.

\smallskip
{\rm (d)} Assume that $p_2(U,\phi)=H$. Then
\begin{equation*}
  \left(\frac{G\times H}{U,\phi}\right) \otimes_{AH}
  \left(\frac{G\times H}{U,\phi}\right)^{\mathrm{op}} \cong
  E_{(K',\kappa')}
\end{equation*}
in $\GsetGA$.
\end{proposition}

\begin{proof}
Part~(a) is an easy verification. Parts~(b) and (d) follow immediately
from the explicit Mackey formula in Corollary~\ref{Mackey formula for fibered
bisets 2}. Part~(c) is a special case of part~(b).
\end{proof}

\begin{nothing}\mylabel{e's and f's}
For $(K,\kappa)\in\calM_G^G$ we set
\begin{equation*}
  e_{(K,\kappa)}:=[E_{(K,\kappa)}]\in B_k^A(G,G) = E_G\,.
\end{equation*}
Note that $e_{(1,1)}=1\in E_G$. By Proposition~\ref{idempotent proposition}, we have
\begin{equation}\label{product of e's}
  e_{(K,\kappa)}\cdot e_{(L,\lambda)} =
  \begin{cases}
    e_{(KL,\kappa\lambda)}, &\text{if $\kappa|_{K\cap L} =
    \lambda|_{K\cap L}$,}\\
    0, & \text{otherwise,}
  \end{cases}
\end{equation}
for all $(K,\kappa),(L,\lambda)\in\calM_G^G$. This implies that, we
obtain a commutative subalgebra
\begin{equation}\label{algebra generated by e's}
  \bigoplus_{(K,\kappa)\in\calM_G^G} ke_{(K,\kappa)}
\end{equation}
of $E_G$. For $(K,\kappa),(L,\lambda)\in\calM_G^G$,
let $\mu_{(K,\kappa),(L,\lambda)}^{\triangleleft}$ denote the
M\"obius coefficient with respect to the poset $\calM_G^G$. Since
$\kappa$ is determined by $\lambda$ if $(K,\kappa)\le(L,\lambda)$,
this coefficient is equal to the M\"obius coefficient
$\mu_{K,L}^\triangleleft$ of $K$ and $L$ with respect to the poset
of normal subgroups of $G$. For $(K,\kappa)\in\calM_G^G$, we
set
\begin{equation}\label{definition of f's}
  f_{(K,\kappa)}:=\sum_{(K,\kappa)\le(L,\lambda)\in\calM_G^G}
  \mu_{K,L}^\triangleleft e_{(L,\lambda)}
\end{equation}
and obtain by M\"obius inversion that
\begin{equation}\label{e's from f's}
  e_{(K,\kappa)}=\sum_{(K,\kappa)\le(L,\lambda)\in\calM_G^G}
  f_{(L,\lambda)}\,.
\end{equation}
It follows that also the elements $f_{(K,\kappa)}$,
$(K,\kappa)\in\calM_G^G$, form a $k$-basis of the algebra in
(\ref{algebra generated by e's}). Moreover, note that
\begin{equation}\label{sum equals 1}
  \sum_{(K,\kappa)\in\calM_G^G} f_{(K,\kappa)}= e_{(1,1)} =1 \in
  E_G\,.
\end{equation}
The next proposition shows that these basis elements are mutually
orthogonal idempotents.
\end{nothing}

\begin{proposition}\mylabel{e,f-relations 1}
For all $(K,\kappa),(L,\lambda)\in\calM_G^G$ one has
\begin{equation*}
  e_{(K,\kappa)}f_{(L,\lambda)} = f_{(L,\lambda)}e_{(K,\kappa)} =
  \begin{cases}
    f_{(L,\lambda)}, & \text{if $(K,\kappa)\le (L,\lambda)$,}\\
    0, & \text{otherwise,}
  \end{cases}
\end{equation*}
and
\begin{equation*}
  f_{(K,\kappa)}f_{(L,\lambda)} =
  \begin{cases}
    f_{(K,\kappa)}, & \text{if $(K,\kappa)=(L,\lambda)$,}\\
    0, & \text{otherwise.}
  \end{cases}
\end{equation*}
\end{proposition}

\begin{proof}
First note that equations (\ref{product of e's}) and (\ref{definition
of f's}) imply immediately that
$e_{(K,\kappa)}f_{(L,\lambda)}=f_{(L,\lambda)}$ when
$(K,\kappa)\le(L,\lambda)$. Recall also that $e_{(K,\kappa)}$ and
$f_{(L,\lambda)}$ commute.

Next we prove the remaining statements of the proposition by induction
on $d=d(K,\kappa)+d(L,\lambda)$, where $d(K,\kappa)$ is defined as the
largest $n\in\NN_0$ such that there exists a chain
$(K,\kappa)=(K_0,\kappa_0)<\cdots<(K_n,\kappa_n)$ in $\calM_G^G$.

If $d=0$ then $(K,\kappa)$ and $(L,\lambda)$ are maximal in
$\calM_G^G$. Thus, $f_{(K,\kappa)}=e_{(K,\kappa)}$ and
$f_{(L,\lambda)}=e_{(L,\lambda)}$. We only have to show that
$e_{(K,\kappa)}e_{(L,\lambda)}=0$ when $(K,\kappa)\neq(L,\lambda)$. So
assume that $e_{(K,\kappa)}e_{(L,\lambda)}\neq0$. Then equation
(\ref{product of e's}) implies that $\kappa|_{K\cap L}=\lambda|_{K\cap
L}$ and that there exists a pair $(KL,\kappa\lambda)\in\calM_G^G$
with $(K,\kappa)\le(KL,\kappa\lambda)\ge(L,\lambda)$. Since
$(K,\kappa)$ and $(L,\lambda)$ are maximal in $\calM_G^G$, we
obtain $(K,\kappa)=(KL,\kappa\lambda)=(L,\lambda)$.

Now assume that $d>0$ and that the proposition holds for smaller
values of $d$. We first show that if
$f_{(K,\kappa)}f_{(L,\lambda)}\neq0$ then $(K,\kappa)=(L,\lambda)$. In
fact $f_{(K,\kappa)}f_{(L,\lambda)}\neq0$ implies, after expanding
$f_{(K,\kappa)}$ and $f_{(L,\lambda)}$ according to equation
(\ref{definition of f's}) and using equation (\ref{product of e's}),
that $\kappa|_{K\cap L}=\lambda|_{K\cap L}$ and that
\begin{equation*}
  f_{(K,\kappa)}f_{(L,\lambda)} \in
  \bigoplus_{(KL,\kappa\lambda)\le(M,\mu)\in\calM_G^G}
  ke_{(M,\mu)}\,.
\end{equation*}
This implies that $e_{(KL,\kappa\lambda)}f_{(K,\kappa)}f_{(L,\lambda)}
= f_{(K,\kappa)}f_{(L,\lambda)}$ by Equation~(\ref{product of e's}). Assume that
$(K,\kappa)\neq(L,\lambda)$. Then $(K,\kappa)<(KL,\kappa\lambda)$ or $(L,\lambda)<(KL,\kappa\lambda)$, and
by induction we obtain $e_{(KL,\kappa\lambda)}f_{(K,\kappa)}=0$ or $e_{(KL,\kappa\lambda)}f_{(L,\lambda)}=0$. 
In either case we obtain $f_{(K,\kappa)}f_{(L,\lambda)} = e_{(KL,\kappa\lambda)}f_{(K,\kappa)}f_{(L,\lambda)}=0$, a contradiction.

Next we assume $(K,\kappa)=(L,\lambda)$. By the result of the previous paragraph and by
induction we have
\begin{equation*}
  e_{(K,\kappa)} = e_{(K,\kappa)}^2 =
  \Bigl(\sum_{(K,\kappa)\le(K',\kappa')\in\calM_G^G}
  f_{(K',\kappa')}\Bigr)^2
  = f_{(K,\kappa)}^2+\sum_{(K,\kappa)<(K',\kappa')\in\calM_G^G}
  f_{(K',\kappa')}\,.
\end{equation*}
Comparing this with Equation~(\ref{e's from f's}) we obtain
$f_{(K,\kappa)}^2=f_{(K,\kappa)}$.

Finally, Equation (\ref{e's from f's}) implies that
\begin{equation*}
  e_{(K,\kappa)}f_{(L,\lambda)} =
  \sum_{(K,\kappa)\le(K',\kappa')\in\calM_G^G}
  f_{(K',\kappa')}f_{(L,\lambda)}\,.
\end{equation*}
By induction and by what we already proved, the latter sum is equal to
$f_{(L,\lambda)}$ if $(K,\kappa)\le(L,\lambda)$ and equal to $0$
otherwise.
\end{proof}


In Section \ref{sec simple functors} we will need the following lemma.


\begin{lemma}\label{lem delete f}
Let $G$ and $H$ be finite groups and let $(U,\phi)\in\calM_{G\times H}$ with 
$p_1(U)=G$ and $p_2(U)=H$. Set $(K,\kappa):=l_0(U,\phi)$ and $(L,\lambda):=r_0(U,\phi)$. Then
\begin{equation*}
  \left[\frac{G\times H}{U,\phi}\right]\cdotH f_{(L,\lambda)} 
  = f_{(K,\kappa)}\cdotG \left[\frac{G\times H}{U,\phi}\right]\cdotH f_{(L,\lambda)} 
  = f_{(K,\kappa)}\cdotG \left[\frac{G\times H}{U,\phi}\right]
\end{equation*}
\end{lemma}

\begin{proof}
We only prove the first equation. The second one follows by a similar argument or by applying 
$-^{\mbox{\small op}}$. Set $x:=\left[\frac{G\times H}{U,\phi}\right]$. Note that $e_{(K,\kappa)} x = x$ (see~Proposition~\ref{idempotent proposition}(c)). Using the definition of $f_{(K,\kappa)}$, it suffices to show that $e_{(K',\kappa')} xf_{(L,\lambda)}=0$ for all $(K',\kappa')\in\calM_G^G$ with $(K',\kappa')>(K,\kappa)$. By Proposition~\ref{idempotent proposition}(b), we have $e_{(K',\kappa')}x = \left[\frac{G\times H}{V,\psi}\right]$ for some $(V,\psi)\in\calM_{G\times H}$ satisfying $l(V,\psi)=(G,K',\kappa')$ and $r(V,\psi)=(H,L',\lambda')$ for some $(L',\lambda')\in\calM_H^H$ with $(L,\lambda)\le (L',\lambda')$. By Proposition~\ref{eta and zeta}(c), we have $G/K\cong H/L$ and also $G/K'\cong H/L'$. Since $K<K'$, this implies $L<L'$. Thus, $e_{(K',\kappa')}xf_{(L,\lambda)}=e_{(K',\kappa')}xe_{(L',\lambda')}f_{(L,\lambda)} = 0$ by Proposition~\ref{e,f-relations 1}, and the proof is complete.
\end{proof}


%%%%%%%%%%%%%%%%%%% SECTION 5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Linkage}\label{sec linkage}

In this section, we introduce an equivalence relation, that we call linkage, on the set $\mathcal M_G^G$ of 
$G$-fixed elements in $\mathcal M_G$. The linkage classes will be used in later sections, especially in the
determination of the parametrizing set for the simple fibered biset functors.

\begin{definition}\mylabel{linkage definition}
(a) Let $G$ and $H$ be finite groups and let $(K,\kappa)\in\calM_G^G$
and $(L,\lambda)\in\calM_H^H$. We say that $(G,K,\kappa)$ and
$(H,L,\lambda)$ are {\em linked} if there exists
$(U,\phi)\in\calM_{G\times H}$ with $l(U,\phi)=(G,K,\kappa)$ and
$r(U,\phi)=(H,L,\lambda)$. In this case we also write
$(G,K,\kappa)\mathop{\sim}\limits_{(U,\phi)}(H,L,\lambda)$ or just
$(G,K,\kappa)\sim(H,L,\lambda)$. Note that if also $I$ is a finite
group and $(M,\mu)\in\calM_I^I$ and if $(V,\psi)\in\calM_{H\times
I}$ is such that
$(H,L,\lambda)\mathop{\sim}\limits_{(V,\psi)}(I,M,\mu)$ then
$(G,K,\kappa)\mathop{\sim}\limits_{(U*V,\phi*\psi)}(I,M,\mu)$.
Therefore, the relation $\sim$ is an equivalence relation. 

\smallskip
(b) As a special case we also say that elements $(K,\kappa)$ and $(K',\kappa')$
of $\calM_G^G$ are {\em $G$-linked} if
$(G,K,\kappa)\sim(G,K',\kappa')$. We use again the
notation $(K,\kappa)\sim_G(K',\kappa')$ or just
$(K,\kappa)\sim(K',\kappa')$. Note that if
$(K,\kappa)\sim_G(K',\kappa')$ then $G/K\cong G/K'$ by
Proposition~\ref{eta and zeta} and therefore, $|K|=|K'|$. We write
$\{K,\kappa\}_G$ for the $G$-linkage class of $(K,\kappa)$.
\end{definition}


\begin{nothing}\mylabel{cocycle notation}
Let $G$ be a finite group and let $K\le Z(G)$. Let $\sigma\colon
G/K\to G$ be a section of the canonical epimorphism $\pi\colon G\to
G/K$ (i.e., $\pi\circ\sigma=\id_{G/K}$). Then $\sigma$ defines a
$2$-cocycle $\alpha\in Z^2(G/K,K)$ by the 
equation
\begin{equation}\label{cocycle section relation}
  \sigma(x)\sigma(y) = \alpha(x,y)\sigma(xy)\,,\quad \text{for $x,y\in
  G/K$.}
\end{equation}
When $\sigma$ runs through all possible sections of $\pi$ then
$\alpha$ runs through a full cohomology class $[\alpha]$ in
$H^2(G/K,K)$. We say that $\alpha$ {\em describes} the central
extension $1\to K\to G\to G/K\to 1$.
\end{nothing}


\begin{proposition}\mylabel{linkage criterion}
Let $G$ and $H$ be finite groups and let $(K,\kappa)\in\calM_G^G$
and $(L,\lambda)\in\calM_H^H$. Assume that $\kappa$ and $\lambda$
are faithful and let $\alpha\in Z^2(G/K,K)$ and $\beta\in Z^2(H/L,L)$
be cocycles which describe the central extensions $1\to K\to G\to
G/K\to 1$ and $1\to L\to H\to H/L\to 1$, respectively. Then the
following are equivalent:

\smallskip
{\rm (i)} $(G,K,\kappa)\sim(H,L,\lambda)$.

\smallskip
{\rm (ii)} There exists an isomorphism $\eta\colon H/L\to G/K$ such
that
\begin{equation*}
  [\kappa\circ\alpha]=[\lambda\circ\beta\circ(\eta^{-1}\times\eta^{-1})]
\end{equation*}
as elements in $H^2(G/K,\torA)$.
\end{proposition}

\begin{proof}
Let $\sigma\colon G/K\to G$ and $\tau\colon H/L\to H$ be sections of
the canonical epimorphisms such that
\begin{equation*}
  \sigma(x)\sigma(y) = \alpha(x,y)\sigma(xy)\quad\text{and}\quad
  \tau(w)\tau(z) = \beta(w,z)\tau(wz)
\end{equation*}
for all $x,y\in G/K$ and $w,z\in H/L$.

We first show that (i) implies (ii). Let
$(U,\phi)\in\calM_{G\times H}$ with $l(U,\phi)=(G,K,\kappa)$ and
$r(U,\phi) = (H,L,\lambda)$. Then we obtain an isomorphism $\eta\colon
H/L\to G/K$ from Proposition~\ref{eta and zeta}(c). We set
$\tau':=\tau\circ\eta^{-1}\colon G/K\to H$ and
$\beta':=\beta\circ(\eta^{-1}\times\eta^{-1})\in Z^2(G/K,L)$. For all $x,y\in G/K$
we obtain
\begin{align*}
  &  \kappa\bigl(\alpha(x,y)\bigr)
  \lambda\bigl(\beta'(x,y)\bigr)^{-1}\\
  = & \kappa\bigl(\sigma(x)\sigma(y)\sigma(xy)^{-1}\bigr)
  \lambda\bigl(\tau'(x)\tau'(y)\tau'(xy)^{-1}\bigr)^{-1}\\
  = & \phi\Bigl(\sigma(x)\sigma(y)\sigma(xy)^{-1},
  \tau'(x)\tau'(y)\tau'(xy)^{-1}\Bigr)\\
  = & \phi\bigl(\sigma(x),\tau'(x)\bigr)
  \phi\bigl(\sigma(y),\tau'(y)\bigr)
  \phi\bigl(\sigma(xy),\tau'(xy)\bigr)^{-1}\\
  = & \mu(x)\mu(y)\mu(xy)^{-1}\,,
\end{align*}
where $\mu\colon G/K\to\torA$ is defined by
$\mu(x)=\phi(\sigma(x),\tau'(x))$. Note here that, by the definition of
$\eta$ and $\tau'$, we have $(\sigma(x),\tau'(x))\in U$ for every 
$x\in G/K$.

\smallskip
Next we show that (ii) implies (i). We define
\begin{equation*}
  U:=\{(g,h)\in G\times H\mid gK=\eta(hL)\}\,.
\end{equation*}
Then $k_1(U)=K$, $k_2(U)=L$, $p_1(U)=G$ and $p_2(U)=H$. We only need
to show that $\kappa\times \lambda^{-1}\in (K\times L)^*$ can be
extended to a homomorphism $\phi\in U^*$. Consider the central extension
\begin{equation*}
  1\to K\times L \to U \to U/(K\times L) \to 1
\end{equation*}
and note that $p_1\colon U\to G$ induces an isomorphism $\pbar_1\colon
U/(K\times L)\to G/K$. Furthermore, note that, with 
\begin{equation*}
  \tau':=\tau\circ\eta^{-1}\colon G/K\to H\quad\text{and}\quad 
  \beta':=\beta\circ(\eta^{-1}\times\eta^{-1})\in Z^2(G/K,L)\,,
\end{equation*}
the function
\begin{equation*}
  \rho\colon G/K\to U\,,\quad
  x\mapsto\bigl(\sigma(x),\tau'(x)\bigr)\,,
\end{equation*}
is a section of the surjection $U\to U/(K\times
L)\mathop{\to}\limits^{\pbar_1} G/K$ and that
\begin{equation*}
  \gamma\colon G/K\times G/K \to K\times L\,, \quad (x,y)\mapsto
  \bigl(\alpha(x,y),\beta'(x,y)\bigr)\,,
\end{equation*}
defines a cocycle $\gamma\in Z^2(G/K,K\times L)$ such that
\begin{equation*}
  \rho(x)\rho(y) = \gamma(x,y)\rho(xy)
\end{equation*}
for all $x,y\in G/K$. This means that $\rho':=\rho\circ\pbar_1\colon
U/(K\times L)\to U$ is a section of $U\to U/(K\times L)$ with
corresponding cocycle $\gamma':=\gamma\circ(\pbar_1\times\pbar_1)\in
Z^2(U/(K\times L),K\times L)$. Now, $\kappa\times\lambda^{-1}\in
(K\times L)^*$ extends to a homomorphism $\phi\in U^*$ if and only if
in the following part of the Hochschild-Serre five term exact sequence (see \cite[Theorem~1.5.1]{Karpilovsky1987a}),
\begin{equation*}
  \cdots\ar\Hom(U,\torA)\ar \Hom(K\times L,\torA) \Ar{\delta}
  H^2(U/(K\times L),\torA)\ar \cdots\,,
\end{equation*}
the homomorphism $\kappa\times\lambda^{-1}\in\Hom(K\times L,\torA)$
belongs to the kernel of the connecting homomorphism $\delta$. However,
by \cite[Theorem~1.5.1]{Karpilovsky1987a}, one has $\delta(\kappa\times\lambda^{-1}) =
[(\kappa\times\lambda^{-1})\circ\gamma']$. Therefore, it suffices to
show that $[(\kappa\times\lambda^{-1})\circ\gamma]=1\in
H^2(G/K,\torA)$. But
\begin{equation*}
  \bigl((\kappa\times\lambda^{-1})\circ\gamma\bigr)(x,y) =
  \kappa\bigl(\alpha(x,y)\bigr) \cdot
  \lambda\bigl(\beta'(x,y)\bigr)^{-1} = \mu(x)\mu(y)\mu(xy)^{-1}
\end{equation*}
for some function $\mu\colon G/K\to\torA$, by the hypothesis in (ii).
\end{proof}

\begin{remark}\mylabel{rem linkage criterion}
(a) Let $G$ and $H$ be finite groups and let $(K,\kappa)\in\calM_G^G$
and $(L,\lambda)\in \calM_H^H$. Let $\Khat:=\ker(\kappa)$,
$\Lhat:=\ker(\lambda)$ and set
\begin{equation*}
  \Gbar:=G/\Khat\,, \quad \Kbar:=K/\Khat\,, \quad \Hbar:=H/\Lhat\,,
  \quad \Lbar:=L/\Lhat\,.
\end{equation*}
Furthermore, let $\kappabar\in\Kbar^*$ and $\lambdabar\in \Lbar^*$
denote the homomorphisms that inflate to $\kappa$ and $\lambda$,
respectively. It is easy to see that
\begin{equation*}
  (G,K,\kappa)\sim(H,L,\lambda) \iff
  (\Gbar,\Kbar,\kappabar)\sim(\Hbar,\Lbar,\lambdabar)\,.
\end{equation*}
Therefore, the question if $(G,K,\kappa)$ is linked to $(H,L,\lambda)$
can be reduced to the case where $\kappa$ and $\lambda$ are faithful
and can be answered by the criterion in Proposition~\ref{linkage
criterion}.

\smallskip
(b) Proposition~\ref{linkage criterion} is still true if $H^2(G/K,\torA)$ in (ii) 
is replaced by $H^2(G/K,A)$. The proof is exactly the same, mutatis mutandis. Note also that the natural map $H^2(G/K,\torA)\to H^2(G/K,A)$ is injective by the long exact cohomology sequence, since $H^1(G/K,A/\torA)\cong \Hom(G/K,A/\torA)$ is trivial.
\end{remark}

\begin{nothing}\mylabel{linked e's and f's}
(a) Recall that, for $(K,\kappa)\in\calM_G^G$, we denote by
$\{K,\kappa\}_G$ the $G$-linkage class of $(K,\kappa)$ in
$\calM_G^G$. The partial order on $\calM_G^G$ induces a partial
order on the linkage classes, defined for
$(K,\kappa),(L,\lambda)\in\calM_G^G$ by
\begin{equation*}
  \{K,\kappa\}_G\le \{L,\lambda\}_G
\end{equation*}
if and only if there exists $(K',\kappa')\in\{K,\kappa\}_G,
(L',\lambda')\in\{L,\lambda\}_G$ with $(K',\kappa')\le (L',\lambda')$.
In order to see that this relation is transitive it suffices to show
that if $(K,\kappa)\le(L,\lambda)$ in $\calM_G^G$ and
$(K',\kappa')\sim_G(K,\kappa)$ in $\calM_G^G$ then there exists
$(L',\lambda')\in\calM_G^G$ with
$(K',\kappa')\le(L',\lambda')\sim_G(L,\lambda)$. The existence of
$(L',\lambda')$ is seen as follows. Since
$(K,\kappa)\sim_G(K',\kappa')$, there exists $(U,\phi)\in\calM_{G\times
G}$ with $l(U,\phi)=(G,K,\kappa)$ and $r(U,\phi)=(G,K',\kappa')$.
We can write
\begin{equation*}
  E_{(L,\lambda)}\otimes_{AG}\left(\frac{G\times G}{U,\phi}\right) \cong
  \left(\frac{G\times G}{V,\psi}\right)
\end{equation*}
for some $(V,\psi)\in\calM_{G\times G}$. Using $(K,\kappa)\le (L,\lambda)$,
Proposition~\ref{idempotent proposition}(b) implies
$l(V,\psi)=(G,L,\lambda)$. Now Propositions~\ref{eta and zeta}(a)
and \ref{first consequences}(b) imply $r(V,\psi)=(G,L',\lambda')$
for some $(L',\lambda')\in\calM_G^G$ with $(K',\kappa')\le
(L',\lambda')\sim_G(L,\lambda)$, as desired.

\smallskip
(b) For $(K,\kappa)\in\calM_G^G$ we define the elements
\begin{equation*}
  e_{\{K,\kappa\}_G}:= \sum_{(K',\kappa')\in\{K,\kappa\}_G}
  e_{(K',\kappa')} \in B_k^A(G, G)
\end{equation*}
and
\begin{equation*}
  f_{\{K,\kappa\}_G}:= \sum_{(K',\kappa')\in\{K,\kappa\}_G}
  f_{(K',\kappa')} \in B_k^A(G, G)\,.
\end{equation*}
\end{nothing}


The following proposition now follows immediately from
Proposition~\ref{e,f-relations 1}.


\begin{proposition}\mylabel{e,f-relations 2}
Let $(K,\kappa),(L,\lambda)\in\calM_G^G$. Then
\begin{align*}
  e_{\{K,\kappa\}_G}f_{\{L,\lambda\}_G} =
  f_{\{L,\lambda\}_G}e_{\{K,\kappa\}_G}
  & = 0 \quad\text{unless
  $\{K,\kappa\}_G\le\{L,\lambda\}_G$,}\\
  e_{\{K,\kappa\}_G}f_{\{K,\kappa\}_G} =
  f_{\{K,\kappa\}_G}e_{\{K,\kappa\}_G}
  & =  f_{\{K,\kappa\}_G}\quad\text{and}\\
  f_{\{K,\kappa\}_G}f_{\{L,\lambda\}_G}
  & =
  \begin{cases}
    f_{\{K,\kappa\}_G}\,, & \text{if $\{K,\kappa\}_G =
    \{L,\lambda\}_G$,}\\
    0\,, & \text{otherwise.}
  \end{cases}
\end{align*}
\end{proposition}

%%%%%%%%%%%%%%% SECTION 6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{The algebra $E_G^c$ and the group $\Gamma_{(G,K,\kappa)}$}\label{sec E^c}

This section is devoted to the study of the structure of the subalgebra $E_G^c$ of $E_G$ generated by the classes of
transitive $A$-fibered $(G,G)$-bisets whose stabilizing pairs have full projections. In Section~\ref{sec Ebar} it will be shown that this algebra covers the quotient $\Ebar_G$. In this section we will show that it is isomorphic to a
direct product of matrix algebras over certain group algebras $k\Gamma_{(G,K,\kappa)}$. These group algebras, together with the linkage classes, will be the main ingredients of the parametrization of the simple fibered biset functors in Section~\ref{sec simple functors}.


\begin{nothing}\mylabel{covering algebra} {\bf The algebra $E_G^c$ and the group $\Gamma_{(G,K,\kappa)}$.}\quad
(a) Let $G$ and $H$ be finite groups and let
$(U,\phi)\in\calM_{G\times H}$. We say that $(U,\phi)$ is {\em
covering} if $p_1(U)=G$ and $p_2(U)=H$. We denote by $\calMc_{G\times
H}$ the set of all covering pairs of $\calM_{G\times H}$. Note
that if $(U,\phi)$ as above is covering then
$l_0(U,\phi)\in\calM_G^G$ and $r_0(U,\phi)\in\calM_H^H$. If also
$K$ is a finite group and also $(V,\psi)\in\calMc_{H\times K}$ then, by the Mackey formula,
\begin{equation*}
  \left[\frac{G\times H}{U,\phi}\right] \cdotH
  \left[\frac{H\times K}{V,\psi}\right] =
  \begin{cases}
    \left[\frac{G\times K}{U*V,\phi*\psi}\right]\,, &
    \text{if $\phi_2=\psi_1$ on $k_2(U)\cap k_1(V)$,}\\
    0\, & \text{otherwise,}
  \end{cases}
\end{equation*}
with $(U*V,\phi*\psi)\in\calMc_{G\times K}$ in the first case. This
implies that the $k$-span
\begin{equation*}
  E_G^c = E_k^{A,c}(G) = B_k^{A,c}(G, G)
\end{equation*}
of the canonical basis elements $\left[\frac{G\times
G}{U,\phi}\right]$ of $E_G=B_k^A(G, G)$, with
$(U,\phi)\in\calMc_{G\times G}$, is a $k$-subalgebra of
$E_G=B_k^A(G, G)$. Note that $e_{(K,\kappa)},f_{(K,\kappa)},
e_{\{K,\kappa\}_G}, f_{\{K,\kappa\}_G}\in E_G^c$ for all
$(K,\kappa)\in\calM_G^G$.

\smallskip
(b) Let $G$ be a finite group and let $(K,\kappa)\in\calM_G^G$. It
follows from Propositions~\ref{first consequences}(d) and
\ref{idempotent proposition} that the standard basis elements
$\left[\frac{G\times G}{U,\phi}\right]$ of $E_G^c$ with
$l(U,\phi)=(G,K,\kappa)=r(U,\phi)$ form a finite group $\Gamma_{(G,K,\kappa)}$
under multiplication, with identity element $e_{(K,\kappa)}$ and inverses induced by taking
opposite fibered bisets.

\smallskip
(c) More generally, assume that $(K,\kappa)\in\calM_G^G$ and $(L,\lambda)\in\calM_H^H$ and set
\begin{equation*}
  \lGamma{(G,K,\kappa)}_{(H,L,\lambda)}:=\{\left[\frac{G\times H}{U,\phi}\right]\mid 
  l(U,\phi)=(G,K,\kappa),\ r(U,\phi)=(H,L,\lambda)\}\,.
\end{equation*}
This set is non-empty if and only if $(G,K,\kappa)$ and $(H,L,\lambda)$ are linked. Assume from now on that this is the case. Then it is a $(\Gamma_{(G,K,\kappa)},\Gamma_{(H,L,\lambda)})$-biset and each of the groups $\Gamma_{(G,K,\kappa)}$ and $\Gamma_{(H,L,\lambda)}$ acts transitively and freely on 
$\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}$. This is easily verified by tensoring with opposites of standard basis elements and using Proposition~\ref{first consequences}(d). Therefore, each element $\left[\frac{G\times H}{U,\phi}\right]\in\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}$ induces an isomorphism
\begin{equation*}
  \gamma\colon \Gamma_{(H,L,\lambda)}\liso\Gamma_{(G,K,\kappa)}\,,\quad
  y\mapsto \left[\frac{G\times H}{U,\phi}\right]\cdotH y\cdotH \left[\frac{G\times H}{U,\phi}\right]^{\mathrm{op}}\,,
\end{equation*}
and if also $\left[\frac{G\times H}{U',\phi'}\right]\in \lGamma{(G,K,\kappa)}_{(H,L,\lambda)}$ then the resulting isomorphism $\gamma'$ satisfies $\gamma'=c_z\circ\gamma$, where $z=\left[\frac{G\times H}{U',\phi'}\right]\cdotG \left[\frac{G\times H}{U,\phi}\right]^{\mathrm{op}}\in\Gamma_{(H,L,\lambda)}$. As $(\Gamma_{(G,K,\kappa)},\Gamma_{(H,L,\lambda)})$-biset we have $\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}\cong \left[\frac{\Gamma_{(G,K,\kappa)}\times\Gamma_{(H,L,\lambda)}}{\Delta_\gamma}\right]$, where $\Delta_\gamma:=\{(\gamma(y),y)\mid y\in\Gamma_{(H,L,\lambda)}\}$.
As a consequence, one obtains a canonical bijection 
\begin{equation}\label{eqn irr bijection}
  \Irr(k\Gamma_{(H,L,\lambda)})\myiso\Irr(k\Gamma_{(G,K,\kappa)})
\end{equation}
induced by the category equivalence $k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}] \otimes_{k\Gamma_{(H,L,\lambda})} -$ between the category of left $k\Gamma_{(H,L,\lambda)}$-modules and the category of left $k\Gamma_{(G,K,\kappa)}$-modules. Its inverse is given by tensoring with the bimodule $k[\lGamma{(H,L,\lambda)}_{(G,K,\kappa)}]=k[\lGamma{(G,K,\kappa)}^{\mathrm{op}}_{(H,L,\lambda)}]$. The bijection in (\ref{eqn irr bijection}) coincides with the one given by transport of structure via the isomorphism $\gamma$.
\end{nothing}


The goal of this section is the following theorem describing the
structure of the $k$-algebra $E_G^c=B_k^{A,c}(G, G)$.


\begin{theorem}\mylabel{covering algebra structure theorem}
There exists a $k$-algebra isomorphism
\begin{equation*}
 \bigoplus_{\{K,\kappa\}_G\in\calM_G^G/\sim} \Mat_{|\{K,\kappa\}_G|}(k\Gamma_{(G,K,\kappa)})
  \liso E_G^c
\end{equation*}
with the following property: For every $(K,\kappa)\in\calM_G^G$, writing $\{K,\kappa\}_G=\{(K_1,\kappa_1),\ldots,(K_n,\kappa_n)\}$, the element $f_{(K_i,\kappa_i)}\in E_G^c$ is mapped to the diagonal idempotent matrices $e_i=\dia(0,\ldots,0,1,0,\ldots,0)\in\Mat_{|\{K,\kappa\}_G|}(k\Gamma_{(G,K,\kappa)})$, $i=1,\ldots,|\{K,\kappa\}_G|$, in the $\{K,\kappa\}_G$-component.% In particular, the map
%\begin{equation*}
%  k\Gamma_{(G,K,\kappa)}\to f_{(K,\kappa)} E_G^c f_{(K,\kappa)}\,,\quad x\mapsto f_{(K,\kappa)}xf_{(K,\kappa)}\,,
%\end{equation*}
%is a $k$-algebra isomorphism.
\end{theorem}


Before we can prove the theorem we need a few auxiliary results.


\begin{lemma}\mylabel{orthogonality 1}
Let $(U,\phi)\in\calMc_{G\times G}$ and let
$(K,\kappa),(L,\lambda)\in\calM_G^G$. If $f_{\{K,\kappa\}_G}
\left[\frac{G\times G}{U,\phi}\right] f_{\{L,\lambda\}_G} \neq 0$ then
$\{K,\kappa\}_G=\{L,\lambda\}_G$.
\end{lemma}

\begin{proof}
If the above expression is non-zero then there exist
$(K',\kappa')\in\{K,\kappa\}_G$ and $(L',\lambda')\in\{L,\lambda\}_G$
such that $f_{(K',\kappa')} \left[\frac{G\times G}{U,\phi}\right]
f_{(L',\lambda')} \neq 0$ in $E_G^c$. Expanding $f_{(L',\lambda')}$ as
in Equation~(\ref{definition of f's}), we see that there exists
$(L'',\lambda'')\in\calM_G^G$ with
$(L',\lambda')\le(L'',\lambda'')$ and $f_{(K',\kappa')}
\left[\frac{G\times G}{U,\phi}\right] e_{(L'',\lambda'')} \neq 0$. So
also $\left[\frac{G\times G}{U,\phi}\right] e_{(L'',\lambda'')}$ is
non-zero and of the form $\left[\frac{G\times G}{V,\psi}\right]$ for
some $(V,\psi)\in\calMc_{G\times G}$ satisfying
$r_0(V,\psi)\ge(L'',\lambda'')$ and $(K'',\kappa''):=l_0(V,\psi)\ge
l_0(U,\phi)$ by Proposition~\ref{first consequences}(b). By
Proposition~\ref{idempotent proposition}, we now have
\begin{equation*}
  0 \neq f_{(K',\kappa')}
  \left[\frac{G\times G}{U,\phi}\right] e_{(L'',\lambda'')}
  = f_{(K',\kappa')} e_{(K'',\kappa'')}
  \left[\frac{G\times G}{U,\phi}\right] e_{(L'',\lambda'')}
\end{equation*}
which implies $(K'',\kappa'')\le(K',\kappa')$ by
Proposition~\ref{e,f-relations 1}. Altogether, we obtain
\begin{align*}
  \{L,\lambda\}_G & =\{L',\lambda'\}_G \le \{L'',\lambda''\}_G \le
  \{r_0(V,\psi)\}_G = \{l_0(V,\psi)\}_G\\
  & = \{K'',\kappa''\}_G \le \{K',\kappa'\}_G =\{K,\kappa\}_G\,.
\end{align*}
Similarly, we can prove $\{K,\kappa\}_G\le\{L,\lambda\}_G$.
\end{proof}


\begin{corollary}\mylabel{Bc decomposition}
Let $G$ be a finite group. The elements $f_{\{K,\kappa\}_G}$,
$\{K,\kappa\}_G\in\calM_G^G/\sim$, are mutually orthogonal central
idempotents of $E_G^c=B_k^{A,c}(G, G)$ and their sum is equal to $1$. In
particular, one has a decomposition
\begin{equation}\label{decomposition 1}
  E_G^c = \bigoplus_{\{K,\kappa\}_G\in\calM_G^G/\sim}
  f_{\{K,\kappa\}_G}E_G^c
\end{equation}
of $E_G^c$ into two-sided ideals.
\end{corollary}

\begin{proof}
We already know from Proposition~\ref{e,f-relations 2} that the
elements $f_{\{K,\kappa\}_G}$, $\{K,\kappa\}_G\in\calM_G^G/\sim$,
are mutually orthogonal idempotents of $E_G^c$
and we know from Equation~(\ref{sum equals 1}) that their sum is equal
to $1$. From this and from Lemma~\ref{orthogonality 1}, we obtain the three
decompositions
\begin{equation*}
  E_G^c = \bigoplus f_{\{K,\kappa\}_G} E_G^c =
  \bigoplus f_{\{K,\kappa\}_G} E_G^c f_{\{K,\kappa\}_G} =
  \bigoplus E_G^c f_{\{K,\kappa\}_G}
\end{equation*}
where each of the three sums runs over
$\{K,\kappa\}_G\in\calM_G^G/\sim$. Since
$f_{\{K,\kappa\}_G}E_G^cf_{\{K,\kappa\}_G}\subseteq
f_{\{K,\kappa\}_G}E_G^c$ and
$f_{\{K,\kappa\}_G}E_G^cf_{\{K,\kappa\}_G}\subseteq
E_G^cf_{\{K,\kappa\}_G}$, we obtain equality
\begin{equation*}
  f_{\{K,\kappa\}_G} E_G^c =
  f_{\{K,\kappa\}_G} E_G^c f_{\{K,\kappa\}_G} =
  E_G^c f_{\{K,\kappa\}_G}
\end{equation*}
for every $\{K,\kappa\}_G\in\calM_G^G/\sim$. Now let $b\in E_G^c$
be arbitrary. Then
\begin{equation*}
  \sum_{\{K,\kappa\}_G\in\calM_G^G/\sim} f_{\{K,\kappa\}_G}b = b =
  \sum_{\{K,\kappa\}_G\in\calM_G^G/\sim} bf_{\{K,\kappa\}_G}
\end{equation*}
and we obtain $f_{\{K,\kappa\}_G}b = bf_{\{K,\kappa\}_G}$ for every
$\{K,\kappa\}_G\in\calM_G^G/\sim$ by the equality of the above
decompositions. This completes the proof.
\end{proof}


\begin{nothing}\mylabel{two decompositions}
Besides the decomposition (\ref{decomposition 1}) of $E_G^c$ into ideals we have
a second natural decomposition of $E_G^c$, this time into $k$-submodules, again indexed
by $\calM_G^G/\sim$. For $\{K,\kappa\}_G\in\calM_G^G/\sim$, we
denote by $E_G^{c,\{K,\kappa\}}$
the $k$-span of all standard basis elements $\left[\frac{G\times
G}{U,\phi}\right]$ with $(U,\phi)\in\calMc_{G\times G}$ satisfying
$l_0(U,\phi)\in\{K,\kappa\}_G$. Note that this last condition is
equivalent to requiring $r_0(U,\phi)\in\{K,\kappa\}_G$. We have the
obvious decomposition
\begin{equation}\label{decomposition 2*}
  E_G = \bigoplus_{\{K,\kappa\}_G\in\calM_G^G/\sim} E_G^{c,\{K,\kappa\}}  
\end{equation}
into $k$-submodules. The next lemma provides a connection
between the latter decomposition and the one in (\ref{decomposition 1}).
\end{nothing}

%\begin{lemma}\mylabel{covering lemma}
%let $G$ be a finite group and let $(K,\kappa)\in\calM_G(A)^G$. Then the
%map
%\begin{equation*}
%  \omega\colon B_k^{\{K,\kappa\}_G}(G\times G,A)\to f_{\{K,\kappa\}_G}
%  B_k^c(G\times G,A)\,,\quad b\mapsto f_{\{K,\kappa\}_G} b\,,
%\end{equation*}
%is a $k$-module isomorphism.
%\end{lemma}
%
%\begin{proof}
%We first show surjectivity. let $(U,\phi)\in\calMc_{G\times G}(A)$ be
%arbitrary. It suffices to show that $\left[\frac{G\times
%G}{U,\phi}\right] f_{\{K,\kappa\}_G}\in\im(\omega)$. Recall from
%Lemma~\ref{e,f-relations 2} that $f_{\{K,\kappa\}_G} =
%e_{\{K,\kappa\}_G} f_{\{K,\kappa\}_G}$ and therefore
%\begin{equation*}
%  \left[\frac{G\times G}{U,\phi}\right] =
%  \sum_{(K',\kappa')\in\{K,\kappa\}_G} \left[\frac{G\times
%  G}{U,\phi}\right] e_{(K',\kappa')}f_{\{K,\kappa\}_G}\,.
%\end{equation*}
%For each $(K',\kappa')\in\{K,\kappa\}_G$ we have either
%\begin{equation*}
%  \left[\frac{G\times G}{U,\phi}\right] e_{(K',\kappa')} = 0\quad
%  \text{or}\quad
%  \left[\frac{G\times G}{U,\phi}\right] e_{(K',\kappa')} =
%  \left[\frac{G\times G}{V,\psi}\right]
%\end{equation*}
%for some $(V,\psi)\in\calMc_{G\times G}(A)$ such
%that\marginpar{relation 1}
%\begin{equation}\label{relation 1}
%  (L,\lambda):=r_0(V,\psi)\ge(K',\kappa')\,.
%\end{equation}
%We may assume the second case, and in this case we have
%\begin{equation*}
%  \left[\frac{G\times G}{V,\psi}\right] f_{\{K,\kappa\}_G} =
%  \left[\frac{G\times G}{V,\psi}\right]
%  e_{(L,\lambda)}f_{\{K,\kappa\}_G}\,.
%\end{equation*}
%But $e_{(L,\lambda)}f_{\{K,\kappa\}_G}=0$, unless
%$\{L,\lambda\}_G\le\{K,\kappa\}_G$. So we may also assume the latter.
%In this case, (\ref{relation 1}) implies that
%$(L,\lambda)=(K',\kappa')$ and we obtain
%\begin{equation*}
%  \left[\frac{G\times G}{U,\phi}\right] e_{(K',\kappa')}
%  f_{\{K,\kappa\}_G} = \left[\frac{G\times G}{V,\psi}\right]
%  f_{\{K,\kappa\}_G}
%\end{equation*}
%with $\left[\frac{G\times G}{V,\psi}\right]\in
%B_k^{\{K,\kappa\}_G}(G\times G,A)$.
%
%Next we show that $\omega$ is injective. Let $b\in
%B_k^{\{K,\kappa\}_G}(G\times G,A)$ and assume that $\omega(b)=0$. We
%can write
%\begin{equation*}
%  b=\sum_{(L,\lambda)\in\{K,\kappa\}_G} b_{(L,\lambda)}
%\end{equation*}
%where each $b_{(L,\lambda)}$ is a $k$-linear combination of canonical
%basis elements $\left[\frac{G\times G}{U,\phi}\right]$ with
%$(U,\phi)\in\calMc_{G\times G}(A)$ satisfying
%$r_0(U,\phi)=(L,\lambda)$. Using the definition of
%$f_{\{K,\kappa\}_G}$ and $f_{(L,\lambda)}$ we obtain
%\begin{align*}
%  0 & = f_{\{K,\kappa\}_G} b = b f_{\{K,\kappa\}_G} =
%  \Bigl(\sum_{(L,\lambda)\in\{K,\kappa\}_G} b_{(L,\lambda)}\Bigr)
%  \Bigl(\sum_{(K',\kappa')\in\{K,\kappa\}_G} f_{(K',\kappa')}\Bigr)\\
%  & = \sum_{(L,\lambda),(K',\kappa')\in\{K,\kappa\}_G} \quad
%  \sum_{(K',\kappa')\le(K'',\kappa'')\in\calM_G(A)^G}
%  \mu_{K',K''}^{\trianglelefteq} b_{(L,\lambda)} e_{(K'',\kappa'')}\,.
%\end{align*}
%by Proposition~\ref{idempotent proposition}(b), the summand
%$\mu_{K',K''}^{\trianglelefteq} b_{(L,\lambda)} e_{(K'',\kappa'')}$
%lies in $B_k^{\{K,\kappa\}_G}(G\times G,A)$ with respect to the
%decomposition (\ref{decomposition 2}) if
%$(L,\lambda)=(K',\kappa')=(K'',\kappa'')$. All other summands (are
%zero or) lie in different components with respect to this
%decomposition. Thus, taking the projection of $f_{\{K,\kappa\}_G} b$
%onto the $\{K,\kappa\}_G$-component, we regain the element $b$. This
%shows that $b=0$.
%\end{proof}


\begin{lemma}\mylabel{comparing decompositions}
Let $G$ be a finite group and let $(K,\kappa)\in\calM_G^G$.

\smallskip
{\rm (a)} Let $(U,\phi)\in\calMc_{G\times G}$ with
$r_0(U,\phi)=(K,\kappa)$ and let $(L,\lambda)\in\calM_G^G$ with
$(K,\kappa)\not\le(L,\lambda)$. Then $\left[\frac{G\times
G}{U,\phi}\right] f_{(L,\lambda)}=0$.

\smallskip
{\rm (b)} One has
\begin{equation*}
  \bigoplus_{\{K,\kappa\}_G\le\{L,\lambda\}_G\in\calM_G^G/\sim} 
  E_G^{c,\{L,\lambda\}}
  =  \bigoplus_{\{K,\kappa\}_G\le\{L,\lambda\}_G\in\calM_G^G/\sim}
  E_G^c f_{\{L,\lambda\}_G}\,.
\end{equation*}

\smallskip
{\rm (c)} The projection map
\begin{equation*}
  \omega\colon E_G^{c,\{K,\kappa\}} \to E_G^c f_{\{K,\kappa\}_G}\,,
  \quad b\mapsto bf_{\{K,\kappa\}_G}\,,
\end{equation*}
with respect to the decomposition~(\ref{decomposition 1}) is an isomorphism of $k$-modules whose inverse 
is the projection map with respect to the decomposition~(\ref{decomposition 2*}).

\smallskip
{\rm (d)} Enumerating the elements of $\{K,\kappa\}_G$ as $(K_1,\kappa_1), \ldots,(K_n,\kappa_n)$, the isomorphism $\omega$ is the direct sum of the $k$-module isomorphisms 
\begin{equation*}
  \omega_{ij}\colon k[\lGamma{(G,K_i,\kappa_i)}_{(G,K_j,\kappa_j)}] \to f_{(K_i,\kappa_i)} E_G^c f_{(K_j,\kappa_j)}\,,\quad
  b_{ij}\mapsto  f_{(K_i,\kappa_i)} b_{ij} f_{(K_j,\kappa_j)}\,,
\end{equation*}
for $i,j\in\{1,\ldots,n\}$.

\smallskip
{\rm (e)} Let $i,j,l,m\in \{1,\ldots,n\}$, $b_{ij}\in k[\lGamma{(G,K_i,\kappa_i)}_{(G,K_j,\kappa_j)}]$ and $b_{lm}\in k[\lGamma{(G,K_l,\kappa_l)}_{(G,K_m,\kappa_m)}]$. If $j=l$ then $b_{ij}b_{lm}\in k[\lGamma{(G,K_i,\kappa_i)}_{(G,K_m,\kappa_m)}]$. In any case one has
\begin{equation}\label{eqn omega matrix property}
  \omega_{ij}(b_{ij})\omega_{lm}(b_{lm})=
  \begin{cases} 
     \omega_{il}(b_{ij}b_{lm}), & \text{if $j=l$,}\\
     0, & \text{if $j\neq l$.}
   \end{cases}
\end{equation}

\smallskip
{\rm (f)} The map
\begin{equation*}
  k[\Gamma_{(G,K,\kappa)}]\to f_{(K,\kappa)} E_G^c f_{(K,\kappa)}\,, \quad a\mapsto f_{(K,\kappa)} a f_{(K,\kappa)}\,,
\end{equation*}
is a $k$-algebra isomorphism.
\end{lemma}

\begin{proof}
(a) One has
\begin{equation*}
  \left[\frac{G\times G}{U,\phi}\right] f_{(L,\lambda)} =
  \left[\frac{G\times G}{U,\phi}\right] e_{(K,\kappa)} f_{(L,\lambda)}
  = 0
\end{equation*}
by Propositions~\ref{idempotent proposition}(c) and \ref{e,f-relations
1}.

\smallskip
(b) The left hand side of the equation is an ideal of $E_G^c$ by Proposition~\ref{first consequences}(b), and it contains
$f_{\{L,\lambda\}_G}$ for every $\{L,\lambda\}_G\ge\{K,\kappa\}_G$.
This shows that the left hand side contains the right hand side.
Conversely, let $(M,\mu)\in\calM_G^G$ with
$\{M,\mu\}_G\not\ge\{K,\kappa\}_G$. Then, by Part~(a), the left hand
side annihilates $f_{\{M,\mu\}_G}$. But the right hand side equals the
annihilator of the set of all $f_{\{M,\mu\}_G}$ with
$\{M,\mu\}_G\not\ge\{K,\kappa\}_G$, by Corollary~\ref{Bc
decomposition}. This shows that the left hand side is contained in the
right hand side.

\smallskip
(c) Note that the subsums
of both sides in the equation in Part~(b), that are indexed by $\{L,\lambda\}_G>\{K,\kappa\}_G$,
are also equal. In fact, this follows by applying (b) to the elements $\{L,\lambda\}_G$. Therefore, $E_G^{c,\{K,\kappa\}}$ and $E_G^c f_{\{K,\kappa\}_G}$ are both complements to the same submodule of the direct sum in (b). The assertion is now immediate.

\smallskip
(d) By definition we have a direct sum decomposition into $k$-submodules
\begin{equation}\label{eqn ij decomposition}
  E_G^{c,\{K,\kappa\}} = \bigoplus_{i,j=1}^n k[\lGamma{(G,K_i,\kappa_i)}_{(G,K_j,\kappa_j)}]\,.
\end{equation}
Since $f_{\{K,\kappa\}_G}=f_{(K_1,\kappa_1)}+\cdots + f_{(K_n,\kappa_n)}$ is an orthogonal idempotent decomposition and since $f_{\{K,\kappa\}_G}$ is central in $E_G^c$, we also have a decomposition
\begin{equation*}
  E_G^c f_{\{K,\kappa\}_G} = f_{\{K,\kappa\}_G} E_G^c f_{\{K,\kappa\}_G} 
  = \bigoplus_{i,j=1}^n f_{(K_i,\kappa_i)} E_G^c f_{(K_j,\kappa_j)}
\end{equation*}
into $k$-submodules. Moreover, by Part~(a) and its left-sided version we have, for $b_{ij}\in k[\lGamma{(G,K_i,\kappa_i)}_{(G,K_j,\kappa_j)}]$, 
\begin{equation*}
  \omega(b_{ij}) = f_{\{K,\kappa\}_G} b_{ij} f_{\{K,\kappa\}_G} = f_{(K_i,\kappa_i)} b_{ij} f_{(K_j,\kappa_j)} \in 
  f_{(K_i,\kappa_i)} E_G^c f_{(K_j,\kappa_j)}\,.
\end{equation*}
Since $\omega$ is an isomorphism of $k$-modules, also each $\omega_{ij}$ is an isomorphism of $k$-modules. 

\smallskip
(e) If $j=l$ then we have $b_{ij}b_{jm}\in k[\lGamma{(G,K_i,\kappa_i)}_{(G,K_m,\kappa_m)}]$ by  Proposition~\ref{first consequences}(d). Moreover, in this case, by the same argument as in the proof of Part~(d), and since $f_{\{K,\kappa\}_G}$ is central in $E_G^c$, we have 
\begin{align*}
  \omega_{ij}(b_{ij})\omega_{jm}(b_{jm}) 
  & = f_{(K_i,\kappa_i)} b_{ij} f_{(K_j,\kappa_j)} b_{jm} f_{(K_m,\kappa_m)} 
  = f_{(K_i,\kappa_i)} b_{ij} f_{\{K,\kappa\}_G} b_{jm} f_{(K_m,\kappa_m)} \\
  & = f_{(K_i,\kappa_i)} f_{\{K,\kappa\}_G} b_{ij}  b_{jm} f_{(K_m,\kappa_m)}
  = f_{(K_i,\kappa_i)}b_{ij}b_{jm} f_{(K_m,\kappa_m)} = \omega_{im}(b_{ij} b_{jm})\,.
\end{align*}
On the other hand, if $j\neq l$ then $\omega_{ij}(b_{ij})\omega_{lm}(b_{lm}) = f_{(K_i,\kappa_i)}b_{ij} f_{(K_j,\kappa_j)} f_{(K_l,\kappa_l}) b_{lm} f_{(K_m,\kappa_m)} = 0$, since $f_{(K_j,\kappa_j)}f_{(K_l,\kappa_l)} = 0$.

\smallskip
(f) This is an immediate consequence of Part~(e) by choosing $i\in\{1,\ldots,n\}$ such that $(K,\kappa) = (K_i,\kappa_i)$ and considering $\omega_{ii}$.
\end{proof}


Now we are ready to prove Theorem~\ref{covering algebra structure
theorem}.


\bigskip\noindent
\begin{nothing}  {\bf Proof} {\sl of Theorem}~\ref{covering algebra structure theorem}.
Let $(K,\kappa)\in\calM_G^G$. By Corollary~\ref{Bc decomposition}, it suffices to show that
there exists a $k$-algebra isomorphism between
$E_G^c f_{\{K,\kappa\}_G}$ and
$\Mat_n(k\Gamma_{(G,K,\kappa)})$ which maps $f_{(K_i,\kappa_i)}$ to the diagonal idempotent matrix $e_i$, where $(K_1,\kappa_1),(K_2,\kappa_2),\ldots,(K_n,\kappa_n)$ enumerate the elements of
$\{K,\kappa\}_G$. 

For each $i=1,\ldots,n$, we choose an element $(U_i,\phi_i)\in\calMc_{G\times
G}$ with $l_0(U_i,\phi_i)=(K,\kappa)$ and
$r_0(U_i,\phi_i)=(K_i,\kappa_i)$, and set $x_i:=\left[\frac{G\times
G}{U_i,\phi_i}\right]\in E_G^{c,\{K,\kappa\}}$, for
$i=1\ldots,n$. For any two elements $i,j\in\{1,\ldots,n\}$ we claim that the $k$-module homomorphism
\begin{equation*}
  \sigma_{ij}\colon k\Gamma_{(G,K,\kappa)} \to k[\lGamma{(G,K_i,\kappa_i)}_{(G,K_j,\kappa_j)}]\,,\quad
  a\mapsto\xop_i a x_j\,,
\end{equation*}
is an isomorphism. In fact, first of all, $\xop_i a x_j\in k[\lGamma{(G,K_i,\kappa_i)}_{(G,K_j,\kappa_j)}]$ by Proposition~\ref{first consequences}(d). Secondly, the map $b\mapsto x_i b \xop_j$ is an inverse to $\sigma_{ij}$, since $x_i\cdot \xop_i= e_{(K,\kappa)}$, $\xop_i\cdot x_i = e_{(K_i,\kappa_i)}$, and $e_{(K,\kappa)} a = a e_{(K,\kappa)} = a$ and $e_{(K_i,\kappa_i)} b = b e_{(K_j,\kappa_j)} = b$ by Proposition~\ref{idempotent proposition}(c) and (d). Moreover, we have, for $a,a'\in k\Gamma_{(G,K,\kappa)}$ and $i,j,l\in\{1,\ldots,n\}$,
\begin{equation}\label{eqn sigma matrix property}
  \sigma_{ij}(a)\sigma_{jl}(a') = \sigma_{il}(aa')\,,
\end{equation}
since $\xop_i a x_j \xop_j a' x_l = \xop_i a e_{(K_j,\kappa_j)}  a' x_l = \xop_i aa' x_l$, again by Proposition~\ref{idempotent proposition}(c) and (d). Taking the direct sum of the maps $\sigma_{ij}$ and using the direct sum decomposition in (\ref{eqn ij decomposition}) we obtain a $k$-module isomorphism
\begin{equation*}
   \sigma\colon \Mat_n(k\Gamma_{(G,K,\kappa)}) \to E_G^{c,\{K,\kappa\}}\,.
\end{equation*}
Thus, we have a $k$-module isomorphism
\begin{equation*}
  \rho:=\omega\circ\sigma \colon 
  \Mat_n(k\Gamma_{(G,K,\kappa)}) \myiso E_G^{c,\{K,\kappa\}} \myiso E_G^c f_{\{K,\kappa\}_G}\,,\quad 
  (a_{ij})\mapsto \sum_{i,j=1}^n \omega_{ij}(\sigma_{ij}(a_{ij}))\,.
\end{equation*}
For $(a_{ij}), (a'_{lm})\in\Mat_n(k\Gamma_{(G,K,\kappa)})$, Equations~(\ref{eqn omega matrix property}) and (\ref{eqn sigma matrix property}) now imply that $\rho$ is a $k$-algebra isomorphism:
\begin{align*}
  \rho((a_{ij}))\rho((a'_{lm})) 
  & = \Bigl(\sum_{i,j=1}^n\omega_{ij}(\sigma_{ij}(a_{ij}))\Bigr) \Bigl(\sum_{l,m=1}^n \omega_{lm}(\sigma_{lm}(a'_{lm}))\Bigr) \\
  & = \sum_{i,j,l,m=1}^n \omega_{ij}(\sigma_{ij}(a_{ij}))\cdot \omega_{lm}(\sigma_{lm}(a'_{lm})) 
  = \sum_{i,j,m=1}^n \omega_{ij}(\sigma_{ij}(a_{ij}))\cdot \omega_{jm}(\sigma_{jm}(a'_{jm}))  \\
  & = \sum_{i,j,m=1}^n \omega_{im}\bigl(\sigma_{ij}(a_{ij})\cdot\sigma_{jm}(a'_{jm})\bigr) 
  = \sum_{i,j,m=1}^n \omega_{im}\bigl(\sigma_{im}(a_{ij}a'_{jm}\bigr)) \\
  & = \sum_{i,m=1}^n \omega_{im}\bigl(\sigma_{im}(\sum_{j=1}^n a_{ij}a'_{jm})\bigr) 
  = \omega(\sigma( (a_{ij})\cdot(a'_{lm})) ) = \rho( (a_{ij})\cdot(a'_{lm}) )\,.
\end{align*}
Finally, one has $\rho(e_i) = \omega_{ii}(\sigma_{ii}(1)) = f_{(K_i,\kappa_i)} e_{(K_i,\kappa_i)}f_{(K_i,\kappa_i)} = f_{(K_i,\kappa_i)}$ as desired.
\qed
\end{nothing}


%%%%%%%%%%%%%%%% SECTION 7 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{The structure of $\Gamma_{(G,K,\kappa)}$}\label{sec structure of Gamma}

In this section we show that, for $(K,\kappa)\in\calM_G^G$, the group $\Gamma_{(G,K,\kappa)}$ is an extension of a certain subgroup of
the outer automorphism group $\Out(G)$ with the group $(G/K)^*$, under the assumption that $\kappa$ is faithful. By passing from $G$ to $G/\ker(\kappa)$ one could avoid this assumption at the cost of more complicated notation. In subsequent sections we will only need to consider the case where $\kappa$ is faithful.

\begin{nothing}\mylabel{study of Gamma}
Let $(K,\kappa)\in\calM_G^G$ and assume that $\kappa$ is faithful. Then $K\le Z(G)$. 
For $\eta\in\Aut(G/K)$ we set
\begin{equation*}
  U_\eta:=\{(g_1,g_2)\in G\times G\mid \eta(g_2K)=g_1K\}\,.
\end{equation*}
Clearly, $U_\eta$ satisfies
\begin{equation}\label{Ueta property}
  p_1(U_\eta)=p_2(U_\eta)=G\,,\quad\text{and}\quad
  k_1(U_\eta)=k_2(U_\eta)=K\,.
\end{equation}
Conversely, every subgroup $U\le G\times G$ satisfying (\ref{Ueta
property}) is of the form $U_\eta$ for some $\eta\in\Aut(G/K)$.
Moreover, if $(h_1,h_2)\in G\times G$ then
\begin{equation*}
  \lexp{(h_1,h_2)}{U_\eta}=U_{\eta'}\,,
\end{equation*}
where $\eta':= c_{h_1K\cdot\eta(h_2^{-1}K)}\circ\eta\in\Aut(G/K)$.
This implies that the map $\eta\mapsto U_\eta$ induces a bijection
between the outer automorphism group $\Out(G/K)$ and the $G\times
G$-conjugacy classes of subgroups $U\le G\times G$
satisfying~(\ref{Ueta property}). It is easy to see that, for
$\eta_1,\eta_2\in\Aut(G/K)$, one has
\begin{equation*}
  U_{\eta_1\circ\eta_2}=U_{\eta_1}*U_{\eta_2}\,.
\end{equation*}
Thus, we obtain a well-defined group homomorphism
\begin{equation*}
  \pi\colon \Gamma_{(G,K,\kappa)}\to\Out(G/K)\,,\quad
  \left[\frac{G\times G}{U_\eta,\phi}\right]\mapsto
  \etabar\,,
\end{equation*}
where $\etabar:=\eta\Inn(G/K)$.

\smallskip
Let $\alpha\in Z^2(G/K,K)$ be a cocycle that describes the central
extension $1\to K\to G\to G/K\to 1$. We denote by $\Aut^\circ(G/K)$
the subgroup of $\Aut(G/K)$ consisting of those elements $\eta$
satisfying
\begin{equation*}
  [\kappa\circ\alpha\circ(\eta^{-1}\times\eta^{-1})] =
  [\kappa\circ\alpha]\in H^2(G/K,\torA)\,.
\end{equation*}
In other words, $\Aut^\circ(G/K)$ is the stabilizer of $[\kappa\circ\alpha]$ in $\Aut(G/K)$ with respect to
the natural action of $\Aut(G/K)$ on $H^2(G/K,\torA)$. Note that the inner
automorphism group $\Inn(G/K)$ of $G/K$ fixes $[\alpha]\in H^2(G/K,K)$ and therefore also $[\kappa\circ\alpha]\in H^2(G/K,\torA)$. In fact, if $\sigma\colon G/K\to G$ is a section of the canonical epimorphism $\pi\colon G\to G/K$ such that (\ref{cocycle section relation}) holds then the cocycle $\alpha\circ (c_{z}^{-1}\times c_{z}^{-1})$ is defined by the section $\lexp{z}{\sigma}\colon x\mapsto g\sigma(z^{-1}xz)g^{-1}$, for every $z:=gK\in G/K$. We set
\begin{equation*}
  \Out^\circ(G/K):=\Aut^\circ(G/K)/\Inn(G/K)\le\Out(G/K)\,.
\end{equation*}  
It follows from Proposition~\ref{linkage criterion} that, for given
$\eta\in\Aut(G/K)$, there exists $\varphi\in(U_\eta)^*$ such that
$l_0(U_\eta,\phi)=r_0(U_\eta,\phi)=(K,\kappa)$ if and only if
$\eta\in\Aut^\circ(G/K)$. In other words, the image of $\pi$ is equal
to $\Out^\circ(G/K)$.

\smallskip
Recall that $U_{\id}=\Delta_K(G)=\Delta(G)(K\times 1)$. For every
$\theta\in(G/K)^*$ we can define a homomorphism
$\thetatilde\in(\Delta_K(G))^*$ by
\begin{equation*}
  \thetatilde(gk,g):= \kappa(k)\theta(gK)\,,
\end{equation*}
for $k\in K$ and $g\in G$. Note that $\tilde{1}=\phi_\kappa$ from Definition~\ref{idempotent definition 1}. 
It is straightforward to verify that the map
\begin{equation*}
  \iota\colon (G/K)^*\to \Gamma_{(G,K,\kappa)}\,,\quad
  \theta\mapsto \left[\frac{G\times G}{\Delta_K(G),\thetatilde}\right]\,,
\end{equation*}
is an injective group homomorphism and that $\ker(\pi)=\im(\iota)$.
\end{nothing}


The following proposition is now immediate from the preceding
discussion.


\begin{proposition}\mylabel{ses for Gamma}
Let $(K,\kappa)\in\calM_G^G$ and assume that $\kappa$ is faithful.
With the notation from~\ref{study of Gamma} one has a short exact
sequence
\begin{equation*}
  1\ar (G/K)^* \Ar{\iota} \Gamma_{(G,K,\kappa)} \Ar{\pi} \Out^\circ(G/K)
  \ar 1\,.
\end{equation*}
\end{proposition}


\begin{remark}
(a) If $\left[\frac{G\times G}{U,\phi}\right]\in\Gamma_{(G,K,\kappa)}$
with $U=U_\eta$ for some $\eta\in\Aut^\circ(G/K)$ and if $\theta\in(G/K)^*$ then, with the explicit
formula from Corollary~\ref{Mackey formula for fibered bisets 2}, it is
easy to verify that
\begin{equation*}
  \left[\frac{G\times G}{U,\phi}\right]
  \left[\frac{G\times G}{\Delta_K(G),\thetatilde}\right]
  \left[\frac{G\times G}{U,\phi}\right]^{\mathrm{op}} =
  \left[\frac{G\times G}
  {\Delta_K(G),\widetilde{\theta\circ\eta^{-1}}}\right]\,,
\end{equation*}
which shows that the induced action of $\Out^\circ(G/K)$ on $(G/K)^*$
is the usual canonical action.

\smallskip
(b) We do not know if the sequence in Proposition~\ref{ses for Gamma}
splits.
\end{remark}

%%%%%%%%%%%%%%%%%%%%%% SECTION 8 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Reduced pairs and the simple $\Ebar_G$-modules}\label{sec Ebar}

We keep the notation from the previous sections. Thus, $k$ denotes a commutative ring. We also fix a finite group $G$ for this section and we will classify the simple $\Ebar_G$-modules. This is the last step before the
classification of the simple fibered biset functors.

\begin{notation}
We define the subset $\calR_G=\calR_k^A(G)$ of $\calM_G^G$ by
\begin{equation*}
  \calR_G=\calR_k^A(G):=\{(K,\kappa)\in\calM_G^G\mid e_{(K,\kappa)}\notin I_G\}\,.
\end{equation*}
We call $(K,\kappa)\in\calM_G$ a {\em reduced} pair if $(K,\kappa)\in\calR_G$. Thus, every pair in $\calM_G\smallsetminus\calM_G^G$ is by definition not reduced. Note that if $(K,\kappa),(K',\kappa')\in\calM_G^G$ are $G$-linked (cf.~Definition~\ref{linkage definition}(b)) by a pair $(U,\phi)\in\calM_{G\times G}^c$ with $(K,\kappa)=l_0(U,\phi)$ and $(K',\kappa')=r_0(U,\phi)$ then $(K,\kappa)$ is reduced if and only if $(K',\kappa')$ is reduced. In fact,
\begin{equation*}
  e_{(K',\kappa')}= \left[\frac{G\times G}{U,\phi}\right]^{\mathrm{op}}\cdotG
  \left[\frac{G\times G}{U,\phi}\right] 
  = \left[\frac{G\times G}{U,\phi}\right]^{\mathrm{op}}\cdotG e_{(K,\kappa)} \cdotG
  \left[\frac{G\times G}{U,\phi}\right]\,,
\end{equation*}
by Proposition~\ref{idempotent proposition}(c) and (d). We write $\calR_G/\sim$ for the set of linkage classes in $\calR_G$.

Note also that for $(K,\kappa)\in\calM_G^G$, one has
\begin{equation}\label{calR is ideal}
  (K,\kappa)\le(K',\kappa')\in\calR_G\implies (K,\kappa)\in\calR_G\,,
\end{equation}
by Proposition~\ref{idempotent proposition}(c).

In the sequel we will denote the image of an element $b\in E_G$ in $\Ebar_G$ by $\bbar$.
\end{notation}

\begin{lemma}\mylabel{Basis of IG}
The ideal $I_G$ of $E_G$ is generated as a $k$-module by the standard basis elements $\left[\frac{G\times G}{U,\phi}\right]$ with $(U,\phi)\in\calM_{G\times G}$ satisfying 

\smallskip
{\rm (i)} $p_1(U)\neq G$ or

\smallskip
{\rm (ii)} $p_1(U)=G$ and $l_0(U,\phi)\notin \calR_G$.
\end{lemma}

\begin{proof}
First we show that every element in $I_G$ can be written as a $k$-linear combination of elements $\left[\frac{G\times G}{U,\phi}\right]$ with $(U,\phi)\in\calM_{G\times G}$ satisfying (i) or (ii). To that end, let $H$ be a finite group with $|H|<|G|$ and let $(V,\psi)\in\calM_{G\times H}$ and $(W,\mu)\in\calM_{H\times G}$. It suffices to show that $\left[\frac{G\times H}{V,\psi}\right]\cdotH\left[\frac{H\times G}{W,\mu}\right]$ can be written as such a linear combination. But every summand occurring in this product is of the form $\left[\frac{G\times G}{V*W',\psi*\mu'}\right]$ for some $(W',\mu')\in\calM_{H\times G}$. We may assume that $p_1(V*W')=G$. Otherwise (i) holds and we are done. So we have $l(V*W',\psi*\mu')=(G,K,\kappa)$ for some $(K,\kappa)\in\calM_G^G$. We need to show that $(K,\kappa)\notin\calR_G$. By Proposition~\ref{first consequences}(a) and (b), we have $l(V,\psi)=(G,K',\kappa')$ with $(K',\kappa')\le (K,\kappa)$. Thus, if $(K,\kappa)\in\calR_G$ then (\ref{calR is ideal}) implies that $(K',\kappa')\in\calR_G$ and we obtain the contradiction
\begin{equation*}
  e_{(K',\kappa')}=\left[\frac{G\times H}{V,\psi}\right] \cdotH
  \left[\frac{G\times H}{V,\psi}\right]^{\mathrm{op}} \in I_G\,.
\end{equation*}

Conversely, assume that $(U,\psi)\in\calM_{G\times G}$ with $p_1(U)<G$. Then the decomposition in Proposition~\ref{decomposition} implies that $\left[\frac{G\times G}{U,\phi}\right]\in I_G$. Also, if $p_1(U)=G$ and $(K,\kappa):=l_0(U,\phi)\notin\calR_G$ then $e_{(K,\kappa)}\in I_G$ and $\left[\frac{G\times G}{U,\phi}\right] =
e_{(K,\kappa)}\cdotG \left[\frac{G\times G}{U,\phi}\right] \in I_G$.
\end{proof}


\begin{remark}\mylabel{remark on basis of IG}
Since $I_G$ is stable under the map $-^{\mathrm{op}}\colon E_G\to E_G$, we may replace the conditions (i) and (ii) in the previous lemma also by

\smallskip
(i') $p_2(U)\neq G$ or

\smallskip
(ii') $p_2(U)=G$ and $r_0(U,\phi)\notin\calR$.
\end{remark}

\begin{proposition}\mylabel{prop structure of Ebar}
{\rm (a)} One has
\begin{equation*}
  E_G^c+I_G=E_G
\end{equation*}
and
\begin{equation}\label{eqn intersection}
  E_G^c\cap I_G = \bigoplus_{\{K,\kappa\}_G\in\calM_G^G/\sim \atop (K,\kappa)\notin\calR_G}
  f_{\{K,\kappa\}_G} E_G^c\,.
\end{equation}

\smallskip
{\rm (b)} The canonical epimorphism $E_G\to\Ebar_G$ maps the subalgebra
\begin{equation*}
  \bigoplus_{\{K,\kappa\}_G\in\calR_G/\sim} f_{\{K,\kappa\}_G} E_G^c
\end{equation*}
of $E_G^c$ isomorphically onto $\Ebar_G$. 

\smallskip
{\rm (c)} For each $(K,\kappa)\in\calR_G$, the map 
\begin{equation*}
  k\Gamma_{(G,K,\kappa)}\to \fbar_{(K,\kappa)}\Ebar_G\fbar_{(K,\kappa)}\,,\quad 
  a\mapsto \fbar_{(K,\kappa)}\abar\fbar_{(K,\kappa)}\,,
\end{equation*}
is a $k$-algebra isomorphism.
\end{proposition}

\begin{proof}
(a) Lemma~\ref{Basis of IG} and Remark~\ref{remark on basis of IG} imply immediately that a standard basis element $\left[\frac{G\times G}{U,\phi}\right]$ of $E_G$ belongs to $E_G^c$ if $(U,\phi)\in\calM_{G\times G}^c$, and it belongs to $I_G$ if $(U,\phi)\notin\calM_{G\times G}^c$. This implies the first equation.

Lemma~\ref{Basis of IG} implies that $E_G^c\cap I_G$ is generated as $k$-module by the canonical basis elements $\left[\frac{G\times G}{U,\phi}\right]$ with $(U,\phi)\in\calM_{G\times G}^c$ with $l_0(U,\phi)\notin\calR_G$. Thus,
\begin{equation*}
  E_G^c\cap I_G = \bigoplus_{\{K,\kappa\}_G\in\calM_G^G/\sim \atop (K,\kappa)\notin\calR_G}
  E_G^{c,\{K,\kappa\}}\,.
\end{equation*}
But, by the property in (\ref{calR is ideal}) and by Lemma~\ref{comparing decompositions}, the latter direct sum is equal to the direct sum in Equation~(\ref{eqn intersection}).

\smallskip
Part~(b) follows immediately from Part~(a) and Corollary~\ref{Bc decomposition}, and Part~(c) follows immediately from Part~(b) and Lemma~\ref{comparing decompositions}(f).
\end{proof}


Now we are ready to classify the simple $\Ebar_G$-modules. Set
\begin{equation*}
 \calS_G=\calS_k^A(G):= \{((K,\kappa),[V])\mid (K,\kappa)\in\calR_G, [V]\in\Irr(k\Gamma_{(G,K,\kappa)})\}\,.
\end{equation*}
We call two elements $(K,\kappa,[V]),(K',\kappa',[V'])\in\calS_G$ {\em equivalent}, if $(K,\kappa)$ and $(K',\kappa')$ are $G$-linked and $[V]$ corresponds to $[V']$ via the canonical bijection $\Irr(k\Gamma_{(G,K',\kappa')})\myiso\Irr(k\Gamma_{(G,K,\kappa)})$ from \ref{covering algebra}(c). If $\calRtilde_G$ denotes a set of representatives of the linkage classes of $\calR_G$ then 
\begin{equation*}
  \calStilde_G:=\{((K,\kappa),[V])\mid (K,\kappa)\in\calRtilde_G, [V]\in\Irr(k\Gamma_{(G,K,\kappa)})\}
\end{equation*}
is a set of representatives of the equivalence classes of $\calS_G$. By the canonical isomorphism from Proposition~\ref{prop structure of Ebar}(c), we can view each simple $k\Gamma_{(G,K,\kappa)}$-module $V$ as a simple $\fbar_{(K,\kappa)}\Ebar_G\fbar_{(K,\kappa)}$-module, and we can view $\Ebar_G \fbar_{(K,\kappa)}$ as $(\Ebar_G,k\Gamma_{(G,K,\kappa)})$-bimodule.


\begin{corollary}\label{simples of Ebar 3}
With the above notation, the map
\begin{equation}\label{simples of Ebar 2}
  ((K,\kappa),[V])\mapsto \Vtilde:=\Ebar_G \fbar_{(K,\kappa)} \otimes_{k  \Gamma_{(G,K,\kappa)}} V\,.
\end{equation}
induces a bijection between the set of equivalence classes of $\calS_G$ and $\Irr(\Ebar_G)$.
\end{corollary}

\begin{proof}
By the isomorphism in Proposition~\ref{prop structure of Ebar}(b), one obtains a bijection  between $\Irr(\Ebar_G)$ and the set of pairs $((K,\kappa),[W])$ with $(K,\kappa)\in\calRtilde_G$ and $[W]\in\Irr(f_{\{K,\kappa\}_G}E_G^c)$. By the isomorphism $\rho\colon \Mat_n(k\Gamma_{(G,K,\kappa)})\to f_{\{K,\kappa\}_G}E_G^c$ used in the proof of Theorem~\ref{covering algebra structure theorem}, one obtains a bijection between $\Irr(f_{\{K,\kappa\}_G}E_G^c)$ and $\Irr(\Mat_n(k\Gamma_{(G,K,\kappa)}))$. Finally, since $\Mat_n(k\Gamma_{(G,K,\kappa)})$ and $k\Gamma_{(G,K,\kappa)}$ are Morita equivalent, $\Irr(\Mat_n(k\Gamma_{(G,K,\kappa)}))$ is in bijection with $\Irr(k\Gamma_{(G,K,\kappa)})$. If $(K,\kappa)\in\calRtilde_G$, $[V]\in\Irr(k\Gamma_{(G,K,\kappa}))$, and $(K,\kappa)=(K_i,\kappa_i)$ in the enumeration of $\{K,\kappa\}_G$ in Theorem~\ref{covering algebra structure theorem}, then we use the Morita equivalence given by tensoring with the bimodule $\Mat_n(k\Gamma_{(G,K,\kappa)})e_i$, where $e_i:=\dia(0,\ldots,0,1,0,\ldots,0)$, and $k\Gamma_{(G,K,\kappa)}$ is identified with $e_i\Mat_n(k\Gamma_{(G,K,\kappa)})e_i$ via $a\mapsto e_iae_i$. Thus, $[V]\in\Irr(k\Gamma_{(G,K,\kappa)})$ corresponds to the class of $\Mat_n(k\Gamma_{(G,K,\kappa)})e_i\otimes_{k\Gamma_{(G,K,\kappa)}} V$ in $\Irr(\Mat_n(k\Gamma_{(G,K,\kappa)}))$. Choosing $x_i:=e_{(K,\kappa)}$ in the definition of the isomorphism $\rho$ (in the proof of Theorem~\ref{covering algebra structure theorem}), the isomorphism $\rho$ transports this latter irreducible module to the irreducible module $f_{\{K,\kappa\}_G}E_G^c f_{(K,\kappa)}\otimes_{k\Gamma_{(G,K,\kappa)}} V = E_G^c f_{(K,\kappa)}\otimes_{k\Gamma_{(G,K,\kappa)}} V$, since $f_{\{K,\kappa\}_G}E_G^c f_{(K,\kappa)}=E_G^c f_{\{K,\kappa\}_G} f_{(K,\kappa)}= E_G^c f_{(K,\kappa)}$. And finally, via the isomorphism in Proposition~\ref{prop structure of Ebar}(b), the latter simple module corresponds to the module $\Vtilde$ in the statement of the corollary.
\end{proof}


The following proposition gives a necessary condition and a sufficient condition for a pair $(K,\kappa)\in\calM_G^G$ to be reduced. For special cases of $A$, we will see in Section~\ref{sec completely reduced pairs} that the sufficient condition in Part~(b) is also necessary. 

\begin{proposition}\mylabel{conditions for reduced}
Let $(K,\kappa)\in\calM_G^G$.

\smallskip
{\rm (a)} If $(K,\kappa)\in\calR_G$ then $\kappa$ is faithful and $K\le Z(G)$. 

\smallskip
{\rm (b)} If $\kappa$ is faithful and $K\le G'$ then $(K,\kappa)\in\calR_G$.
\end{proposition}

\begin{proof}
(a) By the decomposition in Proposition~\ref{decomposition} we obtain that $\ker(\kappa)=1$. Then, $K\le Z(G)$ by Proposition~\ref{eta and zeta}(b).

\smallskip
(b) Assume that $e_{(K,\kappa)}\in I_G$. Then, by the definition of $I_G$ there exists a finite group $H$ with $|H|<|G|$ and pairs $(V,\psi)\in\calM_{G\times H}$ and $(W,\mu)\in\calM_{H\times G}$ such that the standard basis element $e_{(K,\kappa)}$ occurs as a summand in $\left[\frac{G\times H}{V,\psi}\right]\cdotH \left[\frac{H\times G}{W,\mu}\right]$. By the Mackey formula in Corollary~\ref{Mackey formula for fibered bisets 2}, it follows that there exists a pair $(W',\mu')\in\calM_{H\times G}$ such that $(\Delta_K(G),\phi_\kappa)=(V*W',\psi*\mu')$. By
Proposition~\ref{first consequences}, it follows that $l(V,\psi)=(G,K',\kappa')$ with $(K',\kappa')\le(K,\kappa)$. Now, by Proposition~\ref{idempotent proposition}(b), we have $e_{(K,\kappa)}\cdotG\left[\frac{G\times H}{V,\psi}\right] = \left[\frac{G\times H}{V',\psi'}\right]$ with $(V',\psi')\in\calM_{G\times H}$ satisfying $l(V',\psi')=(G,K,\kappa)$. Proposition~\ref{eta and zeta}(e) applied to $(V',\psi')$ implies that $|G|\le|H|$, a contradiction.  
\end{proof}


\begin{example}
The converse of Part~(b) in the previous Proposition does not hold in general: Let $A:=\{\pm 1\}$, $G$ the cyclic group of order $4$, $K$ its subgroup of order $2$, and $\kappa\colon K\to A$ the unique injective homomorphism. Then an easy computation shows that $e_{(K,\kappa)}\notin I_G$. Thus, $(K,\kappa)$ is reduced in $G$, but $K$ is not contained in $G'=\{1\}$.
\end{example}


We conclude this section with some additional results around the notion of being reduced.


\begin{proposition}\label{prop reduced and linked}
Let $G$ be a finite group and let $(K,\kappa)\in\calM_G^G$. The following are equivalent:

\smallskip
{\rm (i)} $(K,\kappa)\notin\calR_G$.

\smallskip
{\rm  (ii)} There exist a finite group $H$ with $|H|<|G|$ and $(L,\lambda)\in\calM_H^H$ such that $(G,K,\kappa)\sim(H,L,\lambda)$.
\end{proposition}

\begin{proof}
(i) $\Rightarrow$ (ii): If $(K,\kappa)\notin\calR_G$ then $e_{(K,\kappa)}\in I_G$ and there exists a group $H$ with $|H|<|G|$ and pairs $(U,\phi)\in\calM_{G\times H}$, $(V,\psi)\in\calM_{H\times G}$ such that the standard basis element $e_{(K,\kappa)}$ of $B_k^A(G,G)$ occurs with non-zero coefficient in the tensor product $\left[\frac{G\times H}{U,\phi}\right] \cdotH \left[\frac{H\times G}{V,\psi}\right]$. The Mackey formula and Proposition~\ref{first consequences}(a),(b) imply that $p_1(U)=G$ and that $(K,\kappa)\ge l_0(U,\phi)$. We set $\Htilde:=p_2(U)$ and write $e_{(K,\kappa)}\cdotG \left[\frac{G\times \Htilde}{U,\phi}\right] = \left[\frac{G\times \Htilde}{\Utilde,\phitilde}\right]$ with $(\Utilde,\phitilde)\in\calM_{G\times\Htilde}$. Then
\begin{equation*}
  |\Htilde|\le |H|<|G|,\quad p_2(\Utilde)=\Htilde,\quad\text{and}\quad l(\Utilde,\phitilde)=(G,K,\kappa)
\end{equation*}
by Proposition~\ref{idempotent proposition}(b). Thus, $(G,K,\kappa)\mathop{\sim}\limits_{(\Utilde,\phitilde)} (\Htilde,\Ltilde,\tilde{\lambda})$ with $(L,\tilde{\lambda}):=r(\Utilde,\phitilde)\in\calM_{\Htilde}^{\Htilde}$.

\smallskip
(ii)$\Rightarrow$(i): Let $(U,\phi)\in\calM_{G\times H}$ with $l(U,\phi)=(G,K,\kappa)$ and $r(U,\phi)=(H,L,\lambda)$. Then Proposition~\ref{idempotent proposition}(d), implies $e_{(K,\kappa)}= \left[\frac{G\times H}{U,\phi}\right]\cdotH \left[\frac{G\times H}{U,\phi}\right]^{\mathrm{op}}\in I_G$, and therefore $(K,\kappa)\notin\calR_G$.
\end{proof}


Since the condition in Proposition~\ref{prop reduced and linked}(ii) is independent of $k$, we have the following immediate corollary.


\begin{corollary}\label{cor calR independent of k}
Let $G$ and $H$ be finite groups. The subset $\calR_k^A(G)$ of $\calM_G$ is independent of $k$. 
\end{corollary}


\begin{definition}\label{def twosided reduced}
Let $G$ and $H$ be finite groups. A pair $(U,\phi)\in\calM_{G\times M}^c$ is called {\em reduced} if $l_0(U,\phi)\in\calR_G$ and $r_0(U,\phi)\in\calR_H$. By Corollary~\ref{cor calR independent of k}, this notion does not depend on $k$.
\end{definition}


The following proposition justifies this terminology.


\begin{proposition}\label{prop twosided reduced}
Let $G$ and $H$ be finite groups, let $(U,\phi)\in\calM^c_{G\times H}$, and set $(K,\kappa):=l_0(U,\phi)$ and $(L,\lambda):=r_0(U,\phi)$. The following are equivalent:

\smallskip
{\rm (i)} $(U,\phi)$ is reduced.

\smallskip
{\rm (ii)} $|G|=|H|$ and $\left[\frac{G\times H}{U,\phi}\right]$ does not factor through a group of order smaller than $|G|=|H|$, i.e., there exists no group $I$ of order smaller than $|G|=|H|$ such that $\left[\frac{G\times H}{U,\phi}\right]\in B^A_k(G,I)\mathop{\cdot}\limits_{I} B^A_k(I,H)$.
\end{proposition}

\begin{proof}
(i)$\Rightarrow$(ii):  Since $\left[\frac{G\times H}{U,\phi}\right]\cdotH\left[\frac{G\times H}{U,\phi}\right]^{\mathrm{op}} = e_{(K,\kappa)}$ by Proposition~\ref{idempotent proposition}(d), and since $(K,\psi)\in\calR_G$, we obtain $|H|\ge|G|$. Similarly one proves that $|G|\ge|H|$ to obtain $|G|=|H|$. If $\left[\frac{G\times H}{U,\phi}\right]$ factors through a group of order smaller than $|G|$, so does $e_{(K,\kappa)}=\left[\frac{G\times H}{U,\phi}\right]\cdotH\left[\frac{G\times H}{U,\phi}\right]^{\mathrm{op}}$ which contradicts $(K,\psi)\in\calR_G$.

(ii)$\Rightarrow$(i): By Proposition~\ref{idempotent proposition}(c) we have $\left[\frac{G\times H}{U,\phi}\right]=e_{(K,\psi)}\cdotG \left[\frac{G\times H}{U,\phi}\right] \cdotH e_{(L,\lambda)}$. Now, (ii) immediately implies (i).
\end{proof}



%%%%%%%%%%%%%%%%%%%%%% SECTION 9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Simple $A$-Fibered Biset Functors}\label{sec simple functors}

We keep the notation from the previous sections: $A$ is an abelian
group, $k$ is a commutative ring, $\calC=\calC_k^A$ is the category introduced in Section~\ref{sec fibered biset functors}, and $\calF=\calF_k^A$ is the category of $k$-linear functors from $\calC_k^A$ to $\lMod{k}$ . For a finite group $G$, we continue to write $E_G:=B_k^A(G,G)=\End_{\calC}(G,G)$ and $\Ebar_G=E_G/I_G$, where $I_G$ denotes the ideal of $E_G$ of all morphisms factoring through groups of order strictly smaller than $|G|$. The goal of this section is the classification of the simple objects in $\calF$.


\begin{nothing}\mylabel{quadruples} Recall from
Proposition~\ref{simple functor proposition} that for every finite group
$G$ and every simple $E_G$-module $V$ one obtains a simple functor $S_{G,V}\in\calF$ and that every
simple functor arises that way. Also, recall from Corollary~\ref{simples of Ebar 3} that if
$(K,\kappa)\in\calR_G$ and if $V$ is an irreducible
$k\Gamma_{(G,K,\kappa)}$-module then
\begin{equation}\label{Vtilde}
  \Vtilde:= \Ebar_G \fbar_{(K,\kappa)}\otimes_{k\Gamma_{(G,K,\kappa)}} V
\end{equation}
is an irreducible $E_G$-module. Therefore, we obtain a
simple functor
\begin{equation*}
  S_{(G,K,\kappa,V)}:=S_{G,\Vtilde}\in\calF\,.
\end{equation*}
It is clear that if $V'\cong V$ as $k\Gamma_{(G,K,\kappa)}$-modules then
$\Vtilde\cong\Vtilde'$ as $E_G$-modules,
$L_{G,\Vtilde}\cong L_{G,\Vtilde'}$ as functors in $\calF$, and
therefore, $S_{G,\Vtilde}\cong S_{G,\Vtilde'}$ in $\calF$ as the
unique simple factors of $L_{G,\Vtilde}$ and $L_{G,\Vtilde'}$,
respectively. We denote by
$\Irr(\calF)$ the set of isomorphism classes $[S]$ of
simple functors $S\in\calF$. Moreover, we set
\begin{equation*}
  \calS=\calSkA:=\{(G,K,\kappa,[V])\mid G\in\mathrm{Ob}(\calC),
  (K,\kappa)\in\calR_G, [V]\in\Irr(k\Gamma_{(G,K,\kappa)})\}\,.
\end{equation*}
Two quadruples $(G,K,\kappa,[V])$ and $(H,L,\lambda,[W])$ in
$\calS$ will be called {\em linked} if
$(G,K,\kappa)\sim(H,L,\lambda)$, cf.~Definition~\ref{linkage definition}(a), and
\begin{equation*}
  V\cong k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}]\otimes_{k\Gamma_{(H,L,\lambda)}} W
\end{equation*}
as $k\Gamma_{(G,K,\kappa)}$-modules, cf.~\ref{covering algebra}(c). In this case we write
$(G,K,\kappa,[V])\sim(H,L,\lambda,[W])$. Note that linkage is an
equivalence relation on $\calS$. We denote by $\calSbar=\calSbarkA$ the set
of linkage classes $[G,K,\kappa,[V]]$ of $\calS$. By all the above,
we have now defined a function
\begin{equation}\label{eqn omega}
  \omega\colon \calS\to\Irr(\calF)\,,\quad
  (G,K,\kappa,[V])\mapsto [S_{(G,K,\kappa,V)}]\,.
\end{equation}
\end{nothing}


The goal of this section is to prove the following theorem.


\begin{theorem}\mylabel{parametrization of simples}
The function $\omega$ from (\ref{eqn omega}) induces a
bijection
\begin{equation*}
  \omegabar\colon \calSbar \to \Irr(\calF)\,,\quad
  [G,K,\kappa,[V]]\mapsto [S_{(G,K,\kappa,V)}]\,.
\end{equation*}
\end{theorem}


Before we can prove the theorem we will need three Lemmas as preparation. 

\begin{lemma}\label{lem simple functors 1}
Let $G$ and $H$ be finite groups and let $(K,\kappa)\in\calM_G^G$ and $(L,\lambda)\in\calM_H^H$.

\smallskip
{\rm (a)} If $M\in \calF$ and $\lGamma{(G,K,\kappa)}_{H,L,\lambda}\neq \emptyset$ then, for every $x\in \lGamma{(G,K,\kappa)}_{H,L,\lambda}$, the map
\begin{equation*}
  f_{(L,\lambda)} M(H) \to f_{(K,\kappa)} M(G)\,,\quad m\mapsto xm\,,
\end{equation*}
is an isomorphism of $k$-modules with inverse $m\mapsto \xop m$.

\smallskip
{\rm (b)} Assume that $(K,\kappa)\in\calR_G$ and $(L,\lambda)\in\calR_H$ and that $(G,K,\kappa)\sim(H,L,\lambda)$. Then $|G|=|H|$.
\end{lemma}

\begin{proof}
(a) This follows immediately from the relations 
\begin{equation}\label{eqn x e f relations}
  x \xop = e_{(K,\kappa)},\quad \xop x = e_{(L,\lambda)},\quad e_{(K,\kappa)}f_{(K,\kappa)} = f_{(K,\kappa)},\quad
  e_{(L,\lambda)}f_{(L,\lambda)}=f_{(L,\lambda)}.
\end{equation}

\smallskip
(b) Let $(U,\phi)\in \calM_{G\times H}$ satisfy $l(U,\phi)=(G,K,\kappa)$ and $r(U,\phi)=(H,L,\lambda)$ and assume that $|G|>|H|$. Then $e_{(K,\kappa)}=\left[\frac{G\times H}{U,\phi}\right]\cdotH \left[\frac{G\times H}{U,\phi}\right]^{\rm{op}} = e_{(K,\kappa)}\in I_G$, contradicting $(K,\kappa)\in\calR_G$. Similarly, we obtain a contradiction if we assume $|G|<|H|$.
\end{proof}


\begin{lemma}\label{lem simple functors 2}
Let $(H,L,\lambda,[W])\in\calS$ and let $\Wtilde$ be the irreducible $\Ebar_H$-module defined as in (\ref{Vtilde}).

\smallskip
{\rm (a)}  If $G$ is a finite group with $|G|=|H|$ then $I_G\cdot S_{H,\Wtilde}(G)=\{0\}$ and $S_{H,\Wtilde}(G)$ can be viewed as $\Ebar_G$-module.

\smallskip
{\rm (b)} One has a $k\Gamma_{(H,L,\lambda)}$-module isomorphism $f_{(L,\lambda)}S_{H,\Wtilde}(H)\cong W$. Here, $f_{(L,\lambda)}S_{H,\Wtilde}(H)$ is viewed as $k\Gamma_{(H,L,\lambda)}$-module via the $k$-algebra isomorphism $k\Gamma_{(H,L,\lambda)} \to f_{(L,\lambda)} E_H^c f_{(L,\lambda)}$ from Lemma~\ref{comparing decompositions}(f).
\end{lemma}

\begin{proof}
(a) We may assume that $S_{H,\Wtilde}(G)\neq \{0\}$. Then, with $H$, also $G$ is minimal for $S_{H,\Wtilde}$, since $|G|=|H|$. The result now follows from Proposition~\ref{simple functor proposition}(b).

\smallskip
(b) Recall from Lemma~\ref{lem J} that $S_{H,\Wtilde}(H)\cong \Wtilde = \Ebar_H\fbar_{(L,\lambda)}\otimes_{k\Gamma_{(H,L,\lambda)}} W$ as $E_H$-modules. Thus, using Part~(a) for $G=H$, we have $f_{(L,\lambda)}S_{H,\Wtilde}(H)=\fbar_{(L,\lambda)} S_{H,\Wtilde}(H)\cong \fbar_{(L,\lambda)}\Ebar_H\fbar_{(L,\lambda)}\otimes_{k\Gamma_{(H,L,\lambda)}} W$ as $\fbar_{(L,\lambda)}\Ebar_H\fbar_{(L,\lambda)}$-modules. Using the $k$-algebra isomorphism in Proposition~\ref{prop structure of Ebar}(c), we obtain the desired isomorphism.
\end{proof}


Let $G$ and $H$ be finite groups. Generalizing the notation from~\ref{covering algebra}(a), we define $B_k^{A,c}(G,H)$ as the $k$-span of the standard basis elements $\left[\frac{G\times H}{U,\phi}\right]$ of $B_k^A(G,H)$ with $(U,\phi)\in\calM_{G\times H}^c$, i.e., such that $p_1(U)=G$ and $p_2(U)=H$.

\begin{lemma}\label{lem simple functors 3}
Let $G$ and $H$ be finite groups and let $(K,\kappa)\in\calM_G^G$ and $(L,\lambda)\in\calM_H^H$.

\smallskip
{\rm (a)} If $|G|=|H|$ then the map
\begin{equation*}
  \alpha\colon k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}] \to f_{(K,\kappa)} B^{A,c}_k(G, H) f_{(L,\lambda)},\quad 
  b\mapsto f_{(K,\kappa)} b f_{(L,\lambda)}\,,
\end{equation*}
is an isomorphism of $(k\Gamma_{(G,K,\kappa)},k\Gamma_{(H,L,\lambda)})$-bimodules, where $f_{(K,\kappa)} B^{A,c}_k(G,H) f_{(L,\lambda)}$ is viewed as $(k\Gamma_{(G,K,\kappa)},k\Gamma_{(H,L,\lambda)})$-bimodule via the isomorphism from Lemma~\ref{comparing decompositions}(f).

\smallskip
{\rm (b)} Assume that $(H,L,\lambda,[W])\in\calS$ and that $|G|=|H|$. Then there exists an epimorphism
\begin{equation*}
  k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}] \otimes_{k\Gamma_{(H,L,\lambda)}} W  \to  f_{(K,\kappa)} S_{H,\Wtilde}(G)\end{equation*}
of $k\Gamma_{(G,K,\kappa)}$-modules, where $f_{(K,\kappa)} S_{H,\Wtilde}(G)$ is viewed as $k\Gamma_{(G,K,\kappa)}$-module via the isomorphism from Lemma~\ref{comparing decompositions}(f).
\end{lemma}

\begin{proof}
(a) First we treat the case that $\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}$ is non-empty and we pick an element $x$ from it. Consider the diagram of left $k\Gamma_{(G,K,\kappa)}$-module homomorphisms,
\begin{diagram}
  \movevertex(-40,0){k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}]} & 
  \movearrow(5,0){\Ear[70]{-\cdotH \xop}} & 
  \movevertex(30,0){k\Gamma_{(G,K,\kappa)}} &&
  \movearrow(-40,0){\Sar{\alpha}} & & 
  \movearrow(30,0){\saR{\wr}} &&
  \movevertex(-50,0){f_{(K,\kappa)} B_k^{A,c}(G,H) f_{(L,\lambda)}} & 
  \Ear[60]{-\cdotH \xop f_{(K,\kappa)}} & 
  \movevertex(30,0){f_{(K,\kappa)} E_G^c f_{(K,\kappa)}} &&
\end{diagram}
where the right vertical map is the isomorphism $a\mapsto f_{(K,\kappa)} a f_{(K,\kappa)}$ from Lemma~\ref{comparing decompositions}(f). By Lemma~\ref{lem delete f} we have
\begin{equation}\label{eqn x f relations}
  f_{(K,\kappa)} x f_{(L,\lambda)} = x f_{(L,\lambda)}\quad\text{and}\quad 
  f_{(L,\lambda)} \xop f_{(K,\kappa)} = \xop f_{(K,\kappa)}\,.
\end{equation}
This implies that the diagram is commutative. And together with the relations in (\ref{eqn x e f relations}) it implies that the top horizontal map is an isomorphism with inverse $-\cdotG x$ and that the bottom horizontal map is an isomorphism with inverse $-\cdotG x f_{(L,\lambda)}$. Thus, also $\alpha$ is an isomorphism.

Next assume that $\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}$ is empty. Let $(U,\phi)\in\calM^c_{G\times H}$ and set $b:=\left[\frac{G\times H}{U,\phi}\right] \in B_k^{A,c}(G,H)$, a general standard basis element. It suffices to show that $f_{(K,\kappa)} b f_{(L,\lambda)} = 0$. Set $(K',\kappa'):=l_0(U,\phi)\in \calM_G^G$ and $(L',\lambda'):=r_0(U,\phi)\in \calM_H^H$.
Then $b=e_{(K',\kappa')} b e_{(L',\lambda')}$. By Proposition~\ref{e,f-relations 1}, we may assume that $(K',\kappa')\le (K,\kappa)$ and $(L',\lambda')\le (L,\lambda)$. We will show that a pair $(U,\phi)$ with these conditions cannot exist. Assume it does. Then \begin{equation*}
   e_{(K,\kappa)}\left[\frac{G\times H}{U,\phi}\right] e_{(L,\lambda)} =  \left[\frac{G\times H}{V,\psi}\right]
\end{equation*}
for some $(V,\psi)\in\calM_{G\times H}$ satisfying $l(V,\psi)=(G,K,\kappa)$ and $l(V,\psi)=(H,L,\lambda)$ by Proposition~\ref{idempotent proposition}(b). Thus $(V,\psi)\in\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}$, a contradiction.

\smallskip
(b) Recall from \ref{noth LGV} that, for every finite group $I$, the evaluation $L_{H,\Wtilde}(I)$ is given by 
\begin{equation*}
  L_{H,\Wtilde}(I)=B_k^A(I,H)\otimes_{E_H}\Wtilde = 
  B_k^A(I,H)\otimes_{E_H} \Ebar_H \fbar_{(L,\lambda)}\otimes_{k\Gamma_{(H,L,\lambda)}} W\,.
\end{equation*}
Similar to the functor $L_{H,\Wtilde}$ we define a functor $M_{H,W}\in\calF$ via
\begin{equation*}
  M_{H,W}(I)= B_k^A(I,H)\otimes_{E_H} E_H f_{(L,\lambda)}\otimes_{k\Gamma_{(H,L,\lambda)}} W 
  = B_k^A(I,H) f_{(L,\lambda)}\otimes_{k\Gamma_{(H,L,\lambda)}} W \,.
\end{equation*}
The functor is defined on morphisms in the same way as $L_{H,\Wtilde}$, namely via composition in the category $\calC$ from the left. Since the $(E_H,k\Gamma_{(H,L,\lambda)})$-bimodule $\Ebar_H \fbar_{(L,\lambda)}$ is a factor module of the $(E_H,k\Gamma_{(H,L,\lambda)})$-bimodule  $E_H f_{(L,\lambda)}$, we obtain an epimorphism of functors $M_{H,W}\to L_{H,\Wtilde}$. Composing it with the natural epimorphism $L_{H,\Wtilde}\to S_{H,\Wtilde}$ we obtain an epimorphism $\pi\colon M_{H,W}\to S_{H,\Wtilde}$ of $A$-fibered biset functors. In particular we have an epimorphism
\begin{equation*}
  \pi_G\colon B_k^A(G,H)f_{(L,\lambda)}\otimes_{k\Gamma_{(H,L,\lambda)}} W \to S_{H,\Wtilde}(G)
\end{equation*}
of $E_G$-modules. If $(U,\phi)\in\calM_{G\times H}\smallsetminus\calM^c_{G\times H}$ then $\pi_G(\left[\frac{G\times H}{U,\phi}\right]\otimes w) = 0$ for all $w\in W$. In fact, this follows from the decomposition of $\left[\frac{G\times H}{U,\phi}\right]$ as in   Proposition~\ref{decomposition} and from $|G|=|H|$, since $S_{H,\Wtilde}(I)=\{0\}$ for all finite groups $I$ with $|I|< |G|=|H|$. Thus, we also obtain an epimorphism
\begin{equation*}
  B_k^{A,c}(G,H)f_{(L,\lambda)}\otimes_{k\Gamma_{(H,L,\lambda)}} W \to S_{H,\Wtilde}(G)
\end{equation*}
of $E_G^c$-modules, and after multiplying with the idempotent $f_{(K,\kappa)}$ we obtain an epimorphism
\begin{equation*}
  f_{(K,\kappa)} B_k^{A,c}(G,H)f_{(L,\lambda)}\otimes_{k\Gamma_{(H,L,\lambda)}} W \to f_{(K,\kappa)} S_{H,\Wtilde}(G)
\end{equation*}
of $f_{(K,\kappa)} E_G^c f_{(K,\kappa)}$-modules. Using the isomorphism from Part~(a) and the $k$-algebra isomorphism $k\Gamma_{(G,K,\kappa)} \to f_{(K,\kappa)} E_G^c f_{(K,\kappa)}$ from Proposition~\ref{prop structure of Ebar}(c), we obtain the desired epimorphism of $k\Gamma_{(G,K,\kappa)}$-modules.
\end{proof}
 
 
\begin{nothing}{\bf Proof of Theorem~\ref{parametrization of simples}.}
(a) First we show that the map $\omega$ in (\ref{eqn omega}) is surjective.
So let $S\in\calF$ be simple. Choose a finite group
$G$ of minimal order  such that $S(G)\neq\{0\}$. Then, by
Proposition~\ref{simple functor proposition}(a), $U:=S(G)$ is an
irreducible $E_G$-module and $S\cong S_{G,U}$. Since
$S(H)=0$ for all finite groups $H$ with $|H|<|G|$, the module $U$ is
annihilated by $I_G$ and comes via
inflation from an irreducible $\Ebar_G$-module which we again denote by $U$. By Corollary~\ref{simples of Ebar 3}, we obtain $U\cong \Ebar_G \fbar_{(K,\kappa)}
\otimes_{k\Gamma_{(G,K,\kappa)}} V$ for some $(K,\kappa)\in\calR_G$
and some irreducible $k\Gamma_{(G,K,\kappa)}$-module $V$. Thus, $U\cong \Vtilde$ as defined in (\ref{Vtilde}) and $S\cong S_{G,U}\cong S_{G,\Vtilde}=S_{(G,K,\kappa,V)}$.

\smallskip
(b) Next we show that if $(G,K,\kappa,[V]), (H,L,\lambda,[W])\in\calS$ are linked then $S_{(G,K,\kappa,V)}\cong S_{(H,L,\lambda,W)}$. First, $(G,K,\kappa,[V])\sim(H,L,\lambda,[W])$ implies $|G|=|H|$, by Lemma~\ref{lem simple functors 1}(b). Further, by Lemma~\ref{lem simple functors 2}(a), $S_{H,\Wtilde}(G)$ is an $\Ebar_G$-module. Since $f_{(L,\lambda)}S_{H,\Wtilde}(H)\cong W$, by Lemma~\ref{lem simple functors 2}(b), and since $(G,K,\kappa)\sim(H,L,\lambda)$, we obtain $\fbar_{(K,\kappa)}S_{H,\Wtilde}(G)\neq0$, by Lemma~\ref{lem simple functors 1}(a). Moreover, since $(G,K,\kappa,[V])\sim (H,L,\lambda,[W])$, we have $V\cong k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}] \otimes_{k\Gamma_{(H,L,\lambda)}} W$ and Lemma~\ref{lem simple functors 3}(b) implies $\Hom_{k\Gamma_{(G,K,\kappa)}}(V,\fbar_{(K,\kappa)}S_{H,\Wtilde}(G))\neq\{0\}$. But
\begin{align*} 
  & \Hom_{k\Gamma_{(G,K,\kappa)}}\bigl(V,\fbar_{(K,\kappa)}S_{H,\Wtilde}(G)\bigr)
  \cong  \Hom_{k\Gamma_{(G,K,\kappa)}}\bigl(V,\Hom_{\Ebar_G}(\Ebar_G \fbar_{(K,\kappa)}, S_{H,\Wtilde}(G))\bigr) \\
  & \qquad \cong \ \Hom_{\Ebar_G}\bigl(\Ebar_G \fbar_{(K,\kappa)}\otimes_{k\Gamma_{(G,K,\kappa)}} V, S_{H,\Wtilde}(G)\bigr) 
  \cong  \Hom_{\Ebar_G} (\Vtilde, S_{H,\Wtilde}(G))\,.
\end{align*}
Thus, $\Hom_{\Ebar_G}(\Vtilde,S_{H,\Wtilde}(G))\neq\{0\}$. Since both $\Vtilde$ and $S_{H,\Wtilde}(G)$ are simple $E_G$-modules, we obtain $\Vtilde\cong S_{H,\Wtilde}(G)$. Now Proposition~\ref{simple functor proposition}(d) implies that $S_{G,\Vtilde}=S_{H,\Wtilde}$.
  
\smallskip
(c) Finally, we show that if $(G,K,\kappa,[V]),(H,L,\lambda,[W])\in\calS$ satisfy $S_{(G,K,\kappa,[V])}\cong S_{(H,L,\lambda,[W])}$ then $(G,K,\kappa,V)\sim(H,L,\lambda,W)$. Note that, since $G$ is a minimal subgroup for $S_{G,\Vtilde}$ and $H$ is a minimal subgroup for $S_{H,\Wtilde}$ (by Proposition~\ref{simple functor proposition}(d)), we have $|G|=|H|$. Thus, $I_G$ annihilates $S_{H,\Wtilde}(G)$, and $S_{H,\Wtilde}(G)$ is an $\Ebar_G$-module, by Lemma~\ref{lem simple functors 2}(a). Since $S_{G,\Vtilde}\cong S_{H,\Wtilde}$, we have isomorphisms $\fbar_{(K,\kappa)} S_{H,\Wtilde}(G) \cong \fbar_{(K,\kappa)} S_{G,\Vtilde}(G) \cong V$ as $k\Gamma_{(G,K,\kappa)}$-modules, by Proposition~\ref{lem simple functors 2}(b). By Lemma~\ref{lem simple functors 3}(b), there exists an epimorphism $k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}]\otimes_{k\Gamma_{(H,L,\lambda)}} W\to \fbar_{(K,\kappa)} S_{H,\Wtilde}(G)\cong V$ of $k\Gamma_{(G,K,\kappa)}$-modules. In particular, $\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}\neq\emptyset$. Since $k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}] \otimes_{k\Gamma_{(H,L,\lambda)}} W$ is a simple $k\Gamma_{(G,K,\kappa)}$-module (see \ref{covering algebra}(c)), we obtain $k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}] \otimes_{k\Gamma_{(H,L,\lambda)}} W \cong V$ as $k\Gamma_{(G,K,\kappa)}$-modules. Thus, $(G,K,\kappa, [V])\sim(H,L,\lambda,[W])$, and the proof of Theorem~\ref{parametrization of simples} is complete.
\qed
\end{nothing}
  
  
The next proposition shows that the evaluation $S(H)$ of a simple functor $S$ parametrized by the quadruple $(G,K,\kappa,[V])$ vanishes, unless $H$ has a section that is related to the triple $(G,K,\kappa)$ in very strong sense.


\begin{proposition}\mylabel{non-vanishing of simple functors}
Let $(G,K,\kappa,[V])\in\calS$ and let $\Vtilde$ be the associated
irreducible $E_G$-module from (\ref{Vtilde}). Assume that $H$ is a finite group such that $S_{G,\Vtilde}(H)\neq \{0\}$. Then there exist subgroups
$H_1\trianglelefteq H_2\le H$ such that $I:=H_2/H_1$ has the following property: There exists a pair
$(L,\lambda)\in\calM_I^I$ with faithful $\lambda$, such that 
$(G,K,\kappa)\sim(I,L,\lambda)$, 
$G/K\cong I/L$, $K\cap G'\cong L\cap I'$, and $|I|\ge|G|$.
\end{proposition}

\begin{proof} Recall that $S_{G,\Vtilde}=L_{G,\Vtilde}/J_{G,\Vtilde}$.
Since $S_{G,\Vtilde}(H)\neq \{0\}$, we have a proper inclusion
\begin{equation*}
  J_{G,\Vtilde}(H)\subset L_{G,\Vtilde}(H)= B_k^A(H,G)\otimes_{E_G} \Vtilde 
  = B_k^A(H,G)\otimes_{E_G} \Ebar_G\fbar_{(K,\kappa)} \otimes_{k\Gamma_{(G,K,\kappa)}} V\,.
\end{equation*}
By the explicit description of $J_{G,\Vtilde}(H)$ in Lemma~\ref{lem J}, and since $\Ebar_G\fbar_{(K,\kappa)}=\fbar_{\{K,\kappa\}}\Ebar_G\fbar_{(K,\kappa)}$, there exist elements $(U,\phi)\in\calM_{G\times H}$ and $(W,\psi)\in\calM_{H\times G}$ such that the standard basis elements 
\begin{equation*}
  x:=\left[\frac{G\times H}{U,\phi}\right]\in B_k^A(G,H)\quad\text{and}\quad 
  y:=\left[\frac{H\times G}{W,\psi}\right]\in B_k^A(H,G)
\end{equation*}
satisfy $x\cdotH y\cdotG f_{\{K,\kappa\}}\notin I_G$. This implies that there exists $(\Ktilde,\kappatilde)\in\{K,\kappa\}_G$ such that $x\cdotH y\cdotG f_{(\Ktilde,\kappatilde)}\notin I_G$. By the decomposition in Proposition~\ref{decomposition} we obtain immediately that $r(W,\psi)=(G,\Kttilde,\kappattilde)$ with faithful $\kappattilde$. Moreover, since $x\cdotH y\cdotG f_{(\Ktilde,\kappatilde)}\notin I_G$ and $y =y\cdotG e_{(\Kttilde,\kappattilde)}$, Proposition~\ref{e,f-relations 1} implies that $(\Kttilde,\kappattilde)\le(\Ktilde,\kappatilde)$. Again by Proposition~\ref{e,f-relations 1}, we have $y \cdotG f_{(\Ktilde,\kappatilde)} = y\cdotG e_{(\Ktilde,\kappatilde)} f_{(\Ktilde,\kappatilde)}$. Thus, replacing $y$ with the standard basis element $y\cdotG e_{(\Ktilde,\kappatilde)}$ and using the dual version of Proposition~\ref{idempotent proposition}(b), we may assume that $r(W,\psi)=(G,\Ktilde,\kappatilde)$ with $(\Ktilde,\kappatilde)\in\{K,\kappa\}_G$. Since $p_2(W)=G$ and $\kappa$ is faithful, one can decompose $y$ according to Proposition~\ref{decomposition} as
\begin{equation*}
  y=\Ind_{H_2}^H\mathop{\cdot}\limits_{H_2} \Inf_{I}^{H_2} \mathop{\cdot}\limits_{I} 
  \left[\frac{I\times G}{\Wtilde,\psitilde}\right]
\end{equation*}
with $H_2:=p_1(W)$ and $H_1:=\ker(\psi_1)$, where $\psi_1\in k_1(W)^*$ is defined as in \ref{noth M_G}, and $I:=H_2/H_1$. Note that $l(\Wtilde,\psitilde)=(I,L,\lambda)$ with faithful $\lambda\in L^*$ and that $r(\Wtilde,\psitilde)=r(W,\psi)=(G,\Ktilde,\kappatilde)$. Thus we have $(I,L,\lambda)\sim(G,\Ktilde,\kappatilde)\sim(G,K,\kappa)$. Parts (c) and (d) of Proposition~\ref{eta and zeta} now imply that $H/L\cong G/K$ and that $L\cap I'\cong K\cap G'$. Finally, since $x\cdotH y\cdotG f_{\{K,\kappa\}}\notin I_G$, and $y$ factors through $I$ we also have $|G|\le |I|$.
\end{proof}


\begin{remark}\label{rem Romero}
It will frequently happen that $G$ and $H$ are non-isomorphic finite groups and that $(K,\kappa)\in\calR_G$ and $(L,\lambda)\in\calR_H$ are reduced pairs such that $(G,K,\kappa)\sim(H,L,\lambda)$. All one needs is a pair $(U,\phi)\in\calM_G$ with $l(U,\phi)=(G,K,\kappa)$ and $r(U,\phi)= (H,L,\lambda)$. If $W$ is an irreducible $k\Gamma_{(H,L,\lambda)}$-module and $V:=k[\lGamma{(G,K,\kappa)}_{(H,L,\lambda)}]\otimes_{k\Gamma_{(H,L,\lambda)}} W$ is the corresponding irreducible $k\Gamma_{(G,K,\kappa)}$-module, then $S:=S_{G,\Vtilde}\cong S_{H,\Wtilde}$ and the minimal groups $G$ and $H$ for $S$ are non-isomorphic, answering a question of Serge Bouc (cf.~\cite[Conjecture~2.16]{Romero2012a}) to the negative.
See for instance \cite[Example~12]{Romero2012a}, giving an example of $(U,\phi)\in\calM_{G\times H}$ where $G$ is the quaternion group of order $8$ and $H$ the dihedral group of order $8$. For this example to work, $A$ needs to be an abelian group which contains an element of order $4$. A pair $(U,\phi)$ with $\phi$ of order $4$ is explicitly constructed. In this example, $(K,\kappa)=(Z(G),\kappa)$ and $(L,\lambda)=(Z(H),\lambda)$, where $\kappa$ and $\lambda$ are injective homomorphisms to $A$. Note that $(K,\kappa)$ and $(L,\lambda)$ are reduced by Proposition~\ref{conditions for reduced}(b).
\end{remark}


%\begin{example}\mylabel{special example}

%Let $G=D_8=\langle s,d\mid s^2=d^4=1, sds^{-1}=d^{-1}\rangle$ be the dihedral group of order $8$ and let $H=Q_8=\langle a,b\mid a^4=1, a^2=b^2, bab^{-1}=a^{-1}\rangle$ be the quaternion group of order $8$. Moreover, let $A$ be an abelian group containing an element $t$ of order $2$. Set
%\begin{equation*}
%  U:=\{ (d^is^j,a^kb^l)\in G\times H \mid i,k\in\{0,1,2,3\}, j,l\in\{0,1\}, i-k \text{ even, } j=l\}\,,
%\end{equation*}
%and let $\phi\in U^*$ be defined by
%\begin{equation*}
%  \phi(d^is^j,a^kb^l):= t^{\frac{i-k}{2}}\,.
%\end{equation*}
%It is straightforward to check that $U$ is in fact a subgroup of $G\times H$ and that $\phi$ defines a homomorphism.

%It is immediate that $p_1(U)=G$, $p_2(U)=H$, $K:=k_2(U)=Z(G)=G'$, $L:=k_2(U)=Z(H)=H'$, and that $\phi_1\neq 1$ and $\phi_2\neq 1$. Proposition~\ref{conditions for reduced}(b) implies that $(K,\kappa):=(Z(G),\phi_1)\in\calR_G(A)$ and that $(L,\lambda):=(Z(H),\phi_2)\in\calR_H(A)$. Thus, we can consider the simple fibered biset functors $S_{(H,L,\lambda,W)}$ for any irreducible $k\Gamma_{(H,K,\lambda)}$-module $W$. Note that $(G,K,\kappa)$ and $(H,L,\lambda)$ are linked via $(U,\phi)$. Let $V$ be the corresponding irreducible $k\Gamma_{(G,K,\kappa)}$-module. Then $S_{(G,K,\kappa,V)}\cong S_{(H,L,\lambda,W)}$. Note that $G$ is a minimal group for $S_{(G,K,\kappa,V)}$ and that $H$ is a minimal group for $S_{(H,L,\lambda,W)}$, by Proposition~\ref{simple functor proposition}(c). Thus, this example shows that two minimal groups for a simple $A$-fibered biset functor need not to be isomorphic.
%\end{example}
%
%
%\begin{remark}\mylabel{rem Romero}
%A biset functor $F$ is called a \emph{Green biset functor} if it also has a ring structure. More precisely, $F$
%is a Green biset functor if there are morphisms 
%\[
%\mu: F\otimes F\to F, \qquad e: B\to F
%\]
%satisfying the usual compatibility conditions. Here $B$ is the Burnside functor. See \cite{BoucBook} for 
%details. 
%
%As in the case of (ordinary) Green functors, one can define modules over a Green biset functor $F$ as a 
%biset functors with an action of $F$. The question of classifying the simple modules over a Green
%biset functor arises naturally. According to a conjecture of Bouc (see \cite[Conjecture~2.16]{Romero2012a} for a precise formulation), these simple modules should be parameterized 
%by pairs $(G,V)$ where $G$ runs over all finite groups, up to isomorphism, and $V$ is a simple module for 
%certain algebra associated to $F$ and $G$. This conjecture would imply that two minimal groups of a simple module over a Green functor have to be isomorphic.  Note that $B_k(-;A)$ can be considered as a Green biset functor. Thus, the above example provides a counterexample to this conjecture. The first counterexample was given by Romero in \cite{Romero2013a}. It is of a similar form as the above one.
%\end{remark}


%%%%%%%%%%%%%% SECTION 10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{Reduced pairs revisited}\label{sec completely reduced pairs}

In the previous section, we parametrized the simple fibered biset functors by equivalence classes of quadruples $(G,K,\kappa,[V])$, where $(K,\kappa)$ is reduced in $\calM_G$. The indirect definition of being reduced makes it very difficult to determine which pairs $(K,\kappa)$ are reduced in $\calM_G$. The goal of this section is to establish a more explicit characterization (see Corollary~\ref{reduced pairs for special A}) of being reduced under additional assumptions on $A$. These assumptions are satisfied in all the cases of interest to us; for instance when $A$ is the multiplicative group of an algebraically closed field $F$.


\begin{hypothesis}\mylabel{hypothesis}
The group $A$ has the following property:
There exists a (unique) set $\pi$ of primes such that for every
$n\in\NN$, the $n$-torsion part $\{a\in A\mid a^n=1\}$ of $A$ is
cyclic of order $n_\pi$. Here, $n_\pi$ denotes the $\pi$-part of $n$.
\end{hypothesis}


\begin{remark}\mylabel{hypothesis remark}
(a) By $\pi'$ we will denote the subset of primes which is
complementary to $\pi$. For an abelian group $B$ we
denote the $\pi$-torsion subgroup of $B$ by $B_\pi$. 

\smallskip
(b) Note that Hypothesis~\ref{hypothesis} implies that $\torA$ is
divisible, i.e., for every $a\in\torA$ and every $n\in\NN$ there
exists $b\in\torA$ such that $b^n=a$.

\smallskip
(c) The important part of $A$ is its torsion subgroup $\torA$. Nothing in what follows changes if
we replace $A$ with $\torA$, see Proposition~\ref{prop A and torA}(c). But we want to keep the freedom
to choose $A$ as the multiplicative group of a field or of an integral
domain. Then Hypothesis~\ref{hypothesis} means that, for any given
prime $p$, if the field has a primitive $p$-th root of unity then it
must have a primitive $p^n$-th root of unity for every $n$. It is not
difficult to see that Hypothesis~\ref{hypothesis} is equivalent to
having an isomorphism $\torA\cong(\CC^\times)_\pi\cong(\QQ/\ZZ)_\pi$,
but we want to keep the freedom to choose the ring or field more
naturally depending on the situation.
\end{remark}


The following propositions list some consequences of
Hypothesis~\ref{hypothesis} on $A$.


\begin{proposition}\mylabel{prop A and torA}
Assume that $\torA$ is divisible and that, for every $n\in\NN$, the $n$-torsion group $A_n$ is finite. Furthermore, let $G$ be a finite group acting trivially on $A$.

\smallskip
{\rm (a)} The group $B^2(G,A)$ of $2$-coboundaries has a complement in the group $Z^2(G,A)$ of $2$-cocycles.

\smallskip
{\rm (b)} The group $H^2(G,A)$ is finite and has exponent dividing $|G|$.

\smallskip
{\rm (c)} The canonical map $H^2(G,\torA)\to H^2(G,A)$ is an isomorphism and every $2$-cohomology class in $H^2(G,A)$ can be represented by a $2$-cocycle with values in $A_{|G|}$.
\end{proposition}

\begin{proof}
Parts (a) and (b) are proved in the same way as Theorem~11.15 in \cite{Isaacs1976a}, using Lemma~\cite[Lemma~11.14]{Isaacs1976a}. The proof of Theorem~11.15 in \cite{Isaacs1976a} also shows that $C^2(G,A)_{|G|}\cdot B^2(G,A) = Z^2(G,A)$. This proves the surjectivity of the canonical map $H^2(G,\torA)\to H^2(G,A)$ and the existence part of the statement in Part~(c). The injectivity of the above map follows immediately from the long cohomology sequence, see also Remark~\ref{rem linkage criterion}(b).
\end{proof}


Recall the notation $B^*:=\Hom(B,A)$ for any abelian group $B$.


\begin{proposition}\mylabel{hypothesis consequence}
Assume Hypothesis~\ref{hypothesis}, let $S$ be a finite group and let
$B$ be a finite abelian group.

\smallskip
{\rm (a)} One has $|B^*|=|B|_\pi$.

\smallskip
{\rm (b)} For every subgroup $C$ of $B$, the sequence of natural maps
\begin{equation*}
  1\to (B/C)^* \to B^* \to C^* \to 1
\end{equation*}
is exact.

\smallskip
{\rm (c)} One has $\bigcap_{\mu\in B^*} \ker(\mu)= B_{\pi'}$.

\smallskip
{\rm (d)} The canonical map
\begin{equation*}
  \epsilon\colon B_\pi\to (B^*)^*\,,\quad b\mapsto (\mu\mapsto
  \mu(b))\,,
\end{equation*}
is an isomorphism.

\smallskip
{\rm (e)} Let $T\le S$ be an abelian subgroup with $|T|=|T|_\pi$. The
restriction map $S^*\to T^*$ is surjective if and only if $S'\cap
T=\{1\}$.

\smallskip
{\rm (f)} The cohomology group $H^2(S,\torA)$ is finite and the group
$B^2(S,\torA)$ of coboundaries has a complement in the group
$Z^2(S,\torA)$ of cocycles. Here, we assume that $S$ acts trivially on
$\torA$.
\end{proposition}

\begin{proof}
(a) This follows immediately from Hypothesis~\ref{hypothesis}
and the structure theorem for finite abelian groups.

\smallskip
(b) Since $\Hom(-,A)$ is left exact, the sequence is exact everywhere,
except possibly at $C^*$. By Part~(a), this implies that the
restriction map $B^*\to C^*$ has image of order
\begin{equation*}
  |B^*|/|(B/C)^*| = |B|_\pi / |B/C|_\pi = |C|_\pi = |C^*|\,.
\end{equation*}
Thus, the map $B^*\to C^*$ is surjective.

\smallskip
(c) Since $A$ has trivial $\pi'$-torsion, it is clear that $B_{\pi'}\subseteq\ker(\mu)$
for every homomorphism $\mu\in B^*$.
Conversely, assume that $b\in B$ has order $n$ with $n_\pi\neq 1$. Let
$a\in A$ be an element of order $n_\pi$ (which exists by
Hypothesis~\ref{hypothesis}). Then $\nu\colon \langle
b\rangle\to A$, $b\mapsto a$, defines a group homomorphism. By
Part~(b), $\nu$ can be extended to a homomorphism $\mu\in B^*$. Thus,
we have $\mu(b)=a\neq 1$ for some $\mu\in B^*$.

\smallskip
(d) By Part~(c), the map $\epsilon$ is injective. By Part~(a), we have
$|B_\pi|=|B|_\pi=|B^*|=|B^*|_\pi = |(B^*)^*|$. Thus, $\epsilon$ is also
surjective.

\smallskip
(e) Assume first that $S'\cap T$ contains an element $t\neq 1$. Since $T$ is a $\pi$-group,
there exists a homomorphism $\nu_1\colon\langle t\rangle \to A$ with
$\nu_1(t)\neq 1$. By Part~(b), this homomorphism can be extended to a
homomorphism $\nu_2\in T^*$. Then $\nu_2(t)\neq 1$ and, since $t\in S'$, the map $\nu_2$ is not
in the image of $S^*\to T^*$.

Now assume that $S'\cap T=\{1\}$. Then $S'T/S'$ is canonically
isomorphic to $T$ and every homomorphism $S'T/S'\to A$ can be extended
to a homomorphism $S/S'\to A$, by Part~(b). Thus, $S^*\to T^*$ is
surjective.

\smallskip
(f) This follows immediately from Proposition~\ref{prop A and torA}.
\end{proof}


\begin{notation}\mylabel{cohomology notation}
Let $S$ be a group and let $B$ be an abelian group. We set
\begin{equation*}
  M(S):=H^2(S,\torA)\,,
\end{equation*}
regarding $\torA$ endowed with the trivial $S$-action. If
$A=\CC^\times$, the unit group of the complex numbers, then $M(S)$ is
the well-known Schur multiplier of $S$. There exists a natural group
homomorphism
\begin{align*}
  \Psi\colon H^2(S,B) & \to \Hom(B^*,M(S))\,,\\
  [\alpha] & \mapsto (\mu\mapsto [\mu\circ\alpha])\,.
\end{align*}
Here, we denote by $[\alpha]$ the cohomology class of a cocycle
$\alpha$. As usual, for an abelian group $C$ we denote by
\begin{equation*}
  \Ext(C,B)
\end{equation*}
the subgroup of $H^2(C,B)$ consisting of cohomology classes of
cocycles $\alpha\colon C\times C\to B$ satisfying
$\alpha(c_1,c_2)=\alpha(c_2,c_1)$ for all $c_1,c_2\in C$. These
cohomology classes correspond to abelian extensions of $C$ by $B$.
Here we assume again that $C$ acts trivially on $B$. Note that one has
a natural group homomorphism
\begin{align*}
  \iota\colon\Ext(S/S',B) & \to H^2(S,B)\,,\\
  [\alpha] & \mapsto [\alpha\circ(\nu\times\nu)]\,,
\end{align*}
where $\nu\colon S\to S/S'$ denotes the natural epimorphism. It is
shown in \cite[Lemma~2.1.17]{Karpilovsky1987a} that $\iota$ is
injective and that the image of $\iota$ is equal to the subgroup
\begin{equation*}
  H_0^2(S,B)\le H^2(S,B)
\end{equation*}
which is defined as the set of cohomology classes whose corresponding group
extensions $1\to B\to X\to S\to 1$ satisfy $B\le Z(X)$ and $B\cap X'=\{1\}$.
\end{notation}


\begin{remark}\mylabel{cohomology diagram}
Assume that $G$ is a group and that $K$ is a normal abelian subgroup of
$G$. Moreover set $\Ktilde:=K\cap G'$. Then the maps defined in
\ref{cohomology notation} give rise to a commutative diagram



\begin{diagram}
  & & & & \movevertex(30,0){\Hom((K/\Ktilde)^*,M(G/K))} &&
  & & & & \movevertex(30,0){\naR{\epsilon_4}} &&
  \movevertexleft{\llap{$1\to$}\Ext(G/KG',K)} & \Ear{\iota_1} & H^2(G/K,K) & \Ear{\Psi_1}
  & \movevertexright{\Hom(K^*,M(G/K))\rlap{$\to 1$}} &&
  \movevertexright{\naR{\epsilon_1}} & & \naR{\epsilon_2} & &
  \movevertex(30,0){\naR{\epsilon_3}} &&
  \movevertexleft{\llap{$1\to$}\Ext(G/KG',\Ktilde)} & \Ear{\iota_2} & H^2(G/K,\Ktilde)
  & \Ear{\Psi_2} & \movevertexright{\Hom(\Ktilde^*,M(G/K))\rlap{$\to 1$}} &&
  & & & & \movevertex(30,15){\nar[20]} &&
  & & & & \movevertex(30.5,35){1} &&
\end{diagram}
Here, $\epsilon_1$, $\epsilon_2$ and $\epsilon_3$ are induced by the
inclusion $\Ktilde\to K$ and $\epsilon_4$ is induced by the natural
epimorphism $K\mapsto K/\Ktilde$. Also, in the domains of the maps
$\iota_1$ and $\iota_2$, we identify $(G/K)/(G/K)'$ with $G/KG'$ in the
obvious way.
\end{remark}


\begin{proposition}\mylabel{cohomology proposition}
Assume that $A$ satisfies Hypothesis~\ref{hypothesis}. Let $G$ be a
finite group, let $K$ be a subgroup of $Z(G)$ with $|K|_\pi=|K|$, and set $\Ktilde:=K\cap G'$.

\smallskip
{\rm (a)} The two rows and the right column in the diagram in
Remark~\ref{cohomology diagram} are exact.

\smallskip
{\rm (b)} Let $\alpha\in Z^2(G/K,K)$ be a cocycle describing the central
extension $1 \to K \to G\to G/K \to 1$. Then, in the diagram in
Remark~\ref{cohomology diagram}, one has
$(\epsilon_4\circ\Psi_1)([\alpha])=1$.
\end{proposition}

\begin{proof}
(a) The column is exact since, $\Hom(-,M(G/K))$ is left exact and
since $1\to (K/\Ktilde)^*\to K^* \to \Ktilde^* \to 1$
is exact by Proposition~\ref{hypothesis consequence}(b).

We only show exactness of the first row. The exactness proof for the second
one is analogous. For the exactness of the first row we refer to the proof of 
\cite[Theorem~2.1.19]{Karpilovsky1987a} in the case
$A=\CC^\times$. The same proof works for $A$ satisfying Hypothesis~\ref{hypothesis}. 
The injectivity of $\iota_1$ and that $\im(\iota_1)= H^2_0(G/K,K)$ is proved in
\cite[Lemma~2.1.17]{Karpilovsky1987a}. The exactness at $H^2(G/K,K)$
can be proved with the same arguments as in
\cite[Theorem~2.1.19]{Karpilovsky1987a}, using
Proposition~\ref{hypothesis consequence}(e) and that $K$ is a
$\pi$-group. The surjectivity of $\Psi_1$ is proved with the same
arguments as in the proof of \cite[Theorem~2.1.19]{Karpilovsky1987a},
using the results in Proposition~\ref{hypothesis consequence}(d) and (f).

\smallskip
(b) There exists a function $\rho\colon G/K\to G$ such that
\begin{equation*}
  \rho(x)\rho(y)=\alpha(x,y)\rho(xy)\,,
\end{equation*}
for all $x,y\in G/K$. Every element in $(K/\Ktilde)^*$ is of the form
$\mubar$ for a homomorphism $\mu\colon K\to A$ with
$\mu|_{\Ktilde}=1$. By the definition of $\Psi_1$ and $\epsilon_4$, it suffices 
to show that $[\mu\circ\alpha]=1$ in
$M(G/K)$, for each such $\mu$. From Proposition~\ref{hypothesis consequence}(e) we know
that $\mubar$ can be extended to a homomorphism $G/\Ktilde\to A$. Then, also $\mu$ can be extended to a homomorphism $\mutilde\colon G\to A$.
Applying $\mutilde$ to the above equation and setting
$\nu(x):=\mutilde(\rho(x))$, for $x\in G/K$, we obtain
\begin{equation*}
  \nu(x)\nu(y)=\mu(\alpha(x,y))\nu(xy)
\end{equation*}
for all $x,y\in G/K$, showing that $[\mu\circ\alpha]=1$.
\end{proof}


The motivation for the following definition is given in
Proposition~\ref{proposition on alphan}. It will be heavily used in
Lemma~\ref{squeezing lemma}.


\begin{definition}\mylabel{definition of alphan}
Let $S$ be a group and let $B$ be an abelian group (endowed with the
trivial $S$-action). For $n\in\NN$, let $F(S^{2n},B)$ denote the
abelian group of functions from $S^{2n}$ to $B$. For each $\alpha\in Z^2(S,B)$, we define functions $\alpha_n\in F(S^{2n},B)$, $n\in\NN$, recursively by setting
\begin{equation*}
  \alpha_1(s_1,s_2):= \alpha(s_1,s_2) \alpha(s_2,s_1)^{-1}
  \alpha(s_2s_1,s_1^{-1}s_2^{-1})^{-1} \alpha(s_1s_2,s_1^{-1}s_2^{-1})
  \alpha(1,1)^{-1}\,,
\end{equation*}
for $s_1,s_2\in S$, and by
\begin{align*}
  \alpha_n(s_1,\ldots,s_{2n}):= & \alpha_{n-1}(s_1,\ldots,s_{2n-2})
  \alpha_1(s_{2n-1},s_{2n})\cdot \\
  & \cdot
  \alpha([s_1,s_2]\cdots[s_{2n-3},s_{2n-2}],[s_{2n-1},s_{2n}])\,,
\end{align*}
for $n\ge 2$.
\end{definition}


\begin{proposition}\mylabel{proposition on alphan}
Let $S$ be a group, let $B$ be an abelian group (with trivial
$S$-action), let $\alpha\in Z^2(S,B)$ and let $n\in\NN$. The function
$\alpha_n\colon S^{2n}\to B$ has the following properties:

\smallskip
{\rm (a)} If
\begin{equation}\label{ses}
 1 \ar B \Ar{\iota} T \Ar{\pi} S \ar 1
\end{equation}
is a short exact sequence of groups with $\iota(B)\le Z(T)$ and if
$\sigma\colon S\to T$ is a section of $\pi$ (i.e.,
$\pi\circ\sigma=\id_S$) such that
\begin{equation}\label{section cocycle relation}
  \sigma(s_1)\sigma(s_2) = \iota(\alpha(s_1,s_2)) \sigma(s_1s_2)
\end{equation}
for all $s_1,s_2\in S$, then one has
\begin{align}\label{property of alphan}
  [\sigma(s_1),\sigma(s_2)] & \cdots [\sigma(s_{2n-1}),\sigma(s_{2n})]
  \\ \notag
  & = \iota(\alpha_n(s_1,s_2,\ldots,s_{2n})) \sigma([s_1,s_2]\cdots
  [s_{2n-1},s_{2n}])\,,
\end{align}
for all $s_1,\ldots,s_{2n}\in S$.

\smallskip
{\rm (b)} One has $(\alpha\beta)_n=\alpha_n\beta_n$ for all
$\alpha,\beta\in Z^2(S,B)$.

\smallskip
{\rm (c)} If $f\colon \Stilde\to S$ is a group homomorphism then
$(\alpha\circ(f\times f))_n = \alpha_n\circ(f\times\cdots\times f)$.

\smallskip
{\rm (d)} If also $C$ is an abelian group with trivial $S$-action and $f\colon B\to C$ is a group homomorphism 
then $(f\circ \alpha)_n = f\circ\alpha_n$.

\smallskip
{\rm (e)} If $S$ is abelian and $\alpha$ is symmetric (i.e.,
$\alpha(s_1,s_2)=\alpha(s_2,s_1)$ for all $s_1,s_2\in S$) then
$\alpha_n$ is the constant function with value $\alpha(1,1)^{-1}$.

\smallskip
{\rm (f)} If there exists a function $\mu\colon S \to B$ such that
$\alpha(s,t)=\mu(s)\mu(t)\mu(st)^{-1}$ for all $s,t\in S$ then
\begin{equation*}
  \alpha_n(s_1,\ldots,s_{2n}) =
  \mu([s_1,s_2]\cdots[s_{2n-1},s_{2n}])^{-1}\,,
\end{equation*}
for all $s_1,\ldots,s_{2n}\in S$.
\end{proposition}

\begin{proof}
(a) Assume that we have a short exact sequence as in (\ref{ses}) with
$\iota(B)\le Z(T)$ and a section $\sigma$ of $\pi$ such that
Equation~(\ref{section cocycle relation}) holds for all $s_1,s_2\in
S$. Then Equation~(\ref{section cocycle relation})
implies
\begin{equation}\label{section of 1}
  \sigma(1)=\iota(\alpha(1,1))
\end{equation}
and
\begin{equation}\label{section inverse}
  \sigma(s)^{-1} = \iota(\alpha(s,s^{-1})^{-1} \alpha(1,1)^{-1})
  \sigma(s^{-1})
\end{equation}
for all $s\in S$. We prove Equation~(\ref{property of alphan}) by induction on $n$. For $n=1$, Equation~(\ref{section cocycle relation}) yields
\begin{align*}
  [\sigma(s_1),\sigma(s_2)] & = \sigma(s_1)\sigma(s_2) \bigl(\sigma(s_2)\sigma(s_1)\bigr)^{-1}\\ 
  & = \sigma(s_1s_2)\iota\alpha(s_1,s_2)\sigma(s_2s_1)^{-1}\iota\alpha(s_2,s_1)^{-1}\,.
\end{align*}
Now applying Equation~(\ref{section inverse}), for $s=s_2s_1$, to the third factor in the last expression, we obtain the desired formula. For the induction step from $n-1$ to $n$ we see by first applying the induction hypothesis and the case $n=1$, then Equation~(\ref{section cocycle relation}), that
\begin{align*}
  & [\sigma(s_1),\sigma(s_2)]\cdots[\sigma(s_{2n-1}),\sigma(s_{2n})] \\
  =\ & \iota\alpha_{n-1}(s_1,\ldots,s_{2n-2}) \sigma\bigl([s_1,s_2]\cdots[s_{2n-3},s_{2n-2}]\bigr) 
             \iota\alpha_1(s_{2n-1},s_{2n})\sigma([s_{2n-1},s_{2n}]) \\
  =\ & \sigma\bigl([s_1,s_2]\cdots[s_{2n-1},s_{2n}]\bigr) 
            \iota\alpha\bigl([s_1,s_2]\cdots[s_{2n-3},s_{2n-2}],[s_{2n-1},s_{2n}]\bigr)\cdot \\
            & \qquad\qquad \cdot \iota\alpha_{n-1}(s_1,\ldots,s_{2n-2})\iota\alpha_1(s_{2n-1},s_{2n})\,.
\end{align*}

\smallskip
Parts (b), (c), (d), and (f) follow immediately from the definition of $\alpha_n$ using induction on $n$. And Part~(e) is an easy consequence of Equations~(\ref{property of alphan}) and (\ref{section of 1}).
\end{proof}


\begin{lemma}\mylabel{squeezing lemma}
Assume Hypothesis~\ref{hypothesis} on $A$. Let $G$ be a finite group,
let $K\le Z(G)$ be a $\pi$-group, let $\kappa\in K^*$ be faithful and
set $\Ktilde:=K\cap G'$. Then
there exists a short exact sequence of groups
\begin{equation}\label{sestilde}
  1 \ar \Ktilde \Ar{\iotatilde} \Gtilde \Ar{\pitilde} G/K \ar 1
\end{equation}
with $\iotatilde(\Ktilde)\le Z(\Gtilde)\cap\Gtilde'$ and an element
$(M,\mu)\in\calM_{G\times\Gtilde}$ such that, after identifying
$\Ktilde$ and $\iotatilde(\Ktilde)$ via $\iotatilde$, one has
\begin{equation*}
  p_1(M)=G\,,\ k_1(M)= K\,,\ \mu_1=\kappa\,, \quad \text{and}\quad
  p_2(M)=\Gtilde\,, \ k_2(M)=\Ktilde\,, \ \mu_2=\kappa|_{\Ktilde}\,.
\end{equation*}
In particular, with $\kappatilde:=\kappa|_{\Ktilde}$, one has $(\Ktilde,\kappatilde)\in\calR_{\Gtilde}$, by Proposition~\ref{conditions for reduced}(b).
\end{lemma}

\begin{proof}
Consider the short exact sequence
\begin{equation*}
  1\ar K\Ar{\iota} G\Ar{\pi} G/K \to 1
\end{equation*}
with $\iota$ the inclusion and $\pi$ the canonical surjection. Let
$\sigma\colon G/K\to G$ be a section of $\pi$ and let $\alpha\in
Z^2(G/K,K)$ denote the cocycle satisfying Equation~(\ref{section cocycle
relation}) for all $s_1,s_2\in G/K$. We consider the commutative
diagram from Remark~\ref{cohomology diagram}. By
Proposition~\ref{cohomology proposition}(b) we have
$\epsilon_4(\Psi_1(\alphabar))=1$. As the right hand
column and bottom row of the diagram are exact, there exists $\beta\in
Z^2(G/K,\Ktilde)$ such that
$\epsilon_3(\Psi_2([\beta]))=\Psi_1([\alpha])$. It follows that
$\epsilon_2([\beta])^{-1}\cdot[\alpha]\in\ker(\Psi_1)$ and, by the
exactness of the top row, there exists a symmetric $\gamma\in
Z^2(G/KG',K)$ such that
$\iota_1([\gamma])\cdot\epsilon_2([\beta])=[\alpha]$. After
changing $\beta$ and $\gamma$ by a coboundary, we may assume that
$\beta(1,1)=1$ and that $\gamma(1,1)=1$. After changing the section
$\sigma$, we may also assume that
\begin{equation*}
  \alpha(s_1,s_2)=\gamma(\sbar_1,\sbar_2)\beta(s_1,s_2)
\end{equation*}
for all $s_1,s_2\in G/K$, where $\sbar$ denotes the image of an
element $s\in G/K$ under the natural epimorphism $G/K\to G/KG'$. It
follows that $\alpha(1,1)=1$ and that $\sigma(1)=1$. By
Proposition~\ref{proposition on alphan}(e), we
have
\begin{equation}\label{vanishing of gamma}
  \gamma_n(\sbar_1,\ldots,\sbar_{2n})=1
\end{equation}
and by parts (b) and (c) of the same proposition, we
obtain
\begin{equation}\label{alpha = beta}
  \alpha_n(s_1,\ldots,s_{2n})=\beta_n(s_1,\ldots,s_{2n})
\end{equation}
for all $s_1,\ldots,s_{2n}\in G/K$ and all $n\in\NN$.

\smallskip
Next, we define the group $\Gtilde$, using the cocycle $\beta$, as the
set $\Ktilde\times G/K$ with multiplication
\begin{equation*}
  (\ktilde_1,s_1)(\ktilde_2,s_2):=(\beta(s_1,s_2)\ktilde_1\ktilde_2,s_1s_2)
\end{equation*}
for $\ktilde_1,\ktilde_2\in\Ktilde$ and $s_1,s_2\in G/K$. We obtain a
short exact sequence as in (\ref{sestilde}) with
$\iotatilde(\ktilde):=(\ktilde,1)$ and $\pitilde(\ktilde,s):=s$, for
$\ktilde\in\Ktilde$ and $s\in G/K$. With the section
\begin{equation*}
  \sigmatilde\colon G/K\to \Gtilde\,, \quad s\mapsto (1,s)\,,
\end{equation*}
of $\pitilde$ we obtain
\begin{equation}\label{section cocycle relation tilde}
  \sigmatilde(s_1)\sigmatilde(s_2)=
  \iotatilde(\beta(s_1,s_2))\sigmatilde(s_1s_2)
\end{equation}
for all $s_1,s_2\in G/K$. Note that since $\beta(1,1)=1$, also
$\beta(s,1)=\beta(1,s)=1$ for all $s\in S$. This implies that $(1,1)$
is the identity of $\Gtilde$ and that $\iotatilde(\Ktilde)\le
Z(\Gtilde)$.

\smallskip
Next, we define $M\le G\times\Gtilde$ by
\begin{equation*}
  M:=\{(g,(\ktilde,s))\in G\times\Gtilde\mid \pi(g)=s\}\,.
\end{equation*}
We will identify $\Ktilde$ with $\iotatilde(\Ktilde)$ and view
$\Ktilde$ as a subgroup of $\Gtilde$. It is now clear from the
definition of $M$ that
\begin{equation*}
  p_1(M)= G\,,\quad p_2(M)=\Gtilde\,,\quad k_1(M)=K\,, \quad
  k_2(M)=\Ktilde\,.
\end{equation*}

\smallskip
Next, we want to define $\mu\in M^*$ such that $\mu$ extends
$\kappa\times 1\in (K\times1)^*$. By Proposition~\ref{hypothesis
consequence}(e), it suffices to show that $(K\times1)\cap M'=1$. So
let $k\in K$ and assume that $(k,(1,1))\in M'$. Then we can write
$(k,(1,1))$ as a product of $n$ commutators
$[(g_i,(\ktilde_i,s_i)),(g'_i,(\ktilde'_i,s'_i))]$ of elements in $M$,
$i=1,\ldots,n$. Note that, since the above elements
belong to $M$, we have $\pi(g_i)=s_i$ and $\pi(g'_i)=s'_i$ for
$i=1,\ldots,n$. Note also that, since $K$ is central in $G$ and
$\Ktilde$ is central in $\Gtilde$, we may replace $g_i$ by
$\sigma(\pi(g_i))=\sigma(s_i)$, $g'_i$ by $\sigma(s_i)$ and we may
replace $\ktilde_i$ and $\ktilde'_i$ by $1$. This way, we see that we
can write
\begin{equation*}
  (k,(1,1)) =
  [(\sigma(s_1),\sigmatilde(s_1)),(\sigma(s'_1),\sigmatilde(s'_1))]\cdots
  [(\sigma(s_n),\sigmatilde(s_n)),(\sigma(s'_n),\sigmatilde(s'_n))]
\end{equation*}
for certain element $s_1,s'_1,\ldots,s_n,s'_n\in G/K$. It follows from
Proposition~\ref{proposition on alphan} and Equation~(\ref{alpha = beta}) 
that
\begin{align}\label{commutator product}
  & [(\sigma(s_1),\sigmatilde(s_1)),(\sigma(s'_1),\sigmatilde(s'_1))]\cdots
  [(\sigma(s_n),\sigmatilde(s_n)),(\sigma(s'_n),\sigmatilde(s'_n))]\\
  \notag
  = &
  \Bigl(\alpha_n(s_1,\ldots,s'_n)\sigma([s_1,s'_1]\cdots[s_n,s'_n]),
  \bigl(\beta_n(s_1,\ldots,s'_n),
  \sigmatilde([s_1,s'_1]\ldots[s_n,s'_n])\bigr)\Bigr)
  \\
  \notag
  = &
  \Bigl(\beta_n(s_1,\ldots,s'_n)\sigma([s_1,s'_1]\cdots[s_n,s'_n]),
  \bigl(\beta_n(s_1,\ldots,s'_n),
  \sigmatilde([s_1,s'_1]\ldots[s_n,s'_n])\bigr)\Bigr)\,.
\end{align}
This implies that $\sigmatilde([s_1,s'_1]\ldots[s_n,s'_n])=1$ and that
$\beta_n(s_1,\ldots,s'_n)=1$. Moreover, the first of the last two equation implies that
$[s_1,s'_1]\cdots[s_n,s'_n]=1$ and that
$\sigma([s_1,s'_s]\cdots[s_n,s'_n])=\sigma(1)=1$. Altogether, we
obtain that $k=1$.

\smallskip
Now we know that there exists $\mu\in M^*$ with $\mu|_{K\times
1}=\kappa\times 1$ and we choose any such $\mu$. Then clearly $\mu_1=\kappa$.

\smallskip
Next, we show that
\begin{equation*}
  \Delta(\Ktilde)=\{(\ktilde,(\ktilde,1))\mid\ktilde\in\Ktilde\} \le
  M'\,.
\end{equation*}
Let $\ktilde\in\Ktilde$. Since $\Ktilde\in G'$, there exist
elements $g_1,g'_1,\ldots,g_n,g'_n\in G$ such that
$\ktilde=[g_1,g'_1]\cdots[g_n,g'_n]$. Since $K$ is central in $G$, we
may assume that $g_i=\sigma(s_i)$ and $g'_i=\sigma(s'_i)$ for
$i=1,\ldots,n$ and elements $s_1,\ldots,s'_n\in S$. Thus, we have
\begin{align*}
  \ktilde & =
  [\sigma(s_1),\sigma(s'_1)]\cdots[\sigma(s_n),\sigma(s'_n)] \\
  & = \beta_n(s_1,\ldots,s'_n)\sigma([s_1,s'_1]\cdots[s_n,s'_n])\,,
\end{align*}
by Proposition~\ref{proposition on alphan} and Equation~(\ref{alpha =
beta}). This implies that $\sigma([s_1,s'_1]\cdots[s_n,s'_n])\in\Ktilde$ and,
consequently, that $[s_1,s'_1]\cdots[s_n,s'_n]=1$. Thus $\sigma([s_1,s'_1]\cdots[s_n,s'_n])=1$ and
$\ktilde=\beta_n(s_1,\ldots,s'_n)$. With Equation~(\ref{commutator product}),
we see now that
\begin{equation*}
  (\ktilde,(\ktilde,1)) =
  [(\sigma(s_1),\sigmatilde(s_1)),(\sigma(s'_1),\sigmatilde(s'_1))]\cdots
  [(\sigma(s_n),\sigmatilde(s_n)),(\sigma(s'_n),\sigmatilde(s'_n))]\,,
\end{equation*}
since $\sigmatilde(1)=1$. Therefore $\Delta(\Ktilde)\le M'$.

\smallskip
Since $\Delta(\Ktilde)\le M'$, we have
\begin{equation*}
  1=\mu(\ktilde,(\ktilde,1))=\mu_1(\ktilde)\mu_2^{-1}(\ktilde)
\end{equation*}
for all $\ktilde\in\Ktilde$. This implies that
$\mu_2=\mu_1|_{\Ktilde}=\kappa|_{\Ktilde}$.
Finally, since $\Delta(\Ktilde)\le M'$, we have
$(\ktilde,(\ktilde,1))\in (G\times\Gtilde)'=G'\times\Gtilde'$ and
therefore $(\ktilde,1)\in\Gtilde'$ for all $\ktilde\in\Ktilde$. Thus
$\Ktilde\le\Gtilde'$.
\end{proof}


\begin{definition}
Let $G$, $K$, $\kappa$, $\Gtilde$, and $(M,\mu)$ be as in
Lemma~\ref{squeezing lemma}. By abuse of notation, we define the
$A$-fibered $(G,\Gtilde)$-biset
\begin{equation*}
  \Ins_{\Gtilde}^G:=\left(\frac{G\times\Gtilde}{M,\mu}\right)\,,
\end{equation*}
the {\em insertion} from $\Gtilde$ to $G$ (which inserts the section
$K/\Ktilde$ into $\Gtilde$), and we define the $A$-fibered
$(\Gtilde,G)$-biset
\begin{equation*}
  \Del^G_{\Gtilde}:=(\Ins_{\Gtilde}^G)^{\mathrm{op}}\,,
\end{equation*}
the {\em deletion} from $G$ to $\Gtilde$ (which deletes the section
$K/\Ktilde$ from $G$).

\smallskip
Note that $(G,K,\kappa)$ does not determine $\Gtilde$ and $(M,\mu)$
uniquely, so that $\Ins_{\Gtilde}^G$ and $\Del^G_{\Gtilde}$ are not well-defined elements. 
But all that matters for our purposes is the existence of $\Gtilde$ and $(M,\mu)$ with
the properties from Lemma~\ref{squeezing lemma}, for
given $(G,K,\kappa)$.
\end{definition}


Next we decompose the biset $X$ from Proposition~\ref{decomposition}
further. Recall the properties of $X$ mentioned in the paragraph
following Proposition~\ref{decomposition}.

Recall from Definition~\ref{def twosided reduced} that, for finite groups $G$ and $H$, we call a pair $(U,\phi)\in\calM^c_{G\times H}$ {\em reduced} if $l_0(U,\phi)\in\calR_G$ and $r_0(U,\phi)\in\calR_H$.


\begin{proposition}\mylabel{decomposition 2}
Let $G$ and $H$ be finite groups, let $(U,\phi)\in\calM_{G\times H}$, and set $X:=\left(\frac{G\times H}{U,\phi}\right)$. 
Assume that $p_1(U)=G$, $p_2(U)=H$, set $K:=k_1(U)$, $L:=k_2(U)$, and assume that $\kappa:=\phi_1\in K^*$ and $\lambda:=\phi_2\in L^*$ are faithful. Then there exists a decomposition
\begin{equation*}
  X\cong \Ins_{\Gtilde}^G\otimes_{A\Gtilde} Y \otimes_{A\Htilde}
  \Del^H_{\Htilde}
\end{equation*}
with the following properties:

\smallskip
{\rm (a)} The group $\Gtilde$ is a central extension of $G/K$ by
$\Ktilde:=K\cap G'$ and the group $\Htilde$ is a central extension of $H/L$ by
$\Ltilde:= L\cap H'$.

\smallskip
{\rm (b)} One has an isomorphism
$Y\cong\left(\frac{\Gtilde\times\Htilde}{\Utilde,\phitilde}\right)$
for a reduced pair $(\Utilde,\phitilde)\in\calM_{\Gtilde\times\Htilde}$
satisfying
\begin{equation*}
  k_1(\Utilde)=\Ktilde\,,\ k_2(\Utilde)=\Ltilde\,,\
  \phitilde_1=\kappa|_{\Ktilde}\,,\ \phitilde_2=\lambda|_{\Ltilde}\,.
\end{equation*}
\end{proposition}

\begin{proof}
We define $Y:=\Del^G_{\Gtilde}\otimes_{AG} X \otimes_{AH}
\Ins_{\Htilde}^G$. All the statements of the proposition follow from Lemma~\ref{squeezing
lemma}, Proposition~\ref{idempotent proposition}(b) and (c) and from
the associativity of the tensor product.
\end{proof}


Assuming Hypothesis~\ref{hypothesis}, we have now a simple criterion for a pair to be reduced, thus simplifying the classification of simple fibered biset functors. 


\begin{corollary}\mylabel{reduced pairs for special A}
Assume that $A$ satisfies Hypothesis~\ref{hypothesis}, let $G$ be a finite group, and let $(K,\kappa)\in\calM_G^G$. Then $(K,\kappa)$ is reduced in $G$ if and only if $K$ is a cyclic $\pi$-subgroup contained in $Z(G)\cap G'$ and $\kappa$ is faithful.
\end{corollary}

\begin{proof}
It was already proved in Proposition~\ref{conditions for reduced}(b) that the condition is sufficient for $(K,\kappa)$ to be reduced in $G$. Conversely, assume that $(K,\kappa)$ is reduced in $G$. By Proposition~\ref{conditions for reduced}(a), we know that $\kappa$ is faithful and $K\le Z(G)$. This implies that $K$ is a cyclic $\pi$-group, by the hypothesis on $A$. Assume that $K$ is not contained in $G'$. Applying Proposition~\ref{decomposition 2} to the the pair $(\Delta_K(G), \phi_\kappa)$ shows that $e_{(K,\kappa)}\in I_G$, since $|\Gtilde|<|G|$.
\end{proof}


Combining Propositions~\ref{decomposition} and \ref{decomposition 2},
we obtain the following refined decomposition of an arbitrary transitive fibered biset under Hypothesis~\ref{hypothesis}.


\begin{theorem}\mylabel{decomposition 3}
Assume that $A$ satisfies Hypothesis~\ref{hypothesis}. Let $G$ and $H$ be finite groups, let 
$(U,\phi)\in\calM_{G\times H}$, and let
\begin{equation*}
  \Khat\le\Ktilde\le K\le P\le G\,,\ \Lhat\le L\tilde\le L\le Q\le H\,,\  \kappa:=\phi_1\in K^*\,,\ \text{and}\ \lambda:=\phi_2\in L^*
\end{equation*} 
be defined as in Proposition~\ref{eta and zeta}.

There exists a decomposition
\begin{equation*}
  \left(\frac{G\times H}{U,\phi}\right)\cong
  \Ind_P^G\otimes\Inf_{P/\Khat}^P\otimes\Ins_{\Gtilde}^{P/\Khat}
  \otimes X \otimes
  \Del^{Q/\Lhat}_{\Htilde}\otimes\Def^Q_{Q/\Lhat}\otimes\Res^H_Q\,,
\end{equation*}
where $X\cong\left(\frac{\Gtilde\times
\Htilde}{\Utilde,\phitilde}\right)$ is a transitive $A$-fibered
$(\Gtilde,\Htilde)$-biset such that $(\Utilde,\phitilde)\in\calM^c_{\Gtilde\times\Htilde}$ is reduced, where $\Gtilde$ is a central extension of $P/K$ by $\Ktilde/\Khat$ and $\Htilde$ is a central extension of $Q/L$
by $\Ltilde/\Lhat$, and $\phitilde_1=\kappabar|_{\Ktilde/\Khat}$ and
$\phitilde_2=\lambdabar|_{\Ltilde/\Lhat}$. Here, $\kappabar\in (K/\Khat)^*$ and $\lambdabar\in(L/\Lhat)^*$ are
defined as the unique homomorphisms inflating to $\kappa$ and
$\lambda$, respectively.
\end{theorem}


%\begin{definition}\mylabel{reduced pairs (U,phi)}
%Let $G$ and $H$ be finite groups. 
%
%\smallskip
%(a) We call a pair $(K,\kappa)\in\calR_G(A)$ {\em completely reduced} (in $G$) if $\kappa$ is faithful and $K\le G'$. Note that in this case $K$ is also central in $G$. Recall from Proposition~\ref{conditions for reduced}(b) that every completely reduced pair is also reduced.
%
%\smallskip
%(b) We call a pair $(U,\phi)\in\calM^c_{G\times H}(A)$ {\em completely reduced}, if $l_0(U,\phi)\in\calM_G(A)$ and $r_0(U,\phi)\in\calM_H(A)$ are completely reduced.
%\end{definition}
%
%
%\begin{remark}
%Note that by Proposition~\ref{eta and zeta}(c) and (d) the existence of a reduced pair $(U,\phi)\in\calM_{G\times H}(A)$ implies that $G/K\cong H/L$ and $K\cong L$. In particular $|G|=|H|$. Note that by Example~\ref{special example} the groups $G$ and $H$ need not be isomorphic.
%\end{remark}



%%%%%%%%%%%%%%% SECTION 11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\section{Examples}\label{sec examples}
In this section, we look at several examples of fibered biset functors. We give a criterion for a fibered biset functor to be simple and we apply it to some functors. As before, $A$ is a multiplicatively written abelian group and $k$ denotes a commutative ring.

\smallskip
More precisely, we will identify the simple functors $S_{(\{1\},\{1\},1,k)}$ for some choices of $A$ and $k$ as well-known objects in the representation theory of finite groups. Note that if $G$ is the trivial group then $(K,\kappa)=(\{1\},1)$ is the only reduced pair and $\Gamma_{(\{1\},\{1\},1)}$ is again the trivial group, so that $k$ is naturally a $k\Gamma_{(\{1,\},\{1\},1)}$-module. 

\smallskip
For any functor $F\in\calFkA$ and any class $\calH\subseteq\mathrm{Ob}(\calC)$ of finite groups we define subfunctors $\calI_{F,\calH}$ and $\calK_{F,\calH}$ of $F$ as follows. For a finite group $G$ we set
\begin{gather*}
  \calI_{F,\calH}(G):=\sum_{\substack{H\in\calH \\ x\in B_k^A(G,H)}} \im\bigl(F(x)\colon F(H)\to F(G)\bigr) \subseteq F(G)\,, \\
  \calK_{F,\calH}(G):=\bigcap_{\substack{H\in\calH \\ y\in B_k^A(H,G)}} \ker\bigl(F(y)\colon F(G)\to F(H)\bigr) \subseteq F(G)\,.
\end{gather*}
It is clear that $\calI_{F,\calH}$ and $\calK_{F,\calH}$ are subfunctors of $F$.

\medskip
The following proposition gives a criterion for $F$ to be simple. It holds for more general functor categories with the same proof. See also \cite[Theorem 3.1]{TW} for a similar result for Mackey functors.


\begin{proposition}\label{prop simplicity criterion}
Let $F\in\calFkA$ be an $A$-fibred biset functor over $k$ and let $H$ be a finite group such that $F(H)\neq \{0\}$. Then, $F$ is a simple functor if and only if the following three conditions are satisfied:

\smallskip
{\rm (i)} $F(H)$ is a simple $E_H$-module.

\smallskip
{\rm (ii)} $\calI_{F,\{H\}}=F$.

\smallskip
{\rm (iii)} $\calK_{F,\{H\}}=0$.
\end{proposition}


\begin{proof}
We first assume that $F$ is a simple functor. Then $F(H)$ is a simple $E_H$-module by Proposition~\ref{simple functor proposition}(a). Further note that $\calI_{F,\{H\}}(H)=F(H)$ and $\calK_{F,\{H\}}(H)=\{0\}$ (use $x=y=\id_H$ in the definition of $\calI_{F,\{H\}}(H)$ and $\calK_{F,\{H\}}(H)$). Thus $\calI_{F,\{H\}}$ is a non-zero subfunctor of $F$ and $\calK_{F,\{H\}}$ is a proper subfunctor of $F$. Since $F$ is simple, the properties (ii) and (iii) follow.

\smallskip
Next assume that the conditions (i)--(iii) are satisfied and let $L\subseteq F$ be a subfunctor of $F$. Then, $L(H)$ is an $E_H$-submodule of $F(H)$. Since the latter is simple, by (i), we have $L(H)=\{0\}$ or $L(H)=F(H)$. First assume that $L(H)=\{0\}$. We'll show that this implies that $L=0$. In fact, for every finite group $G$ we then have
\begin{align*}
  \{0\} & = \calK_{F,\{H\}}(G) = \bigcap_{y\in B_k^A(H,G)} \ker\bigl(F(y)\colon F(G)\to F(H)\bigr) \\
  & \supseteq L(G) \cap \bigcap_{y\in B_k^A(H,G)} \ker\bigl(F(y)\colon F(G)\to F(H)\bigr) \\
  & = \bigcap_{\substack{H\in\calH \\ y\in B_k^A(H,G)}} \ker\bigl(F(y)\colon L(G)\to F(H)\bigr) = L(G)\,,
\end{align*}
since $F(y)(L(G))\subseteq L(H)=\{0\}$ for all $y\in B_k^A(H,G)$. Finally, we assume that $L(H)=F(H)$ and will show that this implies $L=F$. In fact, for every finite group $G$ we then have
\begin{align*}
  F(G) & = \calI_{F,\{H\}}(G) = \sum_{x\in B_k^A(G,H)} \bigl(F(x)\colon F(H)\to F(G\bigr)) \\
  & = \sum_{x\in B_k^A(G,H)} \im\bigl(F(x)\colon L(H)\to F(G)\bigr) \subseteq L(G)\,,
\end{align*}
since $F(x)(L(H))\subseteq L(G)$, for all $x\in B_k^A(G,H)$.
\end{proof}


\bigskip
\pagebreak
\begin{center}\sc\large \ref{sec examples}A. The Functor $B_k^A$\end{center}

\bigskip\noindent
Canonically identifying a finite group $G$ with $G\times \{1\}$, we have
\begin{equation*}
B^A_k(G)=  B_k^A(G\times\{1\}) = \Hom_{\calCkA}(\{1\},G)\,.
\end{equation*}
Thus, we can view $B^A_k$ as the Yoneda functor $\Hom_{\calCkA}(\{1\}, -)\colon \calCkA\to\kMod$.
For any $A$-fibered $(G,H)$-biset $X$, the map $B^A_k([X])\colon B^A_k(H)\to B^A_k(G)$ is induced by composition with $[X]$ on the left. The functor $B^A_k$ is called the {\em$A$-fibered Burnside functor} over $k$.
Note also that $B^A_k$ is isomorphic in $\calFkA$ to the functor $L_{\{1\},k}$, where $\{1\}$ is the trivial group and $k$ is the regular $\Ebar_{\{1\}}$-module, identifying $\Ebar_{\{1\}}\cong E_{\{1\}}\cong k$ as $k$-algebras, cf.~\ref{noth LGV} and \ref{noth essential algebra}.

\smallskip
Given a transitive $A$-fibered $(G,\{1\})$-biset $\big( \frac{G\times \{1\}}{U,\phi} \big)$, we simply write $[U,\phi]_G$ for its image in the $B^A_k(G)$. With this notation, the $k$-module $B^A_k(G)$ is freely generated by the elements $[U,\phi]_G$ as $(U,\phi)$ runs through a set of representatives of the $G$-orbits of $\mathcal M_G$. 

\begin{theorem}\label{thm example BA}
Assume that $k$ is a field. The functor $B^A_k$ in $\calFkA$ is a projective and indecomposable object. It is a projective cover of the simple functor $S_{(\{1\},\{1\},1,k)}$.
\end{theorem}

\begin{proof}
The first statement is an easy consequence of the Yoneda-Lemma. The second statement follows from the first, the observation that the functors $L_{\{1\},k}$ and $B^A_k$ are isomorphic, and the fact that $S_{\{1\},k}=S_{(\{1\},\{1\},1,k)}$ is the only simple factor of the functor $L_{\{1\},k}$.
\end{proof}

In the following subsections we identify the simple functor $S_{(\{1\},\{1\},1,k)}$ for various choices of $A$ and $k$.



\bigskip
\begin{center}\sc\large \ref{sec examples}B. The Functor $kR_{\CC}$\end{center}


\bigskip\noindent
Let $A = \mathbb C^\times$. For a finite group $G$, we denote by $R_{\mathbb C}(G)$ the character ring of $\mathbb C[G]$-modules. Recall that there is a linearization map
\begin{equation*}
  \lin_G\colon B^{\CC^\times}(G)\to R_{\CC}(G), \quad [H,\phi]_G\mapsto \ind_H^G(\phi)\,,
\end{equation*}
and recall that it is surjective, by Brauer's induction theorem.
It follows from \cite[Theorem 1.1]{Bouc2010c} and the explicit formula in Corollary \ref{Mackey formula for fibered bisets 2} that 
\begin{equation*}
  \lin_{G\times H}([X])\otimes_{\CC H}\lin_{H\times K}([Y]) = \lin_{G\times K}([X]\cdotH[Y])
\end{equation*}
in $R_{\CC}(G\times K)$. This implies first that $G\mapsto R_{\CC}(G)$ gives rise to a $\CC^\times$-fibered biset functor $R_{\CC^\times}$ by mapping the standard basis element $\left[\frac{G\times H}{U,\phi}\right]$ of $B^{\CC^\times}(G,H)$ to the map $R_{\CC}(H)\to R_{\CC}(G)$, $[M]\mapsto [\Ind_{U}^{G\times H}(\CC_\phi)\otimes_{\CC H} M]$; and secondly that the maps $\lin_G$ form a morphism of fibered biset functors. Clearly, one can extend scalars from $\ZZ$ to any commutative ring $k$ and $\lin\colon kB^{\CC^\times}\to k R_{\CC}$ becomes a morphism in $\calF_k^{\CC^\times}$.


\begin{theorem}
Let $k$ be an arbitrary field. The $\CC^\times$-fibered biset functor $kR_{\CC}$ over $k$ is isomorphic to the simple functor $S_{(\{1\},\{1\},1,k)}$. Moreover, $\lin\colon kB^{\CC^\times}\to k R_{\CC}$ is a projective cover in the category $\calF_k^{\CC^\times}$.
\end{theorem}

\begin{proof}
It suffices to show that $kR_{\CC}\in\calF_k^{\CC^\times}$ is a simple functor. Since $\lin\colon kB^{\CC^\times}\to kR_{\CC}$ is surjective, Theorem~\ref{thm example BA} then implies the rest. To see that $kR_{\CC}$ is simple we apply the criterion from Proposition~\ref{prop simplicity criterion} with $H$ chosen as the trivial group $\{1\}$. We will show that the three conditions (i)-(iii) hold.

\smallskip
Clearly, $k R_{\CC}(\{1\})\cong k$ is a simple module for $E_{\{1\}}\cong k$ and the first condition holds.
To see that the second condition holds, we need to show that for every irreducible character $\chi$ of $G$ there exists $x\in B_k^{\CC^\times}(G,\{1\}) = B_k^{\CC^\times}(G)$ such that $(kR_{\CC}(x))(1)=\chi$, where $1\in k= kR_{\CC}(\{1\})$. But, with the above identification, $(kR_{\CC}(x))(1)=\lin_G(x)$. And since $\lin_G$ is surjective, the second condition holds. Finally we show that the third condition holds, namely that $\calK_{kR_{\CC},\{1\}}(G)=0$ for any finite group $G$. In other words, we need to show that for any non-zero $k$-linear combination $f$ of simple $\CC G$-modules, there exists 
$x\in B_k^{\CC^\times}(\{1\},G)=B^{\CC^\times}_k(G)$ such that $xf=(R_{\CC}(x))(f)\neq 0\in kR_{\CC}(\{1\})= k$. However, for $x\in B_k^{\CC^\times}(G)$ and any $\CC G$-module $V$, with the above identifications, we have $x[V]=\lin_G(x)\cdotG [V]\in R_{\CC}(\{1\})$, where $\cdotG\colon R_{\CC}(G)\times R_{\CC}(G)\to k$ is induced by $(W,V)\mapsto \dim_{\CC}(\Wtilde\otimes_{\CC G}V)$, for left $\CC G$-modules $V$ and $W$, where $\Wtilde$ is the right $\CC G$-module with $W$ as underlying space and $G$-action $wg:=g^{-1}w$ for $w\in W$ and $g\in G$. Thus, choosing $x\in B_k^{\CC^\times}(G)$ such that $\lin_G(x)$ is the dual of an irreducible constituent occurring in $f$ with non-zero coefficient $\alpha\in k$, we obtain $xf=\alpha\neq 0$.
\end{proof}


\bigskip
\begin{center}\sc\large \ref{sec examples}C. The Functor $kR_{\QQ}$\end{center}

\bigskip\noindent
Let $A=\mathbb Q^\times$ and let $R_{\mathbb Q}(G)$ denote the character ring of finitely generated $\QQ G$-modules, where $G$ is a finite group. Since $\mathbb Q^\times\subset \mathbb C^\times$, the $\mathbb C^\times$-fibered biset functor $R_{\CC}$ 
restricts to a $\mathbb Q^\times$-fibered biset functor. Considering $R_\QQ(G)$ as subgroup of $R_\CC(G)$, we see that $R_\QQ$ becomes a subfunctor of $R_\CC$ as $\QQ^\times$-biset functor and thus is a $\QQ^\times$-fibered biset functo in its on right.

On the other hand, any $\mathbb Q^\times$-fibered biset functor restricts to an ordinary biset functor. Further, recall that, by \cite[Proposition 4.4.8]{BoucBook}, for a field $k$ of characteristic zero, the functor $kR_{\mathbb Q}=k\otimes R_{\QQ}$ is simple
as a biset functor. Therefore, the $\mathbb Q^\times$-fibered biset functor $kR_{\mathbb Q}$ is also simple. Since $kR_{\QQ}(\{1\})\neq \{0\}$, the trivial group $\{1\}$ is a minimal group for this functor and the classification 
of simple fibered biset functors from Section~\ref{sec simple functors} implies that it is parameterized by the quadruple $(\{1\},\{1\},1,k)$. The map $\lin_G\colon B_k^{\CC^\times}(G)\to kR_{\CC^\times}(G)$ from \ref{sec examples}B restricts to the map 
\begin{equation*}
  \lin_G\colon B_k^{\QQ^\times}(G)\to R_{\QQ}(G)\,, \quad [H,\phi]_G\mapsto \ind_H^G(\phi)\,,
\end{equation*}
and therefore defines a morphism of $\QQ^\times$-fibered biset functors. It must be surjective, since $kR_{\QQ^\times}$ is a simple functor in $\calF_k^{\QQ^\times}$. Thus, using Theorem~\ref{thm example BA}, we now have the following result.


\begin{theorem}\label{thm: the simple (1,1)2}
Let $k$ be a field of characteristic zero. Then there is an isomorphism
\begin{equation*}
S_{(\{1\},\{1\},1,k)} \cong kR_{\mathbb Q}
\end{equation*}
of $\mathbb Q^\times$-fibered biset functors. Moreover, $\lin\colon kB^{\QQ^\times}\to k R_{\QQ}$ is a projective cover in the category $\calF_k^{\QQ^\times}$.

\end{theorem}


\bigskip
\begin{center}\sc\large \ref{sec examples}D. The Functor of Trivial Source Modules\end{center}

\bigskip\noindent
Let $F$ be an algebraically closed field of characteristic $p>0$. For any finite group $G$, we denote by $T(G)$ the ring of trivial source $F[G]$-modules, also known as $p$-permutation $FG$-modules, see \cite[Section~5.5]{Benson1995}, \cite{Broue1985}, or \cite[\S 27]{Thevenaz1995}. Again we have a linearization map
\begin{equation*}
 \lin_G\colon B^{F^\times}(G) \rightarrow T(G)\,,\quad [H,\phi]_G\mapsto [\Ind_H^G(F_\phi)]\,. 
\end{equation*}
With the same arguments as at the beginning of Subsection~11B one obtains that $T$ is an $F^\times$-fibered biset functor and that the maps $\lin_G$ form a morphism of $F^\times$-fibered biset functors. Note that $\lin_G$ is surjective (see \cite{Dress1975}, \cite{Boltje1998b}, or \cite{BoltjeKuelshammer2005}). Now let $k$ be a field. Then the functor $kT:=k\otimes T$ is a quotient of the functor $B_k^{F^\times}$. Since $B^A_k$ has a unique simple quotient isomorphic to $S_{(\{1\},\{1\},1,k)}$ (see Theorem~\ref{thm example BA}), also $kT$ has a unique quotient functor, isomorphic to $S_{(\{1\},\{1\},1,k)}$. 

We will now use Proposition~\ref{prop simplicity criterion} applied to $H:=\{1\}$ in order to show that $kT$ is not a simple functor. More precisely we show that $\calK_{kT,\{1\}}\neq0$. In fact, let $G=C_p\times C_p$ be the elementary abelian $p$-group of rank $2$ and let $H_1,\ldots, H_{p+1}$ denote its subgroups of order $p$. Then, the map $\lin_G\colon B^{F^\times}(G)=B(G)\to T(G)$, $[G/P]\mapsto\Ind_P^G(F)$, is an isomorphism, since $G$ is a $p$-group. Here $B(G)$ denotes the Burnside ring of $G$. Moreover, identifying $B^{F^\times}(\{1\},G)=B(\{1\},G)$ with $B(G)$, the map $kT([G/P])\colon kT(G)\to kT(\{1\})=k$ is given by $[G/Q]\mapsto |P\backslash G/Q|\cdot 1_k$, for $Q\le G$. Now it is easy to see that the element $p[G/G]- ([G/H_1]+\cdots+[G/H_{p+1}])+[G/\{1\}]\in kB(G)\cong kT(G)$ is a non-zero element in $\calK_{kT,\{1\}}(G)$. Thus, we have the following result.


\begin{proposition}\label{prop ex trivial source functor}
Let $k$ be a field. Then the $F^\times$-fibered biset functor $kT$ is not simple. It has a unique quotient functor and this quotient is isomorphic to $S_{(\{1\},\{1\},1,k)}$
\end{proposition}






%%%%%%%%%%%%%%%%%%%%%% BIBLIOGRAPHY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{thebibliography}{XXXXX}
\bibitem[Ba04]{Barker} {\sc L.~Barker:} Fibred permutation sets and the idempotents and units of monomial Burnside rings. 
{\sl J.~Alg.}~{\bf 281} (2004), 535--566.
\bibitem[Be95]{Benson1995} {\sc D.~J.~Benson:}
Representations and cohomology. I. Basic representation theory of finite groups and associative algebras. Second edition. Cambridge Studies in Advanced Mathematics, 30. Cambridge University Press, Cambridge, 1998.
\bibitem[Bol89]{Boltje1989} {\sc R.~Boltje:} A canonical Brauer induction formula. {\sl Ast\'erisque} {\bf 181--182} (1990), 31--59.
\bibitem[Bol98a]{Boltje1998} {\sc R.~Boltje:} A general theory of canonical induction formulae. {\sl J.~Alg.}~{\bf 206} (1998) 293--343.
\bibitem[Bol98b]{Boltje1998b} {\sc R.~Boltje:} Linear source modules and trivial source modules. Group representations: cohomology, group actions and topology (Seattle, WA, 1996), 7--30, Proc. Sympos. Pure Math., 63, Amer. Math. Soc., Providence, RI, 1998. 
\bibitem[Bol01]{Boltje2001a} {\sc R.~Boltje:}
  Monomial resolutions.
  {\sl J. Algebra\/}~{\bf 246} (2001), 811--848.
\bibitem[BK05]{BoltjeKuelshammer2005}{\sc R.~Boltje, B.~K\"ulshammer:} Explicit and canonical Dress induction. {\sl Algebr. Represent. Theory\/}~{\bf 8} (2005), 731--746.
\bibitem[Bou96]{Bouc1996a} {\sc S.~Bouc:} Foncteurs d'ensembles munis d'une
double action. {\sl J.~Alg.\/}~{\bf 183} (1996), 664--736.
\bibitem[Bou10a]{Bouc2010a} {\sc S.~Bouc:} The functor of units of Burnside rings for p-groups. {\sl Comment.\ Math.\ Helv.}~{\bf 82} (2007), 583--615. 
\bibitem[Bou10b]{BoucBook} {\sc S.~Bouc:} Biset functors for finite groups. Lecture Notes in Mathematics, 1990. Springer-Verlag, Berlin, 2010.
\bibitem[Bou10c]{Bouc2010c} {\sc S.~Bouc:} Bisets as categories, and tensor product of induced bimodules. 
{\sl Appl.\ Categ.\ Structures\/}~{\bf 18} (2010), 517--521.
\bibitem[BT00]{BoucThevenaz2000a} {\sc S.~Bouc, J.~Th\'evenaz:}
  The group of endo-permutation modules.
  {\sl Invent. math.\/}~{\bf 139} (2000), 275--349.
\bibitem[BT15]{BoucThevenaz2015} {\sc S.~Bouc:, J.~Th\'evenaz:}
   The representation theory of finite sets and correspondences. Preprint 2015. 	arXiv:1510.03034.
\bibitem[Br85]{Broue1985} {\sc M.~Brou\'e:}
On Scott modules and p-permutation modules: an approach through the Brauer morphism. 
{\sl Proc. Amer. Math. Soc.} {\bf 93} (1985), 401--408. 
\bibitem[D71]{Dress}{\sc A.~Dress:} The ring of monomial representations I. Structure theory. {\sl J.~Alg.}~{\bf 18}
(1971) 137--157.
\bibitem[D75]{Dress1975} {\sc A.~Dress:}
Modules with trivial source, modular monomial representations and a modular version of Brauer's induction theorem. 
{\sl Abh. Math. Sem. Univ. Hamburg\/}~{\bf 44} (1975), 101--109 (1976).
\bibitem[I76]{Isaacs1976a} {\sc M.~Isaacs:} Character theory of finite groups. Pure and Applied Mathematics, No. 69. Academic Press, New York-London, 1976.
\bibitem[K87]{Karpilovsky1987a} {\sc G.~Karpilovsky:} 
The Schur multiplier. London Mathematical Society Monographs. New Series, 2. The Clarendon Press, Oxford University Press, New York, 1987.
\bibitem[R12]{Romero2012a} {\sc N.~Romero:} Simple modules over Green biset functors.
{\sl J.~Alg.\/}~{\bf 367} (2012), 203--221.
\bibitem[R13]{Romero2013a}{\sc N.~Romero:} On fibered biset functors with fibres of order prime and four. 
{\sl J.~Alg.\/}~{\bf 387} (2013), 185--194.
\bibitem[T95]{Thevenaz1995} {\sc J.~Th\'evenaz:}
$G$ -algebras and modular representation theory. Oxford Mathematical Monographs. Oxford Science Publications. The Clarendon Press, Oxford University Press, New York, 1995.
\bibitem[T07]{Thevenaz2007} {\sc J.~Th\'evenaz:} Endo-permutation modules, a guided tour. Group representation theory, 115--147, EPFL Press, Lausanne, 2007.
\bibitem[TW]{TW} {\sc J.~Th\'evenaz, P.~Webb:} The structure of Mackey functors.
{\sl Trans. Amer. Math. Soc.}~{\bf 347} (1995), 1865--1961.
\end{thebibliography}

%%%%%%%%%%%%%%%%%%%%%% END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}


diagram.tex
% DIAGRAM MACROS (version 3.1)

\catcode`\@=11

%%%%% FIXING SOME PARAMETERS

%%% Fixing the printerresolution
%%% unit = 1 dpi
\newcount\printerresolution
\global\printerresolution=300

%%% Fixing the length of a segment in an arrowhead
%%% unit = 0.01pt
\newcount\headsize
\global\headsize=450

%%% Fixing the thickness of an arrowhead
%%% value = 1/5 of the font size
\font\dotfont = lcircle10 at 3pt

%%% Fixing the distance between the two heads of an epimorphism
%%% unit = 0.01pt
\newcount\epihead
\global\epihead=200

%%% Fixing the default scaling factor for diagrams
\newcount\defaultscale
\def\setdefaultscale#1{\global\defaultscale=#1}
\setdefaultscale{100}

\newcount\actualtextarrowspace
\newcount\actualtextarrowlength

% \computetextparameters computes the parameters
% required to design a text arrow
\newcommand{\computetextparameters}%
{\global\actualtextarrowspace=\textarrowlength%
\global\advance\actualtextarrowspace by 3%
\global\actualtextarrowlength=\textarrowlength%
\global\multiply\actualtextarrowlength by 100}

%%% Fixing the default length of text arrows
\newcount\textarrowlength
\def\settextarrowlength#1{\global\textarrowlength=#1%
\computetextparameters}
\settextarrowlength{20}

\newcount\actualdisplayarrowspace
\newcount\actualdisplayarrowlength

% \computedisplayparameters computes the parameters
% required to design a displayed arrow
\newcommand{\computedisplayparameters}%
{\global\actualdisplayarrowspace=\displayarrowlength%
\global\advance\actualdisplayarrowspace by 3%
\global\actualdisplayarrowlength=\displayarrowlength%
\global\multiply\actualdisplayarrowlength by 100}

%%% Fixing the default length of displayed arrows
\newcount\displayarrowlength
\def\setdisplayarrowlength#1{\global\displayarrowlength=#1%
\computedisplayparameters}
\setdisplayarrowlength{30}


% ERROR MESSAGES

% Checking the next token without gobbling blanks
\def\@ifnexttok#1#2#3{\let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}%
\futurelet\@tempc\@ifntok}
\def\@ifntok{\ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi%
\@tempd}

%  \@diagramerror{MSG}{HLP}: Types a Diagram error message MSG and gives an error
%                            halt with error help message HLP.
\def\@diagramerror#1#2{%
\edef\@@tempc{#2}\expandafter\errhelp\expandafter{\@@tempc}%
\typeout{Diagram error. \space See User's guide for explanation.^^J
 \space\@spaces\@spaces\@spaces Type \space H <return> \space for
 immediate help.}\errmessage{#1}}

\newif\ifdiagram

% error test and message for text arrows
\def\testtextmode{%
\ifdiagram\@diagramerror{Text arrows are not allowed in diagrams}{Here you
should use east or west diagram arrows, not forward or backward text arrows.
Try proceeding now, typeset could succeed but with unpredictable output.}
\else\ifmmode\relax\else%
\@diagramerror{Missing \string$}{Text arrows should be introduced in math mode.
Try proceeding now, typeset could succeed but output could not be what you expected.}\fi\fi}

% error test and message for diagram arrows
\def\testdiagrammode{\ifdiagram\relax\else
\@diagramerror{Diagram arrows are not allowed in formulas}{Here you
should use forward or backward text arrows, not diagram arrows. Proceeding
could work with unpredictable output, but overflow arithmetic
could also occur.}\fi}

% error test and message for diagrams in math mode
\def\checkmode{\ifmmode\@diagramerror{Wrong mode: no diagrams
allowed in math mode.}{You should leave math mode before
introducing your diagram. All items in the diagram will automatically be
processed in math mode.}\else\relax\fi\global\diagramtrue}

\global\diagramfalse

%%%%% DESIGING THE ARROW HEADS

%%% Customizing the unitlength for the sake of precision
\setlength{\unitlength}{0.01pt}

%%% Printing one dot at the required scale
\def\DOT{{\dotfont q}}

%%% Computing the distance between two dots in an arrowhead
\newcount\basicstep
\basicstep=7227
\global\divide\basicstep by \printerresolution

%%% Computing the number of dots in an arrowhead
\newcount\numberofsteps
\numberofsteps=\headsize
\global\divide\numberofsteps by \basicstep

%%% Producing an arrow head
\newcommand{\makehead}[3]{%
\begin{picture}(0,0)%
\multiput(0,0)(#1,#2){#3}{\DOT}%
\multiput(0,0)(-#2,#1){#3}{\DOT}%
\end{picture}}

%%% Creating bitmap images of the arrowheads
\newcount\xstep
\newcount\ystep

\newsavebox{\northhead}
\savebox{\northhead}{%
\xstep=-\basicstep%
\multiply\xstep by 7071%
\divide\xstep by 10000%
\ystep=\xstep%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\nhead}{\usebox{\northhead}}

\newsavebox{\easthead}
\savebox{\easthead}{%
\xstep=-\basicstep%
\multiply\xstep by 7071%
\divide\xstep by 10000%
\ystep=-\xstep%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\ehead}{\usebox{\easthead}}

\newsavebox{\southhead}
\savebox{\southhead}{%
\xstep=\basicstep%
\multiply\xstep by 7071%
\divide\xstep by 10000%
\ystep=\xstep%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\shead}{\usebox{\southhead}}

\newsavebox{\westhead}
\savebox{\westhead}{%
\xstep=\basicstep%
\multiply\xstep by 7071%
\divide\xstep by 10000%
\ystep=-\xstep%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\whead}{\usebox{\westhead}}

\newsavebox{\northwesthead}
\savebox{\northwesthead}{%
\makehead{0}{-\basicstep}{\numberofsteps}}
\newcommand{\nwhead}{\usebox{\northwesthead}}

\newsavebox{\northeasthead}
\savebox{\northeasthead}{%
\makehead{-\basicstep}{0}{\numberofsteps}}
\newcommand{\nehead}{\usebox{\northeasthead}}

\newsavebox{\southwesthead}
\savebox{\southwesthead}{%
\makehead{\basicstep}{0}{\numberofsteps}}
\newcommand{\swhead}{\usebox{\southwesthead}}

\newsavebox{\southeasthead}
\savebox{\southeasthead}{%
\makehead{0}{\basicstep}{\numberofsteps}}
\newcommand{\sehead}{\usebox{\southeasthead}}

\newsavebox{\eastnortheasthead}
\savebox{\eastnortheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 9486%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by -3%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\enehead}{\usebox{\eastnortheasthead}}

\newsavebox{\northnortheasthead}
\savebox{\northnortheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 9486%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by 3%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\nnehead}{\usebox{\northnortheasthead}}

\newsavebox{\southsouthwesthead}
\savebox{\southsouthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 9486%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by 3%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\sswhead}{\usebox{\southsouthwesthead}}

\newsavebox{\westsouthwesthead}
\savebox{\westsouthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 9486%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by -3%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\wswhead}{\usebox{\westsouthwesthead}}

\newsavebox{\westnorthwesthead}
\savebox{\westnorthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 3162%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by -3%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\wnwhead}{\usebox{\westnorthwesthead}}

\newsavebox{\eastsoutheasthead}
\savebox{\eastsoutheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 3162%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by -3%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\esehead}{\usebox{\eastsoutheasthead}}

\newsavebox{\northnorthwesthead}
\savebox{\northnorthwesthead}{%
\xstep=-\basicstep%
\multiply\xstep by 3162%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by 3%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\nnwhead}{\usebox{\northnorthwesthead}}

\newsavebox{\southsoutheasthead}
\savebox{\southsoutheasthead}{%
\xstep=\basicstep%
\multiply\xstep by 3162%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by 3%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\ssehead}{\usebox{\southsoutheasthead}}

\newsavebox{\easteastnortheasthead}
\savebox{\easteastnortheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 8944%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by -2%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\eenehead}{\usebox{\easteastnortheasthead}}

\newsavebox{\northnorthnortheasthead}
\savebox{\northnorthnortheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 8944%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by 2%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\nnnehead}{\usebox{\northnorthnortheasthead}}

\newsavebox{\southsouthsouthwesthead}
\savebox{\southsouthsouthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 8944%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by 2%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\ssswhead}{\usebox{\southsouthsouthwesthead}}

\newsavebox{\westwestsouthwesthead}
\savebox{\westwestsouthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 8944%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by -2%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\wwswhead}{\usebox{\westwestsouthwesthead}}

\newsavebox{\westwestnorthwesthead}
\savebox{\westwestnorthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 4472%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by -2%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\wwnwhead}{\usebox{\westwestnorthwesthead}}

\newsavebox{\easteastsoutheasthead}
\savebox{\easteastsoutheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 4472%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by -2%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\eesehead}{\usebox{\easteastsoutheasthead}}

\newsavebox{\northnorthnorthwesthead}
\savebox{\northnorthnorthwesthead}{%
\xstep=-\basicstep%
\multiply\xstep by 4472%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by 2%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\nnnwhead}{\usebox{\northnorthnorthwesthead}}

\newsavebox{\southsouthsoutheasthead}
\savebox{\southsouthsoutheasthead}{%
\xstep=\basicstep%
\multiply\xstep by 4472%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by 2%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\sssehead}{\usebox{\southsouthsoutheasthead}}

\newsavebox{\northeasteastnortheasthead}
\savebox{\northeasteastnortheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 9806%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by -5%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\neenehead}{\usebox{\northeasteastnortheasthead}}

\newsavebox{\northeastnorthnortheasthead}
\savebox{\northeastnorthnortheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 9806%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by 5%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\nennehead}{\usebox{\northeastnorthnortheasthead}}

\newsavebox{\southwestsouthsouthwesthead}
\savebox{\southwestsouthsouthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 9806%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by 5%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\swsswhead}{\usebox{\southwestsouthsouthwesthead}}

\newsavebox{\southwestwestsouthwesthead}
\savebox{\southwestwestsouthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 9806%
\divide\xstep by 10000%
\ystep=\xstep%
\divide\ystep by -5%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\swwswhead}{\usebox{\southwestwestsouthwesthead}}

\newsavebox{\northwestwestnorthwesthead}
\savebox{\northwestwestnorthwesthead}{%
\xstep=\basicstep%
\multiply\xstep by 1961%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by -5%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\nwwnwhead}{\usebox{\northwestwestnorthwesthead}}

\newsavebox{\southeasteastsoutheasthead}
\savebox{\southeasteastsoutheasthead}{%
\xstep=-\basicstep%
\multiply\xstep by 1961%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by -5%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\seesehead}{\usebox{\southeasteastsoutheasthead}}

\newsavebox{\northwestnorthnorthwesthead}
\savebox{\northwestnorthnorthwesthead}{%
\xstep=-\basicstep%
\multiply\xstep by 1961%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by 5%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\nwnnwhead}{\usebox{\northwestnorthnorthwesthead}}

\newsavebox{\southeastsouthsoutheasthead}
\savebox{\southeastsouthsoutheasthead}{%
\xstep=\basicstep%
\multiply\xstep by 1961%
\divide\xstep by 10000%
\ystep=\xstep%
\multiply\ystep by 5%
\makehead{\xstep}{\ystep}{\numberofsteps}}
\newcommand{\sessehead}{\usebox{\southeastsouthsoutheasthead}}

%%% Restoring the standard unitlength
\setlength{\unitlength}{1pt}


% MACROS FOR MARKED ARROWS

\newsavebox{\isomorphismmark}
\newcommand{\isomark}[1]{\savebox{\isomorphismmark}{#1}}
\isomark{$\cong$}
\newcommand{\isosign}{\usebox{\isomorphismmark}}

\newif\ifuserdist
\newsavebox{\distributormark}
\newcommand{\distmark}[1]{\ifx#1\distcircle\userdistfalse\else%
\userdisttrue\savebox{\distributormark}{#1}\fi}
\newsavebox{\distributorcircle}
\savebox{\distributorcircle}{\begin{picture}(0,0)%
\put(0,0){\circle{4}}\end{picture}}
\newcommand{\distsign}{\ifuserdist\usebox{\distributormark}\else%
\usebox{\distributorcircle}\fi}
\userdistfalse



% MACROS FOR ADJUSTING THE LENGTH OF MONOMORPHISMS AND EPIMORPHISMS

\newcount\monolength
\newcount\epilength
\newcount\bimolength
\newcount\secondmonolength
\newcount\secondepilength

\newcount\monotail%
\global\monotail=\headsize%
\global\multiply\monotail by 7070%
\global\divide\monotail by 10000%

\newcount\truemonotail%
\newcount\trueepihead%

\def\truetail{\truemonotail=\monotail%
\multiply\truemonotail by 100%
\divide\truemonotail by \SCALE}

\def\truehead{\trueepihead=\epihead%
\multiply\trueepihead by 100%
\divide\trueepihead by \SCALE}

\newcount\Monotail%
\global\Monotail=\headsize%
\global\divide\Monotail by 2%

\newcount\Epihead%
\global\Epihead=\epihead%
\global\multiply\Epihead by 7070%
\global\divide\Epihead by 10000%

\newcount\Truemonotail%
\newcount\Trueepihead%

\def\Truetail{\Truemonotail=\Monotail%
\multiply\Truemonotail by 100%
\divide\Truemonotail by \SCALE}%

\def\Truehead{\Trueepihead=\Epihead%
\multiply\Trueepihead by 100%
\divide\Trueepihead by \SCALE}

\newcount\MonoTail%
\global\MonoTail=\headsize%
\global\multiply\MonoTail by 6324%
\global\divide\MonoTail by 10000%

\newcount\EpiHead%
\global\EpiHead=\epihead%
\global\multiply\EpiHead by 8944%
\global\divide\EpiHead by 10000%

\newcount\TrueMonoTail%
\newcount\TrueEpiHead%

\def\TrueTail{\TrueMonoTail=\MonoTail%
\multiply\TrueMonoTail by 100%
\divide\TrueMonoTail by \SCALE}%

\def\TrueHead{\TrueEpiHead=\EpiHead%
\multiply\TrueEpiHead by 100%
\divide\TrueEpiHead by \SCALE}

\newcount\monotaiL%
\global\monotaiL=\headsize%
\global\multiply\monotaiL by 3162%
\global\divide\monotaiL by 10000%

\newcount\epiheaD%
\global\epiheaD=\epihead%
\global\multiply\epiheaD by 4472%
\global\divide\epiheaD by 10000%

\newcount\truemonotaiL%
\newcount\trueepiheaD%

\def\truetaiL{\truemonotaiL=\monotaiL%
\multiply\truemonotaiL by 100%
\divide\truemonotaiL by \SCALE}%

\def\trueheaD{\trueepiheaD=\epiheaD%
\multiply\trueepiheaD by 100%
\divide\trueepiheaD by \SCALE}


% INITIALIZATION

\newcount\SCALE%

\newcount\NUMBER%

\newcount\LINE%

\newcount\COLUMN%

\newcount\WIDTH%

\newcount\SOURCE%

\newcount\ARROW%

\newcount\TARGET%

\newcount\ARROWLENGTH%

\newcount\NUMBEROFDOTS%

\newcounter{x}%

\newcounter{y}%

\newcounter{z}%

\newcounter{horizontal}%

\newcounter{vertical}%

\newskip\itemlength%

\newskip\firstitem%

\newskip\seconditem%

\newcommand{\printarrow}{}%

\newcount\X%

\newcount\Y%

\newcount\Z%


% MACROS FOR DESIGNING DIAGRAMS


% \truex{n} divides n x 100 by the scaling factor and puts the result
% in counter x
\newcommand{\truex}[1]{%
\NUMBER=#1%
\multiply\NUMBER by 100%
\divide\NUMBER by \SCALE%
\setcounter{x}{\NUMBER}}%

% \truey{n} divides n x 100 by the scaling factor and puts the result
% in counter y
\newcommand{\truey}[1]{%
\NUMBER=#1%
\multiply\NUMBER by 100%
\divide\NUMBER by \SCALE%
\setcounter{y}{\NUMBER}}%

% \truez{n} divides n x 100 by the scaling factor and puts the result
% in counter z
\newcommand{\truez}[1]{%
\NUMBER=#1%
\multiply\NUMBER by 100%
\divide\NUMBER by \SCALE%
\setcounter{z}{\NUMBER}}%


% \changecounters computes the values of the various parameters required
% to design an arrow with adjusted length.
\newcommand{\changecounters}[1]{%
\SOURCE=\ARROW%
\ARROW=\TARGET%
\settowidth{\itemlength}{#1}%
\ifdim \itemlength > 2800\unitlength%
\addtolength{\itemlength}{-2800\unitlength}%
\TARGET=\itemlength%
\divide\TARGET by 1310%
\multiply\TARGET by 100%
\divide\TARGET by \SCALE%
\else%
\TARGET=0%
\fi%
\ARROWLENGTH=5000%
\advance\ARROWLENGTH by -\SOURCE%
\advance\ARROWLENGTH by -\TARGET%
\divide\ARROWLENGTH by 100%
\advance\SOURCE by -\TARGET}%

% \initialize initializes the counters required to produce the diagram
% and defines the formal dimensions of the diagram to be (0,0).
\newcommand{\initialize}[1]{%
\LINE=0%
\COLUMN=0%
\WIDTH=0%
\ARROW=0%
\TARGET=0%
\changecounters{#1}%
\renewcommand{\printarrow}{#1}%
\begin{center}%
\vspace{2pt}%
\begin{picture}(0,0)}%

% \DIAGV{n} starts the construction of a diagram scaled by a factor
% n percent, computes the scaled unit length and the unscaling factor.
\newcommand{\DIAGV}[2]{%
\checkmode%
\SCALE=#1%
\setlength{\unitlength}{655sp}%
\multiply\unitlength by \SCALE%
\divide\unitlength by 100%
\initialize{\mbox{$#2$}}}%

% \n introduces the next item of the diagram, computes its parameters
% and prints the previous item.
\newcommand{\n}[1]{%
\changecounters{\mbox{$#1$}}%
\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}%
\thinlines%
\renewcommand{\printarrow}{\mbox{$#1$}}%
\advance\COLUMN by 4000}%

% \nn prints the  last item of a line and starts a new line.
\newcommand{\nn}[1]{%
\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}%
\thinlines%
\ifnum \WIDTH < \COLUMN%
\WIDTH=\COLUMN%
\else%
\fi%
\advance\LINE by -4000%
\COLUMN=0%
\ARROW=0%
\TARGET=0%
\changecounters{\mbox{$#1$}}%
\renewcommand{\printarrow}{\mbox{$#1$}}}%

% \conclude prints the last item of the diagram and sets the
% dimensions of the diagram;
\newcommand{\conclude}{%
\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}%
\thinlines%
\ifnum \WIDTH < \COLUMN%
\WIDTH=\COLUMN%
\else%
\fi%
\setcounter{horizontal}{\WIDTH}%
\setcounter{vertical}{-\LINE}%
\end{picture}}%

% \diag prints the last item of the diagram and takes care of the spacing
\newcommand{\diag}{%
\conclude%
\raisebox{0pt}[0pt][\value{vertical}\unitlength]{}%
\hspace*{\value{horizontal}\unitlength}%
\vspace{12pt}%
\end{center}%
\setlength{\unitlength}{1pt}%
\global\diagramfalse}%

% \diagv{t}{l}{b} prints the last item of the diagram and
% adds a t points extra space at the top of the diagram
% adds a l points extra space at the left of the diagram
% adds a b points extra space at the bottom of the diagram
\newcommand{\diagv}[3]{%
\conclude%
\NUMBER=#1%
\rule{0pt}{\NUMBER pt}%
\hspace*{-#2pt}%
\raisebox{0pt}[0pt][\value{vertical}\unitlength]{}%
\hspace*{\value{horizontal}\unitlength}%6
\NUMBER=#3%
\advance\NUMBER by 12%
\vspace*{\NUMBER pt}%
\end{center}%
\setlength{\unitlength}{1pt}%
\global\diagramfalse}%

% \movename(n,m){f} moves the name f of the arrow n points right
% and m points up.
\def\movename(#1,#2)#3{%
\hspace{#1pt}%
\raisebox{#2pt}[5pt][2pt]{\raisebox{#2pt}{$#3$}}%
\hspace{-#1pt}}%

% \movearrow(n,m){\...} moves arrow \... n points right
% and m points up.
\def\movearrow(#1,#2)#3{%
\makebox[0pt]{%
\hspace{#1pt}\hspace{#1pt}%
\raisebox{#2pt}[0pt][0pt]{\raisebox{#2pt}{$#3$}}}}%

% \movevertex(n,m){A} moves vertex A n points right and m points up
\def\movevertex(#1,#2)#3{%
\mbox{\hspace{#1pt}%
\raisebox{#2pt}{\raisebox{#2pt}{$#3$}}%
\hspace{-#1pt}}}%

% \movevertexleft{XXX} moves vertex XXX left
\newcommand{\movevertexleft}[1]{\makebox[2800\unitlength][r]{$#1$}}

% \movevertexright{XXX} moves vertex XXX right
\newcommand{\movevertexright}[1]{\makebox[2800\unitlength][l]{$#1$}}

% \crosslength{P}{Q} computes the formal dimensions of the
% superposition of pictures P and Q
\newcommand{\crosslength}[2]{%
\settowidth{\firstitem}{#1}%
\settowidth{\seconditem}{#2}%
\ifdim\firstitem < \seconditem%
\itemlength=\seconditem%
\else%
\itemlength=\firstitem%
\fi%
\divide\itemlength by 2%
\hspace{\itemlength}}%

% \cross{P}{Q} superposes pictures P and Q
\newcommand{\cross}[2]{%
\crosslength{\mbox{$#1$}}{\mbox{$#2$}}%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0){$#1$}}%
\thinlines%
\put(0,0){\makebox(0,0){$#2$}}%
\thinlines%
\end{picture}%
\crosslength{\mbox{$#1$}}{\mbox{$#2$}}}%

% \bold prints the next arrow in bold-face type
\newcommand{\bold}{\ifdiagram\thicklines\else\typeout{Sorry: command
\string\bold does not apply to text arrows; I am ignoring it.}\fi}

% \unbold switches back to normal arrows
\newcommand{\unbold}{\thinlines}

% SHORTENING THE TYPING OF DIAGRAMS

\def\basicDIAG#1&{\DIAGV{\defaultscale}{#1}\@ifnexttok&{\finishline}{\basicn}}
\def\basicDIAGV[#1]#2&{\DIAGV{#1}{#2}\@ifnexttok&{\finishline}{\basicn}}
\def\basicn#1&{\n{#1}\@ifnexttok&{\finishline}{\basicn}}
\def\basicnn#1&{\nn{#1}\@ifnexttok&{\finishline}{\basicn}}
\def\finishline#1{\@ifnextchar\end{\diag}%
{\@ifnextchar\spacing{\relax}{\basicnn}}}
\def\spacing(#1,#2,#3){\diagv{#1}{#2}{#3}}

\newif\ifcaption%

\newenvironment{diagram}{%
\iffloatdiag\relax\else
\global\def\diagramcaption##1{%
\global\captiontrue%
\global\def\@diagcaption{##1}}%
\global\def\@diagcaption{}\fi%
\@ifnextchar[{\basicDIAGV}{\basicDIAG}}%
{\iffloatdiag\relax\else%
\ifcaption
\begin{center}\mbox{}\@diagcaption\end{center}%
\else\relax\fi\fi\global\captionfalse}

\global\captionfalse


% MACROS FOR FLOATING DIAGRAMS

\gdef\@diaglabel{Diagram}
\gdef\diagramlabel#1{\gdef\@diaglabel{#1}}

\newcounter{Diagram}
\setcounter{Diagram}{0}
\def\theDiagram{\@arabic\c@Diagram}
\def\fps@Diagram{tbp}
\def\ftype@Diagram{1}
\def\ext@Diagram{lof}
\def\fnum@Diagram{\@diaglabel\ \theDiagram}
\def\Diagram{\@float{Diagram}}
\let\endDiagram\end@float
\@namedef{Diagram*}{\@dblfloat{Diagram}}
\@namedef{endDiagram*}{\end@dblfloat}

\def\setdiagramcounter#1{\@addtoreset{Diagram}{#1}%
\def\theDiagram{\arabic{#1}.\@arabic\c@Diagram}}

\newif\iffloatdiag

\newenvironment{floatingdiagram}{%
\global\floatdiagtrue%
\long\def\@makecaption##1##2{
 \vskip 0pt
 \setbox\@tempboxa\hbox{##1##2}
 \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox
to\hsize{\hfil\box\@tempboxa\hfil}
 \fi}%
\global\def\diagramcaption##1{\global\def\@diagcaption{: ##1}}%
\global\def\@diagcaption{}%
\begin{Diagram}[tbp]\begin{diagram}}%
{\end{diagram}\caption{\@diagcaption}\end{Diagram}%
\global\floatdiagfalse}

\global\floatdiagfalse


% MACROS FOR DRAWING TEXT PICTURES

% moving a name up
\newcommand{\TUP}[1]{\raisebox{0pt}[0pt][3pt]{}#1}

% moving a name down
\newcommand{\TDOWN}[1]{\raisebox{0pt}[6pt][0pt]{}#1}

% \tlowername{P}{f} puts the name f under the picture P
\newcommand{\tlowername}[2]%
{$\stackrel{\makebox[1pt]{#1}}%
{\begin{picture}(0,0)%
\put(0,0){\makebox(0,6)[t]{\makebox[1pt]{$\scriptstyle#2$}}}%
\end{picture}}$}%

% \tcase{P} draws the picture P with length \textarrowlength pt.
\newcommand{\tcase}[1]{%
\testtextmode%
\setlength{\unitlength}{0.01pt}%
\makebox[\actualtextarrowspace pt]%
{\raisebox{2.5pt}{#1{\actualtextarrowlength}}}%
\setlength{\unitlength}{1pt}}%

% \Tcase{P}{f} draws the picture P with upper name f
% and length \textarrowlength pt.
\newcommand{\Tcase}[2]{%
\testtextmode%
\setlength{\unitlength}{0.01pt}%
\makebox[\actualtextarrowspace pt]%
{\raisebox{2.5pt}{$\stackrel{\scriptstyle #2}{#1{\actualtextarrowlength}}$}}%
\setlength{\unitlength}{1pt}}%

% \tbicase{P} draws the bi-picture P
% with length \textarrowlength pt.
\newcommand{\tbicase}[1]{%
\testtextmode%
\setlength{\unitlength}{0.01pt}%
\makebox[\actualtextarrowspace pt]%
{\raisebox{1pt}{#1{\actualtextarrowlength}}}%
\setlength{\unitlength}{1pt}}%

% \Tbicase{P}{f}{g} draws the bi-picture P with names f, g
% and length \textarrowlength pt.
\newcommand{\Tbicase}[3]{%
\testtextmode%
\setlength{\unitlength}{0.01pt}%
\makebox[\actualtextarrowspace pt]%
{\raisebox{-1pt}%
{$\stackrel{\scriptstyle #2}%
{\mbox{\tlowername{#1{\actualtextarrowlength}}%
{\scriptstyle #3}}}$}}%
\setlength{\unitlength}{1pt}}%

% MACROS FOR DRAWING DISPLAYED PICTURES

% moving a name up
\newcommand{\DUP}[1]{\raisebox{0pt}[0pt][4pt]{}#1}

% moving a name down
\newcommand{\DDOWN}[1]{\raisebox{0pt}[9pt][0pt]{}#1}

% \dlowername{P}{f} puts the name f under the picture P
\newcommand{\dlowername}[2]%
{$\stackrel{\makebox[1pt]{#1}}%
{\begin{picture}(0,0)%
\put(0,0){\makebox(0,6)[t]{\makebox[1pt]{$\textstyle#2$}}}%
\end{picture}}$}%

% \dcase{P} draws the picture P with length \displayarrowlength pt.
\newcommand{\dcase}[1]{%
\testtextmode%
\setlength{\unitlength}{0.01pt}%
\makebox[\actualdisplayarrowspace pt]%
{\raisebox{2.5pt}{#1{\actualdisplayarrowlength}}}%
\setlength{\unitlength}{1pt}}%

% \Dcase{P}{f} draws the picture P with upper name f
% and length \displayarrowlength pt.
\newcommand{\Dcase}[2]{%
\testtextmode%
\setlength{\unitlength}{0.01pt}%
\makebox[\actualdisplayarrowspace pt]%
{\raisebox{2.5pt}{$\stackrel{\textstyle #2}{#1{\actualdisplayarrowlength}}$}}%
\setlength{\unitlength}{1pt}}%

% \dbicase{P} draws the bi-picture P
% with length \displayarrowlength pt.
\newcommand{\dbicase}[1]{%
\testtextmode%
\setlength{\unitlength}{0.01pt}%
\makebox[\actualdisplayarrowspace pt]%
{\raisebox{1pt}{#1{\actualdisplayarrowlength}}}%
\setlength{\unitlength}{1pt}}%

% \Dbicase{P}{f}{g} draws the bi-picture P with names f, g
% and length \displayarrowlength pt.
\newcommand{\Dbicase}[3]{%
\testtextmode%
\setlength{\unitlength}{0.01pt}%
\makebox[\actualdisplayarrowspace pt]%
{\raisebox{-1pt}%
{$\stackrel{\textstyle #2}%
{\mbox{\tlowername{#1{\actualdisplayarrowlength}}%
{\textstyle #3}}}$}}%
\setlength{\unitlength}{1pt}}%


% IN-TEXT ARROWS

% \AR{n} draws an arrow of length n units
\newcommand{\AR}[1]%
{\begin{picture}(#1,0)%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\end{picture}}%

% \DIST{n} draws a distributor of length n units
\newcommand{\DIST}[1]%
{\begin{picture}(#1,0)%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{400}}%
\end{picture}}%

% \DOTAR{n} draws a dotted  arrow of length n units
\newcommand{\DOTAR}[1]%
{\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by 300%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(#1,0)%
\multiput(0,0)(300,0){\NUMBEROFDOTS}{\circle*{100}}%
\put(#1,0){\ehead}%
\end{picture}}%

% \MONO{n} draws a monomorphism of length n units
\newcommand{\MONO}[1]%
{\monolength=#1%
\advance\monolength by -\monotail%
\begin{picture}(#1,0)%
\put(\monotail,0){\line(1,0){\monolength}}%
\put(#1,0){\ehead}%
\put(\monotail,0){\ehead}%
\end{picture}}%

% \EPI{n} draws an epimorphism of length n units
\newcommand{\EPI}[1]%
{\epilength=#1%
\advance\epilength by -\epihead%
\begin{picture}(#1,0)(-#1,0)%
\put(-#1,0){\line(1,0){\epilength}}%
\put(-\epihead,0){\ehead}%
\put(0,0){\ehead}%
\end{picture}}%

% \BIMO{n} draws a bimorphism of length n units
\newcommand{\BIMO}[1]%
{\monolength=#1%
\advance\monolength by -\monotail%
\epilength=\monolength%
\advance\epilength by -\epihead%
\begin{picture}(#1,0)(-#1,0)%
\put(-\monolength,0){\line(1,0){\epilength}}%
\put(-\monolength,0){\ehead}%
\put(-\epihead,0){\ehead}%
\put(0,0){\ehead}%
\end{picture}}%

% \BIAR{n} draws a pair of arrows of length n units
\newcommand{\BIAR}[1]%
{\begin{picture}(#1,700)%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\put(0,700){\line(1,0){#1}}%
\put(#1,700){\ehead}%
\end{picture}}%

% \BIDIST{n} draws a pair of distributors of length n units
\newcommand{\BIDIST}[1]%
{\begin{picture}(#1,700)%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\put(0,700){\line(1,0){#1}}%
\put(#1,700){\ehead}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{400}}%
\put(\NUMBER,700){\circle{400}}%
\end{picture}}%

% \EQL{n} draws an equality of length n units
\newcommand{\EQL}[1]%
{\begin{picture}(#1,0)%
\put(0,100){\line(1,0){#1}}%
\put(0,-100){\line(1,0){#1}}%
\end{picture}}%

% \ADJAR{n} draws a pair of adjoint arrows of length n units
\newcommand{\ADJAR}[1]%
{\begin{picture}(#1,700)%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\put(#1,700){\line(-1,0){#1}}%
\put(0,700){\whead}
\end{picture}}%

% \ADJDIST{n} draws a pair of adjoint distibutors of length n units
\newcommand{\ADJDIST}[1]%
{\begin{picture}(#1,700)%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\put(#1,700){\line(-1,0){#1}}%
\put(0,700){\whead}
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{400}}%
\put(\NUMBER,700){\circle{400}}%
\end{picture}}%


% All the following commands produce arrows with length 20pt
% and scriptstyle names in math mode but arrows with length
% \displayarrowlength pt and textstyle names in display math mode.

% arrow
\newcommand{\ar}{\ifinner\tcase{\AR}\else\dcase{\AR}\fi}%

% arrow with upper name [1]
\newcommand{\Ar}[1]{\ifinner\Tcase{\AR}{#1}\else\Dcase{\AR}{#1}\fi}%

% distributor
\newcommand{\dist}{\ifinner\tcase{\DIST}\else\dcase{\DIST}\fi}%

% distributor with upper name [1]
\newcommand{\Dist}[1]{\ifinner\Tcase{\DIST}{\TUP{#1}}%
\else\Dcase{\DIST}{\TUP{#1}}\fi}%

% dotted arrow
\newcommand{\dotar}{\ifinner\tcase{\DOTAR}\else\dcase{\DOTAR}\fi}%

% dotted arrow with upper name [1]
\newcommand{\Dotar}[1]{\ifinner\Tcase{\DOTAR}{#1}%
\else\Dcase{\DOTAR}{#1}\fi}%

% monomorphism
\newcommand{\mono}{\ifinner\tcase{\MONO}\else\dcase{\MONO}\fi}%

% monomorphism with upper name [1]
\newcommand{\Mono}[1]{\ifinner\Tcase{\MONO}{#1}\else\Dcase{\MONO}{#1}\fi}%

% epimorphism
\newcommand{\epi}{\ifinner\tcase{\EPI}\else\dcase{\EPI}\fi}%

% epimorphism with upper name [1]
\newcommand{\Epi}[1]{\ifinner\Tcase{\EPI}{#1}\else\Dcase{\EPI}{#1}\fi}%

% bimorphism
\newcommand{\bimo}{\ifinner\tcase{\BIMO}\else\dcase{\BIMO}\fi}%

% bimorphism with upper name [1]
\newcommand{\Bimo}[1]{\ifinner\Tcase{\BIMO}{#1}%
\else\Dcase{\BIMO}{#1}\fi}%

% isomorphism
\newcommand{\iso}{\ifinner\Tcase{\AR}{\cong}\else\Dcase{\AR}{\cong}\fi}%

% isomorphism with upper name [1]
\newcommand{\Iso}[1]{\ifinner\Tcase{\AR}{\cong{#1}}%
\else\Dcase{\AR}{\cong{#1}}\fi}%

% pair of arrows
\newcommand{\biar}{\ifinner\tbicase{\BIAR}\else\dbicase{\BIAR}\fi}%

% pair of arrows with names [1],[2]
\newcommand{\Biar}[2]{\ifinner\Tbicase{\BIAR}{#1}{#2}%
\else\Dbicase{\BIAR}{#1}{#2}\fi}%

% pair of distributors
\newcommand{\bidist}{\ifinner\tbicase{\BIDIST}\else\dbicase{\BIDIST}\fi}%

% pair of distributors with names [1],[2]
\newcommand{\Bidist}[2]{\ifinner\Tbicase{\BIDIST}{\TUP{#1}}{\TDOWN{#2}}%
\else\Dbicase{\BIDIST}{\DUP{#1}}{\DDOWN{#2}}\fi}%

% equality
\newcommand{\eql}{\ifinner\tcase{\EQL}\else\dcase{\EQL}\fi}%

% equality with name [1]
\newcommand{\Eql}[1]{\ifinner\Tcase{\EQL}{\TUP{#1}}%
\else\Dcase{\EQL}{\DUP{#1}}\fi}%

% pair of adjoint arrows
\newcommand{\adjar}{\ifinner\tbicase{\ADJAR}\else\dbicase{\ADJAR}\fi}%

% pair of adjoint arrows with names [1],[2]
\newcommand{\Adjar}[2]{\ifinner\Tbicase{\ADJAR}{#1}{#2}%
\else\Dbicase{\ADJAR}{#1}{#2}\fi}%

% pair of adjoint distributors
\newcommand{\adjdist}{\ifinner\tbicase{\ADJDIST}\else\dbicase{\ADJDIST}\fi}%

% pair of adjoint distributors with names [1],[2]
\newcommand{\Adjdist}[2]{\ifinner\Tbicase{\ADJDIST}{\TUP{#1}}{\TDOWN{#2}}%
\else\Dbicase{\ADJDIST}{\DUP{#1}}{\DDOWN{#2}}\fi}%


% IN-TEXT BACK ARROWS

% \BKAR{n} draws a pointing back arrow of length n units
\newcommand{\BKAR}[1]%
{\begin{picture}(#1,0)%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\end{picture}}%

% \BKDIST{n} draws a pointing back distributor of length n units
\newcommand{\BKDIST}[1]%
{\begin{picture}(#1,0)%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{400}}%
\end{picture}}%

% \BKDOTAR{n} draws a backward dotted  arrow
% of length n units
\newcommand{\BKDOTAR}[1]%
{\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by 300%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(#1,0)%
\multiput(#1,0)(-300,0){\NUMBEROFDOTS}{\circle*{100}}%
\put(0,0){\whead}%
\end{picture}}%

% \BKMONO{n} draws a pointing back monomorphism of length n units
\newcommand{\BKMONO}[1]%
{\monolength=#1%
\advance\monolength by -\monotail%
\begin{picture}(#1,0)(-#1,0)%
\put(-\monotail,0){\line(-1,0){\monolength}}%
\put(-\monotail,0){\whead}%
\put(-#1,0){\whead}%
\end{picture}}%

% \BKEPI{n} draws a pointing back epimorphism of length n units
\newcommand{\BKEPI}[1]%
{\epilength=#1%
\advance\epilength by -\epihead%
\begin{picture}(#1,0)%
\put(#1,0){\line(-1,0){\epilength}}%
\put(\epihead,0){\whead}%
\put(0,0){\whead}%
\end{picture}}%

% \BKBIMO{n} draws a pointing back bimorphism of length n units
\newcommand{\BKBIMO}[1]%
{\monolength=#1%
\advance\monolength by -\monotail%
\epilength=\monolength%
\advance\epilength by -\epihead%
\begin{picture}(#1,0)%
\put(\monolength,0){\line(-1,0){\epilength}}%
\put(\monolength,0){\whead}%
\put(\epihead,0){\whead}%
\put(0,0){\whead}%
\end{picture}}%

% \BKBIAR{n} draws a pair of pointing back arrows of length n units
\newcommand{\BKBIAR}[1]%
{\begin{picture}(#1,700)%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\put(#1,700){\line(-1,0){#1}}%
\put(0,700){\whead}%
\end{picture}}%

% \BKBIDIST{n} draws a pair of pointing back distributors of length n units
\newcommand{\BKBIDIST}[1]%
{\begin{picture}(#1,700)%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\put(#1,700){\line(-1,0){#1}}%
\put(0,700){\whead}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{400}}%
\put(\NUMBER,700){\circle{400}}%
\end{picture}}%

% \BKADJAR{n} draws a pair of adjoint arrows of length n units
\newcommand{\BKADJAR}[1]%
{\begin{picture}(#1,700)%
\put(0,700){\line(1,0){#1}}%
\put(#1,700){\ehead}%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\end{picture}}%

% \BKADJDIST{n} draws a pair of adjoint distributors of length n units
\newcommand{\BKADJDIST}[1]%
{\begin{picture}(#1,700)%
\put(0,700){\line(1,0){#1}}%
\put(#1,700){\ehead}%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{400}}%
\put(\NUMBER,700){\circle{400}}%
\end{picture}}%

% All the following commands produce back arrows with length 20pt
% and scriptstyle names in math mode but arrows with length
% \displayarrowlength and textstyle names in display math mode.

% back arrow
\newcommand{\bkar}{\ifinner\tcase{\BKAR}\else\dcase{\BKAR}\fi}%

% back arrow with upper name [1]
\newcommand{\Bkar}[1]{\ifinner\Tcase{\BKAR}{#1}\else\Dcase{\BKAR}{#1}\fi}%

% back distributor
\newcommand{\bkdist}{\ifinner\tcase{\BKDIST}\else\dcase{\BKDIST}\fi}%

% back distributor with upper name [1]
\newcommand{\Bkdist}[1]{\ifinner\Tcase{\BKDIST}{\TUP{#1}}%
\else\Dcase{\BKDIST}{\TUP{#1}}\fi}%

% backward dotted arrow
\newcommand{\bkdotar}{\ifinner\tcase{\BKDOTAR}\else\dcase{\BKDOTAR}\fi}%

% backward dotted arrow with upper name [1]
\newcommand{\Bkdotar}[1]{\ifinner\Tcase{\BKDOTAR}{#1}%
\else\Dcase{\BKDOTAR}{#1}\fi}%

% back monomorphism
\newcommand{\bkmono}{\ifinner\tcase{\BKMONO}\else\dcase{\BKMONO}\fi}%

% back monomorphism with upper name [1]
\newcommand{\Bkmono}[1]{\ifinner\Tcase{\BKMONO}{#1}%
\else\Dcase{\BKMONO}{#1}\fi}%

% back epimorphism
\newcommand{\bkepi}{\ifinner\tcase{\BKEPI}\else\dcase{\BKEPI}\fi}%

% back epimorphism with upper name [1]
\newcommand{\Bkepi}[1]{\ifinner\Tcase{\BKEPI}{#1}%
\else\Dcase{\BKEPI}{#1}\fi}%

% back bimorphism
\newcommand{\bkbimo}{\ifinner\tcase{\BKBIMO}\else\dcase{\BKBIMO}\fi}%

% back bimorphism with upper name [1]
\newcommand{\Bkbimo}[1]{\ifinner\Tcase{\BKBIMO}{\hspace{9pt}#1}%
\else\Dcase{\BKBIMO}{\hspace{9pt}#1}\fi}%

% back isomorphism
\newcommand{\bkiso}{\ifinner\Tcase{\BKAR}{\cong}%
\else\Dcase{\BKAR}{\cong}\fi}%

% back isomorphism with upper name [1]
\newcommand{\Bkiso}[1]{\ifinner\Tcase{\BKAR}{\cong{#1}}%
\else\Dcase{\BKAR}{\cong{#1}}\fi}%

% pair of back arrows
\newcommand{\bkbiar}{\ifinner\tbicase{\BKBIAR}\else\dbicase{\BKBIAR}\fi}%

% pair of back arrows with names [1],[2]
\newcommand{\Bkbiar}[2]{\ifinner\Tbicase{\BKBIAR}{#1}{#2}%
\else\Dbicase{\BKBIAR}{#1}{#2}\fi}%

% pair of back distributors
\newcommand{\bkbidist}{\ifinner\tbicase{\BKBIDIST}%
\else\dbicase{\BKBIDIST}\fi}%

% pair of back distributors with names [1],[2]
\newcommand{\Bkbidist}[2]{\ifinner\Tbicase{\BKBIDIST}{\TUP{#1}}{\TDOWN{#2}}%
\else\Tbicase{\BKBIDIST}{\DUP{#1}}{\DDOWN{#2}}\fi}%

% back equality
\let\bkeql=\eql%

% back equality with name [1]
\let\Bkeql=\Eql%

% back pair of adjoint arrows
\newcommand{\bkadjar}{\ifinner\tbicase{\BKADJAR}%
\else\dbicase{\BKADJAR}\fi}%

% back pair of adjoint arrows with names [1],[2]
\newcommand{\Bkadjar}[2]{\ifinner\Tbicase{\BKADJAR}{#1}{#2}%
\else\Dbicase{\BKADJAR}{#1}{#2}\fi}%

% back pair of adjoint distributors
\newcommand{\bkadjdist}{\ifinner\tbicase{\BKADJDIST}%
\else\dbicase{\BKADJDIST}\fi}%

% back pair of adjoint distributors with names [1],[2]
\newcommand{\Bkadjdist}[2]{\ifinner\Tbicase{\BKADJDIST}{\TUP{#1}}{\TDOWN{#2}}%
\else\Dbicase{\BKADJDIST}{\TUP{#1}}{\TDOWN{#2}}\fi}%


% MACROS FOR DRAWING HORIZONTAL PICTURES

% \lowername{P}{f} puts the name f under the picture P
%\newcommand{\lowername}[2]%
%{$\stackrel{\makebox[1pt]{#1}}%
%{\begin{picture}(0,0)%
%\truex{600}%
%\put(0,0){\makebox(0,\value{x})[t]{\makebox[1pt]{$#2$}}}%
%\end{picture}}$}%

% My correction of the previous command
\newcommand{\lowername}[2]%
{$\stackrel{\makebox[1pt]{#1}}%
{\begin{picture}(0,0)%
\truex{600}%
\put(0,-600){\makebox(0,\value{x})[t]{\makebox[1pt]{$#2$}}}%
%\put(0,0){\makebox(0,\value{x})[t]{\makebox[1pt]{$#2$}}}%
\end{picture}}$}%

% \hcase{P}{n} draws the picture P with length n units
\newcommand{\hcase}[2]%
{\testdiagrammode\makebox[0pt]%
{\raisebox{0pt}[0pt][0pt]{#1{#2}}}}%

% \Hcase{P}{f}{n} draws the picture P with upper name f
% and length n units.
\newcommand{\Hcase}[3]%
{\testdiagrammode\makebox[0pt]
{\raisebox{0pt}[0pt][0pt]%
{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}{#1{#3}}$}}}%

% \hcasE{P}{f}{n} draws the picture P with lower name f
% and length n units.
%\newcommand{\hcasE}[3]%
%{\testdiagrammode\makebox[0pt]%
%{\raisebox{-8pt}[0pt][0pt]%
%{\lowername{#1{#3}}{#2}}}}%

% My correction of the previous command
\newcommand{\hcasE}[3]%
{\testdiagrammode\makebox[0pt]%
{\raisebox{-3pt}[0pt][0pt]%
{\lowername{#1{#3}}{#2}}}}%

% \Hisocase{P}{f}{g}{n} draws an arrow P with names f, g
% and length n units.
\newcommand{\Hisocase}[4]%
{\testdiagrammode\makebox[0pt]
{\raisebox{-8pt}[0pt][0pt]%
{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}%
{\mbox{\lowername{#1{#4}}{#3}}}$}}}%

% \hbicase{P}{n} draws the bi-picture P with length n units.
\newcommand{\hbicase}[2]%
{\testdiagrammode\makebox[0pt]%
{\raisebox{-2.4pt}[0pt][0pt]{#1{#2}}}}%

% \Hbicase{P}{f}{g}{n} draws the bi-picture P with names f, g
% and length n units.
\newcommand{\Hbicase}[4]%
{\testdiagrammode\makebox[0pt]
{\raisebox{-10.4pt}[0pt][0pt]%
{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}%
{\mbox{\lowername{#1{#4}}{#3}}}$}}}%

% EAST ARROWS

% \EAR{n} draws an east arrow of length n units
\newcommand{\EAR}[1]%
{\begin{picture}(#1,0)%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\end{picture}}%

% \EDIST{n} draws an east distributor of length n units
\newcommand{\EDIST}[1]%
{\begin{picture}(#1,0)%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\truex{400}
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{\value{x}}}
\end{picture}}%

% \EDOTAR draws a dotted arrow of length n units
\newcommand{\EDOTAR}[1]%
{\truex{100}\truey{300}%
\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(#1,0)%
\multiput(0,0)(\value{y},0){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(#1,0){\ehead}%
\end{picture}}%


% \EMONO{n} draws an east monomorphism of length n units
\newcommand{\EMONO}[1]%
{\truetail
\monolength=#1%
\advance\monolength by -\truemonotail%
\begin{picture}(#1,0)%
\put(\truemonotail,0){\line(1,0){\monolength}}%
\put(#1,0){\ehead}%
\put(\truemonotail,0){\ehead}%
\end{picture}}%


% \EEPI{n} draws an east epimorphism of length n units
\newcommand{\EEPI}[1]%
{\truehead%
\epilength=#1%
\advance\epilength by -\trueepihead%
\begin{picture}(#1,0)(-#1,0)%
\put(-#1,0){\line(1,0){\epilength}}%
\put(-\trueepihead,0){\ehead}%
\put(0,0){\ehead}%
\end{picture}}%


% \EBIMO{n} draws an east bimorphism of length n units
\newcommand{\EBIMO}[1]%
{\truehead\truetail%
\monolength=#1%
\advance\monolength by -\truemonotail%
\epilength=\monolength%
\advance\epilength by -\trueepihead%
\begin{picture}(#1,0)(-#1,0)%
\put(-\monolength,0){\line(1,0){\epilength}}%
\put(-\monolength,0){\ehead}%
\put(-\trueepihead,0){\ehead}%
\put(0,0){\ehead}%
\end{picture}}%


% \EBIAR{n} draws an east pair of arrows of length n units
\newcommand{\EBIAR}[1]%
{\truex{700}%
\begin{picture}(#1,\value{x})%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\put(0,\value{x}){\line(1,0){#1}}%
\put(#1,\value{x}){\ehead}%
\end{picture}}%

% \EBIDIST{n} draws an east pair of distributors of length n units
\newcommand{\EBIDIST}[1]%
{\truex{700}%
\begin{picture}(#1,\value{x})%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\put(0,\value{x}){\line(1,0){#1}}%
\put(#1,\value{x}){\ehead}%
\truey{400}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{\value{y}}}
\put(\NUMBER,\value{x}){\circle{\value{y}}}%
\end{picture}}%

% \EEQL{n} draws an east equality of length n units
\newcommand{\EEQL}[1]%
{\begin{picture}(#1,0)%
\truex{200}%
\put(0,\value{x}){\line(1,0){#1}}%
\put(0,0){\line(1,0){#1}}%
\end{picture}}%

% \EADJAR{n} draws an east pair of adjoint arrows of length n
% units
\newcommand{\EADJAR}[1]%
{\truex{700}%
\begin{picture}(#1,\value{x})%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\put(#1,\value{x}){\line(-1,0){#1}}%
\put(0,\value{x}){\whead}%
\end{picture}}%

% \EADJDIST{n} draws an east pair of adjoint distributors of length n
% units
\newcommand{\EADJDIST}[1]%
{\truex{700}%
\begin{picture}(#1,\value{x})%
\put(0,0){\line(1,0){#1}}%
\put(#1,0){\ehead}%
\put(#1,\value{x}){\line(-1,0){#1}}%
\put(0,\value{x}){\whead}%
\truey{400}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{\value{y}}}
\put(\NUMBER,\value{x}){\circle{\value{y}}}%
\end{picture}}%


% All the following commands produce east arrows

% basic east arrow
\def\basicear[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\EAR}{\Z}}%

% east arrow
\newcommand{\ear}{\@ifnextchar[{\basicear}%
{\hspace{\SOURCE\unitlength}\basicear[\ARROWLENGTH]}}%

% basic east arrow with upper name
\def\basicEar[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\EAR}{#2}{\Z}}%

% east arrow with upper name
\newcommand{\Ear}{\@ifnextchar[{\basicEar}%
{\hspace{\SOURCE\unitlength}\basicEar[\ARROWLENGTH]}}%

% basic east arrow with lower name
\def\basiceaR[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\EAR}{#2}{\Z}}%

% east arrow with lower name
\newcommand{\eaR}{\@ifnextchar[{\basiceaR}%
{\hspace{\SOURCE\unitlength}\basiceaR[\ARROWLENGTH]}}%

% basic east distributor
\def\basicedist[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\EDIST}{\Z}}%

% east distributor
\newcommand{\edist}{\@ifnextchar[{\basicedist}%
{\hspace{\SOURCE\unitlength}\basicedist[\ARROWLENGTH]}}%

% basic east distributor with upper name
\def\basicEdist[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\EDIST}{\DUP{#2}}{\Z}}%

% east distributor with upper name
\newcommand{\Edist}{\@ifnextchar[{\basicEdist}%
{\hspace{\SOURCE\unitlength}\basicEdist[\ARROWLENGTH]}}%

% basic east distributor with lower name
\def\basicedisT[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\EDIST}{\DDOWN{#2}}{\Z}}%

% east distributor with lower name
\newcommand{\edisT}{\@ifnextchar[{\basicedisT}%
{\hspace{\SOURCE\unitlength}\basicedisT[\ARROWLENGTH]}}%

% basic east dotted arrow
\def\basicedotar[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\EDOTAR}{\Z}}%

% east dotted arrow
\newcommand{\edotar}{\@ifnextchar[{\basicedotar}%
{\hspace{\SOURCE\unitlength}\basicedotar[\ARROWLENGTH]}}%

% basic east dotted arrow with upper name
\def\basicEdotar[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\EDOTAR}{#2}{\Z}}%

% east dotted arrow with upper name
\newcommand{\Edotar}{\@ifnextchar[{\basicEdotar}%
{\hspace{\SOURCE\unitlength}\basicEdotar[\ARROWLENGTH]}}%

% basic east dotted arrow with lower name
\def\basicedotaR[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\EDOTAR}{#2}{\Z}}%

% east dotted arrow with lower name
\newcommand{\edotaR}{\@ifnextchar[{\basicedotaR}%
{\hspace{\SOURCE\unitlength}\basicedotaR[\ARROWLENGTH]}}%

% basic east monomorphism
\def\basicemono[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\EMONO}{\Z}}%

% east arrow
\newcommand{\emono}{\@ifnextchar[{\basicemono}%
{\hspace{\SOURCE\unitlength}\basicemono[\ARROWLENGTH]}}%

% basic east monomorphism with upper name
\def\basicEmono[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\EMONO}{#2}{\Z}}%

% east monomorphism with upper name
\newcommand{\Emono}{\@ifnextchar[{\basicEmono}%
{\hspace{\SOURCE\unitlength}\basicEmono[\ARROWLENGTH]}}%

% basic east monomorphism with lower name
\def\basicemonO[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\EMONO}{#2}{\Z}}%

% east monomorphism with lower name
\newcommand{\emonO}{\@ifnextchar[{\basicemonO}%
{\hspace{\SOURCE\unitlength}\basicemonO[\ARROWLENGTH]}}%

% basic east epimorphism
\def\basiceepi[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\EEPI}{\Z}}%

% east epimorphism
\newcommand{\eepi}{\@ifnextchar[{\basiceepi}%
{\hspace{\SOURCE\unitlength}\basiceepi[\ARROWLENGTH]}}%

% basic east epimorphism with upper name
\def\basicEepi[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\EEPI}{#2}{\Z}}%

% east epimorphism with upper name
\newcommand{\Eepi}{\@ifnextchar[{\basicEepi}%
{\hspace{\SOURCE\unitlength}\basicEepi[\ARROWLENGTH]}}%

% basic east epimorphism with lower name
\def\basiceepI[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\EEPI}{#2}{\Z}}%

% east epimorphism with lower name
\newcommand{\eepI}{\@ifnextchar[{\basiceepI}%
{\hspace{\SOURCE\unitlength}\basiceepI[\ARROWLENGTH]}}%

% basic east bimorphism
\def\basicebimo[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\EBIMO}{\Z}}%

% east bimorphism
\newcommand{\ebimo}{\@ifnextchar[{\basicebimo}%
{\hspace{\SOURCE\unitlength}\basicebimo[\ARROWLENGTH]}}%

% basic east bimorphism with upper name
\def\basicEbimo[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\EBIMO}{#2}{\Z}}%

% east bimorphism with upper name
\newcommand{\Ebimo}{\@ifnextchar[{\basicEbimo}%
{\hspace{\SOURCE\unitlength}\basicEbimo[\ARROWLENGTH]}}%

% basic east bimorphism with lower name
\def\basicebimO[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\EBIMO}{#2}{\Z}}%

% east bimorphism with lower name
\newcommand{\ebimO}{\@ifnextchar[{\basicebimO}%
{\hspace{\SOURCE\unitlength}\basicebimO[\ARROWLENGTH]}}%

% basic east isomorphism
\def\basiceiso[#1]{%
\Z=#1%
\multiply \Z by 100%
\Hisocase{\EAR}{\cong}{}{\Z}}%

% east isomorphism
\newcommand{\eiso}{\@ifnextchar[{\basiceiso}%
{\hspace{\SOURCE\unitlength}\basiceiso[\ARROWLENGTH]}}%

% basic east isomorphism with upper name
\def\basicEiso[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hisocase{\EAR}{#2}{\cong}{\Z}}%

% east isomorphism with upper name
\newcommand{\Eiso}{\@ifnextchar[{\basicEiso}%
{\hspace{\SOURCE\unitlength}\basicEiso[\ARROWLENGTH]}}%

% basic east isomorphism with lower name
\def\basiceisO[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hisocase{\EAR}{\cong}{#2}{\Z}}%

% east isomorphism with lower name
\newcommand{\eisO}{\@ifnextchar[{\basiceisO}%
{\hspace{\SOURCE\unitlength}\basiceisO[\ARROWLENGTH]}}%

% basic east equality
\def\basiceeql[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\EEQL}{\Z}}%

% east equality
\newcommand{\eeql}{\@ifnextchar[{\basiceeql}%
{\hspace{\SOURCE\unitlength}\basiceeql[\ARROWLENGTH]}}%

% basic east equality with upper name
\def\basicEeql[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\EEQL}{\DUP{#2}}{\Z}}%

% east equality with upper name
\newcommand{\Eeql}{\@ifnextchar[{\basicEeql}%
{\hspace{\SOURCE\unitlength}\basicEeql[\ARROWLENGTH]}}%

% basic east equality with lower name
\def\basiceeqL[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\EEQL}{#2}{\Z}}%

% east equality with lower name
\newcommand{\eeqL}{\@ifnextchar[{\basiceeqL}%
{\hspace{\SOURCE\unitlength}\basiceeqL[\ARROWLENGTH]}}%

% basic pair of east arrows
\def\basicebiar[#1]{%
\Z=#1%
\multiply \Z by 100%
\hbicase{\EBIAR}{\Z}}%

% pair of east arrows
\newcommand{\ebiar}{\@ifnextchar[{\basicebiar}%
{\hspace{\SOURCE\unitlength}\basicebiar[\ARROWLENGTH]}}%

% basic pair of east arrows with names
\def\basicEbiar[#1]#2#3{%
\Z=#1%
\multiply \Z by 100%
\Hbicase{\EBIAR}{#2}{#3}{\Z}}%

% pair of east arrows with names
\newcommand{\Ebiar}{\@ifnextchar[{\basicEbiar}%
{\hspace{\SOURCE\unitlength}\basicEbiar[\ARROWLENGTH]}}%
\let\ebiaR=\Ebiar

% basic pair of east distributors
\def\basicebidist[#1]{%
\Z=#1%
\multiply \Z by 100%
\hbicase{\EBIDIST}{\Z}}%

% pair of east distributors
\newcommand{\ebidist}{\@ifnextchar[{\basicebidist}%
{\hspace{\SOURCE\unitlength}\basicebidist[\ARROWLENGTH]}}%

% basic pair of east distributors with names
\def\basicEbidist[#1]#2#3{%
\Z=#1%
\multiply \Z by 100%
\Hbicase{\EBIDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}%

% pair of east distributors with names
\newcommand{\Ebidist}{\@ifnextchar[{\basicEbidist}%
{\hspace{\SOURCE\unitlength}\basicEbidist[\ARROWLENGTH]}}%
\let\ebidisT=\Ebidist

% basic pair of east adjoint arrows
\def\basiceadjar[#1]{%
\Z=#1%
\multiply \Z by 100%
\hbicase{\EADJAR}{\Z}}%

% pair of east adjoint arrows
\newcommand{\eadjar}{\@ifnextchar[{\basiceadjar}%
{\hspace{\SOURCE\unitlength}\basiceadjar[\ARROWLENGTH]}}%

% basic pair of east adjoint arrows with names
\def\basicEadjar[#1]#2#3{%
\Z=#1%
\multiply \Z by 100%
\Hbicase{\EADJAR}{#2}{#3}{\Z}}%

% pair of east adjoint arrows with names
\newcommand{\Eadjar}{\@ifnextchar[{\basicEadjar}%
{\hspace{\SOURCE\unitlength}\basicEadjar[\ARROWLENGTH]}}%
\let\eadjaR=\Eadjar

% basic pair of east adjoint distributors
\def\basiceadjdist[#1]{%
\Z=#1%
\multiply \Z by 100%
\hbicase{\EADJDIST}{\Z}}%

% pair of east adjoint distributors
\newcommand{\eadjdist}{\@ifnextchar[{\basiceadjdist}%
{\hspace{\SOURCE\unitlength}\basiceadjdist[\ARROWLENGTH]}}%

% basic pair of east adjoint distributors with names
\def\basicEadjdist[#1]#2#3{%
\Z=#1%
\multiply \Z by 100%
\Hbicase{\EADJDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}%

% pair of east adjoint distributors with names
\newcommand{\Eadjdist}{\@ifnextchar[{\basicEadjdist}%
{\hspace{\SOURCE\unitlength}\basicEadjdist[\ARROWLENGTH]}}%
\let\eadjdisT=\Eadjdist

% WEST ARROWS

% \WAR{n} draws a pointing back arrow of length n units
\newcommand{\WAR}[1]%
{\begin{picture}(#1,0)%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\end{picture}}%

% \WDIST{n} draws a pointing back distributor of length n units
\newcommand{\WDIST}[1]%
{\begin{picture}(#1,0)%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\truex{400}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{\value{x}}}%
\end{picture}}%

% \WDOTAR draws a dotted arrow of length n units
\newcommand{\WDOTAR}[1]%
{\truex{100}\truey{300}%
\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(#1,0)%
\multiput(#1,0)(-\value{y},0){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(0,0){\whead}%
\end{picture}}%

% \WMONO{n} draws a pointing back monomorphism of length n units
\newcommand{\WMONO}[1]%
{\truetail%
\monolength=#1%
\advance\monolength by -\truemonotail%
\begin{picture}(#1,0)(-#1,0)%
\put(-\truemonotail,0){\line(-1,0){\monolength}}%
\put(-\truemonotail,0){\whead}%
\put(-#1,0){\whead}%
\end{picture}}%


% \WEPI{n} draws a pointing back epimorphism of length n units
\newcommand{\WEPI}[1]%
{\truehead%
\epilength=#1%
\advance\epilength by -\trueepihead%
\begin{picture}(#1,0)%
\put(#1,0){\line(-1,0){\epilength}}%
\put(\trueepihead,0){\whead}%
\put(0,0){\whead}%
\end{picture}}%

% \WBIMO{n} draws a pointing back bimorphism of length n units
\newcommand{\WBIMO}[1]%
{\truehead\truetail%
\monolength=#1
\advance\monolength by -\truemonotail%
\epilength=\monolength%
\advance\epilength by -\trueepihead%
\begin{picture}(#1,0)%
\put(\monolength,0){\line(-1,0){\epilength}}%
\put(\monolength,0){\whead}%
\put(\trueepihead,0){\whead}%
\put(0,0){\whead}%
\end{picture}}%

% \WBIAR{n} draws a pair of pointing back arrows of length n units
\newcommand{\WBIAR}[1]%
{\truex{700}%
\begin{picture}(#1,\value{x})%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\put(#1,\value{x}){\line(-1,0){#1}}%
\put(0,\value{x}){\whead}%
\end{picture}}%

% \WBIDIST{n} draws a pair of pointing back distributors of length n units
\newcommand{\WBIDIST}[1]%
{\truex{700}%
\begin{picture}(#1,\value{x})%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\put(#1,\value{x}){\line(-1,0){#1}}%
\put(0,\value{x}){\whead}%
\truey{400}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{\value{y}}}%
\put(\NUMBER,\value{x}){\circle{\value{y}}}%
\end{picture}}%

% \WADJAR{n} draws a pair of adjoint arrows of length n units
\newcommand{\WADJAR}[1]%
{\truex{700}%
\begin{picture}(#1,\value{x})%
\put(0,\value{x}){\line(1,0){#1}}%
\put(#1,\value{x}){\ehead}%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\end{picture}}%

% \WADJDIST{n} draws a pair of adjoint distributors of length n units
\newcommand{\WADJDIST}[1]%
{\truex{700}%
\begin{picture}(#1,\value{x})%
\put(0,\value{x}){\line(1,0){#1}}%
\put(#1,\value{x}){\ehead}%
\put(#1,0){\line(-1,0){#1}}%
\put(0,0){\whead}%
\truey{400}%
\NUMBER=#1%
\divide\NUMBER by 2%
\put(\NUMBER,0){\circle{\value{y}}}%
\put(\NUMBER,\value{x}){\circle{\value{y}}}%
\end{picture}}%


% All the following commands produce west arrows

% basic west arrow
\def\basicwar[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\WAR}{\Z}}%

% west arrow
\newcommand{\war}{\@ifnextchar[{\basicwar}%
{\hspace{\SOURCE\unitlength}\basicwar[\ARROWLENGTH]}}%

% basic west arrow with upper name
\def\basicWar[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\WAR}{#2}{\Z}}%

% west arrow with upper name
\newcommand{\War}{\@ifnextchar[{\basicWar}%
{\hspace{\SOURCE\unitlength}\basicWar[\ARROWLENGTH]}}%

% basic west arrow with lower name
\def\basicwaR[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\WAR}{#2}{\Z}}%

% west arrow with lower name
\newcommand{\waR}{\@ifnextchar[{\basicwaR}%
{\hspace{\SOURCE\unitlength}\basicwaR[\ARROWLENGTH]}}%

% basic west distributor
\def\basicwdist[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\WDIST}{\Z}}%

% west distributor
\newcommand{\wdist}{\@ifnextchar[{\basicwdist}%
{\hspace{\SOURCE\unitlength}\basicwdist[\ARROWLENGTH]}}%

% basic west distributor with upper name
\def\basicWdist[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\WDIST}{\DUP{#2}}{\Z}}%

% west distributor with upper name
\newcommand{\Wdist}{\@ifnextchar[{\basicWdist}%
{\hspace{\SOURCE\unitlength}\basicWdist[\ARROWLENGTH]}}%

% basic west distributor with lower name
\def\basicwdisT[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\WDIST}{\DDOWN{#2}}{\Z}}%

% west distributor with lower name
\newcommand{\wdisT}{\@ifnextchar[{\basicwdisT}%
{\hspace{\SOURCE\unitlength}\basicwdisT[\ARROWLENGTH]}}%

% basic west dotted arrow
\def\basicwdotar[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\WDOTAR}{\Z}}%

% west dotted arrow
\newcommand{\wdotar}{\@ifnextchar[{\basicwdotar}%
{\hspace{\SOURCE\unitlength}\basicwdotar[\ARROWLENGTH]}}%

% basic west dotted arrow with upper name
\def\basicWdotar[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\WDOTAR}{#2}{\Z}}%

% west dotted arrow with upper name
\newcommand{\Wdotar}{\@ifnextchar[{\basicWdotar}%
{\hspace{\SOURCE\unitlength}\basicWdotar[\ARROWLENGTH]}}%

% basic west dotted arrow with lower name
\def\basicwdotaR[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\WDOTAR}{#2}{\Z}}%

% west dotted arrow with lower name
\newcommand{\wdotaR}{\@ifnextchar[{\basicwdotaR}%
{\hspace{\SOURCE\unitlength}\basicwdotaR[\ARROWLENGTH]}}%

% basic west monomorphism
\def\basicwmono[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\WMONO}{\Z}}%

% west arrow
\newcommand{\wmono}{\@ifnextchar[{\basicwmono}%
{\hspace{\SOURCE\unitlength}\basicwmono[\ARROWLENGTH]}}%

% basic west monomorphism with upper name
\def\basicWmono[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\WMONO}{#2}{\Z}}%

% west monomorphism with upper name
\newcommand{\Wmono}{\@ifnextchar[{\basicWmono}%
{\hspace{\SOURCE\unitlength}\basicWmono[\ARROWLENGTH]}}%

% basic west monomorphism with lower name
\def\basicwmonO[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\WMONO}{#2}{\Z}}%

% west monomorphism with lower name
\newcommand{\wmonO}{\@ifnextchar[{\basicwmonO}%
{\hspace{\SOURCE\unitlength}\basicwmonO[\ARROWLENGTH]}}%

% basic west epimorphism
\def\basicwepi[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\WEPI}{\Z}}%

% west epimorphism
\newcommand{\wepi}{\@ifnextchar[{\basicwepi}%
{\hspace{\SOURCE\unitlength}\basicwepi[\ARROWLENGTH]}}%

% basic west epimorphism with upper name
\def\basicWepi[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\WEPI}{#2}{\Z}}%

% west epimorphism with upper name
\newcommand{\Wepi}{\@ifnextchar[{\basicWepi}%
{\hspace{\SOURCE\unitlength}\basicWepi[\ARROWLENGTH]}}%

% basic west epimorphism with lower name
\def\basicwepI[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\WEPI}{#2}{\Z}}%

% west epimorphism with lower name
\newcommand{\wepI}{\@ifnextchar[{\basicwepI}%
{\hspace{\SOURCE\unitlength}\basicwepI[\ARROWLENGTH]}}%

% basic west bimorphism
\def\basicwbimo[#1]{%
\Z=#1%
\multiply \Z by 100%
\hcase{\WBIMO}{\Z}}%

% west bimorphism
\newcommand{\wbimo}{\@ifnextchar[{\basicwbimo}%
{\hspace{\SOURCE\unitlength}\basicwbimo[\ARROWLENGTH]}}%

% basic west bimorphism with upper name
\def\basicWbimo[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hcase{\WBIMO}{#2}{\Z}}%

% west bimorphism with upper name
\newcommand{\Wbimo}{\@ifnextchar[{\basicWbimo}%
{\hspace{\SOURCE\unitlength}\basicWbimo[\ARROWLENGTH]}}%

% basic west bimorphism with lower name
\def\basicwbimO[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\hcasE{\WBIMO}{#2}{\Z}}%

% west bimorphism with lower name
\newcommand{\wbimO}{\@ifnextchar[{\basicwbimO}%
{\hspace{\SOURCE\unitlength}\basicwbimO[\ARROWLENGTH]}}%

% basic west isomorphism
\def\basicwiso[#1]{%
\Z=#1%
\multiply \Z by 100%
\Hisocase{\WAR}{\cong}{}{\Z}}%

% west isomorphism
\newcommand{\wiso}{\@ifnextchar[{\basicwiso}%
{\hspace{\SOURCE\unitlength}\basicwiso[\ARROWLENGTH]}}%

% basic west isomorphism with upper name
\def\basicWiso[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hisocase{\WAR}{#2}{\cong}{\Z}}%

% west isomorphism with upper name
\newcommand{\Wiso}{\@ifnextchar[{\basicWiso}%
{\hspace{\SOURCE\unitlength}\basicWiso[\ARROWLENGTH]}}%

% basic west isomorphism with lower name
\def\basicwisO[#1]#2{%
\Z=#1%
\multiply \Z by 100%
\Hisocase{\WAR}{\cong}{#2}{\Z}}%

% west isomorphism with lower name
\newcommand{\wisO}{\@ifnextchar[{\basicwisO}%
{\hspace{\SOURCE\unitlength}\basicwisO[\ARROWLENGTH]}}%

% west equality
\let\weql=\eeql%

% west equality with upper name
\let\Weql=\Eeql%

% west equality with lower name
\let\weqL=\eeqL%

% basic pair of west arrows
\def\basicwbiar[#1]{%
\Z=#1%
\multiply \Z by 100%
\hbicase{\WBIAR}{\Z}}%

% pair of west arrows
\newcommand{\wbiar}{\@ifnextchar[{\basicwbiar}%
{\hspace{\SOURCE\unitlength}\basicwbiar[\ARROWLENGTH]}}%

% basic pair of west arrows with names
\def\basicWbiar[#1]#2#3{%
\Z=#1%
\multiply \Z by 100%
\Hbicase{\WBIAR}{#2}{#3}{\Z}}%

% pair of west arrows with names
\newcommand{\Wbiar}{\@ifnextchar[{\basicWbiar}%
{\hspace{\SOURCE\unitlength}\basicWbiar[\ARROWLENGTH]}}%
\let\wbiaR=\Wbiar

% basic pair of west distributors
\def\basicwbidist[#1]{%
\Z=#1%
\multiply \Z by 100%
\hbicase{\WBIDIST}{\Z}}%

% pair of west distributors
\newcommand{\wbidist}{\@ifnextchar[{\basicwbidist}%
{\hspace{\SOURCE\unitlength}\basicwbidist[\ARROWLENGTH]}}%

% basic pair of west distributors with names
\def\basicWbidist[#1]#2#3{%
\Z=#1%
\multiply \Z by 100%
\Hbicase{\WBIDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}%

% pair of west distributors with names
\newcommand{\Wbidist}{\@ifnextchar[{\basicWbidist}%
{\hspace{\SOURCE\unitlength}\basicWbidist[\ARROWLENGTH]}}%
\let\wbidisT=\Wbidist

% basic pair of west adjoint arrows
\def\basicwadjar[#1]{%
\Z=#1%
\multiply \Z by 100%
\hbicase{\WADJAR}{\Z}}%

% pair of west adjoint arrows
\newcommand{\wadjar}{\@ifnextchar[{\basicwadjar}%
{\hspace{\SOURCE\unitlength}\basicwadjar[\ARROWLENGTH]}}%

% basic pair of west adjoint arrows with names
\def\basicWadjar[#1]#2#3{%
\Z=#1%
\multiply \Z by 100%
\Hbicase{\WADJAR}{#2}{#3}{\Z}}%

% pair of west adjoint arrows with names
\newcommand{\Wadjar}{\@ifnextchar[{\basicWadjar}%
{\hspace{\SOURCE\unitlength}\basicWadjar[\ARROWLENGTH]}}%
\let\wadjaR=\Wadjar

% basic pair of west adjoint distributors
\def\basicwadjdist[#1]{%
\Z=#1%
\multiply \Z by 100%
\hbicase{\WADJDIST}{\Z}}%

% pair of west adjoint distributors
\newcommand{\wadjdist}{\@ifnextchar[{\basicwadjdist}%
{\hspace{\SOURCE\unitlength}\basicwadjdist[\ARROWLENGTH]}}%

% basic pair of west adjoint distributors with names
\def\basicWadjdist[#1]#2#3{%
\Z=#1%
\multiply \Z by 100%
\Hbicase{\WADJDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}%

% pair of west adjoint distributors with names
\newcommand{\Wadjdist}{\@ifnextchar[{\basicWadjdist}%
{\hspace{\SOURCE\unitlength}\basicWadjdist[\ARROWLENGTH]}}%
\let\wadjdisT=\Wadjdist


% MACROS FOR DRAWING VERTICAL PICTURES

% \vcase{P}{n} draws the vertical picture P with length n units.
\newcommand{\vcase}[2]{\testdiagrammode#1{#2}}%

% \Vcase{P}{f}{n} draws the vertical picture P
% with left name f and length n units.
\newcommand{\Vcase}[3]{\testdiagrammode\makebox[0pt]%
{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{${#2}\hspace{2pt}$}}}#1{#3}}%

% \vcasE{P}{f}{n} draws the vertical picture P
% with right name f and length n units.
\newcommand{\vcasE}[3]{\testdiagrammode\makebox[0pt]%
{#1{#3}\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{2pt}$#2$}}}}%

% \Visocase{P}{f}{g}{n} draws the vertical picture P
% with names f, g and length n units.
\newcommand{\Visocase}[4]{\testdiagrammode\makebox[0pt]%
{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{$#2$\hspace{2pt}}}#1{#4}%
\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{2pt}$#3$}}}}%

% \vbicase{P}{n} draws the vertical bi-picture P with length n units.
\newcommand{\vbicase}[2]{\testdiagrammode\makebox[0pt]{{#1{#2}}}}%

% \Vbicase{P}{f}{g}{n} draws the vertical bi-picture P
% with names f, g and length n units.
\newcommand{\Vbicase}[4]{\testdiagrammode\makebox[0pt]%
{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{$#2$\hspace{5.5pt}}}#1{#4}%
\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{6.5pt}$#3$}}}}%



% SOUTH ARROWS

% \SAR{n} draws a south arrow of length n units
% and centers it in a box of width  0pt and height 0pt
\newcommand{\SAR}[1]%
{\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,#1){\line(0,-1){#1}}%
\put(0,0){\shead}%
\end{picture}}}\end{picture}}%

% \SDIST{n} draws a south distributor of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SDIST}[1]%
{\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,#1){\line(0,-1){#1}}%
\put(0,0){\shead}%
\end{picture}}}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\end{picture}}%

% \SDOTAR{n} draws a south dotted arrow of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SDOTAR}[1]%
{\truex{100}\truey{300}%
\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\multiput(0,#1)(0,-\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(0,0){\shead}%
\end{picture}}}\end{picture}}%

% \SMONO{n} draws a south monomorphism of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SMONO}[1]%
{\truetail%
\monolength=#1%
\advance\monolength by -\truemonotail%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,\monolength){\line(0,-1){\monolength}}%
\put(0,\monolength){\shead}%
\put(0,0){\shead}%
\end{picture}}}\end{picture}}%


% \SEPI{n} draws a south epimorphism of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SEPI}[1]%
{\truehead%
\epilength=#1%
\advance\epilength by -\trueepihead%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,#1){\line(0,-1){\epilength}}%
\put(0,\trueepihead){\shead}%
\put(0,0){\shead}%
\end{picture}}}\end{picture}}%

% \SBIMO{n} draws a south bimorphism of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SBIMO}[1]%
{\truehead\truetail%
\monolength=#1%
\advance\monolength by -\truemonotail%
\epilength=\monolength%
\advance\epilength by -\trueepihead%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,\monolength){\line(0,-1){\epilength}}%
\put(0,\monolength){\shead}%
\put(0,\trueepihead){\shead}%
\put(0,0){\shead}%
\end{picture}}}\end{picture}}%

% \SBIAR{n} draws a pair of south arrows of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SBIAR}[1]%
{\begin{picture}(0,0)%
\truex{350}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(-\value{x},#1){\line(0,-1){#1}}%
\put(-\value{x},0){\shead}%
\put(\value{x},#1){\line(0,-1){#1}}%
\put(\value{x},0){\shead}%
\end{picture}}}\end{picture}}%

% \SBIDIST{n} draws a pair of south distributors of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SBIDIST}[1]%
{\begin{picture}(0,0)%
\truex{350}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(-\value{x},#1){\line(0,-1){#1}}%
\put(-\value{x},0){\shead}%
\put(\value{x},#1){\line(0,-1){#1}}%
\put(\value{x},0){\shead}%
\end{picture}}}%
\truey{400}%
\put(-\value{x},0){\circle{\value{y}}}%
\put(\value{x},0){\circle{\value{y}}}%
\end{picture}}%

% \SEQL{n} draws a vertical equality of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SEQL}[1]%
{\begin{picture}(0,0)%
\truex{100}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)\put(-\value{x},#1){\line(0,-1){#1}}%
\put(\value{x},#1){\line(0,-1){#1}}%
\end{picture}}}\end{picture}}%

% \SADJAR{n} draws a pair of vertical adjoint arrows of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SADJAR}[1]{\begin{picture}(0,0)%
\truex{350}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(-\value{x},#1){\line(0,-1){#1}}%
\put(-\value{x},0){\shead}%
\put(\value{x},0){\line(0,1){#1}}%
\put(\value{x},#1){\nhead}%
\end{picture}}}\end{picture}}%

% \SADJDIST{n} draws a pair of vertical adjoint distributors of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\SADJDIST}[1]{\begin{picture}(0,0)%
\truex{350}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(-\value{x},#1){\line(0,-1){#1}}%
\put(-\value{x},0){\shead}%
\put(\value{x},0){\line(0,1){#1}}%
\put(\value{x},#1){\nhead}%
\end{picture}}}%
\truey{400}%
\put(-\value{x},0){\circle{\value{y}}}%
\put(\value{x},0){\circle{\value{y}}}%
\end{picture}}%


% All the following commands produce south arrows

% basic south arrow
\def\basicsar[#1]{\vcase{\SAR}{#100}}%

% south arrow
\newcommand{\sar}{\@ifnextchar[{\basicsar}{\basicsar[50]}}%

% basic south arrow with left name
\def\basicSar[#1]#2{\Vcase{\SAR}{#2}{#100}}%

% south arrow with left name
\newcommand{\Sar}{\@ifnextchar[{\basicSar}{\basicSar[50]}}%

% basic south arrow with right name
\def\basicsaR[#1]#2{\vcasE{\SAR}{#2}{#100}}%

% south arrow with right name
\newcommand{\saR}{\@ifnextchar[{\basicsaR}{\basicsaR[50]}}%

% basic south distributor
\def\basicsdist[#1]{\vcase{\SDIST}{#100}}%

% south distributor
\newcommand{\sdist}{\@ifnextchar[{\basicsdist}{\basicsdist[50]}}%

% basic south distributor with left name
\def\basicSdist[#1]#2{\Vcase{\SDIST}{#2\hspace*{2pt}}{#100}}%

% south distributor with left name
\newcommand{\Sdist}{\@ifnextchar[{\basicSdist}{\basicSdist[50]}}%

% basic south distributor with right name
\def\basicsdisT[#1]#2{\vcasE{\SDIST}{\hspace*{2pt}#2}{#100}}%

% south distributor with right name
\newcommand{\sdisT}{\@ifnextchar[{\basicsdisT}{\basicsdisT[50]}}%

% basic south dotted arrow
\def\basicsdotar[#1]{\vcase{\SDOTAR}{#100}}%

% south dotted arrow
\newcommand{\sdotar}{\@ifnextchar[{\basicsdotar}{\basicsdotar[50]}}%

% basic south dotted arrow with left name
\def\basicSdotar[#1]#2{\Vcase{\SDOTAR}{#2}{#100}}%

% south dotted arrow with left name
\newcommand{\Sdotar}{\@ifnextchar[{\basicSdotar}{\basicSdotar[50]}}%

% basic south dotted arrow with right name
\def\basicsdotaR[#1]#2{\vcasE{\SDOTAR}{#2}{#100}}%

% south dotted arrow with right name
\newcommand{\sdotaR}{\@ifnextchar[{\basicsdotaR}{\basicsdotaR[50]}}%

% basic south monomorphism
\def\basicsmono[#1]{\vcase{\SMONO}{#100}}%

% south arrow
\newcommand{\smono}{\@ifnextchar[{\basicsmono}{\basicsmono[50]}}%

% basic south monomorphism with left name
\def\basicSmono[#1]#2{\Vcase{\SMONO}{#2}{#100}}%

% south monomorphism with left name
\newcommand{\Smono}{\@ifnextchar[{\basicSmono}{\basicSmono[50]}}%

% basic south monomorphism with right name
\def\basicsmonO[#1]#2{\vcasE{\SMONO}{#2}{#100}}%

% south monomorphism with right name
\newcommand{\smonO}{\@ifnextchar[{\basicsmonO}{\basicsmonO[50]}}%

% basic south epimorphism
\def\basicsepi[#1]{\vcase{\SEPI}{#100}}%

% south epimorphism
\newcommand{\sepi}{\@ifnextchar[{\basicsepi}{\basicsepi[50]}}%

% basic south epimorphism with left name
\def\basicSepi[#1]#2{\Vcase{\SEPI}{#2}{#100}}%

% south epimorphism with left name
\newcommand{\Sepi}{\@ifnextchar[{\basicSepi}{\basicSepi[50]}}%

% basic south epimorphism with right name
\def\basicsepI[#1]#2{\vcasE{\SEPI}{#2}{#100}}%

% south epimorphism with right name
\newcommand{\sepI}{\@ifnextchar[{\basicsepI}{\basicsepI[50]}}%

% basic south bimorphism
\def\basicsbimo[#1]{\vcase{\SBIMO}{#100}}%

% south bimorphism
\newcommand{\sbimo}{\@ifnextchar[{\basicsbimo}{\basicsbimo[50]}}%

% basic south bimorphism with left name
\def\basicSbimo[#1]#2{\Vcase{\SBIMO}{#2}{#100}}%

% south bimorphism with left name
\newcommand{\Sbimo}{\@ifnextchar[{\basicSbimo}{\basicSbimo[50]}}%

% basic south bimorphism with right name
\def\basicsbimO[#1]#2{\vcasE{\SBIMO}{#2}{#100}}%

% south bimorphism with right name
\newcommand{\sbimO}{\@ifnextchar[{\basicsbimO}{\basicsbimO[50]}}%

% basic south isomorphism
\def\basicsiso[#1]{\Visocase{\SAR}{\cong}{}{#100}}%

% south isomorphism
\newcommand{\siso}{\@ifnextchar[{\basicsiso}{\basicsiso[50]}}%

% basic south isomorphism with left name
\def\basicSiso[#1]#2{\Visocase{\SAR}{#2}{\cong}{#100}}%

% south isomorphism with left name
\newcommand{\Siso}{\@ifnextchar[{\basicSiso}{\basicSiso[50]}}%

% basic south isomorphism with right name
\def\basicsisO[#1]#2{\Visocase{\SAR}{\cong}{#2}{#100}}%

% south isomorphism with right name
\newcommand{\sisO}{\@ifnextchar[{\basicsisO}{\basicsisO[50]}}%

% basic south equality
\def\basicseql[#1]{\vcase{\SEQL}{#100}}%

% south equality
\newcommand{\seql}{\@ifnextchar[{\basicseql}{\basicseql[50]}}%

% basic south equality with left name
\def\basicSeql[#1]#2{\Vcase{\SEQL}{#2\hspace*{2pt}}{#100}}%

% south equality with left name
\newcommand{\Seql}{\@ifnextchar[{\basicSeql}{\basicSeql[50]}}%

% basic south equality with right name
\def\basicseqL[#1]#2{\vcasE{\SEQL}{\hspace*{2pt}#2}{#100}}%

% south equality with right name
\newcommand{\seqL}{\@ifnextchar[{\basicseqL}{\basicseqL[50]}}%

% basic pair of south arrows
\def\basicsbiar[#1]{\vbicase{\SBIAR}{#100}}%

% pair of south arrows
\newcommand{\sbiar}{\@ifnextchar[{\basicsbiar}{\basicsbiar[50]}}%

% basic pair of south arrows with names
\def\basicSbiar[#1]#2#3{\Vbicase{\SBIAR}{#2}{#3}{#100}}%

% pair of south arrows with names
\newcommand{\Sbiar}{\@ifnextchar[{\basicSbiar}{\basicSbiar[50]}}%
\let\sbiaR=\Sbiar

% basic pair of south distributors
\def\basicsbidist[#1]{\vbicase{\SBIDIST}{#100}}%

% pair of south distributors
\newcommand{\sbidist}{\@ifnextchar[{\basicsbidist}{\basicsbidist[50]}}%

% basic pair of south distributors with names
\def\basicSbidist[#1]#2#3%
{\Vbicase{\SBIDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}%

% pair of south distributors with names
\newcommand{\Sbidist}{\@ifnextchar[{\basicSbidist}{\basicSbidist[50]}}%
\let\sbidisT=\Sbidist

% basic pair of south adjoint arrows
\def\basicsadjar[#1]{\vbicase{\SADJAR}{#100}}%

% pair of south adjoint arrows
\newcommand{\sadjar}{\@ifnextchar[{\basicsadjar}{\basicsadjar[50]}}%

% basic pair of south adjoint arrows with names
\def\basicSadjar[#1]#2#3{\Vbicase{\SADJAR}{#2}{#3}{#100}}%

% pair of south adjoint arrows with names
\newcommand{\Sadjar}{\@ifnextchar[{\basicSadjar}{\basicSadjar[50]}}%
\let\sadjaR=\Sadjar

% basic pair of south adjoint distributors
\def\basicsadjdist[#1]{\vbicase{\SADJDIST}{#100}}%

% pair of south adjoint distributors
\newcommand{\sadjdist}{\@ifnextchar[{\basicsadjdist}{\basicsadjdist[50]}}%

% basic pair of south adjoint distributors with names
\def\basicSadjdist[#1]#2#3%
{\Vbicase{\SADJDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}%

% pair of south adjoint distributors with names
\newcommand{\Sadjdist}{\@ifnextchar[{\basicSadjdist}{\basicSadjdist[50]}}%
\let\sadjdisT=\Sadjdist


% NORTH ARROWS

% \NAR{n} draws a north arrow of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NAR}[1]%
{\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,0){\line(0,1){#1}}%
\put(0,#1){\nhead}%
\end{picture}}}\end{picture}}%

% \NDIST{n} draws a north distributor of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NDIST}[1]%
{\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,0){\line(0,1){#1}}%
\put(0,#1){\nhead}%
\end{picture}}}
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\end{picture}}%

% \NDOTAR{n} draws a north dotted arrow of length n units
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NDOTAR}[1]%
{\truex{100}\truey{300}%
\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\multiput(0,0)(0,\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(0,#1){\nhead}%
\end{picture}}}\end{picture}}%


% \NMONO{n} draws a north monomorphism of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NMONO}[1]%
{\truetail%
\monolength=#1%
\advance\monolength by -\truemonotail%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,\truemonotail){\line(0,1){\monolength}}%
\put(0,#1){\nhead}%
\put(0,\truemonotail){\nhead}%
\end{picture}}}\end{picture}}%

% \NEPI{n} draws a north epimorphism of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NEPI}[1]%
{\truehead%
\epilength=#1%
\advance\epilength by -\trueepihead%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,0){\line(0,1){\epilength}}%
\put(0,#1){\nhead}%
\put(0,\epilength){\nhead}%
\end{picture}}}\end{picture}}%

% \NBIMO{n} draws a north bimorphism of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NBIMO}[1]%
{\truehead\truetail%
\epilength=#1%
\advance\epilength by -\trueepihead%
\monolength=\epilength%
\advance\monolength by -\truemonotail%
\begin{picture}(0,0)%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(0,\truemonotail){\line(0,1){\monolength}}%
\put(0,#1){\nhead}%
\put(0,\truemonotail){\nhead}%
\put(0,\epilength){\nhead}%
\end{picture}}}\end{picture}}%

% \NBIAR{n} draws a pair of north arrows of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NBIAR}[1]%
{\begin{picture}(0,0)%
\truex{350}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(-\value{x},0){\line(0,1){#1}}%
\put(-\value{x},#1){\nhead}%
\put(\value{x},0){\line(0,1){#1}}%
\put(\value{x},#1){\nhead}%
\end{picture}}}\end{picture}}%

% \NBIDIST{n} draws a pair of north distributors of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NBIDIST}[1]%
{\begin{picture}(0,0)%
\truex{350}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(-\value{x},0){\line(0,1){#1}}%
\put(-\value{x},#1){\nhead}%
\put(\value{x},0){\line(0,1){#1}}%
\put(\value{x},#1){\nhead}%
\end{picture}}}
\truey{400}%
\put(-\value{x},0){\circle{\value{y}}}%
\put(\value{x},0){\circle{\value{y}}}%
\end{picture}}%

% \NADJAR{n} draws a pair of vertical adjoint arrows of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NADJAR}[1]{\begin{picture}(0,0)%
\truex{350}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(\value{x},#1){\line(0,-1){#1}}%
\put(\value{x},0){\shead}%
\put(-\value{x},0){\line(0,1){#1}}%
\put(-\value{x},#1){\nhead}%
\end{picture}}}\end{picture}}%

% \NADJDIST{n} draws a pair of vertical adjoint distributors of length n pt
% and centers it in a box of width 0pt and height 0pt
\newcommand{\NADJDIST}[1]{\begin{picture}(0,0)%
\truex{350}%
\put(0,0){\makebox(0,0)%
{\begin{picture}(0,#1)%
\put(\value{x},#1){\line(0,-1){#1}}%
\put(\value{x},0){\shead}%
\put(-\value{x},0){\line(0,1){#1}}%
\put(-\value{x},#1){\nhead}%
\end{picture}}}
\truey{400}%
\put(-\value{x},0){\circle{\value{y}}}%
\put(\value{x},0){\circle{\value{y}}}%
\end{picture}}%


% All the following commands produce north arrows

% basic north arrow
\def\basicnar[#1]{\vcase{\NAR}{#100}}%

% north arrow
\newcommand{\nar}{\@ifnextchar[{\basicnar}{\basicnar[50]}}%

% basic north arrow with left name
\def\basicNar[#1]#2{\Vcase{\NAR}{#2}{#100}}%

% north arrow with left name
\newcommand{\Nar}{\@ifnextchar[{\basicNar}{\basicNar[50]}}%

% basic north arrow with right name
\def\basicnaR[#1]#2{\vcasE{\NAR}{#2}{#100}}%

% north arrow with right name
\newcommand{\naR}{\@ifnextchar[{\basicnaR}{\basicnaR[50]}}%

% basic north distributor
\def\basicndist[#1]{\vcase{\NDIST}{#100}}%

% north distributor
\newcommand{\ndist}{\@ifnextchar[{\basicndist}{\basicndist[50]}}%

% basic north distributor with left name
\def\basicNdist[#1]#2{\Vcase{\NDIST}{#2\hspace*{2pt}}{#100}}%

% north distributor with left name
\newcommand{\Ndist}{\@ifnextchar[{\basicNdist}{\basicNdist[50]}}%

% basic north distributor with right name
\def\basicndisT[#1]#2{\vcasE{\NDIST}{\hspace*{2pt}#2}{#100}}%

% north distributor with right name
\newcommand{\ndisT}{\@ifnextchar[{\basicndisT}{\basicndisT[50]}}%

% basic north dotted arrow
\def\basicndotar[#1]{\vcase{\NDOTAR}{#100}}%

% north dotted arrow
\newcommand{\ndotar}{\@ifnextchar[{\basicndotar}{\basicndotar[50]}}%

% basic north dotted arrow with left name
\def\basicNdotar[#1]#2{\Vcase{\NDOTAR}{#2}{#100}}%

% north dotted arrow with left name
\newcommand{\Ndotar}{\@ifnextchar[{\basicNdotar}{\basicNdotar[50]}}%

% basic north dotted arrow with right name
\def\basicndotaR[#1]#2{\vcasE{\NDOTAR}{#2}{#100}}%

% north dotted arrow with right name
\newcommand{\ndotaR}{\@ifnextchar[{\basicndotaR}{\basicndotaR[50]}}%

% basic north monomorphism
\def\basicnmono[#1]{\vcase{\NMONO}{#100}}%

% north arrow
\newcommand{\nmono}{\@ifnextchar[{\basicnmono}%
{\basicnmono[50]}}%

% basic north monomorphism with left name
\def\basicNmono[#1]#2{\Vcase{\NMONO}{#2}{#100}}%

% north monomorphism with left name
\newcommand{\Nmono}{\@ifnextchar[{\basicNmono}{\basicNmono[50]}}%

% basic north monomorphism with right name
\def\basicnmonO[#1]#2{\vcasE{\NMONO}{#2}{#100}}%

% north monomorphism with right name
\newcommand{\nmonO}{\@ifnextchar[{\basicnmonO}{\basicnmonO[50]}}%

% basic north epimorphism
\def\basicnepi[#1]{\vcase{\NEPI}{#100}}%

% north epimorphism
\newcommand{\nepi}{\@ifnextchar[{\basicnepi}{\basicnepi[50]}}%

% basic north epimorphism with left name
\def\basicNepi[#1]#2{\Vcase{\NEPI}{#2}{#100}}%

% north epimorphism with left name
\newcommand{\Nepi}{\@ifnextchar[{\basicNepi}{\basicNepi[50]}}%

% basic north epimorphism with right name
\def\basicnepI[#1]#2{\vcasE{\NEPI}{#2}{#100}}%

% north epimorphism with right name
\newcommand{\nepI}{\@ifnextchar[{\basicnepI}{\basicnepI[50]}}%

% basic north bimorphism
\def\basicnbimo[#1]{\vcase{\NBIMO}{#100}}%

% north bimorphism
\newcommand{\nbimo}{\@ifnextchar[{\basicnbimo}{\basicnbimo[50]}}%

% basic north bimorphism with left name
\def\basicNbimo[#1]#2{\Vcase{\NBIMO}{#2}{#100}}%

% north bimorphism with left name
\newcommand{\Nbimo}{\@ifnextchar[{\basicNbimo}{\basicNbimo[50]}}%

% basic north bimorphism with right name
\def\basicnbimO[#1]#2{\vcasE{\NBIMO}{#2}{#100}}%

% north bimorphism with right name
\newcommand{\nbimO}{\@ifnextchar[{\basicnbimO}{\basicnbimO[50]}}%

% basic north isomorphism
\def\basicniso[#1]{\Visocase{\NAR}{\cong}{}{#100}}%

% north isomorphism
\newcommand{\niso}{\@ifnextchar[{\basicniso}{\basicniso[50]}}%

% basic north isomorphism with left name
\def\basicNiso[#1]#2{\Visocase{\NAR}{#2}{\cong}{#100}}%

% north isomorphism with left name
\newcommand{\Niso}{\@ifnextchar[{\basicNiso}{\basicNiso[50]}}%

% basic north isomorphism with right name
\def\basicnisO[#1]#2{\Visocase{\NAR}{\cong}{#2}{#100}}%

% north isomorphism with right name
\newcommand{\nisO}{\@ifnextchar[{\basicnisO}{\basicnisO[50]}}%

% north equality
\let\neql=\seql%

% north equality with left name
\let\Neql=\Seql%

% north equality with right name
\let\neqL=\seqL%

% basic pair of north arrows
\def\basicnbiar[#1]{\vbicase{\NBIAR}{#100}}%

% pair of north arrows
\newcommand{\nbiar}{\@ifnextchar[{\basicnbiar}{\basicnbiar[50]}}%

% basic pair of north arrows with names
\def\basicNbiar[#1]#2#3{\Vbicase{\NBIAR}{#2}{#3}{#100}}%

% pair of north arrows with names
\newcommand{\Nbiar}{\@ifnextchar[{\basicNbiar}{\basicNbiar[50]}}%
\let\nbiaR=\Nbiar

% basic pair of north distributors
\def\basicnbidist[#1]{\vbicase{\NBIDIST}{#100}}%

% pair of north distributors
\newcommand{\nbidist}{\@ifnextchar[{\basicnbidist}{\basicnbidist[50]}}%

% basic pair of north distributors with names
\def\basicNbidist[#1]#2#3%
{\Vbicase{\NBIDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}%

% pair of north distributors with names
\newcommand{\Nbidist}{\@ifnextchar[{\basicNbidist}{\basicNbidist[50]}}%
\let\nbidisT=\Nbidist

% basic pair of north adjoint arrows
\def\basicnadjar[#1]{\vbicase{\NADJAR}{#100}}%

% pair of north adjoint arrows
\newcommand{\nadjar}{\@ifnextchar[{\basicnadjar}{\basicnadjar[50]}}%

% basic pair of north adjoint arrows with names
\def\basicNadjar[#1]#2#3{\Vbicase{\NADJAR}{#2}{#3}{#100}}%

% pair of north adjoint arrows with names
\newcommand{\Nadjar}{\@ifnextchar[{\basicNadjar}{\basicNadjar[50]}}%
\let\nadjaR=\Nadjar

% basic pair of north adjoint distributors
\def\basicnadjdist[#1]{\vbicase{\NADJDIST}{#100}}%

% pair of north adjoint distributors
\newcommand{\nadjdist}{\@ifnextchar[{\basicnadjdist}{\basicnadjdist[50]}}%

% basic pair of north adjoint distributors with names
\def\basicNadjdist[#1]#2#3%
{\Vbicase{\NADJDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}%

% pair of north adjoint distributors with names
\newcommand{\Nadjdist}{\@ifnextchar[{\basicNadjdist}{\basicNadjdist[50]}}%
\let\nadjdisT=\Nadjdist



% MACROS FOR  FIRST DIAGONAL PICTURES


% \fdcase{P}{f}{g}{n} draws the picture P with names f, g
% and length n units
\newcommand{\fdcase}[4]{\testdiagrammode\begin{picture}(0,0)%
\put(0,0){#1{#4}}%
\truex{200}\truey{600}\truez{600}%
\put(-\value{x},-\value{x}){\makebox(0,\value{z})[r]{${#2}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#3}$}}%
\end{picture}}%

% \fdbicase{P}{f}{g}{n} draws the bipicture P with names f, g
% and length n units
\newcommand{\fdbicase}[4]{\testdiagrammode\begin{picture}(0,0)%
\put(0,0){#1{#4}}%
\truex{900}\truey{150}%
\put(-\value{x},\value{y}){${#2}$}%
\truex{300}\truey{1050}%
\put(\value{x},-\value{y}){${#3}$}%
\end{picture}}%


% NORTH-EAST ARROWS

% \NEAR{n} draws a north-east arrow of length nx100 units
\newcommand{\NEAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Y){\line(1,1){#1}}%
\put(\Y,\Y){\nehead}%
\end{picture}}%

% \NEDIST{n} draws a north-east distributor of length n units
\newcommand{\NEDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Y){\line(1,1){#1}}%
\put(\Y,\Y){\nehead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\end{picture}}%

% \NEDOTAR{n} draws a north-east dotted arrow of length n units
\newcommand{\NEDOTAR}[1]%
{\truex{100}\truey{212}%
\Y=#1%
\divide\Y by 2%
\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(-\Y,-\Y)(\value{y},\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(\Y,\Y){\nehead}%
\end{picture}}%

% \NEMONO{n} draws a north-east monomorphism of length n units
\newcommand{\NEMONO}[1]{%
\Y=#1%
\divide \Y by 2%
\Truetail%
\bimolength=#1%
\advance\bimolength by -\Truemonotail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\begin{picture}(0,0)%
\put(-\monolength,-\monolength){\line(1,1){\bimolength}}%
\put(-\monolength,-\monolength){\nehead}%
\put(\Y,\Y){\nehead}%
\end{picture}}%

% \NEEPI{n} draws a north-east epimorphism of length n units
\newcommand{\NEEPI}[1]{%
\Y=#1%
\divide\Y by 2%
\Truehead%
\bimolength=#1%
\advance\bimolength by -\Trueepihead%
\epilength=\bimolength%
\advance\epilength by -\Y%
\begin{picture}(0,0)%
\put(-\Y,-\Y){\line(1,1){\bimolength}}%
\put(\epilength,\epilength){\nehead}%
\put(\Y,\Y){\nehead}%
\end{picture}}%

% \NEBIMO{n} draws a north-east bimorphism of length n units
\newcommand{\NEBIMO}[1]{%
\Y=#1%
\divide\Y by 2%
\Truetail\Truehead%
\bimolength=#1%
\advance\bimolength by -\Truemonotail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\advance\bimolength by -\Trueepihead%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\begin{picture}(0,0)%
\put(-\monolength,-\monolength){\line(1,1){\bimolength}}%
\put(-\monolength,-\monolength){\nehead}%
\put(\epilength,\epilength){\nehead}%
\put(\Y,\Y){\nehead}%
\end{picture}}%

% \NEBIAR{n} draws a pair of north-east arrows of length n units
\newcommand{\NEBIAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\put(-\value{x},\value{x}){\line(1,1){#1}}%
\put(\value{x},-\value{x}){\line(1,1){#1}}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\monolength,\epilength){\nehead}%
\put(\epilength,\monolength){\nehead}%
\end{picture}}\end{picture}}%

% \NEBIDIST{n} draws a pair of north-east distributors of length n units
\newcommand{\NEBIDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\truey{400}%
\begin{picture}(0,0)%
\put(-\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},-\value{x}){\line(1,1){#1}}%
\put(\epilength,\monolength){\nehead}%
\end{picture}}%
\put(-\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by \value{x}%
\epilength=#1%
\advance\epilength by -\value{x}%
\put(-\value{x},\value{x}){\line(1,1){#1}}%
\put(\epilength,\monolength){\nehead}%
\end{picture}}%
\put(-\value{x},\value{x}){\circle{\value{y}}}%
\put(\value{x},-\value{x}){\circle{\value{y}}}%
\end{picture}}%

% \NEEQL{n} draws a north-east equality of length n units
\newcommand{\NEEQL}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Y){\begin{picture}(0,0)%
\truex{70}%
\put(-\value{x},\value{x}){\line(1,1){#1}}%
\put(\value{x},-\value{x}){\line(1,1){#1}}%
\end{picture}}\end{picture}}%

% \NEADJAR{n} draws a north-east pair of adjoint arrows of length n units
\newcommand{\NEADJAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},-\value{x}){\line(1,1){#1}}%
\put(\epilength,\monolength){\nehead}%
\end{picture}}%
\put(\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},\value{x}){\line(-1,-1){#1}}%
\put(-\epilength,-\monolength){\swhead}%
\end{picture}}\end{picture}}%

% \NEADJDIST{n} draws a north-east pair of adjoint distributors of length n units
\newcommand{\NEADJDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\truey{400}%
\begin{picture}(0,0)%
\put(-\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},-\value{x}){\line(1,1){#1}}%
\put(\epilength,\monolength){\nehead}%
\end{picture}}%
\put(\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},\value{x}){\line(-1,-1){#1}}%
\put(-\epilength,-\monolength){\swhead}%
\end{picture}}%
\put(-\value{x},\value{x}){\circle{\value{y}}}%
\put(\value{x},-\value{x}){\circle{\value{y}}}%
\end{picture}}%


% All the following commands draw north-east arrows

% north-east arrow of length nx100 units
\def\basicnear[#1]{\fdcase{\NEAR}{}{}{#100}}%

% north-east arrow
\newcommand{\near}{\@ifnextchar[{\basicnear}{\basicnear[59]}}%

% north-east arrow with upper name [1] and length nx100 units
\def\basicNear[#1]#2{\fdcase{\NEAR}{#2}{}{#100}}%

% north-east arrow with upper name
\newcommand{\Near}{\@ifnextchar[{\basicNear}{\basicNear[59]}}%

% north-east arrow with lower name [1]  and length nx100 units
\def\basicneaR[#1]#2{\fdcase{\NEAR}{}{#2}{#100}}%

% north-east arrow with lower name [1]
\newcommand{\neaR}{\@ifnextchar[{\basicneaR}{\basicneaR[59]}}%

% north-east distributor of length nx100 units
\def\basicnedist[#1]{\fdcase{\NEDIST}{}{}{#100}}%

% north-east distributor
\newcommand{\nedist}{\@ifnextchar[{\basicnedist}{\basicnedist[59]}}%

% north-east distributor with upper name [1] and length nx100 units
\def\basicNedist[#1]#2{\fdcase{\NEDIST}{#2}{}{#100}}%

% north-east distributor with upper name
\newcommand{\Nedist}{\@ifnextchar[{\basicNedist}{\basicNedist[59]}}%

% north-east distributor with lower name [1]  and length nx100 units
\def\basicnedisT[#1]#2{\fdcase{\NEDIST}{}{#2}{#100}}%

% north-east distributor with lower name [1]
\newcommand{\nedisT}{\@ifnextchar[{\basicnedisT}{\basicnedisT[59]}}%

% north-east dotted arrow of length nx100 units
\def\basicnedotar[#1]{\fdcase{\NEDOTAR}{}{}{#100}}%

% north-east dotted arrow
\newcommand{\nedotar}{\@ifnextchar[{\basicnedotar}{\basicnedotar[59]}}%

% north-east dotted arrow with upper name [1] and length nx100 units
\def\basicNedotar[#1]#2{\fdcase{\NEDOTAR}{#2}{}{#100}}%

% north-east dotted arrow with upper name
\newcommand{\Nedotar}{\@ifnextchar[{\basicNedotar}{\basicNedotar[59]}}%

% north-east dotted arrow with lower name [1]  and length nx100 units
\def\basicnedotaR[#1]#2{\fdcase{\NEDOTAR}{}{#2}{#100}}%

% north-east dotted arrow with lower name [1]
\newcommand{\nedotaR}{\@ifnextchar[{\basicnedotaR}{\basicnedotaR[59]}}%

% north-east monomorphism of length nx100 units
\def\basicnemono[#1]{\fdcase{\NEMONO}{}{}{#100}}%

% north-east monomorphism
\newcommand{\nemono}{\@ifnextchar[{\basicnemono}{\basicnemono[59]}}%

% north-east monomorphism with upper name [1] and length nx100 units
\def\basicNemono[#1]#2{\fdcase{\NEMONO}{#2}{}{#100}}%

% north-east monomophism with upper name
\newcommand{\Nemono}{\@ifnextchar[{\basicNemono}{\basicNemono[59]}}%

% north-east monomorphism with lower name [1]  and length nx100 units
\def\basicnemonO[#1]#2{\fdcase{\NEMONO}{}{#2}{#100}}%

% north-east monomorphism with lower name [1]
\newcommand{\nemonO}{\@ifnextchar[{\basicnemonO}{\basicnemonO[59]}}%

% north-east epimorphism of length nx100 units
\def\basicneepi[#1]{\fdcase{\NEEPI}{}{}{#100}}%

% north-east epimorphism
\newcommand{\neepi}{\@ifnextchar[{\basicneepi}{\basicneepi[59]}}%

% north-east epimorphism with upper name [1] and length nx100 units
\def\basicNeepi[#1]#2{\fdcase{\NEEPI}{#2}{}{#100}}%

% north-east epimorphism with upper name
\newcommand{\Neepi}{\@ifnextchar[{\basicNeepi}{\basicNeepi[59]}}%

% north-east epimorphism with lower name [1]  and length nx100 units
\def\basicneepI[#1]#2{\fdcase{\NEEPI}{}{#2}{#100}}%

% north-east epimorphism with lower name [1]
\newcommand{\neepI}{\@ifnextchar[{\basicneepI}{\basicneepI[59]}}%

% north-east bimorphism of length nx100 units
\def\basicnebimo[#1]{\fdcase{\NEBIMO}{}{}{#100}}%

% north-east bimorphism
\newcommand{\nebimo}{\@ifnextchar[{\basicnebimo}{\basicnebimo[59]}}%

% north-east bimorphism with upper name [1] and length nx100 units
\def\basicNebimo[#1]#2{\fdcase{\NEBIMO}{#2}{}{#100}}%

% north-east bimorphism with upper name
\newcommand{\Nebimo}{\@ifnextchar[{\basicNebimo}{\basicNebimo[59]}}%

% north-east bimorphism with lower name [1]  and length nx100 units
\def\basicnebimO[#1]#2{\fdcase{\NEBIMO}{}{#2}{#100}}%

% north-east bimorphism with lower name [1]
\newcommand{\nebimO}{\@ifnextchar[{\basicnebimO}{\basicnebimO[59]}}%

% north-east isomorphism of length nx100 units
\def\basicneiso[#1]{\fdcase{\NEAR}{\hspace{-2pt}\cong}{}{#100}}%

% north-east isomorphism
\newcommand{\neiso}{\@ifnextchar[{\basicneiso}{\basicneiso[59]}}%

% north-east isomorphism with upper name [1] and length nx100 units
\def\basicNeiso[#1]#2{\fdcase{\NEAR}{#2}{\cong}{#100}}%

% north-east isomorphism with upper name
\newcommand{\Neiso}{\@ifnextchar[{\basicNeiso}{\basicNeiso[59]}}%

% north-east isomorphism with lower name [1]  and length nx100 units
\def\basicneisO[#1]#2{\fdcase{\NEAR}{\hspace{-2pt}\cong}{#2}{#100}}%

% north-east isomorphism with lower name [1]
\newcommand{\neisO}{\@ifnextchar[{\basicneisO}{\basicneisO[59]}}%

% north-east equality of length nx100 units
\def\basicneeql[#1]{\fdcase{\NEEQL}{}{}{#100}}%

% north-east equality
\newcommand{\neeql}{\@ifnextchar[{\basicneeql}{\basicneeql[59]}}%

% north-east equality with upper name [1] and length nx100 units
\def\basicNeeql[#1]#2{\fdcase{\NEEQL}{#2}{}{#100}}%

% north-east equality with upper name
\newcommand{\Neeql}{\@ifnextchar[{\basicNeeql}{\basicNeeql[59]}}%

% north-east equality with lower name [1]  and length nx100 units
\def\basicneeqL[#1]#2{\fdcase{\NEEQL}{}{#2}{#100}}%

% north-east equality with lower name [1]
\newcommand{\neeqL}{\@ifnextchar[{\basicneeqL}{\basicneeqL[59]}}%

% pair of north-east arrows of length nx100 units
\def\basicnebiar[#1]{\fdbicase{\NEBIAR}{}{}{#100}}%

% pair of north-east arrows
\newcommand{\nebiar}{\@ifnextchar[{\basicnebiar}{\basicnebiar[59]}}%

% pair of north-east arrows with names [1][2] and length nx100 units
\def\basicNebiar[#1]#2#3{\fdbicase{\NEBIAR}{#2}{#3}{#100}}%

% pair of north-east arrows with names
\newcommand{\Nebiar}{\@ifnextchar[{\basicNebiar}{\basicNebiar[59]}}%
\let\nebiaR=\Nebiar

% pair of north-east adjoint arrows of length nx100 units
\def\basicneadjar[#1]{\fdbicase{\NEADJAR}{}{}{#100}}%

% pair of north-east adjoint arrows
\newcommand{\neadjar}{\@ifnextchar[{\basicneadjar}{\basicneadjar[59]}}%

% pair of north-east adjoint arrows with names [1][2] and length nx100 units
\def\basicNeadjar[#1]#2#3{\fdbicase{\NEADJAR}{#2}{#3}{#100}}%

% pair of north-east adjoint arrows with names
\newcommand{\Neadjar}{\@ifnextchar[{\basicNeadjar}{\basicNeadjar[59]}}%
\let\neadjaR=\Neadjar

% pair of north-east distributors of length nx100 units
\def\basicnebidist[#1]{\fdbicase{\NEBIDIST}{}{}{#100}}%

% pair of north-east distributors
\newcommand{\nebidist}{\@ifnextchar[{\basicnebidist}{\basicnebidist[59]}}%

% pair of north-east distributors with names [1][2] and length nx100 units
\def\basicNebidist[#1]#2#3{\fdbicase{\NEBIDIST}{#2}{#3}{#100}}%

% pair of north-east distributors with names
\newcommand{\Nebidist}{\@ifnextchar[{\basicNebidist}{\basicNebidist[59]}}%
\let\nebidisT=\Nebidist

% pair of north-east adjoint distributors of length nx100 units
\def\basicneadjdist[#1]{\fdbicase{\NEADJDIST}{}{}{#100}}%

% pair of north-east adjoint distributors
\newcommand{\neadjdist}{\@ifnextchar[{\basicneadjdist}{\basicneadjdist[59]}}%

% pair of north-east adjoint distributors with names [1][2] and length nx100 units
\def\basicNeadjdist[#1]#2#3{\fdbicase{\NEADJDIST}{#2}{#3}{#100}}%

% pair of north-east adjoint distributors with names
\newcommand{\Neadjdist}{\@ifnextchar[{\basicNeadjdist}{\basicNeadjdist[59]}}%
\let\neadjdisT=\Neadjdist



% SOUT-WEST ARROWS

% \SWAR{n} draws a south-west arrow of length nx100 units
\newcommand{\SWAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(\Y,\Y){\line(-1,-1){#1}}%
\put(-\Y,-\Y){\swhead}%
\end{picture}}%

% \SWDIST{n} draws a south-west distributor of length n units
\newcommand{\SWDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(\Y,\Y){\line(-1,-1){#1}}%
\put(-\Y,-\Y){\swhead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\end{picture}}%

% \SWDOTAR{n} draws a south-west dotted arrow of length n units
\newcommand{\SWDOTAR}[1]%
{\truex{100}\truey{212}%
\Y=#1%
\divide\Y by 2%
\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(\Y,\Y)(-\value{y},-\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(-\Y,-\Y){\swhead}%
\end{picture}}%

% \SWMONO{n} draws a south-west monomorphism of length n units
\newcommand{\SWMONO}[1]{%
\Y=#1%
\divide \Y by 2%
\Truetail%
\bimolength=#1%
\advance\bimolength by -\Truemonotail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\begin{picture}(0,0)%
\put(\monolength,\monolength){\line(-1,-1){\bimolength}}%
\put(\monolength,\monolength){\swhead}%
\put(-\Y,-\Y){\swhead}%
\end{picture}}%

% \SWEPI{n} draws a south-west epimorphism of length n units
\newcommand{\SWEPI}[1]{%
\Y=#1%
\divide\Y by 2%
\Truehead%
\bimolength=#1%
\advance\bimolength by -\Trueepihead%
\epilength=\bimolength%
\advance\epilength by -\Y%
\begin{picture}(0,0)%
\put(\Y,\Y){\line(-1,-1){\bimolength}}%
\put(-\epilength,-\epilength){\swhead}%
\put(-\Y,-\Y){\swhead}%
\end{picture}}%

% \SWBIMO{n} draws a south-west bimorphism of length n units
\newcommand{\SWBIMO}[1]{%
\Y=#1%
\divide\Y by 2%
\Truetail\Truehead%
\bimolength=#1%
\advance\bimolength by -\Truemonotail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\advance\bimolength by -\Trueepihead%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\begin{picture}(0,0)%
\put(\monolength,\monolength){\line(-1,-1){\bimolength}}%
\put(\monolength,\monolength){\swhead}%
\put(-\epilength,-\epilength){\swhead}%
\put(-\Y,-\Y){\swhead}%
\end{picture}}%

% \SWBIAR{n} draws a pair of south-west arrows of length n units
\newcommand{\SWBIAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\put(\value{x},-\value{x}){\line(-1,-1){#1}}%
\put(-\value{x},\value{x}){\line(-1,-1){#1}}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\monolength,-\epilength){\swhead}%
\put(-\epilength,-\monolength){\swhead}%
\end{picture}}\end{picture}}%

% \SWBIDIST{n} draws a pair of south-west distributors of length n units
\newcommand{\SWBIDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\truey{400}%
\begin{picture}(0,0)%
\put(\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},\value{x}){\line(-1,-1){#1}}%
\put(-\epilength,-\monolength){\swhead}%
\end{picture}}%
\put(\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by \value{x}%
\epilength=#1%
\advance\epilength by -\value{x}%
\put(\value{x},-\value{x}){\line(-1,-1){#1}}%
\put(-\epilength,-\monolength){\swhead}%
\end{picture}}%
\put(\value{x},-\value{x}){\circle{\value{y}}}%
\put(-\value{x},\value{x}){\circle{\value{y}}}%
\end{picture}}%

% \SWADJAR{n} draws a south-west pair of adjoint arrows of length n units
\newcommand{\SWADJAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},-\value{x}){\line(-1,-1){#1}}%
\put(-\monolength,-\epilength){\swhead}%
\end{picture}}%
\put(-\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},\value{x}){\line(1,1){#1}}%
\put(\monolength,\epilength){\nehead}%
\end{picture}}\end{picture}}%

% \SWADJDIST{n} draws a south-west pair of adjoint distributors of length n units
\newcommand{\SWADJDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\truey{400}%
\begin{picture}(0,0)%
\put(\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},-\value{x}){\line(-1,-1){#1}}%
\put(-\monolength,-\epilength){\swhead}%
\end{picture}}%
\put(-\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},\value{x}){\line(1,1){#1}}%
\put(\monolength,\epilength){\nehead}%
\end{picture}}%
\put(-\value{x},\value{x}){\circle{\value{y}}}%
\put(\value{x},-\value{x}){\circle{\value{y}}}%
\end{picture}}%


% All the following commands draw south-west arrows

% south-west arrow of length nx100 units
\def\basicswar[#1]{\fdcase{\SWAR}{}{}{#100}}%

% south-west arrow
\newcommand{\swar}{\@ifnextchar[{\basicswar}{\basicswar[59]}}%

% south-west arrow with upper name [1] and length nx100 units
\def\basicSwar[#1]#2{\fdcase{\SWAR}{#2}{}{#100}}%

% south-west arrow with upper name
\newcommand{\Swar}{\@ifnextchar[{\basicSwar}{\basicSwar[59]}}%

% south-west arrow with lower name [1]  and length nx100 units
\def\basicswaR[#1]#2{\fdcase{\SWAR}{}{#2}{#100}}%

% south-west arrow with lower name [1]
\newcommand{\swaR}{\@ifnextchar[{\basicswaR}{\basicswaR[59]}}%

% south-west distributor of length nx100 units
\def\basicswdist[#1]{\fdcase{\SWDIST}{}{}{#100}}%

% south-west distributor
\newcommand{\swdist}{\@ifnextchar[{\basicswdist}{\basicswdist[59]}}%

% south-west distributor with upper name [1] and length nx100 units
\def\basicSwdist[#1]#2{\fdcase{\SWDIST}{#2}{}{#100}}%

% south-west distributor with upper name
\newcommand{\Swdist}{\@ifnextchar[{\basicSwdist}{\basicSwdist[59]}}%

% south-west distributor with lower name [1]  and length nx100 units
\def\basicswdisT[#1]#2{\fdcase{\SWDIST}{}{#2}{#100}}%

% south-west distributor with lower name [1]
\newcommand{\swdisT}{\@ifnextchar[{\basicswdisT}{\basicswdisT[59]}}%

% south-west dotted arrow of length nx100 units
\def\basicswdotar[#1]{\fdcase{\SWDOTAR}{}{}{#100}}%

% south-west dotted arrow
\newcommand{\swdotar}{\@ifnextchar[{\basicswdotar}{\basicswdotar[59]}}%

% south-west dotted arrow with upper name [1] and length nx100 units
\def\basicSwdotar[#1]#2{\fdcase{\SWDOTAR}{#2}{}{#100}}%

% south-west dotted arrow with upper name
\newcommand{\Swdotar}{\@ifnextchar[{\basicSwdotar}{\basicSwdotar[59]}}%

% south-west dotted arrow with lower name [1]  and length nx100 units
\def\basicswdotaR[#1]#2{\fdcase{\SWDOTAR}{}{#2}{#100}}%

% south-west dotted arrow with lower name [1]
\newcommand{\swdotaR}{\@ifnextchar[{\basicswdotaR}{\basicswdotaR[59]}}%

% south-west monomorphism of length nx100 units
\def\basicswmono[#1]{\fdcase{\SWMONO}{}{}{#100}}%

% south-west monomorphism
\newcommand{\swmono}{\@ifnextchar[{\basicswmono}{\basicswmono[59]}}%

% south-west monomorphism with upper name [1] and length nx100 units
\def\basicSwmono[#1]#2{\fdcase{\SWMONO}{#2}{}{#100}}%

% south-west monomophism with upper name
\newcommand{\Swmono}{\@ifnextchar[{\basicSwmono}{\basicSwmono[59]}}%

% south-west monomorphism with lower name [1]  and length nx100 units
\def\basicswmonO[#1]#2{\fdcase{\SWMONO}{}{#2}{#100}}%

% south-west monomorphism with lower name [1]
\newcommand{\swmonO}{\@ifnextchar[{\basicswmonO}{\basicswmonO[59]}}%

% south-west epimorphism of length nx100 units
\def\basicswepi[#1]{\fdcase{\SWEPI}{}{}{#100}}%

% south-west epimorphism
\newcommand{\swepi}{\@ifnextchar[{\basicswepi}{\basicswepi[59]}}%

% south-west epimorphism with upper name [1] and length nx100 units
\def\basicSwepi[#1]#2{\fdcase{\SWEPI}{#2}{}{#100}}%

% south-west epimorphism with upper name
\newcommand{\Swepi}{\@ifnextchar[{\basicSwepi}{\basicSwepi[59]}}%

% south-west epimorphism with lower name [1]  and length nx100 units
\def\basicswepI[#1]#2{\fdcase{\SWEPI}{}{#2}{#100}}%

% south-west epimorphism with lower name [1]
\newcommand{\swepI}{\@ifnextchar[{\basicswepI}{\basicswepI[59]}}%

% south-west bimorphism of length nx100 units
\def\basicswbimo[#1]{\fdcase{\SWBIMO}{}{}{#100}}%

% south-west bimorphism
\newcommand{\swbimo}{\@ifnextchar[{\basicswbimo}{\basicswbimo[59]}}%

% south-west bimorphism with upper name [1] and length nx100 units
\def\basicSwbimo[#1]#2{\fdcase{\SWBIMO}{#2}{}{#100}}%

% south-west bimorphism with upper name
\newcommand{\Swbimo}{\@ifnextchar[{\basicSwbimo}{\basicSwbimo[59]}}%

% south-west bimorphism with lower name [1]  and length nx100 units
\def\basicswbimO[#1]#2{\fdcase{\SWBIMO}{}{#2}{#100}}%

% south-west bimorphism with lower name [1]
\newcommand{\swbimO}{\@ifnextchar[{\basicswbimO}{\basicswbimO[59]}}%

% south-west isomorphism of length nx100 units
\def\basicswiso[#1]{\fdcase{\SWAR}{\hspace{-2pt}\cong}{}{#100}}%

% south-west isomorphism
\newcommand{\swiso}{\@ifnextchar[{\basicswiso}{\basicswiso[59]}}%

% south-west isomorphism with upper name [1] and length nx100 units
\def\basicSwiso[#1]#2{\fdcase{\SWAR}{#2}{\cong}{#100}}%

% south-west isomorphism with upper name
\newcommand{\Swiso}{\@ifnextchar[{\basicSwiso}{\basicSwiso[59]}}%

% south-west isomorphism with lower name [1]  and length nx100 units
\def\basicswisO[#1]#2{\fdcase{\SWAR}{\hspace{-2pt}\cong}{#2}{#100}}%

% south-west isomorphism with lower name [1]
\newcommand{\swisO}{\@ifnextchar[{\basicswisO}{\basicswisO[59]}}%

% south-west equality
\let\sweql\neeql%

% south-west equality with upper name [1]
\let\Sweql=\Neeql%

% south-west equality with lower name [1]
\let\sweqL=\neeqL%

% pair of south-west arrows of length nx100 units
\def\basicswbiar[#1]{\fdbicase{\SWBIAR}{}{}{#100}}%

% pair of south-west arrows
\newcommand{\swbiar}{\@ifnextchar[{\basicswbiar}{\basicswbiar[59]}}%

% pair of south-west arrows with names [1][2] and length nx100 units
\def\basicSwbiar[#1]#2#3{\fdbicase{\SWBIAR}{#2}{#3}{#100}}%

% pair of south-west arrows with names
\newcommand{\Swbiar}{\@ifnextchar[{\basicSwbiar}{\basicSwbiar[59]}}%
\let\swbiaR=\Swbiar

% pair of south-west adjoint arrows of length nx100 units
\def\basicswadjar[#1]{\fdbicase{\SWADJAR}{}{}{#100}}%

% pair of south-west adjoint arrows
\newcommand{\swadjar}{\@ifnextchar[{\basicswadjar}{\basicswadjar[59]}}%

% pair of south-west adjoint arrows with names [1][2] and length nx100 units
\def\basicSwadjar[#1]#2#3{\fdbicase{\SWADJAR}{#2}{#3}{#100}}%

% pair of south-west adjoint arrows with names
\newcommand{\Swadjar}{\@ifnextchar[{\basicSwadjar}{\basicSwadjar[59]}}%
\let\swadjaR=\Swadjar

% pair of south-west distributors of length nx100 units
\def\basicswbidist[#1]{\fdbicase{\SWBIDIST}{}{}{#100}}%

% pair of south-west distributors
\newcommand{\swbidist}{\@ifnextchar[{\basicswbidist}{\basicswbidist[59]}}%

% pair of south-west distributors with names [1][2] and length nx100 units
\def\basicSwbidist[#1]#2#3{\fdbicase{\SWBIDIST}{#2}{#3}{#100}}%

% pair of south-west distributors with names
\newcommand{\Swbidist}{\@ifnextchar[{\basicSwbidist}{\basicSwbidist[59]}}%
\let\swbidisT=\Swbidist

% pair of south-west adjoint distributors of length nx100 units
\def\basicswadjdist[#1]{\fdbicase{\SWADJDIST}{}{}{#100}}%

% pair of south-west adjoint distributors
\newcommand{\swadjdist}{\@ifnextchar[{\basicswadjdist}{\basicswadjdist[59]}}%

% pair of south-west adjoint distributors with names [1][2] and length nx100 units
\def\basicSwadjdist[#1]#2#3{\fdbicase{\SWADJDIST}{#2}{#3}{#100}}%

% pair of south-west adjoint distributors with names
\newcommand{\Swadjdist}{\@ifnextchar[{\basicSwadjdist}{\basicSwadjdist[59]}}%
\let\swadjdisT=\Swadjdist



% MACROS FOR  SECOND DIAGONAL PICTURES

% \sdcase{P}{f}{g}{n} draws the picture P with names f, g
% and length n units
\newcommand{\sdcase}[4]{\testdiagrammode\begin{picture}(0,0)%
\put(0,0){#1{#4}}%
\truex{100}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#2}$}}%
\truex{300}\truey{800}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#3}$}}%
\end{picture}}%

% \sdbicase{P}{f}{g}{n} draws the bipicture P with names f, g
% and length n units
\newcommand{\sdbicase}[4]{\testdiagrammode\begin{picture}(0,0)%
\put(0,0){#1{#4}}%
\truex{350}\truey{600}\truez{950}%
\put(\value{x},\value{x}){\makebox(0,\value{y})[l]{${#2}$}}%
\truex{450}\truey{600}\truez{1050}%
\put(-\value{x},-\value{z}){\makebox(0,\value{y})[r]{${#3}$}}%
\end{picture}}%


% SOUTH-EAST ARROWS

% \SEAR{n} draws a south-east arrow of length nx100 units
\newcommand{\SEAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,\Y){\line(1,-1){#1}}%
\put(\Y,-\Y){\sehead}%
\end{picture}}%

% \SEDIST{n} draws a south-east distributor of length n units
\newcommand{\SEDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,\Y){\line(1,-1){#1}}%
\put(\Y,-\Y){\sehead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\end{picture}}%

% \SEDOTAR{n} draws a south-east dotted arrow of length n units
\newcommand{\SEDOTAR}[1]%
{\truex{100}\truey{212}%
\Y=#1%
\divide\Y by 2%
\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(-\Y,\Y)(\value{y},-\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(\Y,-\Y){\sehead}%
\end{picture}}%

% \SEMONO{n} draws a south-east monomorphism of length n units
\newcommand{\SEMONO}[1]{%
\Y=#1%
\divide \Y by 2%
\Truetail%
\bimolength=#1%
\advance\bimolength by -\Truemonotail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\begin{picture}(0,0)%
\put(-\monolength,\monolength){\line(1,-1){\bimolength}}%
\put(-\monolength,\monolength){\sehead}%
\put(\Y,-\Y){\sehead}%
\end{picture}}%

% \SEEPI{n} draws a south-east epimorphism of length n units
\newcommand{\SEEPI}[1]{%
\Y=#1%
\divide\Y by 2%
\Truehead%
\bimolength=#1%
\advance\bimolength by -\Trueepihead%
\epilength=\bimolength%
\advance\epilength by -\Y%
\begin{picture}(0,0)%
\put(-\Y,\Y){\line(1,-1){\bimolength}}%
\put(\epilength,-\epilength){\sehead}%
\put(\Y,-\Y){\sehead}%
\end{picture}}%

% \SEBIMO{n} draws a south-east bimorphism of length n units
\newcommand{\SEBIMO}[1]{%
\Y=#1%
\divide\Y by 2%
\Truetail\Truehead%
\bimolength=#1%
\advance\bimolength by -\Truemonotail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\advance\bimolength by -\Trueepihead%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\begin{picture}(0,0)%
\put(-\monolength,\monolength){\line(1,-1){\bimolength}}%
\put(-\monolength,\monolength){\sehead}%
\put(\epilength,-\epilength){\sehead}%
\put(\Y,-\Y){\sehead}%
\end{picture}}%

% \SEBIAR{n} draws a pair of south-east arrows of length n units
\newcommand{\SEBIAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\put(-\value{x},-\value{x}){\line(1,-1){#1}}%
\put(\value{x},\value{x}){\line(1,-1){#1}}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\monolength,-\epilength){\sehead}%
\put(\epilength,-\monolength){\sehead}%
\end{picture}}\end{picture}}%

% \SEBIDIST{n} draws a pair of south-east distributors of length n units
\newcommand{\SEBIDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\truey{400}%
\begin{picture}(0,0)%
\put(-\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},\value{x}){\line(1,-1){#1}}%
\put(\epilength,-\monolength){\sehead}%
\end{picture}}%
\put(-\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by \value{x}%
\epilength=#1%
\advance\epilength by -\value{x}%
\put(-\value{x},-\value{x}){\line(1,-1){#1}}%
\put(\epilength,-\monolength){\sehead}%
\end{picture}}%
\put(-\value{x},-\value{x}){\circle{\value{y}}}%
\put(\value{x},\value{x}){\circle{\value{y}}}%
\end{picture}}%

% \SEEQL{n} draws a south-east equality of length n units
\newcommand{\SEEQL}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,\Y){\begin{picture}(0,0)%
\truex{70}%
\put(-\value{x},-\value{x}){\line(1,-1){#1}}%
\put(\value{x},\value{x}){\line(1,-1){#1}}%
\end{picture}}\end{picture}}%

% \SEADJAR{n} draws a south-east pair of adjoint arrows of length n units
\newcommand{\SEADJAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(-\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},-\value{x}){\line(1,-1){#1}}%
\put(\monolength,-\epilength){\sehead}%
\end{picture}}%
\put(\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},\value{x}){\line(-1,1){#1}}%
\put(-\monolength,\epilength){\nwhead}%
\end{picture}}\end{picture}}%

% \SEADJDIST{n} draws a south-east pair of adjoint distributors of length n units
\newcommand{\SEADJDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\truey{400}%
\begin{picture}(0,0)%
\put(-\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},-\value{x}){\line(1,-1){#1}}%
\put(\monolength,-\epilength){\sehead}%
\end{picture}}%
\put(\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},\value{x}){\line(-1,1){#1}}%
\put(-\monolength,\epilength){\nwhead}%
\end{picture}}%
\put(-\value{x},-\value{x}){\circle{\value{y}}}%
\put(\value{x},\value{x}){\circle{\value{y}}}%
\end{picture}}%


% All the following commands draw south-east arrows

% south-east arrow of length nx100 units
\def\basicsear[#1]{\sdcase{\SEAR}{}{}{#100}}%

% south-east arrow
\newcommand{\sear}{\@ifnextchar[{\basicsear}{\basicsear[59]}}%

% south-east arrow with upper name [1] and length nx100 units
\def\basicSear[#1]#2{\sdcase{\SEAR}{#2}{}{#100}}%

% south-east arrow with upper name
\newcommand{\Sear}{\@ifnextchar[{\basicSear}{\basicSear[59]}}%

% south-east arrow with lower name [1]  and length nx100 units
\def\basicseaR[#1]#2{\sdcase{\SEAR}{}{#2}{#100}}%

% south-east arrow with lower name [1]
\newcommand{\seaR}{\@ifnextchar[{\basicseaR}{\basicseaR[59]}}%

% south-east distributor of length nx100 units
\def\basicsedist[#1]{\sdcase{\SEDIST}{}{}{#100}}%

% south-east distributor
\newcommand{\sedist}{\@ifnextchar[{\basicsedist}{\basicsedist[59]}}%

% south-east distributor with upper name [1] and length nx100 units
\def\basicSedist[#1]#2{\sdcase{\SEDIST}{#2}{}{#100}}%

% south-east distributor with upper name
\newcommand{\Sedist}{\@ifnextchar[{\basicSedist}{\basicSedist[59]}}%

% south-east distributor with lower name [1]  and length nx100 units
\def\basicsedisT[#1]#2{\sdcase{\SEDIST}{}{#2}{#100}}%

% south-east distributor with lower name [1]
\newcommand{\sedisT}{\@ifnextchar[{\basicsedisT}{\basicsedisT[59]}}%

% south-east dotted arrow of length nx100 units
\def\basicsedotar[#1]{\sdcase{\SEDOTAR}{}{}{#100}}%

% south-east dotted arrow
\newcommand{\sedotar}{\@ifnextchar[{\basicsedotar}{\basicsedotar[59]}}%

% south-east dotted arrow with upper name [1] and length nx100 units
\def\basicSedotar[#1]#2{\sdcase{\SEDOTAR}{#2}{}{#100}}%

% south-east dotted arrow with upper name
\newcommand{\Sedotar}{\@ifnextchar[{\basicSedotar}{\basicSedotar[59]}}%

% south-east dotted arrow with lower name [1]  and length nx100 units
\def\basicsedotaR[#1]#2{\sdcase{\SEDOTAR}{}{#2}{#100}}%

% south-east dotted arrow with lower name [1]
\newcommand{\sedotaR}{\@ifnextchar[{\basicsedotaR}{\basicsedotaR[59]}}%

% south-east monomorphism of length nx100 units
\def\basicsemono[#1]{\sdcase{\SEMONO}{}{}{#100}}%

% south-east monomorphism
\newcommand{\semono}{\@ifnextchar[{\basicsemono}{\basicsemono[59]}}%

% south-east monomorphism with upper name [1] and length nx100 units
\def\basicSemono[#1]#2{\sdcase{\SEMONO}{#2}{}{#100}}%

% south-east monomophism with upper name
\newcommand{\Semono}{\@ifnextchar[{\basicSemono}{\basicSemono[59]}}%

% south-east monomorphism with lower name [1]  and length nx100 units
\def\basicsemonO[#1]#2{\sdcase{\SEMONO}{}{#2}{#100}}%

% south-east monomorphism with lower name [1]
\newcommand{\semonO}{\@ifnextchar[{\basicsemonO}{\basicsemonO[59]}}%

% south-east epimorphism of length nx100 units
\def\basicseepi[#1]{\sdcase{\SEEPI}{}{}{#100}}%

% south-east epimorphism
\newcommand{\seepi}{\@ifnextchar[{\basicseepi}{\basicseepi[59]}}%

% south-east epimorphism with upper name [1] and length nx100 units
\def\basicSeepi[#1]#2{\sdcase{\SEEPI}{#2}{}{#100}}%

% south-east epimorphism with upper name
\newcommand{\Seepi}{\@ifnextchar[{\basicSeepi}{\basicSeepi[59]}}%

% south-east epimorphism with lower name [1]  and length nx100 units
\def\basicseepI[#1]#2{\sdcase{\SEEPI}{}{#2}{#100}}%

% south-east epimorphism with lower name [1]
\newcommand{\seepI}{\@ifnextchar[{\basicseepI}{\basicseepI[59]}}%

% south-east bimorphism of length nx100 units
\def\basicsebimo[#1]{\sdcase{\SEBIMO}{}{}{#100}}%

% south-east bimorphism
\newcommand{\sebimo}{\@ifnextchar[{\basicsebimo}{\basicsebimo[59]}}%

% south-east bimorphism with upper name [1] and length nx100 units
\def\basicSebimo[#1]#2{\sdcase{\SEBIMO}{#2}{}{#100}}%

% south-east bimorphism with upper name
\newcommand{\Sebimo}{\@ifnextchar[{\basicSebimo}{\basicSebimo[59]}}%

% south-east bimorphism with lower name [1]  and length nx100 units
\def\basicsebimO[#1]#2{\sdcase{\SEBIMO}{}{#2}{#100}}%

% south-east bimorphism with lower name [1]
\newcommand{\sebimO}{\@ifnextchar[{\basicsebimO}{\basicsebimO[59]}}%

% south-east isomorphism of length nx100 units
\def\basicseiso[#1]{\sdcase{\SEAR}{\hspace{-2pt}\cong}{}{#100}}%

% south-east isomorphism
\newcommand{\seiso}{\@ifnextchar[{\basicseiso}{\basicseiso[59]}}%

% south-east isomorphism with upper name [1] and length nx100 units
\def\basicSeiso[#1]#2{\sdcase{\SEAR}{#2}{\cong}{#100}}%

% south-east isomorphism with upper name
\newcommand{\Seiso}{\@ifnextchar[{\basicSeiso}{\basicSeiso[59]}}%

% south-east isomorphism with lower name [1]  and length nx100 units
\def\basicseisO[#1]#2{\sdcase{\SEAR}{\hspace{-2pt}\cong}{#2}{#100}}%

% south-east isomorphism with lower name [1]
\newcommand{\seisO}{\@ifnextchar[{\basicseisO}{\basicseisO[59]}}%

% south-east equality of length nx100 units
\def\basicseeql[#1]{\sdcase{\SEEQL}{}{}{#100}}%

% south-east equality
\newcommand{\seeql}{\@ifnextchar[{\basicseeql}{\basicseeql[59]}}%

% south-east equality with upper name [1] and length nx100 units
\def\basicSeeql[#1]#2{\sdcase{\SEEQL}{#2}{}{#100}}%

% south-east equality with upper name
\newcommand{\Seeql}{\@ifnextchar[{\basicSeeql}{\basicSeeql[59]}}%

% south-east equality with lower name [1]  and length nx100 units
\def\basicseeqL[#1]#2{\sdcase{\SEEQL}{}{#2}{#100}}%

% south-east equality with lower name [1]
\newcommand{\seeqL}{\@ifnextchar[{\basicseeqL}{\basicseeqL[59]}}%

% pair of south-east arrows of length nx100 units
\def\basicsebiar[#1]{\sdbicase{\SEBIAR}{}{}{#100}}%

% pair of south-east arrows
\newcommand{\sebiar}{\@ifnextchar[{\basicsebiar}{\basicsebiar[59]}}%

% pair of south-east arrows with names [1][2] and length nx100 units
\def\basicSebiar[#1]#2#3{\sdbicase{\SEBIAR}{#2}{#3}{#100}}%

% pair of south-east arrows with names
\newcommand{\Sebiar}{\@ifnextchar[{\basicSebiar}{\basicSebiar[59]}}%
\let\sebiaR=\Sebiar

% pair of south-east adjoint arrows of length nx100 units
\def\basicseadjar[#1]{\sdbicase{\SEADJAR}{}{}{#100}}%

% pair of south-east adjoint arrows
\newcommand{\seadjar}{\@ifnextchar[{\basicseadjar}{\basicseadjar[59]}}%

% pair of south-east adjoint arrows with names [1][2] and length nx100 units
\def\basicSeadjar[#1]#2#3{\sdbicase{\SEADJAR}{#2}{#3}{#100}}%

% pair of south-east adjoint arrows with names
\newcommand{\Seadjar}{\@ifnextchar[{\basicSeadjar}{\basicSeadjar[59]}}%
\let\seadjaR=\Seadjar

% pair of south-east distributors of length nx100 units
\def\basicsebidist[#1]{\sdbicase{\SEBIDIST}{}{}{#100}}%

% pair of south-east distributors
\newcommand{\sebidist}{\@ifnextchar[{\basicsebidist}{\basicsebidist[59]}}%

% pair of south-east distributors with names [1][2] and length nx100 units
\def\basicSebidist[#1]#2#3{\sdbicase{\SEBIDIST}{#2}{#3}{#100}}%

% pair of south-east distributors with names
\newcommand{\Sebidist}{\@ifnextchar[{\basicSebidist}{\basicSebidist[59]}}%
\let\sebidisT=\Sebidist

% pair of south-east adjoint distributors of length nx100 units
\def\basicseadjdist[#1]{\sdbicase{\SEADJDIST}{}{}{#100}}%

% pair of south-east adjoint distributors
\newcommand{\seadjdist}{\@ifnextchar[{\basicseadjdist}{\basicseadjdist[59]}}%

% pair of south-east adjoint distributors with names [1][2] and length nx100 units
\def\basicSeadjdist[#1]#2#3{\sdbicase{\SEADJDIST}{#2}{#3}{#100}}%

% pair of south-east adjoint distributors with names
\newcommand{\Seadjdist}{\@ifnextchar[{\basicSeadjdist}{\basicSeadjdist[59]}}%
\let\seadjdisT=\Seadjdist


% NORTH-WEST ARROWS

% \NWAR{n} draws a north-west arrow of length nx100 units
\newcommand{\NWAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(\Y,-\Y){\line(-1,1){#1}}%
\put(-\Y,\Y){\nwhead}%
\end{picture}}%

% \NWDIST{n} draws a north-west distributor of length n units
\newcommand{\NWDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(\Y,-\Y){\line(-1,1){#1}}%
\put(-\Y,\Y){\nwhead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\end{picture}}%

% \NWDOTAR{n} draws a north-west dotted arrow of length n units
\newcommand{\NWDOTAR}[1]%
{\truex{100}\truey{212}%
\Y=#1%
\divide\Y by 2%
\NUMBEROFDOTS=#1%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(\Y,-\Y)(-\value{y},\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(-\Y,\Y){\nwhead}%
\end{picture}}%

% \NWMONO{n} draws a north-west monomorphism of length n units
\newcommand{\NWMONO}[1]{%
\Y=#1%
\divide \Y by 2%
\Truetail%
\bimolength=#1%
\advance\bimolength by -\Truemonotail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\begin{picture}(0,0)%
\put(\monolength,-\monolength){\line(-1,1){\bimolength}}%
\put(\monolength,-\monolength){\nwhead}%
\put(-\Y,\Y){\nwhead}%
\end{picture}}%

% \NWEPI{n} draws a north-west epimorphism of length n units
\newcommand{\NWEPI}[1]{%
\Y=#1%
\divide\Y by 2%
\Truehead%
\bimolength=#1%
\advance\bimolength by -\Trueepihead%
\epilength=\bimolength%
\advance\epilength by -\Y%
\begin{picture}(0,0)%
\put(\Y,-\Y){\line(-1,1){\bimolength}}%
\put(-\epilength,\epilength){\nwhead}%
\put(-\Y,\Y){\nwhead}%
\end{picture}}%

% \NWBIMO{n} draws a north-west bimorphism of length n units
\newcommand{\NWBIMO}[1]{%
\Y=#1%
\divide\Y by 2%
\Truetail\Truehead%
\bimolength=#1%
\advance\bimolength by -\Truemonotail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\advance\bimolength by -\Trueepihead%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\begin{picture}(0,0)%
\put(\monolength,-\monolength){\line(-1,1){\bimolength}}%
\put(\monolength,-\monolength){\nwhead}%
\put(-\epilength,\epilength){\nwhead}%
\put(-\Y,\Y){\nwhead}%
\end{picture}}%

% \NWBIAR{n} draws a pair of north-west arrows of length n units
\newcommand{\NWBIAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\put(-\value{x},-\value{x}){\line(-1,1){#1}}%
\put(\value{x},\value{x}){\line(-1,1){#1}}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\monolength,\epilength){\nwhead}%
\put(-\epilength,\monolength){\nwhead}%
\end{picture}}\end{picture}}%

% \NWBIDIST{n} draws a pair of north-west distributors of length n units
\newcommand{\NWBIDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\truey{400}%
\begin{picture}(0,0)%
\put(\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},-\value{x}){\line(-1,1){#1}}%
\put(-\epilength,\monolength){\nwhead}%
\end{picture}}%
\put(\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by \value{x}%
\epilength=#1%
\advance\epilength by -\value{x}%
\put(\value{x},\value{x}){\line(-1,1){#1}}%
\put(-\epilength,\monolength){\nwhead}%
\end{picture}}%
\put(-\value{x},-\value{x}){\circle{\value{y}}}%
\put(\value{x},\value{x}){\circle{\value{y}}}%
\end{picture}}%

% \NWADJAR{n} draws a north-west pair of adjoint arrows of length n units
\newcommand{\NWADJAR}[1]{%
\Y=#1%
\divide\Y by 2%
\begin{picture}(0,0)%
\put(\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},-\value{x}){\line(-1,1){#1}}%
\put(-\epilength,\monolength){\nwhead}%
\end{picture}}%
\put(-\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},\value{x}){\line(1,-1){#1}}%
\put(\epilength,-\monolength){\sehead}%
\end{picture}}\end{picture}}%

% \NWADJDIST{n} draws a north-west pair of adjoint distributors of length n units
\newcommand{\NWADJDIST}[1]{%
\Y=#1%
\divide\Y by 2%
\truey{400}%
\begin{picture}(0,0)%
\put(\Y,-\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(-\value{x},-\value{x}){\line(-1,1){#1}}%
\put(-\epilength,\monolength){\nwhead}%
\end{picture}}%
\put(-\Y,\Y){\begin{picture}(0,0)%
\truex{247}%
\monolength=#1%
\advance\monolength by -\value{x}%
\epilength=#1%
\advance\epilength by \value{x}%
\put(\value{x},\value{x}){\line(1,-1){#1}}%
\put(\epilength,-\monolength){\sehead}%
\end{picture}}%
\put(-\value{x},-\value{x}){\circle{\value{y}}}%
\put(\value{x},\value{x}){\circle{\value{y}}}%
\end{picture}}%


% All the following commands draw north-west arrows

% north-west arrow of length nx100 units
\def\basicnwar[#1]{\sdcase{\NWAR}{}{}{#100}}%

% north-west arrow
\newcommand{\nwar}{\@ifnextchar[{\basicnwar}{\basicnwar[59]}}%

% north-west arrow with upper name [1] and length nx100 units
\def\basicNwar[#1]#2{\sdcase{\NWAR}{#2}{}{#100}}%

% north-west arrow with upper name
\newcommand{\Nwar}{\@ifnextchar[{\basicNwar}{\basicNwar[59]}}%

% north-west arrow with lower name [1]  and length nx100 units
\def\basicnwaR[#1]#2{\sdcase{\NWAR}{}{#2}{#100}}%

% north-west arrow with lower name [1]
\newcommand{\nwaR}{\@ifnextchar[{\basicnwaR}{\basicnwaR[59]}}%

% north-west distributor of length nx100 units
\def\basicnwdist[#1]{\sdcase{\NWDIST}{}{}{#100}}%

% north-west distributor
\newcommand{\nwdist}{\@ifnextchar[{\basicnwdist}{\basicnwdist[59]}}%

% north-west distributor with upper name [1] and length nx100 units
\def\basicNwdist[#1]#2{\sdcase{\NWDIST}{#2}{}{#100}}%

% north-west distributor with upper name
\newcommand{\Nwdist}{\@ifnextchar[{\basicNwdist}{\basicNwdist[59]}}%

% north-west distributor with lower name [1]  and length nx100 units
\def\basicnwdisT[#1]#2{\sdcase{\NWDIST}{}{#2}{#100}}%

% north-west distributor with lower name [1]
\newcommand{\nwdisT}{\@ifnextchar[{\basicnwdisT}{\basicnwdisT[59]}}%

% north-west dotted arrow of length nx100 units
\def\basicnwdotar[#1]{\sdcase{\NWDOTAR}{}{}{#100}}%

% north-west dotted arrow
\newcommand{\nwdotar}{\@ifnextchar[{\basicnwdotar}{\basicnwdotar[59]}}%

% north-west dotted arrow with upper name [1] and length nx100 units
\def\basicNwdotar[#1]#2{\sdcase{\NWDOTAR}{#2}{}{#100}}%

% north-west dotted arrow with upper name
\newcommand{\Nwdotar}{\@ifnextchar[{\basicNwdotar}{\basicNwdotar[59]}}%

% north-west dotted arrow with lower name [1]  and length nx100 units
\def\basicnwdotaR[#1]#2{\sdcase{\NWDOTAR}{}{#2}{#100}}%

% north-west dotted arrow with lower name [1]
\newcommand{\nwdotaR}{\@ifnextchar[{\basicnwdotaR}{\basicnwdotaR[59]}}%

% north-west monomorphism of length nx100 units
\def\basicnwmono[#1]{\sdcase{\NWMONO}{}{}{#100}}%

% north-west monomorphism
\newcommand{\nwmono}{\@ifnextchar[{\basicnwmono}{\basicnwmono[59]}}%

% north-west monomorphism with upper name [1] and length nx100 units
\def\basicNwmono[#1]#2{\sdcase{\NWMONO}{#2}{}{#100}}%

% north-west monomophism with upper name
\newcommand{\Nwmono}{\@ifnextchar[{\basicNwmono}{\basicNwmono[59]}}%

% north-west monomorphism with lower name [1]  and length nx100 units
\def\basicnwmonO[#1]#2{\sdcase{\NWMONO}{}{#2}{#100}}%

% north-west monomorphism with lower name [1]
\newcommand{\nwmonO}{\@ifnextchar[{\basicnwmonO}{\basicnwmonO[59]}}%

% north-west epimorphism of length nx100 units
\def\basicnwepi[#1]{\sdcase{\NWEPI}{}{}{#100}}%

% north-west epimorphism
\newcommand{\nwepi}{\@ifnextchar[{\basicnwepi}{\basicnwepi[59]}}%

% north-west epimorphism with upper name [1] and length nx100 units
\def\basicNwepi[#1]#2{\sdcase{\NWEPI}{#2}{}{#100}}%

% north-west epimorphism with upper name
\newcommand{\Nwepi}{\@ifnextchar[{\basicNwepi}{\basicNwepi[59]}}%

% north-west epimorphism with lower name [1]  and length nx100 units
\def\basicnwepI[#1]#2{\sdcase{\NWEPI}{}{#2}{#100}}%

% north-west epimorphism with lower name [1]
\newcommand{\nwepI}{\@ifnextchar[{\basicnwepI}{\basicnwepI[59]}}%

% north-west bimorphism of length nx100 units
\def\basicnwbimo[#1]{\sdcase{\NWBIMO}{}{}{#100}}%

% north-west bimorphism
\newcommand{\nwbimo}{\@ifnextchar[{\basicnwbimo}{\basicnwbimo[59]}}%

% north-west bimorphism with upper name [1] and length nx100 units
\def\basicNwbimo[#1]#2{\sdcase{\NWBIMO}{#2}{}{#100}}%

% north-west bimorphism with upper name
\newcommand{\Nwbimo}{\@ifnextchar[{\basicNwbimo}{\basicNwbimo[59]}}%

% north-west bimorphism with lower name [1]  and length nx100 units
\def\basicnwbimO[#1]#2{\sdcase{\NWBIMO}{}{#2}{#100}}%

% north-west bimorphism with lower name [1]
\newcommand{\nwbimO}{\@ifnextchar[{\basicnwbimO}{\basicnwbimO[59]}}%

% north-west isomorphism of length nx100 units
\def\basicnwiso[#1]{\sdcase{\NWAR}{\hspace{-2pt}\cong}{}{#100}}%

% north-west isomorphism
\newcommand{\nwiso}{\@ifnextchar[{\basicnwiso}{\basicnwiso[59]}}%

% north-west isomorphism with upper name [1] and length nx100 units
\def\basicNwiso[#1]#2{\sdcase{\NWAR}{#2}{\cong}{#100}}%

% north-west isomorphism with upper name
\newcommand{\Nwiso}{\@ifnextchar[{\basicNwiso}{\basicNwiso[59]}}%

% north-west isomorphism with lower name [1]  and length nx100 units
\def\basicnwisO[#1]#2{\sdcase{\NWAR}{\hspace{-2pt}\cong}{#2}{#100}}%

% north-west isomorphism with lower name [1]
\newcommand{\nwisO}{\@ifnextchar[{\basicnwisO}{\basicnwisO[59]}}%

% north-west equality
\let\nweql=\seeql%

% north-west equality with upper name
\let\Nweql=\Seeql%

% north-west equality with lower name [1]
\let\nweqL=\seeqL%

% pair of north-west arrows of length nx100 units
\def\basicnwbiar[#1]{\sdbicase{\NWBIAR}{}{}{#100}}%

% pair of north-west arrows
\newcommand{\nwbiar}{\@ifnextchar[{\basicnwbiar}{\basicnwbiar[59]}}%

% pair of north-west arrows with names [1][2] and length nx100 units
\def\basicNwbiar[#1]#2#3{\sdbicase{\NWBIAR}{#2}{#3}{#100}}%

% pair of north-west arrows with names
\newcommand{\Nwbiar}{\@ifnextchar[{\basicNwbiar}{\basicNwbiar[59]}}%
\let\nwbiaR=\Nwbiar

% pair of north-west adjoint arrows of length nx100 units
\def\basicnwadjar[#1]{\sdbicase{\NWADJAR}{}{}{#100}}%

% pair of north-west adjoint arrows
\newcommand{\nwadjar}{\@ifnextchar[{\basicnwadjar}{\basicnwadjar[59]}}%

% pair of north-west adjoint arrows with names [1][2] and length nx100 units
\def\basicNwadjar[#1]#2#3{\sdbicase{\NWADJAR}{#2}{#3}{#100}}%

% pair of north-west adjoint arrows with names
\newcommand{\Nwadjar}{\@ifnextchar[{\basicNwadjar}{\basicNwadjar[59]}}%
\let\nwadjaR=\Nwadjar

% pair of north-west distributors of length nx100 units
\def\basicnwbidist[#1]{\sdbicase{\NWBIDIST}{}{}{#100}}%

% pair of north-west distributors
\newcommand{\nwbidist}{\@ifnextchar[{\basicnwbidist}{\basicnwbidist[59]}}%

% pair of north-west distributors with names [1][2] and length nx100 units
\def\basicNwbidist[#1]#2#3{\sdbicase{\NWBIDIST}{#2}{#3}{#100}}%

% pair of north-west distributors with names
\newcommand{\Nwbidist}{\@ifnextchar[{\basicNwbidist}{\basicNwbidist[59]}}%
\let\nwbidisT=\Nwbidist

% pair of north-west adjoint distributors of length nx100 units
\def\basicnwadjdist[#1]{\sdbicase{\NWADJDIST}{}{}{#100}}%

% pair of north-west adjoint distributors
\newcommand{\nwadjdist}{\@ifnextchar[{\basicnwadjdist}{\basicnwadjdist[59]}}%

% pair of north-west adjoint distributors with names [1][2] and length nx100 units
\def\basicNwadjdist[#1]#2#3{\sdbicase{\NWADJDIST}{#2}{#3}{#100}}%

% pair of north-west adjoint distributors with names
\newcommand{\Nwadjdist}{\@ifnextchar[{\basicNwadjdist}{\basicNwadjdist[59]}}%
\let\nwadjdisT=\Nwadjdist


% EAST-NORTH-EAST ARROWS

% The following commands produce east-north-east arrows
% of horizontal extent n units

% \ENEAR{f}{g}{n} draws a east-north-east arrow with names f, g
% and length n units
\newcommand{\ENEAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\line(2,1){#3}}%
\put(\Y,\Z){\enehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEDIST{f}{g}{n} draws a east-north-east distributor
% with names f, g and length n units
\newcommand{\ENEDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\line(2,1){#3}}%
\put(\Y,\Z){\enehead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEDOTAR{f}{g}{n} draws a north-east dotted arrow
% with names f,g and length n units
\newcommand{\ENEDOTAR}[3]{\testdiagrammode%
\truex{100}\truey{268}\truez{134}%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\NUMBEROFDOTS=#3%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(-\Y,-\Z)(\value{y},\value{z}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(\Y,\Z){\enehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEMONO{f}{g}{n} draws a east-north-east monomorphism
% with names f,g and length n units
\newcommand{\ENEMONO}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueTail%
\bimolength=#3%
\advance\bimolength by -\TrueMonoTail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\secondmonolength=\monolength%
\divide\secondmonolength by 2%
\begin{picture}(0,0)%
\put(-\monolength,-\secondmonolength){\line(2,1){\bimolength}}%
\put(-\monolength,-\secondmonolength){\enehead}%
\put(\Y,\Z){\enehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEEPI{f}{g}{n} draws a east-north-east epimorphism
% with names f, g and length n units
\newcommand{\ENEEPI}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueHead%
\bimolength=#3%
\advance\bimolength by -\TrueEpiHead%
\epilength=\bimolength%
\advance\epilength by -\Y%
\secondepilength=\epilength%
\divide\secondepilength by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\line(2,1){\bimolength}}%
\put(\epilength,\secondepilength){\enehead}%
\put(\Y,\Z){\enehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEBIMO{f}{g}{n} draws a east-north-east bimorphism
% with names f,g and length n units
\newcommand{\ENEBIMO}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueTail\TrueHead%
\bimolength=#3%
\advance\bimolength by -\TrueMonoTail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\advance\bimolength by -\TrueEpiHead%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\secondmonolength=\monolength%
\divide\secondmonolength by 2%
\secondepilength=\epilength%
\divide\secondepilength by 2%
\begin{picture}(0,0)%
\put(-\monolength,-\secondmonolength){\line(2,1){\bimolength}}%
\put(-\monolength,-\secondmonolength){\enehead}%
\put(\epilength,\secondepilength){\enehead}%
\put(\Y,\Z){\enehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEEQL{f}{g}{n} draws a east-north-east equality
% with names f,g and length n units
\newcommand{\ENEEQL}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\begin{picture}(0,0)%
\truex{44}\truey{89}%
\put(-\value{x},\value{y}){\line(2,1){#3}}%
\put(\value{x},-\value{y}){\line(2,1){#3}}%
\end{picture}}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEBIAR{f}{g}{n} draws a pair of east-north-east arrows
% with names f,g and length n units
\newcommand{\ENEBIAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\begin{picture}(0,0)%
\truex{156}\truey{313}%
\put(-\value{x},\value{y}){\line(2,1){#3}}%
\put(\value{x},-\value{y}){\line(2,1){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(\monolength,\secondepilength){\enehead}%
\put(\epilength,\secondmonolength){\enehead}%
\end{picture}}
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEBIDIST{f}{g}{n} draws a pair of east-north-east distributors
% with names f,g and length n units
\newcommand{\ENEBIDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\truex{156}\truey{313}\truez{400}%
\put(-\Y,-\Z){\begin{picture}(0,0)%
\put(-\value{x},\value{y}){\line(2,1){#3}}%
\put(\value{x},-\value{y}){\line(2,1){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(\monolength,\secondepilength){\enehead}%
\put(\epilength,\secondmonolength){\enehead}%
\end{picture}}
\put(-\value{x},\value{y}){\circle{\value{z}}}%
\put(\value{x},-\value{y}){\circle{\value{z}}}%
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEADJAR{f}{g}{n} draws a east-north-east pair of adjoint arrows
% with names f,g and length n units
\newcommand{\ENEADJAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\begin{picture}(0,0)%
\truex{156}\truey{313}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(\value{x},-\value{y}){\line(2,1){#3}}%
\put(\epilength,\secondmonolength){\enehead}%
\put(\monolength,\secondepilength){\line(-2,-1){#3}}%
\put(-\value{x},\value{y}){\wswhead}%
\end{picture}}
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \ENEADJDIST{f}{g}{n} draws a east-north-east pair of adjoint distributors
% with names f,g and length n units
\newcommand{\ENEADJDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\truex{156}\truey{313}\truez{400}%
\put(-\Y,-\Z){\begin{picture}(0,0)%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(\value{x},-\value{y}){\line(2,1){#3}}%
\put(\epilength,\secondmonolength){\enehead}%
\put(\monolength,\secondepilength){\line(-2,-1){#3}}%
\put(-\value{x},\value{y}){\wswhead}%
\end{picture}}
\put(-\value{x},\value{y}){\circle{\value{z}}}%
\put(\value{x},-\value{y}){\circle{\value{z}}}%
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% The following commands produce east-north-east arrows;
% the default length is 13300 units

% basic east-north-east arrow
\def\basicenear[#1]{\ENEAR{}{}{#100}}%

% east-north-east arrow
\newcommand{\enear}{\@ifnextchar[{\basicenear}{\basicenear[133]}}%

% basic east-north-east arrow with upper name
\def\basicEnear[#1]#2{\ENEAR{#2}{}{#100}}%

% east-north-east arrow with upper name
\newcommand{\Enear}{\@ifnextchar[{\basicEnear}{\basicEnear[133]}}%

% basic east-north-east arrow with lower name
\def\basiceneaR[#1]#2{\ENEAR{}{#2}{#100}}%

% east-north-east arrow with lower name
\newcommand{\eneaR}{\@ifnextchar[{\basiceneaR}{\basiceneaR[133]}}%

% basic east-north-east distributor
\def\basicenedist[#1]{\ENEDIST{}{}{#100}}%

% east-north-east distributor
\newcommand{\enedist}{\@ifnextchar[{\basicenedist}{\basicenedist[133]}}%

% basic east-north-east distributor with upper name
\def\basicEnedist[#1]#2{\ENEDIST{#2}{}{#100}}%

% east-north-east distributor with upper name
\newcommand{\Enedist}{\@ifnextchar[{\basicEnedist}{\basicEnedist[133]}}%

% basic east-north-east distributor with lower name
\def\basicenedisT[#1]#2{\ENEDIST{}{#2}{#100}}%

% east-north-east distributor with lower name
\newcommand{\enedisT}{\@ifnextchar[{\basicenedisT}{\basicenedisT[133]}}%

% basic east-north-east dotted arrow
\def\basicenedotar[#1]{\ENEDOTAR{}{}{#100}}%

% east-north-east dotted arrow
\newcommand{\enedotar}{\@ifnextchar[{\basicenedotar}{\basicenedotar[133]}}%

% basic east-north-east dotted arrow with upper name
\def\basicEnedotar[#1]#2{\ENEDOTAR{#2}{}{#100}}%

% east-north-east dotted arrow with upper name
\newcommand{\Enedotar}{\@ifnextchar[{\basicEnedotar}{\basicEnedotar[133]}}%

% basic east-north-east dotted arrow with lower name
\def\basicenedotaR[#1]#2{\ENEDOTAR{}{#2}{#100}}%

% east-north-east dotted arrow with lower name
\newcommand{\enedotaR}{\@ifnextchar[{\basicenedotaR}{\basicenedotaR[133]}}%

% basic east-north-east monomorphism
\def\basicenemono[#1]{\ENEMONO{}{}{#100}}%

% east-north-east monomorphism
\newcommand{\enemono}{\@ifnextchar[{\basicenemono}{\basicenemono[133]}}%

% basic east-north-east monomorphism with upper name
\def\basicEnemono[#1]#2{\ENEMONO{#2}{}{#100}}%

% east-north-east monomorphism with upper name
\newcommand{\Enemono}{\@ifnextchar[{\basicEnemono}{\basicEnemono[133]}}%

% basic east-north-east monomorphism with lower name
\def\basicenemonO[#1]#2{\ENEMONO{}{#2}{#100}}%

% east-north-east monomorphism with lower name
\newcommand{\enemonO}{\@ifnextchar[{\basicenemonO}{\basicenemonO[133]}}%

% basic east-north-east epimorphism
\def\basiceneepi[#1]{\ENEEPI{}{}{#100}}%

% east-north-east epimorphism
\newcommand{\eneepi}{\@ifnextchar[{\basiceneepi}{\basiceneepi[133]}}%

% basic east-north-east epimorphism with upper name
\def\basicEneepi[#1]#2{\ENEEPI{#2}{}{#100}}%

% east-north-east epimorphism with upper name
\newcommand{\Eneepi}{\@ifnextchar[{\basicEneepi}{\basicEneepi[133]}}%

% basic east-north-east epimorphism with lower name
\def\basiceneepI[#1]#2{\ENEEPI{}{#2}{#100}}%

% east-north-east epimorphism with lower name
\newcommand{\eneepI}{\@ifnextchar[{\basiceneepI}{\basiceneepI[133]}}%

% basic east-north-east bimorphism
\def\basicenebimo[#1]{\ENEBIMO{}{}{#100}}%

% east-north-east bimorphism
\newcommand{\enebimo}{\@ifnextchar[{\basicenebimo}{\basicenebimo[133]}}%

% basic east-north-east bimorphism with upper name
\def\basicEnebimo[#1]#2{\ENEBIMO{#2}{}{#100}}%

% east-north-east bimorphism with upper name
\newcommand{\Enebimo}{\@ifnextchar[{\basicEnebimo}{\basicEnebimo[133]}}%

% basic east-north-east bimorphism with lower name
\def\basicenebimO[#1]#2{\ENEBIMO{}{#2}{#100}}%

% east-north-east bimorphism with lower name
\newcommand{\enebimO}{\@ifnextchar[{\basicenebimO}{\basicenebimO[133]}}%

% basic east-north-east isomorphism
\def\basiceneiso[#1]{\ENEAR{\cong}{}{#100}}%

% east-north-east isomorphism
\newcommand{\eneiso}{\@ifnextchar[{\basiceneiso}{\basiceneiso[133]}}%

% basic east-north-east isomorphism with upper name
\def\basicEneiso[#1]#2{\ENEAR{#2}{\cong}{#100}}%

% east-north-east isomorphism with upper name
\newcommand{\Eneiso}{\@ifnextchar[{\basicEneiso}{\basicEneiso[133]}}%

% basic east-north-east isomorphism with lower name
\def\basiceneisO[#1]#2{\ENEAR{\cong}{#2}{#100}}%

% east-north-east isomorphism with lower name
\newcommand{\eneisO}{\@ifnextchar[{\basiceneisO}{\basiceneisO[133]}}%

% basic east-north-east equality
\def\basiceneeql[#1]{\ENEEQL{}{}{#100}}%

% east-north-east equality
\newcommand{\eneeql}{\@ifnextchar[{\basiceneeql}{\basiceneeql[133]}}%

% basic east-north-east equality with upper name
\def\basicEneeql[#1]#2{\ENEEQL{#2}{}{#100}}%

% east-north-east equality with upper name
\newcommand{\Eneeql}{\@ifnextchar[{\basicEneeql}{\basicEneeql[133]}}%

% basic east-north-east equality with lower name
\def\basiceneeqL[#1]#2{\ENEEQL{}{#2}{#100}}%

% east-north-east equality with lower name
\newcommand{\eneeqL}{\@ifnextchar[{\basiceneeqL}{\basiceneeqL[133]}}%

% basic east-north-east pair of arrows
\def\basicenebiar[#1]{\ENEBIAR{}{}{#100}}%

% east-north-east pair of arrows
\newcommand{\enebiar}{\@ifnextchar[{\basicenebiar}{\basicenebiar[133]}}%

% basic east-north-east pair of arrows with names
\def\basicEnebiar[#1]#2#3{\ENEBIAR{#2}{#3}{#100}}%

% east-north-east pair of arrows with names
\newcommand{\Enebiar}{\@ifnextchar[{\basicEnebiar}{\basicEnebiar[133]}}%
\let\enebiaR=\Enebiar

% basic east-north-east pair of distributors
\def\basicenebidist[#1]{\ENEBIDIST{}{}{#100}}%

% east-north-east pair of distributors
\newcommand{\enebidist}{\@ifnextchar[{\basicenebidist}{\basicenebidist[133]}}%

% basic east-north-east pair of distributors with names
\def\basicEnebidist[#1]#2#3{\ENEBIDIST{#2}{#3}{#100}}%

% east-north-east pair of distributors with names
\newcommand{\Enebidist}{\@ifnextchar[{\basicEnebidist}{\basicEnebidist[133]}}%
\let\enebidisT=\Enebidist

% basic east-north-east pair of adjoint arrows
\def\basiceneadjar[#1]{\ENEADJAR{}{}{#100}}%

% east-north-east pair of adjoint arrows
\newcommand{\eneadjar}{\@ifnextchar[{\basiceneadjar}{\basiceneadjar[133]}}%

% basic east-north-east pair of adjoint  arrows with names
\def\basicEneadjar[#1]#2#3{\ENEADJAR{#2}{#3}{#100}}%

% east-north-east pair of adjoint arrows with names
\newcommand{\Eneadjar}{\@ifnextchar[{\basicEneadjar}{\basicEneadjar[133]}}%
\let\eneadjaR=\Eneadjar

% basic east-north-east pair of adjoint distributors
\def\basiceneadjdist[#1]{\ENEADJDIST{}{}{#100}}%

% east-north-east pair of adjoint distributors
\newcommand{\eneadjdist}{\@ifnextchar[{\basiceneadjdist}{\basiceneadjdist[133]}}%

% basic east-north-east pair of adjoint distributors with names
\def\basicEneadjdist[#1]#2#3{\ENEADJDIST{#2}{#3}{#100}}%

% east-north-east pair of adjoint distributors with names
\newcommand{\Eneadjdist}{\@ifnextchar[{\basicEneadjdist}{\basicEneadjdist[133]}}%
\let\eneadjdisT=\Eneadjdist


% EAST-SOUTH-EAST ARROWS

% The following commands produce east-south-east arrows
% of horizontal extent n units

% \ESEAR{f}{g}{n} draws a east-south-east arrow with names f, g
% and length n units
\newcommand{\ESEAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,\Z){\line(2,-1){#3}}%
\put(\Y,-\Z){\esehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEDIST{f}{g}{n} draws a east-south-east distributor
% with names f, g and length n units
\newcommand{\ESEDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,\Z){\line(2,-1){#3}}%
\put(\Y,-\Z){\esehead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEDOTAR{f}{g}{n} draws a north-east dotted arrow
% with names f,g and length n units
\newcommand{\ESEDOTAR}[3]{\testdiagrammode%
\truex{100}\truey{268}\truez{134}%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\NUMBEROFDOTS=#3%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(-\Y,\Z)(\value{y},-\value{z}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(\Y,-\Z){\esehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEMONO{f}{g}{n} draws a east-south-east monomorphism
% with names f,g and length n units
\newcommand{\ESEMONO}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueTail%
\bimolength=#3%
\advance\bimolength by -\TrueMonoTail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\secondmonolength=\monolength%
\divide\secondmonolength by 2%
\begin{picture}(0,0)%
\put(-\monolength,\secondmonolength){\line(2,-1){\bimolength}}%
\put(-\monolength,\secondmonolength){\esehead}%
\put(\Y,-\Z){\esehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEEPI{f}{g}{n} draws a east-south-east epimorphism
% with names f, g and length n units
\newcommand{\ESEEPI}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueHead%
\bimolength=#3%
\advance\bimolength by -\TrueEpiHead%
\epilength=\bimolength%
\advance\epilength by -\Y%
\secondepilength=\epilength%
\divide\secondepilength by 2%
\begin{picture}(0,0)%
\put(-\Y,\Z){\line(2,-1){\bimolength}}%
\put(\epilength,-\secondepilength){\esehead}%
\put(\Y,-\Z){\esehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEBIMO{f}{g}{n} draws a east-south-east bimorphism
% with names f,g and length n units
\newcommand{\ESEBIMO}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueTail\TrueHead%
\bimolength=#3%
\advance\bimolength by -\TrueMonoTail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\advance\bimolength by -\TrueEpiHead%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\secondmonolength=\monolength%
\divide\secondmonolength by 2%
\secondepilength=\epilength%
\divide\secondepilength by 2%
\begin{picture}(0,0)%
\put(-\monolength,\secondmonolength){\line(2,-1){\bimolength}}%
\put(-\monolength,\secondmonolength){\esehead}%
\put(\epilength,-\secondepilength){\esehead}%
\put(\Y,-\Z){\esehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEEQL{f}{g}{n} draws a east-south-east equality
% with names f,g and length n units
\newcommand{\ESEEQL}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,\Z){\begin{picture}(0,0)%
\truex{44}\truey{89}%
\put(-\value{x},-\value{y}){\line(2,-1){#3}}%
\put(\value{x},\value{y}){\line(2,-1){#3}}%
\end{picture}}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEBIAR{f}{g}{n} draws a pair of east-south-east arrows
% with names f,g and length n units
\newcommand{\ESEBIAR}[3]{%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,\Z){\begin{picture}(0,0)%
\truex{156}\truey{313}%
\put(-\value{x},-\value{y}){\line(2,-1){#3}}%
\put(\value{x},\value{y}){\line(2,-1){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(\monolength,-\secondepilength){\esehead}%
\put(\epilength,-\secondmonolength){\esehead}%
\end{picture}}
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEBIDIST{f}{g}{n} draws a pair of east-south-east distributors
% with names f,g and length n units
\newcommand{\ESEBIDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\truex{156}\truey{313}\truez{400}%
\put(-\Y,\Z){\begin{picture}(0,0)%
\put(-\value{x},-\value{y}){\line(2,-1){#3}}%
\put(\value{x},\value{y}){\line(2,-1){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(\monolength,-\secondepilength){\esehead}%
\put(\epilength,-\secondmonolength){\esehead}%
\end{picture}}
\put(\value{x},\value{y}){\circle{\value{z}}}%
\put(-\value{x},-\value{y}){\circle{\value{z}}}%
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEADJAR{f}{g}{n} draws a east-south-east pair of adjoint arrows
% with names f,g and length n units
\newcommand{\ESEADJAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Y,\Z){\begin{picture}(0,0)%
\truex{156}\truey{313}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(-\value{x},-\value{y}){\line(2,-1){#3}}%
\put(\monolength,-\secondepilength){\esehead}%
\put(\epilength,-\secondmonolength){\line(-2,1){#3}}%
\put(\value{x},\value{y}){\wnwhead}%
\end{picture}}
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \ESEADJDIST{f}{g}{n} draws a east-south-east pair of adjoint distributors
% with names f,g and length n units
\newcommand{\ESEADJDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\truex{156}\truey{313}\truez{400}%
\put(-\Y,\Z){\begin{picture}(0,0)%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(-\value{x},-\value{y}){\line(2,-1){#3}}%
\put(\monolength,-\secondepilength){\esehead}%
\put(\epilength,-\secondmonolength){\line(-2,1){#3}}%
\put(\value{x},\value{y}){\wnwhead}%
\end{picture}}
\put(\value{x},\value{y}){\circle{\value{z}}}%
\put(-\value{x},-\value{y}){\circle{\value{z}}}%
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% The following commands produce east-south-east arrows;
% the default length is 13300 units

% basic east-south-east arrow
\def\basicesear[#1]{\ESEAR{}{}{#100}}%

% east-south-east arrow
\newcommand{\esear}{\@ifnextchar[{\basicesear}{\basicesear[133]}}%

% basic east-south-east arrow with upper name
\def\basicEsear[#1]#2{\ESEAR{#2}{}{#100}}%

% east-south-east arrow with upper name
\newcommand{\Esear}{\@ifnextchar[{\basicEsear}{\basicEsear[133]}}%

% basic east-south-east arrow with lower name
\def\basiceseaR[#1]#2{\ESEAR{}{#2}{#100}}%

% east-south-east arrow with lower name
\newcommand{\eseaR}{\@ifnextchar[{\basiceseaR}{\basiceseaR[133]}}%

% basic east-south-east distributor
\def\basicesedist[#1]{\ESEDIST{}{}{#100}}%

% east-south-east distributor
\newcommand{\esedist}{\@ifnextchar[{\basicesedist}{\basicesedist[133]}}%

% basic east-south-east distributor with upper name
\def\basicEsedist[#1]#2{\ESEDIST{#2}{}{#100}}%

% east-south-east distributor with upper name
\newcommand{\Esedist}{\@ifnextchar[{\basicEsedist}{\basicEsedist[133]}}%

% basic east-south-east distributor with lower name
\def\basicesedisT[#1]#2{\ESEDIST{}{#2}{#100}}%

% east-south-east distributor with lower name
\newcommand{\esedisT}{\@ifnextchar[{\basicesedisT}{\basicesedisT[133]}}%

% basic east-south-east dotted arrow
\def\basicesedotar[#1]{\ESEDOTAR{}{}{#100}}%

% east-south-east dotted arrow
\newcommand{\esedotar}{\@ifnextchar[{\basicesedotar}{\basicesedotar[133]}}%

% basic east-south-east dotted arrow with upper name
\def\basicEsedotar[#1]#2{\ESEDOTAR{#2}{}{#100}}%

% east-south-east dotted arrow with upper name
\newcommand{\Esedotar}{\@ifnextchar[{\basicEsedotar}{\basicEsedotar[133]}}%

% basic east-south-east dotted arrow with lower name
\def\basicesedotaR[#1]#2{\ESEDOTAR{}{#2}{#100}}%

% east-south-east dotted arrow with lower name
\newcommand{\esedotaR}{\@ifnextchar[{\basicesedotaR}{\basicesedotaR[133]}}%

% basic east-south-east monomorphism
\def\basicesemono[#1]{\ESEMONO{}{}{#100}}%

% east-south-east monomorphism
\newcommand{\esemono}{\@ifnextchar[{\basicesemono}{\basicesemono[133]}}%

% basic east-south-east monomorphism with upper name
\def\basicEsemono[#1]#2{\ESEMONO{#2}{}{#100}}%

% east-south-east monomorphism with upper name
\newcommand{\Esemono}{\@ifnextchar[{\basicEsemono}{\basicEsemono[133]}}%

% basic east-south-east monomorphism with lower name
\def\basicesemonO[#1]#2{\ESEMONO{}{#2}{#100}}%

% east-south-east monomorphism with lower name
\newcommand{\esemonO}{\@ifnextchar[{\basicesemonO}{\basicesemonO[133]}}%

% basic east-south-east epimorphism
\def\basiceseepi[#1]{\ESEEPI{}{}{#100}}%

% east-south-east epimorphism
\newcommand{\eseepi}{\@ifnextchar[{\basiceseepi}{\basiceseepi[133]}}%

% basic east-south-east epimorphism with upper name
\def\basicEseepi[#1]#2{\ESEEPI{#2}{}{#100}}%

% east-south-east epimorphism with upper name
\newcommand{\Eseepi}{\@ifnextchar[{\basicEseepi}{\basicEseepi[133]}}%

% basic east-south-east epimorphism with lower name
\def\basiceseepI[#1]#2{\ESEEPI{}{#2}{#100}}%

% east-south-east epimorphism with lower name
\newcommand{\eseepI}{\@ifnextchar[{\basiceseepI}{\basiceseepI[133]}}%

% basic east-south-east bimorphism
\def\basicesebimo[#1]{\ESEBIMO{}{}{#100}}%

% east-south-east bimorphism
\newcommand{\esebimo}{\@ifnextchar[{\basicesebimo}{\basicesebimo[133]}}%

% basic east-south-east bimorphism with upper name
\def\basicEsebimo[#1]#2{\ESEBIMO{#2}{}{#100}}%

% east-south-east bimorphism with upper name
\newcommand{\Esebimo}{\@ifnextchar[{\basicEsebimo}{\basicEsebimo[133]}}%

% basic east-south-east bimorphism with lower name
\def\basicesebimO[#1]#2{\ESEBIMO{}{#2}{#100}}%

% east-south-east bimorphism with lower name
\newcommand{\esebimO}{\@ifnextchar[{\basicesebimO}{\basicesebimO[133]}}%

% basic east-south-east isomorphism
\def\basiceseiso[#1]{\ESEAR{\cong}{}{#100}}%

% east-south-east isomorphism
\newcommand{\eseiso}{\@ifnextchar[{\basiceseiso}{\basiceseiso[133]}}%

% basic east-south-east isomorphism with upper name
\def\basicEseiso[#1]#2{\ESEAR{#2}{\cong}{#100}}%

% east-south-east isomorphism with upper name
\newcommand{\Eseiso}{\@ifnextchar[{\basicEseiso}{\basicEseiso[133]}}%

% basic east-south-east isomorphism with lower name
\def\basiceseisO[#1]#2{\ESEAR{\cong}{#2}{#100}}%

% east-south-east isomorphism with lower name
\newcommand{\eseisO}{\@ifnextchar[{\basiceseisO}{\basiceseisO[133]}}%

% basic east-south-east equality
\def\basiceseeql[#1]{\ESEEQL{}{}{#100}}%

% east-south-east equality
\newcommand{\eseeql}{\@ifnextchar[{\basiceseeql}{\basiceseeql[133]}}%

% basic east-south-east equality with upper name
\def\basicEseeql[#1]#2{\ESEEQL{#2}{}{#100}}%

% east-south-east equality with upper name
\newcommand{\Eseeql}{\@ifnextchar[{\basicEseeql}{\basicEseeql[133]}}%

% basic east-south-east equality with lower name
\def\basiceseeqL[#1]#2{\ESEEQL{}{#2}{#100}}%

% east-south-east equality with lower name
\newcommand{\eseeqL}{\@ifnextchar[{\basiceseeqL}{\basiceseeqL[133]}}%

% basic east-south-east pair of arrows
\def\basicesebiar[#1]{\ESEBIAR{}{}{#100}}%

% east-south-east pair of arrows
\newcommand{\esebiar}{\@ifnextchar[{\basicesebiar}{\basicesebiar[133]}}%

% basic east-south-east pair of arrows with names
\def\basicEsebiar[#1]#2#3{\ESEBIAR{#2}{#3}{#100}}%

% east-south-east pair of arrows with names
\newcommand{\Esebiar}{\@ifnextchar[{\basicEsebiar}{\basicEsebiar[133]}}%
\let\esebiaR=\Esebiar

% basic east-south-east pair of distributors
\def\basicesebidist[#1]{\ESEBIDIST{}{}{#100}}%

% east-south-east pair of distributors
\newcommand{\esebidist}{\@ifnextchar[{\basicesebidist}{\basicesebidist[133]}}%

% basic east-south-east pair of distributors with names
\def\basicEsebidist[#1]#2#3{\ESEBIDIST{#2}{#3}{#100}}%

% east-south-east pair of distributors with names
\newcommand{\Esebidist}{\@ifnextchar[{\basicEsebidist}{\basicEsebidist[133]}}%
\let\esebidisT=\Esebidist

% basic east-south-east pair of adjoint arrows
\def\basiceseadjar[#1]{\ESEADJAR{}{}{#100}}%

% east-south-east pair of adjoint arrows
\newcommand{\eseadjar}{\@ifnextchar[{\basiceseadjar}{\basiceseadjar[133]}}%

% basic east-south-east pair of adjoint  arrows with names
\def\basicEseadjar[#1]#2#3{\ESEADJAR{#2}{#3}{#100}}%

% east-south-east pair of adjoint arrows with names
\newcommand{\Eseadjar}{\@ifnextchar[{\basicEseadjar}{\basicEseadjar[133]}}%
\let\eseadjaR=\Eseadjar

% basic east-south-east pair of adjoint distributors
\def\basiceseadjdist[#1]{\ESEADJDIST{}{}{#100}}%

% east-south-east pair of adjoint distributors
\newcommand{\eseadjdist}{\@ifnextchar[{\basiceseadjdist}{\basiceseadjdist[133]}}%

% basic east-south-east pair of adjoint distributors with names
\def\basicEseadjdist[#1]#2#3{\ESEADJDIST{#2}{#3}{#100}}%

% east-south-east pair of adjoint distributors with names
\newcommand{\Eseadjdist}{\@ifnextchar[{\basicEseadjdist}{\basicEseadjdist[133]}}%
\let\eseadjdisT=\Eseadjdist

% WEST-SOUTH-WEST ARROWS

% The following commands produce west-south-west arrows
% of horizontal extent n units

% \WSWAR{f}{g}{n} draws a west-south-west arrow with names f, g
% and length n units
\newcommand{\WSWAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Y,\Z){\line(-2,-1){#3}}%
\put(-\Y,-\Z){\wswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWDIST{f}{g}{n} draws a west-south-west distributor
% with names f, g and length n units
\newcommand{\WSWDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Y,\Z){\line(-2,-1){#3}}%
\put(-\Y,-\Z){\wswhead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWDOTAR{f}{g}{n} draws a north-east dotted arrow
% with names f,g and length n units
\newcommand{\WSWDOTAR}[3]{\testdiagrammode%
\truex{100}\truey{268}\truez{134}%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\NUMBEROFDOTS=#3%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(\Y,\Z)(-\value{y},-\value{z}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(-\Y,-\Z){\wswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWMONO{f}{g}{n} draws a west-south-west monomorphism
% with names f,g and length n units
\newcommand{\WSWMONO}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueTail%
\bimolength=#3%
\advance\bimolength by -\TrueMonoTail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\secondmonolength=\monolength%
\divide\secondmonolength by 2%
\begin{picture}(0,0)%
\put(\monolength,\secondmonolength){\line(-2,-1){\bimolength}}%
\put(\monolength,\secondmonolength){\wswhead}%
\put(-\Y,-\Z){\wswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWEPI{f}{g}{n} draws a west-south-west epimorphism
% with names f, g and length n units
\newcommand{\WSWEPI}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueHead%
\bimolength=#3%
\advance\bimolength by -\TrueEpiHead%
\epilength=\bimolength%
\advance\epilength by -\Y%
\secondepilength=\epilength%
\divide\secondepilength by 2%
\begin{picture}(0,0)%
\put(\Y,\Z){\line(-2,-1){\bimolength}}%
\put(-\epilength,-\secondepilength){\wswhead}%
\put(-\Y,-\Z){\wswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWBIMO{f}{g}{n} draws a west-south-west bimorphism
% with names f,g and length n units
\newcommand{\WSWBIMO}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueTail\TrueHead%
\bimolength=#3%
\advance\bimolength by -\TrueMonoTail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\advance\bimolength by -\TrueEpiHead%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\secondmonolength=\monolength%
\divide\secondmonolength by 2%
\secondepilength=\epilength%
\divide\secondepilength by 2%
\begin{picture}(0,0)%
\put(\monolength,\secondmonolength){\line(-2,-1){\bimolength}}%
\put(\monolength,\secondmonolength){\wswhead}%
\put(-\epilength,-\secondepilength){\wswhead}%
\put(-\Y,-\Z){\wswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWBIAR{f}{g}{n} draws a pair of west-south-west arrows
% with names f,g and length n units
\newcommand{\WSWBIAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Y,\Z){\begin{picture}(0,0)%
\truex{156}\truey{313}%
\put(-\value{x},\value{y}){\line(-2,-1){#3}}%
\put(\value{x},-\value{y}){\line(-2,-1){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(-\monolength,-\secondepilength){\wswhead}%
\put(-\epilength,-\secondmonolength){\wswhead}%
\end{picture}}
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWBIDIST{f}{g}{n} draws a pair of west-south-west distributors
% with names f,g and length n units
\newcommand{\WSWBIDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\truex{156}\truey{313}\truez{400}%
\put(\Y,\Z){\begin{picture}(0,0)%
\put(-\value{x},\value{y}){\line(-2,-1){#3}}%
\put(\value{x},-\value{y}){\line(-2,-1){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(-\monolength,-\secondepilength){\wswhead}%
\put(-\epilength,-\secondmonolength){\wswhead}%
\end{picture}}
\put(-\value{x},\value{y}){\circle{\value{z}}}%
\put(\value{x},-\value{y}){\circle{\value{z}}}%
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWADJAR{f}{g}{n} draws a west-south-west pair of adjoint arrows
% with names f,g and length n units
\newcommand{\WSWADJAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Y,\Z){\begin{picture}(0,0)%
\truex{156}\truey{313}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(\value{x},-\value{y}){\line(-2,-1){#3}}%
\put(-\monolength,-\secondepilength){\wswhead}%
\put(-\epilength,-\secondmonolength){\line(2,1){#3}}%
\put(-\value{x},\value{y}){\enehead}%
\end{picture}}
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \WSWADJDIST{f}{g}{n} draws a west-south-west pair of adjoint distributors
% with names f,g and length n units
\newcommand{\WSWADJDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\truex{156}\truey{313}\truez{400}%
\put(\Y,\Z){\begin{picture}(0,0)%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(\value{x},-\value{y}){\line(-2,-1){#3}}%
\put(-\monolength,-\secondepilength){\wswhead}%
\put(-\epilength,-\secondmonolength){\line(2,1){#3}}%
\put(-\value{x},\value{y}){\enehead}%
\end{picture}}
\put(-\value{x},\value{y}){\circle{\value{z}}}%
\put(\value{x},-\value{y}){\circle{\value{z}}}%
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% The following commands produce west-south-west arrows;
% the default length is 13300 units

% basic west-south-west arrow
\def\basicwswar[#1]{\WSWAR{}{}{#100}}%

% west-south-west arrow
\newcommand{\wswar}{\@ifnextchar[{\basicwswar}{\basicwswar[133]}}%

% basic west-south-west arrow with upper name
\def\basicWswar[#1]#2{\WSWAR{#2}{}{#100}}%

% west-south-west arrow with upper name
\newcommand{\Wswar}{\@ifnextchar[{\basicWswar}{\basicWswar[133]}}%

% basic west-south-west arrow with lower name
\def\basicwswaR[#1]#2{\WSWAR{}{#2}{#100}}%

% west-south-west arrow with lower name
\newcommand{\wswaR}{\@ifnextchar[{\basicwswaR}{\basicwswaR[133]}}%

% basic west-south-west distributor
\def\basicwswdist[#1]{\WSWDIST{}{}{#100}}%

% west-south-west distributor
\newcommand{\wswdist}{\@ifnextchar[{\basicwswdist}{\basicwswdist[133]}}%

% basic west-south-west distributor with upper name
\def\basicWswdist[#1]#2{\WSWDIST{#2}{}{#100}}%

% west-south-west distributor with upper name
\newcommand{\Wswdist}{\@ifnextchar[{\basicWswdist}{\basicWswdist[133]}}%

% basic west-south-west distributor with lower name
\def\basicwswdisT[#1]#2{\WSWDIST{}{#2}{#100}}%

% west-south-west distributor with lower name
\newcommand{\wswdisT}{\@ifnextchar[{\basicwswdisT}{\basicwswdisT[133]}}%

% basic west-south-west dotted arrow
\def\basicwswdotar[#1]{\WSWDOTAR{}{}{#100}}%

% west-south-west dotted arrow
\newcommand{\wswdotar}{\@ifnextchar[{\basicwswdotar}{\basicwswdotar[133]}}%

% basic west-south-west dotted arrow with upper name
\def\basicWswdotar[#1]#2{\WSWDOTAR{#2}{}{#100}}%

% west-south-west dotted arrow with upper name
\newcommand{\Wswdotar}{\@ifnextchar[{\basicWswdotar}{\basicWswdotar[133]}}%

% basic west-south-west dotted arrow with lower name
\def\basicwswdotaR[#1]#2{\WSWDOTAR{}{#2}{#100}}%

% west-south-west dotted arrow with lower name
\newcommand{\wswdotaR}{\@ifnextchar[{\basicwswdotaR}{\basicwswdotaR[133]}}%

% basic west-south-west monomorphism
\def\basicwswmono[#1]{\WSWMONO{}{}{#100}}%

% west-south-west monomorphism
\newcommand{\wswmono}{\@ifnextchar[{\basicwswmono}{\basicwswmono[133]}}%

% basic west-south-west monomorphism with upper name
\def\basicWswmono[#1]#2{\WSWMONO{#2}{}{#100}}%

% west-south-west monomorphism with upper name
\newcommand{\Wswmono}{\@ifnextchar[{\basicWswmono}{\basicWswmono[133]}}%

% basic west-south-west monomorphism with lower name
\def\basicwswmonO[#1]#2{\WSWMONO{}{#2}{#100}}%

% west-south-west monomorphism with lower name
\newcommand{\wswmonO}{\@ifnextchar[{\basicwswmonO}{\basicwswmonO[133]}}%

% basic west-south-west epimorphism
\def\basicwswepi[#1]{\WSWEPI{}{}{#100}}%

% west-south-west epimorphism
\newcommand{\wswepi}{\@ifnextchar[{\basicwswepi}{\basicwswepi[133]}}%

% basic west-south-west epimorphism with upper name
\def\basicWswepi[#1]#2{\WSWEPI{#2}{}{#100}}%

% west-south-west epimorphism with upper name
\newcommand{\Wswepi}{\@ifnextchar[{\basicWswepi}{\basicWswepi[133]}}%

% basic west-south-west epimorphism with lower name
\def\basicwswepI[#1]#2{\WSWEPI{}{#2}{#100}}%

% west-south-west epimorphism with lower name
\newcommand{\wswepI}{\@ifnextchar[{\basicwswepI}{\basicwswepI[133]}}%

% basic west-south-west bimorphism
\def\basicwswbimo[#1]{\WSWBIMO{}{}{#100}}%

% west-south-west bimorphism
\newcommand{\wswbimo}{\@ifnextchar[{\basicwswbimo}{\basicwswbimo[133]}}%

% basic west-south-west bimorphism with upper name
\def\basicWswbimo[#1]#2{\WSWBIMO{#2}{}{#100}}%

% west-south-west bimorphism with upper name
\newcommand{\Wswbimo}{\@ifnextchar[{\basicWswbimo}{\basicWswbimo[133]}}%

% basic west-south-west bimorphism with lower name
\def\basicwswbimO[#1]#2{\WSWBIMO{}{#2}{#100}}%

% west-south-west bimorphism with lower name
\newcommand{\wswbimO}{\@ifnextchar[{\basicwswbimO}{\basicwswbimO[133]}}%

% basic west-south-west isomorphism
\def\basicwswiso[#1]{\WSWAR{\cong}{}{#100}}%

% west-south-west isomorphism
\newcommand{\wswiso}{\@ifnextchar[{\basicwswiso}{\basicwswiso[133]}}%

% basic west-south-west isomorphism with upper name
\def\basicWswiso[#1]#2{\WSWAR{#2}{\cong}{#100}}%

% west-south-west isomorphism with upper name
\newcommand{\Wswiso}{\@ifnextchar[{\basicWswiso}{\basicWswiso[133]}}%

% basic west-south-west isomorphism with lower name
\def\basicwswisO[#1]#2{\WSWAR{\cong}{#2}{#100}}%

% west-south-west isomorphism with lower name
\newcommand{\wswisO}{\@ifnextchar[{\basicwswisO}{\basicwswisO[133]}}%

% west-south-west equality
\let\wsweql=\eneeql%

% west-south-west equality with upper name
\let\Wsweql=\Eneeql%

% west-south-west equality with lower name
\let\wsweqL=\eneeqL%

% basic west-south-west pair of arrows
\def\basicwswbiar[#1]{\WSWBIAR{}{}{#100}}%

% west-south-west pair of arrows
\newcommand{\wswbiar}{\@ifnextchar[{\basicwswbiar}{\basicwswbiar[133]}}%

% basic west-south-west pair of arrows with names
\def\basicWswbiar[#1]#2#3{\WSWBIAR{#2}{#3}{#100}}%

% west-south-west pair of arrows with names
\newcommand{\Wswbiar}{\@ifnextchar[{\basicWswbiar}{\basicWswbiar[133]}}%
\let\wswbiaR=\Wswbiar

% basic west-south-west pair of distributors
\def\basicwswbidist[#1]{\WSWBIDIST{}{}{#100}}%

% west-south-west pair of distributors
\newcommand{\wswbidist}{\@ifnextchar[{\basicwswbidist}{\basicwswbidist[133]}}%

% basic west-south-west pair of distributors with names
\def\basicWswbidist[#1]#2#3{\WSWBIDIST{#2}{#3}{#100}}%

% west-south-west pair of distributors with names
\newcommand{\Wswbidist}{\@ifnextchar[{\basicWswbidist}{\basicWswbidist[133]}}%
\let\wswbidisT=\Wswbidist

% basic west-south-west pair of adjoint arrows
\def\basicwswadjar[#1]{\WSWADJAR{}{}{#100}}%

% west-south-west pair of adjoint arrows
\newcommand{\wswadjar}{\@ifnextchar[{\basicwswadjar}{\basicwswadjar[133]}}%

% basic west-south-west pair of adjoint  arrows with names
\def\basicWswadjar[#1]#2#3{\WSWADJAR{#2}{#3}{#100}}%

% west-south-west pair of adjoint arrows with names
\newcommand{\Wswadjar}{\@ifnextchar[{\basicWswadjar}{\basicWswadjar[133]}}%
\let\wswadjaR=\Wswadjar

% basic west-south-west pair of adjoint distributors
\def\basicwswadjdist[#1]{\WSWADJDIST{}{}{#100}}%

% west-south-west pair of adjoint distributors
\newcommand{\wswadjdist}{\@ifnextchar[{\basicwswadjdist}{\basicwswadjdist[133]}}%

% basic west-south-west pair of adjoint distributors with names
\def\basicWswadjdist[#1]#2#3{\WSWADJDIST{#2}{#3}{#100}}%

% west-south-west pair of adjoint distributors with names
\newcommand{\Wswadjdist}{\@ifnextchar[{\basicWswadjdist}{\basicWswadjdist[133]}}%
\let\wswadjdisT=\Wswadjdist


% WEST-NORTH-WEST ARROWS

% The following commands produce west-north-west arrows
% of horizontal extent n units

% \WNWAR{f}{g}{n} draws a west-north-west arrow with names f, g
% and length n units
\newcommand{\WNWAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Y,-\Z){\line(-2,1){#3}}%
\put(-\Y,\Z){\wnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWDIST{f}{g}{n} draws a west-north-west distributor
% with names f, g and length n units
\newcommand{\WNWDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Y,-\Z){\line(-2,1){#3}}%
\put(-\Y,\Z){\wnwhead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWDOTAR{f}{g}{n} draws a north-east dotted arrow
% with names f,g and length n units
\newcommand{\WNWDOTAR}[3]{\testdiagrammode%
\truex{100}\truey{268}\truez{134}%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\NUMBEROFDOTS=#3%
\divide\NUMBEROFDOTS by \value{y}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(\Y,-\Z)(-\value{y},\value{z}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(-\Y,\Z){\wnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWMONO{f}{g}{n} draws a west-north-west monomorphism
% with names f,g and length n units
\newcommand{\WNWMONO}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueTail%
\bimolength=#3%
\advance\bimolength by -\TrueMonoTail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\secondmonolength=\monolength%
\divide\secondmonolength by 2%
\begin{picture}(0,0)%
\put(\monolength,-\secondmonolength){\line(-2,1){\bimolength}}%
\put(\monolength,-\secondmonolength){\wnwhead}%
\put(-\Y,\Z){\wnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWEPI{f}{g}{n} draws a west-north-west epimorphism
% with names f, g and length n units
\newcommand{\WNWEPI}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueHead%
\bimolength=#3%
\advance\bimolength by -\TrueEpiHead%
\epilength=\bimolength%
\advance\epilength by -\Y%
\secondepilength=\epilength%
\divide\secondepilength by 2%
\begin{picture}(0,0)%
\put(\Y,-\Z){\line(-2,1){\bimolength}}%
\put(-\epilength,\secondepilength){\wnwhead}%
\put(-\Y,\Z){\wnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWBIMO{f}{g}{n} draws a west-north-west bimorphism
% with names f,g and length n units
\newcommand{\WNWBIMO}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\TrueTail\TrueHead%
\bimolength=#3%
\advance\bimolength by -\TrueMonoTail%
\monolength=\bimolength%
\advance\monolength by -\Y%
\advance\bimolength by -\TrueEpiHead%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\secondmonolength=\monolength%
\divide\secondmonolength by 2%
\secondepilength=\epilength%
\divide\secondepilength by 2%
\begin{picture}(0,0)%
\put(\monolength,-\secondmonolength){\line(-2,1){\bimolength}}%
\put(\monolength,-\secondmonolength){\wnwhead}%
\put(-\epilength,\secondepilength){\wnwhead}%
\put(-\Y,\Z){\wnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWBIAR{f}{g}{n} draws a pair of west-north-west arrows
% with names f,g and length n units
\newcommand{\WNWBIAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Y,-\Z){\begin{picture}(0,0)%
\truex{156}\truey{313}%
\put(-\value{x},-\value{y}){\line(-2,1){#3}}%
\put(\value{x},\value{y}){\line(-2,1){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(-\monolength,\secondepilength){\wnwhead}%
\put(-\epilength,\secondmonolength){\wnwhead}%
\end{picture}}
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWBIDIST{f}{g}{n} draws a pair of west-north-west distributors
% with names f,g and length n units
\newcommand{\WNWBIDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\truex{156}\truey{313}\truez{400}%
\put(\Y,-\Z){\begin{picture}(0,0)%
\put(-\value{x},-\value{y}){\line(-2,1){#3}}%
\put(\value{x},\value{y}){\line(-2,1){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(-\monolength,\secondepilength){\wnwhead}%
\put(-\epilength,\secondmonolength){\wnwhead}%
\end{picture}}
\put(\value{x},\value{y}){\circle{\value{z}}}%
\put(-\value{x},-\value{y}){\circle{\value{z}}}%
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWADJAR{f}{g}{n} draws a west-north-west pair of adjoint arrows
% with names f,g and length n units
\newcommand{\WNWADJAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Y,-\Z){\begin{picture}(0,0)%
\truex{156}\truey{313}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(-\value{x},-\value{y}){\line(-2,1){#3}}%
\put(-\epilength,\secondmonolength){\wnwhead}%
\put(-\monolength,\secondepilength){\line(2,-1){#3}}%
\put(\value{x},\value{y}){\esehead}%
\end{picture}}
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \WNWADJDIST{f}{g}{n} draws a west-north-west pair of adjoint distributors
% with names f,g and length n units
\newcommand{\WNWADJDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=\Y%
\divide\Z by 2%
\begin{picture}(0,0)%
\truex{156}\truey{313}\truez{400}%
\put(\Y,-\Z){\begin{picture}(0,0)%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Y%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Y%
\advance\secondepilength by \value{y}%
\put(-\value{x},-\value{y}){\line(-2,1){#3}}%
\put(-\epilength,\secondmonolength){\wnwhead}%
\put(-\monolength,\secondepilength){\line(2,-1){#3}}%
\put(\value{x},\value{y}){\esehead}%
\end{picture}}
\put(\value{x},\value{y}){\circle{\value{z}}}%
\put(-\value{x},-\value{y}){\circle{\value{z}}}%
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% The following commands produce west-north-west arrows;
% the default length is 13300 units

% basic west-north-west arrow
\def\basicwnwar[#1]{\WNWAR{}{}{#100}}%

% west-north-west arrow
\newcommand{\wnwar}{\@ifnextchar[{\basicwnwar}{\basicwnwar[133]}}%

% basic west-north-west arrow with upper name
\def\basicWnwar[#1]#2{\WNWAR{#2}{}{#100}}%

% west-north-west arrow with upper name
\newcommand{\Wnwar}{\@ifnextchar[{\basicWnwar}{\basicWnwar[133]}}%

% basic west-north-west arrow with lower name
\def\basicwnwaR[#1]#2{\WNWAR{}{#2}{#100}}%

% west-north-west arrow with lower name
\newcommand{\wnwaR}{\@ifnextchar[{\basicwnwaR}{\basicwnwaR[133]}}%

% basic west-north-west distributor
\def\basicwnwdist[#1]{\WNWDIST{}{}{#100}}%

% west-north-west distributor
\newcommand{\wnwdist}{\@ifnextchar[{\basicwnwdist}{\basicwnwdist[133]}}%

% basic west-north-west distributor with upper name
\def\basicWnwdist[#1]#2{\WNWDIST{#2}{}{#100}}%

% west-north-west distributor with upper name
\newcommand{\Wnwdist}{\@ifnextchar[{\basicWnwdist}{\basicWnwdist[133]}}%

% basic west-north-west distributor with lower name
\def\basicwnwdisT[#1]#2{\WNWDIST{}{#2}{#100}}%

% west-north-west distributor with lower name
\newcommand{\wnwdisT}{\@ifnextchar[{\basicwnwdisT}{\basicwnwdisT[133]}}%

% basic west-north-west dotted arrow
\def\basicwnwdotar[#1]{\WNWDOTAR{}{}{#100}}%

% west-north-west dotted arrow
\newcommand{\wnwdotar}{\@ifnextchar[{\basicwnwdotar}{\basicwnwdotar[133]}}%

% basic west-north-west dotted arrow with upper name
\def\basicWnwdotar[#1]#2{\WNWDOTAR{#2}{}{#100}}%

% west-north-west dotted arrow with upper name
\newcommand{\Wnwdotar}{\@ifnextchar[{\basicWnwdotar}{\basicWnwdotar[133]}}%

% basic west-north-west dotted arrow with lower name
\def\basicwnwdotaR[#1]#2{\WNWDOTAR{}{#2}{#100}}%

% west-north-west dotted arrow with lower name
\newcommand{\wnwdotaR}{\@ifnextchar[{\basicwnwdotaR}{\basicwnwdotaR[133]}}%

% basic west-north-west monomorphism
\def\basicwnwmono[#1]{\WNWMONO{}{}{#100}}%

% west-north-west monomorphism
\newcommand{\wnwmono}{\@ifnextchar[{\basicwnwmono}{\basicwnwmono[133]}}%

% basic west-north-west monomorphism with upper name
\def\basicWnwmono[#1]#2{\WNWMONO{#2}{}{#100}}%

% west-north-west monomorphism with upper name
\newcommand{\Wnwmono}{\@ifnextchar[{\basicWnwmono}{\basicWnwmono[133]}}%

% basic west-north-west monomorphism with lower name
\def\basicwnwmonO[#1]#2{\WNWMONO{}{#2}{#100}}%

% west-north-west monomorphism with lower name
\newcommand{\wnwmonO}{\@ifnextchar[{\basicwnwmonO}{\basicwnwmonO[133]}}%

% basic west-north-west epimorphism
\def\basicwnwepi[#1]{\WNWEPI{}{}{#100}}%

% west-north-west epimorphism
\newcommand{\wnwepi}{\@ifnextchar[{\basicwnwepi}{\basicwnwepi[133]}}%

% basic west-north-west epimorphism with upper name
\def\basicWnwepi[#1]#2{\WNWEPI{#2}{}{#100}}%

% west-north-west epimorphism with upper name
\newcommand{\Wnwepi}{\@ifnextchar[{\basicWnwepi}{\basicWnwepi[133]}}%

% basic west-north-west epimorphism with lower name
\def\basicwnwepI[#1]#2{\WNWEPI{}{#2}{#100}}%

% west-north-west epimorphism with lower name
\newcommand{\wnwepI}{\@ifnextchar[{\basicwnwepI}{\basicwnwepI[133]}}%

% basic west-north-west bimorphism
\def\basicwnwbimo[#1]{\WNWBIMO{}{}{#100}}%

% west-north-west bimorphism
\newcommand{\wnwbimo}{\@ifnextchar[{\basicwnwbimo}{\basicwnwbimo[133]}}%

% basic west-north-west bimorphism with upper name
\def\basicWnwbimo[#1]#2{\WNWBIMO{#2}{}{#100}}%

% west-north-west bimorphism with upper name
\newcommand{\Wnwbimo}{\@ifnextchar[{\basicWnwbimo}{\basicWnwbimo[133]}}%

% basic west-north-west bimorphism with lower name
\def\basicwnwbimO[#1]#2{\WNWBIMO{}{#2}{#100}}%

% west-north-west bimorphism with lower name
\newcommand{\wnwbimO}{\@ifnextchar[{\basicwnwbimO}{\basicwnwbimO[133]}}%

% basic west-north-west isomorphism
\def\basicwnwiso[#1]{\WNWAR{\cong}{}{#100}}%

% west-north-west isomorphism
\newcommand{\wnwiso}{\@ifnextchar[{\basicwnwiso}{\basicwnwiso[133]}}%

% basic west-north-west isomorphism with upper name
\def\basicWnwiso[#1]#2{\WNWAR{#2}{\cong}{#100}}%

% west-north-west isomorphism with upper name
\newcommand{\Wnwiso}{\@ifnextchar[{\basicWnwiso}{\basicWnwiso[133]}}%

% basic west-north-west isomorphism with lower name
\def\basicwnwisO[#1]#2{\WNWAR{\cong}{#2}{#100}}%

% west-north-west isomorphism with lower name
\newcommand{\wnwisO}{\@ifnextchar[{\basicwnwisO}{\basicwnwisO[133]}}%

% west-north-west equality
\let\wnweql=\eseeql%

% west-north-west equality with upper name
\let\Wnweql=\Eseeql%

% west-north-west equality with lower name
\let\wnweqL=\eseeqL%

% basic west-north-west pair of arrows
\def\basicwnwbiar[#1]{\WNWBIAR{}{}{#100}}%

% west-north-west pair of arrows
\newcommand{\wnwbiar}{\@ifnextchar[{\basicwnwbiar}{\basicwnwbiar[133]}}%

% basic west-north-west pair of arrows with names
\def\basicWnwbiar[#1]#2#3{\WNWBIAR{#2}{#3}{#100}}%

% west-north-west pair of arrows with names
\newcommand{\Wnwbiar}{\@ifnextchar[{\basicWnwbiar}{\basicWnwbiar[133]}}%
\let\wnwbiaR=\Wnwbiar

% basic west-north-west pair of distributors
\def\basicwnwbidist[#1]{\WNWBIDIST{}{}{#100}}%

% west-north-west pair of distributors
\newcommand{\wnwbidist}{\@ifnextchar[{\basicwnwbidist}{\basicwnwbidist[133]}}%

% basic west-north-west pair of distributors with names
\def\basicWnwbidist[#1]#2#3{\WNWBIDIST{#2}{#3}{#100}}%

% west-north-west pair of distributors with names
\newcommand{\Wnwbidist}{\@ifnextchar[{\basicWnwbidist}{\basicWnwbidist[133]}}%
\let\wnwbidisT=\Wnwbidist

% basic west-north-west pair of adjoint arrows
\def\basicwnwadjar[#1]{\WNWADJAR{}{}{#100}}%

% west-north-west pair of adjoint arrows
\newcommand{\wnwadjar}{\@ifnextchar[{\basicwnwadjar}{\basicwnwadjar[133]}}%

% basic west-north-west pair of adjoint  arrows with names
\def\basicWnwadjar[#1]#2#3{\WNWADJAR{#2}{#3}{#100}}%

% west-north-west pair of adjoint arrows with names
\newcommand{\Wnwadjar}{\@ifnextchar[{\basicWnwadjar}{\basicWnwadjar[133]}}%
\let\wnwadjaR=\Wnwadjar

% basic west-north-west pair of adjoint distributors
\def\basicwnwadjdist[#1]{\WNWADJDIST{}{}{#100}}%

% west-north-west pair of adjoint distributors
\newcommand{\wnwadjdist}{\@ifnextchar[{\basicwnwadjdist}{\basicwnwadjdist[133]}}%

% basic west-north-west pair of adjoint distributors with names
\def\basicWnwadjdist[#1]#2#3{\WNWADJDIST{#2}{#3}{#100}}%

% west-north-west pair of adjoint distributors with names
\newcommand{\Wnwadjdist}{\@ifnextchar[{\basicWnwadjdist}{\basicWnwadjdist[133]}}%
\let\wnwadjdisT=\Wnwadjdist


% NORTH-NORTH-EAST ARROWS

% The following commands produce north-north-east arrows
% of horizontal extent n units

% \NNEAR{f}{g}{n} draws a north-north-east arrow with names f, g
% and length n units
\newcommand{\NNEAR}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Z,-#3){\line(1,2){#3}}%
\put(\Z,#3){\nnehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEDIST{f}{g}{n} draws a north-north-east distributor
% with names f, g and length n units
\newcommand{\NNEDIST}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Z,-#3){\line(1,2){#3}}%
\put(\Z,#3){\nnehead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEDOTAR{f}{g}{n} draws a north-east dotted arrow
% with names f,g and length n units
\newcommand{\NNEDOTAR}[3]{\testdiagrammode%
\truex{100}\truey{268}\truez{134}%
\Z=#3%
\divide\Z by 2%
\NUMBEROFDOTS=#3%
\divide\NUMBEROFDOTS by \value{z}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(-\Z,-#3)(\value{z},\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(\Z,#3){\nnehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEMONO{f}{g}{n} draws a north-north-east monomorphism
% with names f,g and length n units
\newcommand{\NNEMONO}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\truetaiL%
\bimolength=#3%
\advance\bimolength by -\truemonotaiL%
\monolength=\bimolength%
\advance\monolength by -\Z%
\secondmonolength=\monolength%
\multiply\secondmonolength by 2%
\begin{picture}(0,0)%
\put(-\monolength,-\secondmonolength){\line(1,2){\bimolength}}%
\put(-\monolength,-\secondmonolength){\nnehead}%
\put(\Z,#3){\nnehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEEPI{f}{g}{n} draws a north-north-east epimorphism
% with names f, g and length n units
\newcommand{\NNEEPI}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\trueheaD%
\bimolength=#3%
\advance\bimolength by -\trueepiheaD%
\epilength=\bimolength%
\advance\epilength by -\Z%
\secondepilength=\epilength%
\multiply\secondepilength by 2%
\begin{picture}(0,0)%
\put(-\Z,-#3){\line(1,2){\bimolength}}%
\put(\epilength,\secondepilength){\nnehead}%
\put(\Z,#3){\nnehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEBIMO{f}{g}{n} draws a north-north-east bimorphism
% with names f,g and length n units
\newcommand{\NNEBIMO}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\truetaiL\trueheaD%
\bimolength=#3%
\advance\bimolength by -\truemonotaiL%
\monolength=\bimolength%
\advance\monolength by -\Z%
\advance\bimolength by -\trueepiheaD%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\secondmonolength=\monolength%
\multiply\secondmonolength by 2%
\secondepilength=\epilength%
\multiply\secondepilength by 2%
\begin{picture}(0,0)%
\put(-\monolength,-\secondmonolength){\line(1,2){\bimolength}}%
\put(-\monolength,-\secondmonolength){\nnehead}%
\put(\epilength,\secondepilength){\nnehead}%
\put(\Z,#3){\nnehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEEQL{f}{g}{n} draws a north-north-east equality
% with names f,g and length n units
\newcommand{\NNEEQL}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Z,-#3){\begin{picture}(0,0)%
\truex{44}\truey{89}%
\put(-\value{y},\value{x}){\line(1,2){#3}}%
\put(\value{y},-\value{x}){\line(1,2){#3}}%
\end{picture}}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEBIAR{f}{g}{n} draws a pair of north-north-east arrows
% with names f,g and length n units
\newcommand{\NNEBIAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\put(-\Y,-#3){\begin{picture}(0,0)%
\truex{313}\truey{156}%
\put(-\value{x},\value{y}){\line(1,2){#3}}%
\put(\value{x},-\value{y}){\line(1,2){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(\monolength,\secondepilength){\nnehead}%
\put(\epilength,\secondmonolength){\nnehead}%
\end{picture}}
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEBIDIST{f}{g}{n} draws a pair of north-north-east distributors
% with names f,g and length n units
\newcommand{\NNEBIDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\truex{313}\truey{156}\truez{400}%
\put(-\Y,-#3){\begin{picture}(0,0)%
\put(-\value{x},\value{y}){\line(1,2){#3}}%
\put(\value{x},-\value{y}){\line(1,2){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(\monolength,\secondepilength){\nnehead}%
\put(\epilength,\secondmonolength){\nnehead}%
\end{picture}}
\put(-\value{x},\value{y}){\circle{\value{z}}}%
\put(\value{x},-\value{y}){\circle{\value{z}}}%
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEADJAR{f}{g}{n} draws a north-north-east pair of adjoint arrows
% with names f,g and length n units
\newcommand{\NNEADJAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\put(-\Y,-#3){\begin{picture}(0,0)%
\truex{313}\truey{156}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(\value{x},-\value{y}){\line(1,2){#3}}%
\put(\epilength,\secondmonolength){\nnehead}%
\put(\monolength,\secondepilength){\line(-1,-2){#3}}%
\put(-\value{x},\value{y}){\sswhead}%
\end{picture}}
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \NNEADJDIST{f}{g}{n} draws a north-north-east pair of adjoint distributors
% with names f,g and length n units
\newcommand{\NNEADJDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\truex{313}\truey{156}\truez{400}%
\put(-\Y,-#3){\begin{picture}(0,0)%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(\value{x},-\value{y}){\line(1,2){#3}}%
\put(\epilength,\secondmonolength){\nnehead}%
\put(\monolength,\secondepilength){\line(-1,-2){#3}}%
\put(-\value{x},\value{y}){\sswhead}%
\end{picture}}
\put(-\value{x},\value{y}){\circle{\value{z}}}%
\put(\value{x},-\value{y}){\circle{\value{z}}}%
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% The following commands produce north-north-east arrows;
% the default length is 6700 units

% basic north-north-east arrow
\def\basicnnear[#1]{\NNEAR{}{}{#100}}%

% north-north-east arrow
\newcommand{\nnear}{\@ifnextchar[{\basicnnear}{\basicnnear[67]}}%

% basic north-north-east arrow with upper name
\def\basicNnear[#1]#2{\NNEAR{#2}{}{#100}}%

% north-north-east arrow with upper name
\newcommand{\Nnear}{\@ifnextchar[{\basicNnear}{\basicNnear[67]}}%

% basic north-north-east arrow with lower name
\def\basicnneaR[#1]#2{\NNEAR{}{#2}{#100}}%

% north-north-east arrow with lower name
\newcommand{\nneaR}{\@ifnextchar[{\basicnneaR}{\basicnneaR[67]}}%

% basic north-north-east distributor
\def\basicnnedist[#1]{\NNEDIST{}{}{#100}}%

% north-north-east distributor
\newcommand{\nnedist}{\@ifnextchar[{\basicnnedist}{\basicnnedist[67]}}%

% basic north-north-east distributor with upper name
\def\basicNnedist[#1]#2{\NNEDIST{#2}{}{#100}}%

% north-north-east distributor with upper name
\newcommand{\Nnedist}{\@ifnextchar[{\basicNnedist}{\basicNnedist[67]}}%

% basic north-north-east distributor with lower name
\def\basicnnedisT[#1]#2{\NNEDIST{}{#2}{#100}}%

% north-north-east distributor with lower name
\newcommand{\nnedisT}{\@ifnextchar[{\basicnnedisT}{\basicnnedisT[67]}}%

% basic north-north-east dotted arrow
\def\basicnnedotar[#1]{\NNEDOTAR{}{}{#100}}%

% north-north-east dotted arrow
\newcommand{\nnedotar}{\@ifnextchar[{\basicnnedotar}{\basicnnedotar[67]}}%

% basic north-north-east dotted arrow with upper name
\def\basicNnedotar[#1]#2{\NNEDOTAR{#2}{}{#100}}%

% north-north-east dotted arrow with upper name
\newcommand{\Nnedotar}{\@ifnextchar[{\basicNnedotar}{\basicNnedotar[67]}}%

% basic north-north-east dotted arrow with lower name
\def\basicnnedotaR[#1]#2{\NNEDOTAR{}{#2}{#100}}%

% north-north-east dotted arrow with lower name
\newcommand{\nnedotaR}{\@ifnextchar[{\basicnnedotaR}{\basicnnedotaR[67]}}%

% basic north-north-east monomorphism
\def\basicnnemono[#1]{\NNEMONO{}{}{#100}}%

% north-north-east monomorphism
\newcommand{\nnemono}{\@ifnextchar[{\basicnnemono}{\basicnnemono[67]}}%

% basic north-north-east monomorphism with upper name
\def\basicNnemono[#1]#2{\NNEMONO{#2}{}{#100}}%

% north-north-east monomorphism with upper name
\newcommand{\Nnemono}{\@ifnextchar[{\basicNnemono}{\basicNnemono[67]}}%

% basic north-north-east monomorphism with lower name
\def\basicnnemonO[#1]#2{\NNEMONO{}{#2}{#100}}%

% north-north-east monomorphism with lower name
\newcommand{\nnemonO}{\@ifnextchar[{\basicnnemonO}{\basicnnemonO[67]}}%

% basic north-north-east epimorphism
\def\basicnneepi[#1]{\NNEEPI{}{}{#100}}%

% north-north-east epimorphism
\newcommand{\nneepi}{\@ifnextchar[{\basicnneepi}{\basicnneepi[67]}}%

% basic north-north-east epimorphism with upper name
\def\basicNneepi[#1]#2{\NNEEPI{#2}{}{#100}}%

% north-north-east epimorphism with upper name
\newcommand{\Nneepi}{\@ifnextchar[{\basicNneepi}{\basicNneepi[67]}}%

% basic north-north-east epimorphism with lower name
\def\basicnneepI[#1]#2{\NNEEPI{}{#2}{#100}}%

% north-north-east epimorphism with lower name
\newcommand{\nneepI}{\@ifnextchar[{\basicnneepI}{\basicnneepI[67]}}%

% basic north-north-east bimorphism
\def\basicnnebimo[#1]{\NNEBIMO{}{}{#100}}%

% north-north-east bimorphism
\newcommand{\nnebimo}{\@ifnextchar[{\basicnnebimo}{\basicnnebimo[67]}}%

% basic north-north-east bimorphism with upper name
\def\basicNnebimo[#1]#2{\NNEBIMO{#2}{}{#100}}%

% north-north-east bimorphism with upper name
\newcommand{\Nnebimo}{\@ifnextchar[{\basicNnebimo}{\basicNnebimo[67]}}%

% basic north-north-east bimorphism with lower name
\def\basicnnebimO[#1]#2{\NNEBIMO{}{#2}{#100}}%

% north-north-east bimorphism with lower name
\newcommand{\nnebimO}{\@ifnextchar[{\basicnnebimO}{\basicnnebimO[67]}}%

% basic north-north-east isomorphism
\def\basicnneiso[#1]{\NNEAR{\cong}{}{#100}}%

% north-north-east isomorphism
\newcommand{\nneiso}{\@ifnextchar[{\basicnneiso}{\basicnneiso[67]}}%

% basic north-north-east isomorphism with upper name
\def\basicNneiso[#1]#2{\NNEAR{#2}{\cong}{#100}}%

% north-north-east isomorphism with upper name
\newcommand{\Nneiso}{\@ifnextchar[{\basicNneiso}{\basicNneiso[67]}}%

% basic north-north-east isomorphism with lower name
\def\basicnneisO[#1]#2{\NNEAR{\cong}{#2}{#100}}%

% north-north-east isomorphism with lower name
\newcommand{\nneisO}{\@ifnextchar[{\basicnneisO}{\basicnneisO[67]}}%

% basic north-north-east equality
\def\basicnneeql[#1]{\NNEEQL{}{}{#100}}%

% north-north-east equality
\newcommand{\nneeql}{\@ifnextchar[{\basicnneeql}{\basicnneeql[67]}}%

% basic north-north-east equality with upper name
\def\basicNneeql[#1]#2{\NNEEQL{#2}{}{#100}}%

% north-north-east equality with upper name
\newcommand{\Nneeql}{\@ifnextchar[{\basicNneeql}{\basicNneeql[67]}}%

% basic north-north-east equality with lower name
\def\basicnneeqL[#1]#2{\NNEEQL{}{#2}{#100}}%

% north-north-east equality with lower name
\newcommand{\nneeqL}{\@ifnextchar[{\basicnneeqL}{\basicnneeqL[67]}}%

% basic north-north-east pair of arrows
\def\basicnnebiar[#1]{\NNEBIAR{}{}{#100}}%

% north-north-east pair of arrows
\newcommand{\nnebiar}{\@ifnextchar[{\basicnnebiar}{\basicnnebiar[67]}}%

% basic north-north-east pair of arrows with names
\def\basicNnebiar[#1]#2#3{\NNEBIAR{#2}{#3}{#100}}%

% north-north-east pair of arrows with names
\newcommand{\Nnebiar}{\@ifnextchar[{\basicNnebiar}{\basicNnebiar[67]}}%
\let\nnebiaR=\Nnebiar

% basic north-north-east pair of distributors
\def\basicnnebidist[#1]{\NNEBIDIST{}{}{#100}}%

% north-north-east pair of distributors
\newcommand{\nnebidist}{\@ifnextchar[{\basicnnebidist}{\basicnnebidist[67]}}%

% basic north-north-east pair of distributors with names
\def\basicNnebidist[#1]#2#3{\NNEBIDIST{#2}{#3}{#100}}%

% north-north-east pair of distributors with names
\newcommand{\Nnebidist}{\@ifnextchar[{\basicNnebidist}{\basicNnebidist[67]}}%
\let\nnebidisT=\Nnebidist

% basic north-north-east pair of adjoint arrows
\def\basicnneadjar[#1]{\NNEADJAR{}{}{#100}}%

% north-north-east pair of adjoint arrows
\newcommand{\nneadjar}{\@ifnextchar[{\basicnneadjar}{\basicnneadjar[67]}}%

% basic north-north-east pair of adjoint  arrows with names
\def\basicNneadjar[#1]#2#3{\NNEADJAR{#2}{#3}{#100}}%

% north-north-east pair of adjoint arrows with names
\newcommand{\Nneadjar}{\@ifnextchar[{\basicNneadjar}{\basicNneadjar[67]}}%
\let\nneadjaR=\Nneadjar

% basic north-north-east pair of adjoint distributors
\def\basicnneadjdist[#1]{\NNEADJDIST{}{}{#100}}%

% north-north-east pair of adjoint distributors
\newcommand{\nneadjdist}{\@ifnextchar[{\basicnneadjdist}{\basicnneadjdist[67]}}%

% basic north-north-east pair of adjoint distributors with names
\def\basicNneadjdist[#1]#2#3{\NNEADJDIST{#2}{#3}{#100}}%

% north-north-east pair of adjoint distributors with names
\newcommand{\Nneadjdist}{\@ifnextchar[{\basicNneadjdist}{\basicNneadjdist[67]}}%
\let\nneadjdisT=\Nneadjdist


% SOUTH-SOUTH-EAST ARROWS

% The following commands produce south-south-east arrows
% of horizontal extent n units

% \SSEAR{f}{g}{n} draws a south-south-east arrow with names f, g
% and length n units
\newcommand{\SSEAR}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Z,#3){\line(1,-2){#3}}%
\put(\Z,-#3){\ssehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEDIST{f}{g}{n} draws a south-south-east distributor
% with names f, g and length n units
\newcommand{\SSEDIST}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Z,#3){\line(1,-2){#3}}%
\put(\Z,-#3){\ssehead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEDOTAR{f}{g}{n} draws a north-east dotted arrow
% with names f,g and length n units
\newcommand{\SSEDOTAR}[3]{\testdiagrammode%
\truex{100}\truey{268}\truez{134}%
\Z=#3%
\divide\Z by 2%
\NUMBEROFDOTS=#3%
\divide\NUMBEROFDOTS by \value{z}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(-\Z,#3)(\value{z},-\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(\Z,-#3){\ssehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEMONO{f}{g}{n} draws a south-south-east monomorphism
% with names f,g and length n units
\newcommand{\SSEMONO}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\truetaiL%
\bimolength=#3%
\advance\bimolength by -\truemonotaiL%
\monolength=\bimolength%
\advance\monolength by -\Z%
\secondmonolength=\monolength%
\multiply\secondmonolength by 2%
\begin{picture}(0,0)%
\put(-\monolength,\secondmonolength){\line(1,-2){\bimolength}}%
\put(-\monolength,\secondmonolength){\ssehead}%
\put(\Z,-#3){\ssehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEEPI{f}{g}{n} draws a south-south-east epimorphism
% with names f, g and length n units
\newcommand{\SSEEPI}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\trueheaD%
\bimolength=#3%
\advance\bimolength by -\trueepiheaD%
\epilength=\bimolength%
\advance\epilength by -\Z%
\secondepilength=\epilength%
\multiply\secondepilength by 2%
\begin{picture}(0,0)%
\put(-\Z,#3){\line(1,-2){\bimolength}}%
\put(\epilength,-\secondepilength){\ssehead}%
\put(\Z,-#3){\ssehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEBIMO{f}{g}{n} draws a south-south-east bimorphism
% with names f,g and length n units
\newcommand{\SSEBIMO}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\truetaiL\trueheaD%
\bimolength=#3%
\advance\bimolength by -\truemonotaiL%
\monolength=\bimolength%
\advance\monolength by -\Z%
\advance\bimolength by -\trueepiheaD%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\secondmonolength=\monolength%
\multiply\secondmonolength by 2%
\secondepilength=\epilength%
\multiply\secondepilength by 2%
\begin{picture}(0,0)%
\put(-\monolength,\secondmonolength){\line(1,-2){\bimolength}}%
\put(-\monolength,\secondmonolength){\ssehead}%
\put(\epilength,-\secondepilength){\ssehead}%
\put(\Z,-#3){\ssehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEEQL{f}{g}{n} draws a south-south-east equality
% with names f,g and length n units
\newcommand{\SSEEQL}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(-\Z,#3){\begin{picture}(0,0)%
\truex{44}\truey{89}%
\put(-\value{y},-\value{x}){\line(1,-2){#3}}%
\put(\value{y},\value{x}){\line(1,-2){#3}}%
\end{picture}}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEBIAR{f}{g}{n} draws a pair of south-south-east arrows
% with names f,g and length n units
\newcommand{\SSEBIAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\put(-\Y,#3){\begin{picture}(0,0)%
\truex{313}\truey{156}%
\put(-\value{x},-\value{y}){\line(1,-2){#3}}%
\put(\value{x},\value{y}){\line(1,-2){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(\monolength,-\secondepilength){\ssehead}%
\put(\epilength,-\secondmonolength){\ssehead}%
\end{picture}}
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEBIDIST{f}{g}{n} draws a pair of south-south-east distributors
% with names f,g and length n units
\newcommand{\SSEBIDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\truex{313}\truey{156}\truez{400}%
\put(-\Y,#3){\begin{picture}(0,0)%
\put(-\value{x},-\value{y}){\line(1,-2){#3}}%
\put(\value{x},\value{y}){\line(1,-2){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(\monolength,-\secondepilength){\ssehead}%
\put(\epilength,-\secondmonolength){\ssehead}%
\end{picture}}
\put(-\value{x},-\value{y}){\circle{\value{z}}}%
\put(\value{x},\value{y}){\circle{\value{z}}}%
\truex{500}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEADJAR{f}{g}{n} draws a south-south-east pair of adjoint arrows
% with names f,g and length n units
\newcommand{\SSEADJAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\put(-\Y,#3){\begin{picture}(0,0)%
\truex{313}\truey{156}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(-\value{x},-\value{y}){\line(1,-2){#3}}%
\put(\monolength,-\secondepilength){\ssehead}%
\put(\epilength,-\secondmonolength){\line(-1,2){#3}}%
\put(\value{x},\value{y}){\nnwhead}%
\end{picture}}
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \SSEADJDIST{f}{g}{n} draws a south-south-east pair of adjoint distributors
% with names f,g and length n units
\newcommand{\SSEADJDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\truex{313}\truey{156}\truez{400}%
\put(-\Y,#3){\begin{picture}(0,0)%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(-\value{x},-\value{y}){\line(1,-2){#3}}%
\put(\monolength,-\secondepilength){\ssehead}%
\put(\epilength,-\secondmonolength){\line(-1,2){#3}}%
\put(\value{x},\value{y}){\nnwhead}%
\end{picture}}
\put(\value{x},\value{y}){\circle{\value{z}}}%
\put(-\value{x},-\value{y}){\circle{\value{z}}}%
\truex{500}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%


% The following commands produce south-south-east arrows;
% the default length is 6700 units

% basic south-south-east arrow
\def\basicssear[#1]{\SSEAR{}{}{#100}}%

% south-south-east arrow
\newcommand{\ssear}{\@ifnextchar[{\basicssear}{\basicssear[67]}}%

% basic south-south-east arrow with upper name
\def\basicSsear[#1]#2{\SSEAR{#2}{}{#100}}%

% south-south-east arrow with upper name
\newcommand{\Ssear}{\@ifnextchar[{\basicSsear}{\basicSsear[67]}}%

% basic south-south-east arrow with lower name
\def\basicsseaR[#1]#2{\SSEAR{}{#2}{#100}}%

% south-south-east arrow with lower name
\newcommand{\sseaR}{\@ifnextchar[{\basicsseaR}{\basicsseaR[67]}}%

% basic south-south-east distributor
\def\basicssedist[#1]{\SSEDIST{}{}{#100}}%

% south-south-east distributor
\newcommand{\ssedist}{\@ifnextchar[{\basicssedist}{\basicssedist[67]}}%

% basic south-south-east distributor with upper name
\def\basicSsedist[#1]#2{\SSEDIST{#2}{}{#100}}%

% south-south-east distributor with upper name
\newcommand{\Ssedist}{\@ifnextchar[{\basicSsedist}{\basicSsedist[67]}}%

% basic south-south-east distributor with lower name
\def\basicssedisT[#1]#2{\SSEDIST{}{#2}{#100}}%

% south-south-east distributor with lower name
\newcommand{\ssedisT}{\@ifnextchar[{\basicssedisT}{\basicssedisT[67]}}%

% basic south-south-east dotted arrow
\def\basicssedotar[#1]{\SSEDOTAR{}{}{#100}}%

% south-south-east dotted arrow
\newcommand{\ssedotar}{\@ifnextchar[{\basicssedotar}{\basicssedotar[67]}}%

% basic south-south-east dotted arrow with upper name
\def\basicSsedotar[#1]#2{\SSEDOTAR{#2}{}{#100}}%

% south-south-east dotted arrow with upper name
\newcommand{\Ssedotar}{\@ifnextchar[{\basicSsedotar}{\basicSsedotar[67]}}%

% basic south-south-east dotted arrow with lower name
\def\basicssedotaR[#1]#2{\SSEDOTAR{}{#2}{#100}}%

% south-south-east dotted arrow with lower name
\newcommand{\ssedotaR}{\@ifnextchar[{\basicssedotaR}{\basicssedotaR[67]}}%

% basic south-south-east monomorphism
\def\basicssemono[#1]{\SSEMONO{}{}{#100}}%

% south-south-east monomorphism
\newcommand{\ssemono}{\@ifnextchar[{\basicssemono}{\basicssemono[67]}}%

% basic south-south-east monomorphism with upper name
\def\basicSsemono[#1]#2{\SSEMONO{#2}{}{#100}}%

% south-south-east monomorphism with upper name
\newcommand{\Ssemono}{\@ifnextchar[{\basicSsemono}{\basicSsemono[67]}}%

% basic south-south-east monomorphism with lower name
\def\basicssemonO[#1]#2{\SSEMONO{}{#2}{#100}}%

% south-south-east monomorphism with lower name
\newcommand{\ssemonO}{\@ifnextchar[{\basicssemonO}{\basicssemonO[67]}}%

% basic south-south-east epimorphism
\def\basicsseepi[#1]{\SSEEPI{}{}{#100}}%

% south-south-east epimorphism
\newcommand{\sseepi}{\@ifnextchar[{\basicsseepi}{\basicsseepi[67]}}%

% basic south-south-east epimorphism with upper name
\def\basicSseepi[#1]#2{\SSEEPI{#2}{}{#100}}%

% south-south-east epimorphism with upper name
\newcommand{\Sseepi}{\@ifnextchar[{\basicSseepi}{\basicSseepi[67]}}%

% basic south-south-east epimorphism with lower name
\def\basicsseepI[#1]#2{\SSEEPI{}{#2}{#100}}%

% south-south-east epimorphism with lower name
\newcommand{\sseepI}{\@ifnextchar[{\basicsseepI}{\basicsseepI[67]}}%

% basic south-south-east bimorphism
\def\basicssebimo[#1]{\SSEBIMO{}{}{#100}}%

% south-south-east bimorphism
\newcommand{\ssebimo}{\@ifnextchar[{\basicssebimo}{\basicssebimo[67]}}%

% basic south-south-east bimorphism with upper name
\def\basicSsebimo[#1]#2{\SSEBIMO{#2}{}{#100}}%

% south-south-east bimorphism with upper name
\newcommand{\Ssebimo}{\@ifnextchar[{\basicSsebimo}{\basicSsebimo[67]}}%

% basic south-south-east bimorphism with lower name
\def\basicssebimO[#1]#2{\SSEBIMO{}{#2}{#100}}%

% south-south-east bimorphism with lower name
\newcommand{\ssebimO}{\@ifnextchar[{\basicssebimO}{\basicssebimO[67]}}%

% basic south-south-east isomorphism
\def\basicsseiso[#1]{\SSEAR{\cong}{}{#100}}%

% south-south-east isomorphism
\newcommand{\sseiso}{\@ifnextchar[{\basicsseiso}{\basicsseiso[67]}}%

% basic south-south-east isomorphism with upper name
\def\basicSseiso[#1]#2{\SSEAR{#2}{\cong}{#100}}%

% south-south-east isomorphism with upper name
\newcommand{\Sseiso}{\@ifnextchar[{\basicSseiso}{\basicSseiso[67]}}%

% basic south-south-east isomorphism with lower name
\def\basicsseisO[#1]#2{\SSEAR{\cong}{#2}{#100}}%

% south-south-east isomorphism with lower name
\newcommand{\sseisO}{\@ifnextchar[{\basicsseisO}{\basicsseisO[67]}}%

% basic south-south-east equality
\def\basicsseeql[#1]{\SSEEQL{}{}{#100}}%

% south-south-east equality
\newcommand{\sseeql}{\@ifnextchar[{\basicsseeql}{\basicsseeql[67]}}%

% basic south-south-east equality with upper name
\def\basicSseeql[#1]#2{\SSEEQL{#2}{}{#100}}%

% south-south-east equality with upper name
\newcommand{\Sseeql}{\@ifnextchar[{\basicSseeql}{\basicSseeql[67]}}%

% basic south-south-east equality with lower name
\def\basicsseeqL[#1]#2{\SSEEQL{}{#2}{#100}}%

% south-south-east equality with lower name
\newcommand{\sseeqL}{\@ifnextchar[{\basicsseeqL}{\basicsseeqL[67]}}%

% basic south-south-east pair of arrows
\def\basicssebiar[#1]{\SSEBIAR{}{}{#100}}%

% south-south-east pair of arrows
\newcommand{\ssebiar}{\@ifnextchar[{\basicssebiar}{\basicssebiar[67]}}%

% basic south-south-east pair of arrows with names
\def\basicSsebiar[#1]#2#3{\SSEBIAR{#2}{#3}{#100}}%

% south-south-east pair of arrows with names
\newcommand{\Ssebiar}{\@ifnextchar[{\basicSsebiar}{\basicSsebiar[67]}}%
\let\ssebiaR=\Ssebiar

% basic south-south-east pair of distributors
\def\basicssebidist[#1]{\SSEBIDIST{}{}{#100}}%

% south-south-east pair of distributors
\newcommand{\ssebidist}{\@ifnextchar[{\basicssebidist}{\basicssebidist[67]}}%

% basic south-south-east pair of distributors with names
\def\basicSsebidist[#1]#2#3{\SSEBIDIST{#2}{#3}{#100}}%

% south-south-east pair of distributors with names
\newcommand{\Ssebidist}{\@ifnextchar[{\basicSsebidist}{\basicSsebidist[67]}}%
\let\ssebidisT=\Ssebidist

% basic south-south-east pair of adjoint arrows
\def\basicsseadjar[#1]{\SSEADJAR{}{}{#100}}%

% south-south-east pair of adjoint arrows
\newcommand{\sseadjar}{\@ifnextchar[{\basicsseadjar}{\basicsseadjar[67]}}%

% basic south-south-east pair of adjoint  arrows with names
\def\basicSseadjar[#1]#2#3{\SSEADJAR{#2}{#3}{#100}}%

% south-south-east pair of adjoint arrows with names
\newcommand{\Sseadjar}{\@ifnextchar[{\basicSseadjar}{\basicSseadjar[67]}}%
\let\sseadjaR=\Sseadjar

% basic south-south-east pair of adjoint distributors
\def\basicsseadjdist[#1]{\SSEADJDIST{}{}{#100}}%

% south-south-east pair of adjoint distributors
\newcommand{\sseadjdist}{\@ifnextchar[{\basicsseadjdist}{\basicsseadjdist[67]}}%

% basic south-south-east pair of adjoint distributors with names
\def\basicSseadjdist[#1]#2#3{\SSEADJDIST{#2}{#3}{#100}}%

% south-south-east pair of adjoint distributors with names
\newcommand{\Sseadjdist}{\@ifnextchar[{\basicSseadjdist}{\basicSseadjdist[67]}}%
\let\sseadjdisT=\Sseadjdist


% SOUTH-SOUTH-WEST ARROWS

% The following commands produce south-south-west arrows
% of horizontal extent n units

% \SSWAR{f}{g}{n} draws a south-south-west arrow with names f, g
% and length n units
\newcommand{\SSWAR}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Z,#3){\line(-1,-2){#3}}%
\put(-\Z,-#3){\sswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWDIST{f}{g}{n} draws a south-south-west distributor
% with names f, g and length n units
\newcommand{\SSWDIST}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Z,#3){\line(-1,-2){#3}}%
\put(-\Z,-#3){\sswhead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWDOTAR{f}{g}{n} draws a north-east dotted arrow
% with names f,g and length n units
\newcommand{\SSWDOTAR}[3]{\testdiagrammode%
\truex{100}\truey{268}\truez{134}%
\Z=#3%
\divide\Z by 2%
\NUMBEROFDOTS=#3%
\divide\NUMBEROFDOTS by \value{z}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(\Z,#3)(-\value{z},-\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(-\Z,-#3){\sswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWMONO{f}{g}{n} draws a south-south-west monomorphism
% with names f,g and length n units
\newcommand{\SSWMONO}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\truetaiL%
\bimolength=#3%
\advance\bimolength by -\truemonotaiL%
\monolength=\bimolength%
\advance\monolength by -\Z%
\secondmonolength=\monolength%
\multiply\secondmonolength by 2%
\begin{picture}(0,0)%
\put(\monolength,\secondmonolength){\line(-1,-2){\bimolength}}%
\put(\monolength,\secondmonolength){\sswhead}%
\put(-\Z,-#3){\sswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWEPI{f}{g}{n} draws a south-south-west epimorphism
% with names f, g and length n units
\newcommand{\SSWEPI}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\trueheaD%
\bimolength=#3%
\advance\bimolength by -\trueepiheaD%
\epilength=\bimolength%
\advance\epilength by -\Z%
\secondepilength=\epilength%
\multiply\secondepilength by 2%
\begin{picture}(0,0)%
\put(\Z,#3){\line(-1,-2){\bimolength}}%
\put(-\epilength,-\secondepilength){\sswhead}%
\put(-\Z,-#3){\sswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWBIMO{f}{g}{n} draws a south-south-west bimorphism
% with names f,g and length n units
\newcommand{\SSWBIMO}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\truetaiL\trueheaD%
\bimolength=#3%
\advance\bimolength by -\truemonotaiL%
\monolength=\bimolength%
\advance\monolength by -\Z%
\advance\bimolength by -\trueepiheaD%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\secondmonolength=\monolength%
\multiply\secondmonolength by 2%
\secondepilength=\epilength%
\multiply\secondepilength by 2%
\begin{picture}(0,0)%
\put(\monolength,\secondmonolength){\line(-1,-2){\bimolength}}%
\put(\monolength,\secondmonolength){\sswhead}%
\put(-\epilength,-\secondepilength){\sswhead}%
\put(-\Z,-#3){\sswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWBIAR{f}{g}{n} draws a pair of south-south-west arrows
% with names f,g and length n units
\newcommand{\SSWBIAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\put(\Y,#3){\begin{picture}(0,0)%
\truex{313}\truey{156}%
\put(-\value{x},\value{y}){\line(-1,-2){#3}}%
\put(\value{x},-\value{y}){\line(-1,-2){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(-\monolength,-\secondepilength){\sswhead}%
\put(-\epilength,-\secondmonolength){\sswhead}%
\end{picture}}
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWBIDIST{f}{g}{n} draws a pair of south-south-west distributors
% with names f,g and length n units
\newcommand{\SSWBIDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\truex{313}\truey{156}\truez{400}%
\put(\Y,#3){\begin{picture}(0,0)%
\put(-\value{x},\value{y}){\line(-1,-2){#3}}%
\put(\value{x},-\value{y}){\line(-1,-2){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(-\monolength,-\secondepilength){\sswhead}%
\put(-\epilength,-\secondmonolength){\sswhead}%
\end{picture}}
\put(-\value{x},\value{y}){\circle{\value{z}}}%
\put(\value{x},-\value{y}){\circle{\value{z}}}%
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWADJAR{f}{g}{n} draws a south-south-west pair of adjoint arrows
% with names f,g and length n units
\newcommand{\SSWADJAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\put(\Y,#3){\begin{picture}(0,0)%
\truex{313}\truey{156}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(\value{x},-\value{y}){\line(-1,-2){#3}}%
\put(-\monolength,-\secondepilength){\sswhead}%
\put(-\epilength,-\secondmonolength){\line(1,2){#3}}%
\put(-\value{x},\value{y}){\nnehead}%
\end{picture}}
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% \SSWADJDIST{f}{g}{n} draws a south-south-west pair of adjoint distributors
% with names f,g and length n units
\newcommand{\SSWADJDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\truex{313}\truey{156}\truez{400}%
\put(\Y,#3){\begin{picture}(0,0)%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(\value{x},-\value{y}){\line(-1,-2){#3}}%
\put(-\monolength,-\secondepilength){\sswhead}%
\put(-\epilength,-\secondmonolength){\line(1,2){#3}}%
\put(-\value{x},\value{y}){\nnehead}%
\end{picture}}
\put(-\value{x},\value{y}){\circle{\value{z}}}%
\put(\value{x},-\value{y}){\circle{\value{z}}}%
\truex{300}\truey{1000}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% The following commands produce south-south-west arrows;
% the default length is 6700 units

% basic south-south-west arrow
\def\basicsswar[#1]{\SSWAR{}{}{#100}}%

% south-south-west arrow
\newcommand{\sswar}{\@ifnextchar[{\basicsswar}{\basicsswar[67]}}%

% basic south-south-west arrow with upper name
\def\basicSswar[#1]#2{\SSWAR{#2}{}{#100}}%

% south-south-west arrow with upper name
\newcommand{\Sswar}{\@ifnextchar[{\basicSswar}{\basicSswar[67]}}%

% basic south-south-west arrow with lower name
\def\basicsswaR[#1]#2{\SSWAR{}{#2}{#100}}%

% south-south-west arrow with lower name
\newcommand{\sswaR}{\@ifnextchar[{\basicsswaR}{\basicsswaR[67]}}%

% basic south-south-west distributor
\def\basicsswdist[#1]{\SSWDIST{}{}{#100}}%

% south-south-west distributor
\newcommand{\sswdist}{\@ifnextchar[{\basicsswdist}{\basicsswdist[67]}}%

% basic south-south-west distributor with upper name
\def\basicSswdist[#1]#2{\SSWDIST{#2}{}{#100}}%

% south-south-west distributor with upper name
\newcommand{\Sswdist}{\@ifnextchar[{\basicSswdist}{\basicSswdist[67]}}%

% basic south-south-west distributor with lower name
\def\basicsswdisT[#1]#2{\SSWDIST{}{#2}{#100}}%

% south-south-west distributor with lower name
\newcommand{\sswdisT}{\@ifnextchar[{\basicsswdisT}{\basicsswdisT[67]}}%

% basic south-south-west dotted arrow
\def\basicsswdotar[#1]{\SSWDOTAR{}{}{#100}}%

% south-south-west dotted arrow
\newcommand{\sswdotar}{\@ifnextchar[{\basicsswdotar}{\basicsswdotar[67]}}%

% basic south-south-west dotted arrow with upper name
\def\basicSswdotar[#1]#2{\SSWDOTAR{#2}{}{#100}}%

% south-south-west dotted arrow with upper name
\newcommand{\Sswdotar}{\@ifnextchar[{\basicSswdotar}{\basicSswdotar[67]}}%

% basic south-south-west dotted arrow with lower name
\def\basicsswdotaR[#1]#2{\SSWDOTAR{}{#2}{#100}}%

% south-south-west dotted arrow with lower name
\newcommand{\sswdotaR}{\@ifnextchar[{\basicsswdotaR}{\basicsswdotaR[67]}}%

% basic south-south-west monomorphism
\def\basicsswmono[#1]{\SSWMONO{}{}{#100}}%

% south-south-west monomorphism
\newcommand{\sswmono}{\@ifnextchar[{\basicsswmono}{\basicsswmono[67]}}%

% basic south-south-west monomorphism with upper name
\def\basicSswmono[#1]#2{\SSWMONO{#2}{}{#100}}%

% south-south-west monomorphism with upper name
\newcommand{\Sswmono}{\@ifnextchar[{\basicSswmono}{\basicSswmono[67]}}%

% basic south-south-west monomorphism with lower name
\def\basicsswmonO[#1]#2{\SSWMONO{}{#2}{#100}}%

% south-south-west monomorphism with lower name
\newcommand{\sswmonO}{\@ifnextchar[{\basicsswmonO}{\basicsswmonO[67]}}%

% basic south-south-west epimorphism
\def\basicsswepi[#1]{\SSWEPI{}{}{#100}}%

% south-south-west epimorphism
\newcommand{\sswepi}{\@ifnextchar[{\basicsswepi}{\basicsswepi[67]}}%

% basic south-south-west epimorphism with upper name
\def\basicSswepi[#1]#2{\SSWEPI{#2}{}{#100}}%

% south-south-west epimorphism with upper name
\newcommand{\Sswepi}{\@ifnextchar[{\basicSswepi}{\basicSswepi[67]}}%

% basic south-south-west epimorphism with lower name
\def\basicsswepI[#1]#2{\SSWEPI{}{#2}{#100}}%

% south-south-west epimorphism with lower name
\newcommand{\sswepI}{\@ifnextchar[{\basicsswepI}{\basicsswepI[67]}}%

% basic south-south-west bimorphism
\def\basicsswbimo[#1]{\SSWBIMO{}{}{#100}}%

% south-south-west bimorphism
\newcommand{\sswbimo}{\@ifnextchar[{\basicsswbimo}{\basicsswbimo[67]}}%

% basic south-south-west bimorphism with upper name
\def\basicSswbimo[#1]#2{\SSWBIMO{#2}{}{#100}}%

% south-south-west bimorphism with upper name
\newcommand{\Sswbimo}{\@ifnextchar[{\basicSswbimo}{\basicSswbimo[67]}}%

% basic south-south-west bimorphism with lower name
\def\basicsswbimO[#1]#2{\SSWBIMO{}{#2}{#100}}%

% south-south-west bimorphism with lower name
\newcommand{\sswbimO}{\@ifnextchar[{\basicsswbimO}{\basicsswbimO[67]}}%

% basic south-south-west isomorphism
\def\basicsswiso[#1]{\SSWAR{\cong}{}{#100}}%

% south-south-west isomorphism
\newcommand{\sswiso}{\@ifnextchar[{\basicsswiso}{\basicsswiso[67]}}%

% basic south-south-west isomorphism with upper name
\def\basicSswiso[#1]#2{\SSWAR{#2}{\cong}{#100}}%

% south-south-west isomorphism with upper name
\newcommand{\Sswiso}{\@ifnextchar[{\basicSswiso}{\basicSswiso[67]}}%

% basic south-south-west isomorphism with lower name
\def\basicsswisO[#1]#2{\SSWAR{\cong}{#2}{#100}}%

% south-south-west isomorphism with lower name
\newcommand{\sswisO}{\@ifnextchar[{\basicsswisO}{\basicsswisO[67]}}%

% south-south-west equality
\let\ssweql=\nneeql%

% south-south-west equality with upper name
\let\Ssweql=\Nneeql%

% south-south-west equality with lower name
\let\ssweqL=\nneeqL%

% basic south-south-west pair of arrows
\def\basicsswbiar[#1]{\SSWBIAR{}{}{#100}}%

% south-south-west pair of arrows
\newcommand{\sswbiar}{\@ifnextchar[{\basicsswbiar}{\basicsswbiar[67]}}%

% basic south-south-west pair of arrows with names
\def\basicSswbiar[#1]#2#3{\SSWBIAR{#2}{#3}{#100}}%

% south-south-west pair of arrows with names
\newcommand{\Sswbiar}{\@ifnextchar[{\basicSswbiar}{\basicSswbiar[67]}}%
\let\sswbiaR=\Sswbiar

% basic south-south-west pair of distributors
\def\basicsswbidist[#1]{\SSWBIDIST{}{}{#100}}%

% south-south-west pair of distributors
\newcommand{\sswbidist}{\@ifnextchar[{\basicsswbidist}{\basicsswbidist[67]}}%

% basic south-south-west pair of distributors with names
\def\basicSswbidist[#1]#2#3{\SSWBIDIST{#2}{#3}{#100}}%

% south-south-west pair of distributors with names
\newcommand{\Sswbidist}{\@ifnextchar[{\basicSswbidist}{\basicSswbidist[67]}}%
\let\sswbidisT=\Sswbidist

% basic south-south-west pair of adjoint arrows
\def\basicsswadjar[#1]{\SSWADJAR{}{}{#100}}%

% south-south-west pair of adjoint arrows
\newcommand{\sswadjar}{\@ifnextchar[{\basicsswadjar}{\basicsswadjar[67]}}%

% basic south-south-west pair of adjoint  arrows with names
\def\basicSswadjar[#1]#2#3{\SSWADJAR{#2}{#3}{#100}}%

% south-south-west pair of adjoint arrows with names
\newcommand{\Sswadjar}{\@ifnextchar[{\basicSswadjar}{\basicSswadjar[67]}}%
\let\sswadjaR=\Sswadjar

% basic south-south-west pair of adjoint distributors
\def\basicsswadjdist[#1]{\SSWADJDIST{}{}{#100}}%

% south-south-west pair of adjoint distributors
\newcommand{\sswadjdist}{\@ifnextchar[{\basicsswadjdist}{\basicsswadjdist[67]}}%

% basic south-south-west pair of adjoint distributors with names
\def\basicSswadjdist[#1]#2#3{\SSWADJDIST{#2}{#3}{#100}}%

% south-south-west pair of adjoint distributors with names
\newcommand{\Sswadjdist}{\@ifnextchar[{\basicSswadjdist}{\basicSswadjdist[67]}}%
\let\sswadjdisT=\Sswadjdist


% NORTH-NORTH-WEST ARROWS

% The following commands produce north-north-west arrows
% of horizontal extent n units

% \NNWAR{f}{g}{n} draws a north-north-west arrow with names f, g
% and length n units
\newcommand{\NNWAR}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Z,-#3){\line(-1,2){#3}}%
\put(-\Z,#3){\nnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWDIST{f}{g}{n} draws a north-north-west distributor
% with names f, g and length n units
\newcommand{\NNWDIST}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\begin{picture}(0,0)%
\put(\Z,-#3){\line(-1,2){#3}}%
\put(-\Z,#3){\nnwhead}%
\truex{400}%
\put(0,0){\circle{\value{x}}}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWDOTAR{f}{g}{n} draws a north-east dotted arrow
% with names f,g and length n units
\newcommand{\NNWDOTAR}[3]{\testdiagrammode%
\truex{100}\truey{268}\truez{134}%
\Z=#3%
\divide\Z by 2%
\NUMBEROFDOTS=#3%
\divide\NUMBEROFDOTS by \value{z}%
\advance\NUMBEROFDOTS by 1%
\begin{picture}(0,0)%
\multiput(\Z,-#3)(-\value{z},\value{y}){\NUMBEROFDOTS}%
{\circle*{\value{x}}}%
\put(-\Z,#3){\nnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWMONO{f}{g}{n} draws a north-north-west monomorphism
% with names f,g and length n units
\newcommand{\NNWMONO}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\truetaiL%
\bimolength=#3%
\advance\bimolength by -\truemonotaiL%
\monolength=\bimolength%
\advance\monolength by -\Z%
\secondmonolength=\monolength%
\multiply\secondmonolength by 2%
\begin{picture}(0,0)%
\put(\monolength,-\secondmonolength){\line(-1,2){\bimolength}}%
\put(\monolength,-\secondmonolength){\nnwhead}%
\put(-\Z,#3){\nnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWEPI{f}{g}{n} draws a north-north-west epimorphism
% with names f, g and length n units
\newcommand{\NNWEPI}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\trueheaD%
\bimolength=#3%
\advance\bimolength by -\trueepiheaD%
\epilength=\bimolength%
\advance\epilength by -\Z%
\secondepilength=\epilength%
\multiply\secondepilength by 2%
\begin{picture}(0,0)%
\put(\Z,-#3){\line(-1,2){\bimolength}}%
\put(-\epilength,\secondepilength){\nnwhead}%
\put(-\Z,#3){\nnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWBIMO{f}{g}{n} draws a north-north-west bimorphism
% with names f,g and length n units
\newcommand{\NNWBIMO}[3]{\testdiagrammode%
\Z=#3%
\divide\Z by 2%
\truetaiL\trueheaD%
\bimolength=#3%
\advance\bimolength by -\truemonotaiL%
\monolength=\bimolength%
\advance\monolength by -\Z%
\advance\bimolength by -\trueepiheaD%
\epilength=\bimolength%
\advance\epilength by -\monolength%
\secondmonolength=\monolength%
\multiply\secondmonolength by 2%
\secondepilength=\epilength%
\multiply\secondepilength by 2%
\begin{picture}(0,0)%
\put(\monolength,-\secondmonolength){\line(-1,2){\bimolength}}%
\put(\monolength,-\secondmonolength){\nnwhead}%
\put(-\epilength,\secondepilength){\nnwhead}%
\put(-\Z,#3){\nnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWBIAR{f}{g}{n} draws a pair of north-north-west arrows
% with names f,g and length n units
\newcommand{\NNWBIAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\put(\Y,-#3){\begin{picture}(0,0)%
\truex{313}\truey{156}%
\put(-\value{x},-\value{y}){\line(-1,2){#3}}%
\put(\value{x},\value{y}){\line(-1,2){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(-\monolength,\secondepilength){\nnwhead}%
\put(-\epilength,\secondmonolength){\nnwhead}%
\end{picture}}
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWBIDIST{f}{g}{n} draws a pair of north-north-west distributors
% with names f,g and length n units
\newcommand{\NNWBIDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\truex{313}\truey{156}\truez{400}%
\put(\Y,-#3){\begin{picture}(0,0)%
\put(-\value{x},-\value{y}){\line(-1,2){#3}}%
\put(\value{x},\value{y}){\line(-1,2){#3}}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(-\monolength,\secondepilength){\nnwhead}%
\put(-\epilength,\secondmonolength){\nnwhead}%
\end{picture}}
\put(-\value{x},-\value{y}){\circle{\value{z}}}%
\put(\value{x},\value{y}){\circle{\value{z}}}%
\truex{500}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWADJAR{f}{g}{n} draws a north-north-west pair of adjoint arrows
% with names f,g and length n units
\newcommand{\NNWADJAR}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\put(\Y,-#3){\begin{picture}(0,0)%
\truex{313}\truey{156}%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(-\value{x},-\value{y}){\line(-1,2){#3}}%
\put(-\epilength,\secondmonolength){\nnwhead}%
\put(-\monolength,\secondepilength){\line(1,-2){#3}}%
\put(\value{x},\value{y}){\ssehead}%
\end{picture}}
\truex{400}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% \NNWADJDIST{f}{g}{n} draws a north-north-west pair of adjoint distributors
% with names f,g and length n units
\newcommand{\NNWADJDIST}[3]{\testdiagrammode%
\Y=#3%
\divide\Y by 2%
\Z=#3%
\multiply \Z by 2%
\begin{picture}(0,0)%
\truex{313}\truey{156}\truez{400}%
\put(\Y,-#3){\begin{picture}(0,0)%
\monolength=#3%
\advance\monolength by -\value{x}%
\epilength=#3%
\advance\epilength by \value{x}%
\secondmonolength=\Z%
\advance\secondmonolength by -\value{y}%
\secondepilength=\Z%
\advance\secondepilength by \value{y}%
\put(-\value{x},-\value{y}){\line(-1,2){#3}}%
\put(-\epilength,\secondmonolength){\nnwhead}%
\put(-\monolength,\secondepilength){\line(1,-2){#3}}%
\put(\value{x},\value{y}){\ssehead}%
\end{picture}}
\put(\value{x},\value{y}){\circle{\value{z}}}%
\put(-\value{x},-\value{y}){\circle{\value{z}}}%
\truex{500}\truey{1000}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% The following commands produce north-north-west arrows;
% the default length is 6700 units

% basic north-north-west arrow
\def\basicnnwar[#1]{\NNWAR{}{}{#100}}%

% north-north-west arrow
\newcommand{\nnwar}{\@ifnextchar[{\basicnnwar}{\basicnnwar[67]}}%

% basic north-north-west arrow with upper name
\def\basicNnwar[#1]#2{\NNWAR{#2}{}{#100}}%

% north-north-west arrow with upper name
\newcommand{\Nnwar}{\@ifnextchar[{\basicNnwar}{\basicNnwar[67]}}%

% basic north-north-west arrow with lower name
\def\basicnnwaR[#1]#2{\NNWAR{}{#2}{#100}}%

% north-north-west arrow with lower name
\newcommand{\nnwaR}{\@ifnextchar[{\basicnnwaR}{\basicnnwaR[67]}}%

% basic north-north-west distributor
\def\basicnnwdist[#1]{\NNWDIST{}{}{#100}}%

% north-north-west distributor
\newcommand{\nnwdist}{\@ifnextchar[{\basicnnwdist}{\basicnnwdist[67]}}%

% basic north-north-west distributor with upper name
\def\basicNnwdist[#1]#2{\NNWDIST{#2}{}{#100}}%

% north-north-west distributor with upper name
\newcommand{\Nnwdist}{\@ifnextchar[{\basicNnwdist}{\basicNnwdist[67]}}%

% basic north-north-west distributor with lower name
\def\basicnnwdisT[#1]#2{\NNWDIST{}{#2}{#100}}%

% north-north-west distributor with lower name
\newcommand{\nnwdisT}{\@ifnextchar[{\basicnnwdisT}{\basicnnwdisT[67]}}%

% basic north-north-west dotted arrow
\def\basicnnwdotar[#1]{\NNWDOTAR{}{}{#100}}%

% north-north-west dotted arrow
\newcommand{\nnwdotar}{\@ifnextchar[{\basicnnwdotar}{\basicnnwdotar[67]}}%

% basic north-north-west dotted arrow with upper name
\def\basicNnwdotar[#1]#2{\NNWDOTAR{#2}{}{#100}}%

% north-north-west dotted arrow with upper name
\newcommand{\Nnwdotar}{\@ifnextchar[{\basicNnwdotar}{\basicNnwdotar[67]}}%

% basic north-north-west dotted arrow with lower name
\def\basicnnwdotaR[#1]#2{\NNWDOTAR{}{#2}{#100}}%

% north-north-west dotted arrow with lower name
\newcommand{\nnwdotaR}{\@ifnextchar[{\basicnnwdotaR}{\basicnnwdotaR[67]}}%

% basic north-north-west monomorphism
\def\basicnnwmono[#1]{\NNWMONO{}{}{#100}}%

% north-north-west monomorphism
\newcommand{\nnwmono}{\@ifnextchar[{\basicnnwmono}{\basicnnwmono[67]}}%

% basic north-north-west monomorphism with upper name
\def\basicNnwmono[#1]#2{\NNWMONO{#2}{}{#100}}%

% north-north-west monomorphism with upper name
\newcommand{\Nnwmono}{\@ifnextchar[{\basicNnwmono}{\basicNnwmono[67]}}%

% basic north-north-west monomorphism with lower name
\def\basicnnwmonO[#1]#2{\NNWMONO{}{#2}{#100}}%

% north-north-west monomorphism with lower name
\newcommand{\nnwmonO}{\@ifnextchar[{\basicnnwmonO}{\basicnnwmonO[67]}}%

% basic north-north-west epimorphism
\def\basicnnwepi[#1]{\NNWEPI{}{}{#100}}%

% north-north-west epimorphism
\newcommand{\nnwepi}{\@ifnextchar[{\basicnnwepi}{\basicnnwepi[67]}}%

% basic north-north-west epimorphism with upper name
\def\basicNnwepi[#1]#2{\NNWEPI{#2}{}{#100}}%

% north-north-west epimorphism with upper name
\newcommand{\Nnwepi}{\@ifnextchar[{\basicNnwepi}{\basicNnwepi[67]}}%

% basic north-north-west epimorphism with lower name
\def\basicnnwepI[#1]#2{\NNWEPI{}{#2}{#100}}%

% north-north-west epimorphism with lower name
\newcommand{\nnwepI}{\@ifnextchar[{\basicnnwepI}{\basicnnwepI[67]}}%

% basic north-north-west bimorphism
\def\basicnnwbimo[#1]{\NNWBIMO{}{}{#100}}%

% north-north-west bimorphism
\newcommand{\nnwbimo}{\@ifnextchar[{\basicnnwbimo}{\basicnnwbimo[67]}}%

% basic north-north-west bimorphism with upper name
\def\basicNnwbimo[#1]#2{\NNWBIMO{#2}{}{#100}}%

% north-north-west bimorphism with upper name
\newcommand{\Nnwbimo}{\@ifnextchar[{\basicNnwbimo}{\basicNnwbimo[67]}}%

% basic north-north-west bimorphism with lower name
\def\basicnnwbimO[#1]#2{\NNWBIMO{}{#2}{#100}}%

% north-north-west bimorphism with lower name
\newcommand{\nnwbimO}{\@ifnextchar[{\basicnnwbimO}{\basicnnwbimO[67]}}%

% basic north-north-west isomorphism
\def\basicnnwiso[#1]{\NNWAR{\cong}{}{#100}}%

% north-north-west isomorphism
\newcommand{\nnwiso}{\@ifnextchar[{\basicnnwiso}{\basicnnwiso[67]}}%

% basic north-north-west isomorphism with upper name
\def\basicNnwiso[#1]#2{\NNWAR{#2}{\cong}{#100}}%

% north-north-west isomorphism with upper name
\newcommand{\Nnwiso}{\@ifnextchar[{\basicNnwiso}{\basicNnwiso[67]}}%

% basic north-north-west isomorphism with lower name
\def\basicnnwisO[#1]#2{\NNWAR{\cong}{#2}{#100}}%

% north-north-west isomorphism with lower name
\newcommand{\nnwisO}{\@ifnextchar[{\basicnnwisO}{\basicnnwisO[67]}}%

% north-north-west equality
\let\nnweql=\sseeql%

% north-north-west equality with upper name
\let\Nnweql=\Sseeql%

% north-north-west equality with lower name
\let\nnweqL=\sseeqL%

% basic north-north-east pair of arrows
\def\basicnnwbiar[#1]{\NNWBIAR{}{}{#100}}%

% north-north-east pair of arrows
\newcommand{\nnwbiar}{\@ifnextchar[{\basicnnwbiar}{\basicnnwbiar[67]}}%

% basic north-north-east pair of arrows with names
\def\basicNnwbiar[#1]#2#3{\NNWBIAR{#2}{#3}{#100}}%

% north-north-east pair of arrows with names
\newcommand{\Nnwbiar}{\@ifnextchar[{\basicNnwbiar}{\basicNnwbiar[67]}}%
\let\nnwbiaR=\Nnwbiar

% basic north-north-east pair of distributors
\def\basicnnwbidist[#1]{\NNWBIDIST{}{}{#100}}%

% north-north-east pair of distributors
\newcommand{\nnwbidist}{\@ifnextchar[{\basicnnwbidist}{\basicnnwbidist[67]}}%

% basic north-north-east pair of distributors with names
\def\basicNnwbidist[#1]#2#3{\NNWBIDIST{#2}{#3}{#100}}%

% north-north-east pair of distributors with names
\newcommand{\Nnwbidist}{\@ifnextchar[{\basicNnwbidist}{\basicNnwbidist[67]}}%
\let\nnwbidisT=\Nnwbidist

% basic north-north-east pair of adjoint arrows
\def\basicnnwadjar[#1]{\NNWADJAR{}{}{#100}}%

% north-north-east pair of adjoint arrows
\newcommand{\nnwadjar}{\@ifnextchar[{\basicnnwadjar}{\basicnnwadjar[67]}}%

% basic north-north-east pair of adjoint  arrows with names
\def\basicNnwadjar[#1]#2#3{\NNWADJAR{#2}{#3}{#100}}%

% north-north-east pair of adjoint arrows with names
\newcommand{\Nnwadjar}{\@ifnextchar[{\basicNnwadjar}{\basicNnwadjar[67]}}%
\let\nnwadjaR=\Nnwadjar

% basic north-north-east pair of adjoint distributors
\def\basicnnwadjdist[#1]{\NNWADJDIST{}{}{#100}}%

% north-north-east pair of adjoint distributors
\newcommand{\nnwadjdist}{\@ifnextchar[{\basicnnwadjdist}{\basicnnwadjdist[67]}}%

% basic north-north-east pair of adjoint distributors with names
\def\basicNnwadjdist[#1]#2#3{\NNWADJDIST{#2}{#3}{#100}}%

% north-north-east pair of adjoint distributors with names
\newcommand{\Nnwadjdist}{\@ifnextchar[{\basicNnwadjdist}{\basicNnwadjdist[67]}}%
\let\nnwadjdisT=\Nnwadjdist


% EAST-EAST-NORTH-EAST ARROWS
% default length: 21100 units

% \EENEAR{f}{g}{n} draws a east-east-north-east arrow with names f, g
% and length n units
\newcommand{\EENEAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=\Y%
\divide \Z by 3%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\line(3,1){#3}}%
\put(\Y,\Z){\eenehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% basic east-east-north-east arrow
\def\basiceenear[#1]{\EENEAR{}{}{#100}}%

% east-east-north-east arrow
\newcommand{\eenear}{\@ifnextchar[{\basiceenear}{\basiceenear[211]}}%

% basic east-east-north-east arrow with upper name
\def\basicEenear[#1]#2{\EENEAR{#2}{}{#100}}%

% east-east-north-east arrow with upper name
\newcommand{\Eenear}{\@ifnextchar[{\basicEenear}{\basicEenear[211]}}%

% basic east-east-north-east arrow with lower name
\def\basiceeneaR[#1]#2{\EENEAR{}{#2}{#100}}%

% east-east-north-east arrow with lower name
\newcommand{\eeneaR}{\@ifnextchar[{\basiceeneaR}{\basiceeneaR[211]}}%

% EAST-EAST-SOUTH-EAST ARROWS
% default length: 21100 units

% \EESEAR{f}{g}{n} draws an east-east-south-east arrow with names f, g
% and length n units
\newcommand{\EESEAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=\Y%
\divide \Z by 3%
\begin{picture}(0,0)%
\put(-\Y,\Z){\line(3,-1){#3}}%
\put(\Y,-\Z){\eesehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% basic east-east-south-east arrow
\def\basiceesear[#1]{\EESEAR{}{}{#100}}%

% east-east-south-east arrow
\newcommand{\eesear}{\@ifnextchar[{\basiceesear}{\basiceesear[211]}}%

% basic east-east-south-east arrow with upper name
\def\basicEesear[#1]#2{\EESEAR{#2}{}{#100}}%

% east-east-south-east arrow with upper name
\newcommand{\Eesear}{\@ifnextchar[{\basicEesear}{\basicEesear[211]}}%

% basic east-east-south-east arrow with lower name
\def\basiceeseaR[#1]#2{\EESEAR{}{#2}{#100}}%

% east-east-south-east arrow with lower name
\newcommand{\eeseaR}{\@ifnextchar[{\basiceeseaR}{\basiceeseaR[211]}}%

% WEST-WEST-NORTH-WEST ARROWs
% default length: 21100 units

% \WWNWAR{f}{g}{n} draws a west-west-north-west arrow with names f, g
%       and length n units
\newcommand{\WWNWAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=\Y%
\divide \Z by 3%
\begin{picture}(0,0)%
\put(\Y,-\Z){\line(-3,1){#3}}%
\put(-\Y,\Z){\wwnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% basic west-west-north-west arrow
\def\basicwwnwar[#1]{\WWNWAR{}{}{#100}}%

% west-west-north-west arrow
\newcommand{\wwnwar}{\@ifnextchar[{\basicwwnwar}{\basicwwnwar[211]}}%

% basic west-west-north-west arrow with upper name
\def\basicWwnwar[#1]#2{\WWNWAR{#2}{}{#100}}%

% west-west-north-west arrow with upper name
\newcommand{\Wwnwar}{\@ifnextchar[{\basicWwnwar}{\basicWwnwar[211]}}%

% basic west-west-north-west arrow with lower name
\def\basicwwnwaR[#1]#2{\WWNWAR{}{#2}{#100}}%

% west-west-north-west arrow with lower name
\newcommand{\wwnwaR}{\@ifnextchar[{\basicwwnwaR}{\basicwwnwaR[211]}}%

% WEST-WEST-SOUTH-WEST ARROWS
% default length: 21100 units

% \WWSWAR{f}{g} draws a west-west-south-west arrow with names f, g
\newcommand{\WWSWAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=\Y%
\divide \Z by 3%
\begin{picture}(0,0)%
\put(\Y,\Z){\line(-3,-1){#3}}%
\put(-\Y,-\Z){\wwswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% basic west-west-south-west arrow
\def\basicwwswar[#1]{\WWSWAR{}{}{#100}}%

% west-west-south-west arrow
\newcommand{\wwswar}{\@ifnextchar[{\basicwwswar}{\basicwwswar[211]}}%

% basic west-west-south-west arrow with upper name
\def\basicWwswar[#1]#2{\WWSWAR{#2}{}{#100}}%

% west-west-south-west arrow with upper name
\newcommand{\Wwswar}{\@ifnextchar[{\basicWwswar}{\basicWwswar[211]}}%

% basic west-west-south-west arrow with lower name
\def\basicwwswaR[#1]#2{\WWSWAR{}{#2}{#100}}%

% west-west-south-west arrow with lower name
\newcommand{\wwswaR}{\@ifnextchar[{\basicwwswaR}{\basicwwswaR[211]}}%


% NORTH-NORTH-NORTH-EAST ARROWS
% default length: 7100 units

% \NNNEAR{f}{g}{n} draws a north-north-north-east arrow with names f, g
% and length n units
\newcommand{\NNNEAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=\Y%
\multiply \Z by 3%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\line(1,3){#3}}%
\put(\Y,\Z){\nnnehead}%
\truex{100}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% basic north-north-north-east arrow
\def\basicnnnear[#1]{\NNNEAR{}{}{#100}}%

% north-north-north-east arrow
\newcommand{\nnnear}{\@ifnextchar[{\basicnnnear}{\basicnnnear[71]}}%

% basic north-north-north-east arrow with upper name
\def\basicNnnear[#1]#2{\NNNEAR{#2}{}{#100}}%

% north-north-north-east arrow with upper name
\newcommand{\Nnnear}{\@ifnextchar[{\basicNnnear}{\basicNnnear[71]}}%

% basic north-north-north-east arrow with lower name
\def\basicnnneaR[#1]#2{\NNNEAR{}{#2}{#100}}%

% north-north-north-east arrow with lower name
\newcommand{\nnneaR}{\@ifnextchar[{\basicnnneaR}{\basicnnneaR[71]}}%

% SOUTH-SOUTH-SOUTH-WEST ARROWS
% default length: 7100 units

% \SSSWAR{f}{g}{n} draws a south-south-south-west arrow with names f, g
% and length n units
\newcommand{\SSSWAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=\Y%
\multiply \Z by 3%
\begin{picture}(0,0)%
\put(\Y,\Z){\line(-1,-3){#3}}%
\put(-\Y,-\Z){\ssswhead}%
\truex{100}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% basic south-south-south-west arrow
\def\basicssswar[#1]{\SSSWAR{}{}{#100}}%

% south-south-south-west arrow
\newcommand{\ssswar}{\@ifnextchar[{\basicssswar}{\basicssswar[71]}}%

% basic south-south-south-west arrow with upper name
\def\basicSsswar[#1]#2{\SSSWAR{#2}{}{#100}}%

% south-south-south-west arrow with upper name
\newcommand{\Ssswar}{\@ifnextchar[{\basicSsswar}{\basicSsswar[71]}}%

% basic south-south-south-west arrow with lower name
\def\basicssswaR[#1]#2{\SSSWAR{}{#2}{#100}}%

% south-south-south-west arrow with lower name
\newcommand{\ssswaR}{\@ifnextchar[{\basicssswaR}{\basicssswaR[71]}}%

% SOUTH-SOUTH-SOUTH-EAST ARROWS
% default length: 7100 units

% \SSSEAR{f}{g}{n} draws a south-south-south-east arrow with names f, g
% and length n units
\newcommand{\SSSEAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=\Y%
\multiply \Z by 3%
\begin{picture}(0,0)%
\put(-\Y,\Z){\line(1,-3){#3}}%
\put(\Y,-\Z){\sssehead}%
\truex{200}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% basic south-south-south-east arrow
\def\basicsssear[#1]{\SSSEAR{}{}{#100}}%

% south-south-south-east arrow
\newcommand{\sssear}{\@ifnextchar[{\basicsssear}{\basicsssear[71]}}%

% basic south-south-south-east arrow with upper name
\def\basicSssear[#1]#2{\SSSEAR{#2}{}{#100}}%

% south-south-south-east arrow with upper name
\newcommand{\Sssear}{\@ifnextchar[{\basicSssear}{\basicSssear[71]}}%

% basic south-south-south-east arrow with lower name
\def\basicssseaR[#1]#2{\SSSEAR{}{#2}{#100}}%

% south-south-south-east arrow with lower name
\newcommand{\ssseaR}{\@ifnextchar[{\basicssseaR}{\basicssseaR[71]}}%

% NORTH-NORTH-NORTH-WEST ARROWS
% default length: 7100 units

% \NNNWAR{f}{g}{n} draws a north-north-north-west arrow with names f, g
% and length n units
\newcommand{\NNNWAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=\Y%
\multiply \Z by 3%
\begin{picture}(0,0)%
\put(\Y,-\Z){\line(-1,3){#3}}%
\put(-\Y,\Z){\nnnwhead}%
\truex{200}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% basic north-north-north-west arrow
\def\basicnnnwar[#1]{\NNNWAR{}{}{#100}}%

% north-north-north-west arrow
\newcommand{\nnnwar}{\@ifnextchar[{\basicnnnwar}{\basicnnnwar[71]}}%

% basic north-north-north-west arrow with upper name
\def\basicNnnwar[#1]#2{\NNNWAR{#2}{}{#100}}%

% north-north-north-west arrow with upper name
\newcommand{\Nnnwar}{\@ifnextchar[{\basicNnnwar}{\basicNnnwar[71]}}%

% basic north-north-north-west arrow with lower name
\def\basicnnnwaR[#1]#2{\NNNWAR{}{#2}{#100}}%

% north-north-north-west arrow with lower name
\newcommand{\nnnwaR}{\@ifnextchar[{\basicnnnwaR}{\basicnnnwaR[71]}}%

% NORTH-EAST-EAST-NORTH-EAST ARROWS
% default length: 21500 units

% \NEENEAR{f}{g}{n} draws a north-east-east-north-east arrow with names f, g
% and length n units
\newcommand{\NEENEAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=#3%
\divide \Z by 3%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\line(3,2){#3}}%
\put(\Y,\Z){\neenehead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% basic north-east-east-north-east arrow
\def\basicneenear[#1]{\NEENEAR{}{}{#100}}%

% north-east-east-north-east arrow
\newcommand{\neenear}{\@ifnextchar[{\basicneenear}{\basicneenear[215]}}%

% basic north-east-east-north-east arrow with upper name
\def\basicNeenear[#1]#2{\NEENEAR{#2}{}{#100}}%

% north-east-east-north-east arrow with upper name
\newcommand{\Neenear}{\@ifnextchar[{\basicNeenear}{\basicNeenear[215]}}%

% basic north-east-east-north-east arrow with lower name
\def\basicneeneaR[#1]#2{\NEENEAR{}{#2}{#100}}%

% north-east-east-north-east arrow with lower name
\newcommand{\neeneaR}{\@ifnextchar[{\basicneeneaR}{\basicneeneaR[215]}}%

% SOUTH-EAST-EAST-SOUTH-EAST ARROWS
% DEFAULT LENGTH: 21500 UNITS

% \SEESEAR{f}{g} draws an sout-east-east-south-east arrow with names f, g
% and length n units
\newcommand{\SEESEAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=#3%
\divide \Z by 3%
\begin{picture}(0,0)%
\put(-\Y,\Z){\line(3,-2){#3}}%
\put(\Y,-\Z){\seesehead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% basic south-east-east-south-east arrow
\def\basicseesear[#1]{\SEESEAR{}{}{#100}}%

% south-east-east-south-east arrow
\newcommand{\seesear}{\@ifnextchar[{\basicseesear}{\basicseesear[215]}}%

% basic south-east-east-south-east arrow with upper name
\def\basicSeesear[#1]#2{\SEESEAR{#2}{}{#100}}%

% south-east-east-south-east arrow with upper name
\newcommand{\Seesear}{\@ifnextchar[{\basicSeesear}{\basicSeesear[215]}}%

% basic south-east-east-south-east arrow with lower name
\def\basicseeseaR[#1]#2{\SEESEAR{}{#2}{#100}}%

% south-east-east-south-east arrow with lower name
\newcommand{\seeseaR}{\@ifnextchar[{\basicseeseaR}{\basicseeseaR[215]}}%

% NORTH-WEST-WEST-NORTH-WEST ARROWS
% default length: 21500 units

% \NWWNWAR{f}{g}{n} draws a north-west-west-north-west arrow with names f, g
% and length n units
\newcommand{\NWWNWAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=#3%
\divide \Z by 3%
\begin{picture}(0,0)%
\put(\Y,-\Z){\line(-3,2){#3}}%
\put(-\Y,\Z){\nwwnwhead}%
\truex{200}\truey{800}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% basic north-west-west-north-west arrow
\def\basicnwwnwar[#1]{\NWWNWAR{}{}{#100}}%

% north-west-west-north-west arrow
\newcommand{\nwwnwar}{\@ifnextchar[{\basicnwwnwar}{\basicnwwnwar[215]}}%

% basic north-west-west-north-west arrow with upper name
\def\basicNwwnwar[#1]#2{\NWWNWAR{#2}{}{#100}}%

% north-west-west-north-west arrow with upper name
\newcommand{\Nwwnwar}{\@ifnextchar[{\basicNwwnwar}{\basicNwwnwar[215]}}%

% basic north-west-west-north-west arrow with lower name
\def\basicnwwnwaR[#1]#2{\NWWNWAR{}{#2}{#100}}%

% north-west-west-north-west arrow with lower name
\newcommand{\nwwnwaR}{\@ifnextchar[{\basicnwwnwaR}{\basicnwwnwaR[215]}}%

% SOUTH-WEST-WEST-SOUTH-WEST ARROWS
% default length: 21500 units

% \SWWSWAR{f}{g}{n} draws a south-west-west-south-west arrow with names f, g
% and length n units
\newcommand{\SWWSWAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=#3%
\divide \Z by 3%
\begin{picture}(0,0)%
\put(\Y,\Z){\line(-3,-2){#3}}%
\put(-\Y,-\Z){\swwswhead}%
\truex{200}\truey{800}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% basic south-west-west-south-west arrow
\def\basicswwswar[#1]{\SWWSWAR{}{}{#100}}%

% south-west-west-south-west arrow
\newcommand{\swwswar}{\@ifnextchar[{\basicswwswar}{\basicswwswar[215]}}%

% basic south-west-west-south-west arrow with upper name
\def\basicSwwswar[#1]#2{\SWWSWAR{#2}{}{#100}}%

% south-west-west-south-west arrow with upper name
\newcommand{\Swwswar}{\@ifnextchar[{\basicSwwswar}{\basicSwwswar[215]}}%

% basic south-west-west-south-west arrow with lower name
\def\basicswwswaR[#1]#2{\SWWSWAR{}{#2}{#100}}%

% south-west-west-south-west arrow with lower name
\newcommand{\swwswaR}{\@ifnextchar[{\basicswwswaR}{\basicswwswaR[215]}}%


% NORTH-EAST-NORTH-NORTH-EAST ARROWS
% default length 14300 units

% \NENNEAR{f}{g}{n} draws a north-east-north-north-east arrow with names f, g
% and length n units
\newcommand{\NENNEAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=#3%
\multiply \Z by 3%
\divide \Z by 4%
\begin{picture}(0,0)%
\put(-\Y,-\Z){\line(2,3){#3}}%
\put(\Y,\Z){\nennehead}%
\truex{100}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% basic north-east-north-north-east arrow
\def\basicnennear[#1]{\NENNEAR{}{}{#100}}%

% north-east-north-north-east arrow
\newcommand{\nennear}{\@ifnextchar[{\basicnennear}{\basicnennear[143]}}%

% basic north-east-north-north-east arrow with upper name
\def\basicNennear[#1]#2{\NENNEAR{#2}{}{#100}}%

% north-east-north-north-east arrow with upper name
\newcommand{\Nennear}{\@ifnextchar[{\basicNennear}{\basicNennear[143]}}%

% basic north-east-north-north-east arrow with lower name
\def\basicnenneaR[#1]#2{\NENNEAR{}{#2}{#100}}%

% north-east-north-north-east arrow with lower name
\newcommand{\nenneaR}{\@ifnextchar[{\basicnenneaR}{\basicnenneaR[143]}}%

% SOUTH-WEST-SOUTH-SOUTH-WEST ARROWS
% default length: 14300 units

% \SWSSWAR{f}{g}{n} draws a south-west-south-south-west arrow with names f, g
% and length n units
\newcommand{\SWSSWAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=#3%
\multiply \Z by 3%
\divide \Z by 4%
\begin{picture}(0,0)%
\put(\Y,\Z){\line(-2,-3){#3}}%
\put(-\Y,-\Z){\swsswhead}%
\truex{100}\truez{600}%
\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}%
\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}%
\end{picture}}%

% basic south-west-south-south-west arrow
\def\basicswsswar[#1]{\SWSSWAR{}{}{#100}}%

% south-west-south-south-west arrow
\newcommand{\swsswar}{\@ifnextchar[{\basicswsswar}{\basicswsswar[143]}}%

% basic south-west-south-south-west arrow with upper name
\def\basicSwsswar[#1]#2{\SWSSWAR{#2}{}{#100}}%

% south-west-south-south-west arrow with upper name
\newcommand{\Swsswar}{\@ifnextchar[{\basicSwsswar}{\basicSwsswar[143]}}%

% basic south-west-south-south-west arrow with lower name
\def\basicswsswaR[#1]#2{\SWSSWAR{}{#2}{#100}}%

% south-west-south-south-west arrow with lower name
\newcommand{\swsswaR}{\@ifnextchar[{\basicswsswaR}{\basicswsswaR[143]}}%

% SOUT-EAST-SOUTH-SOUTH-EAST ARROWS
% default length: 14300 units

% \SESSEAR{f}{g}{n} draws a south-east-south-south-east arrow with names f, g
% and length n units
\newcommand{\SESSEAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=#3%
\multiply \Z by 3%
\divide \Z by 4%
\begin{picture}(0,0)%
\put(-\Y,\Z){\line(2,-3){#3}}%
\put(\Y,-\Z){\sessehead}%
\truex{200}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% basic south-east-south-south-east arrow
\def\basicsessear[#1]{\SESSEAR{}{}{#100}}%

% south-east-south-south-east arrow
\newcommand{\sessear}{\@ifnextchar[{\basicsessear}{\basicsessear[143]}}%

% basic south-east-south-south-east arrow with upper name
\def\basicSessear[#1]#2{\SESSEAR{#2}{}{#100}}%

% south-east-south-south-east arrow with upper name
\newcommand{\Sessear}{\@ifnextchar[{\basicSessear}{\basicSessear[143]}}%

% basic south-east-south-south-east arrow with lower name
\def\basicsesseaR[#1]#2{\SESSEAR{}{#2}{#100}}%

% south-east-south-south-east arrow with lower name
\newcommand{\sesseaR}{\@ifnextchar[{\basicsesseaR}{\basicsesseaR[143]}}%

% NORTH-WEST-NORTH-NORTH-WEST ARROWS
% default length: 14300 units

% \NWNNWAR{f}{g}{n} draws a north-west-north-north-west arrow with names f, g
% and length n units
\newcommand{\NWNNWAR}[3]{\testdiagrammode%
\Y=#3%
\divide \Y by 2%
\Z=#3%
\multiply \Z by 3%
\divide \Z by 4%
\begin{picture}(0,0)%
\put(\Y,-\Z){\line(-2,3){#3}}%
\put(-\Y,\Z){\nwnnwhead}%
\truex{200}\truez{600}%
\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}%
\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}%
\end{picture}}%

% basic north-west-north-north-west arrow
\def\basicnwnnwar[#1]{\NWNNWAR{}{}{#100}}%

% north-west-north-north-west arrow
\newcommand{\nwnnwar}{\@ifnextchar[{\basicnwnnwar}{\basicnwnnwar[143]}}%

% basic north-west-north-north-west arrow with upper name
\def\basicNwnnwar[#1]#2{\NWNNWAR{#2}{}{#100}}%

% north-west-north-north-west arrow with upper name
\newcommand{\Nwnnwar}{\@ifnextchar[{\basicNwnnwar}{\basicNwnnwar[143]}}%

% basic north-west-north-north-west arrow with lower name
\def\basicnwnnwaR[#1]#2{\NWNNWAR{}{#2}{#100}}%

% north-west-north-north-west arrow with lower name
\newcommand{\nwnnwaR}{\@ifnextchar[{\basicnwnnwaR}{\basicnwnnwaR[143]}}%

% HORIZONTAL CURVED ARROWS

% The following commands produce horizontal curved arrows
% default length: 160 units

% North\East curved arrow with name [1] and length [2]x100 units
\newcommand{\Necurve}[2]%
{\testdiagrammode\begin{picture}(0,0)%
\truex{1300}\truey{2000}\truez{200}%
\put(0,\value{x}){\oval(#200,\value{y})[t]}%
\put(0,\value{x}){\makebox(0,0){\begin{picture}(#200,0)%
\put(#200,0){\line(0,-1){\value{z}}}%
\put(#200,-\value{z}){\shead}%
\put(0,0){\line(0,-1){\value{z}}}\end{picture}}}%
\truex{2500}%
\put(0,\value{x}){\makebox(0,0)[b]{${#1}$}}%
\end{picture}}%

% basic north\east curved arrow
\def\basicnecurvar[#1]{\Necurve{}{#1}}

% north\east curved arrow
\newcommand{\necurvar}{\@ifnextchar[{\basicnecurvar}{\basicnecurvar[160]}}%

% basic north\east curved arrow with name
\def\basicNecurvar[#1]#2{\Necurve{#2}{#1}}%

% north\east curved arrow with name
\newcommand{\Necurvar}{\@ifnextchar[{\basicNecurvar}{\basicNecurvar[160]}}%
\let\necurvaR=\Necurvar

% North\West curved arrow with name [1] and length [2]x100 units
\newcommand{\Nwcurve}[2]%
{\testdiagrammode\begin{picture}(0,0)%
\truex{1300}\truey{2000}\truez{200}%
\put(0,\value{x}){\oval(#200,\value{y})[t]}%
\put(0,\value{x}){\makebox(0,0){\begin{picture}(#200,0)%
\put(#200,0){\line(0,-1){\value{z}}}%
\put(0,0){\line(0,-1){\value{z}}}%
\put(0,-\value{z}){\shead}%
\end{picture}}}%
\truex{2500}%
\put(0,\value{x}){\makebox(0,0)[b]{${#1}$}}%
\end{picture}}%

% basic north\west curved arrow
\def\basicnwcurvar[#1]{\Nwcurve{}{#1}}

% north\west curved arrow
\newcommand{\nwcurvar}{\@ifnextchar[{\basicnwcurvar}{\basicnwcurvar[160]}}%

% basic north\west curved arrow with name
\def\basicNwcurvar[#1]#2{\Nwcurve{#2}{#1}}%

% north\west curved arrow with name
\newcommand{\Nwcurvar}{\@ifnextchar[{\basicNwcurvar}{\basicNwcurvar[160]}}%
\let\nwcurvaR=\Nwcurvar

% South\East curved arrow with name [1] and length [2]x100 units
\newcommand{\Securve}[2]%
{\testdiagrammode\begin{picture}(0,0)%
\truex{1300}\truey{2000}\truez{200}%
\put(0,-\value{x}){\oval(#200,\value{y})[b]}%
\put(0,-\value{x}){\makebox(0,0){\begin{picture}(#200,0)%
\put(#200,0){\line(0,1){\value{z}}}%
\put(0,0){\line(0,1){\value{z}}}%
\put(#200,\value{z}){\nhead}%
\end{picture}}}%
\truex{2500}%
\put(0,-\value{x}){\makebox(0,0)[t]{${#1}$}}%
\end{picture}}%

% basic south\east curved arrow
\def\basicsecurvar[#1]{\Securve{}{#1}}

% south\east curved arrow
\newcommand{\securvar}{\@ifnextchar[{\basicsecurvar}{\basicsecurvar[160]}}%

% basic south\east curved arrow with name
\def\basicSecurvar[#1]#2{\Securve{#2}{#1}}%

% south\east curved arrow with name
\newcommand{\Securvar}{\@ifnextchar[{\basicSecurvar}{\basicSecurvar[160]}}%
\let\securvaR=\Securvar

% South\West curved arrow with name [1] and length [2]x100 units
\newcommand{\Swcurve}[2]%
{\testdiagrammode\begin{picture}(0,0)%
\truex{1300}\truey{2000}\truez{200}%
\put(0,-\value{x}){\oval(#200,\value{y})[b]}%
\put(0,-\value{x}){\makebox(0,0){\begin{picture}(#200,0)%
\put(#200,0){\line(0,1){\value{z}}}%
\put(0,0){\line(0,1){\value{z}}}%
\put(0,\value{z}){\nhead}%
\end{picture}}}%
\truex{2500}%
\put(0,-\value{x}){\makebox(0,0)[t]{${#1}$}}%
\end{picture}}%

% basic south\west curved arrow
\def\basicswcurvar[#1]{\Swcurve{}{#1}}

% south\west curved arrow
\newcommand{\swcurvar}{\@ifnextchar[{\basicswcurvar}{\basicswcurvar[160]}}%

% basic south\west curved arrow with name
\def\basicSwcurvar[#1]#2{\Swcurve{#2}{#1}}%

% south\west curved arrow with name
\newcommand{\Swcurvar}{\@ifnextchar[{\basicSwcurvar}{\basicSwcurvar[160]}}%
\let\swcurvaR=\Swcurvar

% VERTICAL CURVED ARROWS

% The following commands produce vertical curved arrows
% default length: 160pt

% East\South curved arrow with name [1] and length [2]x100 units
\newcommand{\Escurve}[2]%
{\testdiagrammode\begin{picture}(0,0)%
\truex{1400}\truey{2000}\truez{200}%
\put(\value{x},0){\oval(\value{y},#200)[r]}%
\put(\value{x},0){\makebox(0,0){\begin{picture}(0,#200)%
\put(0,0){\line(-1,0){\value{z}}}%
\put(0,#200){\line(-1,0){\value{z}}}%
\put(-\value{z},0){\whead}%
\end{picture}}}%
\truex{2500}%
\put(\value{x},0){\makebox(0,0)[l]{${#1}$}}%
\end{picture}}%

% basic east\south curved arrow
\def\basicescurvar[#1]{\Escurve{}{#1}}

% east\south curved arrow
\newcommand{\escurvar}{\@ifnextchar[{\basicescurvar}{\basicescurvar[160]}}%

% basic east\south curved arrow with name
\def\basicEscurvar[#1]#2{\Escurve{#2}{#1}}%

% east\south curved arrow with name
\newcommand{\Escurvar}{\@ifnextchar[{\basicEscurvar}{\basicEscurvar[160]}}%
\let\escurvaR=\Escurvar

% East\North curved arrow with name [1] and length [2]x100 units
\newcommand{\Encurve}[2]%
{\testdiagrammode\begin{picture}(0,0)%
\truex{1400}\truey{2000}\truez{200}%
\put(\value{x},0){\oval(\value{y},#200)[r]}%
\put(\value{x},0){\makebox(0,0){\begin{picture}(0,#200)%
\put(0,0){\line(-1,0){\value{z}}}%
\put(0,#200){\line(-1,0){\value{z}}}%
\put(-\value{z},#200){\whead}%
\end{picture}}}%
\truex{2500}%
\put(\value{x},0){\makebox(0,0)[l]{${#1}$}}%
\end{picture}}%

% basic east\north curved arrow
\def\basicencurvar[#1]{\Encurve{}{#1}}

% east\north curved arrow
\newcommand{\encurvar}{\@ifnextchar[{\basicencurvar}{\basicencurvar[160]}}%

% basic east\north curved arrow with name
\def\basicEncurvar[#1]#2{\Encurve{#2}{#1}}%

% east\north curved arrow with name
\newcommand{\Encurvar}{\@ifnextchar[{\basicEncurvar}{\basicEncurvar[160]}}%
\let\encurvaR=\Encurvar

% West\South curved arrow with name [1] and length [2]x100 units
\newcommand{\Wscurve}[2]%
{\testdiagrammode\begin{picture}(0,0)%
\truex{1300}\truey{2000}\truez{200}%
\put(-\value{x},0){\oval(\value{y},#200)[l]}%
\put(-\value{x},0){\makebox(0,0){\begin{picture}(0,#200)%
\put(0,0){\line(1,0){\value{z}}}%
\put(0,#200){\line(1,0){\value{z}}}%
\put(\value{z},0){\ehead}%
\end{picture}}}%
\truex{2400}%
\put(-\value{x},0){\makebox(0,0)[r]{${#1}$}}%
\end{picture}}%

% basic west\south curved arrow
\def\basicwscurvar[#1]{\Wscurve{}{#1}}

% west\south curved arrow
\newcommand{\wscurvar}{\@ifnextchar[{\basicwscurvar}{\basicwscurvar[160]}}%

% basic west\south curved arrow with name
\def\basicWscurvar[#1]#2{\Wscurve{#2}{#1}}%

% west\south curved arrow with name
\newcommand{\Wscurvar}{\@ifnextchar[{\basicWscurvar}{\basicWscurvar[160]}}%
\let\wscurvaR=\Wscurvar

% West\North curved arrow with name [1] and length [2]x100 units
\newcommand{\Wncurve}[2]%
{\testdiagrammode\begin{picture}(0,0)%
\truex{1300}\truey{2000}\truez{200}%
\put(-\value{x},0){\oval(\value{y},#200)[l]}%
\put(-\value{x},0){\makebox(0,0){\begin{picture}(0,#200)%
\put(0,0){\line(1,0){\value{z}}}%
\put(\value{z},#200){\ehead}%
\put(0,#200){\line(1,0){\value{z}}}%
\end{picture}}}%
\truex{2400}%
\put(-\value{x},0){\makebox(0,0)[r]{${#1}$}}%
\end{picture}}%

% basic west\north curved arrow
\def\basicwncurvar[#1]{\Wncurve{}{#1}}

% west\north curved arrow
\newcommand{\wncurvar}{\@ifnextchar[{\basicwncurvar}{\basicwncurvar[160]}}%

% basic west\north curved arrow with name
\def\basicWncurvar[#1]#2{\Wncurve{#2}{#1}}%

% west\north curved arrow with name
\newcommand{\Wncurvar}{\@ifnextchar[{\basicWncurvar}{\basicWncurvar[160]}}%
\let\wncurvaR=\Wncurvar

\catcode`\@=12

1612.01117.extracted_bib
[Ba04]{Barker {\sc L.~Barker: Fibred permutation sets and the idempotents and units of monomial Burnside rings. {\sl J.~Alg.~{281 (2004), 535--566.
1612.01117.extracted_bib
[Be95]{Benson1995 {\sc D.~J.~Benson: Representations and cohomology. I. Basic representation theory of finite groups and associative algebras. Second edition. Cambridge Studies in Advanced Mathematics, 30. Cambridge University Press, Cambridge, 1998.
1612.01117.extracted_bib
[Bol89]{Boltje1989 {\sc R.~Boltje: A canonical Brauer induction formula. {\sl Ast\'erisque {181--182 (1990), 31--59.
1612.01117.extracted_bib
[Bol98a]{Boltje1998 {\sc R.~Boltje: A general theory of canonical induction formulae. {\sl J.~Alg.~{206 (1998) 293--343.
1612.01117.extracted_bib
[Bol98b]{Boltje1998b {\sc R.~Boltje: Linear source modules and trivial source modules. Group representations: cohomology, group actions and topology (Seattle, WA, 1996), 7--30, Proc. Sympos. Pure Math., 63, Amer. Math. Soc., Providence, RI, 1998.
1612.01117.extracted_bib
[Bol01]{Boltje2001a {\sc R.~Boltje: Monomial resolutions. {\sl J. Algebra\/~{246 (2001), 811--848.
1612.01117.extracted_bib
[BK05]{BoltjeKuelshammer2005{\sc R.~Boltje, B.~K\"ulshammer: Explicit and canonical Dress induction. {\sl Algebr. Represent. Theory\/~{8 (2005), 731--746.
1612.01117.extracted_bib
[Bou96]{Bouc1996a {\sc S.~Bouc: Foncteurs d'ensembles munis d'une double action. {\sl J.~Alg.\/~{183 (1996), 664--736.
1612.01117.extracted_bib
[Bou10a]{Bouc2010a {\sc S.~Bouc: The functor of units of Burnside rings for p-groups. {\sl Comment.\ Math.\ Helv.~{82 (2007), 583--615.
1612.01117.extracted_bib
[Bou10b]{BoucBook {\sc S.~Bouc: Biset functors for finite groups. Lecture Notes in Mathematics, 1990. Springer-Verlag, Berlin, 2010.
1612.01117.extracted_bib
[Bou10c]{Bouc2010c {\sc S.~Bouc: Bisets as categories, and tensor product of induced bimodules. {\sl Appl.\ Categ.\ Structures\/~{18 (2010), 517--521.
1612.01117.extracted_bib
[BT00]{BoucThevenaz2000a {\sc S.~Bouc, J.~Th\'evenaz: The group of endo-permutation modules. {\sl Invent. math.\/~{139 (2000), 275--349.
1612.01117.extracted_bib
[BT15]{BoucThevenaz2015 {\sc S.~Bouc:, J.~Th\'evenaz: The representation theory of finite sets and correspondences. Preprint 2015. arXiv:1510.03034.
1612.01117.extracted_bib
[Br85]{Broue1985 {\sc M.~Brou\'e: On Scott modules and p-permutation modules: an approach through the Brauer morphism. {\sl Proc. Amer. Math. Soc. {93 (1985), 401--408.
1612.01117.extracted_bib
[D71]{Dress{\sc A.~Dress: The ring of monomial representations I. Structure theory. {\sl J.~Alg.~{18 (1971) 137--157.
1612.01117.extracted_bib
[D75]{Dress1975 {\sc A.~Dress: Modules with trivial source, modular monomial representations and a modular version of Brauer's induction theorem. {\sl Abh. Math. Sem. Univ. Hamburg\/~{44 (1975), 101--109 (1976).
1612.01117.extracted_bib
[I76]{Isaacs1976a {\sc M.~Isaacs: Character theory of finite groups. Pure and Applied Mathematics, No. 69. Academic Press, New York-London, 1976.
1612.01117.extracted_bib
[K87]{Karpilovsky1987a {\sc G.~Karpilovsky: The Schur multiplier. London Mathematical Society Monographs. New Series, 2. The Clarendon Press, Oxford University Press, New York, 1987.
1612.01117.extracted_bib
[R12]{Romero2012a {\sc N.~Romero: Simple modules over Green biset functors. {\sl J.~Alg.\/~{367 (2012), 203--221.
1612.01117.extracted_bib
[R13]{Romero2013a{\sc N.~Romero: On fibered biset functors with fibres of order prime and four. {\sl J.~Alg.\/~{387 (2013), 185--194.
1612.01117.extracted_bib
[T95]{Thevenaz1995 {\sc J.~Th\'evenaz: $G$ -algebras and modular representation theory. Oxford Mathematical Monographs. Oxford Science Publications. The Clarendon Press, Oxford University Press, New York, 1995.
1612.01117.extracted_bib
[T07]{Thevenaz2007 {\sc J.~Th\'evenaz: Endo-permutation modules, a guided tour. Group representation theory, 115--147, EPFL Press, Lausanne, 2007.
1612.01117.extracted_bib
[TW]{TW {\sc J.~Th\'evenaz, P.~Webb: The structure of Mackey functors. {\sl Trans. Amer. Math. Soc.~{347 (1995), 1865--1961.