Theorem: LinearMap.orthogonal_span_singleton_eq_to_lin_ker
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: ext y
state_before: R : Type ?u.247696
R₁ : Type ?u.247699
R₂ : Type ?u.247702
R₃ : Type ?u.247705
M : Type ?u.247708
M₁ : Type ?u.247711
M₂ : Type ?u.247714
Mₗ₁ : Type ?u.247717
Mₗ₁' : Type ?u.247720
Mₗ₂ : Type ?u.247723
Mₗ₂' : Type ?u.247726
K : Type u_1
K₁ : Type ?u.247732
K₂ : Type ?u.247735
V : Type u_2
V₁ : Type ?u.247741
V₂ : Type ?u.247744
n : Type ?u.247747
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : Field K₁
inst✝¹ : AddCommGroup V₁
inst✝ : Module K₁ V₁
J : K →+* K
J₁ J₁' : K₁ →+* K
B : V →ₗ[K] V →ₛₗ[J] K
x : V
⊢ Submodule.orthogonalBilin (Submodule.span K {x}) B = ker (↑B x)

tactic: simp_rw [Submodule.mem_orthogonalBilin_iff, LinearMap.mem_ker, Submodule.mem_span_singleton]
state_before: case h
R : Type ?u.247696
R₁ : Type ?u.247699
R₂ : Type ?u.247702
R₃ : Type ?u.247705
M : Type ?u.247708
M₁ : Type ?u.247711
M₂ : Type ?u.247714
Mₗ₁ : Type ?u.247717
Mₗ₁' : Type ?u.247720
Mₗ₂ : Type ?u.247723
Mₗ₂' : Type ?u.247726
K : Type u_1
K₁ : Type ?u.247732
K₂ : Type ?u.247735
V : Type u_2
V₁ : Type ?u.247741
V₂ : Type ?u.247744
n : Type ?u.247747
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : Field K₁
inst✝¹ : AddCommGroup V₁
inst✝ : Module K₁ V₁
J : K →+* K
J₁ J₁' : K₁ →+* K
B : V →ₗ[K] V →ₛₗ[J] K
x y : V
⊢ y ∈ Submodule.orthogonalBilin (Submodule.span K {x}) B ↔ y ∈ ker (↑B x)

tactic: constructor
state_before: case h
R : Type ?u.247696
R₁ : Type ?u.247699
R₂ : Type ?u.247702
R₃ : Type ?u.247705
M : Type ?u.247708
M₁ : Type ?u.247711
M₂ : Type ?u.247714
Mₗ₁ : Type ?u.247717
Mₗ₁' : Type ?u.247720
Mₗ₂ : Type ?u.247723
Mₗ₂' : Type ?u.247726
K : Type u_1
K₁ : Type ?u.247732
K₂ : Type ?u.247735
V : Type u_2
V₁ : Type ?u.247741
V₂ : Type ?u.247744
n : Type ?u.247747
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : Field K₁
inst✝¹ : AddCommGroup V₁
inst✝ : Module K₁ V₁
J : K →+* K
J₁ J₁' : K₁ →+* K
B : V →ₗ[K] V →ₛₗ[J] K
x y : V
⊢ (∀ (n : V), (∃ a, a • x = n) → IsOrtho B n y) ↔ ↑(↑B x) y = 0

tactic: exact fun h ↦ h x ⟨1, one_smul _ _⟩
state_before: case h.mp
R : Type ?u.247696
R₁ : Type ?u.247699
R₂ : Type ?u.247702
R₃ : Type ?u.247705
M : Type ?u.247708
M₁ : Type ?u.247711
M₂ : Type ?u.247714
Mₗ₁ : Type ?u.247717
Mₗ₁' : Type ?u.247720
Mₗ₂ : Type ?u.247723
Mₗ₂' : Type ?u.247726
K : Type u_1
K₁ : Type ?u.247732
K₂ : Type ?u.247735
V : Type u_2
V₁ : Type ?u.247741
V₂ : Type ?u.247744
n : Type ?u.247747
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : Field K₁
inst✝¹ : AddCommGroup V₁
inst✝ : Module K₁ V₁
J : K →+* K
J₁ J₁' : K₁ →+* K
B : V →ₗ[K] V →ₛₗ[J] K
x y : V
⊢ (∀ (n : V), (∃ a, a • x = n) → IsOrtho B n y) → ↑(↑B x) y = 0

tactic: rintro h _ ⟨z, rfl⟩
state_before: case h.mpr
R : Type ?u.247696
R₁ : Type ?u.247699
R₂ : Type ?u.247702
R₃ : Type ?u.247705
M : Type ?u.247708
M₁ : Type ?u.247711
M₂ : Type ?u.247714
Mₗ₁ : Type ?u.247717
Mₗ₁' : Type ?u.247720
Mₗ₂ : Type ?u.247723
Mₗ₂' : Type ?u.247726
K : Type u_1
K₁ : Type ?u.247732
K₂ : Type ?u.247735
V : Type u_2
V₁ : Type ?u.247741
V₂ : Type ?u.247744
n : Type ?u.247747
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : Field K₁
inst✝¹ : AddCommGroup V₁
inst✝ : Module K₁ V₁
J : K →+* K
J₁ J₁' : K₁ →+* K
B : V →ₗ[K] V →ₛₗ[J] K
x y : V
⊢ ↑(↑B x) y = 0 → ∀ (n : V), (∃ a, a • x = n) → IsOrtho B n y

tactic: rw [isOrtho_def, map_smulₛₗ₂, smul_eq_zero]
state_before: case h.mpr.intro
R : Type ?u.247696
R₁ : Type ?u.247699
R₂ : Type ?u.247702
R₃ : Type ?u.247705
M : Type ?u.247708
M₁ : Type ?u.247711
M₂ : Type ?u.247714
Mₗ₁ : Type ?u.247717
Mₗ₁' : Type ?u.247720
Mₗ₂ : Type ?u.247723
Mₗ₂' : Type ?u.247726
K : Type u_1
K₁ : Type ?u.247732
K₂ : Type ?u.247735
V : Type u_2
V₁ : Type ?u.247741
V₂ : Type ?u.247744
n : Type ?u.247747
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : Field K₁
inst✝¹ : AddCommGroup V₁
inst✝ : Module K₁ V₁
J : K →+* K
J₁ J₁' : K₁ →+* K
B : V →ₗ[K] V →ₛₗ[J] K
x y : V
h : ↑(↑B x) y = 0
z : K
⊢ IsOrtho B (z • x) y

tactic: exact Or.intro_right _ h
state_before: case h.mpr.intro
R : Type ?u.247696
R₁ : Type ?u.247699
R₂ : Type ?u.247702
R₃ : Type ?u.247705
M : Type ?u.247708
M₁ : Type ?u.247711
M₂ : Type ?u.247714
Mₗ₁ : Type ?u.247717
Mₗ₁' : Type ?u.247720
Mₗ₂ : Type ?u.247723
Mₗ₂' : Type ?u.247726
K : Type u_1
K₁ : Type ?u.247732
K₂ : Type ?u.247735
V : Type u_2
V₁ : Type ?u.247741
V₂ : Type ?u.247744
n : Type ?u.247747
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : Field K₁
inst✝¹ : AddCommGroup V₁
inst✝ : Module K₁ V₁
J : K →+* K
J₁ J₁' : K₁ →+* K
B : V →ₗ[K] V →ₛₗ[J] K
x y : V
h : ↑(↑B x) y = 0
z : K
⊢ ↑(RingHom.id K) z = 0 ∨ ↑(↑B x) y = 0