# Series Rings over $p$-Adic Rings

- [Introduction](introduction.md)

  - [Background](introduction.md#background)

  - [Basic Operations](introduction.md#basic-operations)

    - [Creation Intrinsics](introduction.md#creation-intrinsics)

      - [`SnuRing(F, nu): FldPad, FldRatElt → SnuRng`](introduction.md#function-snuring-fldpad-fldratelt)

      - [`SpRing(F, nu): FldPad, FldRatElt → SpRng`](introduction.md#function-spring-fldpad-fldratelt)

      - [`SuRing(F, nu): FldPad, FldRatElt → SuRng`](introduction.md#function-suring-fldpad-fldratelt)

      - [`SnuRing(F): FldPad → SnuRng`](introduction.md#function-snuring-fldpad)

      - [`SpRing(F): FldPad → SpRng`](introduction.md#function-spring-fldpad)

      - [`SuRing(F): FldPad → SuRng`](introduction.md#function-suring-fldpad)

      - [`SnuRing(p, e): RngIntElt, RngIntElt → SnuRng`](introduction.md#function-snuring-rngintelt-rngintelt)

      - [`SnuRing(p): RngIntElt → SnuRng`](introduction.md#function-snuring-rngintelt)

      - [`SpRing(p, e): RngIntElt, RngIntElt → SpRng`](introduction.md#function-spring-rngintelt-rngintelt)

      - [`SpRing(p): RngIntElt → SpRng`](introduction.md#function-spring-rngintelt)

      - [`SuRing(p, e): RngIntElt, RngIntElt → SuRng`](introduction.md#function-suring-rngintelt-rngintelt)

      - [`SuRing(p): RngIntElt → SuRng`](introduction.md#function-suring-rngintelt)

      - [`SnuRing(S, nu): RngSerPow, FldRatElt → SnuRng`](introduction.md#function-snuring-rngserpow-fldratelt)

      - [`SpRing(S, nu): RngSerPow, FldRatElt → SpRng`](introduction.md#function-spring-rngserpow-fldratelt)

      - [`SuRing(S, nu): RngSerLaur, FldRatElt → SuRng`](introduction.md#function-suring-rngserlaur-fldratelt)

      - [`SnuRing(S): SpRng → SnuRng`](introduction.md#function-snuring-sprng)

      - [`SpRing(S): SnuRng → SpRng`](introduction.md#function-spring-snurng)

      - [`SnuRing(S): SuRng → SnuRng`](introduction.md#function-snuring-surng)

      - [`SuRing(S): SnuRng → SuRng`](introduction.md#function-suring-snurng)

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

      - [`R eq S: SnuRng, SnuRng → BoolElt`](introduction.md#operation-op-eq-snurng-snurng)

      - [`R ne S: SnuRng, SnuRng → BoolElt`](introduction.md#operation-op-ne-snurng-snurng)

      - [`R eq S: SpRng, SpRng → BoolElt`](introduction.md#operation-op-eq-sprng-sprng)

      - [`R ne S: SpRng, SpRng → BoolElt`](introduction.md#operation-op-ne-sprng-sprng)

      - [`R eq S: SuRng, SuRng → BoolElt`](introduction.md#operation-op-eq-surng-surng)

      - [`R ne S: SuRng, SuRng → BoolElt`](introduction.md#operation-op-ne-surng-surng)

      - [`Slope(S): SnuRng → RngIntElt`](introduction.md#function-slope-snurng)

      - [`Slope(S): SpRng → RngIntElt`](introduction.md#function-slope-sprng)

      - [`Slope(S): SuRng → RngIntElt`](introduction.md#function-slope-surng)

      - [`Precision(S): SnuRng → RngIntElt`](introduction.md#function-precision-snurng)

      - [`Precision(S): SpRng → RngIntElt`](introduction.md#function-precision-sprng)

      - [`Precision(S): SuRng → RngIntElt`](introduction.md#function-precision-surng)

      - [`CoefficientRing(S): SnuRng → RngIntElt`](introduction.md#function-coefficientring-snurng)

      - [`CoefficientRing(S): SpRng → RngIntElt`](introduction.md#function-coefficientring-sprng)

      - [`CoefficientRing(S): SuRng → RngIntElt`](introduction.md#function-coefficientring-surng)

  - [Element Operations](introduction.md#element-operations)

    - [`Parent(f): SnuElement → SnuRng`](introduction.md#function-parent-snuelement)

    - [`Parent(f): SpElement → SpRng`](introduction.md#function-parent-spelement)

    - [`Parent(f): SuElement → SuRng`](introduction.md#function-parent-suelement)

    - [`IsWeaklyZero(f): SnuElement → BoolElt`](introduction.md#function-isweaklyzero-snuelement)

    - [`IsWeaklyZero(f): SpElement → BoolElt`](introduction.md#function-isweaklyzero-spelement)

    - [`IsWeaklyZero(f): SuElement → BoolElt`](introduction.md#function-isweaklyzero-suelement)

    - [Valuation and Degree](introduction.md#valuation-and-degree)

      - [`GaussValuation(f): SnuElement → FldRatElt`](introduction.md#function-gaussvaluation-snuelement)

      - [`GaussValuation(f): SpElement → FldRatElt`](introduction.md#function-gaussvaluation-spelement)

      - [`GaussValuation(f): SuElement → FldRatElt`](introduction.md#function-gaussvaluation-suelement)

      - [`WeierstrassDegree(f): SnuElement → FldRatElt`](introduction.md#function-weierstrassdegree-snuelement)

      - [`WeierstrassDegree(f): SpElement → FldRatElt`](introduction.md#function-weierstrassdegree-spelement)

      - [`WeierstrassDegree(f): SuElement → FldRatElt`](introduction.md#function-weierstrassdegree-suelement)

      - [`IsDistinguished(f): SnuElement → BoolElt`](introduction.md#function-isdistinguished-snuelement)

      - [`LeadingTerm(f): SnuElement → RngSerPowElt`](introduction.md#function-leadingterm-snuelement)

      - [`LeadingTerm(f): SpElement → RngSerPowElt`](introduction.md#function-leadingterm-spelement)

      - [`LeadingTerm(f): SuElement → RngSerLaurElt`](introduction.md#function-leadingterm-suelement)

      - [`WeierstrassTerm(f): SnuElement → RngSerPowElt`](introduction.md#function-weierstrassterm-snuelement)

      - [`WeierstrassTerm(f): SpElement → RngSerPowElt`](introduction.md#function-weierstrassterm-spelement)

      - [`WeierstrassTerm(f): SuElement → RngSerLaurElt`](introduction.md#function-weierstrassterm-suelement)

      - [`O(x): SnuElement → SnuElement`](introduction.md#function-o-snuelement)

      - [`O(x): SpElement → SpElement`](introduction.md#function-o-spelement)

      - [`O(x): SuElement → SuElement`](introduction.md#function-o-suelement)

      - [`Example: Basic Snu Ring`](introduction.md#example-ex-c0e1cb)

  - [Euclidean Algorithm](introduction.md#euclidean-algorithm)

    - [Intrinsics](introduction.md#intrinsics)

      - [`WeierstrassPreparation(f): SnuElement → SnuElement, SnuElement`](introduction.md#function-weierstrasspreparation-snuelement)

      - [`Quotrem(A, B): SnuElement, SnuElement → SnuElement, SnuElement`](introduction.md#function-quotrem-snuelement-snuelement)

      - [`Quotrem(A, B): SpElement, SpElement → SpElement, SpElement`](introduction.md#function-quotrem-spelement-spelement)

      - [`Quotrem(A, B): SuElement, SuElement → SuElement, SuElement`](introduction.md#function-quotrem-suelement-suelement)

      - [`ExtendedGcd(A, B): SnuElement, SnuElement → SnuElement, SnuElement, SnuElement, SnuElement, SnuElement, SnuElement`](introduction.md#function-extendedgcd-snuelement-snuelement)

      - [`ExtendedGcd(A, B): SpElement, SpElement → SpElement, SpElement, SpElement, SpElement, SpElement, SpElement`](introduction.md#function-extendedgcd-spelement-spelement)

      - [`ExtendedGcd(A, B): SuElement, SuElement → SuElement, SuElement, SuElement, SuElement, SuElement, SuElement`](introduction.md#function-extendedgcd-suelement-suelement)

      - [`CanonicalElement(S, v): SuRng, FldRatElt → SuElement`](introduction.md#function-canonicalelement-surng-fldratelt)

      - [`Example: Euclidean Basics`](introduction.md#example-ex-db44fa)

- [Matrices and Modules](matrices-modules.md)

  - [Matrices](matrices-modules.md#matrices)

    - [`SpMatrixSpace(S, r, c): SpRng, RngIntElt, RngIntElt → SpMatRng`](matrices-modules.md#function-spmatrixspace-sprng-rngintelt-rngintelt)

    - [`SuMatrixSpace(S, r, c): SuRng, RngIntElt, RngIntElt → SuMatRng`](matrices-modules.md#function-sumatrixspace-surng-rngintelt-rngintelt)

    - [`IdentityMatrix(S, n): SpRng, RngIntElt → SpMat`](matrices-modules.md#function-identitymatrix-sprng-rngintelt)

    - [`IdentityMatrix(S): SpMatRng → SpMat`](matrices-modules.md#function-identitymatrix-spmatrng)

    - [`ZeroMatrix(S): SpMatRng → SpMat`](matrices-modules.md#function-zeromatrix-spmatrng)

    - [`ZeroMatrix(S, n): SpRng, RngIntElt → SpMat`](matrices-modules.md#function-zeromatrix-sprng-rngintelt)

    - [`ZeroMatrix(S, r, c): SpRng, RngIntElt, RngIntElt → SpMat`](matrices-modules.md#function-zeromatrix-sprng-rngintelt-rngintelt)

    - [`IdentityMatrix(S, n): SuRng, RngIntElt → SuMat`](matrices-modules.md#function-identitymatrix-surng-rngintelt)

    - [`IdentityMatrix(S): SuMatRng → SuMat`](matrices-modules.md#function-identitymatrix-sumatrng)

    - [`ZeroMatrix(S): SuMatRng → SuMat`](matrices-modules.md#function-zeromatrix-sumatrng)

    - [`ZeroMatrix(S, n): SuRng, RngIntElt → SuMat`](matrices-modules.md#function-zeromatrix-surng-rngintelt)

    - [`ZeroMatrix(S, r, c): SuRng, RngIntElt, RngIntElt → SuMat`](matrices-modules.md#function-zeromatrix-surng-rngintelt-rngintelt)

    - [`SpMatrix(A): SeqEnum → SpMat`](matrices-modules.md#function-spmatrix-seqenum)

    - [`SpMatrix(r, c, A): RngIntElt, RngIntElt, SeqEnum → SpMat`](matrices-modules.md#function-spmatrix-rngintelt-rngintelt-seqenum)

    - [`SpMatrix(v): SeqEnum → SpMat`](matrices-modules.md#function-spmatrix-seqenum-2)

    - [`SpMatrix(A): SeqEnum → SpMat`](matrices-modules.md#function-spmatrix-seqenum-3)

    - [`SuMatrix(r, c, A): RngIntElt, RngIntElt, SeqEnum → SuMat`](matrices-modules.md#function-sumatrix-rngintelt-rngintelt-seqenum)

    - [`SuMatrix(v): SeqEnum → SuMat`](matrices-modules.md#function-sumatrix-seqenum)

    - [`GaussValuations(M): SpMat → SeqEnum`](matrices-modules.md#function-gaussvaluations-spmat)

    - [`GaussValuations(M): SuMat → SeqEnum`](matrices-modules.md#function-gaussvaluations-sumat)

    - [`WeierstrassDegrees(M): SpMat → SeqEnum`](matrices-modules.md#function-weierstrassdegrees-spmat)

    - [`WeierstrassDegrees(M): SuMat → SeqEnum`](matrices-modules.md#function-weierstrassdegrees-sumat)

    - [`LeadingTerms(M): SpMat → Mtrx`](matrices-modules.md#function-leadingterms-spmat)

    - [`LeadingTerms(M): SuMat → Mtrx`](matrices-modules.md#function-leadingterms-sumat)

    - [`WeierstrassTerms(M): SpMat → Mtrx`](matrices-modules.md#function-weierstrassterms-spmat)

    - [`WeierstrassTerms(M): SuMat → Mtrx`](matrices-modules.md#function-weierstrassterms-sumat)

    - [`IsWeaklyZero(M): SpMat → BoolElt`](matrices-modules.md#function-isweaklyzero-spmat)

    - [`IsWeaklyZero(M): SuMat → BoolElt`](matrices-modules.md#function-isweaklyzero-sumat)

    - [`EchelonForm(M): SpMat → SpMat, SpMat`](matrices-modules.md#function-echelonform-spmat)

    - [`EchelonForm(M): SuMat → SuMat, SuMat`](matrices-modules.md#function-echelonform-sumat)

    - [`HermiteForm(M): SpMat → SpMat, SpMat`](matrices-modules.md#function-hermiteform-spmat)

    - [`HermiteForm(M): SuMat → SuMat, SuMat`](matrices-modules.md#function-hermiteform-sumat)

    - [`SmithForm(M): SpMat → SpMat, SpMat, SpMat`](matrices-modules.md#function-smithform-spmat)

    - [`SmithForm(M): SuMat → SuMat, SuMat, SuMat`](matrices-modules.md#function-smithform-sumat)

    - [`Kernel(M): SpMat → SpSpc`](matrices-modules.md#function-kernel-spmat)

    - [`Kernel(M): SuMat → SuSpc`](matrices-modules.md#function-kernel-sumat)

    - [`Image(M): SpMat → SpSpc`](matrices-modules.md#function-image-spmat)

    - [`Image(M): SuMat → SuSpc`](matrices-modules.md#function-image-sumat)

    - [`Example: Sp Matrices`](matrices-modules.md#example-ex-8c19ad)

    - [`Example: Su Matrices`](matrices-modules.md#example-ex-970ed4)

  - [Modules](matrices-modules.md#modules)

    - [`SpSpace(R, n): SpRng, RngIntElt → SpSpc`](matrices-modules.md#function-spspace-sprng-rngintelt)

    - [`SuSpace(R, n): SuRng, RngIntElt → SuSpc`](matrices-modules.md#function-suspace-surng-rngintelt)

    - [`SpSpace(M): SpMat → SpSpc`](matrices-modules.md#function-spspace-spmat)

    - [`SuSpace(M): SuMat → SuSpc`](matrices-modules.md#function-suspace-sumat)

    - [`SpSpace(v): SeqEnum → SpSpc`](matrices-modules.md#function-spspace-seqenum)

    - [`SuSpace(v): SeqEnum → SuSpc`](matrices-modules.md#function-suspace-seqenum)

    - [`Ambient(S): SpSpc → SpSpc`](matrices-modules.md#function-ambient-spspc)

    - [`Ambient(S): SuSpc → SuSpc`](matrices-modules.md#function-ambient-suspc)

    - [`Parent(v): SpVec → SpSpc`](matrices-modules.md#function-parent-spvec)

    - [`Parent(v): SuVec → SuSpc`](matrices-modules.md#function-parent-suvec)

    - [`ZeroVector(S): SpSpc → SpVec`](matrices-modules.md#function-zerovector-spspc)

    - [`ZeroVector(S): SuSpc → SuVec`](matrices-modules.md#function-zerovector-suspc)

    - [`SpVector(e): SeqEnum → SpVec`](matrices-modules.md#function-spvector-seqenum)

    - [`SuVector(e): SeqEnum → SuVec`](matrices-modules.md#function-suvector-seqenum)

    - [`Basis(S): SpSpc → SeqEnum`](matrices-modules.md#function-basis-spspc)

    - [`Basis(S): SuSpc → SeqEnum`](matrices-modules.md#function-basis-suspc)

    - [`BasisMatrix(S): SpSpc → SpMat`](matrices-modules.md#function-basismatrix-spspc)

    - [`BasisMatrix(S): SuSpc → SuMat`](matrices-modules.md#function-basismatrix-suspc)

    - [`Dimension(S): SpSpc → RngIntElt`](matrices-modules.md#function-dimension-spspc)

    - [`Dimension(S): SuSpc → RngIntElt`](matrices-modules.md#function-dimension-suspc)

    - [`Degree(S): SpSpc → RngIntElt`](matrices-modules.md#function-degree-spspc)

    - [`Degree(S): SuSpc → RngIntElt`](matrices-modules.md#function-degree-suspc)

    - [`LeadingTerms(v): SpVec → ModTupRngElt`](matrices-modules.md#function-leadingterms-spvec)

    - [`LeadingTerms(v): SuVec → ModTupRngElt`](matrices-modules.md#function-leadingterms-suvec)

    - [`WeierstrassTerms(v): SpVec → ModTupRngElt`](matrices-modules.md#function-weierstrassterms-spvec)

    - [`WeierstrassTerms(v): SuVec → ModTupRngElt`](matrices-modules.md#function-weierstrassterms-suvec)

    - [`GaussValuations(v): SpVec → SeqEnum`](matrices-modules.md#function-gaussvaluations-spvec)

    - [`GaussValuations(v): SuVec → SeqEnum`](matrices-modules.md#function-gaussvaluations-suvec)

    - [`WeierstrassDegrees(v): SpVec → SeqEnum`](matrices-modules.md#function-weierstrassdegrees-spvec)

    - [`WeierstrassDegrees(v): SuVec → SeqEnum`](matrices-modules.md#function-weierstrassdegrees-suvec)

    - [`IsWeaklyZero(v): SpVec → BoolElt`](matrices-modules.md#function-isweaklyzero-spvec)

    - [`IsWeaklyZero(v): SuVec → BoolElt`](matrices-modules.md#function-isweaklyzero-suvec)

    - [`M1 + M2: SpSpc, SpSpc → SpSpc`](matrices-modules.md#operation-op-plus-spspc-spspc)

    - [`M1 + M2: SuSpc, SuSpc → SuSpc`](matrices-modules.md#operation-op-plus-suspc-suspc)

    - [`DirectSum(M1, M2): SpSpc, SpSpc → SpSpc`](matrices-modules.md#function-directsum-spspc-spspc)

    - [`DirectSum(M1, M2): SuSpc, SuSpc → SuSpc`](matrices-modules.md#function-directsum-suspc-suspc)

    - [`M1 meet M2: SpSpc, SpSpc → SpSpc`](matrices-modules.md#operation-op-meet-spspc-spspc)

    - [`M1 meet M2: SuSpc, SuSpc → SuSpc`](matrices-modules.md#operation-op-meet-suspc-suspc)

    - [`S * M: SpSpc, SpMat → SpSpc`](matrices-modules.md#operation-op-times-spspc-spmat)

    - [`S * M: SuSpc, SuMat → SuSpc`](matrices-modules.md#operation-op-times-suspc-sumat)

    - [`IsConsistent(M, v): SpMat, SpVec → BoolElt, SpVec`](matrices-modules.md#function-isconsistent-spmat-spvec)

    - [`IsConsistent(M, v): SuMat, SuVec → BoolElt, SuVec`](matrices-modules.md#function-isconsistent-sumat-suvec)

    - [`IsConsistent(M, e): SpMat, SeqEnum → BoolElt, SeqEnum`](matrices-modules.md#function-isconsistent-spmat-seqenum)

    - [`IsConsistent(M, e): SuMat, SeqEnum → BoolElt, SeqEnum`](matrices-modules.md#function-isconsistent-sumat-seqenum)

    - [`IsConsistent(M, W): SpMat, SpMat → BoolElt, SpMat, SpMat`](matrices-modules.md#function-isconsistent-spmat-spmat)

    - [`IsConsistent(M, W): SuMat, SpMat → BoolElt, SuMat, SuMat`](matrices-modules.md#function-isconsistent-sumat-spmat)

    - [`v in M: SpVec, SpMat → BoolElt, SpVec`](matrices-modules.md#operation-op-in-spvec-spmat)

    - [`v in M: SuVec, SpMat → BoolElt, SuVec`](matrices-modules.md#operation-op-in-suvec-spmat)

    - [`IsSubspace(A, B): SpSpc, SpSpc → BoolElt, SpMat`](matrices-modules.md#function-issubspace-spspc-spspc)

    - [`IsSubspace(A, B): SuSpc, SuSpc → BoolElt, SuMat`](matrices-modules.md#function-issubspace-suspc-suspc)

    - [`Example: Sp Mod Basics`](matrices-modules.md#example-ex-3f4950)

    - [`Example: Sp Kernel`](matrices-modules.md#example-ex-76e436)

    - [`Example: Su Module`](matrices-modules.md#example-ex-9b9567)
