Commutative diagrams and abstract categories
COMMUTATIVE DIAGRAMS

HomomorphismChainToCommutativeDiagram
HomomorphismChainToCommutativeDiagram(H)

Inputs a list H=[h_1,h_2,...,h_n] of mappings such that the composite h_1h_2...h_n is defined. It returns the list of composable homomorphism as a commutative diagram.
NormalSeriesToQuotientDiagram
NormalSeriesToQuotientDiagram(L)
NormalSeriesToQuotientDiagram(L,M)

Inputs an increasing (or decreasing) list L=[L_1,L_2,...,L_n] of normal subgroups of a group G with G=L_n. It returns the chain of quotient homomorphisms G/L_i \rightarrow G/L_{i+1} as a commutative diagram.

Optionally a subseries M of L 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.
NerveOfCommutativeDiagram
NerveOfCommutativeDiagram(D)

Inputs a commutative diagram D and returns the commutative diagram ND consisting of all possible composites of the arrows in D.
GroupHomologyOfCommutativeDiagram
GroupHomologyOfCommutativeDiagram(D,n)
GroupHomologyOfCommutativeDiagram(D,n,prime)
GroupHomologyOfCommutativeDiagram(D,n,prime,Resolution_Algorithm)

Inputs a commutative diagram D of p-groups and positive integer n. It returns the commutative diagram of vector spaces obtained by applying mod p homology.

Non-prime power groups can also be handled if a prime p is entered as the third argument. Integral homology can be obtained by setting p=0. For p=0 the result is a diagram of groups.

A particular resolution algorithm, such as ResolutionNilpotentGroup, can be entered as a fourth argument. For positive p the default is ResolutionPrimePowerGroup. For p=0 the default is ResolutionFiniteGroup.
PersistentHomologyOfCommutativeDiagramOfPGroups
PersistentHomologyOfCommutativeDiagramOfPGroups(D,n)

Inputs a commutative diagram D of finite p-groups and a positive integer n. It returns a list containing, for each homomorphism in the nerve of D, a triple [k,l,m] where k is the dimension of the source of the induced mod p homology map in degree n, l is the dimension of the image, and m is the dimension of the cokernel.

ABSTRACT CATEGORIES

CategoricalEnrichment
CategoricalEnrichment(X,Name)

Inputs a structure X 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.
IdentityArrow
IdentityArrow(X)

Inputs an object X in some category, and returns the identity arrow on the object X.
InitialArrow
InitialArrow(X)

Inputs an object X in some category, and returns the arrow from the initial object in the category to X.
TerminalArrow
TerminalArrow(X)

Inputs an object X in some category, and returns the arrow from X to the terminal object in the category.
HasInitialObject
HasInitialObject(Name)

Inputs the name of a category and returns true or false depending on whether the category has an initial object.
HasTerminalObject
HasTerminalObject(Name)

Inputs the name of a category and returns true or false depending on whether the category has a terminal object.
Source
Source(f)

Inputs an arrow f in some category, and returns its source.
Target
Target(f)

Inputs an arrow f in some category, and returns its target.
CategoryName
CategoryName(X)

Inputs an object or arrow X in some category, and returns the name of the category.
"*", "=", "+", "-"

Composition of suitable arrows f,g is given by f*g when the source of f equals the target of g. (Warning: this differes to the standard GAP convention.)

Equality is tested using f=g.

In an additive category the sum and difference of suitable arrows is given by f+g and f-g.
Object
Object(X)

Inputs an object X in some category, and returns the GAP structure Y such that X=CategoricalEnrichment(Y,CategoryName(X)).
Mapping
Mapping(X)

Inputs an arrow f in some category, and returns the GAP structure Y such that f=CategoricalEnrichment(Y,CategoryName(X)).
IsCategoryObject
IsCategoryObject(X)

Inputs X and returns true if X is an object in some category.
IsCategoryArrow
IsCategoryArrow(X)

Inputs X and returns true if X is an arrow in some category.