Results on bases of tensor products #
In the file we construct a basis for the base change of a module to an algebra,
and deduce that Module.Free is stable under base change.
Main declarations #
Algebra.TensorProduct.basis: given a basis of a moduleMover a commutative semiringR, and anR-algebraA, this provides a basis forA ⊗[R] MoverA.Algebra.TensorProduct.instFree: ifMis free, then so isA ⊗[R] M.
noncomputable def
Algebra.TensorProduct.basisAux
{R : Type u_1}
(A : Type u_2)
{M : Type uM}
{ι : Type uι}
[CommSemiring R]
[Semiring A]
[Algebra R A]
[AddCommMonoid M]
[Module R M]
(b : Basis ι R M)
:
Given an R-algebra A and an R-basis of M, this is an R-linear isomorphism
A ⊗[R] M ≃ (ι →₀ A) (which is in fact A-linear).
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Algebra.TensorProduct.basisAux_tmul
{R : Type u_1}
{A : Type u_2}
{M : Type uM}
{ι : Type uι}
[CommSemiring R]
[Semiring A]
[Algebra R A]
[AddCommMonoid M]
[Module R M]
(b : Basis ι R M)
(a : A)
(m : M)
:
theorem
Algebra.TensorProduct.basisAux_map_smul
{R : Type u_1}
{A : Type u_2}
{M : Type uM}
{ι : Type uι}
[CommSemiring R]
[Semiring A]
[Algebra R A]
[AddCommMonoid M]
[Module R M]
(b : Basis ι R M)
(a : A)
(x : TensorProduct R A M)
:
noncomputable def
Algebra.TensorProduct.basis
{R : Type u_1}
(A : Type u_2)
{M : Type uM}
{ι : Type uι}
[CommSemiring R]
[Semiring A]
[Algebra R A]
[AddCommMonoid M]
[Module R M]
(b : Basis ι R M)
:
Basis ι A (TensorProduct R A M)
Given a R-algebra A, this is the A-basis of A ⊗[R] M induced by a R-basis of M.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Algebra.TensorProduct.basis_repr_tmul
{R : Type u_1}
{A : Type u_2}
{M : Type uM}
{ι : Type uι}
[CommSemiring R]
[Semiring A]
[Algebra R A]
[AddCommMonoid M]
[Module R M]
(b : Basis ι R M)
(a : A)
(m : M)
:
theorem
Algebra.TensorProduct.basis_repr_symm_apply
{R : Type u_1}
{A : Type u_2}
{M : Type uM}
{ι : Type uι}
[CommSemiring R]
[Semiring A]
[Algebra R A]
[AddCommMonoid M]
[Module R M]
(b : Basis ι R M)
(a : A)
(i : ι)
:
theorem
Basis.baseChange_linearMap
{R : Type u_1}
{M : Type uM}
{ι : Type uι}
[CommSemiring R]
[AddCommMonoid M]
[Module R M]
[Fintype ι]
{ι' : Type u_3}
{N : Type u_4}
[Fintype ι']
[DecidableEq ι']
[AddCommMonoid N]
[Module R N]
(A : Type u_5)
[CommSemiring A]
[Algebra R A]
(b : Basis ι R M)
(b' : Basis ι' R N)
(ij : ι × ι')
:
LinearMap.baseChange A ((b'.linearMap b) ij) = ((Algebra.TensorProduct.basis A b').linearMap (Algebra.TensorProduct.basis A b)) ij
theorem
Basis.baseChange_end
{R : Type u_1}
{M : Type uM}
{ι : Type uι}
[CommSemiring R]
[AddCommMonoid M]
[Module R M]
[Fintype ι]
(A : Type u_5)
[CommSemiring A]
[Algebra R A]
[DecidableEq ι]
(b : Basis ι R M)
(ij : ι × ι)
:
instance
Algebra.TensorProduct.instFree
(R : Type u_3)
(A : Type u_4)
(M : Type u_5)
[CommSemiring R]
[AddCommMonoid M]
[Module R M]
[Module.Free R M]
[CommSemiring A]
[Algebra R A]
:
Module.Free A (TensorProduct R A M)
@[simp]
theorem
LinearMap.toMatrix_baseChange
{R : Type u_1}
{M₁ : Type u_2}
{M₂ : Type u_3}
{ι : Type u_4}
{ι₂ : Type u_5}
(A : Type u_6)
[Fintype ι]
[Finite ι₂]
[DecidableEq ι]
[CommSemiring R]
[CommSemiring A]
[Algebra R A]
[AddCommMonoid M₁]
[Module R M₁]
[AddCommMonoid M₂]
[Module R M₂]
(f : M₁ →ₗ[R] M₂)
(b₁ : Basis ι R M₁)
(b₂ : Basis ι₂ R M₂)
:
(toMatrix (Algebra.TensorProduct.basis A b₁) (Algebra.TensorProduct.basis A b₂)) (baseChange A f) = ((toMatrix b₁ b₂) f).map ⇑(algebraMap R A)