Theorem: BilinForm.toMatrix'_comp
File: Mathlib/LinearAlgebra/Matrix/BilinearForm.lean

tactic: ext (i j)
state_before: R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
⊢ ↑toMatrix' (comp B l r) = (↑LinearMap.toMatrix' l)ᵀ ⬝ ↑toMatrix' B ⬝ ↑LinearMap.toMatrix' r

tactic: simp only [BilinForm.toMatrix'_apply, BilinForm.comp_apply, transpose_apply, Matrix.mul_apply,
  LinearMap.toMatrix', LinearEquiv.coe_mk, sum_mul]
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
⊢ ↑toMatrix' (comp B l r) i j = ((↑LinearMap.toMatrix' l)ᵀ ⬝ ↑toMatrix' B ⬝ ↑LinearMap.toMatrix' r) i j

tactic: rw [sum_comm]
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
⊢ bilin B (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1)) (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1)) =
    ∑ x : n,
      ∑ x_1 : n,
        ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x_1 i *
            bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) x_1) 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) x) 1) *
          ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x j

tactic: conv_lhs => rw [← BilinForm.sum_repr_mul_repr_mul (Pi.basisFun R₂ n) (l _) (r _)]
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
⊢ bilin B (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1)) (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1)) =
    ∑ y : n,
      ∑ x : n,
        ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) y i *
            bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) y) 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) x) 1) *
          ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x j

tactic: rw [Finsupp.sum_fintype]
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
⊢ (Finsupp.sum (↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) fun i xi =>
      Finsupp.sum (↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) fun j yj =>
        xi • yj • bilin B (↑(Pi.basisFun R₂ n) i) (↑(Pi.basisFun R₂ n) j)) =
    ∑ y : n,
      ∑ x : n,
        ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) y i *
            bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) y) 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) x) 1) *
          ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x j

tactic: apply sum_congr rfl
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
⊢ (∑ i_1 : n,
      Finsupp.sum (↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) fun j yj =>
        ↑(↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) i_1 •
          yj • bilin B (↑(Pi.basisFun R₂ n) i_1) (↑(Pi.basisFun R₂ n) j)) =
    ∑ y : n,
      ∑ x : n,
        ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) y i *
            bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) y) 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) x) 1) *
          ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x j

tactic: rintro i' -
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
⊢ ∀ (x : n),
    x ∈ univ →
      (Finsupp.sum (↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) fun j yj =>
          ↑(↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) x •
            yj • bilin B (↑(Pi.basisFun R₂ n) x) (↑(Pi.basisFun R₂ n) j)) =
        ∑ x_1 : n,
          ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x i *
              bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) x) 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) x_1) 1) *
            ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x_1 j

tactic: rw [Finsupp.sum_fintype]
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
i' : n
⊢ (Finsupp.sum (↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) fun j yj =>
      ↑(↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) i' •
        yj • bilin B (↑(Pi.basisFun R₂ n) i') (↑(Pi.basisFun R₂ n) j)) =
    ∑ x : n,
      ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) i' i *
          bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) i') 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) x) 1) *
        ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x j

tactic: apply sum_congr rfl
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
i' : n
⊢ ∑ i_1 : n,
      ↑(↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) i' •
        ↑(↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) i_1 •
          bilin B (↑(Pi.basisFun R₂ n) i') (↑(Pi.basisFun R₂ n) i_1) =
    ∑ x : n,
      ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) i' i *
          bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) i') 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) x) 1) *
        ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x j

tactic: rintro j' -
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
i' : n
⊢ ∀ (x : n),
    x ∈ univ →
      ↑(↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) i' •
          ↑(↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) x •
            bilin B (↑(Pi.basisFun R₂ n) i') (↑(Pi.basisFun R₂ n) x) =
        ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) i' i *
            bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) i') 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) x) 1) *
          ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) x j

tactic: simp only [smul_eq_mul, Pi.basisFun_repr, mul_assoc, mul_comm, mul_left_comm,
  Pi.basisFun_apply, of_apply]
state_before: case a.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
i' j' : n
⊢ ↑(↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) i' •
      ↑(↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) j' •
        bilin B (↑(Pi.basisFun R₂ n) i') (↑(Pi.basisFun R₂ n) j') =
    ↑of (fun i j => ↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) i' i *
        bilin B (↑(LinearMap.stdBasis R₂ (fun x => R₂) i') 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) j') 1) *
      ↑of (fun i j => ↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) i) j' j

tactic: intros
state_before: case a.h.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
i' : n
⊢ ∀ (i_1 : n),
    ↑(↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) i' •
        0 • bilin B (↑(Pi.basisFun R₂ n) i') (↑(Pi.basisFun R₂ n) i_1) =
      0

tactic: simp only [zero_smul, smul_zero]
state_before: case a.h.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
i' i✝ : n
⊢ ↑(↑(Pi.basisFun R₂ n).repr (↑l (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1))) i' •
      0 • bilin B (↑(Pi.basisFun R₂ n) i') (↑(Pi.basisFun R₂ n) i✝) =
    0

tactic: intros
state_before: case a.h.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
⊢ ∀ (i : n),
    (Finsupp.sum (↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) fun j yj =>
        0 • yj • bilin B (↑(Pi.basisFun R₂ n) i) (↑(Pi.basisFun R₂ n) j)) =
      0

tactic: simp only [zero_smul, Finsupp.sum_zero]
state_before: case a.h.h
R : Type ?u.498301
M : Type ?u.498304
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.498340
M₁ : Type ?u.498343
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.498955
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.499142
M₃ : Type ?u.499145
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.499733
K : Type ?u.499736
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
l r : (o → R₂) →ₗ[R₂] n → R₂
i j : o
i✝ : n
⊢ (Finsupp.sum (↑(Pi.basisFun R₂ n).repr (↑r (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1))) fun j yj =>
      0 • yj • bilin B (↑(Pi.basisFun R₂ n) i✝) (↑(Pi.basisFun R₂ n) j)) =
    0