/-
Copyright 2025 The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-/importFormalConjecturesUtil
ClosedInvariantSubspace T is the type of non-trivial (different from H and {0}) closed
subspaces of a complex vector space H that are invariant under the action of linear map T.
Show that every bounded linear operator T : H → H on a separable Hilbert space H of dimension
at least 2 has a non-trivial closed T-invariant subspace: a closed linear subspace W of H,
which is different from H and from {0}, such that T ( W ) ⊂ W. One needs the assumption that
the dimension of H is at least 2 because otherwise any subspace would be either H or {0}.
Every (bounded) linear operator T : H → H on a finite-dimensional linear space H of dimension
at least 2 has a non-trivial (closed) T-invariant subspace. This can be solved using the Jordan
normal form, which is
not yet in mathlib.
Every bounded linear operator T : H → H on a non-separable Hilbert space H has a
non-trivial closed T-invariant subspace. Such an invariant space is given by considering the
closure of the linear span of the orbit of any single non-zero vector.
@[categoryresearchsolved,AMS47]theoremInvariant_subspace_problem_non_separable[InnerProductSpaceℂH][CompleteSpaceH](h:¬TopologicalSpace.SeparableSpaceH)(T:H→L[ℂ]H):Nonempty(ClosedInvariantSubspaceT):=byH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]H⊢ Nonempty(ClosedInvariantSubspaceT)have:=TopologicalSpace.nontrivial_of_not_separableSpacehH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialH⊢ Nonempty(ClosedInvariantSubspaceT)obtain⟨x,hx⟩:=exists_ne(0:H)H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0⊢ Nonempty(ClosedInvariantSubspaceT)-- W = closure of span of orbit {x, Tx, T²x, ...}setS:=Set.range(funn:ℕ=>(T^n)x)withhS_defH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)x⊢ Nonempty(ClosedInvariantSubspaceT)setW:=(Submodule.spanℂS).topologicalClosurewithhW_defH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ Nonempty(ClosedInvariantSubspaceT)refine⟨⟨W,?_,?_,isClosed_closure,?_⟩⟩refine_1H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ W≠⊥refine_2H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ W≠⊤refine_3H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ Submodule.map(↑T)W≤W·refine_1H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ W≠⊥-- x ∈ W and x ≠ 0have:x∈(W:SubmoduleℂH):=Submodule.le_topologicalClosure_(Submodule.subset_span⟨0,byH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ (funn↦(T^n)x)0=xrefine_1H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis✝:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosurethis:x∈W⊢ W≠⊥simpAll goals completed! 🐙refine_1H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis✝:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosurethis:x∈W⊢ W≠⊥⟩)refine_1H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis✝:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosurethis:x∈W⊢ W≠⊥grind[Submodule.mem_bot]All goals completed! 🐙·refine_2H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ W≠⊤--W is separable (orbit countable → span separable → closure separable) but H isn'thavehsep:TopologicalSpace.IsSeparable(W:SetH):=((Set.countable_range_).isSeparable).span.closurerefine_2H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosurehsep:TopologicalSpace.IsSeparable↑W⊢ W≠⊤contraposehrefine_2H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosurehsep:TopologicalSpace.IsSeparable↑Wh:W=⊤⊢ TopologicalSpace.SeparableSpaceHsimpa[h,TopologicalSpace.isSeparable_univ_iff]usinghsepAll goals completed! 🐙·refine_3H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ Submodule.map(↑T)W≤W-- T maps orbit into orbit, hence span into span, hence closure into closurecalcSubmodule.mapT.toLinearMap(Submodule.spanℂS).topologicalClosure≤(Submodule.mapT.toLinearMap(Submodule.spanℂS)).topologicalClosure:=Submodule.topologicalClosure_mapT__≤(Submodule.spanℂS).topologicalClosure:=byH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ (Submodule.map(↑T)(Submodule.spanℂS)).topologicalClosure≤(Submodule.spanℂS).topologicalClosureapplySubmodule.topologicalClosure_monoH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ Submodule.map(↑T)(Submodule.spanℂS)≤Submodule.spanℂSrw[Submodule.map_spanH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ Submodule.spanℂ(⇑↑T''S)≤Submodule.spanℂSH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ Submodule.spanℂ(⇑↑T''S)≤Submodule.spanℂS]H:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ Submodule.spanℂ(⇑↑T''S)≤Submodule.spanℂSgcongrhH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosure⊢ ⇑↑T''S⊆Srintro_⟨_,⟨n,rfl⟩,rfl⟩hH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosuren:ℕ⊢ ↑T((funn↦(T^n)x)n)∈Sexact⟨n+1,byH:Type u_1inst✝²:NormedAddCommGroupHinst✝¹:InnerProductSpaceℂHinst✝:CompleteSpaceHh:¬TopologicalSpace.SeparableSpaceHT:H→L[ℂ]Hthis:NontrivialHx:Hhx:x≠0S:SetH:=Set.rangefunn↦(T^n)xhS_def:S=Set.rangefunn↦(T^n)xW:SubmoduleℂH:=(Submodule.spanℂS).topologicalClosurehW_def:W=(Submodule.spanℂS).topologicalClosuren:ℕ⊢ (funn↦(T^n)x)(n+1)=↑T((funn↦(T^n)x)n)simp[pow_succ']All goals completed! 🐙⟩
Every normal linear operator T : H → H on a Hilbert space H of dimension at least 2 has a
non-trivial closed T-invariant subspace. If T is a multiple of the identity, one can tafrake any
non-trivial subspace . If not, one can take any nontrivial spectral subspace of T.
There exists a bounded linear operator T on the l1 space (lp (fun (_ : ℕ) => ℂ) 1)) without
non-trivial closed T-invariant subspace Read 1985, see
also the first counterexample by Enflo Enflo 1987, submitted
in 1981.