Theorem: LinearMap.BilinForm.orthogonal_span_singleton_eq_toLin_ker
File: Mathlib/LinearAlgebra/BilinearForm/Orthogonal.lean

tactic: ext y
state_before: R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x : V
⊢ B.orthogonal (Submodule.span K {x}) = ker (B.toLinHomAux₁ x)
state_after: case h
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
⊢ y ∈ B.orthogonal (Submodule.span K {x}) ↔ y ∈ ker (B.toLinHomAux₁ x)

tactic: simp_rw [mem_orthogonal_iff, LinearMap.mem_ker, Submodule.mem_span_singleton]
state_before: case h
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
⊢ y ∈ B.orthogonal (Submodule.span K {x}) ↔ y ∈ ker (B.toLinHomAux₁ x)
state_after: case h
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
⊢ (∀ (n : V), (∃ a, a • x = n) → B.IsOrtho n y) ↔ (B.toLinHomAux₁ x) y = 0

tactic: constructor
state_before: case h
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
⊢ (∀ (n : V), (∃ a, a • x = n) → B.IsOrtho n y) ↔ (B.toLinHomAux₁ x) y = 0
state_after: case h.mp
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
⊢ (∀ (n : V), (∃ a, a • x = n) → B.IsOrtho n y) → (B.toLinHomAux₁ x) y = 0

case h.mpr
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
⊢ (B.toLinHomAux₁ x) y = 0 → ∀ (n : V), (∃ a, a • x = n) → B.IsOrtho n y

tactic: exact fun h => h x ⟨1, one_smul _ _⟩
state_before: case h.mp
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
⊢ (∀ (n : V), (∃ a, a • x = n) → B.IsOrtho n y) → (B.toLinHomAux₁ x) y = 0
state_after: no goals

tactic: rintro h _ ⟨z, rfl⟩
state_before: case h.mpr
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
⊢ (B.toLinHomAux₁ x) y = 0 → ∀ (n : V), (∃ a, a • x = n) → B.IsOrtho n y
state_after: case h.mpr.intro
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
h : (B.toLinHomAux₁ x) y = 0
z : K
⊢ B.IsOrtho (z • x) y

tactic: rw [IsOrtho, smul_left, mul_eq_zero]
state_before: case h.mpr.intro
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
h : (B.toLinHomAux₁ x) y = 0
z : K
⊢ B.IsOrtho (z • x) y
state_after: case h.mpr.intro
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
h : (B.toLinHomAux₁ x) y = 0
z : K
⊢ z = 0 ∨ (B x) y = 0

tactic: exact Or.intro_right _ h
state_before: case h.mpr.intro
R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
N L : Submodule R M
B : BilinForm K V
x y : V
h : (B.toLinHomAux₁ x) y = 0
z : K
⊢ z = 0 ∨ (B x) y = 0
state_after: no goals