Theorem: GradedTensorProduct.includeRight_apply
File: Mathlib/LinearAlgebra/TensorProduct/Graded/Internal.lean

Proof steps:
state_before: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
⊢ ∀ (x y : B), (fun b => 1 ᵍ⊗ₜ[R] b) (x + y) = (fun b => 1 ᵍ⊗ₜ[R] b) x + (fun b => 1 ᵍ⊗ₜ[R] b) y
state_after: no goals
tactic: simp [tmul, TensorProduct.tmul_add]
state_before: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
⊢ ∀ (m : R) (x : B),
    { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯ }.toFun (m • x) =
      (RingHom.id R) m • { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯ }.toFun x
state_after: no goals
tactic: simp [tmul, TensorProduct.tmul_smul]
state_before: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
⊢ ∀ (x y : B),
    { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } (x * y) =
      { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } x *
        { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } y
state_after: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
⊢ (LinearMap.mul R B).compr₂ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } =
    (LinearMap.mul R (𝒜 ᵍ⊗[R] ℬ) ∘ₗ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ }).compl₂
      { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ }
tactic: rw [LinearMap.map_mul_iff]
state_before: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
⊢ (LinearMap.mul R B).compr₂ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } =
    (LinearMap.mul R (𝒜 ᵍ⊗[R] ℬ) ∘ₗ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ }).compl₂
      { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ }
state_after: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
i₁ : ι
⊢ (LinearMap.mul R B).compr₂ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ (ℬ i₁).subtype =
    (LinearMap.mul R (𝒜 ᵍ⊗[R] ℬ) ∘ₗ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ }).compl₂
        { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
      (ℬ i₁).subtype
tactic: refine DirectSum.decompose_lhom_ext ℬ fun i₁ => ?_
state_before: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
i₁ : ι
⊢ (LinearMap.mul R B).compr₂ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ (ℬ i₁).subtype =
    (LinearMap.mul R (𝒜 ᵍ⊗[R] ℬ) ∘ₗ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ }).compl₂
        { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
      (ℬ i₁).subtype
state_after: case h.h
R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
i₁ : ι
b₁ : ↥(ℬ i₁)
b₂ : B
⊢ (((LinearMap.mul R B).compr₂ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ (ℬ i₁).subtype) b₁)
      b₂ =
    (((LinearMap.mul R (𝒜 ᵍ⊗[R] ℬ) ∘ₗ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ }).compl₂
            { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
          (ℬ i₁).subtype)
        b₁)
      b₂
tactic: ext b₁ b₂ : 2
state_before: case h.h
R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
i₁ : ι
b₁ : ↥(ℬ i₁)
b₂ : B
⊢ (((LinearMap.mul R B).compr₂ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ (ℬ i₁).subtype) b₁)
      b₂ =
    (((LinearMap.mul R (𝒜 ᵍ⊗[R] ℬ) ∘ₗ { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ }).compl₂
            { toFun := fun b => 1 ᵍ⊗ₜ[R] b, map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
          (ℬ i₁).subtype)
        b₁)
      b₂
state_after: case h.h
R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
i₁ : ι
b₁ : ↥(ℬ i₁)
b₂ : B
⊢ 1 ᵍ⊗ₜ[R] (↑b₁ * b₂) = 1 ᵍ⊗ₜ[R] ↑b₁ * 1 ᵍ⊗ₜ[R] b₂
tactic: dsimp
state_before: case h.h
R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
i₁ : ι
b₁ : ↥(ℬ i₁)
b₂ : B
⊢ 1 ᵍ⊗ₜ[R] (↑b₁ * b₂) = 1 ᵍ⊗ₜ[R] ↑b₁ * 1 ᵍ⊗ₜ[R] b₂
state_after: no goals
tactic: rw [tmul_coe_mul_one_tmul]