# Abelian Groups

- [Introduction](introduction.md)

- [Construction of a Finitely Presented Abelian Group and its Elements](creation.md)

  - [The Free Abelian Group](creation.md#the-free-abelian-group)

    - [`FreeAbelianGroup(n): RngIntElt → GrpAb`](creation.md#function-freeabeliangroup-rngintelt)

    - [`Example: Free Abelian Group`](creation.md#example-ex-c01eb3)

  - [Relations](creation.md#relations)

    - [`w₁ = w₂: GrpAbElt, GrpAbElt → Rel`](creation.md#operation-op-grpabelt-grpabelt)

    - [`r[1]: GrpAbRel, RngIntElt → GrpAbElt`](creation.md#indexed-indexed-r-grpabrel-rngintelt-grpabelt)

    - [`LHS(r): Rel → GrpAbElt`](creation.md#function-lhs-rel)

    - [`r[2]: GrpAbRel, RngIntElt → GrpAbElt`](creation.md#indexed-indexed-r-grpabrel-rngintelt-grpabelt-2)

    - [`RHS(r): Rel → GrpAbElt`](creation.md#function-rhs-rel)

    - [`Parent(r): RelElt → GrpAb`](creation.md#function-parent-relelt)

    - [`Example: Relations`](creation.md#example-ex-0f1824)

  - [Specification of a Presentation](creation.md#specification-of-a-presentation)

    - [`AbelianGroup< X | R >: List(Var), List(GrpAbRel) → GrpAb, Hom(GrpAb)`](creation.md#constructor-constructor-abeliangroup-list-var-list-grpabrel-grpab-hom-grpab)

    - [`Example: Abelian Group`](creation.md#example-ex-bd5820)

    - [`AbelianGroup([n₁,...,nᵣ]): [ RngIntElt ] → GrpAb`](creation.md#function-abeliangroup-rngintelt)

    - [`Example: Abelian Group2`](creation.md#example-ex-ea4c01)

  - [Accessing the Defining Generators and Relations](creation.md#accessing-the-defining-generators-and-relations)

    - [`A . i: GrpAb, RngIntElt → GrpAbElt`](creation.md#operation-operation-grpab-rngintelt-grpabelt)

    - [`Generators(A): GrpAb → { GrpAbElt}`](creation.md#function-generators-grpab)

    - [`NumberOfGenerators(A): GrpAb → RngIntElt`](creation.md#function-numberofgenerators-grpab)

    - [`Ngens(A): GrpAb → RngIntElt`](creation.md#function-ngens-grpab)

    - [`Parent(u): GrpAbElt → GrpAb`](creation.md#function-parent-grpabelt)

    - [`Relations(A): GrpAb → [ Rel ]`](creation.md#function-relations-grpab)

    - [`RelationMatrix(A): GrpAb → Mtrx`](creation.md#function-relationmatrix-grpab)

- [Construction of a Generic Abelian Group](generic-abelian.md)

  - [Specification of a Generic Abelian Group](generic-abelian.md#specification-of-a-generic-abelian-group)

    - [`GenericAbelianGroup(U: parameters): . → GrpAbGen`](generic-abelian.md#function-genericabeliangroup)

    - [`Example: Creation`](generic-abelian.md#example-ex-5df08f)

  - [Accessing Generators](generic-abelian.md#accessing-generators)

    - [`Universe(A): GrpAbGen`](generic-abelian.md#function-universe-grpabgen)

    - [`A . i: GrpAbGen, RngIntElt → GrpAbGenElt`](generic-abelian.md#operation-operation-grpabgen-rngintelt-grpabgenelt)

    - [`Generators(A): GrpAbGen → [ GrpAbGenElt ]`](generic-abelian.md#function-generators-grpabgen)

    - [`UserGenerators(A): GrpAbGen → [ GrpAbGenElt ]`](generic-abelian.md#function-usergenerators-grpabgen)

    - [`NumberOfGenerators(A): GrpAbGen → RngIntElt`](generic-abelian.md#function-numberofgenerators-grpabgen)

    - [`Ngens(A): GrpAbGen → RngIntElt`](generic-abelian.md#function-ngens-grpabgen)

  - [Computing Abelian Group Structure](generic-abelian.md#computing-abelian-group-structure)

    - [`AbelianGroup(A: parameters): GrpAbGen → GrpAb, Map`](generic-abelian.md#function-abeliangroup-grpabgen)

    - [`Example: Group Computation`](generic-abelian.md#example-ex-0d76ee)

- [Elements](elements.md)

  - [Construction of Elements](elements.md#construction-of-elements)

    - [`A ! [a₁, ... ,aₙ]: GrpAb, [RngIntElt] → GrpAbElt`](elements.md#operation-op-grpab-rngintelt)

    - [`A ! [a₁, ... ,aₙ]: GrpAbGen, [RngIntElt] → GrpAbGenElt`](elements.md#operation-op-grpabgen-rngintelt)

    - [`A ! e: GrpAbGen, Elt → GrpAbGenElt`](elements.md#operation-op-grpabgen-elt)

    - [`A ! g: GrpAbGen, GrpAbGenElt → GrpAbGenElt`](elements.md#operation-op-grpabgen-grpabgenelt)

    - [`A ! n: GrpAb, RngIntElt → GrpAbElt`](elements.md#operation-op-grpab-rngintelt-2)

    - [`Random(A): GrpAbGen → GrpAbGenElt`](elements.md#function-random-grpabgen)

    - [`Identity(A): GrpAb → GrpAbElt`](elements.md#function-identity-grpab)

    - [`Id(A): GrpAb → GrpAbElt`](elements.md#function-id-grpab)

    - [`A ! 0: GrpAb, RngIntElt → GrpAbElt`](elements.md#operation-op-grpab-rngintelt-3)

  - [Representation of an Element](elements.md#representation-of-an-element)

    - [`Representation(g): GrpAbGenElt → [RngIntElt]`](elements.md#function-representation-grpabgenelt)

    - [`ElementToSequence(g): GrpAbGenElt → [RngIntElt]`](elements.md#function-elementtosequence-grpabgenelt)

    - [`Eltseq(g): GrpAbGenElt → [RngIntElt]`](elements.md#function-eltseq-grpabgenelt)

    - [`UserRepresentation(g): GrpAbGenElt → [RngIntElt]`](elements.md#function-userrepresentation-grpabgenelt)

    - [`Representation(S, g): SeqEnum, GrpAbGenElt → [RngIntElt], RngIntElt`](elements.md#function-representation-seqenum-grpabgenelt)

    - [`Example: Element Creation And Rep`](elements.md#example-ex-f86c65)

  - [Arithmetic with Elements](elements.md#arithmetic-with-elements)

    - [`u + v: GrpAbElt, GrpAbElt → GrpAbElt`](elements.md#operation-op-plus-grpabelt-grpabelt)

    - [`- u: GrpAbElt → GrpAbElt`](elements.md#operation-operation-grpabelt-grpabelt)

    - [`u - v: GrpAbElt, GrpAbElt → GrpAbElt`](elements.md#operation-op-minus-grpabelt-grpabelt)

    - [`m * u: RngIntElt, GrpAbElt → GrpAbElt`](elements.md#operation-op-times-rngintelt-grpabelt)

    - [`u * m: GrpAb, RngIntElt → GrpAbElt`](elements.md#operation-op-times-grpab-rngintelt)

- [Construction of Subgroups and Quotient Groups](subgroup-quotient.md)

  - [Construction of Subgroups](subgroup-quotient.md#construction-of-subgroups)

    - [`sub<A | L>: GrpAb, List → GrpAb, Map`](subgroup-quotient.md#constructor-constructor-sub-grpab-list-grpab-map)

    - [`Example: Subgroup Creation`](subgroup-quotient.md#example-ex-f256c6)

    - [`sub<A | L: parameters>: GrpAbGen, List → GrpAbGen`](subgroup-quotient.md#constructor-constructor-sub-grpabgen-list-grpabgen)

    - [`Example: Generic Subgroup Creation`](subgroup-quotient.md#example-ex-8e5822)

  - [Construction of Quotient Groups](subgroup-quotient.md#construction-of-quotient-groups)

    - [`quo<F | R>: GrpAb, List → GrpAb, Hom(GrpAb)`](subgroup-quotient.md#constructor-constructor-quo-grpab-list-grpab-hom-grpab)

    - [`A / B: GrpAb, GrpAb → GrpAb`](subgroup-quotient.md#operation-op-div-grpab-grpab)

- [Standard Constructions and Conversions](standard-construction.md)

  - [`AbelianGroup(GrpAb, Q): Cat, [ RngIntElt ] → GrpAb`](standard-construction.md#function-abeliangroup-cat-rngintelt)

  - [`AbelianGroup(Q): [ RngIntElt ] → GrpAb`](standard-construction.md#function-abeliangroup-rngintelt-2)

  - [`AbelianGroup(G): Grp → GrpAb, Hom`](standard-construction.md#function-abeliangroup-grp)

  - [`AbelianQuotient(G): Grp → GrpAb, Hom`](standard-construction.md#function-abelianquotient-grp)

  - [`DirectSum(A, B): GrpAb, GrpAb → GrpAb`](standard-construction.md#function-directsum-grpab-grpab)

  - [`PCGroup(A): GrpAb → GrpPC, Hom(Grp)`](standard-construction.md#function-pcgroup-grpab)

  - [`PermutationGroup(A): GrpAb → GrpPerm, Hom(Grp)`](standard-construction.md#function-permutationgroup-grpab)

  - [`FPGroup(A): GrpAb → GrpFP, Hom(Grp)`](standard-construction.md#function-fpgroup-grpab)

  - [`CommutatorSubgroup(G): GrpAb → GrpAb`](standard-construction.md#function-commutatorsubgroup-grpab)

  - [`DerivedSubgroup(G): GrpAb → GrpAb`](standard-construction.md#function-derivedsubgroup-grpab)

  - [`DerivedGroup(G): GrpAb → GrpAb`](standard-construction.md#function-derivedgroup-grpab)

  - [`CommutatorSubgroup(H, K): GrpAb, GrpAb → GrpAb`](standard-construction.md#function-commutatorsubgroup-grpab-grpab)

  - [`CommutatorSubgroup(G, H, K): GrpAb, GrpAb, GrpAb → GrpAb`](standard-construction.md#function-commutatorsubgroup-grpab-grpab-grpab)

  - [`Centralizer(G, a): GrpAb, GrpAbElt → GrpAb`](standard-construction.md#function-centralizer-grpab-grpabelt)

  - [`Centraliser(G, a): GrpAb, GrpAbElt → GrpAb`](standard-construction.md#function-centraliser-grpab-grpabelt)

  - [`Core(G, H): GrpAb, GrpAb → GrpAb`](standard-construction.md#function-core-grpab-grpab)

  - [`Centre(G): GrpAb → GrpAb`](standard-construction.md#function-centre-grpab)

  - [`Center(G): GrpAb → GrpAb`](standard-construction.md#function-center-grpab)

  - [`FittingGroup(G): GrpAb → GrpAb`](standard-construction.md#function-fittinggroup-grpab)

  - [`FittingSubgroup(G): GrpAb → GrpAb`](standard-construction.md#function-fittingsubgroup-grpab)

  - [`Hypercentre(G): GrpAb → GrpAb`](standard-construction.md#function-hypercentre-grpab)

  - [`Hypercenter(G): GrpAb → GrpAb`](standard-construction.md#function-hypercenter-grpab)

- [Operations on Elements](operation-element.md)

  - [Order of an Element](operation-element.md#order-of-an-element)

    - [`Order(x): GrpAbElt → RngIntElt`](operation-element.md#function-order-grpabelt)

    - [`Example: Discrete Log`](operation-element.md#example-ex-5056af)

    - [`Order(g: parameters): GrpAbGenElt → RngIntElt`](operation-element.md#function-order-grpabgenelt)

    - [`Order(g, l, u: parameters): GrpAbGenElt, RngIntElt, RngIntElt → RngIntElt`](operation-element.md#function-order-grpabgenelt-rngintelt-rngintelt)

    - [`Order(g, l, u, n, m: parameters): GrpAbGenElt, RngIntElt, RngIntElt, RngIntElt, RngIntElt → RngIntElt`](operation-element.md#function-order-grpabgenelt-rngintelt-rngintelt-rngintelt-rngintelt)

  - [Discrete Logarithm](operation-element.md#discrete-logarithm)

    - [`Log(g, d: parameters): GrpAbGenElt, GrpAbGenElt → RngIntElt`](operation-element.md#function-log-grpabgenelt-grpabgenelt)

    - [`Example: Discrete Log`](operation-element.md#example-ex-cb963b)

  - [Equality and Comparison](operation-element.md#equality-and-comparison)

    - [`u eq v: GrpAbElt, GrpAbElt → BoolElt`](operation-element.md#operation-op-eq-grpabelt-grpabelt)

    - [`u ne v: GrpAbElt, GrpAbElt → BoolElt`](operation-element.md#operation-op-ne-grpabelt-grpabelt)

    - [`IsIdentity(u): GrpAbElt → BoolElt`](operation-element.md#function-isidentity-grpabelt)

    - [`IsId(u): GrpAbElt → BoolElt`](operation-element.md#function-isid-grpabelt)

- [Invariants of an Abelian Group](invariant.md)

  - [`ElementaryAbelianQuotient(G, p): GrpAb, RngIntElt → GrpAb, Map`](invariant.md#function-elementaryabelianquotient-grpab-rngintelt)

  - [`FreeAbelianQuotient(G): GrpAb → GrpAb, Map`](invariant.md#function-freeabelianquotient-grpab)

  - [`PrimaryAbelianInvariants(A): GrpAb → [ RngIntElt ]`](invariant.md#function-primaryabelianinvariants-grpab)

  - [`AbelianInvariants(A): GrpAb → [ RngIntElt ]`](invariant.md#function-abelianinvariants-grpab)

  - [`PrimaryAbelianBasis(A): GrpAb → [ GrpAbElt ], [ RngIntElt ]`](invariant.md#function-primaryabelianbasis-grpab)

  - [`AbelianBasis(A): GrpAb → [ GrpAbElt ], [ RngIntElt ]`](invariant.md#function-abelianbasis-grpab)

  - [`TorsionFreeRank(A): GrpAb → RngIntElt`](invariant.md#function-torsionfreerank-grpab)

  - [`TorsionInvariants(A): GrpAb → [ RngIntElt ]`](invariant.md#function-torsioninvariants-grpab)

  - [`pPrimaryInvariants(A, p): GrpAb, RngIntElt → [ RngIntElt ]`](invariant.md#function-pprimaryinvariants-grpab-rngintelt)

- [Canonical Decomposition](decomposition.md)

  - [`TorsionFreeSubgroup(A): GrpAb → GrpAb`](decomposition.md#function-torsionfreesubgroup-grpab)

  - [`TorsionSubgroup(A): GrpAb → GrpAb`](decomposition.md#function-torsionsubgroup-grpab)

  - [`pPrimaryComponent(A, p): GrpAb, RngIntElt → GrpAb`](decomposition.md#function-pprimarycomponent-grpab-rngintelt)

- [Set-Theoretic Operations](set.md)

  - [Functions Relating to Group Order](set.md#functions-relating-to-group-order)

    - [`Order(G): GrpAb → RngIntElt`](set.md#function-order-grpab)

    - [`# G: GrpAb → RngIntElt`](set.md#operation-operation-grpab-rngintelt)

    - [`FactoredOrder(G): GrpAb → [<RngIntElt, RngIntElt>]`](set.md#function-factoredorder-grpab)

    - [`Exponent(G): GrpAb → RngIntElt`](set.md#function-exponent-grpab)

    - [`IsFinite(G): GrpAb → BoolElt`](set.md#function-isfinite-grpab)

    - [`IsInfinite(G): GrpAb → BoolElt`](set.md#function-isinfinite-grpab)

  - [Membership and Equality](set.md#membership-and-equality)

    - [`g in G: GrpAbElt, GrpAb → BoolElt`](set.md#operation-op-in-grpabelt-grpab)

    - [`g notin G: GrpAbElt, GrpAb → BoolElt`](set.md#operation-op-notin-grpabelt-grpab)

    - [`S subset G: { GrpAbElt}, GrpAb → BoolElt`](set.md#operation-op-subset-grpabelt-grpab)

    - [`S notsubset G: { GrpAbElt}, GrpAb → BoolElt`](set.md#operation-operation-notsubset-grpabelt-grpab-boolelt)

    - [`H subset G: GrpAb, GrpAb → BoolElt`](set.md#operation-op-subset-grpab-grpab)

    - [`IsSubgroup(H,G): GrpAb, GrpAb → BoolElt`](set.md#function-issubgroup-grpab-grpab)

    - [`H notsubset G: GrpAb, GrpAb → BoolElt`](set.md#operation-operation-notsubset-grpab-grpab-boolelt)

    - [`G eq H: GrpAb, GrpAb → BoolElt`](set.md#operation-op-eq-grpab-grpab)

    - [`G ne H: GrpAb, GrpAb → BoolElt`](set.md#operation-op-ne-grpab-grpab)

  - [Set Operations](set.md#set-operations)

    - [`NumberingMap(G): GrpAb → Map`](set.md#function-numberingmap-grpab)

    - [`RandomProcess(G): GrpAb → Process`](set.md#function-randomprocess-grpab)

    - [`Random(P): Process → GrpAbElt`](set.md#function-random-process)

    - [`Random(G): GrpAb → GrpAbElt`](set.md#function-random-grpab)

    - [`Random(G, n): GrpAb, RngIntElt → GrpAbElt`](set.md#function-random-grpab-rngintelt)

    - [`Rep(G): GrpAb → GrpAbElt`](set.md#function-rep-grpab)

    - [`Representative(G): GrpAb → GrpAbElt`](set.md#function-representative-grpab)

- [Coset Spaces](coset-space.md)

  - [`Transversal(G, H): GrpAb, GrpAb → {\@ GrpAbElt \@}, Map`](coset-space.md#function-transversal-grpab-grpab)

  - [`RightTransversal(G, H): GrpAb, GrpAb → {\@ GrpAbElt \@}, Map`](coset-space.md#function-righttransversal-grpab-grpab)

  - [Coercions Between Groups and Subgroups](coset-space.md#coercions-between-groups-and-subgroups)

    - [`G ! g: GrpAb, GrpAbElt → GrpAbElt`](coset-space.md#operation-op-grpab-grpabelt)

    - [`H ! g: GrpAb, GrpAbElt → GrpAbElt`](coset-space.md#operation-op-grpab-grpabelt-2)

    - [`K ! g: GrpAb, GrpAbElt → GrpAbElt`](coset-space.md#operation-op-grpab-grpabelt-3)

    - [`Morphism(H, G): GrpAb, GrpAb → ModMatRngElt`](coset-space.md#function-morphism-grpab-grpab)

- [Subgroup Constructions](subgroup-constructions.md)

  - [`H meet K: GrpAb, GrpAb → GrpAb`](subgroup-constructions.md#operation-op-meet-grpab-grpab)

  - [`H meet:= K: GrpAb, GrpAb → GrpAb`](subgroup-constructions.md#operation-operation-meet-grpab-grpab-grpab)

  - [`H + K: GrpAb, GrpAb → GrpAb`](subgroup-constructions.md#operation-op-plus-grpab-grpab)

  - [`n * G: RngIntElt, GrpAb → GrpAb, Map`](subgroup-constructions.md#operation-op-times-rngintelt-grpab)

  - [`FrattiniSubgroup(G): GrpAb → GrpAb`](subgroup-constructions.md#function-frattinisubgroup-grpab)

  - [`SylowSubgroup(G, p : parameters): GrpAb, RngIntElt → GrpAb`](subgroup-constructions.md#function-sylowsubgroup-grpab-rngintelt)

  - [`Sylow(G, p : parameters): GrpAb, RngIntElt → GrpAb`](subgroup-constructions.md#function-sylow-grpab-rngintelt)

  - [`Example: p Sylow Computation`](subgroup-constructions.md#example-ex-c74c85)

- [Subgroup Chains](subgroup-chains.md)

  - [`ChiefSeries(G): GrpAb → [GrpAb]`](subgroup-chains.md#function-chiefseries-grpab)

  - [`CompositionSeries(G): GrpAb → [GrpAb]`](subgroup-chains.md#function-compositionseries-grpab)

  - [`Agemo(G, i): GrpAb, RngIntElt → GrpAb`](subgroup-chains.md#function-agemo-grpab-rngintelt)

  - [`Omega(G, i): GrpAb, RngIntElt → GrpAb`](subgroup-chains.md#function-omega-grpab-rngintelt)

  - [`ElementaryAbelianSeries(G): GrpAb → [ GrpAb ]`](subgroup-chains.md#function-elementaryabelianseries-grpab)

  - [`DerivedSeries(G): GrpAb → [ GrpAb ]`](subgroup-chains.md#function-derivedseries-grpab)

  - [`LowerCentralSeries(G): GrpAb → [ GrpAb ]`](subgroup-chains.md#function-lowercentralseries-grpab)

  - [`UpperCentralSeries(G): GrpAb → [ GrpAb ]`](subgroup-chains.md#function-uppercentralseries-grpab)

  - [`SubnormalSeries(G, H): GrpAb, GrpAb → [ GrpAb ]`](subgroup-chains.md#function-subnormalseries-grpab-grpab)

- [General Group Properties](group-Boolean.md)

  - [`IsCyclic(G): GrpAb → BoolElt`](group-Boolean.md#function-iscyclic-grpab)

  - [`IsElementaryAbelian(G): GrpAb → BoolElt`](group-Boolean.md#function-iselementaryabelian-grpab)

  - [`IsFree(G): GrpAb → BoolElt`](group-Boolean.md#function-isfree-grpab)

  - [`IsMixed(G): GrpAb → BoolElt`](group-Boolean.md#function-ismixed-grpab)

  - [`IspGroup(G): GrpAb → BoolElt`](group-Boolean.md#function-ispgroup-grpab)

  - [`DerivedLength(G): GrpAb → RngIntElt`](group-Boolean.md#function-derivedlength-grpab)

  - [Properties of Subgroups](group-Boolean.md#properties-of-subgroups)

    - [`IsMaximal(G, H): GrpAb, GrpAb → BoolElt`](group-Boolean.md#function-ismaximal-grpab-grpab)

    - [`Index(G, H): GrpAb, GrpAb → RngIntElt`](group-Boolean.md#function-index-grpab-grpab)

    - [`FactoredIndex(G, H): GrpAb, GrpAb → [<RngIntElt, RngIntElt>]`](group-Boolean.md#function-factoredindex-grpab-grpab)

    - [`IsPure(G, H): GrpAb, GrpAb → BoolElt`](group-Boolean.md#function-ispure-grpab-grpab)

    - [`IsNeat(G, H): GrpAb, GrpAb → BoolElt`](group-Boolean.md#function-isneat-grpab-grpab)

  - [Enumeration of Subgroups](group-Boolean.md#enumeration-of-subgroups)

    - [`MaximalSubgroups(G): GrpAb → [GrpAb]`](group-Boolean.md#function-maximalsubgroups-grpab)

    - [`Subgroups(G:parameters): GrpAb → [Rec]`](group-Boolean.md#function-subgroups-grpab)

    - [`NumberOfSubgroupsAbelianPGroup(A): SeqEnum → SeqEnum`](group-Boolean.md#function-numberofsubgroupsabelianpgroup-seqenum)

    - [`HasComplement(G, U): GrpAb, GrpAb → BoolElt, GrpAb`](group-Boolean.md#function-hascomplement-grpab-grpab)

    - [`Example: Subgroups`](group-Boolean.md#example-ex-604d09)

- [Representation Theory](character-representation.md)

  - [`CharacterTable(G): GrpAb → TabChtr`](character-representation.md#function-charactertable-grpab)

- [The Hom Functor](hom.md)

  - [`Hom(G, H): GrpPC, GrpPC → GrpAb, Map`](hom.md#function-hom-grppc-grppc)

  - [`Hom(G, H): GrpAb, GrpAb → GrpAb, Map`](hom.md#function-hom-grpab-grpab)

  - [`HomGenerators(G, H): GrpAb, GrpAb → GrpAb, Map`](hom.md#function-homgenerators-grpab-grpab)

  - [`AllHomomorphisms(G, H): GrpAb, GrpAb → [Map]`](hom.md#function-allhomomorphisms-grpab-grpab)

  - [`AllHomomorphisms(G, H): GrpPC, GrpPC → [Map]`](hom.md#function-allhomomorphisms-grppc-grppc)

  - [`Homomorphisms(G, H): GrpAb, GrpAb → [Map]`](hom.md#function-homomorphisms-grpab-grpab)

  - [`Example: Relations`](hom.md#example-ex-0d5388)

- [Automorphism Groups](autgp.md)

  - [`AutomorphismGroup(G): GrpAb → GrpAuto`](autgp.md#function-automorphismgroup-grpab)

  - [`IsIsomorphic(G, H): GrpAb, GrpAb → BoolElt, Hom(Grp)`](autgp.md#function-isisomorphic-grpab-grpab)

- [Cohomology](cohomology.md)

  - [`Dual(G): GrpAb → GrpAb, Map`](cohomology.md#function-dual-grpab)

  - [`H2_G_QmodZ(G): GrpAb → GrpAb, Map`](cohomology.md#function-h2-g-qmodz-grpab)

  - [`Res_H2_G_QmodZ(U, H2): GrpAb, GrpAb → GrpAb, Map`](cohomology.md#function-res-h2-g-qmodz-grpab-grpab)

- [Homomorphisms](homomorphisms.md)

  - [`hom< A -> B | L>: Grp, Grp, List → Map`](homomorphisms.md#constructor-constructor-hom-grp-grp-list-map)

  - [`Homomorphism(A, B, X, Y): Grp, Grp, [ GrpElt ], [ GrpElt ] → Map`](homomorphisms.md#function-homomorphism-grp-grp-grpelt-grpelt)

  - [`iso< A -> B | L>: Grp, Grp, List → Map`](homomorphisms.md#constructor-constructor-iso-grp-grp-list-map)

  - [`Isomorphism(A, B, X, Y): Grp, Grp, [ GrpElt ], [ GrpElt ] → Map`](homomorphisms.md#function-isomorphism-grp-grp-grpelt-grpelt)

  - [`Example: Homomorphisms`](homomorphisms.md#example-ex-32bea9)
