# Basic Algebras

- [Introduction](introduction.md)

- [Basic Algebras](algebras.md)

  - [Creation](algebras.md#creation)

    - [`BasicAlgebra(Q): SeqEnum[Tup] → AlgBas`](algebras.md#function-basicalgebra-seqenum-tup)

    - [`BasicAlgebra(F,R,s,P): AlgFr, SeqEnum, RngIntElt, SeqEnum → AlgBas`](algebras.md#function-basicalgebra-algfr-seqenum-rngintelt-seqenum)

    - [`BasicAlgebra(F,R): AlgFr, SeqEnum → AlgBas`](algebras.md#function-basicalgebra-algfr-seqenum)

    - [`TensorProduct(A, B): AlgBas, AlgBas → AlgBas`](algebras.md#function-tensorproduct-algbas-algbas)

    - [`BasicAlgebra(G, k): GrpPerm, FldFin → AlgBas`](algebras.md#function-basicalgebra-grpperm-fldfin)

    - [`BasicAlgebra(G, k): GrpPC, FldFin → AlgBas`](algebras.md#function-basicalgebra-grppc-fldfin)

    - [`BasicAlgebra(G): GrpPerm → AlgBass`](algebras.md#function-basicalgebra-grpperm)

  - [Special Basic Algebras](algebras.md#special-basic-algebras)

    - [`BasicAlgebra(A): AlgMat → AlgBas`](algebras.md#function-basicalgebra-algmat)

    - [`BasicAlgebraOfMatrixAlgebra(A): AlgMat → AlgBas`](algebras.md#function-basicalgebraofmatrixalgebra-algmat)

    - [`BasicAlgebraOfEndomorphismAlgebra(M): ModRng → AlgBas`](algebras.md#function-basicalgebraofendomorphismalgebra-modrng)

    - [`BasicAlgebraOfHeckeAlgebra(G, H, F): GrpPerm, GrpPerm, FldFin) → AlgBas`](algebras.md#function-basicalgebraofheckealgebra-grpperm-grpperm-fldfin)

    - [`BasicAlgebraOfHeckeAlgebra(G, H, F): GrpPC, GrpPC, FldFin → AlgBas`](algebras.md#function-basicalgebraofheckealgebra-grppc-grppc-fldfin)

    - [`BasicAlgebraOfHeckeAlgebra(G, H, F): GrpAb, GrpAb, FldFin → AlgBas`](algebras.md#function-basicalgebraofheckealgebra-grpab-grpab-fldfin)

    - [`BasicAlgebraOfSchurAlgebra(n, r, F): RngIntElt, RngIntElt, FldFin → AlgBas`](algebras.md#function-basicalgebraofschuralgebra-rngintelt-rngintelt-fldfin)

    - [`BasicAlgebraOfGroupAlgebra(G,F): GrpPerm, FldFin → AlgBas`](algebras.md#function-basicalgebraofgroupalgebra-grpperm-fldfin)

    - [`BasicAlgebraOfGroupAlgebra(G,F): GrpPC, FldFin → AlgBas`](algebras.md#function-basicalgebraofgroupalgebra-grppc-fldfin)

    - [`BasicAlgebraOfGroupAlgebra(G,F): GrpAb, FldFin → AlgBas`](algebras.md#function-basicalgebraofgroupalgebra-grpab-fldfin)

    - [`BasicAlgebra(S): SeqEnum → AlgBas`](algebras.md#function-basicalgebra-seqenum)

    - [`BasicAlgebraOfBlockAlgebra(S): SeqEnum → AlgBas`](algebras.md#function-basicalgebraofblockalgebra-seqenum)

    - [`BasicAlgebraOfPrincipalBlock(G,k): GrpPerm, FldFin → AlgBas`](algebras.md#function-basicalgebraofprincipalblock-grpperm-fldfin)

    - [`BasicAlgebraOfExtAlgebra(A): AlgBas → AlgBas`](algebras.md#function-basicalgebraofextalgebra-algbas)

    - [`BasicAlgebraOfExtAlgebra(A, n): AlgBas, RngIntElt → AlgBas`](algebras.md#function-basicalgebraofextalgebra-algbas-rngintelt)

    - [`BasicAlgebraOfExtAlgebra(A): Rec → AlgBas`](algebras.md#function-basicalgebraofextalgebra-rec)

    - [`OppositeAlgebra(B): AlgBas → AlgBas`](algebras.md#function-oppositealgebra-algbas)

    - [`Example: Group Algebra`](algebras.md#example-ex-cb7ecb)

    - [`Example: Schur Algebra`](algebras.md#example-ex-8e74b4)

  - [A Database of Basic Algebras](algebras.md#a-database-of-basic-algebras)

    - [`BasicAlgebraFromGroup(A, p, b): MonStgElt, RngIntElt, RngIntElt → AlgBas`](algebras.md#function-basicalgebrafromgroup-monstgelt-rngintelt-rngintelt)

    - [`BasicAlgebraGroupNames() → SetIndx`](algebras.md#function-basicalgebragroupnames)

    - [`BasicAlgebraFromSchur(n, r, p): RngIntElt, RngIntElt, RngIntElt → AlgBas`](algebras.md#function-basicalgebrafromschur-rngintelt-rngintelt-rngintelt)

    - [`Example: Basic Database`](algebras.md#example-ex-9fefcd)

  - [Access Functions](algebras.md#access-functions)

    - [`B . i: AlgBas, RngIntElt → AlgBasElt`](algebras.md#operation-operation-algbas-rngintelt-algbaselt)

    - [`BaseRing(B): AlgBas → Rng`](algebras.md#function-basering-algbas)

    - [`CoefficientRing(B): AlgBas → Rng`](algebras.md#function-coefficientring-algbas)

    - [`VectorSpace(B): AlgBas → ModTupFld`](algebras.md#function-vectorspace-algbas)

    - [`KSpace(B): AlgBas → ModTupFld`](algebras.md#function-kspace-algbas)

    - [`Dimension(B): AlgBas → RngIntElt`](algebras.md#function-dimension-algbas)

    - [`Basis(B): AlgBas → SeqEnum`](algebras.md#function-basis-algbas)

    - [`Generators(B): AlgBas → SeqEnum`](algebras.md#function-generators-algbas)

    - [`IdempotentGenerators(B): AlgBas → SeqEnum`](algebras.md#function-idempotentgenerators-algbas)

    - [`IdempotentPositions(B): AlgBas → SeqEnum`](algebras.md#function-idempotentpositions-algbas)

    - [`NonIdempotentGenerators(B): AlgBas → SeqEnum`](algebras.md#function-nonidempotentgenerators-algbas)

    - [`Random(B): AlgBas → AlgBasElt`](algebras.md#function-random-algbas)

    - [`NumberOfProjectives(B): AlgBas → RngIntElt`](algebras.md#function-numberofprojectives-algbas)

    - [`NumberOfGenerators(B): AlgBas → RngIntElt`](algebras.md#function-numberofgenerators-algbas)

    - [`Ngens(B): AlgBas → RngIntElt`](algebras.md#function-ngens-algbas)

    - [`DimensionsOfProjectiveModules(B): AlgBas → SeqEnum`](algebras.md#function-dimensionsofprojectivemodules-algbas)

    - [`DimensionsOfInjectiveModules(B): AlgBas → SeqEnum`](algebras.md#function-dimensionsofinjectivemodules-algbas)

  - [Elementary Operations](algebras.md#elementary-operations)

    - [`a + b: AlgBasElt, AlgBasElt → AlgBasElt`](algebras.md#operation-op-plus-algbaselt-algbaselt)

    - [`a * b: AlgBasElt, AlgBasElt → AlgBasElt`](algebras.md#operation-op-times-algbaselt-algbaselt)

    - [`a ^ n: AlgBasElt, RngIntElt → AlgBasElt`](algebras.md#operation-op-pow-algbaselt-rngintelt)

    - [`Example: Basic Algebras`](algebras.md#example-ex-49b24a)

    - [`Example: BasicAlgebras 2`](algebras.md#example-ex-bfaaa4)

    - [`Example: BasicAlgebras 3`](algebras.md#example-ex-cfd0f2)

  - [Boolean Functions](algebras.md#boolean-functions)

    - [`IsDimensionCompatible(B): AlgBas → Bool`](algebras.md#function-isdimensioncompatible-algbas)

    - [`IsPathTree(B): AlgBas → Bool`](algebras.md#function-ispathtree-algbas)

    - [Commutativity](algebras.md#commutativity)

      - [`IsCommutative(A): AlgBas → Bool`](algebras.md#function-iscommutative-algbas)

      - [`IsCentral(A,x): AlgBas, AlgBasElt → BoolElt`](algebras.md#function-iscentral-algbas-algbaselt)

    - [Other Properties](algebras.md#other-properties)

      - [`IsSymmetric(A): AlgBas → BoolElt`](algebras.md#function-issymmetric-algbas)

      - [`IsSelfInjective(A): AlgBas → BoolElt`](algebras.md#function-isselfinjective-algbas)

- [Homomorphisms](homomorphisms-algebras.md)

  - [`hom<A -> B | S>: AlgBas, AlgBas, ModMatFldElt → Map`](homomorphisms-algebras.md#constructor-constructor-hom-algbas-algbas-modmatfldelt-map)

  - [`Kernel(phi): Map → ModTupFld`](homomorphisms-algebras.md#function-kernel-map)

  - [`Image(phi): Map → AlgBas, Map`](homomorphisms-algebras.md#function-image-map)

  - [`IsAlgebraHomomorphism(A, B, psi): AlgBas, AlgBas, Mtrx → Bool`](homomorphisms-algebras.md#function-isalgebrahomomorphism-algbas-algbas-mtrx)

  - [`X * Y: Map, Map → Map`](homomorphisms-algebras.md#operation-op-times-map-map)

  - [`IsAlgebraHomomorphism(A, B, psi): AlgBas, AlgBas, Map → Bool`](homomorphisms-algebras.md#function-isalgebrahomomorphism-algbas-algbas-map)

  - [`IsAlgebraHomomorphism(A, B, psi): AlgBasGrpP, AlgBasGrpP, Map → Bool`](homomorphisms-algebras.md#function-isalgebrahomomorphism-algbasgrpp-algbasgrpp-map)

  - [`IsAlgebraHomomorphism(A, B, psi): AlgBasGrpP, AlgBas, Map → Bool`](homomorphisms-algebras.md#function-isalgebrahomomorphism-algbasgrpp-algbas-map)

  - [`IsAlgebraHomomorphism(A, B, psi): AlgBas, AlgBasGrpP, Map → Bool`](homomorphisms-algebras.md#function-isalgebrahomomorphism-algbas-algbasgrpp-map)

  - [`IsAlgebraHomomorphism(psi): Map → Bool`](homomorphisms-algebras.md#function-isalgebrahomomorphism-map)

- [Subalgebras and Quotient Algebras](sub-quo.md)

  - [Subalgebras and their Constructions](sub-quo.md#subalgebras-and-their-constructions)

    - [`sub<A | S>: AlgBas, SeqEnum → AlgBas, Map`](sub-quo.md#constructor-constructor-sub-algbas-seqenum-algbas-map)

    - [`SubalgebraFromBasis(A, V): AlgBas, SeqEnum → AlgBas, Map`](sub-quo.md#function-subalgebrafrombasis-algbas-seqenum)

    - [`MaximalIdempotent(A, S): AlgBas, SeqEnum → AlgBasElt`](sub-quo.md#function-maximalidempotent-algbas-seqenum)

    - [`MinimalIdentity(A, S): AlgBas, SeqEnum[AlgBasElt] → AlgBasElt`](sub-quo.md#function-minimalidentity-algbas-seqenum-algbaselt)

    - [`Centre(A): AlgBas → AlgBas, Map`](sub-quo.md#function-centre-algbas)

    - [`Centralizer(A,S): AlgBas, SeqEnum → AlgBas, Map`](sub-quo.md#function-centralizer-algbas-seqenum)

    - [`MaximalCommutativeSubalgebra(A,S): AlgBas, SeqEnum → AlgBas, Map`](sub-quo.md#function-maximalcommutativesubalgebra-algbas-seqenum)

  - [Ideals and their Construction](sub-quo.md#ideals-and-their-construction)

    - [`ideal< A | S>: AlgBas, SeqEnum[AlgBasElt] → ModTupFld`](sub-quo.md#constructor-constructor-ideal-algbas-seqenum-algbaselt-modtupfld)

    - [`ideal< A | S>: AlgBasGrpP, SeqEnum[AlgBasElt] → ModTupFld`](sub-quo.md#constructor-constructor-ideal-algbasgrpp-seqenum-algbaselt-modtupfld)

    - [`LeftAnnihilator(A, S): AlgBas, SeqEnum[AlgBasElt] → SeqEnum[AlgBasElt]`](sub-quo.md#function-leftannihilator-algbas-seqenum-algbaselt)

    - [`RightAnnihilator(A, S): AlgBas, SeqEnum[AlgBasElt] → SeqEnum[AlgBaselt]`](sub-quo.md#function-rightannihilator-algbas-seqenum-algbaselt)

    - [`Annihilator(A,S): AlgBas, SeqEnum[AlgBasElt] → SeqEnum[AlgBasElt]`](sub-quo.md#function-annihilator-algbas-seqenum-algbaselt)

    - [`IsIdeal(A, S): AlgBas, ModTupFld → Bool`](sub-quo.md#function-isideal-algbas-modtupfld)

    - [`IsLeftIdeal(A,S): AlgBas, ModTupFld → Bool`](sub-quo.md#function-isleftideal-algbas-modtupfld)

    - [`IsRightIdeal(A, S): AlgBas, ModTupFld → Bool`](sub-quo.md#function-isrightideal-algbas-modtupfld)

    - [`RandomIdealGeneratedBy(A, n): AlgBas, RngIntElt → ModTupFld`](sub-quo.md#function-randomidealgeneratedby-algbas-rngintelt)

  - [Quotient Algebras](sub-quo.md#quotient-algebras)

    - [`quo<A | S>: AlgBas, ModTupFld → AlgBas, Map`](sub-quo.md#constructor-constructor-quo-algbas-modtupfld-algbas-map)

    - [`CoverAlgebra(A): AlgBas → AlgBas, ModMatFldElt`](sub-quo.md#function-coveralgebra-algbas)

    - [`GradedCoverAlgebra(A): AlgBas → AlgBas, ModMatFldElt`](sub-quo.md#function-gradedcoveralgebra-algbas)

    - [`TruncatedAlgebra(A, n): AlgBas, RngIntElt → AlgBas, ModMatFldElt`](sub-quo.md#function-truncatedalgebra-algbas-rngintelt)

  - [Units](sub-quo.md#units)

    - [`GeneratorsOfGroupOfUnits(A): AlgBas → SeqEnum, SeqEnum`](sub-quo.md#function-generatorsofgroupofunits-algbas)

    - [`NoncentralGeneratorsOfGroupOfUnits(A): AlgBas → SeqEnum, SeqEnum`](sub-quo.md#function-noncentralgeneratorsofgroupofunits-algbas)

- [Minimal Forms and Gradings](forms-gradings-permute-idempotents.md)

  - [`MinimalGeneratorForm(A): AlgBas → Rec`](forms-gradings-permute-idempotents.md#function-minimalgeneratorform-algbas)

  - [`MinimalGeneratorFormAlgebra(A): AlgBas → AlgBas`](forms-gradings-permute-idempotents.md#function-minimalgeneratorformalgebra-algbas)

  - [`AssociatedGradedAlgebra(A): AlgBas → AlgBas`](forms-gradings-permute-idempotents.md#function-associatedgradedalgebra-algbas)

  - [`GradedCapHomomorphism(A): AlgBas → ModMatFldElt`](forms-gradings-permute-idempotents.md#function-gradedcaphomomorphism-algbas)

  - [`GradedCapHomomorphism(A, B, mu): AlgBas, AlgBas, ModMatFldElt → ModMatFldElt`](forms-gradings-permute-idempotents.md#function-gradedcaphomomorphism-algbas-algbas-modmatfldelt)

  - [`BuildHomomorphismFromGradedCap(A, B, phi): AlgBas, AlgBas, ModMatFldElt → ModMatFldElt`](forms-gradings-permute-idempotents.md#function-buildhomomorphismfromgradedcap-algbas-algbas-modmatfldelt)

  - [`ChangeIdempotents(A, S): AlgBas, SeqEnum → AlgBas, Map`](forms-gradings-permute-idempotents.md#function-changeidempotents-algbas-seqenum)

  - [`ChangeIdempotents(A, S): AlgBas, GrpPermElt → AlgBas, Map`](forms-gradings-permute-idempotents.md#function-changeidempotents-algbas-grppermelt)

  - [`Example: Graded Homomorphism`](forms-gradings-permute-idempotents.md#example-ex-804d0a)

  - [`Example: GradedHomomorphisms 2`](forms-gradings-permute-idempotents.md#example-ex-27c999)

- [Automorphisms and Isomorphisms](automorphism.md)

  - [`GradedAutomorphismGroupMatchingIdempotents(A): AlgBas → GrpMat, SeqEnum, SecEnum`](automorphism.md#function-gradedautomorphismgroupmatchingidempotents-algbas)

  - [`GradedAutomorphismGroup(A): AlgBas → GrpMat, SeqEnum[ModMatFldElt], SeqEnum[ModMatFldElt], SeqEnum[ModMatFldElt]`](automorphism.md#function-gradedautomorphismgroup-algbas)

  - [`IsGradedIsomorphic(A, B): AlgBas, AlgBas → Bool, ModMatFldElt`](automorphism.md#function-isgradedisomorphic-algbas-algbas)

  - [`AutomorphismGroupMatchingIdempotents(A): AlgBas → AlgBas, ModMatFldElt`](automorphism.md#function-automorphismgroupmatchingidempotents-algbas)

  - [`AutomorphismGroup(A): AlgBas → GrpMat, SeqEnum, SeqEnum, SeqEnum`](automorphism.md#function-automorphismgroup-algbas)

  - [`InnerAutomorphismGroup(A): AlgBas → GrpMat`](automorphism.md#function-innerautomorphismgroup-algbas)

  - [`IsIsomorphic(A, B): AlgBas, AlgBas → Bool, Map`](automorphism.md#function-isisomorphic-algbas-algbas)

  - [`Example: Automorphism group`](automorphism.md#example-ex-4a1204)

  - [`Example: modify presentation`](automorphism.md#example-ex-1b7b38)

  - [`Example: Graded Group Algebras`](automorphism.md#example-ex-ac24e3)

- [Quiver and Relations](quiver.md)

  - [`Quiver(A): AlgBas → SeqEnum`](quiver.md#function-quiver-algbas)

  - [`QuiverAndRelations(A): AlgBas → SeqEnum, SeqEnum, SeqEnum`](quiver.md#function-quiverandrelations-algbas)

  - [`Example: Quiver`](quiver.md#example-ex-3af24d)

- [Modules over Basic Algebras](modules.md)

  - [Indecomposable Projective Modules](modules.md#indecomposable-projective-modules)

    - [`ProjectiveModule(B, i): AlgBas, RngIntElt → ModRng`](modules.md#function-projectivemodule-algbas-rngintelt)

    - [`PathTree(B, i): AlgBas, RngIntElt → ModRng`](modules.md#function-pathtree-algbas-rngintelt)

    - [`ActionGenerator(B, i): AlgBas, RngIntElt → SeqEnum`](modules.md#function-actiongenerator-algbas-rngintelt)

    - [`IdempotentActionGenerators(B, i): AlgBas, RngIntElt → SeqEnum`](modules.md#function-idempotentactiongenerators-algbas-rngintelt)

    - [`NonIdempotentActionGenerators(B, i): AlgBas, RngIntElt → SeqEnum`](modules.md#function-nonidempotentactiongenerators-algbas-rngintelt)

    - [`Injection(B, i, v): AlgBas, RngIntElt, ModRngElt → AlgBasElt`](modules.md#function-injection-algbas-rngintelt-modrngelt)

  - [Creation](modules.md#creation)

    - [`AModule(B, Q): AlgBas, SeqEnum[AlgMatElt] → ModRng`](modules.md#function-amodule-algbas-seqenum-algmatelt)

    - [`ProjectiveModule(B, S): AlgBas, SeqEnum[RngIntElt] → ModAlg, SeqEnum, SeqEnum`](modules.md#function-projectivemodule-algbas-seqenum-rngintelt)

    - [`IrreducibleModule(B, i): AlgBas, RngIntElt → ModAlg`](modules.md#function-irreduciblemodule-algbas-rngintelt)

    - [`SimpleModule(B, i): AlgBas, RngIntElt → ModAlg`](modules.md#function-simplemodule-algbas-rngintelt)

    - [`ZeroModule(B): AlgBas → ModAlg`](modules.md#function-zeromodule-algbas)

    - [`RightRegularModule(B): AlgBas → ModAlg`](modules.md#function-rightregularmodule-algbas)

    - [`RegularRepresentation(v): AlgBasElt → AlgMatElt`](modules.md#function-regularrepresentation-algbaselt)

    - [`Restriction(M, B, xi): ModAlgBas, AlgBas, ModMatFldElt → ModAlgBas`](modules.md#function-restriction-modalgbas-algbas-modmatfldelt)

    - [`ChangeAlgebra(M, B, xi): ModAlgBas, AlgBas, Map → ModAlgBas`](modules.md#function-changealgebra-modalgbas-algbas-map)

    - [`ChangeAlgebra(M, B, xi): ModAlgBas, AlgBas, ModMatFldElt → ModAlgBas`](modules.md#function-changealgebra-modalgbas-algbas-modmatfldelt)

    - [`JacobsonRadical(M): ModAlg → ModAlg`](modules.md#function-jacobsonradical-modalg)

    - [`Socle(M): ModAlg → ModAlg`](modules.md#function-socle-modalg)

  - [Access Functions](modules.md#access-functions)

    - [`Algebra(M): ModAlg → AlgBas`](modules.md#function-algebra-modalg)

    - [`Dimension(M): ModAlg → RngIntElt`](modules.md#function-dimension-modalg)

    - [`Action(M): ModAlg → AlgMat`](modules.md#function-action-modalg)

    - [`IsomorphismTypesOfRadicalLayers(M): ModAlgBas → SeqEnum`](modules.md#function-isomorphismtypesofradicallayers-modalgbas)

    - [`IsomorphismTypesOfSocleLayers(M): ModAlgBas → SeqEnum`](modules.md#function-isomorphismtypesofsoclelayers-modalgbas)

    - [`IsomorphismTypesOfBasicAlgebraSequence(S): SeqEnum → SeqEnum`](modules.md#function-isomorphismtypesofbasicalgebrasequence-seqenum)

    - [`Example: Restriction To Center`](modules.md#example-ex-6be5c5)

    - [`Example: ChangeAlgebras 2`](modules.md#example-ex-5bc3d0)

    - [`Example: Radical Layers`](modules.md#example-ex-e824ff)

  - [Predicates](modules.md#predicates)

    - [`IsSemisimple(M): ModAlg → BoolElt, SeqEnum`](modules.md#function-issemisimple-modalg)

    - [`IsProjective(M): ModAlg → BoolElt, SeqEnum`](modules.md#function-isprojective-modalg)

    - [`IsInjective(M): ModAlg → BoolElt, SeqEnum`](modules.md#function-isinjective-modalg)

  - [Elementary Operations](modules.md#elementary-operations)

    - [`m * b: ModAlgElt, AlgBasElt → ModAlgElt`](modules.md#operation-op-times-modalgelt-algbaselt)

    - [`Example: A Modules`](modules.md#example-ex-bb4604)

    - [`Example: AModules 2`](modules.md#example-ex-2f301a)

- [Homomorphisms of Modules](homomorphisms.md)

  - [Creation](homomorphisms.md#creation)

    - [`AHom(M, N): ModAlg, ModAlg → ModMatFld`](homomorphisms.md#function-ahom-modalg-modalg)

    - [`PHom(M,N): ModAlg, ModAlg → ModMatFld`](homomorphisms.md#function-phom-modalg-modalg)

    - [`ZeroMap(M, N): ModAlg, ModAlg → ModMatFld`](homomorphisms.md#function-zeromap-modalg-modalg)

    - [`LiftHomomorphism(x, n): ModAlgElt, RngIntElt → ModMatFldElt`](homomorphisms.md#function-lifthomomorphism-modalgelt-rngintelt)

    - [`LiftHomomorphism(X, N): SeqEnum[ModAlgElt], SeqEnum[RngIntElt] → ModMatFldElt`](homomorphisms.md#function-lifthomomorphism-seqenum-modalgelt-seqenum-rngintelt)

    - [`Pushout(M, f1, N1, f2, N2): ModAlg, ModMatFldElt, ModAlg, ModMatFldElt, ModAlg → ModAlg, ModMatFldElt, ModMatFldElt`](homomorphisms.md#function-pushout-modalg-modmatfldelt-modalg-modmatfldelt-modalg)

    - [`Pullback(f1, M1, f2, M2, N): ModAlg, ModMatFldElt, ModAlg, ModMatFldElt, ModAlg → ModAlg, ModMatFldElt, ModMatFldElt`](homomorphisms.md#function-pullback-modalg-modmatfldelt-modalg-modmatfldelt-modalg)

  - [Access Functions](homomorphisms.md#access-functions)

    - [`IsModuleHomomorphism(f): ModMatFldElt → BoolElt`](homomorphisms.md#function-ismodulehomomorphism-modmatfldelt)

    - [`Domain(f): ModMatFldElt → ModAlg`](homomorphisms.md#function-domain-modmatfldelt)

    - [`Codomain(f): ModMatFldElt → ModAlg`](homomorphisms.md#function-codomain-modmatfldelt)

    - [`Kernel(f): ModMatFldElt → ModAlg, ModMatFldElt`](homomorphisms.md#function-kernel-modmatfldelt)

    - [`Cokernel(f): ModMatFldElt → ModAlg, ModMatFldElt`](homomorphisms.md#function-cokernel-modmatfldelt)

  - [Projective Covers and Resolutions](homomorphisms.md#projective-covers-and-resolutions)

    - [`ProjectiveCover(M): ModAlg → ModAlg, ModMatFldElt, SeqEnum[ModMatFldElt], SeqEnum[ModMatFldElt], SeqEnum[RngIntElt]`](homomorphisms.md#function-projectivecover-modalg)

    - [`ProjectiveResolution(M, n): ModAlg, RngIntElt → ModCpx, ModMatFldElt`](homomorphisms.md#function-projectiveresolution-modalg-rngintelt)

    - [`CompactProjectiveResolution(M, n): ModAlg, RngIntElt → Rec`](homomorphisms.md#function-compactprojectiveresolution-modalg-rngintelt)

    - [`CompactProjectiveResolutionsOfSimpleModules(A,n): AlgBas, RngIntElt → SeqEnum`](homomorphisms.md#function-compactprojectiveresolutionsofsimplemodules-algbas-rngintelt)

    - [`SyzygyModule(M, n): ModAlg, RngIntElt → ModAlg`](homomorphisms.md#function-syzygymodule-modalg-rngintelt)

    - [`SimpleHomologyDimensions(M): ModAlg → SeqEnum`](homomorphisms.md#function-simplehomologydimensions-modalg)

    - [`Example: Homomorphisms`](homomorphisms.md#example-ex-8bea28)

    - [`Example: Homomorphisms 2`](homomorphisms.md#example-ex-c5e505)

- [Duals and Injectives](duals-injectives.md)

  - [`Dual(M): ModAlg → ModAlg`](duals-injectives.md#function-dual-modalg)

  - [`BaseChangeMatrix(A): AlgBas → ModAlg`](duals-injectives.md#function-basechangematrix-algbas)

  - [Injective Modules](duals-injectives.md#injective-modules)

    - [`InjectiveModule(B, i): AlgBas, RngIntElt → ModAlg`](duals-injectives.md#function-injectivemodule-algbas-rngintelt)

    - [`InjectiveHull(M): ModAlg → ModAlg, ModMatFldElt, SeqEnum[ModMatFldElt], SeqEnum[ModMatFldElt], SeqEnum[RngIntElt]`](duals-injectives.md#function-injectivehull-modalg)

    - [`InjectiveResolution(M, n): ModAlg, RngIntElt → ModCpx, ModMatFldElt`](duals-injectives.md#function-injectiveresolution-modalg-rngintelt)

    - [`CompactInjectiveResolution(M, n): ModAlg, RngIntElt → Rec`](duals-injectives.md#function-compactinjectiveresolution-modalg-rngintelt)

    - [`InjectiveSyzygyModule(M, n): ModAlg, RngIntElt → ModAlg`](duals-injectives.md#function-injectivesyzygymodule-modalg-rngintelt)

    - [`SimpleCohomologyDimensions(M): ModAlg → SeqEnum`](duals-injectives.md#function-simplecohomologydimensions-modalg)

    - [`Example: Opposite`](duals-injectives.md#example-ex-51e2ac)

- [Cohomology](cohomology.md)

  - [`CohomologyRingGenerators(P): Rec → Rec`](cohomology.md#function-cohomologyringgenerators-rec)

  - [`CohomologyRightModuleGenerators(P, Q, CQ): Rec, Rec, Rec → Rec`](cohomology.md#function-cohomologyrightmodulegenerators-rec-rec-rec)

  - [`CohomologyLeftModuleGenerators(P, CP, Q): Tup, Tup, Tup → Tup`](cohomology.md#function-cohomologyleftmodulegenerators-tup-tup-tup)

  - [`DegreesOfCohomologyGenerators(C): Rec → SeqEnum`](cohomology.md#function-degreesofcohomologygenerators-rec)

  - [`CohomologyGeneratorToChainMap(P,Q,C,n): ModCpx, ModCpx, Rec, RngIntElt → MapChn`](cohomology.md#function-cohomologygeneratortochainmap-modcpx-modcpx-rec-rngintelt)

  - [`CohomologyGeneratorToChainMap(P, C, n): ModCpx, Tup, RngIntElt → MapChn`](cohomology.md#function-cohomologygeneratortochainmap-modcpx-tup-rngintelt)

  - [`Example: Cohomology 2`](cohomology.md#example-ex-6a7d27)

  - [Ext-Algebras](cohomology.md#ext-algebras)

    - [`ExtAlgebra(A, n): AlgBas, RngIntElt → Rec`](cohomology.md#function-extalgebra-algbas-rngintelt)

    - [`BasicAlgebraOfExtAlgebra(ext): Rec → AlgBas`](cohomology.md#function-basicalgebraofextalgebra-rec-2)

    - [`BasicAlgebraOfExtAlgebra(A): AlgBas → AlgBas`](cohomology.md#function-basicalgebraofextalgebra-algbas-2)

    - [`BasicAlgebraOfExtAlgebra(A, n): AlgBas, RngIntElt → AlgBas`](cohomology.md#function-basicalgebraofextalgebra-algbas-rngintelt-2)

    - [`SumOfBettiNumbersOfSimpleModules(A, n): AlgBas, RngIntElt → RngIntElt`](cohomology.md#function-sumofbettinumbersofsimplemodules-algbas-rngintelt)

    - [`Example: Ext Algebra`](cohomology.md#example-ex-0c2786)

- [Group Algebras of $p$-groups](p-groups.md)

  - [Access Functions](p-groups.md#access-functions)

    - [`Group(A): AlgBasGrpP → Grp`](p-groups.md#function-group-algbasgrpp)

    - [`PCGroup(A): AlgBasGrpP → Grp`](p-groups.md#function-pcgroup-algbasgrpp)

    - [`PCMap(A): AlgBasGrpP → Map`](p-groups.md#function-pcmap-algbasgrpp)

    - [`AModule(M): ModGrp → ModAlg`](p-groups.md#function-amodule-modgrp)

    - [`GModule(M): AlgBasGrpP → ModGrp, ModGrp`](p-groups.md#function-gmodule-algbasgrpp)

    - [`GModule(M): ModAlgBas → ModGrp`](p-groups.md#function-gmodule-modalgbas)

  - [Projective Resolutions](p-groups.md#projective-resolutions)

    - [`ResolutionData(A): AlgBasGrpP → Rec`](p-groups.md#function-resolutiondata-algbasgrpp)

    - [`CompactProjectiveResolutionPGroup(M, n): ModAlgBas, RngIntElt → Rec`](p-groups.md#function-compactprojectiveresolutionpgroup-modalgbas-rngintelt)

    - [`CompactProjectiveResolution(M, n): ModAlgBas, RngIntElt → Rec`](p-groups.md#function-compactprojectiveresolution-modalgbas-rngintelt)

    - [`ProjectiveResolutionPGroup(PR): Rec → ModCpx`](p-groups.md#function-projectiveresolutionpgroup-rec)

    - [`ProjectiveResolution(M, n): ModAlgBas, RngIntElt → ModCpx, ModMatFldElt`](p-groups.md#function-projectiveresolution-modalgbas-rngintelt)

    - [`ProjectiveResolution(PR): Rec → ModCpx, ModMatFldElt`](p-groups.md#function-projectiveresolution-rec)

  - [Cohomology Generators](p-groups.md#cohomology-generators)

    - [`AllCompactChainMaps(PR): Rec → Rec`](p-groups.md#function-allcompactchainmaps-rec)

    - [`CohomologyElementToChainMap(P, d, n): ModCpx, RngIntElt, RngIntElt → MapChn`](p-groups.md#function-cohomologyelementtochainmap-modcpx-rngintelt-rngintelt)

    - [`CohomologyElementToCompactChainMap(PR, d, n): Rec, RngIntElt, RngIntElt → ModMatFldElt`](p-groups.md#function-cohomologyelementtocompactchainmap-rec-rngintelt-rngintelt)

  - [Cohomology Rings](p-groups.md#cohomology-rings)

    - [`CohomologyRing(k, n): ModAlgBas, RngIntElt → Rec`](p-groups.md#function-cohomologyring-modalgbas-rngintelt)

    - [`CohomologyRing(PR, AC): Rec, Rec → Rec`](p-groups.md#function-cohomologyring-rec-rec)

    - [`MinimalRelations(R): Rec → SeqEnum`](p-groups.md#function-minimalrelations-rec)

  - [Restrictions and Inflations](p-groups.md#restrictions-and-inflations)

    - [`RestrictionData(A,B): AlgBasGrpP, AlgBasGrpP → ModMatFldElt, ModMatFldElt, SeqEnum`](p-groups.md#function-restrictiondata-algbasgrpp-algbasgrpp)

    - [`RestrictResolution(PR, RD): Rec, Rec → ModCpx`](p-groups.md#function-restrictresolution-rec-rec)

    - [`RestrictionChainMap(P1,P2): Rec, Rec → MapChn`](p-groups.md#function-restrictionchainmap-rec-rec)

    - [`RestrictionOfGenerators({PR1, PR2, AC1,}{ AC2, REL2}): Rec, Rec, Rec, Rec, Rec → SeqEnum`](p-groups.md#function-restrictionofgenerators-rec-rec-rec-rec-rec)

    - [`InflationMap({PR2, PR1, AC2, AC1,}{ REL1, theta}): Rec, Rec, Rec, Rec, Rec → SeqEnum`](p-groups.md#function-inflationmap-rec-rec-rec-rec-rec)

    - [`Example: Cohomology Ring`](p-groups.md#example-ex-9fb5b5)

- [A-infinity Algebra Structures on Group Cohomology](a-infinity.md)

  - [`AInfinityRecord(G,n): Grp, RngIntElt → Rec`](a-infinity.md#function-ainfinityrecord-grp-rngintelt)

  - [`MasseyProduct(Aoo,terms): Rec, SeqEnum[RngElt] → RngElt`](a-infinity.md#function-masseyproduct-rec-seqenum-rngelt)

  - [`HighProduct(Aoo,terms): Rec, SeqEnum[RngElt] → RngElt`](a-infinity.md#function-highproduct-rec-seqenum-rngelt)

  - [`HighMap(Aoo,terms): Rec, SeqEnum[RngElt] → MapChn`](a-infinity.md#function-highmap-rec-seqenum-rngelt)

  - [`Example: A-infinity mod 2`](a-infinity.md#example-ex-b55050)

  - [`Example: A-infinity mod 3`](a-infinity.md#example-ex-21e1bf)

  - [Homological Algebra Toolkit](a-infinity.md#homological-algebra-toolkit)

    - [`ActionMatrix(A,x): AlgBas, Mtrx → ModMatFldElt`](a-infinity.md#function-actionmatrix-algbas-mtrx)

    - [`CohomologyRingQuotient(CR): Rec → Rng, Map`](a-infinity.md#function-cohomologyringquotient-rec)

    - [`LiftToChainmap(P,f,d): ModCpx, Mtrx, RngIntElt → MapChn`](a-infinity.md#function-lifttochainmap-modcpx-mtrx-rngintelt)

    - [`NullHomotopy(f): MapChn → MapChn`](a-infinity.md#function-nullhomotopy-mapchn)

    - [`IsNullHomotopy(f,H): MapChn, MapChn → BoolElt`](a-infinity.md#function-isnullhomotopy-mapchn-mapchn)

    - [`ChainmapToCohomology(f,CR): MapChn, Rec → RngElt`](a-infinity.md#function-chainmaptocohomology-mapchn-rec)

    - [`CohomologyToChainmap(xi,CR,P): RngElt, Rec, ModCpx → MapChn`](a-infinity.md#function-cohomologytochainmap-rngelt-rec-modcpx)

    - [`Example: Nullhomotopy`](a-infinity.md#example-ex-ca2dae)
