Theorem: maximal_orthonormal_iff_orthogonalComplement_eq_bot
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: rw [Submodule.eq_bot_iff]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
⊢ (∀ (u : Set E), u ⊇ v → Orthonormal 𝕜 Subtype.val → u = v) ↔ (span 𝕜 v)ᗮ = ⊥

tactic: constructor
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
⊢ (∀ (u : Set E), u ⊇ v → Orthonormal 𝕜 Subtype.val → u = v) ↔ ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0

tactic: contrapose!
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
⊢ (∀ (u : Set E), u ⊇ v → Orthonormal 𝕜 Subtype.val → u = v) → ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0

tactic: rintro ⟨x, hx', hx⟩
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
⊢ (∃ x, x ∈ (span 𝕜 v)ᗮ ∧ x ≠ 0) → ∃ u, u ⊇ v ∧ Orthonormal 𝕜 Subtype.val ∧ u ≠ v

tactic: let e := (‖x‖⁻¹ : 𝕜) • x
state_before: case mp.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
⊢ ∃ u, u ⊇ v ∧ Orthonormal 𝕜 Subtype.val ∧ u ≠ v

tactic: have he : ‖e‖ = 1 := by simp [norm_smul_inv_norm hx]
state_before: case mp.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
⊢ ∃ u, u ⊇ v ∧ Orthonormal 𝕜 Subtype.val ∧ u ≠ v

tactic: have he' : e ∈ (span 𝕜 v)ᗮ := smul_mem' _ _ hx'
state_before: case mp.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
⊢ ∃ u, u ⊇ v ∧ Orthonormal 𝕜 Subtype.val ∧ u ≠ v

tactic: have he'' : e ∉ v := by
  intro hev
  have : e = 0 := by
    have : e ∈ span 𝕜 v ⊓ (span 𝕜 v)ᗮ := ⟨subset_span hev, he'⟩
    simpa [(span 𝕜 v).inf_orthogonal_eq_bot] using this
  have : e ≠ 0 := hv.ne_zero ⟨e, hev⟩
  contradiction
state_before: case mp.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
⊢ ∃ u, u ⊇ v ∧ Orthonormal 𝕜 Subtype.val ∧ u ≠ v

tactic: refine' ⟨insert e v, v.subset_insert e, ⟨_, _⟩, (ne_insert_of_not_mem v he'').symm⟩
state_before: case mp.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
⊢ ∃ u, u ⊇ v ∧ Orthonormal 𝕜 Subtype.val ∧ u ≠ v

tactic: simp [norm_smul_inv_norm hx]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
⊢ ‖e‖ = 1

tactic: intro hev
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
⊢ ¬e ∈ v

tactic: have : e = 0 := by
  have : e ∈ span 𝕜 v ⊓ (span 𝕜 v)ᗮ := ⟨subset_span hev, he'⟩
  simpa [(span 𝕜 v).inf_orthogonal_eq_bot] using this
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
hev : e ∈ v
⊢ False

tactic: have : e ≠ 0 := hv.ne_zero ⟨e, hev⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
hev : e ∈ v
this : e = 0
⊢ False

tactic: contradiction
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
hev : e ∈ v
this✝ : e = 0
this : e ≠ 0
⊢ False

tactic: have : e ∈ span 𝕜 v ⊓ (span 𝕜 v)ᗮ := ⟨subset_span hev, he'⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
hev : e ∈ v
⊢ e = 0

tactic: simpa [(span 𝕜 v).inf_orthogonal_eq_bot] using this
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
hev : e ∈ v
this : e ∈ span 𝕜 v ⊓ (span 𝕜 v)ᗮ
⊢ e = 0

tactic: rintro ⟨a, ha'⟩
state_before: case mp.intro.intro.refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
⊢ ∀ (i : { x // x ∈ insert e v }), ‖↑i‖ = 1

tactic: cases' eq_or_mem_of_mem_insert ha' with ha ha
state_before: case mp.intro.intro.refine'_1.mk
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
a : E
ha' : a ∈ insert e v
⊢ ‖↑{ val := a, property := ha' }‖ = 1

tactic: simp [ha, he]
state_before: case mp.intro.intro.refine'_1.mk.inl
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
a : E
ha' : a ∈ insert e v
ha : a = e
⊢ ‖↑{ val := a, property := ha' }‖ = 1

tactic: exact hv.1 ⟨a, ha⟩
state_before: case mp.intro.intro.refine'_1.mk.inr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
a : E
ha' : a ∈ insert e v
ha : a ∈ v
⊢ ‖↑{ val := a, property := ha' }‖ = 1

tactic: have h_end : ∀ a ∈ v, ⟪a, e⟫ = 0 := by
  intro a ha
  exact he' a (Submodule.subset_span ha)
state_before: case mp.intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
⊢ ∀ {i j : { x // x ∈ insert e v }}, i ≠ j → inner ↑i ↑j = 0

tactic: rintro ⟨a, ha'⟩
state_before: case mp.intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
⊢ ∀ {i j : { x // x ∈ insert e v }}, i ≠ j → inner ↑i ↑j = 0

tactic: cases' eq_or_mem_of_mem_insert ha' with ha ha
state_before: case mp.intro.intro.refine'_2.mk
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
⊢ ∀ {j : { x // x ∈ insert e v }}, { val := a, property := ha' } ≠ j → inner ↑{ val := a, property := ha' } ↑j = 0

tactic: rintro ⟨b, hb'⟩ hab'
state_before: case mp.intro.intro.refine'_2.mk.inr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a ∈ v
⊢ ∀ {j : { x // x ∈ insert e v }}, { val := a, property := ha' } ≠ j → inner ↑{ val := a, property := ha' } ↑j = 0

tactic: cases' eq_or_mem_of_mem_insert hb' with hb hb
state_before: case mp.intro.intro.refine'_2.mk.inr.mk
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a ∈ v
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
⊢ inner ↑{ val := a, property := ha' } ↑{ val := b, property := hb' } = 0

tactic: have : (⟨a, ha⟩ : v) ≠ ⟨b, hb⟩ := by
  intro hab''
  apply hab'
  simpa using hab''
state_before: case mp.intro.intro.refine'_2.mk.inr.mk.inr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a ∈ v
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hb : b ∈ v
⊢ inner ↑{ val := a, property := ha' } ↑{ val := b, property := hb' } = 0

tactic: exact hv.2 this
state_before: case mp.intro.intro.refine'_2.mk.inr.mk.inr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a ∈ v
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hb : b ∈ v
this : { val := a, property := ha } ≠ { val := b, property := hb }
⊢ inner ↑{ val := a, property := ha' } ↑{ val := b, property := hb' } = 0

tactic: intro a ha
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
⊢ ∀ (a : E), a ∈ v → inner a e = 0

tactic: exact he' a (Submodule.subset_span ha)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
a : E
ha : a ∈ v
⊢ inner a e = 0

tactic: rintro ⟨b, hb'⟩ hab'
state_before: case mp.intro.intro.refine'_2.mk.inl
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a = e
⊢ ∀ {j : { x // x ∈ insert e v }}, { val := a, property := ha' } ≠ j → inner ↑{ val := a, property := ha' } ↑j = 0

tactic: have hb : b ∈ v := by
  refine' mem_of_mem_insert_of_ne hb' _
  intro hbe'
  apply hab'
  simp [ha, hbe']
state_before: case mp.intro.intro.refine'_2.mk.inl.mk
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a = e
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
⊢ inner ↑{ val := a, property := ha' } ↑{ val := b, property := hb' } = 0

tactic: rw [inner_eq_zero_symm]
state_before: case mp.intro.intro.refine'_2.mk.inl.mk
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a = e
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hb : b ∈ v
⊢ inner ↑{ val := a, property := ha' } ↑{ val := b, property := hb' } = 0

tactic: simpa [ha] using h_end b hb
state_before: case mp.intro.intro.refine'_2.mk.inl.mk
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a = e
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hb : b ∈ v
⊢ inner ↑{ val := b, property := hb' } ↑{ val := a, property := ha' } = 0

tactic: refine' mem_of_mem_insert_of_ne hb' _
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a = e
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
⊢ b ∈ v

tactic: intro hbe'
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a = e
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
⊢ b ≠ e

tactic: apply hab'
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a = e
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hbe' : b = e
⊢ False

tactic: simp [ha, hbe']
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a = e
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hbe' : b = e
⊢ { val := a, property := ha' } = { val := b, property := hb' }

tactic: simpa [hb] using h_end a ha
state_before: case mp.intro.intro.refine'_2.mk.inr.mk.inl
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a ∈ v
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hb : b = e
⊢ inner ↑{ val := a, property := ha' } ↑{ val := b, property := hb' } = 0

tactic: intro hab''
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a ∈ v
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hb : b ∈ v
⊢ { val := a, property := ha } ≠ { val := b, property := hb }

tactic: apply hab'
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a ∈ v
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hb : b ∈ v
hab'' : { val := a, property := ha } = { val := b, property := hb }
⊢ False

tactic: simpa using hab''
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
x : E
hx' : x ∈ (span 𝕜 v)ᗮ
hx : x ≠ 0
e : E := (↑‖x‖)⁻¹ • x
he : ‖e‖ = 1
he' : e ∈ (span 𝕜 v)ᗮ
he'' : ¬e ∈ v
h_end : ∀ (a : E), a ∈ v → inner a e = 0
a : E
ha' : a ∈ insert e v
ha : a ∈ v
b : E
hb' : b ∈ insert e v
hab' : { val := a, property := ha' } ≠ { val := b, property := hb' }
hb : b ∈ v
hab'' : { val := a, property := ha } = { val := b, property := hb }
⊢ { val := a, property := ha' } = { val := b, property := hb' }

tactic: simp only [Subset.antisymm_iff]
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
⊢ (∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0) → ∀ (u : Set E), u ⊇ v → Orthonormal 𝕜 Subtype.val → u = v

tactic: rintro h u (huv : v ⊆ u) hu
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
⊢ (∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0) → ∀ (u : Set E), u ⊇ v → Orthonormal 𝕜 Subtype.val → u ⊆ v ∧ v ⊆ u

tactic: refine' ⟨_, huv⟩
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
⊢ u ⊆ v ∧ v ⊆ u

tactic: intro x hxu
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
⊢ u ⊆ v

tactic: refine' ((mt (h x)) (hu.ne_zero ⟨x, hxu⟩)).imp_symm _
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
x : E
hxu : x ∈ u
⊢ x ∈ v

tactic: intro hxv y hy
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
x : E
hxu : x ∈ u
⊢ ¬x ∈ v → x ∈ (span 𝕜 v)ᗮ

tactic: have hxv' : (⟨x, hxu⟩ : u) ∉ ((↑) ⁻¹' v : Set u) := by simp [huv, hxv]
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
x : E
hxu : x ∈ u
hxv : ¬x ∈ v
y : E
hy : y ∈ span 𝕜 v
⊢ inner y x = 0

tactic: obtain ⟨l, hl, rfl⟩ :
  ∃ l ∈ Finsupp.supported 𝕜 𝕜 ((↑) ⁻¹' v : Set u), (Finsupp.total (↥u) E 𝕜 (↑)) l = y := by
  rw [← Finsupp.mem_span_image_iff_total]
  simp [huv, inter_eq_self_of_subset_left, hy]
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
x : E
hxu : x ∈ u
hxv : ¬x ∈ v
y : E
hy : y ∈ span 𝕜 v
hxv' : ¬{ val := x, property := hxu } ∈ Subtype.val ⁻¹' v
⊢ inner y x = 0

tactic: exact hu.inner_finsupp_eq_zero hxv' hl
state_before: case mpr.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
x : E
hxu : x ∈ u
hxv : ¬x ∈ v
hxv' : ¬{ val := x, property := hxu } ∈ Subtype.val ⁻¹' v
l : ↑u →₀ 𝕜
hy : ↑(Finsupp.total (↑u) E 𝕜 Subtype.val) l ∈ span 𝕜 v
hl : l ∈ Finsupp.supported 𝕜 𝕜 (?m.1124382 (↑(Finsupp.total (↑u) E 𝕜 Subtype.val) l) hy l ⁻¹' v)
⊢ inner (↑(Finsupp.total (↑u) E 𝕜 Subtype.val) l) x = 0

tactic: simp [huv, hxv]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
x : E
hxu : x ∈ u
hxv : ¬x ∈ v
y : E
hy : y ∈ span 𝕜 v
⊢ ¬{ val := x, property := hxu } ∈ Subtype.val ⁻¹' v

tactic: rw [← Finsupp.mem_span_image_iff_total]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
x : E
hxu : x ∈ u
hxv : ¬x ∈ v
y : E
hy : y ∈ span 𝕜 v
hxv' : ¬{ val := x, property := hxu } ∈ Subtype.val ⁻¹' v
⊢ ∃ l, l ∈ Finsupp.supported 𝕜 𝕜 (Subtype.val ⁻¹' v) ∧ ↑(Finsupp.total (↑u) E 𝕜 Subtype.val) l = y

tactic: simp [huv, inter_eq_self_of_subset_left, hy]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1095350
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
v : Set E
hv : Orthonormal 𝕜 Subtype.val
h : ∀ (x : E), x ∈ (span 𝕜 v)ᗮ → x = 0
u : Set E
huv : v ⊆ u
hu : Orthonormal 𝕜 Subtype.val
x : E
hxu : x ∈ u
hxv : ¬x ∈ v
y : E
hy : y ∈ span 𝕜 v
hxv' : ¬{ val := x, property := hxu } ∈ Subtype.val ⁻¹' v
⊢ y ∈ span 𝕜 (Subtype.val '' (Subtype.val ⁻¹' v))