Theorem: Matrix.toBilin'Aux_stdBasis
File: Mathlib/LinearAlgebra/Matrix/BilinearForm.lean

tactic: rw [Matrix.toBilin'Aux]
state_before: R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
⊢ bilin (toBilin'Aux M) (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) =
    M i j

tactic: dsimp only
state_before: R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
⊢ bilin
      { bilin := fun v w => ∑ i : n, ∑ j : n, v i * M i j * w j,
        bilin_add_left :=
          (_ :
            ∀ (x y z : n → R₂),
              ∑ i : n, ∑ j : n, (x + y) i * M i j * z j =
                ∑ x_1 : n, ∑ x_2 : n, x x_1 * M x_1 x_2 * z x_2 + ∑ x : n, ∑ x_1 : n, y x * M x x_1 * z x_1),
        bilin_smul_left :=
          (_ :
            ∀ (a : R₂) (x y : n → R₂),
              ∑ i : n, ∑ j : n, (a • x) i * M i j * y j = a * ∑ i : n, ∑ j : n, x i * M i j * y j),
        bilin_add_right :=
          (_ :
            ∀ (x y z : n → R₂),
              ∑ i : n, ∑ j : n, x i * M i j * (y + z) j =
                ∑ x_1 : n, ∑ x_2 : n, x x_1 * M x_1 x_2 * y x_2 + ∑ x_1 : n, ∑ x_2 : n, x x_1 * M x_1 x_2 * z x_2),
        bilin_smul_right :=
          (_ :
            ∀ (a : R₂) (x y : n → R₂),
              ∑ i : n, ∑ j : n, x i * M i j * (a • y) j = a * ∑ i : n, ∑ j : n, x i * M i j * y j) }
      (↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1) (↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1) =
    M i j

tactic: rw [sum_eq_single i, sum_eq_single j]
state_before: R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
⊢ ∑ i_1 : n,
      ∑ j_1 : n,
        ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i_1 * M i_1 j_1 * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1 =
    M i j

tactic: simp only [stdBasis_same, stdBasis_same, one_mul, mul_one]
state_before: R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
⊢ ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i j * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j = M i j

tactic: rintro j' - hj'
state_before: case h₀
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
⊢ ∀ (b : n),
    b ∈ univ →
      b ≠ j → ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i b * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 b = 0

tactic: apply mul_eq_zero_of_right
state_before: case h₀
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j j' : n
hj' : j' ≠ j
⊢ ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i j' * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j' = 0

tactic: exact stdBasis_ne R₂ (fun _ => R₂) _ _ hj' 1
state_before: case h₀.h
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j j' : n
hj' : j' ≠ j
⊢ ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j' = 0

tactic: intros
state_before: case h₁
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
⊢ ¬j ∈ univ → ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i j * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j = 0

tactic: have := Finset.mem_univ j
state_before: case h₁
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
a✝ : ¬j ∈ univ
⊢ ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i j * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j = 0

tactic: contradiction
state_before: case h₁
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
a✝ : ¬j ∈ univ
this : j ∈ univ
⊢ ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i j * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j = 0

tactic: rintro i' - hi'
state_before: case h₀
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
⊢ ∀ (b : n),
    b ∈ univ →
      b ≠ i →
        ∑ j_1 : n,
            ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 b * M b j_1 * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1 =
          0

tactic: refine' Finset.sum_eq_zero fun j _ => _
state_before: case h₀
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j i' : n
hi' : i' ≠ i
⊢ ∑ j_1 : n, ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i' * M i' j_1 * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1 =
    0

tactic: apply mul_eq_zero_of_left
state_before: case h₀
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j✝ i' : n
hi' : i' ≠ i
j : n
x✝ : j ∈ univ
⊢ ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i' * M i' j * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j✝) 1 j = 0

tactic: apply mul_eq_zero_of_left
state_before: case h₀.h
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j✝ i' : n
hi' : i' ≠ i
j : n
x✝ : j ∈ univ
⊢ ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i' * M i' j = 0

tactic: exact stdBasis_ne R₂ (fun _ => R₂) _ _ hi' 1
state_before: case h₀.h.h
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j✝ i' : n
hi' : i' ≠ i
j : n
x✝ : j ∈ univ
⊢ ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i' = 0

tactic: intros
state_before: case h₁
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
⊢ ¬i ∈ univ →
    ∑ j_1 : n, ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i j_1 * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1 =
      0

tactic: have := Finset.mem_univ i
state_before: case h₁
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
a✝ : ¬i ∈ univ
⊢ ∑ j_1 : n, ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i j_1 * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1 = 0

tactic: contradiction
state_before: case h₁
R : Type ?u.23610
M✝ : Type ?u.23613
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M✝
inst✝¹⁴ : Module R M✝
R₁ : Type ?u.23649
M₁ : Type ?u.23652
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.24264
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type ?u.24451
M₃ : Type ?u.24454
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.25042
K : Type ?u.25045
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_1
o : Type ?u.26262
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n R₂
i j : n
a✝ : ¬i ∈ univ
this : i ∈ univ
⊢ ∑ j_1 : n, ↑(LinearMap.stdBasis R₂ (fun x => R₂) i) 1 i * M i j_1 * ↑(LinearMap.stdBasis R₂ (fun x => R₂) j) 1 j_1 = 0