𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
⊢ ∀ (x : F ≃ₗᵢ[ℝ] F), x ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
⊢ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ) = ⊤
rw [Subgroup.eq_top_iff']
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
φ : F ≃ₗᵢ[ℝ] F
⊢ φ ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
⊢ ∀ (x : F ≃ₗᵢ[ℝ] F), x ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
intro φ
case intro.intro
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
l : List F
left✝ : List.length l ≤ finrank ℝ F
⊢ List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l) ∈
    Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
φ : F ≃ₗᵢ[ℝ] F
⊢ φ ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
rcases φ.reflections_generate_dim with ⟨l, _, rfl⟩
case intro.intro
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
l : List F
left✝ : List.length l ≤ finrank ℝ F
⊢ ∀ (x : F ≃ₗᵢ[ℝ] F),
    x ∈ List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l →
      x ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
case intro.intro
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
l : List F
left✝ : List.length l ≤ finrank ℝ F
⊢ List.prod (List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l) ∈
    Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
apply (Subgroup.closure _).list_prod_mem
case intro.intro
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
l : List F
left✝ : List.length l ≤ finrank ℝ F
x : F ≃ₗᵢ[ℝ] F
hx : x ∈ List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l
⊢ x ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
case intro.intro
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
l : List F
left✝ : List.length l ≤ finrank ℝ F
⊢ ∀ (x : F ≃ₗᵢ[ℝ] F),
    x ∈ List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l →
      x ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
intro x hx
case intro.intro.intro.intro
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
l : List F
left✝¹ : List.length l ≤ finrank ℝ F
x : F ≃ₗᵢ[ℝ] F
hx : x ∈ List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l
a : F
left✝ : a ∈ l
hax : reflection (Submodule.span ℝ {a})ᗮ = x
⊢ x ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
case intro.intro
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
l : List F
left✝ : List.length l ≤ finrank ℝ F
x : F ≃ₗᵢ[ℝ] F
hx : x ∈ List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l
⊢ x ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
rcases List.mem_map.mp hx with ⟨a, _, hax⟩
no goals
case intro.intro.intro.intro
𝕜 : Type ?u.1078272
E : Type ?u.1078275
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : FiniteDimensional ℝ F
l : List F
left✝¹ : List.length l ≤ finrank ℝ F
x : F ≃ₗᵢ[ℝ] F
hx : x ∈ List.map (fun v => reflection (Submodule.span ℝ {v})ᗮ) l
a : F
left✝ : a ∈ l
hax : reflection (Submodule.span ℝ {a})ᗮ = x
⊢ x ∈ Subgroup.closure (Set.range fun v => reflection (Submodule.span ℝ {v})ᗮ)
exact Subgroup.subset_closure ⟨a, hax⟩