Finite and free modules #
We provide some instances for finite and free modules.
Main results #
module.free.choose_basis_index.fintype
: If a free module is finite, then any basis is finite.module.free.linear_map.free
: ifM
andN
are finite and free, thenM →ₗ[R] N
is free.module.finite.of_basis
: A free module with a basis indexed by afintype
is finite.module.free.linear_map.module.finite
: ifM
andN
are finite and free, thenM →ₗ[R] N
is finite.
@[protected, instance]
noncomputable
def
module.free.choose_basis_index.fintype
(R : Type u)
(M : Type v)
[ring R]
[add_comm_group M]
[module R M]
[module.free R M]
[nontrivial R]
[module.finite R M] :
If a free module is finite, then any basis is finite.
Equations
- module.free.choose_basis_index.fintype R M = _.dcases_on (λ (h : ⊤.fg), (λ (_x : submodule.span R ↑(classical.some h) = ⊤), basis_fintype_of_finite_spans ↑(classical.some h) _x (module.free.choose_basis R M)) _)
@[protected, instance]
def
module.free.linear_map.free
(R : Type u)
(M : Type v)
(N : Type w)
[comm_ring R]
[add_comm_group M]
[module R M]
[module.free R M]
[add_comm_group N]
[module R N]
[module.free R N]
[nontrivial R]
[module.finite R M]
[module.finite R N] :
module.free R (M →ₗ[R] N)
theorem
module.finite.of_basis
{R : Type u_1}
{M : Type u_2}
{ι : Type u_3}
[comm_ring R]
[add_comm_group M]
[module R M]
[fintype ι]
(b : basis ι R M) :
module.finite R M
A free module with a basis indexed by a fintype
is finite.
@[protected, instance]
def
module.finite.matrix
{R : Type u}
[comm_ring R]
{ι₁ : Type u_1}
[fintype ι₁]
{ι₂ : Type u_2}
[fintype ι₂] :
module.finite R (matrix ι₁ ι₂ R)
@[protected, instance]
def
module.free.linear_map.module.finite
{R : Type u}
{M : Type v}
(N : Type w)
[comm_ring R]
[add_comm_group M]
[module R M]
[module.free R M]
[add_comm_group N]
[module R N]
[module.free R N]
[nontrivial R]
[module.finite R M]
[module.finite R N] :
module.finite R (M →ₗ[R] N)
@[protected, instance]
def
module.free.add_monoid_hom.module.finite
(M : Type v)
(N : Type w)
[add_comm_group M]
[module.finite ℤ M]
[module.free ℤ M]
[add_comm_group N]
[module.finite ℤ N]
[module.free ℤ N] :
module.finite ℤ (M →+ N)
@[protected, instance]
def
module.free.add_monoid_hom.free
(M : Type v)
(N : Type w)
[add_comm_group M]
[module.finite ℤ M]
[module.free ℤ M]
[add_comm_group N]
[module.finite ℤ N]
[module.free ℤ N] :
module.free ℤ (M →+ N)