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

tactic: simp_rw [Anisotropic, prod_apply, Prod.forall, Prod.mk_eq_zero] at h
state_before: ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : (Q₁.prod Q₂).Anisotropic
⊢ Q₁.Anisotropic ∧ Q₂.Anisotropic
state_after: ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
⊢ Q₁.Anisotropic ∧ Q₂.Anisotropic

tactic: constructor
state_before: ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
⊢ Q₁.Anisotropic ∧ Q₂.Anisotropic
state_after: case left
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
⊢ Q₁.Anisotropic

case right
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
⊢ Q₂.Anisotropic

tactic: intro x hx
state_before: case left
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
⊢ Q₁.Anisotropic
state_after: case left
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
x : M₁
hx : Q₁ x = 0
⊢ x = 0

tactic: refine (h x 0 ?_).1
state_before: case left
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
x : M₁
hx : Q₁ x = 0
⊢ x = 0
state_after: case left
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
x : M₁
hx : Q₁ x = 0
⊢ Q₁ x + Q₂ 0 = 0

tactic: rw [hx, zero_add, map_zero]
state_before: case left
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
x : M₁
hx : Q₁ x = 0
⊢ Q₁ x + Q₂ 0 = 0
state_after: no goals

tactic: intro x hx
state_before: case right
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
⊢ Q₂.Anisotropic
state_after: case right
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
x : M₂
hx : Q₂ x = 0
⊢ x = 0

tactic: refine (h 0 x ?_).2
state_before: case right
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
x : M₂
hx : Q₂ x = 0
⊢ x = 0
state_after: case right
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
x : M₂
hx : Q₂ x = 0
⊢ Q₁ 0 + Q₂ x = 0

tactic: rw [hx, add_zero, map_zero]
state_before: case right
ι : Type u_1
R✝ : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝¹¹ : CommSemiring 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₂
R : Type u_9
inst✝² : OrderedCommRing R
inst✝¹ : Module R M₁
inst✝ : Module R M₂
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
h : ∀ (a : M₁) (b : M₂), Q₁ a + Q₂ b = 0 → a = 0 ∧ b = 0
x : M₂
hx : Q₂ x = 0
⊢ Q₁ 0 + Q₂ x = 0
state_after: no goals