case zero
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
⊢ ∃ l, List.length l ≤ Nat.zero ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)

case succ
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n
⊢ ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
induction' n with n IH generalizing φ
case zero
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
⊢ φ = 1
case zero
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
⊢ ∃ l, List.length l ≤ Nat.zero ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
refine' ⟨[], rfl.le, show φ = 1 from _⟩
case zero
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
this : ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
⊢ φ = 1
case zero
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
⊢ φ = 1
have : ker (ContinuousLinearMap.id ℝ F - φ) = ⊤ := by
  rwa [Nat.zero_eq, le_zero_iff, finrank_eq_zero, Submodule.orthogonal_eq_bot_iff] at hn
case zero
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
this : ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
⊢ 1 = φ
case zero
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
this : ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
⊢ φ = 1
symm
case zero.h
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
this : ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
x : F
⊢ ↑1 x = ↑φ x
case zero
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
this : ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
⊢ 1 = φ
ext x
case zero.h
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
this✝ : ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
x : F
this : ↑↑(ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) x = ↑0 x
⊢ ↑1 x = ↑φ x
case zero.h
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
this : ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
x : F
⊢ ↑1 x = ↑φ x
have := LinearMap.congr_fun (LinearMap.ker_eq_top.mp this) x
no goals
case zero.h
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
this✝ : ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
x : F
this : ↑↑(ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) x = ↑0 x
⊢ ↑1 x = ↑φ x
simpa only [sub_eq_zero, ContinuousLinearMap.coe_sub, LinearMap.sub_apply,
  LinearMap.zero_apply] using this
no goals
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n
φ : F ≃ₗᵢ[ℝ] F
hn : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.zero
⊢ ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)) = ⊤
rwa [Nat.zero_eq, le_zero_iff, finrank_eq_zero, Submodule.orthogonal_eq_bot_iff] at hn
case succ
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case succ
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
let W := ker (ContinuousLinearMap.id ℝ F - φ)
case succ
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case succ
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
have hW : ∀ w ∈ W, φ w = w := fun w hw => (sub_eq_zero.mp hw).symm
case pos
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : finrank ℝ { x // x ∈ Wᗮ } ≤ n
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)

case neg
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case succ
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
by_cases hn' : finrank ℝ Wᗮ ≤ n
case neg
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
haveI : Nontrivial Wᗮ := nontrivial_of_finrank_pos (by linarith [zero_le n] : 0 < finrank ℝ Wᗮ)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
obtain ⟨v, hv⟩ := exists_ne (0 : Wᗮ)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
have hφv : φ v ∈ Wᗮ := by
  intro w hw
  rw [← hW w hw, LinearIsometryEquiv.inner_map_map]
  exact v.prop w hw
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
have hv' : (v : F) ∉ W := by
  intro h
  exact hv ((Submodule.mem_left_iff_eq_zero_of_disjoint W.orthogonal_disjoint).mp h)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
let x : F := v - φ v
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
let ρ := reflection (ℝ ∙ x)ᗮ
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
let V := ker (ContinuousLinearMap.id ℝ F - φ.trans ρ)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
have hV : ∀ w, ρ (φ w) = w → w ∈ V := by
  intro w hw
  change w - ρ (φ w) = 0
  rw [sub_eq_zero, hw]
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
have H₂V : W ≤ V := by
  intro w hw
  apply hV
  rw [hW w hw]
  refine' reflection_mem_subspace_eq_self _
  rw [Submodule.mem_orthogonal_singleton_iff_inner_left]
  exact Submodule.sub_mem _ v.prop hφv _ hw
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
have H₁V : (v : F) ∈ V := by
  apply hV
  have : ρ v = φ v := reflection_sub (φ.norm_map v).symm
  rw [← this]
  exact reflection_reflection _ _
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this : finrank ℝ { x // x ∈ Vᗮ } ≤ n
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
have : finrank ℝ Vᗮ ≤ n := by
  change finrank ℝ Wᗮ ≤ n + 1 at hn
  have : finrank ℝ W + 1 ≤ finrank ℝ V :=
    Submodule.finrank_lt_finrank_of_lt (SetLike.lt_iff_le_and_exists.2 ⟨H₂V, v, H₁V, hv'⟩)
  have : finrank ℝ V + finrank ℝ Vᗮ = finrank ℝ F := V.finrank_add_finrank_orthogonal
  have : finrank ℝ W + finrank ℝ Wᗮ = finrank ℝ F := W.finrank_add_finrank_orthogonal
  linarith
case neg.intro.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this : finrank ℝ { x // x ∈ Vᗮ } ≤ n
l : List F
hl : List.length l ≤ n
hφl : ρ * φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this : finrank ℝ { x // x ∈ Vᗮ } ≤ n
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
obtain ⟨l, hl, hφl⟩ := IH (ρ * φ) this
case neg.intro.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this : finrank ℝ { x // x ∈ Vᗮ } ≤ n
l : List F
hl : List.length l ≤ n
hφl : ρ * φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
⊢ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) (x :: l))
case neg.intro.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this : finrank ℝ { x // x ∈ Vᗮ } ≤ n
l : List F
hl : List.length l ≤ n
hφl : ρ * φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
refine' ⟨x::l, Nat.succ_le_succ hl, _⟩
case neg.intro.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this : finrank ℝ { x // x ∈ Vᗮ } ≤ n
l : List F
hl : List.length l ≤ n
hφl : ρ * φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
⊢ φ = reflection (Submodule.span ℝ {x})ᗮ * List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this : finrank ℝ { x // x ∈ Vᗮ } ≤ n
l : List F
hl : List.length l ≤ n
hφl : ρ * φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
⊢ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) (x :: l))
rw [List.map_cons, List.prod_cons]
case neg.intro.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝¹ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this✝ : finrank ℝ { x // x ∈ Vᗮ } ≤ n
l : List F
hl : List.length l ≤ n
hφl : ρ * φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
this :
  reflection (Submodule.span ℝ {↑v - ↑φ ↑v})ᗮ * (reflection (Submodule.span ℝ {↑v - ↑φ ↑v})ᗮ * φ) =
    reflection (Submodule.span ℝ {↑v - ↑φ ↑v})ᗮ * List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
⊢ φ = reflection (Submodule.span ℝ {x})ᗮ * List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case neg.intro.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝¹ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this✝ : finrank ℝ { x // x ∈ Vᗮ } ≤ n
l : List F
hl : List.length l ≤ n
hφl : ρ * φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
this :
  (fun x x_1 => x * x_1) ρ (ρ * φ) =
    (fun x x_1 => x * x_1) ρ (List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l))
⊢ φ = reflection (Submodule.span ℝ {x})ᗮ * List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
dsimp only at this
no goals
case neg.intro.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝¹ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
this✝ : finrank ℝ { x // x ∈ Vᗮ } ≤ n
l : List F
hl : List.length l ≤ n
hφl : ρ * φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
this :
  reflection (Submodule.span ℝ {↑v - ↑φ ↑v})ᗮ * (reflection (Submodule.span ℝ {↑v - ↑φ ↑v})ᗮ * φ) =
    reflection (Submodule.span ℝ {↑v - ↑φ ↑v})ᗮ * List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
⊢ φ = reflection (Submodule.span ℝ {x})ᗮ * List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
rwa [← mul_assoc, reflection_mul_reflection, one_mul] at this
case pos.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : finrank ℝ { x // x ∈ Wᗮ } ≤ n
V : List F
hV₁ : List.length V ≤ n
hV₂ : φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) V)
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
case pos
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : finrank ℝ { x // x ∈ Wᗮ } ≤ n
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
obtain ⟨V, hV₁, hV₂⟩ := IH φ hn'
no goals
case pos.intro.intro
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : finrank ℝ { x // x ∈ Wᗮ } ≤ n
V : List F
hV₁ : List.length V ≤ n
hV₂ : φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) V)
⊢ ∃ l, List.length l ≤ Nat.succ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
exact ⟨V, hV₁.trans n.le_succ, hV₂⟩
no goals
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
⊢ 0 < finrank ℝ { x // x ∈ Wᗮ }
linarith [zero_le n]
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
w : F
hw : w ∈ W
⊢ inner w (↑φ ↑v) = 0
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
⊢ ↑φ ↑v ∈ Wᗮ
intro w hw
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
w : F
hw : w ∈ W
⊢ inner w ↑v = 0
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
w : F
hw : w ∈ W
⊢ inner w (↑φ ↑v) = 0
rw [← hW w hw, LinearIsometryEquiv.inner_map_map]
no goals
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
w : F
hw : w ∈ W
⊢ inner w ↑v = 0
exact v.prop w hw
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
h : ↑v ∈ W
⊢ False
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
⊢ ¬↑v ∈ W
intro h
no goals
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
h : ↑v ∈ W
⊢ False
exact hv ((Submodule.mem_left_iff_eq_zero_of_disjoint W.orthogonal_disjoint).mp h)
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
w : F
hw : ↑ρ (↑φ w) = w
⊢ w ∈ V
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
⊢ ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
intro w hw
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
w : F
hw : ↑ρ (↑φ w) = w
⊢ w - ↑ρ (↑φ w) = 0
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
w : F
hw : ↑ρ (↑φ w) = w
⊢ w ∈ V
change w - ρ (φ w) = 0
no goals
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
w : F
hw : ↑ρ (↑φ w) = w
⊢ w - ↑ρ (↑φ w) = 0
rw [sub_eq_zero, hw]
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ w ∈ V
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
⊢ W ≤ V
intro w hw
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ ↑ρ (↑φ w) = w
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ w ∈ V
apply hV
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ ↑ρ w = w
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ ↑ρ (↑φ w) = w
rw [hW w hw]
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ w ∈ (Submodule.span ℝ {x})ᗮ
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ ↑ρ w = w
refine' reflection_mem_subspace_eq_self _
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ inner w x = 0
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ w ∈ (Submodule.span ℝ {x})ᗮ
rw [Submodule.mem_orthogonal_singleton_iff_inner_left]
no goals
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
w : F
hw : w ∈ W
⊢ inner w x = 0
exact Submodule.sub_mem _ v.prop hφv _ hw
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
⊢ ↑ρ (↑φ ↑v) = ↑v
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
⊢ ↑v ∈ V
apply hV
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
this : ↑ρ ↑v = ↑φ ↑v
⊢ ↑ρ (↑φ ↑v) = ↑v
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
⊢ ↑ρ (↑φ ↑v) = ↑v
have : ρ v = φ v := reflection_sub (φ.norm_map v).symm
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
this : ↑ρ ↑v = ↑φ ↑v
⊢ ↑ρ (↑ρ ↑v) = ↑v
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
this : ↑ρ ↑v = ↑φ ↑v
⊢ ↑ρ (↑φ ↑v) = ↑v
rw [← this]
no goals
case a
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
this : ↑ρ ↑v = ↑φ ↑v
⊢ ↑ρ (↑ρ ↑v) = ↑v
exact reflection_reflection _ _
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
hn : finrank ℝ { x // x ∈ Wᗮ } ≤ n + 1
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
hn :
  finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ Nat.succ n
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
change finrank ℝ Wᗮ ≤ n + 1 at hn
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
hn : finrank ℝ { x // x ∈ Wᗮ } ≤ n + 1
this : finrank ℝ { x // x ∈ W } + 1 ≤ finrank ℝ { x // x ∈ V }
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
hn : finrank ℝ { x // x ∈ Wᗮ } ≤ n + 1
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
have : finrank ℝ W + 1 ≤ finrank ℝ V :=
  Submodule.finrank_lt_finrank_of_lt (SetLike.lt_iff_le_and_exists.2 ⟨H₂V, v, H₁V, hv'⟩)
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝¹ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
hn : finrank ℝ { x // x ∈ Wᗮ } ≤ n + 1
this✝ : finrank ℝ { x // x ∈ W } + 1 ≤ finrank ℝ { x // x ∈ V }
this : finrank ℝ { x // x ∈ V } + finrank ℝ { x // x ∈ Vᗮ } = finrank ℝ F
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
hn : finrank ℝ { x // x ∈ Wᗮ } ≤ n + 1
this : finrank ℝ { x // x ∈ W } + 1 ≤ finrank ℝ { x // x ∈ V }
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
have : finrank ℝ V + finrank ℝ Vᗮ = finrank ℝ F := V.finrank_add_finrank_orthogonal
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝² : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
hn : finrank ℝ { x // x ∈ Wᗮ } ≤ n + 1
this✝¹ : finrank ℝ { x // x ∈ W } + 1 ≤ finrank ℝ { x // x ∈ V }
this✝ : finrank ℝ { x // x ∈ V } + finrank ℝ { x // x ∈ Vᗮ } = finrank ℝ F
this : finrank ℝ { x // x ∈ W } + finrank ℝ { x // x ∈ Wᗮ } = finrank ℝ F
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝¹ : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
hn : finrank ℝ { x // x ∈ Wᗮ } ≤ n + 1
this✝ : finrank ℝ { x // x ∈ W } + 1 ≤ finrank ℝ { x // x ∈ V }
this : finrank ℝ { x // x ∈ V } + finrank ℝ { x // x ∈ Vᗮ } = finrank ℝ F
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
have : finrank ℝ W + finrank ℝ Wᗮ = finrank ℝ F := W.finrank_add_finrank_orthogonal
no goals
𝕜 : Type ?u.1021326
E : Type ?u.1021329
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
n✝ : ℕ
φ✝ : F ≃ₗᵢ[ℝ] F
hn✝ : finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ✝.toLinearEquiv)))ᗮ } ≤ n✝
n : ℕ
IH :
  ∀ (φ : F ≃ₗᵢ[ℝ] F),
    finrank ℝ { x // x ∈ (ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv)))ᗮ } ≤ n →
      ∃ l, List.length l ≤ n ∧ φ = List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l)
φ : F ≃ₗᵢ[ℝ] F
W : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk φ.toLinearEquiv))
hW : ∀ (w : F), w ∈ W → ↑φ w = w
hn' : ¬finrank ℝ { x // x ∈ Wᗮ } ≤ n
this✝² : Nontrivial { x // x ∈ Wᗮ }
v : { x // x ∈ Wᗮ }
hv : v ≠ 0
hφv : ↑φ ↑v ∈ Wᗮ
hv' : ¬↑v ∈ W
x : F := ↑v - ↑φ ↑v
ρ : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {x})ᗮ
V : Submodule ℝ F := ker (ContinuousLinearMap.id ℝ F - ↑(ContinuousLinearEquiv.mk (trans φ ρ).toLinearEquiv))
hV : ∀ (w : F), ↑ρ (↑φ w) = w → w ∈ V
H₂V : W ≤ V
H₁V : ↑v ∈ V
hn : finrank ℝ { x // x ∈ Wᗮ } ≤ n + 1
this✝¹ : finrank ℝ { x // x ∈ W } + 1 ≤ finrank ℝ { x // x ∈ V }
this✝ : finrank ℝ { x // x ∈ V } + finrank ℝ { x // x ∈ Vᗮ } = finrank ℝ F
this : finrank ℝ { x // x ∈ W } + finrank ℝ { x // x ∈ Wᗮ } = finrank ℝ F
⊢ finrank ℝ { x // x ∈ Vᗮ } ≤ n
linarith