Theorem: Orthonormal.exists_orthonormalBasis_extension_of_card_eq
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: have hsv : Injective (s.restrict v) := hv.linearIndependent.injective
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
⊢ ∃ b, ∀ i ∈ s, b i = v i
state_after: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
⊢ ∃ b, ∀ i ∈ s, b i = v i

tactic: have hX : Orthonormal 𝕜 ((↑) : Set.range (s.restrict v) → E) := by
  rwa [orthonormal_subtype_range hsv]
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
⊢ ∃ b, ∀ i ∈ s, b i = v i
state_after: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX : Orthonormal 𝕜 Subtype.val
⊢ ∃ b, ∀ i ∈ s, b i = v i

tactic: obtain ⟨Y, b₀, hX, hb₀⟩ := hX.exists_orthonormalBasis_extension
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX : Orthonormal 𝕜 Subtype.val
⊢ ∃ b, ∀ i ∈ s, b i = v i
state_after: case intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
⊢ ∃ b, ∀ i ∈ s, b i = v i

tactic: have hιY : Fintype.card ι = Y.card := by
  refine card_ι.symm.trans ?_
  exact FiniteDimensional.finrank_eq_card_finset_basis b₀.toBasis
state_before: case intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
⊢ ∃ b, ∀ i ∈ s, b i = v i
state_after: case intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
⊢ ∃ b, ∀ i ∈ s, b i = v i

tactic: have hvsY : s.MapsTo v Y := (s.mapsTo_image v).mono_right (by rwa [← range_restrict])
state_before: case intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
⊢ ∃ b, ∀ i ∈ s, b i = v i
state_after: case intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
⊢ ∃ b, ∀ i ∈ s, b i = v i

tactic: have hsv' : Set.InjOn v s := by
  rw [Set.injOn_iff_injective]
  exact hsv
state_before: case intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
⊢ ∃ b, ∀ i ∈ s, b i = v i
state_after: case intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
hsv' : InjOn v s
⊢ ∃ b, ∀ i ∈ s, b i = v i

tactic: obtain ⟨g, hg⟩ := hvsY.exists_equiv_extend_of_card_eq hιY hsv'
state_before: case intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
hsv' : InjOn v s
⊢ ∃ b, ∀ i ∈ s, b i = v i
state_after: case intro.intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
hsv' : InjOn v s
g : ι ≃ { x // x ∈ Y }
hg : ∀ i ∈ s, ↑(g i) = v i
⊢ ∃ b, ∀ i ∈ s, b i = v i

tactic: use b₀.reindex g.symm
state_before: case intro.intro.intro.intro
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
hsv' : InjOn v s
g : ι ≃ { x // x ∈ Y }
hg : ∀ i ∈ s, ↑(g i) = v i
⊢ ∃ b, ∀ i ∈ s, b i = v i
state_after: case h
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
hsv' : InjOn v s
g : ι ≃ { x // x ∈ Y }
hg : ∀ i ∈ s, ↑(g i) = v i
⊢ ∀ i ∈ s, (b₀.reindex g.symm) i = v i

tactic: intro i hi
state_before: case h
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
hsv' : InjOn v s
g : ι ≃ { x // x ∈ Y }
hg : ∀ i ∈ s, ↑(g i) = v i
⊢ ∀ i ∈ s, (b₀.reindex g.symm) i = v i
state_after: case h
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
hsv' : InjOn v s
g : ι ≃ { x // x ∈ Y }
hg : ∀ i ∈ s, ↑(g i) = v i
i : ι
hi : i ∈ s
⊢ (b₀.reindex g.symm) i = v i

tactic: simp [hb₀, hg i hi]
state_before: case h
ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
hsv' : InjOn v s
g : ι ≃ { x // x ∈ Y }
hg : ∀ i ∈ s, ↑(g i) = v i
i : ι
hi : i ∈ s
⊢ (b₀.reindex g.symm) i = v i
state_after: no goals

tactic: rwa [orthonormal_subtype_range hsv]
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
⊢ Orthonormal 𝕜 Subtype.val
state_after: no goals

tactic: refine card_ι.symm.trans ?_
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
⊢ Fintype.card ι = Y.card
state_after: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
⊢ finrank 𝕜 E = Y.card

tactic: exact FiniteDimensional.finrank_eq_card_finset_basis b₀.toBasis
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
⊢ finrank 𝕜 E = Y.card
state_after: no goals

tactic: rwa [← range_restrict]
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
⊢ v '' s ⊆ ↑Y
state_after: no goals

tactic: rw [Set.injOn_iff_injective]
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
⊢ InjOn v s
state_after: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
⊢ Injective (s.restrict v)

tactic: exact hsv
state_before: ι✝ : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁸ : NormedAddCommGroup E'
inst✝⁷ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : InnerProductSpace ℝ F
F' : Type u_7
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : InnerProductSpace ℝ F'
inst✝² : Fintype ι✝
v✝ : Set E
A : ι✝ → Submodule 𝕜 E
inst✝¹ : FiniteDimensional 𝕜 E
ι : Type u_8
inst✝ : Fintype ι
card_ι : finrank 𝕜 E = Fintype.card ι
v : ι → E
s : Set ι
hv : Orthonormal 𝕜 (s.restrict v)
hsv : Injective (s.restrict v)
hX✝ : Orthonormal 𝕜 Subtype.val
Y : Finset E
b₀ : OrthonormalBasis { x // x ∈ Y } 𝕜 E
hX : range (s.restrict v) ⊆ ↑Y
hb₀ : ⇑b₀ = Subtype.val
hιY : Fintype.card ι = Y.card
hvsY : MapsTo v s ↑Y
⊢ Injective (s.restrict v)
state_after: no goals