Theorem: QuadraticForm.anisotropic_of_pi
File: Mathlib/LinearAlgebra/QuadraticForm/Prod.lean

tactic: simp_rw [Anisotropic, pi_apply, Function.funext_iff, Pi.zero_apply] at h
state_before: ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : Anisotropic (pi Q)
⊢ ∀ (i : ι), Anisotropic (Q i)

tactic: intro i x hx
state_before: ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
⊢ ∀ (i : ι), Anisotropic (Q i)

tactic: have := h (Pi.single i x) ?_ i
state_before: ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
i : ι
x : Mᵢ i
hx : ↑(Q i) x = 0
⊢ x = 0

tactic: apply Finset.sum_eq_zero
state_before: case refine_1
ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
i : ι
x : Mᵢ i
hx : ↑(Q i) x = 0
⊢ ∑ i_1 : ι, ↑(Q i_1) (Pi.single i x i_1) = 0

tactic: intro j _
state_before: case refine_1.h
ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
i : ι
x : Mᵢ i
hx : ↑(Q i) x = 0
⊢ ∀ (x_1 : ι), x_1 ∈ Finset.univ → ↑(Q x_1) (Pi.single i x x_1) = 0

tactic: by_cases hji : j = i
state_before: case refine_1.h
ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
i : ι
x : Mᵢ i
hx : ↑(Q i) x = 0
j : ι
a✝ : j ∈ Finset.univ
⊢ ↑(Q j) (Pi.single i x j) = 0

tactic: rw [Pi.single_eq_same] at this
state_before: case refine_2
ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
i : ι
x : Mᵢ i
hx : ↑(Q i) x = 0
this : Pi.single i x i = 0
⊢ x = 0

tactic: exact this
state_before: case refine_2
ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
i : ι
x : Mᵢ i
hx : ↑(Q i) x = 0
this : x = 0
⊢ x = 0

tactic: subst hji
state_before: case pos
ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
i : ι
x : Mᵢ i
hx : ↑(Q i) x = 0
j : ι
a✝ : j ∈ Finset.univ
hji : j = i
⊢ ↑(Q j) (Pi.single i x j) = 0

tactic: rw [Pi.single_eq_same, hx]
state_before: case pos
ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
j : ι
a✝ : j ∈ Finset.univ
x : Mᵢ j
hx : ↑(Q j) x = 0
⊢ ↑(Q j) (Pi.single j x j) = 0

tactic: rw [Pi.single_eq_of_ne hji, map_zero]
state_before: case neg
ι : Type u_1
R✝ : Type ?u.66145
M₁ : Type ?u.66148
M₂ : Type ?u.66151
N₁ : Type ?u.66154
N₂ : Type ?u.66157
Mᵢ : ι → Type u_3
Nᵢ : ι → Type ?u.66167
inst✝¹⁵ : Semiring R✝
inst✝¹⁴ : AddCommMonoid M₁
inst✝¹³ : AddCommMonoid M₂
inst✝¹² : AddCommMonoid N₁
inst✝¹¹ : AddCommMonoid N₂
inst✝¹⁰ : Module R✝ M₁
inst✝⁹ : Module R✝ M₂
inst✝⁸ : Module R✝ N₁
inst✝⁷ : Module R✝ N₂
inst✝⁶ : (i : ι) → AddCommMonoid (Mᵢ i)
inst✝⁵ : (i : ι) → AddCommMonoid (Nᵢ i)
inst✝⁴ : (i : ι) → Module R✝ (Mᵢ i)
inst✝³ : (i : ι) → Module R✝ (Nᵢ i)
inst✝² : Fintype ι
R : Type u_2
inst✝¹ : OrderedRing R
inst✝ : (i : ι) → Module R (Mᵢ i)
Q : (i : ι) → QuadraticForm R (Mᵢ i)
h : ∀ (x : (i : ι) → Mᵢ i), ∑ i : ι, ↑(Q i) (x i) = 0 → ∀ (a : ι), x a = 0
i : ι
x : Mᵢ i
hx : ↑(Q i) x = 0
j : ι
a✝ : j ∈ Finset.univ
hji : ¬j = i
⊢ ↑(Q j) (Pi.single i x j) = 0