# Matrix Algebras

- [Introduction](introduction.md)

- [Construction of Matrix Algebras and their Elements](creation.md)

  - [Construction of the Complete Matrix Algebra](creation.md#construction-of-the-complete-matrix-algebra)

    - [`MatrixAlgebra(S, n): Rng, RngIntElt → AlgMat`](creation.md#function-matrixalgebra-rng-rngintelt)

    - [`MatrixRing(S, n): Rng, RngIntElt → AlgMat`](creation.md#function-matrixring-rng-rngintelt)

  - [Construction of a Matrix](creation.md#construction-of-a-matrix)

    - [`elt< R | L >: AlgMat, RngElt → AlgMatElt`](creation.md#constructor-constructor-elt-algmat-rngelt-algmatelt)

    - [`R ! Q: AlgMat, [ RngElt ] → AlgMatElt`](creation.md#operation-op-algmat-rngelt)

    - [`CambridgeMatrix(t, K, n, Q): RngIntElt, FldFin, RngIntElt, [ ] → AlgMatElt`](creation.md#function-cambridgematrix-rngintelt-fldfin-rngintelt)

    - [`CompanionMatrix(p): RngUPolElt → AlgMatElt`](creation.md#function-companionmatrix-rngupolelt)

    - [`DiagonalMatrix(R, Q): AlgMat, [ RngElt ] → AlgMatElt`](creation.md#function-diagonalmatrix-algmat-rngelt)

    - [`MatrixUnit(R, i, j): AlgMat, RngIntElt, RngIntElt → AlgMatElt`](creation.md#function-matrixunit-algmat-rngintelt-rngintelt)

    - [`Random(R): AlgMat → AlgMatElt`](creation.md#function-random-algmat)

    - [`ScalarMatrix(R, t): AlgMat, RngElt → AlgMatElt`](creation.md#function-scalarmatrix-algmat-rngelt)

    - [`R ! 1: AlgMat, RngIntElt → AlgMatElt`](creation.md#operation-op-algmat-rngintelt)

    - [`R ! 0: AlgMat, RngIntElt → AlgMatElt`](creation.md#operation-op-algmat-rngintelt-2)

    - [`R ! t: AlgMat, RngIntElt → AlgMatElt`](creation.md#operation-op-algmat-rngintelt-3)

  - [Constructing a General Matrix Algebra](creation.md#constructing-a-general-matrix-algebra)

    - [`MatrixAlgebra<S, n | L>: Rng, RngIntElt, List → AlgMat`](creation.md#constructor-constructor-matrixalgebra-rng-rngintelt-list-algmat)

    - [`MatrixRing<S, n | L>: Rng, RngIntElt, List → AlgMat`](creation.md#constructor-constructor-matrixring-rng-rngintelt-list-algmat)

    - [`Example: Creation`](creation.md#example-ex-0b78f0)

    - [`Example: Cambridge`](creation.md#example-ex-424fbd)

    - [`Algebra(R): AlgMatV → AlgGen, Map`](creation.md#function-algebra-algmatv)

  - [The Invariants of a Matrix Algebra](creation.md#the-invariants-of-a-matrix-algebra)

    - [`R . i: AlgMat, RngIntElt → AlgMatElt`](creation.md#operation-operation-algmat-rngintelt-algmatelt)

    - [`BaseRing(R): AlgMatV → Rng`](creation.md#function-basering-algmatv)

    - [`CoefficientRing(R): AlgMatV → Rng`](creation.md#function-coefficientring-algmatv)

    - [`Degree(R): AlgMatV → RngIntElt`](creation.md#function-degree-algmatv)

    - [`Generators(R): AlgMat → { AlgMatElt}`](creation.md#function-generators-algmat)

    - [`Generic(R): AlgMat → AlgMat`](creation.md#function-generic-algmat)

    - [`BaseModule(R): AlgMatV → ModTup`](creation.md#function-basemodule-algmatv)

    - [`NumberOfGenerators(R): AlgMat → { AlgMatElt}`](creation.md#function-numberofgenerators-algmat)

    - [`Ngens(R): AlgMat → { AlgMatElt}`](creation.md#function-ngens-algmat)

    - [`Parent(a): AlgMatElt → AlgMat`](creation.md#function-parent-algmatelt)

    - [`Example: Invariants`](creation.md#example-ex-97af59)

- [Construction of Subalgebras, Ideals and Quotient Rings](subring-ideal-quotient.md)

  - [`sub<R | L>: AlgMat, List → AlgMat, Hom(Alg)`](subring-ideal-quotient.md#constructor-constructor-sub-algmat-list-algmat-hom-alg)

  - [`ideal<R | L>: AlgMat, List → AlgMat`](subring-ideal-quotient.md#constructor-constructor-ideal-algmat-list-algmat)

  - [`lideal<R | L>: AlgMat, List → AlgMat`](subring-ideal-quotient.md#constructor-constructor-lideal-algmat-list-algmat)

  - [`rideal<R | L>: AlgMat, List → AlgMat`](subring-ideal-quotient.md#constructor-constructor-rideal-algmat-list-algmat)

  - [`Example: Sub Algebra`](subring-ideal-quotient.md#example-ex-3c6faa)

- [The Construction of Extensions and their Elements](extension.md)

  - [The Construction of Direct Sums and Tensor Products](extension.md#the-construction-of-direct-sums-and-tensor-products)

    - [`DirectSum(R, T): AlgMat, AlgMat → AlgMat`](extension.md#function-directsum-algmat-algmat)

    - [`TensorProduct(A, B): AlgMat, AlgMat → AlgMat`](extension.md#function-tensorproduct-algmat-algmat)

    - [`Example: Products`](extension.md#example-ex-548c90)

  - [Construction of Direct Sums and Tensor Products of Elements](extension.md#construction-of-direct-sums-and-tensor-products-of-elements)

    - [`DirectSum(a, b): AlgMatElt, AlgMatElt → AlgMatElt`](extension.md#function-directsum-algmatelt-algmatelt)

    - [`ExteriorSquare(a): AlgMatElt → AlgMatElt`](extension.md#function-exteriorsquare-algmatelt)

    - [`ExteriorPower(a,r): AlgMat, RngIntElt → AlgMatElt`](extension.md#function-exteriorpower-algmat-rngintelt)

    - [`SymmetricSquare(a): AlgMatElt → AlgMatElt`](extension.md#function-symmetricsquare-algmatelt)

    - [`SymmetricPower(a,r): AlgMatElt, RngIntElt → AlgMatElt`](extension.md#function-symmetricpower-algmatelt-rngintelt)

    - [`TensorProduct(a, b): AlgMatElt, AlgMatElt → AlgMatElt`](extension.md#function-tensorproduct-algmatelt-algmatelt)

- [Operations on Matrix Algebras](operation.md)

  - [`Centre(A): AlgMat → AlgMat`](operation.md#function-centre-algmat)

  - [`Centralizer(A, S): AlgMat, AlgMat → AlgMat`](operation.md#function-centralizer-algmat-algmat)

  - [`Centraliser(A, S): AlgMat, AlgMat → AlgMat`](operation.md#function-centraliser-algmat-algmat)

- [Changing Rings](change-ring.md)

  - [`ChangeRing(A, S): AlgMatV, Rng → AlgMat, Map`](change-ring.md#function-changering-algmatv-rng)

  - [`ChangeRing(A, S, f): AlgMatV, Rng, Map → AlgMat, Map`](change-ring.md#function-changering-algmatv-rng-map)

  - [`hom< A -> B | f >: AlgMat, AlgMat, Map → Map`](change-ring.md#constructor-constructor-hom-algmat-algmat-map-map)

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

  - [Arithmetic](element.md#arithmetic)

    - [`a + b: AlgMatElt, AlgMatElt → AlgMatElt`](element.md#operation-op-plus-algmatelt-algmatelt)

    - [`a + t: AlgMatElt, RngElt → AlgMatElt`](element.md#operation-op-plus-algmatelt-rngelt)

    - [`t + a: AlgMatElt, RngElt → AlgMatElt`](element.md#operation-op-plus-algmatelt-rngelt-2)

    - [`- a: AlgMatElt → AlgMatElt`](element.md#operation-operation-algmatelt-algmatelt)

    - [`a - b: AlgMatElt, AlgMatElt → AlgMatElt`](element.md#operation-op-minus-algmatelt-algmatelt)

    - [`a - t: AlgMatElt, RngElt → AlgMatElt`](element.md#operation-op-minus-algmatelt-rngelt)

    - [`t - a: AlgMatElt, RngElt → AlgMatElt`](element.md#operation-op-minus-algmatelt-rngelt-2)

    - [`a * b: AlgMatElt, AlgMatElt → AlgMatElt`](element.md#operation-op-times-algmatelt-algmatelt)

    - [`a * b: AlgMatElt, Mtrx → Mtrx`](element.md#operation-op-times-algmatelt-mtrx)

    - [`a * b: Mtrx, AlgMatElt → Mtrx`](element.md#operation-op-times-mtrx-algmatelt)

    - [`t * a: RngElt, AlgMatElt → AlgMatElt`](element.md#operation-op-times-rngelt-algmatelt)

    - [`a * t: AlgMatElt, RngElt → AlgMatElt`](element.md#operation-op-times-algmatelt-rngelt)

    - [`u * a: ModTupRngElt, AlgMatElt → ModTupElt`](element.md#operation-op-times-modtuprngelt-algmatelt)

    - [`a ^ n: AlgMatElt, RngIntElt → AlgMatElt`](element.md#operation-op-pow-algmatelt-rngintelt)

    - [`NumberOfColumns(a): AlgMatElt → RngIntElt`](element.md#function-numberofcolumns-algmatelt)

    - [`Ncols(a): AlgMatElt → RngIntElt`](element.md#function-ncols-algmatelt)

    - [`NumberOfRows(a): AlgMatElt → RngIntElt`](element.md#function-numberofrows-algmatelt)

    - [`Nrows(a): AlgMatElt → RngIntElt`](element.md#function-nrows-algmatelt)

  - [Predicates](element.md#predicates)

    - [Comparison](element.md#comparison)

      - [`a eq b: AlgMatElt, AlgMatElt → BoolElt`](element.md#operation-op-eq-algmatelt-algmatelt)

      - [`a ne b: AlgMatElt, AlgMatElt → BoolElt`](element.md#operation-op-ne-algmatelt-algmatelt)

    - [Properties of Elements](element.md#properties-of-elements)

      - [`IsDiagonal(a): AlgMatElt → BoolElt`](element.md#function-isdiagonal-algmatelt)

      - [`IsMinusOne(a): AlgMatElt → BoolElt`](element.md#function-isminusone-algmatelt)

      - [`IsOne(a): AlgMatElt → BoolElt`](element.md#function-isone-algmatelt)

      - [`IsScalar(a): AlgMatElt → BoolElt`](element.md#function-isscalar-algmatelt)

      - [`IsSymmetric(a): AlgMatElt → BoolElt`](element.md#function-issymmetric-algmatelt)

      - [`IsUnit(a): AlgMatElt → BoolElt`](element.md#function-isunit-algmatelt)

      - [`IsZero(a): AlgMatElt → BoolElt`](element.md#function-iszero-algmatelt)

      - [`IsNilpotent(a): AlgMatElt → BoolElt, RngIntElt`](element.md#function-isnilpotent-algmatelt)

      - [`IsUnipotent(a): AlgMatElt → BoolElt, RngIntElt`](element.md#function-isunipotent-algmatelt)

      - [`Rank(a): AlgMatElt → RngIntElt`](element.md#function-rank-algmatelt)

      - [`Determinant(A): AlgMatElt → RngElt`](element.md#function-determinant-algmatelt)

      - [`Trace(a): AlgMatElt → RngElt`](element.md#function-trace-algmatelt)

      - [`Transpose(a): AlgMatElt → AlgMatElt`](element.md#function-transpose-algmatelt)

      - [`Order(a): AlgMatElt → RngIntElt`](element.md#function-order-algmatelt)

      - [`FactoredOrder(a): AlgMatElt → [ <RngIntElt, RngIntElt> ]`](element.md#function-factoredorder-algmatelt)

      - [`ProjectiveOrder(a): AlgMatElt → RngIntElt`](element.md#function-projectiveorder-algmatelt)

      - [`FactoredProjectiveOrder(a): AlgMatElt → [ <RngIntElt, RngIntElt> ]`](element.md#function-factoredprojectiveorder-algmatelt)

      - [`CharacteristicPolynomial(a: parameters): AlgMatElt → RngUPolElt`](element.md#function-characteristicpolynomial-algmatelt)

      - [`MinimalPolynomial(a): AlgMatElt → RngUPolElt`](element.md#function-minimalpolynomial-algmatelt)

      - [`HessenbergForm(a): AlgMatElt → AlgMatElt`](element.md#function-hessenbergform-algmatelt)

      - [`Adjoint(a): AlgMatElt → AlgMatElt`](element.md#function-adjoint-algmatelt)

      - [`Eigenvalues(a): AlgMatElt → { <FldElt, RngIntElt> }`](element.md#function-eigenvalues-algmatelt)

      - [`Eigenspace(a, e): AlgMatElt, FldElt → ModTup`](element.md#function-eigenspace-algmatelt-fldelt)

- [Elements of $M_n$ as Homomorphisms](homomorphism-element.md)

  - [`Image(a): AlgMatElt → ModTup`](homomorphism-element.md#function-image-algmatelt)

  - [`RowSpace(a): AlgMatElt → ModTup`](homomorphism-element.md#function-rowspace-algmatelt)

  - [`Kernel(a): AlgMatElt → ModTup`](homomorphism-element.md#function-kernel-algmatelt)

  - [`NullSpace(a): AlgMatElt → ModTup`](homomorphism-element.md#function-nullspace-algmatelt)

  - [`RowNullSpace(a): AlgMatElt → ModTup`](homomorphism-element.md#function-rownullspace-algmatelt)

  - [`NullspaceOfTranspose(a): AlgMatVElt → ModTupRng`](homomorphism-element.md#function-nullspaceoftranspose-algmatvelt)

  - [`Restrict(a, V): AlgMatElt, ModTupRng → AlgMatElt`](homomorphism-element.md#function-restrict-algmatelt-modtuprng)

  - [`Restrict(a, V): AlgMatElt, ModTupFld → AlgMatElt`](homomorphism-element.md#function-restrict-algmatelt-modtupfld)

- [Elementary Operations on Subalgebras and Ideals](subalgebra-ideal.md)

  - [Bases](subalgebra-ideal.md#bases)

    - [`Dimension(R): AlgMatV → RngIntElt`](subalgebra-ideal.md#function-dimension-algmatv)

    - [`Basis(R): AlgMatV → [ AlgMatElt ]`](subalgebra-ideal.md#function-basis-algmatv)

    - [`BasisElement(R, i): AlgMatV, RngIntElt → AlgMatElt`](subalgebra-ideal.md#function-basiselement-algmatv-rngintelt)

    - [`Coordinates(R, X): AlgMatV, AlgMatVElt → [ RngElt ]`](subalgebra-ideal.md#function-coordinates-algmatv-algmatvelt)

  - [Intersection of Subalgebras](subalgebra-ideal.md#intersection-of-subalgebras)

    - [`R meet T: AlgMat, AlgMat → AlgMat`](subalgebra-ideal.md#operation-op-meet-algmat-algmat)

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

    - [`x in R: AlgMatElt, AlgMat → BoolElt`](subalgebra-ideal.md#operation-op-in-algmatelt-algmat)

    - [`X subset R: { AlgMatElt}, AlgMat → BoolElt`](subalgebra-ideal.md#operation-op-subset-algmatelt-algmat)

    - [`T subset R: AlgMat, AlgMat → BoolElt`](subalgebra-ideal.md#operation-op-subset-algmat-algmat)

    - [`x notin R: AlgMatElt, AlgMat → BoolElt`](subalgebra-ideal.md#operation-op-notin-algmatelt-algmat)

    - [`X notsubset R: { AlgMatElt}, AlgMat → BoolElt`](subalgebra-ideal.md#operation-operation-notsubset-algmatelt-algmat-boolelt)

    - [`T notsubset R: AlgMat, AlgMat → BoolElt`](subalgebra-ideal.md#operation-operation-notsubset-algmat-algmat-boolelt)

    - [`R eq T: AlgMat, AlgMat → BoolElt`](subalgebra-ideal.md#operation-op-eq-algmat-algmat)

    - [`R ne T: AlgMat, AlgMat → BoolElt`](subalgebra-ideal.md#operation-op-ne-algmat-algmat)

- [Accessing and Modifying a Matrix](operation-element.md)

  - [Indexing](operation-element.md#indexing)

    - [`a[i]: AlgMatElt, RngIntElt → ModTupElt`](operation-element.md#indexed-indexed-a-algmatelt-rngintelt-modtupelt)

    - [`a[i] := u: AlgMatElt, RngIntElt, RngElt → AlgMatElt`](operation-element.md#literal-literal-a-i-u-algmatelt-rngintelt-rngelt-algmatelt)

    - [`a[i, j]: AlgMatElt, RngIntElt, RngIntElt → RngElt`](operation-element.md#indexed-indexed-a-algmatelt-rngintelt-rngintelt-rngelt)

    - [`a[i, j] := t: AlgMatElt, RngIntElt, RngIntElt, RngElt → AlgMatElt`](operation-element.md#literal-literal-a-i-j-t-algmatelt-rngintelt-rngintelt-rngelt-algmatelt)

    - [`ElementToSequence(a): AlgMatElt → [ RngElt ]`](operation-element.md#function-elementtosequence-algmatelt)

    - [`Eltseq(a): AlgMatElt → [ RngElt ]`](operation-element.md#function-eltseq-algmatelt)

  - [Extracting and Inserting Blocks](operation-element.md#extracting-and-inserting-blocks)

    - [`Submatrix(a, i, j, p, q): Mtrx, RngIntElt, RngIntElt, RngIntElt, RngIntElt → Mtrx`](operation-element.md#function-submatrix-mtrx-rngintelt-rngintelt-rngintelt-rngintelt)

    - [`ExtractBlock(a, i, j, p, q): Mtrx, RngIntElt, RngIntElt, RngIntElt, RngIntElt → Mtrx`](operation-element.md#function-extractblock-mtrx-rngintelt-rngintelt-rngintelt-rngintelt)

    - [`InsertBlock(~a, b, i, j): Mtrx, Mtrx, RngIntElt, RngIntElt → Mtrx`](operation-element.md#function-insertblock-mtrx-mtrx-rngintelt-rngintelt-ref)

  - [Joining Matrices](operation-element.md#joining-matrices)

    - [`HorizontalJoin(X, Y): Mtrx, Mtrx → Mtrx`](operation-element.md#function-horizontaljoin-mtrx-mtrx)

    - [`HorizontalJoin(Q): [ ModMatRngElt ] → ModMatRngElt`](operation-element.md#function-horizontaljoin-modmatrngelt)

    - [`VerticalJoin(X, Y): ModMatRngElt, ModMatRngElt → ModMatRngElt`](operation-element.md#function-verticaljoin-modmatrngelt-modmatrngelt)

    - [`VerticalJoin(Q): [ ModMatRngElt ] → ModMatRngElt`](operation-element.md#function-verticaljoin-modmatrngelt)

    - [`DiagonalJoin(X, Y): ModMatRngElt, ModMatRngElt → ModMatRngElt`](operation-element.md#function-diagonaljoin-modmatrngelt-modmatrngelt)

    - [`DiagonalJoin(Q): [ ModMatRngElt ] → ModMatRngElt`](operation-element.md#function-diagonaljoin-modmatrngelt)

  - [Row and Column Operations](operation-element.md#row-and-column-operations)

    - [`SwapRows(~a, i, j): AlgMatElt, RngIntElt, RngIntElt`](operation-element.md#function-swaprows-algmatelt-rngintelt-rngintelt-ref)

    - [`MultiplyRow(~a, u, j): AlgMatElt, RngElt, RngIntElt`](operation-element.md#function-multiplyrow-algmatelt-rngelt-rngintelt-ref)

    - [`AddRow(~a, u, i, j): AlgMatElt, RngElt, RngIntElt, RngIntElt`](operation-element.md#function-addrow-algmatelt-rngelt-rngintelt-rngintelt-ref)

    - [`SwapColumns(~a, i, j): AlgMatElt, RngIntElt, RngIntElt`](operation-element.md#function-swapcolumns-algmatelt-rngintelt-rngintelt-ref)

    - [`MultiplyColumn(~a, u, i): AlgMatElt, RngElt, RngIntElt`](operation-element.md#function-multiplycolumn-algmatelt-rngelt-rngintelt-ref)

    - [`AddColumn(~a, u, i, j): AlgMatElt, RngElt, RngIntElt, RngIntElt`](operation-element.md#function-addcolumn-algmatelt-rngelt-rngintelt-rngintelt-ref)

- [Canonical Forms](canonical-form.md)

  - [Canonical Forms for Matrices over Euclidean Domains](canonical-form.md#canonical-forms-for-matrices-over-euclidean-domains)

    - [`EchelonForm(a): AlgMatElt → AlgMatElt, AlgMatElt`](canonical-form.md#function-echelonform-algmatelt)

    - [`ElementaryDivisors(a): AlgMatElt → [RngElt]`](canonical-form.md#function-elementarydivisors-algmatelt)

    - [`HermiteForm(X): AlgMatElt → AlgMatElt, AlgMatElt`](canonical-form.md#function-hermiteform-algmatelt)

    - [`SmithForm(a): AlgMatElt → AlgMatElt, AlgMatElt, AlgMatElt`](canonical-form.md#function-smithform-algmatelt)

    - [`Example: Echelon Form`](canonical-form.md#example-ex-e0346c)

  - [Canonical Forms for Matrices over a Field](canonical-form.md#canonical-forms-for-matrices-over-a-field)

    - [`PrimaryRationalForm(a): AlgMatElt → AlgMatElt, AlgMatElt, [ <RngUPolElt, RngIntElt ]`](canonical-form.md#function-primaryrationalform-algmatelt)

    - [`JordanForm(a): AlgMatElt → AlgMatElt, AlgMatElt, [ <RngUPolElt, RngIntElt ]`](canonical-form.md#function-jordanform-algmatelt)

    - [`RationalForm(a): AlgMatElt → AlgMatElt, AlgMatElt, [ RngUPolElt ]`](canonical-form.md#function-rationalform-algmatelt)

    - [`PrimaryInvariantFactors(a): AlgMatElt → [ <RngUPolElt, RngIntElt ]`](canonical-form.md#function-primaryinvariantfactors-algmatelt)

    - [`InvariantFactors(a): AlgMatElt → [ AlgPolElt ]`](canonical-form.md#function-invariantfactors-algmatelt)

    - [`IsSimilar(a, b): AlgMatElt, AlgMatElt → BoolElt, AlgMatElt`](canonical-form.md#function-issimilar-algmatelt-algmatelt)

    - [`Example: Elementary Divisors`](canonical-form.md#example-ex-29de54)

    - [`Example: Canonical Forms`](canonical-form.md#example-ex-a68b91)

- [Diagonalising Commutative Algebras over a Field](diag.md)

  - [`CommonEigenspaces(Q): [AlgMatElt] → [**], [[FldElt]]`](diag.md#function-commoneigenspaces-algmatelt)

  - [`CommonEigenspaces(A): AlgMat → [**], [[FldElt]]`](diag.md#function-commoneigenspaces-algmat)

  - [`IsEtale(A): AlgMat → BoolElt, AlgMatElt`](diag.md#function-isetale-algmat)

  - [`Diagonalisation(Q): [AlgMatElt] → [AlgMatElt], AlgMatElt`](diag.md#function-diagonalisation-algmatelt)

  - [`Diagonalization(Q): [AlgMatElt] → [AlgMatElt], AlgMatElt`](diag.md#function-diagonalization-algmatelt)

  - [`Diagonalisation(A): AlgMat → AlgMat, AlgMatElt`](diag.md#function-diagonalisation-algmat)

  - [`Diagonalization(A): AlgMat → AlgMat, AlgMatElt`](diag.md#function-diagonalization-algmat)

  - [`Diagonalisation(M): AlgMatElt → AlgMatElt, AlgMatElt`](diag.md#function-diagonalisation-algmatelt-2)

  - [`Diagonalization(M): AlgMatElt → AlgMatElt, AlgMatElt`](diag.md#function-diagonalization-algmatelt-2)

  - [`IsDiagonalisable(M): AlgMatElt → Boolelt, AlgMatElt, AlgMatElt`](diag.md#function-isdiagonalisable-algmatelt)

  - [`IsDiagonalizable(M): AlgMatElt → Boolelt, AlgMatElt, AlgMatElt`](diag.md#function-isdiagonalizable-algmatelt)

  - [`Example: Diagonalization`](diag.md#example-ex-b2afd3)

  - [`Example: Is Diagonalizablex`](diag.md#example-ex-a7004a)

- [Solutions of Systems of Linear Equations](solution-equation.md)

  - [`IsConsistent(A, w): ModMatRngElt, ModTupRng → BoolElt, ModTupRngElt, ModTupRng`](solution-equation.md#function-isconsistent-modmatrngelt-modtuprng)

  - [`IsConsistent(A, W): ModMatRngElt, [ ModTupRng ] → BoolElt, [ ModTupRngElt ], ModTupRng`](solution-equation.md#function-isconsistent-modmatrngelt-modtuprng-2)

  - [`Solution(A, w): ModMatRngElt, ModTupRng → ModTupRngElt, ModTupRng`](solution-equation.md#function-solution-modmatrngelt-modtuprng)

  - [`Solution(A, W): ModMatRngElt, [ ModTupRng ] → [ ModTupRngElt ], ModTupRng`](solution-equation.md#function-solution-modmatrngelt-modtuprng-2)

- [Presentations for Matrix Algebras](presentations.md)

  - [Quotients and Idempotents](presentations.md#quotients-and-idempotents)

    - [`NaturalFreeAlgebraCover(A): AlgMat → Map`](presentations.md#function-naturalfreealgebracover-algmat)

    - [`SimpleQuotientAlgebras(A): AlgMat → Rec`](presentations.md#function-simplequotientalgebras-algmat)

    - [`PrimitiveIdempotentData(A): AlgMat → SeqEnum, Map, SeqEnum`](presentations.md#function-primitiveidempotentdata-algmat)

    - [`PrimitiveIdempotents(A): AlgMat → SeqEnum`](presentations.md#function-primitiveidempotents-algmat)

    - [`RanksOfPrimitiveIdempotents(A): AlgMat → SeqEnum`](presentations.md#function-ranksofprimitiveidempotents-algmat)

    - [`NaturalFreeAlgebraCover(A): AlgMat → Map`](presentations.md#function-naturalfreealgebracover-algmat-2)

    - [`CondensedAlgebra(A): AlgMat → AlgMat`](presentations.md#function-condensedalgebra-algmat)

    - [`Example: Primitive Idempotents`](presentations.md#example-ex-b62a87)

  - [Generators and Presentations](presentations.md#generators-and-presentations)

    - [`SemisimpleGeneratorData(A): AlgMat → SeqEnum`](presentations.md#function-semisimplegeneratordata-algmat)

    - [`AlgebraGenerators(A): AlgMat → Rec`](presentations.md#function-algebragenerators-algmat)

    - [`AlgebraStructure(A): AlgMat → Rec`](presentations.md#function-algebrastructure-algmat)

    - [`Presentation(A): AlgMat → AlgFr, AlgFr, Map`](presentations.md#function-presentation-algmat)

    - [`StandardFormConjugationMatrices(A): AlgMat → Tup`](presentations.md#function-standardformconjugationmatrices-algmat)

    - [`CondensationMatrices(A): AlgMat → Tup`](presentations.md#function-condensationmatrices-algmat)

    - [`SequenceOfRadicalGenerators(A): AlgMat → SeqEnum`](presentations.md#function-sequenceofradicalgenerators-algmat)

    - [`CartanMatrix(A): AlgMat → ModMatRngElt`](presentations.md#function-cartanmatrix-algmat)

    - [`Example: Condensed Algebra`](presentations.md#example-ex-865183)

  - [Solving the Word Problem](presentations.md#solving-the-word-problem)

    - [`WordProblemData(A): AlgMat → List`](presentations.md#function-wordproblemdata-algmat)

    - [`WordProblem(A, x): AlgMat, AlgMatElt → BoolElt, AlgFrElt`](presentations.md#function-wordproblem-algmat-algmatelt)

    - [`Example: Presentation`](presentations.md#example-ex-6d214a)
