\documentclass[12pt,titlepage]{article} \usepackage{amsmath} \usepackage{mathrsfs} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsthm} \usepackage{mathtools} \usepackage{graphicx} \usepackage{color} \usepackage{ucs} \usepackage[utf8x]{inputenc} \usepackage{xparse} \usepackage{hyperref} %----Macros---------- % % Unresolved issues: % % \righttoleftarrow % \lefttorightarrow % % \color{} with HTML colorspec % \bgcolor % \array with options (without options, it's equivalent to the matrix environment) % Of the standard HTML named colors, white, black, red, green, blue and yellow % are predefined in the color package. Here are the rest. \definecolor{aqua}{rgb}{0, 1.0, 1.0} \definecolor{fuschia}{rgb}{1.0, 0, 1.0} \definecolor{gray}{rgb}{0.502, 0.502, 0.502} \definecolor{lime}{rgb}{0, 1.0, 0} \definecolor{maroon}{rgb}{0.502, 0, 0} \definecolor{navy}{rgb}{0, 0, 0.502} \definecolor{olive}{rgb}{0.502, 0.502, 0} \definecolor{purple}{rgb}{0.502, 0, 0.502} \definecolor{silver}{rgb}{0.753, 0.753, 0.753} \definecolor{teal}{rgb}{0, 0.502, 0.502} % Because of conflicts, \space and \mathop are converted to % \itexspace and \operatorname during preprocessing. % itex: \space{ht}{dp}{wd} % % Height and baseline depth measurements are in units of tenths of an ex while % the width is measured in tenths of an em. \makeatletter \newdimen\itex@wd% \newdimen\itex@dp% \newdimen\itex@thd% \def\itexspace#1#2#3{\itex@wd=#3em% \itex@wd=0.1\itex@wd% \itex@dp=#2ex% \itex@dp=0.1\itex@dp% \itex@thd=#1ex% \itex@thd=0.1\itex@thd% \advance\itex@thd\the\itex@dp% \makebox[\the\itex@wd]{\rule[-\the\itex@dp]{0cm}{\the\itex@thd}}} \makeatother % \tensor and \multiscript \makeatletter \newif\if@sup \newtoks\@sups \def\append@sup#1{\edef\act{\noexpand\@sups={\the\@sups #1}}\act}% \def\reset@sup{\@supfalse\@sups={}}% \def\mk@scripts#1#2{\if #2/ \if@sup ^{\the\@sups}\fi \else% \ifx #1_ \if@sup ^{\the\@sups}\reset@sup \fi {}_{#2}% \else \append@sup#2 \@suptrue \fi% \expandafter\mk@scripts\fi} \def\tensor#1#2{\reset@sup#1\mk@scripts#2_/} \def\multiscripts#1#2#3{\reset@sup{}\mk@scripts#1_/#2% \reset@sup\mk@scripts#3_/} \makeatother % \slash \makeatletter \newbox\slashbox \setbox\slashbox=\hbox{$/$} \def\itex@pslash#1{\setbox\@tempboxa=\hbox{$#1$} \@tempdima=0.5\wd\slashbox \advance\@tempdima 0.5\wd\@tempboxa \copy\slashbox \kern-\@tempdima \box\@tempboxa} \def\slash{\protect\itex@pslash} \makeatother % math-mode versions of \rlap, etc % from Alexander Perlis, "A complement to \smash, \llap, and lap" % http://math.arizona.edu/~aprl/publications/mathclap/ \def\clap#1{\hbox to 0pt{\hss#1\hss}} \def\mathllap{\mathpalette\mathllapinternal} \def\mathrlap{\mathpalette\mathrlapinternal} \def\mathclap{\mathpalette\mathclapinternal} \def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}} \def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}} \def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}} % Renames \sqrt as \oldsqrt and redefine root to result in \sqrt[#1]{#2} \let\oldroot\root \def\root#1#2{\oldroot #1 \of{#2}} \renewcommand{\sqrt}[2][]{\oldroot #1 \of{#2}} % Manually declare the txfonts symbolsC font \DeclareSymbolFont{symbolsC}{U}{txsyc}{m}{n} \SetSymbolFont{symbolsC}{bold}{U}{txsyc}{bx}{n} \DeclareFontSubstitution{U}{txsyc}{m}{n} % Manually declare the stmaryrd font \DeclareSymbolFont{stmry}{U}{stmry}{m}{n} \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} % Manually declare the MnSymbolE font \DeclareFontFamily{OMX}{MnSymbolE}{} \DeclareSymbolFont{mnomx}{OMX}{MnSymbolE}{m}{n} \SetSymbolFont{mnomx}{bold}{OMX}{MnSymbolE}{b}{n} \DeclareFontShape{OMX}{MnSymbolE}{m}{n}{ <-6> MnSymbolE5 <6-7> MnSymbolE6 <7-8> MnSymbolE7 <8-9> MnSymbolE8 <9-10> MnSymbolE9 <10-12> MnSymbolE10 <12-> MnSymbolE12}{} % Declare specific arrows from txfonts without loading the full package \makeatletter \def\re@DeclareMathSymbol#1#2#3#4{% \let#1=\undefined \DeclareMathSymbol{#1}{#2}{#3}{#4}} \re@DeclareMathSymbol{\neArrow}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\neArr}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\seArrow}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\seArr}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\nwArrow}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\nwArr}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\swArrow}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\swArr}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\nequiv}{\mathrel}{symbolsC}{46} \re@DeclareMathSymbol{\Perp}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\Vbar}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\sslash}{\mathrel}{stmry}{12} \re@DeclareMathSymbol{\bigsqcap}{\mathop}{stmry}{"64} \re@DeclareMathSymbol{\biginterleave}{\mathop}{stmry}{"6} \re@DeclareMathSymbol{\invamp}{\mathrel}{symbolsC}{77} \re@DeclareMathSymbol{\parr}{\mathrel}{symbolsC}{77} \makeatother % \llangle, \rrangle, \lmoustache and \rmoustache from MnSymbolE \makeatletter \def\Decl@Mn@Delim#1#2#3#4{% \if\relax\noexpand#1% \let#1\undefined \fi \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#3}{#4}} \def\Decl@Mn@Open#1#2#3{\Decl@Mn@Delim{#1}{\mathopen}{#2}{#3}} \def\Decl@Mn@Close#1#2#3{\Decl@Mn@Delim{#1}{\mathclose}{#2}{#3}} \Decl@Mn@Open{\llangle}{mnomx}{'164} \Decl@Mn@Close{\rrangle}{mnomx}{'171} \Decl@Mn@Open{\lmoustache}{mnomx}{'245} \Decl@Mn@Close{\rmoustache}{mnomx}{'244} \makeatother % Widecheck \makeatletter \DeclareRobustCommand\widecheck[1]{{\mathpalette\@widecheck{#1}}} \def\@widecheck#1#2{% \setbox\z@\hbox{\m@th$#1#2$}% \setbox\tw@\hbox{\m@th$#1% \widehat{% \vrule\@width\z@\@height\ht\z@ \vrule\@height\z@\@width\wd\z@}$}% \dp\tw@-\ht\z@ \@tempdima\ht\z@ \advance\@tempdima2\ht\tw@ \divide\@tempdima\thr@@ \setbox\tw@\hbox{% \raise\@tempdima\hbox{\scalebox{1}[-1]{\lower\@tempdima\box \tw@}}}% {\ooalign{\box\tw@ \cr \box\z@}}} \makeatother % \mathraisebox{voffset}[height][depth]{something} \makeatletter \NewDocumentCommand\mathraisebox{moom}{% \IfNoValueTF{#2}{\def\@temp##1##2{\raisebox{#1}{$\m@th##1##2$}}}{% \IfNoValueTF{#3}{\def\@temp##1##2{\raisebox{#1}[#2]{$\m@th##1##2$}}% }{\def\@temp##1##2{\raisebox{#1}[#2][#3]{$\m@th##1##2$}}}}% \mathpalette\@temp{#4}} \makeatletter % udots (taken from yhmath) \makeatletter \def\udots{\mathinner{\mkern2mu\raise\p@\hbox{.} \mkern2mu\raise4\p@\hbox{.}\mkern1mu \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}} \makeatother %% Fix array \newcommand{\itexarray}[1]{\begin{matrix}#1\end{matrix}} %% \itexnum is a noop \newcommand{\itexnum}[1]{#1} %% Renaming existing commands \newcommand{\underoverset}[3]{\underset{#1}{\overset{#2}{#3}}} \newcommand{\widevec}{\overrightarrow} \newcommand{\darr}{\downarrow} \newcommand{\nearr}{\nearrow} \newcommand{\nwarr}{\nwarrow} \newcommand{\searr}{\searrow} \newcommand{\swarr}{\swarrow} \newcommand{\curvearrowbotright}{\curvearrowright} \newcommand{\uparr}{\uparrow} \newcommand{\downuparrow}{\updownarrow} \newcommand{\duparr}{\updownarrow} \newcommand{\updarr}{\updownarrow} \newcommand{\gt}{>} \newcommand{\lt}{<} \newcommand{\map}{\mapsto} \newcommand{\embedsin}{\hookrightarrow} \newcommand{\Alpha}{A} \newcommand{\Beta}{B} \newcommand{\Zeta}{Z} \newcommand{\Eta}{H} \newcommand{\Iota}{I} \newcommand{\Kappa}{K} \newcommand{\Mu}{M} \newcommand{\Nu}{N} \newcommand{\Rho}{P} \newcommand{\Tau}{T} \newcommand{\Upsi}{\Upsilon} \newcommand{\omicron}{o} \newcommand{\lang}{\langle} \newcommand{\rang}{\rangle} \newcommand{\Union}{\bigcup} \newcommand{\Intersection}{\bigcap} \newcommand{\Oplus}{\bigoplus} \newcommand{\Otimes}{\bigotimes} \newcommand{\Wedge}{\bigwedge} \newcommand{\Vee}{\bigvee} \newcommand{\coproduct}{\coprod} \newcommand{\product}{\prod} \newcommand{\closure}{\overline} \newcommand{\integral}{\int} \newcommand{\doubleintegral}{\iint} \newcommand{\tripleintegral}{\iiint} \newcommand{\quadrupleintegral}{\iiiint} \newcommand{\conint}{\oint} \newcommand{\contourintegral}{\oint} \newcommand{\infinity}{\infty} \newcommand{\bottom}{\bot} \newcommand{\minusb}{\boxminus} \newcommand{\plusb}{\boxplus} \newcommand{\timesb}{\boxtimes} \newcommand{\intersection}{\cap} \newcommand{\union}{\cup} \newcommand{\Del}{\nabla} \newcommand{\odash}{\circleddash} \newcommand{\negspace}{\!} \newcommand{\widebar}{\overline} \newcommand{\textsize}{\normalsize} \renewcommand{\scriptsize}{\scriptstyle} \newcommand{\scriptscriptsize}{\scriptscriptstyle} \newcommand{\mathfr}{\mathfrak} \newcommand{\statusline}[2]{#2} \newcommand{\tooltip}[2]{#2} \newcommand{\toggle}[2]{#2} % Theorem Environments \theoremstyle{plain} \newtheorem{theorem}{Theorem} \newtheorem{lemma}{Lemma} \newtheorem{prop}{Proposition} \newtheorem{cor}{Corollary} \newtheorem*{utheorem}{Theorem} \newtheorem*{ulemma}{Lemma} \newtheorem*{uprop}{Proposition} \newtheorem*{ucor}{Corollary} \theoremstyle{definition} \newtheorem{defn}{Definition} \newtheorem{example}{Example} \newtheorem*{udefn}{Definition} \newtheorem*{uexample}{Example} \theoremstyle{remark} \newtheorem{remark}{Remark} \newtheorem{note}{Note} \newtheorem*{uremark}{Remark} \newtheorem*{unote}{Note} %------------------------------------------------------------------- \begin{document} %------------------------------------------------------------------- \section*{direct sum} \hypertarget{context}{}\subsubsection*{{Context}}\label{context} \hypertarget{limits_and_colimits}{}\paragraph*{{Limits and colimits}}\label{limits_and_colimits} [[!include infinity-limits - contents]] \hypertarget{direct_sums_and_weak_direct_products}{}\section*{{Direct sums and weak direct products}}\label{direct_sums_and_weak_direct_products} \noindent\hyperlink{idea}{Idea}\dotfill \pageref*{idea} \linebreak \noindent\hyperlink{terminology}{Terminology}\dotfill \pageref*{terminology} \linebreak \noindent\hyperlink{definitions}{Definitions}\dotfill \pageref*{definitions} \linebreak \noindent\hyperlink{direct_sum}{Direct sum}\dotfill \pageref*{direct_sum} \linebreak \noindent\hyperlink{weak_direct_product}{Weak direct product}\dotfill \pageref*{weak_direct_product} \linebreak \noindent\hyperlink{examples}{Examples}\dotfill \pageref*{examples} \linebreak \noindent\hyperlink{internal_direct_sums}{Internal direct sums}\dotfill \pageref*{internal_direct_sums} \linebreak \noindent\hyperlink{related_concepts}{Related concepts}\dotfill \pageref*{related_concepts} \linebreak \hypertarget{idea}{}\subsection*{{Idea}}\label{idea} The notion of \textbf{direct sum}, or \textbf{weak direct product}, is a concept from [[algebra]] that actually makes sense in any [[category]] $C$ with [[zero morphisms]] (that is, any category [[enriched category|enriched]] over the [[closed monoidal category]] of [[pointed sets]]), as long as the needed ([[colimit|co]])[[limits]] exist. A basic and familiar example is the direct sum $V_1 \oplus V_2$ of two [[vector spaces]] $V_1$ and $V_2$ over some [[field]], or, more generally of two [[modules]] over some [[ring]]. Generally, for $I$ a set and $\{V_i\}_{i \in I}$ an $I$-indexed family of vector space or modules, their direct sum $\bigoplus_{i \in I} V_i$ is the collection of [[formal linear combinations]] of elements in each of the $V_i$. This may in part motivate the terminology: \emph{an element in a direct sum is a sum of elements}, at least in these cases. This generalises in two distinct ways, which we call \emph{direct sums} and \emph{weak direct products}. In many cases (as in the example above), these coincide, but not always. Also in many cases, direct sums will be the same as [[coproducts]]. In any case, finitary weak direct products are the same as [[products]] but the infinitary versions are (almost always) different. \hypertarget{terminology}{}\subsection*{{Terminology}}\label{terminology} The name `weak direct product' comes from the concept of [[direct product]] in [[algebra]] for a [[product]] in a [[concrete category]] that is created by the [[forgetful functor]]; the weak direct product will be a [[subobject]] of the direct product (and the entire direct product in finitary cases). But here we will not restrict ourselves to the context of such a concrete category. The term `direct sum' comes from the finitary [[biproduct]] (simultaneously product and coproduct) in [[additive category|additive categories]]. The additive character of these biproducts extends in the infinitary case (where biproducts generally no longer appear) to the coproduct rather than to the product. Even when the direct sum is not the same as the coproduct, it still retains some of this flavour. In the classical examples of $C$, the direct sum and weak direct product are the same. However, the general definitions below distinguish them in some cases, and we use the terms `direct sum' and `weak direct product' to best evoke the `like a coproduct' and `part of a product' senses. \hypertarget{definitions}{}\subsection*{{Definitions}}\label{definitions} Let $\mathcal{C}$ be a [[category]] with [[products]] and [[coproducts]], as well as [[zero morphisms]]. Let $I$ be a [[set]], and let $(A_i)_{i \in I}$ be an $I$-indexed [[family]] of of [[objects]] in $\mathcal{C}$, hence a [[function]] $A : I \to Obj(\mathcal{C})$. We now define both the direct sum and weak direct product of this family. The $A_i$ will be called the \textbf{direct summands} or (weak) \textbf{direct factors}. \hypertarget{direct_sum}{}\subsubsection*{{Direct sum}}\label{direct_sum} Here we must assume moreover that $\mathcal{C}$ is a [[regular category]] (or otherwise has a good concept of [[image]]). \begin{defn} \label{}\hypertarget{}{} Let $r$ be the morphism from the [[coproduct]] $\coprod_i A_i$ to the [[product]] $\prod_i A_i$ characterized by having the following components \begin{displaymath} \left( A_i \to \coprod A \stackrel{r}{\to} \prod A \to A_j \right) = \left\{ \itexarray{ Id_{A_i} & if\; i = j \\ 0_{ij} & if\; i \neq j ,} \right. \, \end{displaymath} where $0_{ij}$ is the [[zero morphism]] from $A_i$ to $A_j$. The \textbf{direct sum} over the family $\{A_i\}$ is the [[image]] \begin{displaymath} \coprod_i A_i \overset{\coim r}\to \bigoplus_i A_I \overset{\im r}\to \prod_i A_i \end{displaymath} of the morphism $r$. \end{defn} \begin{remark} \label{}\hypertarget{}{} In [[constructive mathematics]], the definition of $r$ requires that the index set $I$ have [[decidable equality]], which is the case in most applications of interest. An arbitrary index set will still work if $\mathcal{C}$ is [[enriched category|enriched]] over the category of sets and [[partial functions]]; this may be embedded as a [[full subcategory]] of the category of pointed sets, and the embedding is an [[equivalence of categories]] if and only if the law of [[excluded middle]] holds. But the usual examples of $\mathcal{C}$ are not (constructively) so enriched. Fortunately, the usual examples of $I$ have decidable equality. \end{remark} \hypertarget{weak_direct_product}{}\subsubsection*{{Weak direct product}}\label{weak_direct_product} Here we consider the finitary [[products]] \begin{displaymath} \prod_{i \in F} A_i \end{displaymath} as $F$ varies over the [[finite set|finite subsets]] of the index set $I$. (In [[constructive mathematics]], use `finitely indexed' or `[[Kuratowski finite]]' here \ldots{} although if $I$ has [[decidable equality]], as is the case in the usual examples, then every finitely indexed subset of $I$ is actually finite in the strictest sense.) These finite products form a [[directed limit|direct system]] indexed by the [[direction|directed set]] $\mathcal{P}_{fin}I$ of finite subsets of $I$ (ordered by inclusion) with the map \begin{displaymath} \prod_{i \in F} A_i \to \prod_{i \in G} A_i , \end{displaymath} where $F \subseteq G$, given by \begin{displaymath} \prod_{i \in F} A_i \cong \prod_{i \in F} A_i \times \prod_{i \in G \setminus F} 1 \stackrel{(id, 0)}{\to} \prod_{i \in F} A_i \times \prod_{i \in G \setminus F} A_i \cong \prod_{i \in G} A_i . \end{displaymath} \begin{defn} \label{}\hypertarget{}{} If it exists, the \textbf{weak direct product} $\prod^wk_i A_i$ is defined to be the [[directed limit|directed colimit]] of this direct system. \end{defn} \hypertarget{examples}{}\subsection*{{Examples}}\label{examples} \begin{example} \label{}\hypertarget{}{} In the categories [[Grp]] or [[Ab]] of ([[abelian group|abelian]]) [[groups]], the direct sum and weak direct product agree. For finitely many objects, it is the same as the [[direct product]], which is the [[product]] in both categories. \end{example} \begin{remark} \label{}\hypertarget{}{} In [[Ab]], where finite products are also finite [[coproducts]], the direct sum continues to be the coproduct, while in [[Grp]], it lies between the coproduct (the [[free product]]) and the product. So in [[Ab]] the direct sum is the object equipped with a collection of morphisms \begin{displaymath} \itexarray{ A_j &&\cdots && A_k \\ & {}_{\mathllap{\iota_j} }\searrow &\cdots& \swarrow_{\mathrlap{\iota_{k}}} \\ && \bigoplus_{i \in I} A_i } \end{displaymath} which is characterized up to unique [[isomorphism]] by the following [[universal property]]: for every other abelian group $K$ equipped with maps \begin{displaymath} \itexarray{ A_j &&\cdots && A_k \\ & {}_{\mathllap{f_j} }\searrow &\cdots& \swarrow_{\mathrlap{f_{k}}} \\ && K } \end{displaymath} there is a unique homomorphism $\phi : \bigoplus_{i \in I} A_i \to K$ such that $f_i = \phi \circ \iota_i$ for all $i \in I$. \end{remark} \begin{prop} \label{}\hypertarget{}{} In these examples, the direct sum can also be described in more elementary terms as a [[subgroup]] of the direct product: \begin{displaymath} \bigoplus_{i: I} A_i = \left\{ (a_i)_{i : I} \;|\; ess \forall (i: I),\; a_i = 0 \right\} \,, \end{displaymath} where `$ess \forall$' means `for all but finitely many'. This makes it clear that the direct sum equals the direct product when there are only finitely many objects involved. For $\mathcal{C} =$ [[Ab]], $R$[[Mod]] this is the group of [[formal linear combinations]] of elements in the summands. \end{prop} \begin{example} \label{}\hypertarget{}{} For $R$ a [[ring]], the direct sums in the category $R$[[Mod]] or [[modules]] over $R$ are given by those on the underlying abelian groups. \end{example} \begin{example} \label{}\hypertarget{}{} In the category of [[pointed sets]], the direct sum and weak direct product are different. The weak direct product is still given as a pointed subset of the direct product as above. The direct sum, on the other hand, is the same as the [[wedge sum]], which is the same as the coproduct in this category. Even for $2$ pointed sets, this is different from the weak direct product (which is, as always, the same as the product for finitely many objects). \end{example} \begin{example} \label{}\hypertarget{}{} In the category of [[Banach spaces]] (with [[short linear maps]]), the direct sum is the $l^1$ direct sum, while the weak direct product is the $l^\infty$ direct sum. (There is in fact a range of $l^p$ direct sums for $1 \leq p \leq \infty$, although I don't know what if any [[universal properties]] they all satisfy.) In this case, the direct sum is the same as the coproduct, while the weak direct product is the same as the product even for infinitely many objects. See [[direct sum of Banach spaces]]. \end{example} \hypertarget{internal_direct_sums}{}\subsection*{{Internal direct sums}}\label{internal_direct_sums} Given an object $B$ and a [[family of subobjects]] $A_i$ of $B$ (or more generally a family of morphisms $A_i \to B$, or equivalently a map $\coprod_i A_i \to B$), suppose that the direct sum $\bigoplus_i A_i$ exists. Suppose further that the map $\coprod_i A_i \to B$ factors through the map $\coprod_i A_i \to \bigoplus_i A_i$ (which means that it factors uniquely if $\coprod_i A_i \to \bigoplus_i A_i$ is [[epimorphism|epic]], as it must be in a regular category). Finally, suppose that the (or a) quotient map $\bigoplus_i A_i \to B$ is [[isomorphism|isic]]. Then we say that $B$ is the \textbf{internal direct sum} of the $A_i$. In contrast, the abstractly defined direct sum $\bigoplus_i A_i$ may be called an \textbf{external direct sum}. These terms are usually used with [[concrete categories]] where the $A_i$ may either be given independently (for an external direct sum) or as subsets of some ambient space (either $B$ or something of which $B$ is a subset) for an internal direct sum. In too abstract a context, there is no difference: on the one hand, any internal direct sum is a fortiori isomorphic to any external direct sum; on the other hand, given an external direct sum, there is a natural map $\coprod_i A_i \to \bigoplus_i A_i$, relative to which the external direct sum is an internal direct sum. \hypertarget{related_concepts}{}\subsection*{{Related concepts}}\label{related_concepts} \begin{itemize}% \item [[direct sum of vector bundles]]/[[Whitney sum]] \end{itemize} [[!redirects direct sum]] [[!redirects direct sums]] [[!redirects direct summand]] [[!redirects direct summands]] [[!redirects internal direct sum]] [[!redirects external direct sum]] [[!redirects weak direct product]] [[!redirects weak direct products]] [[!redirects direct sum of groups]] [[!redirects direct sum of abelian groups]] \end{document}