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

tactic: rw [← Finset.coe_singleton]
state_before: R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
⊢ Submodule.span K₁ {x} ⊓ Submodule.orthogonalBilin (Submodule.span K₁ {x}) B = ⊥

tactic: refine' eq_bot_iff.2 fun y h ↦ _
state_before: R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
⊢ Submodule.span K₁ ↑{x} ⊓ Submodule.orthogonalBilin (Submodule.span K₁ ↑{x}) B = ⊥

tactic: rcases mem_span_finset.1 h.1 with ⟨μ, rfl⟩
state_before: R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
y : V₁
h : y ∈ Submodule.span K₁ ↑{x} ⊓ Submodule.orthogonalBilin (Submodule.span K₁ ↑{x}) B
⊢ y ∈ ⊥

tactic: replace h := h.2 x (by simp [Submodule.mem_span] : x ∈ Submodule.span K₁ ({x} : Finset V₁))
state_before: case intro
R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
μ : V₁ → K₁
h : ∑ i in {x}, μ i • i ∈ Submodule.span K₁ ↑{x} ⊓ Submodule.orthogonalBilin (Submodule.span K₁ ↑{x}) B
⊢ ∑ i in {x}, μ i • i ∈ ⊥

tactic: rw [Finset.sum_singleton] at h ⊢
state_before: case intro
R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
μ : V₁ → K₁
h : IsOrtho B x (∑ i in {x}, μ i • i)
⊢ ∑ i in {x}, μ i • i ∈ ⊥

tactic: suffices hμzero : μ x = 0
state_before: case intro
R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
μ : V₁ → K₁
h : IsOrtho B x (μ x • x)
⊢ μ x • x ∈ ⊥

tactic: rw [isOrtho_def, map_smulₛₗ, smul_eq_mul] at h
state_before: case hμzero
R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
μ : V₁ → K₁
h : IsOrtho B x (μ x • x)
⊢ μ x = 0

tactic: exact Or.elim (zero_eq_mul.mp h.symm)
    (fun y ↦ by simpa using y)
    (fun hfalse ↦ False.elim $ hx hfalse)
state_before: case hμzero
R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
μ : V₁ → K₁
h : ↑J₁' (μ x) * ↑(↑B x) x = 0
⊢ μ x = 0

tactic: simp [Submodule.mem_span]
state_before: R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
μ : V₁ → K₁
h : ∑ i in {x}, μ i • i ∈ Submodule.span K₁ ↑{x} ⊓ Submodule.orthogonalBilin (Submodule.span K₁ ↑{x}) B
⊢ x ∈ Submodule.span K₁ ↑{x}

tactic: rw [hμzero, zero_smul, Submodule.mem_bot]
state_before: case intro
R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
μ : V₁ → K₁
h : IsOrtho B x (μ x • x)
hμzero : μ x = 0
⊢ μ x • x ∈ ⊥

tactic: simpa using y
state_before: R : Type ?u.235358
R₁ : Type ?u.235361
R₂ : Type ?u.235364
R₃ : Type ?u.235367
M : Type ?u.235370
M₁ : Type ?u.235373
M₂ : Type ?u.235376
Mₗ₁ : Type ?u.235379
Mₗ₁' : Type ?u.235382
Mₗ₂ : Type ?u.235385
Mₗ₂' : Type ?u.235388
K : Type u_2
K₁ : Type u_1
K₂ : Type ?u.235397
V : Type ?u.235400
V₁ : Type u_3
V₂ : Type ?u.235406
n : Type ?u.235409
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₁ →ₛₗ[J₁] V₁ →ₛₗ[J₁'] K
x : V₁
hx : ¬IsOrtho B x x
μ : V₁ → K₁
h : ↑J₁' (μ x) * ↑(↑B x) x = 0
y : ↑J₁' (μ x) = 0
⊢ μ x = 0