<Chapter><Heading> Commutative diagrams and abstract categories</Heading> <B>COMMUTATIVE DIAGRAMS</B> <Br/> <Section><Heading> &nbsp;</Heading> 
<ManSection> <Func Name="HomomorphismChainToCommutativeDiagram" Arg="H"/> <Description> <P/> Inputs a list <M>H=[h_1,h_2,...,h_n]</M> of mappings such that the composite <M>h_1h_2...h_n</M> is defined. It returns the list of composable homomorphism as a commutative diagram. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="NormalSeriesToQuotientDiagram" Arg="L"/> <Func Name="NormalSeriesToQuotientDiagram" Arg="L,M"/> <Description> <P/> Inputs an increasing (or decreasing) list <M>L=[L_1,L_2,...,L_n]</M> of normal subgroups of a group <M>G</M> with <M>G=L_n</M>. It returns the chain of quotient homomorphisms <M>G/L_i \rightarrow G/L_{i+1}</M> as a commutative diagram. <P/> Optionally a subseries <M>M</M> of <M>L</M> can be entered as a second variable. Then the resulting diagram of quotient groups has two rows of horizontal arrows and one row of vertical arrows. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="NerveOfCommutativeDiagram" Arg="D"/> <Description> <P/> Inputs a commutative diagram <M>D</M> and returns the commutative diagram <M>ND</M> consisting of all possible composites of the arrows in <M>D</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="GroupHomologyOfCommutativeDiagram" Arg="D,n"/> <Func Name="GroupHomologyOfCommutativeDiagram" Arg="D,n,prime"/> <Func Name="GroupHomologyOfCommutativeDiagram" Arg="D,n,prime,Resolution_Algorithm"/> <Description> <P/> Inputs a commutative diagram <M>D</M> of <M>p</M>-groups and positive integer <M>n</M>. It returns the commutative diagram of vector spaces obtained by applying mod p homology. <P/> Non-prime power groups can also be handled if a prime <M>p</M> is entered as the third argument. Integral homology can be obtained by setting <M>p=0</M>. For <M>p=0</M> the result is a diagram of groups. <P/> A particular resolution algorithm, such as ResolutionNilpotentGroup, can be entered as a fourth argument. For positive <M>p</M> the default is ResolutionPrimePowerGroup. For <M>p=0</M> the default is ResolutionFiniteGroup. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="PersistentHomologyOfCommutativeDiagramOfPGroups" Arg="D,n"/> <Description> <P/> Inputs a commutative diagram <M>D</M> of finite <M>p</M>-groups and a positive integer <M>n</M>. It returns a list containing, for each homomorphism in the nerve of <M>D</M>, a triple <M>[k,l,m]</M> where <M>k</M> is the dimension of the source of the induced mod <M>p</M> homology map in degree <M>n</M>, <M>l</M> is the dimension of the image, and <M>m</M> is the dimension of the cokernel. <P/><B>Examples:</B> 
</Description> </ManSection> </Section> <B>ABSTRACT CATEGORIES</B> <Br/><Br/> <Section><Heading> &nbsp;</Heading> 
<ManSection> <Func Name="CategoricalEnrichment" Arg="X,Name"/> <Description> <P/> Inputs a structure <M>X</M> such as a group or group homomorphism, together with the name of some existing category such as Name:=Category_of_Groups or Category_of_Abelian_Groups. It returns, as appropriate, an object or arrow in the named category. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="IdentityArrow" Arg="X"/> <Description> <P/> Inputs an object <M>X</M> in some category, and returns the identity arrow on the object <M>X</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="InitialArrow" Arg="X"/> <Description> <P/> Inputs an object <M>X</M> in some category, and returns the arrow from the initial object in the category to <M>X</M>. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="TerminalArrow" Arg="X"/> <Description> <P/> Inputs an object <M>X</M> in some category, and returns the arrow from <M>X</M> to the terminal object in the category. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="HasInitialObject" Arg="Name"/> <Description> <P/> Inputs the name of a category and returns true or false depending on whether the category has an initial object. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="HasTerminalObject" Arg="Name"/> <Description> <P/> Inputs the name of a category and returns true or false depending on whether the category has a terminal object. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="Source" Arg="f"/> <Description> <P/> Inputs an arrow <M>f</M> in some category, and returns its source. <P/><B>Examples:</B> <URL><Link>../tutorial/chap2.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap4.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutNonabelian.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>9</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutFunctorial.html</Link><LinkText>10</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutLieCovers.html</Link><LinkText>11</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Target" Arg="f"/> <Description> <P/> Inputs an arrow <M>f</M> in some category, and returns its target. <P/><B>Examples:</B> <URL><Link>../tutorial/chap1.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap2.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap8.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>6</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoveringSpaces.html</Link><LinkText>7</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoverinSpaces.html</Link><LinkText>8</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="CategoryName" Arg="X"/> <Description> <P/> Inputs an object or arrow <M>X</M> in some category, and returns the name of the category. <P/><B>Examples:</B> <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>1</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Var Name="CompositionEqualityAdditionMinus"/> <Description> <P/> Composition of suitable arrows <M>f,g</M> is given by <M>f*g</M> when the source of <M>f</M> equals the target of <M>g</M>. (Warning: this differes to the standard GAP convention.) <P/> Equality is tested using <M>f=g</M>. <P/>In an additive category the sum and difference of suitable arrows is given by <M>f+g</M> and <M>f-g</M>. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="Object" Arg="X"/> <Description> <P/> Inputs an object <M>X</M> in some category, and returns the GAP structure <M>Y</M> such that <M>X=CategoricalEnrichment(Y,CategoryName(X))</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap10.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>2</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="Mapping" Arg="X"/> <Description> <P/> Inputs an arrow <M>f</M> in some category, and returns the GAP structure <M>Y</M> such that <M>f=CategoricalEnrichment(Y,CategoryName(X))</M>. <P/><B>Examples:</B> <URL><Link>../tutorial/chap6.html</Link><LinkText>1</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap7.html</Link><LinkText>2</LinkText></URL>&nbsp;, <URL><Link>../tutorial/chap13.html</Link><LinkText>3</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutAbelianCategories.html</Link><LinkText>4</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutCoefficientSequence.html</Link><LinkText>5</LinkText></URL>&nbsp;, <URL><Link>../www/SideLinks/About/aboutGouter.html</Link><LinkText>6</LinkText></URL>&nbsp;
</Description> </ManSection> 
<ManSection> <Func Name="IsCategoryObject" Arg="X"/> <Description> <P/> Inputs <M>X</M> and returns true if <M>X</M> is an object in some category. <P/><B>Examples:</B> 
</Description> </ManSection> 
<ManSection> <Func Name="IsCategoryArrow" Arg="X"/> <Description> <P/> Inputs <M>X</M> and returns true if <M>X</M> is an arrow in some category. <P/><B>Examples:</B> 
</Description> </ManSection> </Section> </Chapter>