# Algebras

- [Introduction](introduction.md)

  - [The Categories of Algebras](introduction.md#the-categories-of-algebras)

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

  - [Construction of a General Algebra](creation.md#construction-of-a-general-algebra)

    - [`Algebra< R, n | Q >: Rng, RngIntElt, SeqEnum → AlgGen`](creation.md#constructor-constructor-algebra-rng-rngintelt-seqenum-alggen)

    - [`AssociativeAlgebra< R, n | Q >: Rng, RngIntElt, SeqEnum → AlgAss`](creation.md#constructor-constructor-associativealgebra-rng-rngintelt-seqenum-algass)

    - [`QuaternionAlgebra< K | a, b >: Rng, RngElt, RngElt → AlgQuat`](creation.md#constructor-constructor-quaternionalgebra-rng-rngelt-rngelt-algquat)

    - [`LieAlgebra< R, n | Q >: Rng, RngIntElt, SeqEnum → AlgLie`](creation.md#constructor-constructor-liealgebra-rng-rngintelt-seqenum-alglie)

    - [`LieAlgebra(A): AlgAss → AlgLie`](creation.md#function-liealgebra-algass)

    - [`GroupAlgebra(R, G): Rng, Grp → AlgGrp`](creation.md#function-groupalgebra-rng-grp)

    - [`MatrixAlgebra(R, n): Rng, RngInt → AlgMat`](creation.md#function-matrixalgebra-rng-rngint)

  - [Construction of an Element of a General Algebra](creation.md#construction-of-an-element-of-a-general-algebra)

    - [`Zero(A): AlgGen → AlgGenElt`](creation.md#function-zero-alggen)

    - [`A ! 0: AlgGen, RngIntElt → AlgGenElt`](creation.md#operation-op-alggen-rngintelt)

    - [`One(A): AlgGen → AlgGenElt`](creation.md#function-one-alggen)

    - [`A ! 1: AlgGen, RngIntElt → AlgGenElt`](creation.md#operation-op-alggen-rngintelt-2)

    - [`Random(A): AlgGen → AlgGenElt`](creation.md#function-random-alggen)

- [Construction of Subalgebras, Ideals and Quotient Algebras](subs-quos.md)

  - [Subalgebras and Ideals](subs-quos.md#subalgebras-and-ideals)

    - [`sub< A | L >: AlgGen, List → AlgGen, Map`](subs-quos.md#constructor-constructor-sub-alggen-list-alggen-map)

    - [`lideal< A | L >: AlgGen, List → AlgGen, Map`](subs-quos.md#constructor-constructor-lideal-alggen-list-alggen-map)

    - [`rideal< A | L >: AlgGen, List → AlgGen, Map`](subs-quos.md#constructor-constructor-rideal-alggen-list-alggen-map)

    - [`ideal< A | L >: AlgGen, List → AlgGen, Map`](subs-quos.md#constructor-constructor-ideal-alggen-list-alggen-map)

  - [Quotient Algebras](subs-quos.md#quotient-algebras)

    - [`quo< A | L >: AlgGen, List → AlgGen, Map`](subs-quos.md#constructor-constructor-quo-alggen-list-alggen-map)

    - [`A / S: AlgGen, AlgGen → AlgGen`](subs-quos.md#operation-op-div-alggen-alggen)

- [Operations on Algebras and Subalgebras](ops.md)

  - [Invariants of an Algebra](ops.md#invariants-of-an-algebra)

    - [`CoefficientRing(A): AlgGen → Rng`](ops.md#function-coefficientring-alggen)

    - [`CoefficientField(A): AlgGen → Rng`](ops.md#function-coefficientfield-alggen)

    - [`BaseRing(A): AlgGen → Rng`](ops.md#function-basering-alggen)

    - [`BaseField(A): AlgGen → Rng`](ops.md#function-basefield-alggen)

    - [`Dimension(A): AlgGen → RngIntElt`](ops.md#function-dimension-alggen)

    - [`# A: AlgGen → RngIntElt`](ops.md#operation-operation-alggen-rngintelt)

  - [Changing Rings](ops.md#changing-rings)

    - [`ChangeRing(A, S): AlgGen, Rng → AlgGen, Map`](ops.md#function-changering-alggen-rng)

    - [`ChangeRing(A, S, f): AlgGen, Rng, Map → AlgGen, Map`](ops.md#function-changering-alggen-rng-map)

  - [Bases](ops.md#bases)

    - [`BasisElement(A, i): AlgGen, RngIntElt → AlgGenElt`](ops.md#function-basiselement-alggen-rngintelt)

    - [`A . i: AlgGen, RngIntElt → AlgGenElt`](ops.md#operation-operation-alggen-rngintelt-alggenelt)

    - [`Basis(A): AlgGen → [ AlgGenElt ]`](ops.md#function-basis-alggen)

    - [`IsIndependent(Q): [ AlgGen ] → BoolElt`](ops.md#function-isindependent-alggen)

    - [`ExtendBasis(S, A): AlgGen, AlgGen → [ AlgElt ]`](ops.md#function-extendbasis-alggen-alggen)

    - [`ExtendBasis(Q, A): [ AlgGen ], AlgGen → [ AlgElt ]`](ops.md#function-extendbasis-alggen-alggen-2)

  - [Decomposition of an Algebra](ops.md#decomposition-of-an-algebra)

    - [`CompositionSeries(A): AlgGen → [ AlgGen ], [ AlgGen ], AlgMatElt`](ops.md#function-compositionseries-alggen)

    - [`CompositionFactors(A): AlgGen → [ AlgGen ]`](ops.md#function-compositionfactors-alggen)

    - [`MinimalLeftIdeals(A : parameters): AlgGen → [ AlgGen ], BoolElt`](ops.md#function-minimalleftideals-alggen)

    - [`MinimalRightIdeals(A : parameters): AlgGen → [ AlgGen ], BoolElt`](ops.md#function-minimalrightideals-alggen)

    - [`MinimalIdeals(A : parameters): AlgGen → [ AlgGen ], BoolElt`](ops.md#function-minimalideals-alggen)

    - [`MaximalLeftIdeals(A : parameters): AlgGen → [ AlgGen ], BoolElt`](ops.md#function-maximalleftideals-alggen)

    - [`MaximalRightIdeals(A : parameters): AlgGen → [ AlgGen ], BoolElt`](ops.md#function-maximalrightideals-alggen)

    - [`MaximalIdeals(A : parameters): AlgGen → [ AlgGen ], BoolElt`](ops.md#function-maximalideals-alggen)

    - [`JacobsonRadical(A): AlgGen → AlgGen`](ops.md#function-jacobsonradical-alggen)

    - [`IsSemisimple(A): AlgGen → BoolElt`](ops.md#function-issemisimple-alggen)

    - [`IsSimple(A): AlgGen → BoolElt`](ops.md#function-issimple-alggen)

    - [`Example: quaternions`](ops.md#example-ex-0f19c1)

  - [Operations on Subalgebras](ops.md#operations-on-subalgebras)

    - [`IsZero(A): AlgGen → BoolElt`](ops.md#function-iszero-alggen)

    - [`A eq B: AlgGen, AlgGen → BoolElt`](ops.md#operation-op-eq-alggen-alggen)

    - [`A ne B: AlgGen, AlgGen → BoolElt`](ops.md#operation-op-ne-alggen-alggen)

    - [`A subset B: AlgGen, AlgGen → BoolElt`](ops.md#operation-op-subset-alggen-alggen)

    - [`A notsubset B: AlgGen, AlgGen → BoolElt`](ops.md#operation-operation-notsubset-alggen-alggen-boolelt)

    - [`A meet B: AlgGen, AlgGen → AlgGen`](ops.md#operation-op-meet-alggen-alggen)

    - [`A * B: AlgGen, AlgGen → AlgGen`](ops.md#operation-op-times-alggen-alggen)

    - [`A ^ n: AlgGen, RngIntElt → AlgGen`](ops.md#operation-op-pow-alggen-rngintelt)

    - [`Morphism(A, B): AlgGen, AlgGen → Map`](ops.md#function-morphism-alggen-alggen)

- [Operations on Elements of an Algebra](ops-2.md)

  - [Operations on Elements](ops-2.md#operations-on-elements)

    - [`a + b: AlgGenElt, AlgGenElt → AlgGenElt`](ops-2.md#operation-op-plus-alggenelt-alggenelt)

    - [`- a: AlgGenElt → AlgGenElt`](ops-2.md#operation-operation-alggenelt-alggenelt)

    - [`a - b: AlgGenElt, AlgGenElt → AlgGenElt`](ops-2.md#operation-op-minus-alggenelt-alggenelt)

    - [`a * b: AlgGenElt, AlgGenElt → AlgGenElt`](ops-2.md#operation-op-times-alggenelt-alggenelt)

    - [`a * r: AlgGenElt, RngElt → AlgGenElt`](ops-2.md#operation-op-times-alggenelt-rngelt)

    - [`r * a: RngElt, AlgGenElt → AlgGenElt`](ops-2.md#operation-op-times-rngelt-alggenelt)

    - [`a / r: AlgGenElt, RngElt → AlgGenElt`](ops-2.md#operation-op-div-alggenelt-rngelt)

    - [`a ^ n: AlgGenElt, RngIntElt → AlgGenElt`](ops-2.md#operation-op-pow-alggenelt-rngintelt)

    - [`MinimalPolynomial(a): AlgGenElt → RngUPolElt`](ops-2.md#function-minimalpolynomial-alggenelt)

    - [`Parent(a): AlgGenElt → AlgGen`](ops-2.md#function-parent-alggenelt)

  - [Comparisons and Membership](ops-2.md#comparisons-and-membership)

    - [`a eq b: AlgGenElt, AlgGenElt → BoolElt`](ops-2.md#operation-op-eq-alggenelt-alggenelt)

    - [`a ne b: AlgGenElt, AlgGenElt → BoolElt`](ops-2.md#operation-op-ne-alggenelt-alggenelt)

    - [`a in A: AlgGenElt, AlgGen → BoolElt`](ops-2.md#operation-op-in-alggenelt-alggen)

    - [`a notin A: AlgGenElt, AlgGen → BoolElt`](ops-2.md#operation-op-notin-alggenelt-alggen)

  - [Predicates on Elements](ops-2.md#predicates-on-elements)

    - [`IsZero(a): AlgGenElt → BoolElt`](ops-2.md#function-iszero-alggenelt)

    - [`IsOne(a): AlgGenElt → BoolElt`](ops-2.md#function-isone-alggenelt)

    - [`IsMinusOne(a): AlgGenElt → BoolElt`](ops-2.md#function-isminusone-alggenelt)

    - [`IsUnit(a): AlgGenElt → BoolElt, AlgGenElt`](ops-2.md#function-isunit-alggenelt)

    - [`IsRegular(a): AlgGenElt → BoolElt`](ops-2.md#function-isregular-alggenelt)

    - [`IsZeroDivisor(a): AlgGenElt → BoolElt`](ops-2.md#function-iszerodivisor-alggenelt)

    - [`IsIdempotent(a): AlgGenElt → BoolElt`](ops-2.md#function-isidempotent-alggenelt)

    - [`IsNilpotent(a): AlgGenElt → BoolElt, RngIntElt`](ops-2.md#function-isnilpotent-alggenelt)
