Base change for the dual of a module #
Module.Dual.congr: equivalent modules have equivalent duals.
If f : Module.Dual R V and Algebra R A, then
Module.Dual.baseChange A fis the element ofModule.Dual A (A ⊗[R] V)deduced by base change.Module.Dual.baseChangeHomis theR-linear map given byModule.Dual.baseChange.IsBaseChange.dual: for finite free modules, taking dual commutes with base change.
def
Module.Dual.congr
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
(e : V ≃ₗ[R] W)
:
Equivalent modules have equivalent duals.
Equations
- Module.Dual.congr e = LinearEquiv.congrLeft R R e
Instances For
@[simp]
theorem
Module.Dual.congr_apply_apply
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
(e : V ≃ₗ[R] W)
(a✝ : V →ₗ[R] R)
(a✝¹ : W)
:
@[simp]
theorem
Module.Dual.congr_symm_apply_apply
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
(e : V ≃ₗ[R] W)
(a✝ : W →ₗ[R] R)
(a✝¹ : V)
:
def
Module.Dual.baseChange
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
(A : Type u_4)
[CommSemiring A]
[Algebra R A]
:
LinearMap.baseChange for Module.Dual.
Equations
- Module.Dual.baseChange A = LinearMap.compRight R ↑(TensorProduct.AlgebraTensorModule.rid R A A) ∘ₗ LinearMap.baseChangeHom R A V R
Instances For
@[simp]
theorem
Module.Dual.baseChange_apply_tmul
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
(A : Type u_4)
[CommSemiring A]
[Algebra R A]
(f : Dual R V)
(a : A)
(v : V)
:
theorem
Module.Dual.baseChange_baseChange
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
(A : Type u_4)
[CommSemiring A]
[Algebra R A]
{B : Type u_5}
[CommSemiring B]
[Algebra R B]
[Algebra A B]
[IsScalarTower R A B]
(f : Dual R V)
:
(baseChange B) ((baseChange A) f) = (congr (TensorProduct.AlgebraTensorModule.cancelBaseChange R A B B V)).symm ((baseChange B) f)
noncomputable def
IsBaseChange.toDual
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
{A : Type u_4}
[CommSemiring A]
[Algebra R A]
[Module A W]
[IsScalarTower R A W]
{j : V →ₗ[R] W}
(ibc : IsBaseChange A j)
:
The base change of an element of the dual.
Equations
- ibc.toDual = ibc.linearMapLeftRightHom (Algebra.linearMap R A)
Instances For
theorem
IsBaseChange.toDual_comp_apply
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
{A : Type u_4}
[CommSemiring A]
[Algebra R A]
[Module A W]
[IsScalarTower R A W]
{j : V →ₗ[R] W}
(ibc : IsBaseChange A j)
(f : Module.Dual R V)
(v : V)
:
theorem
IsBaseChange.toDual_apply
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
{A : Type u_4}
[CommSemiring A]
[Algebra R A]
[Module A W]
[IsScalarTower R A W]
{j : V →ₗ[R] W}
(ibc : IsBaseChange A j)
(f : Module.Dual R V)
:
noncomputable def
IsBaseChange.toDualBaseChange
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
{A : Type u_4}
[CommSemiring A]
[Algebra R A]
[Module A W]
[IsScalarTower R A W]
{j : V →ₗ[R] W}
(ibc : IsBaseChange A j)
[Module.Free R V]
[Module.Finite R V]
:
The linear equivalence underlying IsBaseChange.dual.
Equations
Instances For
theorem
IsBaseChange.toDualBaseChange_tmul
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
{A : Type u_4}
[CommSemiring A]
[Algebra R A]
[Module A W]
[IsScalarTower R A W]
{j : V →ₗ[R] W}
(ibc : IsBaseChange A j)
[Module.Free R V]
[Module.Finite R V]
(a : A)
(f : Module.Dual R V)
(v : V)
:
theorem
IsBaseChange.dual
{R : Type u_1}
[CommSemiring R]
{V : Type u_2}
[AddCommMonoid V]
[Module R V]
{W : Type u_3}
[AddCommMonoid W]
[Module R W]
{A : Type u_4}
[CommSemiring A]
[Algebra R A]
[Module A W]
[IsScalarTower R A W]
{j : V →ₗ[R] W}
(ibc : IsBaseChange A j)
[Module.Free R V]
[Module.Finite R V]
:
IsBaseChange A ibc.toDual