# Free Modules

- [Introduction](introduction.md)

  - [Free Modules](introduction.md#free-modules)

  - [Module Categories](introduction.md#module-categories)

  - [Presentation of Submodules](introduction.md#presentation-of-submodules)

  - [Notation](introduction.md#notation)

- [Definition of a Module](creation-module.md)

  - [Construction of Modules of $n$-tuples](creation-module.md#construction-of-modules-of-n-tuples)

    - [`RSpace(R, n): Rng, RngIntElt → ModTupRng`](creation-module.md#function-modrng-rspace)

    - [`RModule(R, n): Rng, RngIntElt → ModRng`](creation-module.md#function-modrng-rmodule)

    - [`RSpace(R, n, F): Rng, RngIntElt, Mtrx → ModTupRng`](creation-module.md#function-rspace-rng-rngintelt-mtrx)

    - [`Example: Create Z6`](creation-module.md#example-ex-d42492)

  - [Construction of Modules of $m \times n$ Matrices](creation-module.md#construction-of-modules-of-m-times-n-matrices)

    - [`RMatrixSpace(R, m, n): Rng, RngIntElt, RngIntElt → ModMatRng`](creation-module.md#function-rmatrixspace-rng-rngintelt-rngintelt)

  - [Construction of a Module with Specified Basis](creation-module.md#construction-of-a-module-with-specified-basis)

    - [`RModuleWithBasis(Q): [ModFldElt] → ModFld`](creation-module.md#function-rmodulewithbasis-modfldelt)

    - [`RSpaceWithBasis(Q): [ModTupRngElt] → ModTupRng`](creation-module.md#function-rspacewithbasis-modtuprngelt)

    - [`RSpaceWithBasis(a): AlgMatElt → ModTupRng`](creation-module.md#function-rspacewithbasis-algmatelt)

    - [`RSpaceWithBasis(a): ModMatRngElt → ModTupRng`](creation-module.md#function-rspacewithbasis-modmatrngelt)

    - [`RMatrixSpaceWithBasis(Q): [ModTupRngElt] → ModMatRng`](creation-module.md#function-rmatrixspacewithbasis-modtuprngelt)

- [Accessing Module Information](access.md)

  - [`M . i: ModTupRng, RngIntElt → ModElt`](access.md#operation-operation-modtuprng-rngintelt-modelt)

  - [`CoefficientRing(M): ModTupRng → Rng`](access.md#function-coefficientring-modtuprng)

  - [`BaseRing(M): ModTupRng → Rng`](access.md#function-basering-modtuprng)

  - [`CoefficientRing(M): ModRng → Rng`](access.md#function-coefficientring-modrng)

  - [`BaseRing(M): ModRng → Rng`](access.md#function-basering-modrng)

  - [`CoefficientField(M): ModFld → Fld`](access.md#function-coefficientfield-modfld)

  - [`BaseField(M): ModFld → Fld`](access.md#function-basefield-modfld)

  - [`Generators(M): ModTupRng → { ModTupRngElt }`](access.md#function-generators-modtuprng)

  - [`OverDimension(M): ModTupRng → RngIntElt`](access.md#function-overdimension-modtuprng)

  - [`OverDimension(u): ModTupRngElt → RngIntElt`](access.md#function-overdimension-modtuprngelt)

  - [`Moduli(M): ModTupRng → [ RngElt ]`](access.md#function-moduli-modtuprng)

  - [`Parent(u): ModTupRngElt → ModRng`](access.md#function-parent-modtuprngelt)

  - [`Generic(M): ModRng → ModRng`](access.md#function-generic-modrng)

- [Standard Constructions](operation.md)

  - [Changing the Coefficient Ring](operation.md#changing-the-coefficient-ring)

    - [`ChangeRing(M, S): ModRng, Rng → ModRng, Map`](operation.md#function-changering-modrng-rng)

    - [`ChangeRing(M, S, f): ModRng, Rng, Map → ModRng, Map`](operation.md#function-changering-modrng-rng-map)

    - [`ChangeUniverse(~x, R): ModTupRngElt, Rng → ModRng, Map`](operation.md#function-changeuniverse-modtuprngelt-rng-ref)

  - [Direct Sums](operation.md#direct-sums)

    - [`DirectSum(M, N): ModRng, ModRng → ModRng, Map, Map, Map, Map`](operation.md#function-directsum-modrng-modrng)

    - [`DirectSum(Q): [ ModRng ] → [ ModRng ], [ Map ], [ Map ]`](operation.md#function-directsum-modrng)

- [Construction of Elements](creation.md)

  - [`elt< M | a₁, ..., aₙ >: ModTupRng, List → ModTupRngElt`](creation.md#constructor-constructor-elt-modtuprng-list-modtuprngelt)

  - [`M ! Q: ModTupRng, [RngElt] → ModTupRngElt`](creation.md#operation-op-modtuprng-rngelt)

  - [`CharacteristicVector(M, S): ModRng, { RngIntElt } → ModRngElt`](creation.md#function-characteristicvector-modrng-rngintelt)

  - [`Zero(M): ModRng → ModRngElt`](creation.md#function-zero-modrng)

  - [`M ! 0: ModRng, RngIntElt → ModRngElt`](creation.md#operation-op-modrng-rngintelt)

  - [`Random(M): ModRng → ModRngElt`](creation.md#function-random-modrng)

  - [`Example: Elements`](creation.md#example-ex-cd5034)

  - [Deconstruction of Elements](creation.md#deconstruction-of-elements)

    - [`ElementToSequence(u): ModTupRngElt → [RngElt]`](creation.md#function-elementtosequence-modtuprngelt)

    - [`Eltseq(u): ModTupRngElt → [RngElt]`](creation.md#function-eltseq-modtuprngelt)

  - [Operations on Module Elements](creation.md#operations-on-module-elements)

    - [Arithmetic](creation.md#arithmetic)

      - [`u + v: ModTupRngElt, ModTupRngElt → ModTupRngElt`](creation.md#operation-op-plus-modtuprngelt-modtuprngelt)

      - [`- u: ModTupRngElt → ModTupRngElt`](creation.md#operation-operation-modtuprngelt-modtuprngelt)

      - [`u - v: ModTupRngElt, ModTupRngElt → ModTupRngElt`](creation.md#operation-op-minus-modtuprngelt-modtuprngelt)

      - [`x * u: RngElt, ModTupRngElt → ModTupRngElt`](creation.md#operation-op-times-rngelt-modtuprngelt)

      - [`u * x: ModTupRngElt, RngElt → ModTupRngElt`](creation.md#operation-op-times-modtuprngelt-rngelt)

      - [`u / x: ModTupRngElt, RngElt → ModTupRngElt`](creation.md#operation-op-div-modtuprngelt-rngelt)

    - [Indexing](creation.md#indexing)

      - [`u[i]: ModTupRngElt, RngIntElt → RngElt`](creation.md#indexed-indexed-u-modtuprngelt-rngintelt-rngelt)

      - [`u[i] := x: ModTupRngElt, RngIntElt, RngElt → ModTupRngElt`](creation.md#literal-literal-u-i-x-modtuprngelt-rngintelt-rngelt-modtuprngelt)

    - [Normalization](creation.md#normalization)

      - [`Normalize(u): ModTupRngElt → ModTupRngElt`](creation.md#function-normalize-modtuprngelt)

      - [`Normalise(u): ModTupRngElt → ModTupRngElt`](creation.md#function-normalise-modtuprngelt)

      - [`Rotate(u, k): ModTupRngElt, RngIntElt → ModTupRngElt`](creation.md#function-rotate-modtuprngelt-rngintelt)

      - [`Rotate(~u, k): ModTupRngElt, RngIntElt`](creation.md#function-rotate-modtuprngelt-rngintelt-ref)

      - [`Example: Operations`](creation.md#example-ex-8a5f2c)

  - [Properties of Vectors](creation.md#properties-of-vectors)

    - [`IsZero(u): ModTupRngElt → BoolElt`](creation.md#function-iszero-modtuprngelt)

    - [`Depth(v): ModTupRngElt → RngIntElt`](creation.md#function-depth-modtuprngelt)

    - [`Support(u): ModTupRngElt → { RngElt }`](creation.md#function-support-modtuprngelt)

    - [`Weight(u): ModTupRngElt → RngIntElt`](creation.md#function-weight-modtuprngelt)

  - [Inner Products](creation.md#inner-products)

    - [`(u, v): ModTupRngElt, ModTupRngElt → RngElt`](creation.md#literal-literal-u-v-modtuprngelt-modtuprngelt-rngelt)

    - [`InnerProduct(u, v): ModTupRngElt, ModTupRngElt → RngElt`](creation.md#function-innerproduct-modtuprngelt-modtuprngelt)

    - [`Norm(u): ModTupRngElt → RngElt`](creation.md#function-norm-modtuprngelt)

- [Bases](basis.md)

  - [`Basis(M): ModTupRng → [ModTupRngElt]`](basis.md#function-basis-modtuprng)

  - [`Rank(M): ModTupRng → RngIntElt`](basis.md#function-rank-modtuprng)

  - [`Coordinates(M, u): ModTupRng, ModTupRngElt → [RngElt]`](basis.md#function-coordinates-modtuprng-modtuprngelt)

- [Submodules](submodule.md)

  - [Construction of Submodules](submodule.md#construction-of-submodules)

    - [`sub<M | L>: ModTupRng, List → ModTupRng`](submodule.md#constructor-constructor-sub-modtuprng-list-modtuprng)

    - [`sub<M | L>: ModMatRng, List → ModMatRng`](submodule.md#constructor-constructor-sub-modmatrng-list-modmatrng)

    - [`Example: Submodule`](submodule.md#example-ex-e4a021)

  - [Operations on Submodules](submodule.md#operations-on-submodules)

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

    - [`u in M: ModTupRngElt, ModTupRng → BoolElt`](submodule.md#operation-op-in-modtuprngelt-modtuprng)

    - [`u in M: ModMatRngElt, ModMatRng → BoolElt`](submodule.md#operation-op-in-modmatrngelt-modmatrng)

    - [`u notin M: ModTupRngElt, ModTupRng → BoolElt`](submodule.md#operation-op-notin-modtuprngelt-modtuprng)

    - [`u notin M: ModMatRngElt, ModMatRng → BoolElt`](submodule.md#operation-op-notin-modmatrngelt-modmatrng)

    - [`N subset M: ModTupRng, ModTupRng → BoolElt`](submodule.md#operation-op-subset-modtuprng-modtuprng)

    - [`N subset M: ModMatRng, ModMatRng → BoolElt`](submodule.md#operation-op-subset-modmatrng-modmatrng)

    - [`N notsubset M: ModTupRng, ModTupRng → BoolElt`](submodule.md#operation-operation-notsubset-modtuprng-modtuprng-boolelt)

    - [`N notsubset M: ModMatRng, ModMatRng → BoolElt`](submodule.md#operation-operation-notsubset-modmatrng-modmatrng-boolelt)

    - [`N eq M: ModTupRng, ModTupRng → BoolElt`](submodule.md#operation-op-eq-modtuprng-modtuprng)

    - [`M eq N: ModMatRng, ModMatRng → BoolElt`](submodule.md#operation-op-eq-modmatrng-modmatrng)

    - [`N ne M: ModTupRng, ModTupRng → BoolElt`](submodule.md#operation-op-ne-modtuprng-modtuprng)

    - [`M ne N: ModMatRng, ModMatRng → BoolElt`](submodule.md#operation-op-ne-modmatrng-modmatrng)

  - [Operations on Submodules](submodule.md#id1)

    - [`M + N: ModTupRng, ModTupRng → ModTupRng`](submodule.md#operation-op-plus-modtuprng-modtuprng)

    - [`M + N: ModMatRng, ModMatRng → ModMatRng`](submodule.md#operation-op-plus-modmatrng-modmatrng)

    - [`M meet N: ModTupRng, ModTupRng → ModTupRng`](submodule.md#operation-op-meet-modtuprng-modtuprng)

    - [`M meet N: ModMatRng, ModMatRng → ModMatRng`](submodule.md#operation-op-meet-modmatrng-modmatrng)

- [Quotient Modules](quotient.md)

  - [Construction of Quotient Modules](quotient.md#construction-of-quotient-modules)

    - [`quo<M | L>: ModTupRng, List → ModTupRng`](quotient.md#constructor-constructor-quo-modtuprng-list-modtuprng)

    - [`quo<M | L>: ModMatRng, List → ModMatRng`](quotient.md#constructor-constructor-quo-modmatrng-list-modmatrng)

- [Homomorphisms](homomorphisms.md)

  - [${\operatorname{Hom}}_{R}(M, N)$ for $R$-modules](homomorphisms.md#operatorname-hom-r-m-n-for-r-modules)

    - [`Hom(M, N): ModTupRng, ModTupRng → ModMatRng`](homomorphisms.md#function-hom-modtuprng-modtuprng)

    - [`RMatrixSpace(R, m, n): Rng, RngIntElt, RngIntElt → ModMatRng`](homomorphisms.md#function-rmatrixspace-rng-rngintelt-rngintelt-2)

    - [`Example: Create`](homomorphisms.md#example-ex-bf6e98)

  - [${\operatorname{Hom}}_{R}(M, N)$ for Matrix Modules](homomorphisms.md#operatorname-hom-r-m-n-for-matrix-modules)

    - [`Hom(M, N, "right"): ModMatRng, ModMatRng, MonStgElt → ModMatRng`](homomorphisms.md#function-hom-modmatrng-modmatrng-monstgelt)

    - [`Hom(M, N, "left"): ModMatRng, ModMatRng, MonStgElt → ModMatRng`](homomorphisms.md#function-hom-modmatrng-modmatrng-monstgelt-2)

    - [`Example: Create Hom`](homomorphisms.md#example-ex-e3a29e)

  - [Modules ${\operatorname{Hom}}_{R}(M, N)$ with Given Basis](homomorphisms.md#modules-operatorname-hom-r-m-n-with-given-basis)

    - [`RMatrixSpaceWithBasis(Q): [ ModMatRngElt ] → ModMatRng`](homomorphisms.md#function-rmatrixspacewithbasis-modmatrngelt)

    - [`KMatrixSpaceWithBasis(Q): [ ModMatRngElt ] → ModMatRng`](homomorphisms.md#function-kmatrixspacewithbasis-modmatrngelt)

  - [The Endomorphism Ring](homomorphisms.md#the-endomorphism-ring)

    - [`EndomorphismAlgebra(M): ModTupRng → AlgMat`](homomorphisms.md#function-endomorphismalgebra-modtuprng)

    - [`Example: Create Hom`](homomorphisms.md#example-ex-7acde1)

  - [The Reduced Form of a Matrix Module](homomorphisms.md#the-reduced-form-of-a-matrix-module)

    - [`Reduce(H): ModMatRng → ModMatRng, Map`](homomorphisms.md#function-reduce-modmatrng)

    - [`Example: Reduce`](homomorphisms.md#example-ex-ecaba6)

    - [`Example: Reduce Hom`](homomorphisms.md#example-ex-4c472d)

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

    - [`M ! Q: ModMatRng, [RngElt] → ModMatRngElt`](homomorphisms.md#operation-op-modmatrng-rngelt)

    - [`Example: Matrix`](homomorphisms.md#example-ex-9b8959)

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

    - [`u * a: ModTupRngElt, ModMatRngElt → ModTupRngElt`](homomorphisms.md#operation-op-times-modtuprngelt-modmatrngelt)

    - [`a(u): ModTupRngElt, ModMatRngElt → ModTupRngElt`](homomorphisms.md#literal-a-modtuprngelt-modmatrngelt)

    - [`a * b: ModMatRngElt, ModMatRngElt → ModMatRngElt`](homomorphisms.md#operation-op-times-modmatrngelt-modmatrngelt)

    - [`a ^ -1: ModMatRngElt, RngIntElt → ModMatRngElt`](homomorphisms.md#operation-op-pow-modmatrngelt-rngintelt)

    - [`Codomain(S): ModMatRng → ModTupRng`](homomorphisms.md#function-codomain-modmatrng)

    - [`Codomain(a): ModMatRngElt → ModTupRng`](homomorphisms.md#function-codomain-modmatrngelt)

    - [`Cokernel(a): ModMatRngElt → ModTupRng`](homomorphisms.md#function-cokernel-modmatrngelt)

    - [`Domain(S): ModMatRng → ModTupRng`](homomorphisms.md#function-domain-modmatrng)

    - [`Domain(a): ModMatRngElt → ModTupRng`](homomorphisms.md#function-domain-modmatrngelt)

    - [`Image(a): ModMatRngElt → ModTupRng`](homomorphisms.md#function-image-modmatrngelt)

    - [`Kernel(a): ModMatRngElt → ModTupRng`](homomorphisms.md#function-kernel-modmatrngelt)

    - [`NullSpace(a): ModMatRngElt → ModTupRng`](homomorphisms.md#function-nullspace-modmatrngelt)

    - [`Morphism(M, N): ModTupRng, ModTupRng → ModMatRngElt`](homomorphisms.md#function-morphism-modtuprng-modtuprng)

    - [`Rank(a): ModMatRngElt → RngIntElt`](homomorphisms.md#function-rank-modmatrngelt)

    - [`IsBijective(a): ModMatRngElt → BoolElt`](homomorphisms.md#function-isbijective-modmatrngelt)

    - [`IsInjective(a): ModMatRngElt → BoolElt`](homomorphisms.md#function-isinjective-modmatrngelt)

    - [`IsSurjective(a): ModMatRngElt → BoolElt`](homomorphisms.md#function-issurjective-modmatrngelt)

    - [`Example: Operations`](homomorphisms.md#example-ex-85af3b)
