Theorem: PiTensorProduct.reindex_refl
File: Mathlib/LinearAlgebra/PiTensorProduct.lean

Proof steps:
state_before: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
⊢ reindex R s (Equiv.refl ι) = LinearEquiv.refl R (⨂[R] (i : ι), s i)
state_after: case a
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
⊢ ↑(reindex R s (Equiv.refl ι)) = ↑(LinearEquiv.refl R (⨂[R] (i : ι), s i))
tactic: apply LinearEquiv.toLinearMap_injective
state_before: case a
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
⊢ ↑(reindex R s (Equiv.refl ι)) = ↑(LinearEquiv.refl R (⨂[R] (i : ι), s i))
state_after: case a.H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x✝ : (i : ι) → s i
⊢ ((↑(reindex R s (Equiv.refl ι))).compMultilinearMap (tprod R)) x✝ =
    ((↑(LinearEquiv.refl R (⨂[R] (i : ι), s i))).compMultilinearMap (tprod R)) x✝
tactic: ext
state_before: case a.H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x✝ : (i : ι) → s i
⊢ ((↑(reindex R s (Equiv.refl ι))).compMultilinearMap (tprod R)) x✝ =
    ((↑(LinearEquiv.refl R (⨂[R] (i : ι), s i))).compMultilinearMap (tprod R)) x✝
state_after: case a.H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x✝ : (i : ι) → s i
⊢ (LinearEquiv.ofLinear
        (lift { toFun := ⇑(tprod R) ∘ ⇑(Equiv.piCongrLeft' s (Equiv.refl ι)), map_add' := ⋯, map_smul' := ⋯ })
        (lift
          ({
              toFun := fun f =>
                { toFun := ⇑f ∘ ⇑(Equiv.piCongrLeft' s (Equiv.refl ι)).symm, map_add' := ⋯, map_smul' := ⋯ },
              map_add' := ⋯, map_smul' := ⋯,
              invFun := fun f =>
                { toFun := ⇑f ∘ ⇑(Equiv.piCongrLeft' s (Equiv.refl ι)), map_add' := ⋯, map_smul' := ⋯ },
              left_inv := ⋯, right_inv := ⋯ }
            (tprod R)))
        ⋯ ⋯)
      ((tprod R) x✝) =
    (tprod R) x✝
tactic: simp only [Equiv.refl_symm, Equiv.refl_apply, reindex, domDomCongrLinearEquiv',
    LinearEquiv.coe_symm_mk, LinearMap.compMultilinearMap_apply, LinearEquiv.coe_coe,
    LinearEquiv.refl_toLinearMap, LinearMap.id_coe, id_eq]
state_before: case a.H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x✝ : (i : ι) → s i
⊢ (LinearEquiv.ofLinear
        (lift { toFun := ⇑(tprod R) ∘ ⇑(Equiv.piCongrLeft' s (Equiv.refl ι)), map_add' := ⋯, map_smul' := ⋯ })
        (lift
          ({
              toFun := fun f =>
                { toFun := ⇑f ∘ ⇑(Equiv.piCongrLeft' s (Equiv.refl ι)).symm, map_add' := ⋯, map_smul' := ⋯ },
              map_add' := ⋯, map_smul' := ⋯,
              invFun := fun f =>
                { toFun := ⇑f ∘ ⇑(Equiv.piCongrLeft' s (Equiv.refl ι)), map_add' := ⋯, map_smul' := ⋯ },
              left_inv := ⋯, right_inv := ⋯ }
            (tprod R)))
        ⋯ ⋯)
      ((tprod R) x✝) =
    (tprod R) x✝
state_after: case a.H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x✝ : (i : ι) → s i
⊢ { toFun := ⇑(tprod R) ∘ ⇑(Equiv.piCongrLeft' s (Equiv.refl ι)), map_add' := ⋯, map_smul' := ⋯ } x✝ = (tprod R) x✝
tactic: erw [lift.tprod]
state_before: case a.H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x✝ : (i : ι) → s i
⊢ { toFun := ⇑(tprod R) ∘ ⇑(Equiv.piCongrLeft' s (Equiv.refl ι)), map_add' := ⋯, map_smul' := ⋯ } x✝ = (tprod R) x✝
state_after: no goals
tactic: congr