lmul and rmul (the left and right multiplication maps) #
Basically just copies of linear_map.mul_left
and linear_map.mul_right
but defined as linear maps.
theorem
LinearMap.mulLeft_conj_of_mulEquivClass_apply
{R : Type u_4}
{E : Type u_2}
{F : Type u_3}
[CommSemiring R]
[NonUnitalNonAssocSemiring E]
[NonUnitalNonAssocSemiring F]
[Module R E]
[Module R F]
[SMulCommClass R E E]
[SMulCommClass R F F]
[IsScalarTower R E E]
[IsScalarTower R F F]
{Fn : Type u_1}
[EquivLike Fn E F]
[MulEquivClass Fn E F]
(f : Fn)
(x : E)
(y : F)
:
f ((LinearMap.mulLeft R x) (EquivLike.inv f y)) = (LinearMap.mulLeft R (f x)) y
theorem
LinearMap.mulRight_conj_of_mulEquivClass_apply
{R : Type u_4}
{E : Type u_2}
{F : Type u_3}
[CommSemiring R]
[NonUnitalNonAssocSemiring E]
[NonUnitalNonAssocSemiring F]
[Module R E]
[Module R F]
[SMulCommClass R E E]
[SMulCommClass R F F]
[IsScalarTower R E E]
[IsScalarTower R F F]
{Fn : Type u_1}
[EquivLike Fn E F]
[MulEquivClass Fn E F]
(f : Fn)
(x : E)
(y : F)
:
f ((LinearMap.mulRight R x) (EquivLike.inv f y)) = (LinearMap.mulRight R (f x)) y
theorem
left_module_map_iff
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[Semiring H₁]
[Algebra R H₁]
{x : H₁ →ₗ[R] H₁}
:
theorem
right_module_map_iff
{R : Type u_2}
[CommSemiring R]
{H₂ : Type u_1}
[Semiring H₂]
[Algebra R H₂]
{x : H₂ →ₗ[R] H₂}
:
def
lmul
{R : Type u_1}
{H₁ : Type u_2}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
:
Equations
- lmul = { toFun := fun (x : H₁) => LinearMap.mulLeft R x, map_add' := ⋯, map_smul' := ⋯ }
Instances For
theorem
lmul_apply
{R : Type u_2}
{H₁ : Type u_1}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
(y : H₁)
:
theorem
lmul_eq_mul
{R : Type u_2}
{H₁ : Type u_1}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
:
lmul x = LinearMap.mulLeft R x
theorem
lmul_eq_alg_lmul
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[Semiring H₁]
[Algebra R H₁]
(x : H₁)
:
lmul x = (Algebra.lmul R H₁) x
theorem
lmul_one
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[NonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
:
lmul 1 = 1
def
rmul
{R : Type u_1}
{H₂ : Type u_2}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₂]
[Module R H₂]
[SMulCommClass R H₂ H₂]
[IsScalarTower R H₂ H₂]
:
Equations
- rmul = { toFun := fun (x : H₂) => LinearMap.mulRight R x, map_add' := ⋯, map_smul' := ⋯ }
Instances For
theorem
rmul_apply
{R : Type u_2}
{H₂ : Type u_1}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₂]
[Module R H₂]
[SMulCommClass R H₂ H₂]
[IsScalarTower R H₂ H₂]
(x : H₂)
(y : H₂)
:
theorem
rmul_eq_mul
{R : Type u_2}
{H₂ : Type u_1}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₂]
[Module R H₂]
[SMulCommClass R H₂ H₂]
[IsScalarTower R H₂ H₂]
(x : H₂)
:
rmul x = LinearMap.mulRight R x
theorem
rmul_one
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[NonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
:
rmul 1 = 1
noncomputable def
rmulMapLmul
{R : Type u_1}
{H₁ : Type u_2}
{H₂ : Type u_3}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
[NonUnitalNonAssocSemiring H₂]
[Module R H₂]
[SMulCommClass R H₂ H₂]
[IsScalarTower R H₂ H₂]
:
TensorProduct R H₁ H₂ →ₗ[R] TensorProduct R H₁ H₂ →ₗ[R] TensorProduct R H₁ H₂
Equations
- rmulMapLmul = TensorProduct.homTensorHomMap R H₁ H₂ H₁ H₂ ∘ₗ TensorProduct.map rmul lmul
Instances For
theorem
rmulMapLmul_apply
{R : Type u_3}
{H₁ : Type u_1}
{H₂ : Type u_2}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
[NonUnitalNonAssocSemiring H₂]
[Module R H₂]
[SMulCommClass R H₂ H₂]
[IsScalarTower R H₂ H₂]
(x : H₁)
(y : H₂)
:
rmulMapLmul (x ⊗ₜ[R] y) = TensorProduct.map (rmul x) (lmul y)
theorem
rmulMapLmul_one
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[NonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
{H₂ : Type u_3}
[NonAssocSemiring H₂]
[Module R H₂]
[SMulCommClass R H₂ H₂]
[IsScalarTower R H₂ H₂]
:
theorem
LinearMap.mulLeft_sum
{R : Type u_1}
{A : Type u_2}
[CommSemiring R]
[NonUnitalNonAssocSemiring A]
[Module R A]
[SMulCommClass R A A]
[IsScalarTower R A A]
{n : Type u_3}
{s : Finset n}
{x : n → A}
:
∑ i ∈ s, LinearMap.mulLeft R (x i) = LinearMap.mulLeft R (∑ i ∈ s, x i)
theorem
LinearMap.mulRight_sum
{R : Type u_1}
{A : Type u_2}
[CommSemiring R]
[NonUnitalNonAssocSemiring A]
[Module R A]
[SMulCommClass R A A]
[IsScalarTower R A A]
{n : Type u_3}
{s : Finset n}
{x : n → A}
:
∑ i ∈ s, LinearMap.mulRight R (x i) = LinearMap.mulRight R (∑ i ∈ s, x i)
theorem
lmul_eq_zero_iff
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[Semiring H₁]
[Algebra R H₁]
(x : H₁)
:
theorem
rmul_eq_zero_iff
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[Semiring H₁]
[Algebra R H₁]
(x : H₁)
:
theorem
lmul_eq_one_iff
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[NonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
:
theorem
LinearMap.mulLeft_eq_one_iff
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[NonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
:
LinearMap.mulLeft R x = 1 ↔ x = 1
theorem
rmul_eq_one_iff
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[NonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
:
theorem
LinearMap.mulRight_eq_one_iff
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[NonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
:
LinearMap.mulRight R x = 1 ↔ x = 1
theorem
LinearMap.mulLeft_eq_one_or_zero_iff_mulRight_tfae
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[Semiring H₁]
[Algebra R H₁]
(x : H₁)
(p : Prop)
[Decidable p]
:
[LinearMap.mulLeft R x = if p then 1 else 0, LinearMap.mulRight R x = if p then 1 else 0, x = if p then 1 else 0].TFAE
theorem
LinearMap.mulLeft_eq_one_or_zero_iff_mulRight
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[Semiring H₁]
[Algebra R H₁]
(x : H₁)
(p : Prop)
[Decidable p]
:
(LinearMap.mulLeft R x = if p then 1 else 0) ↔ LinearMap.mulRight R x = if p then 1 else 0
theorem
LinearMap.mulRight_smul
{R : Type u_2}
{H₁ : Type u_1}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
(α : R)
:
LinearMap.mulRight R (α • x) = α • LinearMap.mulRight R x
theorem
LinearMap.mulLeft_smul
{R : Type u_2}
{H₁ : Type u_1}
[CommSemiring R]
[NonUnitalNonAssocSemiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
(α : R)
:
LinearMap.mulLeft R (α • x) = α • LinearMap.mulLeft R x
theorem
LinearMap.mulLeft_comp_inj
{R : Type u_3}
[CommSemiring R]
{H₁ : Type u_1}
{H₂ : Type u_2}
[Semiring H₁]
[Module R H₁]
[AddCommMonoid H₂]
[Module R H₂]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(f : H₁ →ₗ[R] H₂)
(g : H₁ →ₗ[R] H₂)
(x : H₁)
[Invertible x]
:
f ∘ₗ LinearMap.mulLeft R x = g ∘ₗ LinearMap.mulLeft R x ↔ f = g
theorem
LinearMap.mulLeft_inj
{R : Type u_2}
[CommSemiring R]
{H₁ : Type u_1}
[Semiring H₁]
[Module R H₁]
[SMulCommClass R H₁ H₁]
[IsScalarTower R H₁ H₁]
(x : H₁)
[Invertible x]
(y : H₁)
(z : H₁)
:
(LinearMap.mulLeft R x) y = (LinearMap.mulLeft R x) z ↔ y = z
theorem
lmul_op
{R : Type u_1}
{A : Type u_2}
[CommSemiring R]
[NonUnitalNonAssocSemiring A]
[Module R A]
[SMulCommClass R A A]
[IsScalarTower R A A]
(x : Aᵐᵒᵖ)
:
lmul x = (rmul (MulOpposite.unop x)).op
theorem
lmul_op'
{R : Type u_1}
{A : Type u_2}
[CommSemiring R]
[NonUnitalNonAssocSemiring A]
[Module R A]
[SMulCommClass R A A]
[IsScalarTower R A A]
(x : A)
:
lmul (MulOpposite.op x) = (rmul x).op
theorem
rmul_op'
{R : Type u_1}
{A : Type u_2}
[CommSemiring R]
[NonUnitalNonAssocSemiring A]
[Module R A]
[SMulCommClass R A A]
[IsScalarTower R A A]
(x : A)
:
rmul (MulOpposite.op x) = (lmul x).op