# Étale Algebras

- [Introduction](intro.md)

- [Construction](construct.md)

  - [`EtaleAlgebra(seq): SeqEnum[FldNum] → AlgEtQ`](construct.md#function-etalealgebra-seqenum-fldnum)

  - [`Example: Two Copies Of Q`](construct.md#example-ex-e44d0f)

  - [`EtaleAlgebra(f): RngUPolElt[RngInt] → AlgEtQ`](construct.md#function-etalealgebra-rngupolelt-rngint)

  - [`EtaleAlgebra(f): RngUPolElt[FldRat] → AlgEtQ`](construct.md#function-etalealgebra-rngupolelt-fldrat)

  - [`DirectProduct(seq): SeqEnum[AlgEtQ] → AlgEtQ, SeqEnum[Map], SeqEnum[Map]`](construct.md#function-directproduct-seqenum-algetq)

- [Attributes](attr.md)

  - [`DefiningPolynomial(A): AlgEtQ → RngUPolElt`](attr.md#function-definingpolynomial-algetq)

  - [`Components(A): AlgEtQ → SeqEnum`](attr.md#function-components-algetq)

  - [`Dimension(A): AlgEtQ → RngInt`](attr.md#function-dimension-algetq)

  - [`AbsoluteDimension(A): AlgEtQ → RngInt`](attr.md#function-absolutedimension-algetq)

  - [`HasBaseField(A): AlgEtQ → BoolElt`](attr.md#function-hasbasefield-algetq)

  - [`BaseField(A): AlgEtQ → FldNum, Map`](attr.md#function-basefield-algetq)

  - [`PrimeField(A): AlgEtQ → FldNum`](attr.md#function-primefield-algetq)

  - [`IsNumberField(A): AlgEtQ → BoolElt, FldNum, Map`](attr.md#function-isnumberfield-algetq)

  - [`A1 eq A2: AlgEtQ, AlgEtQ → BoolElt`](attr.md#operation-op-eq-algetq-algetq)

- [Homomorphisms](homs.md)

  - [`HomsToC(A): AlgEtQ → SeqEnum[Map]`](homs.md#function-homstoc-algetq)

  - [`Example: Homs To C Example`](homs.md#example-ex-58e95c)

  - [`Hom(A, B, img): AlgEtQ, AlgEtQ, SeqEnum[AlgEtQElt] → Map`](homs.md#function-hom-algetq-algetq-seqenum-algetqelt)

  - [`DiagonalEmbedding(K, V): AlgEtQ, AlgEtQ → Map`](homs.md#function-diagonalembedding-algetq-algetq)

  - [`NaturalAction(K, V): AlgEtQ, AlgEtQ → Map`](homs.md#function-naturalaction-algetq-algetq)

  - [`Example: Hom And Diagonal`](homs.md#example-ex-aab1bc)

- [Elements](elements.md)

  - [`Parent(x): AlgEtQElt → AlgEtQ`](elements.md#function-parent-algetqelt)

  - [`Algebra(x): AlgEtQElt → AlgEtQ`](elements.md#function-algebra-algetqelt)

  - [`Components(x): AlgEtQElt → SeqEnum`](elements.md#function-components-algetqelt)

  - [`AbsoluteCoordinates(x): AlgEtQElt → SeqEnum`](elements.md#function-absolutecoordinates-algetqelt)

  - [`AbsoluteCoordinates(x, S): AlgEtQElt, AlgEtQOrd → SeqEnum`](elements.md#function-absolutecoordinates-algetqelt-algetqord)

  - [`IsCoercible(A, x): AlgEtQ, Any → BoolElt, AlgEtQElt`](elements.md#function-iscoercible-algetq-any)

  - [`A ! x: AlgEtQ, Any) → AlgEtQElt`](elements.md#operation-op-algetq-any)

  - [`One(A): AlgEtQ → AlgEtQElt`](elements.md#function-one-algetq)

  - [`Zero(A): AlgEtQ → AlgEtQElt`](elements.md#function-zero-algetq)

  - [`IsUnit(x): AlgEtQElt → BoolElt`](elements.md#function-isunit-algetqelt)

  - [`IsZeroDivisor(x): AlgEtQElt → BoolElt`](elements.md#function-iszerodivisor-algetqelt)

  - [`Random(A, bd): AlgEtQ, RngIntElt → AlgEtQElt`](elements.md#function-random-algetq-rngintelt)

  - [`Random(A): AlgEtQ → AlgEtQElt`](elements.md#function-random-algetq)

  - [`RandomUnit(A, bd): AlgEtQ, RngIntElt → AlgEtQElt`](elements.md#function-randomunit-algetq-rngintelt)

  - [`x1 eq x2: AlgEtQElt, AlgEtQElt → BoolElt`](elements.md#operation-op-eq-algetqelt-algetqelt)

  - [`x1 eq x2: RngIntElt, AlgEtQElt → BoolElt`](elements.md#operation-op-eq-rngintelt-algetqelt)

  - [`x1 eq x2: AlgEtQElt, RngIntElt → BoolElt`](elements.md#operation-op-eq-algetqelt-rngintelt)

  - [`x1 eq x2: FldRatElt, AlgEtQElt → BoolElt`](elements.md#operation-op-eq-fldratelt-algetqelt)

  - [`x1 eq x2: AlgEtQElt, FldRatElt → BoolElt`](elements.md#operation-op-eq-algetqelt-fldratelt)

  - [`x1 + x2: AlgEtQElt, AlgEtQElt → AlgEtQElt`](elements.md#operation-op-plus-algetqelt-algetqelt)

  - [`x1 + x2: Any, AlgEtQElt → AlgEtQElt`](elements.md#operation-op-plus-any-algetqelt)

  - [`x1 + x2: AlgEtQElt, Any → AlgEtQElt`](elements.md#operation-op-plus-algetqelt-any)

  - [`- x: AlgEtQElt → AlgEtQElt`](elements.md#operation-operation-algetqelt-algetqelt)

  - [`x1 - x2: AlgEtQElt, AlgEtQElt → AlgEtQElt`](elements.md#operation-op-minus-algetqelt-algetqelt)

  - [`x1 - x2: Any, AlgEtQElt → AlgEtQElt`](elements.md#operation-op-minus-any-algetqelt)

  - [`x1 - x2: AlgEtQElt, Any → AlgEtQElt`](elements.md#operation-op-minus-algetqelt-any)

  - [`x1 * x2: AlgEtQElt, AlgEtQElt → AlgEtQElt`](elements.md#operation-op-times-algetqelt-algetqelt)

  - [`x1 * x2: Any, AlgEtQElt → AlgEtQElt`](elements.md#operation-op-times-any-algetqelt)

  - [`x1 * x2: AlgEtQElt, Any → AlgEtQElt`](elements.md#operation-op-times-algetqelt-any)

  - [`Inverse(x): AlgEtQElt → AlgEtQElt`](elements.md#function-inverse-algetqelt)

  - [`x ^ n: AlgEtQElt, RngIntElt → AlgEtQElt`](elements.md#operation-op-pow-algetqelt-rngintelt)

  - [`x1 / x2: AlgEtQElt, AlgEtQElt → AlgEtQElt`](elements.md#operation-op-div-algetqelt-algetqelt)

  - [`x1 / x2: Any, AlgEtQElt → AlgEtQElt`](elements.md#operation-op-div-any-algetqelt)

  - [`x1 / x2: AlgEtQElt, Any → AlgEtQElt`](elements.md#operation-op-div-algetqelt-any)

  - [`&+ seq: SeqEnum[AlgEtQElt] → AlgEtQElt`](elements.md#operation-operation-seqenum-algetqelt-algetqelt)

  - [`&* seq: SeqEnum[AlgEtQElt] → AlgEtQElt`](elements.md#operation-operation-seqenum-algetqelt-algetqelt-2)

  - [`DotProduct(a, b): SeqEnum, SeqEnum → Any`](elements.md#function-dotproduct-seqenum-seqenum)

  - [`Example: Dot Product Example`](elements.md#example-ex-1d7031)

  - [`MinimalPolynomial(x): AlgEtQElt → RngUPolElt`](elements.md#function-minimalpolynomial-algetqelt)

  - [`MinimalPolynomial(x, F): AlgEtQElt, Rng → RngUPolElt`](elements.md#function-minimalpolynomial-algetqelt-rng)

  - [`AbsoluteMinimalPolynomial(x): AlgEtQElt → RngUPolElt`](elements.md#function-absoluteminimalpolynomial-algetqelt)

  - [`IsIntegral(x): AlgEtQElt → BoolElt`](elements.md#function-isintegral-algetqelt)

  - [`Evaluate(f, a): RngUPolElt, AlgEtQElt → AlgEtQElt`](elements.md#function-evaluate-rngupolelt-algetqelt)

  - [`PrimitiveElement(A): AlgEtQ → AlgEtQElt`](elements.md#function-primitiveelement-algetq)

  - [`PowerBasis(A): AlgEtQ → SeqEnum[AlgEtQElt]`](elements.md#function-powerbasis-algetq)

  - [`Basis(A): AlgEtQ → SeqEnum`](elements.md#function-basis-algetq)

  - [`AbsoluteBasis(A): AlgEtQ → SeqEnum`](elements.md#function-absolutebasis-algetq)

  - [`A . i: AlgEtQ, RngIntElt → AlgEtQElt`](elements.md#operation-operation-algetq-rngintelt-algetqelt)

  - [`AbsoluteCoordinates(seq, basis): SeqEnum[AlgEtQElt], SeqEnum[AlgEtQElt] → SeqEnum`](elements.md#function-absolutecoordinates-seqenum-algetqelt-seqenum-algetqelt)

  - [`OrthogonalIdempotents(A): AlgEtQ → SeqEnum`](elements.md#function-orthogonalidempotents-algetq)

  - [`Idempotents(A): AlgEtQ → SeqEnum`](elements.md#function-idempotents-algetq)

- [Orders of Algebras](orders.md)

  - [`IsCoercible(S, x): AlgEtQOrd, Any → BoolElt, AlgEtQElt`](orders.md#function-iscoercible-algetqord-any)

  - [`Order(gens): SeqEnum[AlgEtQElt] → AlgEtQOrd`](orders.md#function-order-seqenum-algetqelt)

  - [`Order(A, orders): AlgEtQ, Tup → AlgEtQOrd`](orders.md#function-order-algetq-tup)

  - [`Algebra(S): AlgEtQOrd → AlgEtQ`](orders.md#function-algebra-algetqord)

  - [`ZBasis(S): AlgEtQOrd → SeqEnum[AlgEtQElt]`](orders.md#function-zbasis-algetqord)

  - [`Generators(S): AlgEtQOrd → SeqEnum[AlgEtQElt]`](orders.md#function-generators-algetqord)

  - [`O1 eq O2: AlgEtQOrd, AlgEtQOrd → BoolElt`](orders.md#operation-op-eq-algetqord-algetqord)

  - [`x in O: AlgEtQElt, AlgEtQOrd → BoolElt`](orders.md#operation-op-in-algetqelt-algetqord)

  - [`x in O: RngIntElt, AlgEtQOrd → BoolElt`](orders.md#operation-op-in-rngintelt-algetqord)

  - [`x in O: FldRatElt, AlgEtQOrd → BoolElt`](orders.md#operation-op-in-fldratelt-algetqord)

  - [`AbsoluteCoordinates(seq, O): SeqEnum[AlgEtQElt], AlgEtQOrd → SeqEnum`](orders.md#function-absolutecoordinates-seqenum-algetqelt-algetqord)

  - [`One(S): AlgEtQOrd → AlgEtQElt`](orders.md#function-one-algetqord)

  - [`Zero(S): AlgEtQOrd → AlgEtQElt`](orders.md#function-zero-algetqord)

  - [`Random(O, bd): AlgEtQOrd, RngIntElt → AlgEtQElt`](orders.md#function-random-algetqord-rngintelt)

  - [`Random(O): AlgEtQOrd → AlgEtQElt`](orders.md#function-random-algetqord)

  - [`IsKnownOrder(~R): AlgEtQOrd`](orders.md#function-isknownorder-algetqord-ref)

  - [`EquationOrder(A): AlgEtQ → AlgEtQOrd`](orders.md#function-equationorder-algetq)

  - [`ProductOfEquationOrders(A): AlgEtQ → AlgEtQOrd`](orders.md#function-productofequationorders-algetq)

  - [`MaximalOrder(A): AlgEtQ → AlgEtQOrd`](orders.md#function-maximalorder-algetq)

  - [`IsMaximal(S): AlgEtQOrd → BoolElt`](orders.md#function-ismaximal-algetqord)

  - [`IsProductOfOrders(O): AlgEtQOrd → BoolElt, Tup`](orders.md#function-isproductoforders-algetqord)

  - [`IsProductOfOrdersInComponents(O): AlgEtQOrd → BoolElt, Tup`](orders.md#function-isproductofordersincomponents-algetqord)

  - [`IsProductOfOrdersInFactorAlgebras(S): AlgEtQOrd → BoolElt, SeqEnum[AlgEtQElt]`](orders.md#function-isproductofordersinfactoralgebras-algetqord)

  - [`Example: Orders Factor Algebras`](orders.md#example-ex-f008b6)

  - [`Index(T): AlgEtQOrd → FldRatElt`](orders.md#function-index-algetqord)

  - [`Index(S, T): AlgEtQOrd, AlgEtQOrd → FldRatElt`](orders.md#function-index-algetqord-algetqord)

  - [`O1 subset O2: AlgEtQOrd, AlgEtQOrd → BoolElt`](orders.md#operation-op-subset-algetqord-algetqord)

  - [`O1 * O2: AlgEtQOrd, AlgEtQOrd → AlgEtQOrd`](orders.md#operation-op-times-algetqord-algetqord)

  - [`O1 meet O2: AlgEtQOrd, AlgEtQOrd → AlgEtQOrd`](orders.md#operation-op-meet-algetqord-algetqord)

  - [`MultiplicatorRing(R): AlgEtQOrd → AlgEtQOrd`](orders.md#function-multiplicatorring-algetqord)

- [Ideals](ideals.md)

  - [`Ideal(S, gens): AlgEtQOrd, SeqEnum → AlgEtQIdl`](ideals.md#function-ideal-algetqord-seqenum)

  - [`Ideal(S, idls): AlgEtQOrd, Tup → AlgEtQIdl`](ideals.md#function-ideal-algetqord-tup)

  - [`Ideal(S, gen): AlgEtQOrd, Any → AlgEtQIdl`](ideals.md#function-ideal-algetqord-any)

  - [`S * gen: AlgEtQOrd, AlgEtQElt → AlgEtQIdl`](ideals.md#operation-op-times-algetqord-algetqelt)

  - [`S * gen: AlgEtQOrd, RngIntElt → AlgEtQIdl`](ideals.md#operation-op-times-algetqord-rngintelt)

  - [`S * gen: AlgEtQOrd, FldRatElt → AlgEtQIdl`](ideals.md#operation-op-times-algetqord-fldratelt)

  - [`gen * S: AlgEtQElt, AlgEtQOrd → AlgEtQIdl`](ideals.md#operation-op-times-algetqelt-algetqord)

  - [`gen * S: RngIntElt, AlgEtQOrd → AlgEtQIdl`](ideals.md#operation-op-times-rngintelt-algetqord)

  - [`gen * S: FldRatElt, AlgEtQOrd → AlgEtQIdl`](ideals.md#operation-op-times-fldratelt-algetqord)

  - [`T !! I: AlgEtQOrd, AlgEtQIdl → AlgEtQIdl`](ideals.md#operation-op-algetqord-algetqidl)

  - [`Algebra(I): AlgEtQIdl → AlgEtQ`](ideals.md#function-algebra-algetqidl)

  - [`Order(I): AlgEtQIdl → AlgEtQOrd`](ideals.md#function-order-algetqidl)

  - [`ZBasis(I): AlgEtQIdl → SeqEnum[AlgEtQElt]`](ideals.md#function-zbasis-algetqidl)

  - [`Generators(I): AlgEtQIdl → SeqEnum[AlgEtQElt]`](ideals.md#function-generators-algetqidl)

  - [`I eq J: AlgEtQIdl, AlgEtQIdl → BoolElt`](ideals.md#operation-op-eq-algetqidl-algetqidl)

  - [`I ne J: AlgEtQIdl, AlgEtQIdl → BoolElt`](ideals.md#operation-op-ne-algetqidl-algetqidl)

  - [`I eq S: AlgEtQIdl, AlgEtQOrd → BoolElt`](ideals.md#operation-op-eq-algetqidl-algetqord)

  - [`S eq I: AlgEtQOrd, AlgEtQIdl → BoolElt`](ideals.md#operation-op-eq-algetqord-algetqidl)

  - [`AbsoluteCoordinates(x, I): AlgEtQElt, AlgEtQIdl → SeqEnum`](ideals.md#function-absolutecoordinates-algetqelt-algetqidl)

  - [`AbsoluteCoordinates(seq, I): SeqEnum[AlgEtQElt], AlgEtQIdl → SeqEnum`](ideals.md#function-absolutecoordinates-seqenum-algetqelt-algetqidl)

  - [`x in I: AlgEtQElt, AlgEtQIdl → BoolElt`](ideals.md#operation-op-in-algetqelt-algetqidl)

  - [`x in I: RngIntElt, AlgEtQIdl → BoolElt`](ideals.md#operation-op-in-rngintelt-algetqidl)

  - [`x in I: FldRatElt, AlgEtQIdl → BoolElt`](ideals.md#operation-op-in-fldratelt-algetqidl)

  - [`S subset I: AlgEtQOrd, AlgEtQIdl → BoolElt`](ideals.md#operation-op-subset-algetqord-algetqidl)

  - [`I subset S: AlgEtQIdl, AlgEtQOrd → BoolElt`](ideals.md#operation-op-subset-algetqidl-algetqord)

  - [`I1 subset I2: AlgEtQIdl, AlgEtQIdl → BoolElt`](ideals.md#operation-op-subset-algetqidl-algetqidl)

  - [`Index(T): AlgEtQIdl → FldRatElt`](ideals.md#function-index-algetqidl)

  - [`Index(J, I): AlgEtQIdl, AlgEtQIdl → Any`](ideals.md#function-index-algetqidl-algetqidl)

  - [`Index(S, I): AlgEtQOrd, AlgEtQIdl → Any`](ideals.md#function-index-algetqord-algetqidl)

  - [`OneIdeal(S): AlgEtQOrd → AlgEtQIdl`](ideals.md#function-oneideal-algetqord)

  - [`Conductor(O): AlgEtQOrd → AlgEtQOrdIdl`](ideals.md#function-conductor-algetqord)

  - [`I + J: AlgEtQIdl, AlgEtQIdl → AlgEtQIdl`](ideals.md#operation-op-plus-algetqidl-algetqidl)

  - [`I * J: AlgEtQIdl, AlgEtQIdl → AlgEtQIdl`](ideals.md#operation-op-times-algetqidl-algetqidl)

  - [`I * x: AlgEtQIdl, AlgEtQElt → AlgEtQIdl`](ideals.md#operation-op-times-algetqidl-algetqelt)

  - [`I * x: AlgEtQIdl, RngIntElt → AlgEtQIdl`](ideals.md#operation-op-times-algetqidl-rngintelt)

  - [`I * x: AlgEtQIdl, FldRatElt → AlgEtQIdl`](ideals.md#operation-op-times-algetqidl-fldratelt)

  - [`x * I: AlgEtQElt, AlgEtQIdl → AlgEtQIdl`](ideals.md#operation-op-times-algetqelt-algetqidl)

  - [`x * I: RngIntElt, AlgEtQIdl → AlgEtQIdl`](ideals.md#operation-op-times-rngintelt-algetqidl)

  - [`x * I: FldRatElt, AlgEtQIdl → AlgEtQIdl`](ideals.md#operation-op-times-fldratelt-algetqidl)

  - [`I ^ n: AlgEtQIdl, RngIntElt) → AlgEtQIdl`](ideals.md#operation-op-pow-algetqidl-rngintelt)

  - [`I meet S: AlgEtQIdl, AlgEtQOrd → AlgEtQIdl`](ideals.md#operation-op-meet-algetqidl-algetqord)

  - [`S meet I: AlgEtQOrd, AlgEtQIdl → AlgEtQIdl`](ideals.md#operation-op-meet-algetqord-algetqidl)

  - [`I meet J: AlgEtQIdl, AlgEtQIdl → AlgEtQIdl`](ideals.md#operation-op-meet-algetqidl-algetqidl)

  - [`&+ seq: SeqEnum[AlgEtQIdl] → AlgEtQIdl`](ideals.md#operation-operation-seqenum-algetqidl-algetqidl)

  - [`ColonIdeal(I, J): AlgEtQIdl, AlgEtQIdl → AlgEtQIdl`](ideals.md#function-colonideal-algetqidl-algetqidl)

  - [`ColonIdeal(O, J): AlgEtQOrd, AlgEtQIdl → AlgEtQIdl`](ideals.md#function-colonideal-algetqord-algetqidl)

  - [`ColonIdeal(I, O): AlgEtQIdl, AlgEtQOrd → AlgEtQIdl`](ideals.md#function-colonideal-algetqidl-algetqord)

  - [`IsInvertible(I): AlgEtQIdl → BoolElt`](ideals.md#function-isinvertible-algetqidl)

  - [`Inverse(I): AlgEtQIdl → AlgEtQIdl`](ideals.md#function-inverse-algetqidl)

  - [`MultiplicatorRing(I): AlgEtQIdl → AlgEtQOrd`](ideals.md#function-multiplicatorring-algetqidl)

  - [`IsProductOfIdeals(I): AlgEtQIdl → BoolElt, Tup`](ideals.md#function-isproductofideals-algetqidl)

  - [`Random(I, bd): AlgEtQIdl, RngIntElt → AlgEtQElt`](ideals.md#function-random-algetqidl-rngintelt)

  - [`Random(I): AlgEtQIdl → AlgEtQElt`](ideals.md#function-random-algetqidl)

  - [`IsCoprime(I, J): AlgEtQIdl, AlgEtQIdl → BoolElt`](ideals.md#function-iscoprime-algetqidl-algetqidl)

  - [`IsIntegral(I): AlgEtQIdl → BoolElt`](ideals.md#function-isintegral-algetqidl)

  - [`MakeIntegral(I): AlgEtQIdl → AlgEtQIdl, RngIntElt`](ideals.md#function-makeintegral-algetqidl)

  - [`MinimalInteger(I): AlgEtQIdl → RngIntElt`](ideals.md#function-minimalinteger-algetqidl)

  - [`CoprimeRepresentative(I, J): AlgEtQIdl, AlgEtQIdl → AlgEtQElt, AlgEtQIdl`](ideals.md#function-coprimerepresentative-algetqidl-algetqidl)

  - [`ZBasisLLL(~S): AlgEtQOrd`](ideals.md#function-zbasislll-algetqord-ref)

  - [`ZBasisLLL(~S): AlgEtQIdl`](ideals.md#function-zbasislll-algetqidl-ref)

- [Quotients](quotients.md)

  - [`Quotient(I, zbJ): AlgEtQIdl, SeqEnum[AlgEtQElt] → GrpAb, Map`](quotients.md#function-quotient-algetqidl-seqenum-algetqelt)

  - [`Quotient(I, J): AlgEtQIdl, AlgEtQIdl → GrpAb, Map`](quotients.md#function-quotient-algetqidl-algetqidl)

  - [`Quotient(S, zbJ): AlgEtQOrd, SeqEnum[AlgEtQElt] → GrpAb, Map`](quotients.md#function-quotient-algetqord-seqenum-algetqelt)

  - [`ResidueRing(S, I): AlgEtQOrd, AlgEtQIdl → GrpAb, Map`](quotients.md#function-residuering-algetqord-algetqidl)

  - [`ResidueField(P): AlgEtQIdl → FldFin, Map`](quotients.md#function-residuefield-algetqidl)

  - [`PrimitiveElementResidueField(P): AlgEtQIdl → AlgEtQElt`](quotients.md#function-primitiveelementresiduefield-algetqidl)

  - [`QuotientVS(I, J, P): AlgEtQOrd, AlgEtQOrd, AlgEtQIdl → ModRng, Map`](quotients.md#function-quotientvs-algetqord-algetqord-algetqidl)

  - [`Example: Quotients Residues`](quotients.md#example-ex-c0d808)

  - [`QuotientVS(I, J, P): AlgEtQOrd, AlgEtQIdl, AlgEtQIdl → ModRng, Map`](quotients.md#function-quotientvs-algetqord-algetqidl-algetqidl)

  - [`QuotientVS(I, J, P): AlgEtQIdl, AlgEtQOrd, AlgEtQIdl → ModRng, Map`](quotients.md#function-quotientvs-algetqidl-algetqord-algetqidl)

  - [`QuotientVS(I, J, P): AlgEtQIdl, AlgEtQIdl, AlgEtQIdl → ModRng, Map`](quotients.md#function-quotientvs-algetqidl-algetqidl-algetqidl)

- [Over Orders](over_orders.md)

  - [`IsMaximalAtPrime(R, P): AlgEtQOrd, AlgEtQIdl → BoolElt`](over_orders.md#function-ismaximalatprime-algetqord-algetqidl)

  - [`MinimalOverOrdersAtPrime(R, P): AlgEtQOrd, AlgEtQIdl → SetIndx[AlgEtQOrd]`](over_orders.md#function-minimaloverordersatprime-algetqord-algetqidl)

  - [`MinimalOverOrders(R): AlgEtQOrd → SetIndx[AlgEtQOrd]`](over_orders.md#function-minimaloverorders-algetqord)

  - [`OverOrdersAtPrime(R, P): AlgEtQOrd, AlgEtQIdl → SeqEnum[AlgEtQOrd]`](over_orders.md#function-overordersatprime-algetqord-algetqidl)

  - [`OverOrders(R): AlgEtQOrd → SeqEnum[AlgEtQOrd]`](over_orders.md#function-overorders-algetqord)

  - [`Example: Over Orders Example`](over_orders.md#example-ex-1d4978)

  - [`FindOverOrders(R): AlgEtQOrd → SetIndx[AlgEtQOrd]`](over_orders.md#function-findoverorders-algetqord)

- [Over Order Graph](graph_over_orders.md)

  - [`GraphOverOrders(R): AlgEtQOrd → GrphDir`](graph_over_orders.md#function-graphoverorders-algetqord)

- [Trace and Norm](trace_norm.md)

  - [`Trace(x): AlgEtQElt → FldRatElt`](trace_norm.md#function-trace-algetqelt)

  - [`Norm(x): AlgEtQElt → FldRatElt`](trace_norm.md#function-norm-algetqelt)

  - [`AbsoluteTrace(x): AlgEtQElt → FldRatElt`](trace_norm.md#function-absolutetrace-algetqelt)

  - [`AbsoluteNorm(x): AlgEtQElt → FldRatElt`](trace_norm.md#function-absolutenorm-algetqelt)

  - [`TraceDualIdeal(I): AlgEtQIdl → AlgEtQIdl`](trace_norm.md#function-tracedualideal-algetqidl)

  - [`TraceDualIdeal(O): AlgEtQOrd → AlgEtQIdl`](trace_norm.md#function-tracedualideal-algetqord)

- [Completion](completion.md)

  - [`Completion(P): AlgEtQIdl → FldPad, Map`](completion.md#function-completion-algetqidl)

  - [`Example: Uniformizers Completion`](completion.md#example-ex-ecd376)

- [Intermediate Ideals](intermediate_ideals.md)

  - [`IntermediateIdeals(I, J): AlgEtQIdl, AlgEtQIdl → SetIndx[AlgEtQIdl]`](intermediate_ideals.md#function-intermediateideals-algetqidl-algetqidl)

  - [`IntermediateIdeals(I, J, O): AlgEtQIdl, AlgEtQIdl, AlgEtQOrd → SetIndx[AlgEtQIdl]`](intermediate_ideals.md#function-intermediateideals-algetqidl-algetqidl-algetqord)

  - [`IntermediateIdeals(I, J, N): AlgEtQIdl, AlgEtQIdl, RngIntElt → SetIndx[AlgEtQIdl]`](intermediate_ideals.md#function-intermediateideals-algetqidl-algetqidl-rngintelt)

- [Ideals of Index](ideals_of_index.md)

  - [`IdealsOfIndex(O, N): RngOrd, RngIntElt → SeqEnum[RngOrdIdl]`](ideals_of_index.md#function-idealsofindex-rngord-rngintelt)

  - [`IdealsOfIndex(I, N): RngOrdIdl, RngIntElt → SeqEnum[RngOrdIdl]`](ideals_of_index.md#function-idealsofindex-rngordidl-rngintelt)

  - [`IdealsOfIndex(I, N): RngOrdFracIdl, RngIntElt → SeqEnum[RngOrdFracIdl]`](ideals_of_index.md#function-idealsofindex-rngordfracidl-rngintelt)

  - [`IdealsOfIndex(I, N): AlgEtQIdl, RngIntElt → SeqEnum[AlgEtQIdl]`](ideals_of_index.md#function-idealsofindex-algetqidl-rngintelt)

  - [`IdealsOfIndex(O, N): AlgEtQOrd, RngIntElt → SeqEnum[AlgEtQIdl]`](ideals_of_index.md#function-idealsofindex-algetqord-rngintelt)

- [Short Element and Small Representative](short_elt_small_rep.md)

  - [`ShortElement(I): AlgEtQIdl → AlgEtQElt`](short_elt_small_rep.md#function-shortelement-algetqidl)

  - [`SmallRepresentative(I): AlgEtQIdl → AlgEtQIdl, AlgEtQElt`](short_elt_small_rep.md#function-smallrep)

- [Minimal Generators](minimal_generators.md)

  - [`TwoGeneratingSet(I): AlgEtQIdl`](minimal_generators.md#function-twogeneratingset-algetqidl)

- [Chinese Remainder Theorem](crt.md)

  - [`ChineseRemainderTheorem(Is, as): SeqEnum[AlgEtQIdl], SeqEnum[AlgEtQElt] → AlgEtQElt`](crt.md#function-chineseremaindertheorem-seqenum-algetqidl-seqenum-algetqelt)

  - [`ChineseRemainderTheorem(I, J, a, b): AlgEtQIdl, AlgEtQIdl, AlgEtQElt, AlgEtQElt → AlgEtQElt`](crt.md#function-chineseremaindertheorem-algetqidl-algetqidl-algetqelt-algetqelt)

  - [`ChineseRemainderTheoremFunctions(Is): SeqEnum[AlgEtQIdl] → Map, Map`](crt.md#function-chineseremaindertheoremfunctions-seqenum-algetqidl)

  - [`Example: CRT Functions`](crt.md#example-ex-d7dd94)

- [Picard Group](picard_group.md)

  - [`ResidueRingUnits(S, I): AlgEtQOrd, AlgEtQIdl → GrpAb, Map`](picard_group.md#function-residueringunits-algetqord-algetqidl)

  - [`ResidueRingUnits(I): AlgEtQIdl → GrpAb, Map`](picard_group.md#function-residueringunits-algetqidl)

  - [`ResidueRingUnitsSubgroupGenerators(F): AlgEtQIdl → SeqEnum[AlgEtQElt]`](picard_group.md#function-residueringunitssubgroupgenerators-algetqidl)

  - [`IsPrincipal(I1): AlgEtQIdl → BoolElt, AlgAssElt`](picard_group.md#function-isprincipal-algetqidl)

  - [`PicardGroup(S): AlgEtQOrd → GrpAb, Map`](picard_group.md#function-picardgroup-algetqord)

  - [`ExtensionHomPicardGroups(S, T): AlgEtQOrd, AlgEtQOrd → Map`](picard_group.md#function-extensionhompicardgroups-algetqord-algetqord)

  - [`UnitGroup(S): AlgEtQOrd → GrpAb, Map`](picard_group.md#function-unitgroup-algetqord)

  - [`Example: Picard And Units`](picard_group.md#example-ex-034565)

  - [`IsIsomorphic(I, J): AlgEtQIdl, AlgEtQIdl → BoolElt, AlgAssElt`](picard_group.md#function-isisomorphic-algetqidl-algetqidl)

- [Factorization and Primes](factor_primes.md)

  - [`Factorization(I): AlgEtQIdl → Tup`](factor_primes.md#function-factorization-algetqidl)

  - [`PrimesAbove(I): AlgEtQIdl → SeqEnum[AlgAssEtOrdIdl]`](factor_primes.md#function-primesabove-algetqidl)

  - [`SingularPrimes(R): AlgEtQOrd → SeqEnum[AlgAssEtOrdIdl]`](factor_primes.md#function-singularprimes-algetqord)

  - [`PlacesAboveRationalPrime(E, p): AlgEtQ, RngIntElt → SeqEnum[AlgEtQIdl]`](factor_primes.md#function-placesaboverationalprime-algetq-rngintelt)

  - [`NonInvertiblePrimes(R): AlgEtQOrd → SetIndx`](factor_primes.md#function-noninvertibleprimes-algetqord)

  - [`IsPrime(I): AlgEtQIdl → BoolElt`](factor_primes.md#function-isprime-algetqidl)

  - [`IsMaximal(I): AlgEtQIdl → BoolElt`](factor_primes.md#function-ismaximal-algetqidl)

  - [`IsMaximalIdeal(I): AlgEtQIdl → BoolElt`](factor_primes.md#function-ismaximalideal-algetqidl)

  - [`Valuation(x, P): AlgEtQElt, AlgEtQIdl → RngIntElt`](factor_primes.md#function-valuation-algetqelt-algetqidl)

  - [`Valuation(I, P): AlgEtQIdl, AlgEtQIdl → RngIntElt`](factor_primes.md#function-valuation-algetqidl-algetqidl)

  - [`InertiaDegree(P): AlgEtQIdl → RngIntElt`](factor_primes.md#function-inertiadegree-algetqidl)

  - [`RamificationIndex(P): AlgEtQIdl → RngIntElt`](factor_primes.md#function-ramificationindex-algetqidl)

  - [`IsBassAtPrime(S, P): AlgEtQOrd, AlgEtQIdl → BoolElt`](factor_primes.md#function-isbassatprime-algetqord-algetqidl)

  - [`IsBass(S): AlgEtQOrd → BoolElt`](factor_primes.md#function-isbass-algetqord)

  - [`IsGorensteinAtPrime(S, P): AlgEtQOrd, AlgEtQIdl → BoolElt`](factor_primes.md#function-isgorensteinatprime-algetqord-algetqidl)

  - [`IsGorenstein(O): AlgEtQOrd → BoolElt`](factor_primes.md#function-isgorenstein-algetqord)

  - [`Uniformizers(PPs): SeqEnum[AlgEtQIdl] → SeqEnum`](factor_primes.md#function-uniformizers-seqenum-algetqidl)

- [Low Cohen Macauley Type](low_cohen_macauley_type.md)

  - [`NonGorensteinPrimes(S): AlgEtQOrd → SeqEnum, SeqEnum`](low_cohen_macauley_type.md#function-nongorensteinprimes-algetqord)

  - [`CohenMacaulayTypeAtPrime(S, P): AlgEtQOrd, AlgEtQIdl → RngIntElt`](low_cohen_macauley_type.md#function-cohenmacaulaytypeatprime-algetqord-algetqidl)

  - [`CohenMacaulayType(S): AlgEtQOrd → RngIntElt`](low_cohen_macauley_type.md#function-cohenmacaulaytype-algetqord)

  - [`Example: Max Cohen Macaulay Type`](low_cohen_macauley_type.md#example-ex-442922)

- [Weak Classes](weak_classes.md)

  - [`WKICM_bar(S): AlgEtQOrd → SeqEnum`](weak_classes.md#function-wkicm-bar-algetqord)

  - [`WeakEquivalenceClassesWithPrescribedMultiplicatorRing(S): AlgEtQOrd → SeqEnum[AlgEtQIdl]`](weak_classes.md#function-weakequivalenceclasseswithprescribedmultiplicatorring-algetqord)

  - [`WeakEquivalenceClassMonoid(E): AlgEtQOrd → SeqEnum[AlgEtQIdl]`](weak_classes.md#function-weakequivalenceclassmonoid-algetqord)

  - [`WKICM(E): AlgEtQOrd → SeqEnum`](weak_classes.md#function-wkicm-algetqord)

  - [`WeakEquivalenceClassMonoidAbstract(R): AlgEtQOrd → AlgEtQWECM, Map`](weak_classes.md#function-weakequivalenceclassmonoidabstract-algetqord)

  - [`W ! x: AlgEtQWECM, Any → AlgEtQWECMElt`](weak_classes.md#operation-op-algetqwecm-any)

  - [`x in W: AlgEtQWECMElt, AlgEtQWECM → BoolElt`](weak_classes.md#operation-op-in-algetqwecmelt-algetqwecm)

  - [`Parent(x): AlgEtQWECMElt → AlgEtQWECM`](weak_classes.md#function-parent-algetqwecmelt)

  - [`Ideal(x): AlgEtQWECMElt → AlgEtQIdl`](weak_classes.md#function-ideal-algetqwecmelt)

  - [`MultiplicatorRing(x): AlgEtQWECMElt → AlgEtQOrd`](weak_classes.md#function-multiplicatorring-algetqwecmelt)

  - [`x1 eq x2: AlgEtQWECMElt, AlgEtQWECMElt → BoolElt`](weak_classes.md#operation-op-eq-algetqwecmelt-algetqwecmelt)

  - [`SetRepresentative(x, J): AlgEtQWECMElt, AlgEtQIdl`](weak_classes.md#function-setrepresentative-algetqwecmelt-algetqidl)

  - [`MultiplicationTable(W): AlgEtQWECM → Assoc`](weak_classes.md#function-multiplicationtable-algetqwecm)

  - [`x * y: AlgEtQWECMElt, AlgEtQWECMElt → AlgEtQWECMElt`](weak_classes.md#operation-op-times-algetqwecmelt-algetqwecmelt)

  - [`x ^ n: AlgEtQWECMElt, RngIntElt → AlgEtQWECMElt`](weak_classes.md#operation-op-pow-algetqwecmelt-rngintelt)

  - [`IsOne(x): AlgEtQWECMElt → BoolElt`](weak_classes.md#function-isone-algetqwecmelt)

  - [`IsIdempotent(x): AlgEtQWECMElt → BoolElt`](weak_classes.md#function-isidempotent-algetqwecmelt)

  - [`Order(W): AlgEtQWECM → AlgEtQOrd`](weak_classes.md#function-order-algetqwecm)

  - [`Array(W): AlgEtQWECM → Assoc`](weak_classes.md#function-array-algetqwecm)

  - [`RepresentativeMap(W): AlgEtQWECM → Map`](weak_classes.md#function-representativemap-algetqwecm)

  - [`W1 eq W2: AlgEtQWECM, AlgEtQWECM → BoolElt`](weak_classes.md#operation-op-eq-algetqwecm-algetqwecm)

  - [`# W: AlgEtQWECM → RngInt`](weak_classes.md#operation-operation-algetqwecm-rngint)

  - [`Classes(W): AlgEtQWECM → SeqEnum[AlgEtQWECMElt]`](weak_classes.md#function-classes-algetqwecm)

  - [`Representatives(W): AlgEtQWECM → SeqEnum[AlgEtQIdl]`](weak_classes.md#function-representatives-algetqwecm)

  - [`One(W): AlgEtQWECM → AlgEtQWECMElt`](weak_classes.md#function-one-algetqwecm)

  - [`Random(W): AlgEtQWECM → AlgEtQWECMElt`](weak_classes.md#function-random-algetqwecm)

  - [`Idempotents(W): AlgEtQWECM → SeqEnum[AlgEtQWECMElt]`](weak_classes.md#function-idempotents-algetqwecm)

  - [`Localization(W, P): AlgEtQWECM, AlgEtQIdl → AlgEtQWECM`](weak_classes.md#function-localization-algetqwecm-algetqidl)

  - [`IsGeneratingSet(W, seq): AlgEtQWECM, SeqEnum[AlgEtQWECMElt] → BoolElt`](weak_classes.md#function-isgeneratingset-algetqwecm-seqenum-algetqwecmelt)

  - [`IsGeneratingSet(W, seq): AlgEtQWECM, SeqEnum[AlgEtQIdl] → BoolElt`](weak_classes.md#function-isgeneratingset-algetqwecm-seqenum-algetqidl)

  - [`Example: Weak Equivalence Classes`](weak_classes.md#example-ex-628357)

- [Weak Testing](weak_testing.md)

  - [`IsWeakEquivalent(I, J): AlgEtQIdl, AlgEtQIdl → BoolElt`](weak_testing.md#function-isweakequivalent-algetqidl-algetqidl)

  - [`IsWeaklyEquivalent(I, J): AlgEtQIdl, AlgEtQIdl → BoolElt`](weak_testing.md#function-isweaklyequivalent-algetqidl-algetqidl)

  - [`IsWeakEquivalent(O1, O2): AlgEtQOrd, AlgEtQOrd → BoolElt`](weak_testing.md#function-isweakequivalent-algetqord-algetqord)

  - [`IsWeaklyEquivalent(O1, O2): AlgEtQOrd, AlgEtQOrd → BoolElt`](weak_testing.md#function-isweaklyequivalent-algetqord-algetqord)

  - [`IsWeakEquivalent(O, J): AlgEtQOrd, AlgEtQIdl → BoolElt`](weak_testing.md#function-isweakequivalent-algetqord-algetqidl)

  - [`IsWeaklyEquivalent(J, O): AlgEtQIdl, AlgEtQOrd → BoolElt`](weak_testing.md#function-isweaklyequivalent-algetqidl-algetqord)

  - [`Example: Weak Testing`](weak_testing.md#example-ex-6405b0)

  - [`IsWeakEquivalent(J, O): AlgEtQIdl, AlgEtQOrd → BoolElt`](weak_testing.md#function-isweakequivalent-algetqidl-algetqord)

- [Ideal Class Monoid](ideal_class_monoid.md)

  - [`ICM_bar(S): AlgEtQOrd → SeqEnum`](ideal_class_monoid.md#function-icm-bar-algetqord)

  - [`ICM(S): AlgEtQOrd → SeqEnum`](ideal_class_monoid.md#function-icm-algetqord)

  - [`IdealClassMonoidAbstract(R): AlgEtQOrd → AlgEtQICM, Map`](ideal_class_monoid.md#function-idealclassmonoidabstract-algetqord)

  - [`icm ! x: AlgEtQICM, Any → AlgEtQICMElt`](ideal_class_monoid.md#operation-op-algetqicm-any)

  - [`x in icm: AlgEtQICMElt, AlgEtQICM → BoolElt`](ideal_class_monoid.md#operation-op-in-algetqicmelt-algetqicm)

  - [`Parent(x): AlgEtQICMElt → AlgEtQICM`](ideal_class_monoid.md#function-parent-algetqicmelt)

  - [`WEClass(x): AlgEtQICMElt → AlgEtQWECMElt`](ideal_class_monoid.md#function-weclass-algetqicmelt)

  - [`PicClass(x): AlgEtQICMElt → GrpAbElt, Map`](ideal_class_monoid.md#function-picclass-algetqicmelt)

  - [`Ideal(x): AlgEtQICMElt → AlgEtQIdl`](ideal_class_monoid.md#function-ideal-algetqicmelt)

  - [`MultiplicatorRing(x): AlgEtQICMElt → AlgEtQOrd`](ideal_class_monoid.md#function-multiplicatorring-algetqicmelt)

  - [`x1 eq x2: AlgEtQICMElt, AlgEtQICMElt → BoolElt`](ideal_class_monoid.md#operation-op-eq-algetqicmelt-algetqicmelt)

  - [`x * y: AlgEtQICMElt, AlgEtQICMElt → AlgEtQICMElt`](ideal_class_monoid.md#operation-op-times-algetqicmelt-algetqicmelt)

  - [`x ^ n: AlgEtQICMElt, RngIntElt → AlgEtQICMElt`](ideal_class_monoid.md#operation-op-pow-algetqicmelt-rngintelt)

  - [`IsOne(x): AlgEtQICMElt → BoolElt`](ideal_class_monoid.md#function-isone-algetqicmelt)

  - [`IsInvertibleInMultiplicatorRing(x): AlgEtQICMElt → BoolElt`](ideal_class_monoid.md#function-isinvertibleinmultiplicatorring-algetqicmelt)

  - [`Order(icm): AlgEtQICM → AlgEtQOrd`](ideal_class_monoid.md#function-order-algetqicm)

  - [`RepresentativeMap(icm): AlgEtQICM → Map`](ideal_class_monoid.md#function-representativemap-algetqicm)

  - [`icm1 eq icm2: AlgEtQICM, AlgEtQICM → BoolElt`](ideal_class_monoid.md#operation-op-eq-algetqicm-algetqicm)

  - [`# icm: AlgEtQICM → RngInt`](ideal_class_monoid.md#operation-operation-algetqicm-rngint)

  - [`Classes(icm): AlgEtQICM → SeqEnum[AlgEtQICMElt]`](ideal_class_monoid.md#function-classes-algetqicm)

  - [`Representatives(icm): AlgEtQICM → SeqEnum[AlgEtQIdl]`](ideal_class_monoid.md#function-representatives-algetqicm)

  - [`One(icm): AlgEtQICM → AlgEtQICMElt`](ideal_class_monoid.md#function-one-algetqicm)

  - [`Random(icm): AlgEtQICM → AlgEtQICMElt`](ideal_class_monoid.md#function-random-algetqicm)

- [Complex Conjugation](complex_conj.md)

  - [`HasComplexConjugate(A): AlgEtQ → BoolElt`](complex_conj.md#function-hascomplexconjugate-algetq)

  - [`ComplexConjugate(x): AlgEtQElt → AlgEtQElt`](complex_conj.md#function-complexconjugate-algetqelt)

  - [`IsConjugateStable(O): AlgEtQOrd → BoolElt, AlgEtQOrd`](complex_conj.md#function-isconjugatestable-algetqord)

  - [`ComplexConjugate(O): AlgEtQOrd → AlgEtQOrd`](complex_conj.md#function-complexconjugate-algetqord)

  - [`IsConjugateStable(I): AlgEtQIdl → BoolElt, AlgEtQIdl`](complex_conj.md#function-isconjugatestable-algetqidl)

  - [`ComplexConjugate(I): AlgEtQIdl → AlgEtQIdl`](complex_conj.md#function-complexconjugate-algetqidl)

- [Complex Multiplication](complex-mult.md)

  - [`CMType(seq): SeqEnum[Map] → AlgEtQCMType`](complex-mult.md#function-cmtype-seqenum-map)

  - [`Example: CM Types`](complex-mult.md#example-ex-d5afe8)

  - [`CreateCMType(seq): SeqEnum[Map] → AlgEtQCMType`](complex-mult.md#function-createcmtype-seqenum-map)

  - [`CMType(b): AlgEtQElt → AlgEtQCMType`](complex-mult.md#function-cmtype-algetqelt)

  - [`CreateCMType(b): AlgEtQElt → AlgEtQCMType`](complex-mult.md#function-createcmtype-algetqelt)

  - [`CMPositiveElement(PHI): AlgEtQCMType → AlgEtQElt`](complex-mult.md#function-cmpositiveelement-algetqcmtype)

  - [`CMPosElt(PHI): AlgEtQCMType → AlgEtQElt`](complex-mult.md#function-cmposelt-algetqcmtype)

  - [`Homs(PHI): AlgEtQCMType → SeqEnum[Map]`](complex-mult.md#function-homs-algetqcmtype)

  - [`PHI1 eq PHI2: AlgEtQCMType, AlgEtQCMType → BoolElt`](complex-mult.md#operation-op-eq-algetqcmtype-algetqcmtype)

  - [`Precision(PHI): AlgEtQCMType → RngIntElt`](complex-mult.md#function-precision-algetqcmtype)

  - [`ChangePrecision(PHI0, prec): AlgEtQCMType, RngIntElt → AlgEtQCMType`](complex-mult.md#function-changeprecision-algetqcmtype-rngintelt)

  - [`ChangePrecision(~PHI, prec): AlgEtQCMType, RngIntElt`](complex-mult.md#function-changeprecision-algetqcmtype-rngintelt-ref)

  - [`AllCMTypes(A): AlgEtQ → SeqEnum[AlgEtQCMType]`](complex-mult.md#function-allcmtypes-algetq)

- [Totally Real and Positive](TotRealTotPos.md)

  - [`IsTotallyReal(a): AlgEtQElt → BoolElt`](TotRealTotPos.md#function-istotallyreal-algetqelt)

  - [`IsTotallyRealPositive(a): AlgEtQElt → BoolElt`](TotRealTotPos.md#function-istotallyrealpositive-algetqelt)

  - [`TotallyRealSubAlgebra(K): AlgEtQ → AlgEtQ, Map`](TotRealTotPos.md#function-totallyrealsubalgebra-algetq)

  - [`TotallyRealUnitGroup(S): AlgEtQOrd → Grp`](TotRealTotPos.md#function-totallyrealunitgroup-algetqord)

  - [`TotallyRealPositiveUnitGroup(S): AlgEtQOrd → Grp`](TotRealTotPos.md#function-totallyrealpositiveunitgroup-algetqord)

- [Printing and Saving](print_save.md)

  - [`PrintSeqAlgEtQElt(seq): SeqEnum[AlgEtQElt] → SeqEnum, MonStgElt`](print_save.md#function-printseqalgetqelt-seqenum-algetqelt)

  - [`PrintWKICM(R): AlgEtQOrd → MonStgElt`](print_save.md#function-printwkicm-algetqord)

  - [`LoadWKICM(str): MonStgElt → AlgEtQOrd`](print_save.md#function-loadwkicm-monstgelt)
