Bases and scalar multiplication #
This file defines the scalar multiplication of bases by multiplying each basis vector.
@[instance_reducible]
noncomputable instance Module.Basis.instSMul {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} [Group G] [DistribMulAction G M] [SMulCommClass G R M] :
The action on a Basis by acting on each element.
See also Basis.unitsSMul and Basis.groupSMul, for the cases when a different action is applied
to each basis element.
Equations
- Module.Basis.instSMul = { smul := fun (g : G) (b : Module.Basis ι R M) => b.map (DistribMulAction.toLinearEquiv R M g) }
@[simp]
theorem Module.Basis.smul_apply {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} [Group G] [DistribMulAction G M] [SMulCommClass G R M] (g : G) (b : Basis ι R M) (i : ι) :
theorem Module.Basis.coe_smul {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} [Group G] [DistribMulAction G M] [SMulCommClass G R M] (g : G) (b : Basis ι R M) :
@[simp]
theorem Module.Basis.repr_smul {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} [Group G] [DistribMulAction G M] [SMulCommClass G R M] (g : G) (b : Basis ι R M) :
@[instance_reducible]
noncomputable instance Module.Basis.instMulAction {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} [Group G] [DistribMulAction G M] [SMulCommClass G R M] :
instance Module.Basis.instSMulCommClass {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} {G' : Type u_6} [Group G] [Group G'] [DistribMulAction G M] [DistribMulAction G' M] [SMulCommClass G R M] [SMulCommClass G' R M] [SMulCommClass G G' M] :
SMulCommClass G G' (Basis ι R M)
instance Module.Basis.instIsScalarTower {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} {G' : Type u_6} [Group G] [Group G'] [DistribMulAction G M] [DistribMulAction G' M] [SMulCommClass G R M] [SMulCommClass G' R M] [SMul G G'] [IsScalarTower G G' M] :
IsScalarTower G G' (Basis ι R M)
theorem Module.Basis.groupSMul_span_eq_top {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} [Group G] [SMul G R] [MulAction G M] [IsScalarTower G R M] {v : ι → M} (hv : Submodule.span R (Set.range v) = ⊤) {w : ι → G} :
noncomputable def Module.Basis.groupSMul {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} [Group G] [DistribMulAction G R] [DistribMulAction G M] [IsScalarTower G R M] [SMulCommClass G R M] (v : Basis ι R M) (w : ι → G) :
Basis ι R M
Given a basis v and a map w such that for all i, w i are elements of a group,
groupSMul provides the basis corresponding to w • v.
Equations
- v.groupSMul w = Module.Basis.mk ⋯ ⋯
Instances For
theorem Module.Basis.groupSMul_apply {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {G : Type u_5} [Group G] [DistribMulAction G R] [DistribMulAction G M] [IsScalarTower G R M] [SMulCommClass G R M] {v : Basis ι R M} {w : ι → G} (i : ι) :
theorem Module.Basis.units_smul_span_eq_top {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {v : ι → M} (hv : Submodule.span R (Set.range v) = ⊤) {w : ι → Rˣ} :
noncomputable def Module.Basis.unitsSMul {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (v : Basis ι R M) (w : ι → Rˣ) :
Basis ι R M
Given a basis v and a map w such that for all i, w i is a unit, unitsSMul
provides the basis corresponding to w • v.
Equations
- v.unitsSMul w = Module.Basis.mk ⋯ ⋯
Instances For
noncomputable def Module.Basis.isUnitSMul {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (v : Basis ι R M) {w : ι → R} (hw : ∀ (i : ι), IsUnit (w i)) :
Basis ι R M
A version of unitsSMul that uses IsUnit.
Equations
- v.isUnitSMul hw = v.unitsSMul fun (i : ι) => ⋯.unit
Instances For
theorem Module.Basis.isUnitSMul_apply {ι : Type u_1} {R : Type u_2} {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] {v : Basis ι R M} {w : ι → R} (hw : ∀ (i : ι), IsUnit (w i)) (i : ι) :
theorem Module.Basis.repr_isUnitSMul {ι : Type u_1} {R₂ : Type u_3} {M : Type u_4} [AddCommMonoid M] [CommSemiring R₂] [Module R₂ M] {v : Basis ι R₂ M} {w : ι → R₂} (hw : ∀ (i : ι), IsUnit (w i)) (x : M) (i : ι) :