Finite and free modules using matrices #
We provide some instances for finite and free modules involving matrices.
Main results #
Module.Free.linearMap
: ifM
andN
are finite and free, thenM →ₗ[R] N
is free.Module.Finite.ofBasis
: A free module with a basis indexed by aFintype
is finite.Module.Finite.linearMap
: ifM
andN
are finite and free, thenM →ₗ[R] N
is finite.
instance
Module.Free.linearMap
(R : Type u)
(S : Type u')
(M : Type v)
(N : Type w)
[Ring R]
[Ring S]
[AddCommGroup M]
[Module R M]
[Module.Free R M]
[Module.Finite R M]
[AddCommGroup N]
[Module R N]
[Module S N]
[SMulCommClass R S N]
[Module.Free S N]
:
Module.Free S (M →ₗ[R] N)
instance
Module.Finite.linearMap
(R : Type u)
(S : Type u')
(M : Type v)
(N : Type w)
[Ring R]
[Ring S]
[AddCommGroup M]
[Module R M]
[Module.Free R M]
[Module.Finite R M]
[AddCommGroup N]
[Module R N]
[Module S N]
[SMulCommClass R S N]
[Module.Finite S N]
:
Module.Finite S (M →ₗ[R] N)
theorem
Module.rank_linearMap
(R : Type u)
(S : Type u')
(M : Type v)
(N : Type w)
[Ring R]
[Ring S]
[AddCommGroup M]
[Module R M]
[Module.Free R M]
[Module.Finite R M]
[AddCommGroup N]
[Module R N]
[Module S N]
[SMulCommClass R S N]
[StrongRankCondition R]
[StrongRankCondition S]
[Module.Free S N]
:
Module.rank S (M →ₗ[R] N) = Cardinal.lift.{w, v} (Module.rank R M) * Cardinal.lift.{v, w} (Module.rank S N)
theorem
Module.finrank_linearMap
(R : Type u)
(S : Type u')
(M : Type v)
(N : Type w)
[Ring R]
[Ring S]
[AddCommGroup M]
[Module R M]
[Module.Free R M]
[Module.Finite R M]
[AddCommGroup N]
[Module R N]
[Module S N]
[SMulCommClass R S N]
[StrongRankCondition R]
[StrongRankCondition S]
[Module.Free S N]
:
Module.finrank S (M →ₗ[R] N) = Module.finrank R M * Module.finrank S N
The finrank of M →ₗ[R] N
as an S
-module is (finrank R M) * (finrank S N)
.
theorem
Module.rank_linearMap_self
(R : Type u)
(S : Type u')
(M : Type v)
[Ring R]
[Ring S]
[AddCommGroup M]
[Module R M]
[Module.Free R M]
[Module.Finite R M]
[StrongRankCondition R]
[StrongRankCondition S]
[Module R S]
[SMulCommClass R S S]
:
Module.rank S (M →ₗ[R] S) = Cardinal.lift.{u', v} (Module.rank R M)
theorem
Module.finrank_linearMap_self
(R : Type u)
(S : Type u')
(M : Type v)
[Ring R]
[Ring S]
[AddCommGroup M]
[Module R M]
[Module.Free R M]
[Module.Finite R M]
[StrongRankCondition R]
[StrongRankCondition S]
[Module R S]
[SMulCommClass R S S]
:
Module.finrank S (M →ₗ[R] S) = Module.finrank R M
theorem
cardinalMk_algHom_le_rank
(K : Type u_1)
(M : Type u_2)
(L : Type v)
[CommRing K]
[Ring M]
[Algebra K M]
[Module.Free K M]
[Module.Finite K M]
[CommRing L]
[IsDomain L]
[Algebra K L]
:
Cardinal.mk (M →ₐ[K] L) ≤ Cardinal.lift.{v, u_2} (Module.rank K M)
@[deprecated cardinalMk_algHom_le_rank (since := "2024-11-10")]
theorem
cardinal_mk_algHom_le_rank
(K : Type u_1)
(M : Type u_2)
(L : Type v)
[CommRing K]
[Ring M]
[Algebra K M]
[Module.Free K M]
[Module.Finite K M]
[CommRing L]
[IsDomain L]
[Algebra K L]
:
Cardinal.mk (M →ₐ[K] L) ≤ Cardinal.lift.{v, u_2} (Module.rank K M)
Alias of cardinalMk_algHom_le_rank
.
theorem
card_algHom_le_finrank
(K : Type u_1)
(M : Type u_2)
(L : Type v)
[CommRing K]
[Ring M]
[Algebra K M]
[Module.Free K M]
[Module.Finite K M]
[CommRing L]
[IsDomain L]
[Algebra K L]
:
Nat.card (M →ₐ[K] L) ≤ Module.finrank K M
instance
Module.Finite.addMonoidHom
(M : Type v)
(N : Type w)
[AddCommGroup M]
[Module.Finite ℤ M]
[Module.Free ℤ M]
[AddCommGroup N]
[Module.Finite ℤ N]
:
Module.Finite ℤ (M →+ N)
instance
Module.Free.addMonoidHom
(M : Type v)
(N : Type w)
[AddCommGroup M]
[Module.Finite ℤ M]
[Module.Free ℤ M]
[AddCommGroup N]
[Module.Free ℤ N]
:
Module.Free ℤ (M →+ N)
theorem
Matrix.rank_vecMulVec
{K m n : Type u}
[CommRing K]
[Fintype n]
[DecidableEq n]
(w : m → K)
(v : n → K)
:
(Matrix.toLin' (Matrix.vecMulVec w v)).rank ≤ 1