dynamics.omega_limit
⟷
Mathlib.Dynamics.OmegaLimit
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -266,7 +266,7 @@ theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
by
rw [omegaLimit_eq_iInter]
intro _ hx
- rw [mem_Inter] at hx
+ rw [mem_Inter] at hx
exact hx ⟨u, hu⟩
#align omega_limit_subset_closure_fw_image omegaLimit_subset_closure_fw_image
-/
@@ -295,7 +295,7 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
by
have : (⋃ u ∈ f, j u) = ⋃ u : ↥f.sets, j u := bUnion_eq_Union _ _
rw [this, diff_subset_comm, diff_Union]
- rw [omegaLimit_eq_iInter_inter _ _ _ hv₁] at hn₂
+ rw [omegaLimit_eq_iInter_inter _ _ _ hv₁] at hn₂
simp_rw [diff_compl]
rw [← inter_Inter]
exact subset.trans (inter_subset_right _ _) hn₂
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -374,7 +374,7 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
by
rcases hc₂ with ⟨v, hv₁, hv₂⟩
rw [omegaLimit_eq_iInter_inter _ _ _ hv₁]
- apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
+ apply IsCompact.nonempty_iInter_of_directed_nonempty_isCompact_isClosed
· rintro ⟨u₁, hu₁⟩ ⟨u₂, hu₂⟩
use⟨u₁ ∩ u₂, inter_mem hu₁ hu₂⟩; constructor
all_goals exact closure_mono (image2_subset (inter_subset_inter_left _ (by simp)) subset.rfl)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2020 Jean Lo. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo
-/
-import Mathbin.Dynamics.Flow
+import Dynamics.Flow
#align_import dynamics.omega_limit from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
@@ -288,7 +288,7 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
rcases hc₂ with ⟨v, hv₁, hv₂⟩
let k := closure (image2 ϕ v s)
have hk : IsCompact (k \ n) :=
- IsCompact.diff (isCompact_of_isClosed_subset hc₁ isClosed_closure hv₂) hn₁
+ IsCompact.diff (IsCompact.of_isClosed_subset hc₁ isClosed_closure hv₂) hn₁
let j u := closure (image2 ϕ (u ∩ v) s)ᶜ
have hj₁ : ∀ u ∈ f, IsOpen (j u) := fun _ _ => is_open_compl_iff.mpr isClosed_closure
have hj₂ : k \ n ⊆ ⋃ u ∈ f, j u :=
@@ -383,7 +383,7 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
nonempty.image2 (nonempty_of_mem (inter_mem u.prop hv₁)) hs
exact hn.mono subset_closure
· intro
- apply isCompact_of_isClosed_subset hc₁ isClosed_closure
+ apply IsCompact.of_isClosed_subset hc₁ isClosed_closure
calc
_ ⊆ closure (image2 ϕ v s) := closure_mono (image2_subset (inter_subset_right _ _) subset.rfl)
_ ⊆ c := hv₂
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -376,7 +376,7 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
rw [omegaLimit_eq_iInter_inter _ _ _ hv₁]
apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
· rintro ⟨u₁, hu₁⟩ ⟨u₂, hu₂⟩
- use ⟨u₁ ∩ u₂, inter_mem hu₁ hu₂⟩; constructor
+ use⟨u₁ ∩ u₂, inter_mem hu₁ hu₂⟩; constructor
all_goals exact closure_mono (image2_subset (inter_subset_inter_left _ (by simp)) subset.rfl)
· intro u
have hn : (image2 ϕ (u ∩ v) s).Nonempty :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2020 Jean Lo. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo
-
-! This file was ported from Lean 3 source module dynamics.omega_limit
-! leanprover-community/mathlib commit ee05e9ce1322178f0c12004eb93c00d2c8c00ed2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Dynamics.Flow
+#align_import dynamics.omega_limit from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
+
/-!
# ω-limits
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -59,13 +59,10 @@ def omegaLimit [TopologicalSpace β] (f : Filter τ) (ϕ : τ → α → β) (s
#align omega_limit omegaLimit
-/
--- mathport name: omega_limit
scoped[omegaLimit] notation "ω" => omegaLimit
--- mathport name: omega_limit.at_top
scoped[omegaLimit] notation "ω⁺" => omegaLimit Filter.atTop
--- mathport name: omega_limit.at_bot
scoped[omegaLimit] notation "ω⁻" => omegaLimit Filter.atBot
variable [TopologicalSpace β]
@@ -77,10 +74,13 @@ variable (f : Filter τ) (ϕ : τ → α → β) (s s₁ s₂ : Set α)
-/
+#print omegaLimit_def /-
theorem omegaLimit_def : ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ u s) :=
rfl
#align omega_limit_def omegaLimit_def
+-/
+#print omegaLimit_subset_of_tendsto /-
theorem omegaLimit_subset_of_tendsto {m : τ → τ} {f₁ f₂ : Filter τ} (hf : Tendsto m f₁ f₂) :
ω f₁ (fun t x => ϕ (m t) x) s ⊆ ω f₂ ϕ s :=
by
@@ -88,19 +88,27 @@ theorem omegaLimit_subset_of_tendsto {m : τ → τ} {f₁ f₂ : Filter τ} (hf
rw [← image2_image_left]
exact closure_mono (image2_subset (image_preimage_subset _ _) subset.rfl)
#align omega_limit_subset_of_tendsto omegaLimit_subset_of_tendsto
+-/
+#print omegaLimit_mono_left /-
theorem omegaLimit_mono_left {f₁ f₂ : Filter τ} (hf : f₁ ≤ f₂) : ω f₁ ϕ s ⊆ ω f₂ ϕ s :=
omegaLimit_subset_of_tendsto ϕ s (tendsto_id'.2 hf)
#align omega_limit_mono_left omegaLimit_mono_left
+-/
+#print omegaLimit_mono_right /-
theorem omegaLimit_mono_right {s₁ s₂ : Set α} (hs : s₁ ⊆ s₂) : ω f ϕ s₁ ⊆ ω f ϕ s₂ :=
iInter₂_mono fun u hu => closure_mono (image2_subset Subset.rfl hs)
#align omega_limit_mono_right omegaLimit_mono_right
+-/
+#print isClosed_omegaLimit /-
theorem isClosed_omegaLimit : IsClosed (ω f ϕ s) :=
isClosed_iInter fun u => isClosed_iInter fun hu => isClosed_closure
#align is_closed_omega_limit isClosed_omegaLimit
+-/
+#print mapsTo_omegaLimit' /-
theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ᶠ t in f, EqOn (gb ∘ ϕ t) (ϕ' t ∘ ga) s) (hgc : Continuous gb) :
@@ -113,22 +121,29 @@ theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter
gb (ϕ t x) = ϕ' t (ga x) := ht.2 hx
_ ∈ image2 ϕ' u s' := mem_image2_of_mem ht.1 (hs hx)
#align maps_to_omega_limit' mapsTo_omegaLimit'
+-/
+#print mapsTo_omegaLimit /-
theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ t x, gb (ϕ t x) = ϕ' t (ga x)) (hgc : Continuous gb) :
MapsTo gb (ω f ϕ s) (ω f ϕ' s') :=
mapsTo_omegaLimit' _ hs (eventually_of_forall fun t x hx => hg t x) hgc
#align maps_to_omega_limit mapsTo_omegaLimit
+-/
+#print omegaLimit_image_eq /-
theorem omegaLimit_image_eq {α' : Type _} (ϕ : τ → α' → β) (f : Filter τ) (g : α → α') :
ω f ϕ (g '' s) = ω f (fun t x => ϕ t (g x)) s := by simp only [omegaLimit, image2_image_right]
#align omega_limit_image_eq omegaLimit_image_eq
+-/
+#print omegaLimit_preimage_subset /-
theorem omegaLimit_preimage_subset {α' : Type _} (ϕ : τ → α' → β) (s : Set α') (f : Filter τ)
(g : α → α') : ω f (fun t x => ϕ t (g x)) (g ⁻¹' s) ⊆ ω f ϕ s :=
mapsTo_omegaLimit _ (mapsTo_preimage _ _) (fun t x => rfl) continuous_id
#align omega_limit_preimage_subset omegaLimit_preimage_subset
+-/
/-!
### Equivalent definitions of the omega limit
@@ -138,6 +153,7 @@ characterising ω-limits:
-/
+#print mem_omegaLimit_iff_frequently /-
/-- An element `y` is in the ω-limit set of `s` w.r.t. `f` if the
preimages of an arbitrary neighbourhood of `y` frequently
(w.r.t. `f`) intersects of `s`. -/
@@ -153,7 +169,9 @@ theorem mem_omegaLimit_iff_frequently (y : β) :
rcases h _ hn hu with ⟨_, ht, _, hx, hϕtx⟩
exact ⟨_, hϕtx, _, _, ht, hx, rfl⟩
#align mem_omega_limit_iff_frequently mem_omegaLimit_iff_frequently
+-/
+#print mem_omegaLimit_iff_frequently₂ /-
/-- An element `y` is in the ω-limit set of `s` w.r.t. `f` if the
forward images of `s` frequently (w.r.t. `f`) intersect arbitrary
neighbourhoods of `y`. -/
@@ -161,7 +179,9 @@ theorem mem_omegaLimit_iff_frequently₂ (y : β) :
y ∈ ω f ϕ s ↔ ∀ n ∈ 𝓝 y, ∃ᶠ t in f, (ϕ t '' s ∩ n).Nonempty := by
simp_rw [mem_omegaLimit_iff_frequently, image_inter_nonempty_iff]
#align mem_omega_limit_iff_frequently₂ mem_omegaLimit_iff_frequently₂
+-/
+#print mem_omegaLimit_singleton_iff_map_cluster_point /-
/-- An element `y` is in the ω-limit of `x` w.r.t. `f` if the forward
images of `x` frequently (w.r.t. `f`) falls within an arbitrary
neighbourhood of `y`. -/
@@ -169,21 +189,27 @@ theorem mem_omegaLimit_singleton_iff_map_cluster_point (x : α) (y : β) :
y ∈ ω f ϕ {x} ↔ MapClusterPt y f fun t => ϕ t x := by
simp_rw [mem_omegaLimit_iff_frequently, mapClusterPt_iff, singleton_inter_nonempty, mem_preimage]
#align mem_omega_limit_singleton_iff_map_cluster_point mem_omegaLimit_singleton_iff_map_cluster_point
+-/
/-!
### Set operations and omega limits
-/
+#print omegaLimit_inter /-
theorem omegaLimit_inter : ω f ϕ (s₁ ∩ s₂) ⊆ ω f ϕ s₁ ∩ ω f ϕ s₂ :=
subset_inter (omegaLimit_mono_right _ _ (inter_subset_left _ _))
(omegaLimit_mono_right _ _ (inter_subset_right _ _))
#align omega_limit_inter omegaLimit_inter
+-/
+#print omegaLimit_iInter /-
theorem omegaLimit_iInter (p : ι → Set α) : ω f ϕ (⋂ i, p i) ⊆ ⋂ i, ω f ϕ (p i) :=
subset_iInter fun i => omegaLimit_mono_right _ _ (iInter_subset _ _)
#align omega_limit_Inter omegaLimit_iInter
+-/
+#print omegaLimit_union /-
theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s₂ :=
by
ext y; constructor
@@ -199,12 +225,15 @@ theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s
exacts [omegaLimit_mono_right _ _ (subset_union_left _ _) hy,
omegaLimit_mono_right _ _ (subset_union_right _ _) hy]
#align omega_limit_union omegaLimit_union
+-/
+#print omegaLimit_iUnion /-
theorem omegaLimit_iUnion (p : ι → Set α) : (⋃ i, ω f ϕ (p i)) ⊆ ω f ϕ (⋃ i, p i) :=
by
rw [Union_subset_iff]
exact fun i => omegaLimit_mono_right _ _ (subset_Union _ _)
#align omega_limit_Union omegaLimit_iUnion
+-/
/-!
Different expressions for omega limits, useful for rewrites. In
@@ -213,21 +242,28 @@ subsets of some set `v` also in `f`.
-/
+#print omegaLimit_eq_iInter /-
theorem omegaLimit_eq_iInter : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ u s) :=
biInter_eq_iInter _ _
#align omega_limit_eq_Inter omegaLimit_eq_iInter
+-/
+#print omegaLimit_eq_biInter_inter /-
theorem omegaLimit_eq_biInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ (u ∩ v) s) :=
Subset.antisymm (iInter₂_mono' fun u hu => ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
(iInter₂_mono fun u hu => closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
#align omega_limit_eq_bInter_inter omegaLimit_eq_biInter_inter
+-/
+#print omegaLimit_eq_iInter_inter /-
theorem omegaLimit_eq_iInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) := by
rw [omegaLimit_eq_biInter_inter _ _ _ hv]; apply bInter_eq_Inter
#align omega_limit_eq_Inter_inter omegaLimit_eq_iInter_inter
+-/
+#print omegaLimit_subset_closure_fw_image /-
theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
ω f ϕ s ⊆ closure (image2 ϕ u s) :=
by
@@ -236,12 +272,14 @@ theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
rw [mem_Inter] at hx
exact hx ⟨u, hu⟩
#align omega_limit_subset_closure_fw_image omegaLimit_subset_closure_fw_image
+-/
/-!
### `ω-limits and compactness
-/
+#print eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset' /-
/-- A set is eventually carried into any open neighbourhood of its ω-limit:
if `c` is a compact set such that `closure {ϕ t x | t ∈ v, x ∈ s} ⊆ c` for some `v ∈ f`
and `n` is an open neighbourhood of `ω f ϕ s`, then for some `u ∈ f` we have
@@ -286,7 +324,9 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
compl_subset_compl.mp (subset.trans hnc (union_subset hw₃ hw₄))
exact ⟨_, hw₂, hw⟩
#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset' eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset'
+-/
+#print eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset /-
/-- A set is eventually carried into any open neighbourhood of its ω-limit:
if `c` is a compact set such that `closure {ϕ t x | t ∈ v, x ∈ s} ⊆ c` for some `v ∈ f`
and `n` is an open neighbourhood of `ω f ϕ s`, then for some `u ∈ f` we have
@@ -297,7 +337,9 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset' f ϕ _ hc₁
⟨_, hc₂, closure_minimal (image2_subset_iff.2 fun t => id) hc₁.IsClosed⟩ hn₁ hn₂
#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
+-/
+#print eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset /-
theorem eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset [T2Space β]
{c : Set β} (hc₁ : IsCompact c) (hc₂ : ∀ᶠ t in f, MapsTo (ϕ t) s c) {n : Set β} (hn₁ : IsOpen n)
(hn₂ : ω f ϕ s ⊆ n) : ∀ᶠ t in f, MapsTo (ϕ t) s n :=
@@ -308,13 +350,17 @@ theorem eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
refine' mem_of_superset hu_mem fun t ht x hx => _
exact hu (subset_closure <| mem_image2_of_mem ht hx)
#align eventually_maps_to_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
+-/
+#print eventually_closure_subset_of_isOpen_of_omegaLimit_subset /-
theorem eventually_closure_subset_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v : Set β}
(hv₁ : IsOpen v) (hv₂ : ω f ϕ s ⊆ v) : ∃ u ∈ f, closure (image2 ϕ u s) ⊆ v :=
eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset' _ _ _
isCompact_univ ⟨univ, univ_mem, subset_univ _⟩ hv₁ hv₂
#align eventually_closure_subset_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isOpen_of_omegaLimit_subset
+-/
+#print eventually_mapsTo_of_isOpen_of_omegaLimit_subset /-
theorem eventually_mapsTo_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v : Set β}
(hv₁ : IsOpen v) (hv₂ : ω f ϕ s ⊆ v) : ∀ᶠ t in f, MapsTo (ϕ t) s v :=
by
@@ -322,7 +368,9 @@ theorem eventually_mapsTo_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v :
refine' mem_of_superset hu_mem fun t ht x hx => _
exact hu (subset_closure <| mem_image2_of_mem ht hx)
#align eventually_maps_to_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isOpen_of_omegaLimit_subset
+-/
+#print nonempty_omegaLimit_of_isCompact_absorbing /-
/-- The ω-limit of a nonempty set w.r.t. a nontrivial filter is nonempty. -/
theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁ : IsCompact c)
(hc₂ : ∃ v ∈ f, closure (image2 ϕ v s) ⊆ c) (hs : s.Nonempty) : (ω f ϕ s).Nonempty :=
@@ -344,10 +392,13 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
_ ⊆ c := hv₂
· exact fun _ => isClosed_closure
#align nonempty_omega_limit_of_is_compact_absorbing nonempty_omegaLimit_of_isCompact_absorbing
+-/
+#print nonempty_omegaLimit /-
theorem nonempty_omegaLimit [CompactSpace β] [NeBot f] (hs : s.Nonempty) : (ω f ϕ s).Nonempty :=
nonempty_omegaLimit_of_isCompact_absorbing _ _ _ isCompact_univ ⟨univ, univ_mem, subset_univ _⟩ hs
#align nonempty_omega_limit nonempty_omegaLimit
+-/
end omegaLimit
@@ -363,6 +414,7 @@ variable {τ : Type _} [TopologicalSpace τ] [AddMonoid τ] [ContinuousAdd τ] {
open scoped omegaLimit
+#print Flow.isInvariant_omegaLimit /-
theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvariant ϕ (ω f ϕ s) :=
by
refine' fun t => maps_to.mono_right _ (omegaLimit_subset_of_tendsto ϕ s (hf t))
@@ -370,12 +422,15 @@ theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvar
mapsTo_omegaLimit _ (maps_to_id _) (fun t' x => (ϕ.map_add _ _ _).symm)
(continuous_const.flow ϕ continuous_id)
#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimit
+-/
+#print Flow.omegaLimit_image_subset /-
theorem omegaLimit_image_subset (t : τ) (ht : Tendsto (· + t) f f) : ω f ϕ (ϕ t '' s) ⊆ ω f ϕ s :=
by
simp only [omegaLimit_image_eq, ← map_add]
exact omegaLimit_subset_of_tendsto ϕ s ht
#align flow.omega_limit_image_subset Flow.omegaLimit_image_subset
+-/
end Flow
@@ -391,6 +446,7 @@ variable {τ : Type _} [TopologicalSpace τ] [AddCommGroup τ] [TopologicalAddGr
open scoped omegaLimit
+#print Flow.omegaLimit_image_eq /-
/-- the ω-limit of a forward image of `s` is the same as the ω-limit of `s`. -/
@[simp]
theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f ϕ (ϕ t '' s) = ω f ϕ s :=
@@ -399,7 +455,9 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
ω f ϕ s = ω f ϕ (ϕ (-t) '' (ϕ t '' s)) := by simp [image_image, ← map_add]
_ ⊆ ω f ϕ (ϕ t '' s) := omegaLimit_image_subset _ _ _ _ (hf _)
#align flow.omega_limit_image_eq Flow.omegaLimit_image_eq
+-/
+#print Flow.omegaLimit_omegaLimit /-
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s :=
by
simp only [subset_def, mem_omegaLimit_iff_frequently₂, frequently_iff]
@@ -420,6 +478,7 @@ theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ
rcases l₃ with ⟨ϕra, ho, ⟨_, _, hr, ha, hϕra⟩⟩
exact ⟨_, hr, ϕra, ⟨_, ha, hϕra⟩, ho₁ ho⟩
#align flow.omega_limit_omega_limit Flow.omegaLimit_omegaLimit
+-/
end Flow
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -112,7 +112,6 @@ theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter
calc
gb (ϕ t x) = ϕ' t (ga x) := ht.2 hx
_ ∈ image2 ϕ' u s' := mem_image2_of_mem ht.1 (hs hx)
-
#align maps_to_omega_limit' mapsTo_omegaLimit'
theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
@@ -277,13 +276,11 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
intro u hu
mono* using w
exact Inter_subset_of_subset u (Inter_subset_of_subset hu subset.rfl)
-
have hw₄ : kᶜ ⊆ closure (image2 ϕ w s)ᶜ :=
by
rw [compl_subset_compl]
calc
closure (image2 ϕ w s) ⊆ _ := closure_mono (image2_subset (inter_subset_right _ _) subset.rfl)
-
have hnc : nᶜ ⊆ k \ n ∪ kᶜ := by rw [union_comm, ← inter_subset, diff_eq, inter_comm]
have hw : closure (image2 ϕ w s) ⊆ n :=
compl_subset_compl.mp (subset.trans hnc (union_subset hw₃ hw₄))
@@ -345,7 +342,6 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
calc
_ ⊆ closure (image2 ϕ v s) := closure_mono (image2_subset (inter_subset_right _ _) subset.rfl)
_ ⊆ c := hv₂
-
· exact fun _ => isClosed_closure
#align nonempty_omega_limit_of_is_compact_absorbing nonempty_omegaLimit_of_isCompact_absorbing
@@ -402,7 +398,6 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
calc
ω f ϕ s = ω f ϕ (ϕ (-t) '' (ϕ t '' s)) := by simp [image_image, ← map_add]
_ ⊆ ω f ϕ (ϕ t '' s) := omegaLimit_image_subset _ _ _ _ (hf _)
-
#align flow.omega_limit_image_eq Flow.omegaLimit_image_eq
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -194,10 +194,10 @@ theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s
simp only [not_frequently, not_nonempty_iff_eq_empty, ← subset_empty_iff]
rintro ⟨⟨n₁, hn₁, h₁⟩, ⟨n₂, hn₂, h₂⟩⟩
refine' ⟨n₁ ∩ n₂, inter_mem hn₁ hn₂, h₁.mono fun t => _, h₂.mono fun t => _⟩
- exacts[subset.trans <| inter_subset_inter_right _ <| preimage_mono <| inter_subset_left _ _,
+ exacts [subset.trans <| inter_subset_inter_right _ <| preimage_mono <| inter_subset_left _ _,
subset.trans <| inter_subset_inter_right _ <| preimage_mono <| inter_subset_right _ _]
· rintro (hy | hy)
- exacts[omegaLimit_mono_right _ _ (subset_union_left _ _) hy,
+ exacts [omegaLimit_mono_right _ _ (subset_union_left _ _) hy,
omegaLimit_mono_right _ _ (subset_union_right _ _) hy]
#align omega_limit_union omegaLimit_union
@@ -234,7 +234,7 @@ theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
by
rw [omegaLimit_eq_iInter]
intro _ hx
- rw [mem_Inter] at hx
+ rw [mem_Inter] at hx
exact hx ⟨u, hu⟩
#align omega_limit_subset_closure_fw_image omegaLimit_subset_closure_fw_image
@@ -261,7 +261,7 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
by
have : (⋃ u ∈ f, j u) = ⋃ u : ↥f.sets, j u := bUnion_eq_Union _ _
rw [this, diff_subset_comm, diff_Union]
- rw [omegaLimit_eq_iInter_inter _ _ _ hv₁] at hn₂
+ rw [omegaLimit_eq_iInter_inter _ _ _ hv₁] at hn₂
simp_rw [diff_compl]
rw [← inter_Inter]
exact subset.trans (inter_subset_right _ _) hn₂
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -40,7 +40,7 @@ endowed with an order.
open Set Function Filter
-open Topology
+open scoped Topology
/-!
### Definition and notation
@@ -365,7 +365,7 @@ namespace Flow
variable {τ : Type _} [TopologicalSpace τ] [AddMonoid τ] [ContinuousAdd τ] {α : Type _}
[TopologicalSpace α] (f : Filter τ) (ϕ : Flow τ α) (s : Set α)
-open omegaLimit
+open scoped omegaLimit
theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvariant ϕ (ω f ϕ s) :=
by
@@ -393,7 +393,7 @@ namespace Flow
variable {τ : Type _} [TopologicalSpace τ] [AddCommGroup τ] [TopologicalAddGroup τ] {α : Type _}
[TopologicalSpace α] (f : Filter τ) (ϕ : Flow τ α) (s : Set α)
-open omegaLimit
+open scoped omegaLimit
/-- the ω-limit of a forward image of `s` is the same as the ω-limit of `s`. -/
@[simp]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -77,22 +77,10 @@ variable (f : Filter τ) (ϕ : τ → α → β) (s s₁ s₂ : Set α)
-/
-/- warning: omega_limit_def -> omegaLimit_def is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.iInter.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s))))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u2} β (Set.{u2} τ) (fun (u : Set.{u2} τ) => Set.iInter.{u3, 0} β (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (fun (H : Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s))))
-Case conversion may be inaccurate. Consider using '#align omega_limit_def omegaLimit_defₓ'. -/
theorem omegaLimit_def : ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ u s) :=
rfl
#align omega_limit_def omegaLimit_def
-/- warning: omega_limit_subset_of_tendsto -> omegaLimit_subset_of_tendsto is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (ϕ : τ -> α -> β) (s : Set.{u2} α) {m : τ -> τ} {f₁ : Filter.{u1} τ} {f₂ : Filter.{u1} τ}, (Filter.Tendsto.{u1, u1} τ τ m f₁ f₂) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₁ (fun (t : τ) (x : α) => ϕ (m t) x) s) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₂ ϕ s))
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (ϕ : τ -> α -> β) (s : Set.{u1} α) {m : τ -> τ} {f₁ : Filter.{u3} τ} {f₂ : Filter.{u3} τ}, (Filter.Tendsto.{u3, u3} τ τ m f₁ f₂) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₁ (fun (t : τ) (x : α) => ϕ (m t) x) s) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₂ ϕ s))
-Case conversion may be inaccurate. Consider using '#align omega_limit_subset_of_tendsto omegaLimit_subset_of_tendstoₓ'. -/
theorem omegaLimit_subset_of_tendsto {m : τ → τ} {f₁ f₂ : Filter τ} (hf : Tendsto m f₁ f₂) :
ω f₁ (fun t x => ϕ (m t) x) s ⊆ ω f₂ ϕ s :=
by
@@ -101,42 +89,18 @@ theorem omegaLimit_subset_of_tendsto {m : τ → τ} {f₁ f₂ : Filter τ} (hf
exact closure_mono (image2_subset (image_preimage_subset _ _) subset.rfl)
#align omega_limit_subset_of_tendsto omegaLimit_subset_of_tendsto
-/- warning: omega_limit_mono_left -> omegaLimit_mono_left is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (ϕ : τ -> α -> β) (s : Set.{u2} α) {f₁ : Filter.{u1} τ} {f₂ : Filter.{u1} τ}, (LE.le.{u1} (Filter.{u1} τ) (Preorder.toHasLe.{u1} (Filter.{u1} τ) (PartialOrder.toPreorder.{u1} (Filter.{u1} τ) (Filter.partialOrder.{u1} τ))) f₁ f₂) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₁ ϕ s) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₂ ϕ s))
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (ϕ : τ -> α -> β) (s : Set.{u1} α) {f₁ : Filter.{u3} τ} {f₂ : Filter.{u3} τ}, (LE.le.{u3} (Filter.{u3} τ) (Preorder.toLE.{u3} (Filter.{u3} τ) (PartialOrder.toPreorder.{u3} (Filter.{u3} τ) (Filter.instPartialOrderFilter.{u3} τ))) f₁ f₂) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₁ ϕ s) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₂ ϕ s))
-Case conversion may be inaccurate. Consider using '#align omega_limit_mono_left omegaLimit_mono_leftₓ'. -/
theorem omegaLimit_mono_left {f₁ f₂ : Filter τ} (hf : f₁ ≤ f₂) : ω f₁ ϕ s ⊆ ω f₂ ϕ s :=
omegaLimit_subset_of_tendsto ϕ s (tendsto_id'.2 hf)
#align omega_limit_mono_left omegaLimit_mono_left
-/- warning: omega_limit_mono_right -> omegaLimit_mono_right is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) {s₁ : Set.{u2} α} {s₂ : Set.{u2} α}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) s₁ s₂) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₂))
-but is expected to have type
- forall {τ : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) {s₁ : Set.{u3} α} {s₂ : Set.{u3} α}, (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s₁ s₂) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u1, u3, u2} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u3, u2} τ α β _inst_1 f ϕ s₂))
-Case conversion may be inaccurate. Consider using '#align omega_limit_mono_right omegaLimit_mono_rightₓ'. -/
theorem omegaLimit_mono_right {s₁ s₂ : Set α} (hs : s₁ ⊆ s₂) : ω f ϕ s₁ ⊆ ω f ϕ s₂ :=
iInter₂_mono fun u hu => closure_mono (image2_subset Subset.rfl hs)
#align omega_limit_mono_right omegaLimit_mono_right
-/- warning: is_closed_omega_limit -> isClosed_omegaLimit is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), IsClosed.{u3} β _inst_1 (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s)
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), IsClosed.{u3} β _inst_1 (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s)
-Case conversion may be inaccurate. Consider using '#align is_closed_omega_limit isClosed_omegaLimitₓ'. -/
theorem isClosed_omegaLimit : IsClosed (ω f ϕ s) :=
isClosed_iInter fun u => isClosed_iInter fun hu => isClosed_closure
#align is_closed_omega_limit isClosed_omegaLimit
-/- warning: maps_to_omega_limit' -> mapsTo_omegaLimit' is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (s : Set.{u2} α) {α' : Type.{u4}} {β' : Type.{u5}} [_inst_2 : TopologicalSpace.{u5} β'] {f : Filter.{u1} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u4} α'}, (Set.MapsTo.{u2, u4} α α' ga s s') -> (forall {gb : β -> β'}, (Filter.Eventually.{u1} τ (fun (t : τ) => Set.EqOn.{u2, u5} α β' (Function.comp.{succ u2, succ u3, succ u5} α β β' gb (ϕ t)) (Function.comp.{succ u2, succ u4, succ u5} α α' β' (ϕ' t) ga) s) f) -> (Continuous.{u3, u5} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u3, u5} β β' gb (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (omegaLimit.{u1, u4, u5} τ α' β' _inst_2 f ϕ' s')))
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} β] (s : Set.{u2} α) {α' : Type.{u5}} {β' : Type.{u4}} [_inst_2 : TopologicalSpace.{u4} β'] {f : Filter.{u3} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u5} α'}, (Set.MapsTo.{u2, u5} α α' ga s s') -> (forall {gb : β -> β'}, (Filter.Eventually.{u3} τ (fun (t : τ) => Set.EqOn.{u2, u4} α β' (Function.comp.{succ u2, succ u1, succ u4} α β β' gb (ϕ t)) (Function.comp.{succ u2, succ u5, succ u4} α α' β' (ϕ' t) ga) s) f) -> (Continuous.{u1, u4} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u1, u4} β β' gb (omegaLimit.{u3, u2, u1} τ α β _inst_1 f ϕ s) (omegaLimit.{u3, u5, u4} τ α' β' _inst_2 f ϕ' s')))
-Case conversion may be inaccurate. Consider using '#align maps_to_omega_limit' mapsTo_omegaLimit'ₓ'. -/
theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ᶠ t in f, EqOn (gb ∘ ϕ t) (ϕ' t ∘ ga) s) (hgc : Continuous gb) :
@@ -151,12 +115,6 @@ theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter
#align maps_to_omega_limit' mapsTo_omegaLimit'
-/- warning: maps_to_omega_limit -> mapsTo_omegaLimit is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (s : Set.{u2} α) {α' : Type.{u4}} {β' : Type.{u5}} [_inst_2 : TopologicalSpace.{u5} β'] {f : Filter.{u1} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u4} α'}, (Set.MapsTo.{u2, u4} α α' ga s s') -> (forall {gb : β -> β'}, (forall (t : τ) (x : α), Eq.{succ u5} β' (gb (ϕ t x)) (ϕ' t (ga x))) -> (Continuous.{u3, u5} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u3, u5} β β' gb (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (omegaLimit.{u1, u4, u5} τ α' β' _inst_2 f ϕ' s')))
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} β] (s : Set.{u2} α) {α' : Type.{u5}} {β' : Type.{u4}} [_inst_2 : TopologicalSpace.{u4} β'] {f : Filter.{u3} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u5} α'}, (Set.MapsTo.{u2, u5} α α' ga s s') -> (forall {gb : β -> β'}, (forall (t : τ) (x : α), Eq.{succ u4} β' (gb (ϕ t x)) (ϕ' t (ga x))) -> (Continuous.{u1, u4} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u1, u4} β β' gb (omegaLimit.{u3, u2, u1} τ α β _inst_1 f ϕ s) (omegaLimit.{u3, u5, u4} τ α' β' _inst_2 f ϕ' s')))
-Case conversion may be inaccurate. Consider using '#align maps_to_omega_limit mapsTo_omegaLimitₓ'. -/
theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ t x, gb (ϕ t x) = ϕ' t (ga x)) (hgc : Continuous gb) :
@@ -164,22 +122,10 @@ theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter
mapsTo_omegaLimit' _ hs (eventually_of_forall fun t x hx => hg t x) hgc
#align maps_to_omega_limit mapsTo_omegaLimit
-/- warning: omega_limit_image_eq -> omegaLimit_image_eq is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (s : Set.{u2} α) {α' : Type.{u4}} (ϕ : τ -> α' -> β) (f : Filter.{u1} τ) (g : α -> α'), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u4, u3} τ α' β _inst_1 f ϕ (Set.image.{u2, u4} α α' g s)) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f (fun (t : τ) (x : α) => ϕ t (g x)) s)
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (s : Set.{u1} α) {α' : Type.{u4}} (ϕ : τ -> α' -> β) (f : Filter.{u3} τ) (g : α -> α'), Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u4, u2} τ α' β _inst_1 f ϕ (Set.image.{u1, u4} α α' g s)) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f (fun (t : τ) (x : α) => ϕ t (g x)) s)
-Case conversion may be inaccurate. Consider using '#align omega_limit_image_eq omegaLimit_image_eqₓ'. -/
theorem omegaLimit_image_eq {α' : Type _} (ϕ : τ → α' → β) (f : Filter τ) (g : α → α') :
ω f ϕ (g '' s) = ω f (fun t x => ϕ t (g x)) s := by simp only [omegaLimit, image2_image_right]
#align omega_limit_image_eq omegaLimit_image_eq
-/- warning: omega_limit_preimage_subset -> omegaLimit_preimage_subset is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] {α' : Type.{u4}} (ϕ : τ -> α' -> β) (s : Set.{u4} α') (f : Filter.{u1} τ) (g : α -> α'), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f (fun (t : τ) (x : α) => ϕ t (g x)) (Set.preimage.{u2, u4} α α' g s)) (omegaLimit.{u1, u4, u3} τ α' β _inst_1 f ϕ s)
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] {α' : Type.{u4}} (ϕ : τ -> α' -> β) (s : Set.{u4} α') (f : Filter.{u3} τ) (g : α -> α'), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f (fun (t : τ) (x : α) => ϕ t (g x)) (Set.preimage.{u1, u4} α α' g s)) (omegaLimit.{u3, u4, u2} τ α' β _inst_1 f ϕ s)
-Case conversion may be inaccurate. Consider using '#align omega_limit_preimage_subset omegaLimit_preimage_subsetₓ'. -/
theorem omegaLimit_preimage_subset {α' : Type _} (ϕ : τ → α' → β) (s : Set α') (f : Filter τ)
(g : α → α') : ω f (fun t x => ϕ t (g x)) (g ⁻¹' s) ⊆ ω f ϕ s :=
mapsTo_omegaLimit _ (mapsTo_preimage _ _) (fun t x => rfl) continuous_id
@@ -193,12 +139,6 @@ characterising ω-limits:
-/
-/- warning: mem_omega_limit_iff_frequently -> mem_omegaLimit_iff_frequently is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) (y : β), Iff (Membership.Mem.{u3, u3} β (Set.{u3} β) (Set.hasMem.{u3} β) y (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s)) (forall (n : Set.{u3} β), (Membership.Mem.{u3, u3} (Set.{u3} β) (Filter.{u3} β) (Filter.hasMem.{u3} β) n (nhds.{u3} β _inst_1 y)) -> (Filter.Frequently.{u1} τ (fun (t : τ) => Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) s (Set.preimage.{u2, u3} α β (ϕ t) n))) f))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) (y : β), Iff (Membership.mem.{u3, u3} β (Set.{u3} β) (Set.instMembershipSet.{u3} β) y (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s)) (forall (n : Set.{u3} β), (Membership.mem.{u3, u3} (Set.{u3} β) (Filter.{u3} β) (instMembershipSetFilter.{u3} β) n (nhds.{u3} β _inst_1 y)) -> (Filter.Frequently.{u2} τ (fun (t : τ) => Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Set.preimage.{u1, u3} α β (ϕ t) n))) f))
-Case conversion may be inaccurate. Consider using '#align mem_omega_limit_iff_frequently mem_omegaLimit_iff_frequentlyₓ'. -/
/-- An element `y` is in the ω-limit set of `s` w.r.t. `f` if the
preimages of an arbitrary neighbourhood of `y` frequently
(w.r.t. `f`) intersects of `s`. -/
@@ -215,12 +155,6 @@ theorem mem_omegaLimit_iff_frequently (y : β) :
exact ⟨_, hϕtx, _, _, ht, hx, rfl⟩
#align mem_omega_limit_iff_frequently mem_omegaLimit_iff_frequently
-/- warning: mem_omega_limit_iff_frequently₂ -> mem_omegaLimit_iff_frequently₂ is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) (y : β), Iff (Membership.Mem.{u3, u3} β (Set.{u3} β) (Set.hasMem.{u3} β) y (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s)) (forall (n : Set.{u3} β), (Membership.Mem.{u3, u3} (Set.{u3} β) (Filter.{u3} β) (Filter.hasMem.{u3} β) n (nhds.{u3} β _inst_1 y)) -> (Filter.Frequently.{u1} τ (fun (t : τ) => Set.Nonempty.{u3} β (Inter.inter.{u3} (Set.{u3} β) (Set.hasInter.{u3} β) (Set.image.{u2, u3} α β (ϕ t) s) n)) f))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) (y : β), Iff (Membership.mem.{u3, u3} β (Set.{u3} β) (Set.instMembershipSet.{u3} β) y (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s)) (forall (n : Set.{u3} β), (Membership.mem.{u3, u3} (Set.{u3} β) (Filter.{u3} β) (instMembershipSetFilter.{u3} β) n (nhds.{u3} β _inst_1 y)) -> (Filter.Frequently.{u2} τ (fun (t : τ) => Set.Nonempty.{u3} β (Inter.inter.{u3} (Set.{u3} β) (Set.instInterSet.{u3} β) (Set.image.{u1, u3} α β (ϕ t) s) n)) f))
-Case conversion may be inaccurate. Consider using '#align mem_omega_limit_iff_frequently₂ mem_omegaLimit_iff_frequently₂ₓ'. -/
/-- An element `y` is in the ω-limit set of `s` w.r.t. `f` if the
forward images of `s` frequently (w.r.t. `f`) intersect arbitrary
neighbourhoods of `y`. -/
@@ -229,12 +163,6 @@ theorem mem_omegaLimit_iff_frequently₂ (y : β) :
simp_rw [mem_omegaLimit_iff_frequently, image_inter_nonempty_iff]
#align mem_omega_limit_iff_frequently₂ mem_omegaLimit_iff_frequently₂
-/- warning: mem_omega_limit_singleton_iff_map_cluster_point -> mem_omegaLimit_singleton_iff_map_cluster_point is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (x : α) (y : β), Iff (Membership.Mem.{u3, u3} β (Set.{u3} β) (Set.hasMem.{u3} β) y (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Singleton.singleton.{u2, u2} α (Set.{u2} α) (Set.hasSingleton.{u2} α) x))) (MapClusterPt.{u3, u1} β _inst_1 τ y f (fun (t : τ) => ϕ t x))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (x : α) (y : β), Iff (Membership.mem.{u3, u3} β (Set.{u3} β) (Set.instMembershipSet.{u3} β) y (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) x))) (MapClusterPt.{u3, u2} β _inst_1 τ y f (fun (t : τ) => ϕ t x))
-Case conversion may be inaccurate. Consider using '#align mem_omega_limit_singleton_iff_map_cluster_point mem_omegaLimit_singleton_iff_map_cluster_pointₓ'. -/
/-- An element `y` is in the ω-limit of `x` w.r.t. `f` if the forward
images of `x` frequently (w.r.t. `f`) falls within an arbitrary
neighbourhood of `y`. -/
@@ -248,33 +176,15 @@ theorem mem_omegaLimit_singleton_iff_map_cluster_point (x : α) (y : β) :
-/
-/- warning: omega_limit_inter -> omegaLimit_inter is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s₁ : Set.{u2} α) (s₂ : Set.{u2} α), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) s₁ s₂)) (Inter.inter.{u3} (Set.{u3} β) (Set.hasInter.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₂))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s₁ s₂)) (Inter.inter.{u3} (Set.{u3} β) (Set.instInterSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s₂))
-Case conversion may be inaccurate. Consider using '#align omega_limit_inter omegaLimit_interₓ'. -/
theorem omegaLimit_inter : ω f ϕ (s₁ ∩ s₂) ⊆ ω f ϕ s₁ ∩ ω f ϕ s₂ :=
subset_inter (omegaLimit_mono_right _ _ (inter_subset_left _ _))
(omegaLimit_mono_right _ _ (inter_subset_right _ _))
#align omega_limit_inter omegaLimit_inter
-/- warning: omega_limit_Inter -> omegaLimit_iInter is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {ι : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u2} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Set.iInter.{u2, succ u4} α ι (fun (i : ι) => p i))) (Set.iInter.{u3, succ u4} β ι (fun (i : ι) => omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (p i)))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u4}} {β : Type.{u3}} {ι : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u4} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u4, u3} τ α β _inst_1 f ϕ (Set.iInter.{u4, succ u1} α ι (fun (i : ι) => p i))) (Set.iInter.{u3, succ u1} β ι (fun (i : ι) => omegaLimit.{u2, u4, u3} τ α β _inst_1 f ϕ (p i)))
-Case conversion may be inaccurate. Consider using '#align omega_limit_Inter omegaLimit_iInterₓ'. -/
theorem omegaLimit_iInter (p : ι → Set α) : ω f ϕ (⋂ i, p i) ⊆ ⋂ i, ω f ϕ (p i) :=
subset_iInter fun i => omegaLimit_mono_right _ _ (iInter_subset _ _)
#align omega_limit_Inter omegaLimit_iInter
-/- warning: omega_limit_union -> omegaLimit_union is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s₁ : Set.{u2} α) (s₂ : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) s₁ s₂)) (Union.union.{u3} (Set.{u3} β) (Set.hasUnion.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₂))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s₁ s₂)) (Union.union.{u3} (Set.{u3} β) (Set.instUnionSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s₂))
-Case conversion may be inaccurate. Consider using '#align omega_limit_union omegaLimit_unionₓ'. -/
theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s₂ :=
by
ext y; constructor
@@ -291,12 +201,6 @@ theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s
omegaLimit_mono_right _ _ (subset_union_right _ _) hy]
#align omega_limit_union omegaLimit_union
-/- warning: omega_limit_Union -> omegaLimit_iUnion is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {ι : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u2} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (Set.iUnion.{u3, succ u4} β ι (fun (i : ι) => omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (p i))) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Set.iUnion.{u2, succ u4} α ι (fun (i : ι) => p i)))
-but is expected to have type
- forall {τ : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} {ι : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u4} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (Set.iUnion.{u3, succ u2} β ι (fun (i : ι) => omegaLimit.{u1, u4, u3} τ α β _inst_1 f ϕ (p i))) (omegaLimit.{u1, u4, u3} τ α β _inst_1 f ϕ (Set.iUnion.{u4, succ u2} α ι (fun (i : ι) => p i)))
-Case conversion may be inaccurate. Consider using '#align omega_limit_Union omegaLimit_iUnionₓ'. -/
theorem omegaLimit_iUnion (p : ι → Set α) : (⋃ i, ω f ϕ (p i)) ⊆ ω f ϕ (⋃ i, p i) :=
by
rw [Union_subset_iff]
@@ -310,45 +214,21 @@ subsets of some set `v` also in `f`.
-/
-/- warning: omega_limit_eq_Inter -> omegaLimit_eq_iInter is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (fun (u : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeSubtype.{succ u1} (Set.{u1} τ) (fun (x : Set.{u1} τ) => Membership.Mem.{u1, u1} (Set.{u1} τ) (Set.{u1} (Set.{u1} τ)) (Set.hasMem.{u1} (Set.{u1} τ)) x (Filter.sets.{u1} τ f)))))) u) s)))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u2} β (Set.Elem.{u2} (Set.{u2} τ) (Filter.sets.{u2} τ f)) (fun (u : Set.Elem.{u2} (Set.{u2} τ) (Filter.sets.{u2} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ (Subtype.val.{succ u2} (Set.{u2} τ) (fun (x : Set.{u2} τ) => Membership.mem.{u2, u2} (Set.{u2} τ) (Set.{u2} (Set.{u2} τ)) (Set.instMembershipSet.{u2} (Set.{u2} τ)) x (Filter.sets.{u2} τ f)) u) s)))
-Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter omegaLimit_eq_iInterₓ'. -/
theorem omegaLimit_eq_iInter : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ u s) :=
biInter_eq_iInter _ _
#align omega_limit_eq_Inter omegaLimit_eq_iInter
-/- warning: omega_limit_eq_bInter_inter -> omegaLimit_eq_biInter_inter is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.iInter.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) u v) s)))))
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.iInter.{u2, succ u3} β (Set.{u3} τ) (fun (u : Set.{u3} τ) => Set.iInter.{u2, 0} β (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) (fun (H : Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) u v) s)))))
-Case conversion may be inaccurate. Consider using '#align omega_limit_eq_bInter_inter omegaLimit_eq_biInter_interₓ'. -/
theorem omegaLimit_eq_biInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ (u ∩ v) s) :=
Subset.antisymm (iInter₂_mono' fun u hu => ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
(iInter₂_mono fun u hu => closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
#align omega_limit_eq_bInter_inter omegaLimit_eq_biInter_inter
-/- warning: omega_limit_eq_Inter_inter -> omegaLimit_eq_iInter_inter is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (fun (u : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeSubtype.{succ u1} (Set.{u1} τ) (fun (x : Set.{u1} τ) => Membership.Mem.{u1, u1} (Set.{u1} τ) (Set.{u1} (Set.{u1} τ)) (Set.hasMem.{u1} (Set.{u1} τ)) x (Filter.sets.{u1} τ f)))))) u) v) s))))
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.iInter.{u2, succ u3} β (Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) (fun (u : Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) (Subtype.val.{succ u3} (Set.{u3} τ) (fun (x : Set.{u3} τ) => Membership.mem.{u3, u3} (Set.{u3} τ) (Set.{u3} (Set.{u3} τ)) (Set.instMembershipSet.{u3} (Set.{u3} τ)) x (Filter.sets.{u3} τ f)) u) v) s))))
-Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter_inter omegaLimit_eq_iInter_interₓ'. -/
theorem omegaLimit_eq_iInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) := by
rw [omegaLimit_eq_biInter_inter _ _ _ hv]; apply bInter_eq_Inter
#align omega_limit_eq_Inter_inter omegaLimit_eq_iInter_inter
-/- warning: omega_limit_subset_closure_fw_image -> omegaLimit_subset_closure_fw_image is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {u : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s)))
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {u : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ u s)))
-Case conversion may be inaccurate. Consider using '#align omega_limit_subset_closure_fw_image omegaLimit_subset_closure_fw_imageₓ'. -/
theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
ω f ϕ s ⊆ closure (image2 ϕ u s) :=
by
@@ -363,12 +243,6 @@ theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
-/
-/- warning: eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset' -> eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset' is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Exists.{succ u1} (Set.{u1} τ) (fun (v : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ v s)) c))) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) n) -> (Exists.{succ u1} (Set.{u1} τ) (fun (u : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s)) n))))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Exists.{succ u2} (Set.{u2} τ) (fun (v : Set.{u2} τ) => And (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) v f) (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ v s)) c))) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) n) -> (Exists.{succ u2} (Set.{u2} τ) (fun (u : Set.{u2} τ) => And (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s)) n))))
-Case conversion may be inaccurate. Consider using '#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset' eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset'ₓ'. -/
/-- A set is eventually carried into any open neighbourhood of its ω-limit:
if `c` is a compact set such that `closure {ϕ t x | t ∈ v, x ∈ s} ⊆ c` for some `v ∈ f`
and `n` is an open neighbourhood of `ω f ϕ s`, then for some `u ∈ f` we have
@@ -416,12 +290,6 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
exact ⟨_, hw₂, hw⟩
#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset' eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset'
-/- warning: eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset -> eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : T2Space.{u3} β _inst_1] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Filter.Eventually.{u1} τ (fun (t : τ) => Set.MapsTo.{u2, u3} α β (ϕ t) s c) f) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) n) -> (Exists.{succ u1} (Set.{u1} τ) (fun (u : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s)) n))))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : T2Space.{u3} β _inst_1] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Filter.Eventually.{u2} τ (fun (t : τ) => Set.MapsTo.{u1, u3} α β (ϕ t) s c) f) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) n) -> (Exists.{succ u2} (Set.{u2} τ) (fun (u : Set.{u2} τ) => And (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s)) n))))
-Case conversion may be inaccurate. Consider using '#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subsetₓ'. -/
/-- A set is eventually carried into any open neighbourhood of its ω-limit:
if `c` is a compact set such that `closure {ϕ t x | t ∈ v, x ∈ s} ⊆ c` for some `v ∈ f`
and `n` is an open neighbourhood of `ω f ϕ s`, then for some `u ∈ f` we have
@@ -433,12 +301,6 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
⟨_, hc₂, closure_minimal (image2_subset_iff.2 fun t => id) hc₁.IsClosed⟩ hn₁ hn₂
#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
-/- warning: eventually_maps_to_of_is_compact_absorbing_of_is_open_of_omega_limit_subset -> eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : T2Space.{u3} β _inst_1] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Filter.Eventually.{u1} τ (fun (t : τ) => Set.MapsTo.{u2, u3} α β (ϕ t) s c) f) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) n) -> (Filter.Eventually.{u1} τ (fun (t : τ) => Set.MapsTo.{u2, u3} α β (ϕ t) s n) f))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : T2Space.{u3} β _inst_1] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Filter.Eventually.{u2} τ (fun (t : τ) => Set.MapsTo.{u1, u3} α β (ϕ t) s c) f) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) n) -> (Filter.Eventually.{u2} τ (fun (t : τ) => Set.MapsTo.{u1, u3} α β (ϕ t) s n) f))
-Case conversion may be inaccurate. Consider using '#align eventually_maps_to_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subsetₓ'. -/
theorem eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset [T2Space β]
{c : Set β} (hc₁ : IsCompact c) (hc₂ : ∀ᶠ t in f, MapsTo (ϕ t) s c) {n : Set β} (hn₁ : IsOpen n)
(hn₂ : ω f ϕ s ⊆ n) : ∀ᶠ t in f, MapsTo (ϕ t) s n :=
@@ -450,24 +312,12 @@ theorem eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
exact hu (subset_closure <| mem_image2_of_mem ht hx)
#align eventually_maps_to_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
-/- warning: eventually_closure_subset_of_is_open_of_omega_limit_subset -> eventually_closure_subset_of_isOpen_of_omegaLimit_subset is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : CompactSpace.{u3} β _inst_1] {v : Set.{u3} β}, (IsOpen.{u3} β _inst_1 v) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) v) -> (Exists.{succ u1} (Set.{u1} τ) (fun (u : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s)) v)))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : CompactSpace.{u3} β _inst_1] {v : Set.{u3} β}, (IsOpen.{u3} β _inst_1 v) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) v) -> (Exists.{succ u2} (Set.{u2} τ) (fun (u : Set.{u2} τ) => And (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s)) v)))
-Case conversion may be inaccurate. Consider using '#align eventually_closure_subset_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isOpen_of_omegaLimit_subsetₓ'. -/
theorem eventually_closure_subset_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v : Set β}
(hv₁ : IsOpen v) (hv₂ : ω f ϕ s ⊆ v) : ∃ u ∈ f, closure (image2 ϕ u s) ⊆ v :=
eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset' _ _ _
isCompact_univ ⟨univ, univ_mem, subset_univ _⟩ hv₁ hv₂
#align eventually_closure_subset_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isOpen_of_omegaLimit_subset
-/- warning: eventually_maps_to_of_is_open_of_omega_limit_subset -> eventually_mapsTo_of_isOpen_of_omegaLimit_subset is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : CompactSpace.{u3} β _inst_1] {v : Set.{u3} β}, (IsOpen.{u3} β _inst_1 v) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) v) -> (Filter.Eventually.{u1} τ (fun (t : τ) => Set.MapsTo.{u2, u3} α β (ϕ t) s v) f)
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : CompactSpace.{u3} β _inst_1] {v : Set.{u3} β}, (IsOpen.{u3} β _inst_1 v) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) v) -> (Filter.Eventually.{u2} τ (fun (t : τ) => Set.MapsTo.{u1, u3} α β (ϕ t) s v) f)
-Case conversion may be inaccurate. Consider using '#align eventually_maps_to_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isOpen_of_omegaLimit_subsetₓ'. -/
theorem eventually_mapsTo_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v : Set β}
(hv₁ : IsOpen v) (hv₂ : ω f ϕ s ⊆ v) : ∀ᶠ t in f, MapsTo (ϕ t) s v :=
by
@@ -476,12 +326,6 @@ theorem eventually_mapsTo_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v :
exact hu (subset_closure <| mem_image2_of_mem ht hx)
#align eventually_maps_to_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isOpen_of_omegaLimit_subset
-/- warning: nonempty_omega_limit_of_is_compact_absorbing -> nonempty_omegaLimit_of_isCompact_absorbing is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : Filter.NeBot.{u1} τ f] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Exists.{succ u1} (Set.{u1} τ) (fun (v : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ v s)) c))) -> (Set.Nonempty.{u2} α s) -> (Set.Nonempty.{u3} β (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s))
-but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : Filter.NeBot.{u3} τ f] {c : Set.{u2} β}, (IsCompact.{u2} β _inst_1 c) -> (Exists.{succ u3} (Set.{u3} τ) (fun (v : Set.{u3} τ) => And (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ v s)) c))) -> (Set.Nonempty.{u1} α s) -> (Set.Nonempty.{u2} β (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s))
-Case conversion may be inaccurate. Consider using '#align nonempty_omega_limit_of_is_compact_absorbing nonempty_omegaLimit_of_isCompact_absorbingₓ'. -/
/-- The ω-limit of a nonempty set w.r.t. a nontrivial filter is nonempty. -/
theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁ : IsCompact c)
(hc₂ : ∃ v ∈ f, closure (image2 ϕ v s) ⊆ c) (hs : s.Nonempty) : (ω f ϕ s).Nonempty :=
@@ -505,12 +349,6 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
· exact fun _ => isClosed_closure
#align nonempty_omega_limit_of_is_compact_absorbing nonempty_omegaLimit_of_isCompact_absorbing
-/- warning: nonempty_omega_limit -> nonempty_omegaLimit is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : CompactSpace.{u3} β _inst_1] [_inst_3 : Filter.NeBot.{u1} τ f], (Set.Nonempty.{u2} α s) -> (Set.Nonempty.{u3} β (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s))
-but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : CompactSpace.{u3} β _inst_1] [_inst_3 : Filter.NeBot.{u2} τ f], (Set.Nonempty.{u1} α s) -> (Set.Nonempty.{u3} β (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s))
-Case conversion may be inaccurate. Consider using '#align nonempty_omega_limit nonempty_omegaLimitₓ'. -/
theorem nonempty_omegaLimit [CompactSpace β] [NeBot f] (hs : s.Nonempty) : (ω f ϕ s).Nonempty :=
nonempty_omegaLimit_of_isCompact_absorbing _ _ _ isCompact_univ ⟨univ, univ_mem, subset_univ _⟩ hs
#align nonempty_omega_limit nonempty_omegaLimit
@@ -529,12 +367,6 @@ variable {τ : Type _} [TopologicalSpace τ] [AddMonoid τ] [ContinuousAdd τ] {
open omegaLimit
-/- warning: flow.is_invariant_omega_limit -> Flow.isInvariant_omegaLimit is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddMonoid.{u1} τ] [_inst_3 : ContinuousAdd.{u1} τ _inst_1 (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))) t) f f) -> (IsInvariant.{u1, u2} τ α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) s))
-but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5358 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5360 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5358 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5360) t) f f) -> (IsInvariant.{u2, u1} τ α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
-Case conversion may be inaccurate. Consider using '#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimitₓ'. -/
theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvariant ϕ (ω f ϕ s) :=
by
refine' fun t => maps_to.mono_right _ (omegaLimit_subset_of_tendsto ϕ s (hf t))
@@ -543,12 +375,6 @@ theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvar
(continuous_const.flow ϕ continuous_id)
#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimit
-/- warning: flow.omega_limit_image_subset -> Flow.omegaLimit_image_subset is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddMonoid.{u1} τ] [_inst_3 : ContinuousAdd.{u1} τ _inst_1 (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u2} α) (t : τ), (Filter.Tendsto.{u1, u1} τ τ (fun (_x : τ) => HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))) _x t) f f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) (Set.image.{u2, u2} α α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ t) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) s))
-but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α) (t : τ), (Filter.Tendsto.{u2, u2} τ τ (fun (_x : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) _x t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (Set.image.{u1, u1} α α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ t) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
-Case conversion may be inaccurate. Consider using '#align flow.omega_limit_image_subset Flow.omegaLimit_image_subsetₓ'. -/
theorem omegaLimit_image_subset (t : τ) (ht : Tendsto (· + t) f f) : ω f ϕ (ϕ t '' s) ⊆ ω f ϕ s :=
by
simp only [omegaLimit_image_eq, ← map_add]
@@ -569,12 +395,6 @@ variable {τ : Type _} [TopologicalSpace τ] [AddCommGroup τ] [TopologicalAddGr
open omegaLimit
-/- warning: flow.omega_limit_image_eq -> Flow.omegaLimit_image_eq is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddCommGroup.{u1} τ] [_inst_3 : TopologicalAddGroup.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2)] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (fun (_x : τ) => HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2)))))) _x t) f f) -> (forall (t : τ), Eq.{succ u2} (Set.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) (Set.image.{u2, u2} α α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ t) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s))
-but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ (fun (_x : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) _x t) f f) -> (forall (t : τ), Eq.{succ u1} (Set.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (Set.image.{u1, u1} α α (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ t) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
-Case conversion may be inaccurate. Consider using '#align flow.omega_limit_image_eq Flow.omegaLimit_image_eqₓ'. -/
/-- the ω-limit of a forward image of `s` is the same as the ω-limit of `s`. -/
@[simp]
theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f ϕ (ϕ t '' s) = ω f ϕ s :=
@@ -585,12 +405,6 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
#align flow.omega_limit_image_eq Flow.omegaLimit_image_eq
-/- warning: flow.omega_limit_omega_limit -> Flow.omegaLimit_omegaLimit is a dubious translation:
-lean 3 declaration is
- forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddCommGroup.{u1} τ] [_inst_3 : TopologicalAddGroup.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2)] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2)))))) t) f f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s))
-but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5740 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5742 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5740 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5742) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
-Case conversion may be inaccurate. Consider using '#align flow.omega_limit_omega_limit Flow.omegaLimit_omegaLimitₓ'. -/
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s :=
by
simp only [subset_def, mem_omegaLimit_iff_frequently₂, frequently_iff]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -339,10 +339,8 @@ but is expected to have type
forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.iInter.{u2, succ u3} β (Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) (fun (u : Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) (Subtype.val.{succ u3} (Set.{u3} τ) (fun (x : Set.{u3} τ) => Membership.mem.{u3, u3} (Set.{u3} τ) (Set.{u3} (Set.{u3} τ)) (Set.instMembershipSet.{u3} (Set.{u3} τ)) x (Filter.sets.{u3} τ f)) u) v) s))))
Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter_inter omegaLimit_eq_iInter_interₓ'. -/
theorem omegaLimit_eq_iInter_inter {v : Set τ} (hv : v ∈ f) :
- ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) :=
- by
- rw [omegaLimit_eq_biInter_inter _ _ _ hv]
- apply bInter_eq_Inter
+ ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) := by
+ rw [omegaLimit_eq_biInter_inter _ _ _ hv]; apply bInter_eq_Inter
#align omega_limit_eq_Inter_inter omegaLimit_eq_iInter_inter
/- warning: omega_limit_subset_closure_fw_image -> omegaLimit_subset_closure_fw_image is a dubious translation:
@@ -492,8 +490,7 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
rw [omegaLimit_eq_iInter_inter _ _ _ hv₁]
apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
· rintro ⟨u₁, hu₁⟩ ⟨u₂, hu₂⟩
- use ⟨u₁ ∩ u₂, inter_mem hu₁ hu₂⟩
- constructor
+ use ⟨u₁ ∩ u₂, inter_mem hu₁ hu₂⟩; constructor
all_goals exact closure_mono (image2_subset (inter_subset_inter_left _ (by simp)) subset.rfl)
· intro u
have hn : (image2 ϕ (u ∩ v) s).Nonempty :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -103,7 +103,7 @@ theorem omegaLimit_subset_of_tendsto {m : τ → τ} {f₁ f₂ : Filter τ} (hf
/- warning: omega_limit_mono_left -> omegaLimit_mono_left is a dubious translation:
lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (ϕ : τ -> α -> β) (s : Set.{u2} α) {f₁ : Filter.{u1} τ} {f₂ : Filter.{u1} τ}, (LE.le.{u1} (Filter.{u1} τ) (Preorder.toLE.{u1} (Filter.{u1} τ) (PartialOrder.toPreorder.{u1} (Filter.{u1} τ) (Filter.partialOrder.{u1} τ))) f₁ f₂) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₁ ϕ s) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₂ ϕ s))
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (ϕ : τ -> α -> β) (s : Set.{u2} α) {f₁ : Filter.{u1} τ} {f₂ : Filter.{u1} τ}, (LE.le.{u1} (Filter.{u1} τ) (Preorder.toHasLe.{u1} (Filter.{u1} τ) (PartialOrder.toPreorder.{u1} (Filter.{u1} τ) (Filter.partialOrder.{u1} τ))) f₁ f₂) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₁ ϕ s) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₂ ϕ s))
but is expected to have type
forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (ϕ : τ -> α -> β) (s : Set.{u1} α) {f₁ : Filter.{u3} τ} {f₂ : Filter.{u3} τ}, (LE.le.{u3} (Filter.{u3} τ) (Preorder.toLE.{u3} (Filter.{u3} τ) (PartialOrder.toPreorder.{u3} (Filter.{u3} τ) (Filter.instPartialOrderFilter.{u3} τ))) f₁ f₂) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₁ ϕ s) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₂ ϕ s))
Case conversion may be inaccurate. Consider using '#align omega_limit_mono_left omegaLimit_mono_leftₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -79,9 +79,9 @@ variable (f : Filter τ) (ϕ : τ → α → β) (s s₁ s₂ : Set α)
/- warning: omega_limit_def -> omegaLimit_def is a dubious translation:
lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.interᵢ.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s))))
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.iInter.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s))))
but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u2} β (Set.{u2} τ) (fun (u : Set.{u2} τ) => Set.interᵢ.{u3, 0} β (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (fun (H : Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s))))
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u2} β (Set.{u2} τ) (fun (u : Set.{u2} τ) => Set.iInter.{u3, 0} β (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (fun (H : Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s))))
Case conversion may be inaccurate. Consider using '#align omega_limit_def omegaLimit_defₓ'. -/
theorem omegaLimit_def : ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ u s) :=
rfl
@@ -118,7 +118,7 @@ but is expected to have type
forall {τ : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) {s₁ : Set.{u3} α} {s₂ : Set.{u3} α}, (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s₁ s₂) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u1, u3, u2} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u3, u2} τ α β _inst_1 f ϕ s₂))
Case conversion may be inaccurate. Consider using '#align omega_limit_mono_right omegaLimit_mono_rightₓ'. -/
theorem omegaLimit_mono_right {s₁ s₂ : Set α} (hs : s₁ ⊆ s₂) : ω f ϕ s₁ ⊆ ω f ϕ s₂ :=
- interᵢ₂_mono fun u hu => closure_mono (image2_subset Subset.rfl hs)
+ iInter₂_mono fun u hu => closure_mono (image2_subset Subset.rfl hs)
#align omega_limit_mono_right omegaLimit_mono_right
/- warning: is_closed_omega_limit -> isClosed_omegaLimit is a dubious translation:
@@ -128,7 +128,7 @@ but is expected to have type
forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), IsClosed.{u3} β _inst_1 (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s)
Case conversion may be inaccurate. Consider using '#align is_closed_omega_limit isClosed_omegaLimitₓ'. -/
theorem isClosed_omegaLimit : IsClosed (ω f ϕ s) :=
- isClosed_interᵢ fun u => isClosed_interᵢ fun hu => isClosed_closure
+ isClosed_iInter fun u => isClosed_iInter fun hu => isClosed_closure
#align is_closed_omega_limit isClosed_omegaLimit
/- warning: maps_to_omega_limit' -> mapsTo_omegaLimit' is a dubious translation:
@@ -259,15 +259,15 @@ theorem omegaLimit_inter : ω f ϕ (s₁ ∩ s₂) ⊆ ω f ϕ s₁ ∩ ω f ϕ
(omegaLimit_mono_right _ _ (inter_subset_right _ _))
#align omega_limit_inter omegaLimit_inter
-/- warning: omega_limit_Inter -> omegaLimit_interᵢ is a dubious translation:
+/- warning: omega_limit_Inter -> omegaLimit_iInter is a dubious translation:
lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {ι : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u2} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Set.interᵢ.{u2, succ u4} α ι (fun (i : ι) => p i))) (Set.interᵢ.{u3, succ u4} β ι (fun (i : ι) => omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (p i)))
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {ι : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u2} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Set.iInter.{u2, succ u4} α ι (fun (i : ι) => p i))) (Set.iInter.{u3, succ u4} β ι (fun (i : ι) => omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (p i)))
but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u4}} {β : Type.{u3}} {ι : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u4} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u4, u3} τ α β _inst_1 f ϕ (Set.interᵢ.{u4, succ u1} α ι (fun (i : ι) => p i))) (Set.interᵢ.{u3, succ u1} β ι (fun (i : ι) => omegaLimit.{u2, u4, u3} τ α β _inst_1 f ϕ (p i)))
-Case conversion may be inaccurate. Consider using '#align omega_limit_Inter omegaLimit_interᵢₓ'. -/
-theorem omegaLimit_interᵢ (p : ι → Set α) : ω f ϕ (⋂ i, p i) ⊆ ⋂ i, ω f ϕ (p i) :=
- subset_interᵢ fun i => omegaLimit_mono_right _ _ (interᵢ_subset _ _)
-#align omega_limit_Inter omegaLimit_interᵢ
+ forall {τ : Type.{u2}} {α : Type.{u4}} {β : Type.{u3}} {ι : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u4} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u4, u3} τ α β _inst_1 f ϕ (Set.iInter.{u4, succ u1} α ι (fun (i : ι) => p i))) (Set.iInter.{u3, succ u1} β ι (fun (i : ι) => omegaLimit.{u2, u4, u3} τ α β _inst_1 f ϕ (p i)))
+Case conversion may be inaccurate. Consider using '#align omega_limit_Inter omegaLimit_iInterₓ'. -/
+theorem omegaLimit_iInter (p : ι → Set α) : ω f ϕ (⋂ i, p i) ⊆ ⋂ i, ω f ϕ (p i) :=
+ subset_iInter fun i => omegaLimit_mono_right _ _ (iInter_subset _ _)
+#align omega_limit_Inter omegaLimit_iInter
/- warning: omega_limit_union -> omegaLimit_union is a dubious translation:
lean 3 declaration is
@@ -291,17 +291,17 @@ theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s
omegaLimit_mono_right _ _ (subset_union_right _ _) hy]
#align omega_limit_union omegaLimit_union
-/- warning: omega_limit_Union -> omegaLimit_unionᵢ is a dubious translation:
+/- warning: omega_limit_Union -> omegaLimit_iUnion is a dubious translation:
lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {ι : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u2} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (Set.unionᵢ.{u3, succ u4} β ι (fun (i : ι) => omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (p i))) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Set.unionᵢ.{u2, succ u4} α ι (fun (i : ι) => p i)))
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {ι : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u2} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (Set.iUnion.{u3, succ u4} β ι (fun (i : ι) => omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (p i))) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Set.iUnion.{u2, succ u4} α ι (fun (i : ι) => p i)))
but is expected to have type
- forall {τ : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} {ι : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u4} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (Set.unionᵢ.{u3, succ u2} β ι (fun (i : ι) => omegaLimit.{u1, u4, u3} τ α β _inst_1 f ϕ (p i))) (omegaLimit.{u1, u4, u3} τ α β _inst_1 f ϕ (Set.unionᵢ.{u4, succ u2} α ι (fun (i : ι) => p i)))
-Case conversion may be inaccurate. Consider using '#align omega_limit_Union omegaLimit_unionᵢₓ'. -/
-theorem omegaLimit_unionᵢ (p : ι → Set α) : (⋃ i, ω f ϕ (p i)) ⊆ ω f ϕ (⋃ i, p i) :=
+ forall {τ : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} {ι : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u4} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (Set.iUnion.{u3, succ u2} β ι (fun (i : ι) => omegaLimit.{u1, u4, u3} τ α β _inst_1 f ϕ (p i))) (omegaLimit.{u1, u4, u3} τ α β _inst_1 f ϕ (Set.iUnion.{u4, succ u2} α ι (fun (i : ι) => p i)))
+Case conversion may be inaccurate. Consider using '#align omega_limit_Union omegaLimit_iUnionₓ'. -/
+theorem omegaLimit_iUnion (p : ι → Set α) : (⋃ i, ω f ϕ (p i)) ⊆ ω f ϕ (⋃ i, p i) :=
by
rw [Union_subset_iff]
exact fun i => omegaLimit_mono_right _ _ (subset_Union _ _)
-#align omega_limit_Union omegaLimit_unionᵢ
+#align omega_limit_Union omegaLimit_iUnion
/-!
Different expressions for omega limits, useful for rewrites. In
@@ -310,40 +310,40 @@ subsets of some set `v` also in `f`.
-/
-/- warning: omega_limit_eq_Inter -> omegaLimit_eq_interᵢ is a dubious translation:
+/- warning: omega_limit_eq_Inter -> omegaLimit_eq_iInter is a dubious translation:
lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (fun (u : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeSubtype.{succ u1} (Set.{u1} τ) (fun (x : Set.{u1} τ) => Membership.Mem.{u1, u1} (Set.{u1} τ) (Set.{u1} (Set.{u1} τ)) (Set.hasMem.{u1} (Set.{u1} τ)) x (Filter.sets.{u1} τ f)))))) u) s)))
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (fun (u : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeSubtype.{succ u1} (Set.{u1} τ) (fun (x : Set.{u1} τ) => Membership.Mem.{u1, u1} (Set.{u1} τ) (Set.{u1} (Set.{u1} τ)) (Set.hasMem.{u1} (Set.{u1} τ)) x (Filter.sets.{u1} τ f)))))) u) s)))
but is expected to have type
- forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u2} β (Set.Elem.{u2} (Set.{u2} τ) (Filter.sets.{u2} τ f)) (fun (u : Set.Elem.{u2} (Set.{u2} τ) (Filter.sets.{u2} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ (Subtype.val.{succ u2} (Set.{u2} τ) (fun (x : Set.{u2} τ) => Membership.mem.{u2, u2} (Set.{u2} τ) (Set.{u2} (Set.{u2} τ)) (Set.instMembershipSet.{u2} (Set.{u2} τ)) x (Filter.sets.{u2} τ f)) u) s)))
-Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter omegaLimit_eq_interᵢₓ'. -/
-theorem omegaLimit_eq_interᵢ : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ u s) :=
- binterᵢ_eq_interᵢ _ _
-#align omega_limit_eq_Inter omegaLimit_eq_interᵢ
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u2} β (Set.Elem.{u2} (Set.{u2} τ) (Filter.sets.{u2} τ f)) (fun (u : Set.Elem.{u2} (Set.{u2} τ) (Filter.sets.{u2} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ (Subtype.val.{succ u2} (Set.{u2} τ) (fun (x : Set.{u2} τ) => Membership.mem.{u2, u2} (Set.{u2} τ) (Set.{u2} (Set.{u2} τ)) (Set.instMembershipSet.{u2} (Set.{u2} τ)) x (Filter.sets.{u2} τ f)) u) s)))
+Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter omegaLimit_eq_iInterₓ'. -/
+theorem omegaLimit_eq_iInter : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ u s) :=
+ biInter_eq_iInter _ _
+#align omega_limit_eq_Inter omegaLimit_eq_iInter
-/- warning: omega_limit_eq_bInter_inter -> omegaLimit_eq_binterᵢ_inter is a dubious translation:
+/- warning: omega_limit_eq_bInter_inter -> omegaLimit_eq_biInter_inter is a dubious translation:
lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.interᵢ.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) u v) s)))))
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.iInter.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) u v) s)))))
but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u2, succ u3} β (Set.{u3} τ) (fun (u : Set.{u3} τ) => Set.interᵢ.{u2, 0} β (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) (fun (H : Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) u v) s)))))
-Case conversion may be inaccurate. Consider using '#align omega_limit_eq_bInter_inter omegaLimit_eq_binterᵢ_interₓ'. -/
-theorem omegaLimit_eq_binterᵢ_inter {v : Set τ} (hv : v ∈ f) :
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.iInter.{u2, succ u3} β (Set.{u3} τ) (fun (u : Set.{u3} τ) => Set.iInter.{u2, 0} β (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) (fun (H : Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) u v) s)))))
+Case conversion may be inaccurate. Consider using '#align omega_limit_eq_bInter_inter omegaLimit_eq_biInter_interₓ'. -/
+theorem omegaLimit_eq_biInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ (u ∩ v) s) :=
- Subset.antisymm (interᵢ₂_mono' fun u hu => ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
- (interᵢ₂_mono fun u hu => closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
-#align omega_limit_eq_bInter_inter omegaLimit_eq_binterᵢ_inter
+ Subset.antisymm (iInter₂_mono' fun u hu => ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
+ (iInter₂_mono fun u hu => closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
+#align omega_limit_eq_bInter_inter omegaLimit_eq_biInter_inter
-/- warning: omega_limit_eq_Inter_inter -> omegaLimit_eq_interᵢ_inter is a dubious translation:
+/- warning: omega_limit_eq_Inter_inter -> omegaLimit_eq_iInter_inter is a dubious translation:
lean 3 declaration is
- forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (fun (u : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeSubtype.{succ u1} (Set.{u1} τ) (fun (x : Set.{u1} τ) => Membership.Mem.{u1, u1} (Set.{u1} τ) (Set.{u1} (Set.{u1} τ)) (Set.hasMem.{u1} (Set.{u1} τ)) x (Filter.sets.{u1} τ f)))))) u) v) s))))
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.iInter.{u3, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (fun (u : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeSubtype.{succ u1} (Set.{u1} τ) (fun (x : Set.{u1} τ) => Membership.Mem.{u1, u1} (Set.{u1} τ) (Set.{u1} (Set.{u1} τ)) (Set.hasMem.{u1} (Set.{u1} τ)) x (Filter.sets.{u1} τ f)))))) u) v) s))))
but is expected to have type
- forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u2, succ u3} β (Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) (fun (u : Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) (Subtype.val.{succ u3} (Set.{u3} τ) (fun (x : Set.{u3} τ) => Membership.mem.{u3, u3} (Set.{u3} τ) (Set.{u3} (Set.{u3} τ)) (Set.instMembershipSet.{u3} (Set.{u3} τ)) x (Filter.sets.{u3} τ f)) u) v) s))))
-Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter_inter omegaLimit_eq_interᵢ_interₓ'. -/
-theorem omegaLimit_eq_interᵢ_inter {v : Set τ} (hv : v ∈ f) :
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.iInter.{u2, succ u3} β (Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) (fun (u : Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) (Subtype.val.{succ u3} (Set.{u3} τ) (fun (x : Set.{u3} τ) => Membership.mem.{u3, u3} (Set.{u3} τ) (Set.{u3} (Set.{u3} τ)) (Set.instMembershipSet.{u3} (Set.{u3} τ)) x (Filter.sets.{u3} τ f)) u) v) s))))
+Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter_inter omegaLimit_eq_iInter_interₓ'. -/
+theorem omegaLimit_eq_iInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) :=
by
- rw [omegaLimit_eq_binterᵢ_inter _ _ _ hv]
+ rw [omegaLimit_eq_biInter_inter _ _ _ hv]
apply bInter_eq_Inter
-#align omega_limit_eq_Inter_inter omegaLimit_eq_interᵢ_inter
+#align omega_limit_eq_Inter_inter omegaLimit_eq_iInter_inter
/- warning: omega_limit_subset_closure_fw_image -> omegaLimit_subset_closure_fw_image is a dubious translation:
lean 3 declaration is
@@ -354,7 +354,7 @@ Case conversion may be inaccurate. Consider using '#align omega_limit_subset_clo
theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
ω f ϕ s ⊆ closure (image2 ϕ u s) :=
by
- rw [omegaLimit_eq_interᵢ]
+ rw [omegaLimit_eq_iInter]
intro _ hx
rw [mem_Inter] at hx
exact hx ⟨u, hu⟩
@@ -389,7 +389,7 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
by
have : (⋃ u ∈ f, j u) = ⋃ u : ↥f.sets, j u := bUnion_eq_Union _ _
rw [this, diff_subset_comm, diff_Union]
- rw [omegaLimit_eq_interᵢ_inter _ _ _ hv₁] at hn₂
+ rw [omegaLimit_eq_iInter_inter _ _ _ hv₁] at hn₂
simp_rw [diff_compl]
rw [← inter_Inter]
exact subset.trans (inter_subset_right _ _) hn₂
@@ -489,8 +489,8 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
(hc₂ : ∃ v ∈ f, closure (image2 ϕ v s) ⊆ c) (hs : s.Nonempty) : (ω f ϕ s).Nonempty :=
by
rcases hc₂ with ⟨v, hv₁, hv₂⟩
- rw [omegaLimit_eq_interᵢ_inter _ _ _ hv₁]
- apply IsCompact.nonempty_interᵢ_of_directed_nonempty_compact_closed
+ rw [omegaLimit_eq_iInter_inter _ _ _ hv₁]
+ apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
· rintro ⟨u₁, hu₁⟩ ⟨u₂, hu₂⟩
use ⟨u₁ ∩ u₂, inter_mem hu₁ hu₂⟩
constructor
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -536,7 +536,7 @@ open omegaLimit
lean 3 declaration is
forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddMonoid.{u1} τ] [_inst_3 : ContinuousAdd.{u1} τ _inst_1 (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))) t) f f) -> (IsInvariant.{u1, u2} τ α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) s))
but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5366 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5368 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5366 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5368) t) f f) -> (IsInvariant.{u2, u1} τ α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5358 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5360 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5358 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5360) t) f f) -> (IsInvariant.{u2, u1} τ α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
Case conversion may be inaccurate. Consider using '#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimitₓ'. -/
theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvariant ϕ (ω f ϕ s) :=
by
@@ -592,7 +592,7 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
lean 3 declaration is
forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddCommGroup.{u1} τ] [_inst_3 : TopologicalAddGroup.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2)] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2)))))) t) f f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s))
but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5748 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5750 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5748 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5750) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5740 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5742 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5740 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5742) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
Case conversion may be inaccurate. Consider using '#align flow.omega_limit_omega_limit Flow.omegaLimit_omegaLimitₓ'. -/
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/52932b3a083d4142e78a15dc928084a22fea9ba0
@@ -131,13 +131,13 @@ theorem isClosed_omegaLimit : IsClosed (ω f ϕ s) :=
isClosed_interᵢ fun u => isClosed_interᵢ fun hu => isClosed_closure
#align is_closed_omega_limit isClosed_omegaLimit
-/- warning: maps_to_omega_limit' -> mapsTo_omega_limit' is a dubious translation:
+/- warning: maps_to_omega_limit' -> mapsTo_omegaLimit' is a dubious translation:
lean 3 declaration is
forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (s : Set.{u2} α) {α' : Type.{u4}} {β' : Type.{u5}} [_inst_2 : TopologicalSpace.{u5} β'] {f : Filter.{u1} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u4} α'}, (Set.MapsTo.{u2, u4} α α' ga s s') -> (forall {gb : β -> β'}, (Filter.Eventually.{u1} τ (fun (t : τ) => Set.EqOn.{u2, u5} α β' (Function.comp.{succ u2, succ u3, succ u5} α β β' gb (ϕ t)) (Function.comp.{succ u2, succ u4, succ u5} α α' β' (ϕ' t) ga) s) f) -> (Continuous.{u3, u5} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u3, u5} β β' gb (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (omegaLimit.{u1, u4, u5} τ α' β' _inst_2 f ϕ' s')))
but is expected to have type
forall {τ : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} β] (s : Set.{u2} α) {α' : Type.{u5}} {β' : Type.{u4}} [_inst_2 : TopologicalSpace.{u4} β'] {f : Filter.{u3} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u5} α'}, (Set.MapsTo.{u2, u5} α α' ga s s') -> (forall {gb : β -> β'}, (Filter.Eventually.{u3} τ (fun (t : τ) => Set.EqOn.{u2, u4} α β' (Function.comp.{succ u2, succ u1, succ u4} α β β' gb (ϕ t)) (Function.comp.{succ u2, succ u5, succ u4} α α' β' (ϕ' t) ga) s) f) -> (Continuous.{u1, u4} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u1, u4} β β' gb (omegaLimit.{u3, u2, u1} τ α β _inst_1 f ϕ s) (omegaLimit.{u3, u5, u4} τ α' β' _inst_2 f ϕ' s')))
-Case conversion may be inaccurate. Consider using '#align maps_to_omega_limit' mapsTo_omega_limit'ₓ'. -/
-theorem mapsTo_omega_limit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
+Case conversion may be inaccurate. Consider using '#align maps_to_omega_limit' mapsTo_omegaLimit'ₓ'. -/
+theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ᶠ t in f, EqOn (gb ∘ ϕ t) (ϕ' t ∘ ga) s) (hgc : Continuous gb) :
MapsTo gb (ω f ϕ s) (ω f ϕ' s') :=
@@ -149,7 +149,7 @@ theorem mapsTo_omega_limit' {α' β' : Type _} [TopologicalSpace β'] {f : Filte
gb (ϕ t x) = ϕ' t (ga x) := ht.2 hx
_ ∈ image2 ϕ' u s' := mem_image2_of_mem ht.1 (hs hx)
-#align maps_to_omega_limit' mapsTo_omega_limit'
+#align maps_to_omega_limit' mapsTo_omegaLimit'
/- warning: maps_to_omega_limit -> mapsTo_omegaLimit is a dubious translation:
lean 3 declaration is
@@ -161,7 +161,7 @@ theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ t x, gb (ϕ t x) = ϕ' t (ga x)) (hgc : Continuous gb) :
MapsTo gb (ω f ϕ s) (ω f ϕ' s') :=
- mapsTo_omega_limit' _ hs (eventually_of_forall fun t x hx => hg t x) hgc
+ mapsTo_omegaLimit' _ hs (eventually_of_forall fun t x hx => hg t x) hgc
#align maps_to_omega_limit mapsTo_omegaLimit
/- warning: omega_limit_image_eq -> omegaLimit_image_eq is a dubious translation:
@@ -320,17 +320,17 @@ theorem omegaLimit_eq_interᵢ : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2
binterᵢ_eq_interᵢ _ _
#align omega_limit_eq_Inter omegaLimit_eq_interᵢ
-/- warning: omega_limit_eq_bInter_inter -> omegaLimit_eq_bInter_inter is a dubious translation:
+/- warning: omega_limit_eq_bInter_inter -> omegaLimit_eq_binterᵢ_inter is a dubious translation:
lean 3 declaration is
forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.interᵢ.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) u v) s)))))
but is expected to have type
forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u2, succ u3} β (Set.{u3} τ) (fun (u : Set.{u3} τ) => Set.interᵢ.{u2, 0} β (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) (fun (H : Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) u v) s)))))
-Case conversion may be inaccurate. Consider using '#align omega_limit_eq_bInter_inter omegaLimit_eq_bInter_interₓ'. -/
-theorem omegaLimit_eq_bInter_inter {v : Set τ} (hv : v ∈ f) :
+Case conversion may be inaccurate. Consider using '#align omega_limit_eq_bInter_inter omegaLimit_eq_binterᵢ_interₓ'. -/
+theorem omegaLimit_eq_binterᵢ_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ (u ∩ v) s) :=
Subset.antisymm (interᵢ₂_mono' fun u hu => ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
(interᵢ₂_mono fun u hu => closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
-#align omega_limit_eq_bInter_inter omegaLimit_eq_bInter_inter
+#align omega_limit_eq_bInter_inter omegaLimit_eq_binterᵢ_inter
/- warning: omega_limit_eq_Inter_inter -> omegaLimit_eq_interᵢ_inter is a dubious translation:
lean 3 declaration is
@@ -341,7 +341,7 @@ Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter_i
theorem omegaLimit_eq_interᵢ_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) :=
by
- rw [omegaLimit_eq_bInter_inter _ _ _ hv]
+ rw [omegaLimit_eq_binterᵢ_inter _ _ _ hv]
apply bInter_eq_Inter
#align omega_limit_eq_Inter_inter omegaLimit_eq_interᵢ_inter
@@ -536,7 +536,7 @@ open omegaLimit
lean 3 declaration is
forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddMonoid.{u1} τ] [_inst_3 : ContinuousAdd.{u1} τ _inst_1 (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))) t) f f) -> (IsInvariant.{u1, u2} τ α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) s))
but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5367 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5369 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5367 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5369) t) f f) -> (IsInvariant.{u2, u1} τ α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5366 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5368 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5366 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5368) t) f f) -> (IsInvariant.{u2, u1} τ α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
Case conversion may be inaccurate. Consider using '#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimitₓ'. -/
theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvariant ϕ (ω f ϕ s) :=
by
@@ -592,7 +592,7 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
lean 3 declaration is
forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddCommGroup.{u1} τ] [_inst_3 : TopologicalAddGroup.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2)] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2)))))) t) f f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s))
but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5749 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5751 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5749 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5751) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5748 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5750 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5748 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5750) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
Case conversion may be inaccurate. Consider using '#align flow.omega_limit_omega_limit Flow.omegaLimit_omegaLimitₓ'. -/
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -592,7 +592,7 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
lean 3 declaration is
forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddCommGroup.{u1} τ] [_inst_3 : TopologicalAddGroup.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2)] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2)))))) t) f f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s))
but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5733 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5735 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5733 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5735) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5749 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5751 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5749 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5751) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
Case conversion may be inaccurate. Consider using '#align flow.omega_limit_omega_limit Flow.omegaLimit_omegaLimitₓ'. -/
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo
! This file was ported from Lean 3 source module dynamics.omega_limit
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit ee05e9ce1322178f0c12004eb93c00d2c8c00ed2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Dynamics.Flow
/-!
# ω-limits
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
For a function `ϕ : τ → α → β` where `β` is a topological space, we
define the ω-limit under `ϕ` of a set `s` in `α` with respect to
filter `f` on `τ`: an element `y : β` is in the ω-limit of `s` if the
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -533,7 +533,7 @@ open omegaLimit
lean 3 declaration is
forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddMonoid.{u1} τ] [_inst_3 : ContinuousAdd.{u1} τ _inst_1 (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))) t) f f) -> (IsInvariant.{u1, u2} τ α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) s))
but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5364 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5366 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5364 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5366) t) f f) -> (IsInvariant.{u2, u1} τ α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5367 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5369 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5367 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5369) t) f f) -> (IsInvariant.{u2, u1} τ α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
Case conversion may be inaccurate. Consider using '#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimitₓ'. -/
theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvariant ϕ (ω f ϕ s) :=
by
@@ -589,7 +589,7 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
lean 3 declaration is
forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddCommGroup.{u1} τ] [_inst_3 : TopologicalAddGroup.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2)] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2)))))) t) f f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s))
but is expected to have type
- forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5730 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5732 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5730 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5732) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5733 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5735 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5733 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5735) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
Case conversion may be inaccurate. Consider using '#align flow.omega_limit_omega_limit Flow.omegaLimit_omegaLimitₓ'. -/
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -48,11 +48,13 @@ section omegaLimit
variable {τ : Type _} {α : Type _} {β : Type _} {ι : Type _}
+#print omegaLimit /-
/-- The ω-limit of a set `s` under `ϕ` with respect to a filter `f` is
⋂ u ∈ f, cl (ϕ u s). -/
def omegaLimit [TopologicalSpace β] (f : Filter τ) (ϕ : τ → α → β) (s : Set α) : Set β :=
⋂ u ∈ f, closure (image2 ϕ u s)
#align omega_limit omegaLimit
+-/
-- mathport name: omega_limit
scoped[omegaLimit] notation "ω" => omegaLimit
@@ -72,10 +74,22 @@ variable (f : Filter τ) (ϕ : τ → α → β) (s s₁ s₂ : Set α)
-/
+/- warning: omega_limit_def -> omegaLimit_def is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.interᵢ.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s))))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u2} β (Set.{u2} τ) (fun (u : Set.{u2} τ) => Set.interᵢ.{u3, 0} β (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (fun (H : Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s))))
+Case conversion may be inaccurate. Consider using '#align omega_limit_def omegaLimit_defₓ'. -/
theorem omegaLimit_def : ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ u s) :=
rfl
#align omega_limit_def omegaLimit_def
+/- warning: omega_limit_subset_of_tendsto -> omegaLimit_subset_of_tendsto is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (ϕ : τ -> α -> β) (s : Set.{u2} α) {m : τ -> τ} {f₁ : Filter.{u1} τ} {f₂ : Filter.{u1} τ}, (Filter.Tendsto.{u1, u1} τ τ m f₁ f₂) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₁ (fun (t : τ) (x : α) => ϕ (m t) x) s) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₂ ϕ s))
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (ϕ : τ -> α -> β) (s : Set.{u1} α) {m : τ -> τ} {f₁ : Filter.{u3} τ} {f₂ : Filter.{u3} τ}, (Filter.Tendsto.{u3, u3} τ τ m f₁ f₂) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₁ (fun (t : τ) (x : α) => ϕ (m t) x) s) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₂ ϕ s))
+Case conversion may be inaccurate. Consider using '#align omega_limit_subset_of_tendsto omegaLimit_subset_of_tendstoₓ'. -/
theorem omegaLimit_subset_of_tendsto {m : τ → τ} {f₁ f₂ : Filter τ} (hf : Tendsto m f₁ f₂) :
ω f₁ (fun t x => ϕ (m t) x) s ⊆ ω f₂ ϕ s :=
by
@@ -84,18 +98,42 @@ theorem omegaLimit_subset_of_tendsto {m : τ → τ} {f₁ f₂ : Filter τ} (hf
exact closure_mono (image2_subset (image_preimage_subset _ _) subset.rfl)
#align omega_limit_subset_of_tendsto omegaLimit_subset_of_tendsto
+/- warning: omega_limit_mono_left -> omegaLimit_mono_left is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (ϕ : τ -> α -> β) (s : Set.{u2} α) {f₁ : Filter.{u1} τ} {f₂ : Filter.{u1} τ}, (LE.le.{u1} (Filter.{u1} τ) (Preorder.toLE.{u1} (Filter.{u1} τ) (PartialOrder.toPreorder.{u1} (Filter.{u1} τ) (Filter.partialOrder.{u1} τ))) f₁ f₂) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₁ ϕ s) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f₂ ϕ s))
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (ϕ : τ -> α -> β) (s : Set.{u1} α) {f₁ : Filter.{u3} τ} {f₂ : Filter.{u3} τ}, (LE.le.{u3} (Filter.{u3} τ) (Preorder.toLE.{u3} (Filter.{u3} τ) (PartialOrder.toPreorder.{u3} (Filter.{u3} τ) (Filter.instPartialOrderFilter.{u3} τ))) f₁ f₂) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₁ ϕ s) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f₂ ϕ s))
+Case conversion may be inaccurate. Consider using '#align omega_limit_mono_left omegaLimit_mono_leftₓ'. -/
theorem omegaLimit_mono_left {f₁ f₂ : Filter τ} (hf : f₁ ≤ f₂) : ω f₁ ϕ s ⊆ ω f₂ ϕ s :=
omegaLimit_subset_of_tendsto ϕ s (tendsto_id'.2 hf)
#align omega_limit_mono_left omegaLimit_mono_left
+/- warning: omega_limit_mono_right -> omegaLimit_mono_right is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) {s₁ : Set.{u2} α} {s₂ : Set.{u2} α}, (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) s₁ s₂) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₂))
+but is expected to have type
+ forall {τ : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) {s₁ : Set.{u3} α} {s₂ : Set.{u3} α}, (HasSubset.Subset.{u3} (Set.{u3} α) (Set.instHasSubsetSet.{u3} α) s₁ s₂) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u1, u3, u2} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u3, u2} τ α β _inst_1 f ϕ s₂))
+Case conversion may be inaccurate. Consider using '#align omega_limit_mono_right omegaLimit_mono_rightₓ'. -/
theorem omegaLimit_mono_right {s₁ s₂ : Set α} (hs : s₁ ⊆ s₂) : ω f ϕ s₁ ⊆ ω f ϕ s₂ :=
interᵢ₂_mono fun u hu => closure_mono (image2_subset Subset.rfl hs)
#align omega_limit_mono_right omegaLimit_mono_right
+/- warning: is_closed_omega_limit -> isClosed_omegaLimit is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), IsClosed.{u3} β _inst_1 (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s)
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), IsClosed.{u3} β _inst_1 (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s)
+Case conversion may be inaccurate. Consider using '#align is_closed_omega_limit isClosed_omegaLimitₓ'. -/
theorem isClosed_omegaLimit : IsClosed (ω f ϕ s) :=
isClosed_interᵢ fun u => isClosed_interᵢ fun hu => isClosed_closure
#align is_closed_omega_limit isClosed_omegaLimit
+/- warning: maps_to_omega_limit' -> mapsTo_omega_limit' is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (s : Set.{u2} α) {α' : Type.{u4}} {β' : Type.{u5}} [_inst_2 : TopologicalSpace.{u5} β'] {f : Filter.{u1} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u4} α'}, (Set.MapsTo.{u2, u4} α α' ga s s') -> (forall {gb : β -> β'}, (Filter.Eventually.{u1} τ (fun (t : τ) => Set.EqOn.{u2, u5} α β' (Function.comp.{succ u2, succ u3, succ u5} α β β' gb (ϕ t)) (Function.comp.{succ u2, succ u4, succ u5} α α' β' (ϕ' t) ga) s) f) -> (Continuous.{u3, u5} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u3, u5} β β' gb (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (omegaLimit.{u1, u4, u5} τ α' β' _inst_2 f ϕ' s')))
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} β] (s : Set.{u2} α) {α' : Type.{u5}} {β' : Type.{u4}} [_inst_2 : TopologicalSpace.{u4} β'] {f : Filter.{u3} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u5} α'}, (Set.MapsTo.{u2, u5} α α' ga s s') -> (forall {gb : β -> β'}, (Filter.Eventually.{u3} τ (fun (t : τ) => Set.EqOn.{u2, u4} α β' (Function.comp.{succ u2, succ u1, succ u4} α β β' gb (ϕ t)) (Function.comp.{succ u2, succ u5, succ u4} α α' β' (ϕ' t) ga) s) f) -> (Continuous.{u1, u4} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u1, u4} β β' gb (omegaLimit.{u3, u2, u1} τ α β _inst_1 f ϕ s) (omegaLimit.{u3, u5, u4} τ α' β' _inst_2 f ϕ' s')))
+Case conversion may be inaccurate. Consider using '#align maps_to_omega_limit' mapsTo_omega_limit'ₓ'. -/
theorem mapsTo_omega_limit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ᶠ t in f, EqOn (gb ∘ ϕ t) (ϕ' t ∘ ga) s) (hgc : Continuous gb) :
@@ -110,6 +148,12 @@ theorem mapsTo_omega_limit' {α' β' : Type _} [TopologicalSpace β'] {f : Filte
#align maps_to_omega_limit' mapsTo_omega_limit'
+/- warning: maps_to_omega_limit -> mapsTo_omegaLimit is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (s : Set.{u2} α) {α' : Type.{u4}} {β' : Type.{u5}} [_inst_2 : TopologicalSpace.{u5} β'] {f : Filter.{u1} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u4} α'}, (Set.MapsTo.{u2, u4} α α' ga s s') -> (forall {gb : β -> β'}, (forall (t : τ) (x : α), Eq.{succ u5} β' (gb (ϕ t x)) (ϕ' t (ga x))) -> (Continuous.{u3, u5} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u3, u5} β β' gb (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (omegaLimit.{u1, u4, u5} τ α' β' _inst_2 f ϕ' s')))
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} β] (s : Set.{u2} α) {α' : Type.{u5}} {β' : Type.{u4}} [_inst_2 : TopologicalSpace.{u4} β'] {f : Filter.{u3} τ} {ϕ : τ -> α -> β} {ϕ' : τ -> α' -> β'} {ga : α -> α'} {s' : Set.{u5} α'}, (Set.MapsTo.{u2, u5} α α' ga s s') -> (forall {gb : β -> β'}, (forall (t : τ) (x : α), Eq.{succ u4} β' (gb (ϕ t x)) (ϕ' t (ga x))) -> (Continuous.{u1, u4} β β' _inst_1 _inst_2 gb) -> (Set.MapsTo.{u1, u4} β β' gb (omegaLimit.{u3, u2, u1} τ α β _inst_1 f ϕ s) (omegaLimit.{u3, u5, u4} τ α' β' _inst_2 f ϕ' s')))
+Case conversion may be inaccurate. Consider using '#align maps_to_omega_limit mapsTo_omegaLimitₓ'. -/
theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ t x, gb (ϕ t x) = ϕ' t (ga x)) (hgc : Continuous gb) :
@@ -117,10 +161,22 @@ theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter
mapsTo_omega_limit' _ hs (eventually_of_forall fun t x hx => hg t x) hgc
#align maps_to_omega_limit mapsTo_omegaLimit
+/- warning: omega_limit_image_eq -> omegaLimit_image_eq is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (s : Set.{u2} α) {α' : Type.{u4}} (ϕ : τ -> α' -> β) (f : Filter.{u1} τ) (g : α -> α'), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u4, u3} τ α' β _inst_1 f ϕ (Set.image.{u2, u4} α α' g s)) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f (fun (t : τ) (x : α) => ϕ t (g x)) s)
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (s : Set.{u1} α) {α' : Type.{u4}} (ϕ : τ -> α' -> β) (f : Filter.{u3} τ) (g : α -> α'), Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u4, u2} τ α' β _inst_1 f ϕ (Set.image.{u1, u4} α α' g s)) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f (fun (t : τ) (x : α) => ϕ t (g x)) s)
+Case conversion may be inaccurate. Consider using '#align omega_limit_image_eq omegaLimit_image_eqₓ'. -/
theorem omegaLimit_image_eq {α' : Type _} (ϕ : τ → α' → β) (f : Filter τ) (g : α → α') :
ω f ϕ (g '' s) = ω f (fun t x => ϕ t (g x)) s := by simp only [omegaLimit, image2_image_right]
#align omega_limit_image_eq omegaLimit_image_eq
+/- warning: omega_limit_preimage_subset -> omegaLimit_preimage_subset is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] {α' : Type.{u4}} (ϕ : τ -> α' -> β) (s : Set.{u4} α') (f : Filter.{u1} τ) (g : α -> α'), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f (fun (t : τ) (x : α) => ϕ t (g x)) (Set.preimage.{u2, u4} α α' g s)) (omegaLimit.{u1, u4, u3} τ α' β _inst_1 f ϕ s)
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] {α' : Type.{u4}} (ϕ : τ -> α' -> β) (s : Set.{u4} α') (f : Filter.{u3} τ) (g : α -> α'), HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f (fun (t : τ) (x : α) => ϕ t (g x)) (Set.preimage.{u1, u4} α α' g s)) (omegaLimit.{u3, u4, u2} τ α' β _inst_1 f ϕ s)
+Case conversion may be inaccurate. Consider using '#align omega_limit_preimage_subset omegaLimit_preimage_subsetₓ'. -/
theorem omegaLimit_preimage_subset {α' : Type _} (ϕ : τ → α' → β) (s : Set α') (f : Filter τ)
(g : α → α') : ω f (fun t x => ϕ t (g x)) (g ⁻¹' s) ⊆ ω f ϕ s :=
mapsTo_omegaLimit _ (mapsTo_preimage _ _) (fun t x => rfl) continuous_id
@@ -134,6 +190,12 @@ characterising ω-limits:
-/
+/- warning: mem_omega_limit_iff_frequently -> mem_omegaLimit_iff_frequently is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) (y : β), Iff (Membership.Mem.{u3, u3} β (Set.{u3} β) (Set.hasMem.{u3} β) y (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s)) (forall (n : Set.{u3} β), (Membership.Mem.{u3, u3} (Set.{u3} β) (Filter.{u3} β) (Filter.hasMem.{u3} β) n (nhds.{u3} β _inst_1 y)) -> (Filter.Frequently.{u1} τ (fun (t : τ) => Set.Nonempty.{u2} α (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) s (Set.preimage.{u2, u3} α β (ϕ t) n))) f))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) (y : β), Iff (Membership.mem.{u3, u3} β (Set.{u3} β) (Set.instMembershipSet.{u3} β) y (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s)) (forall (n : Set.{u3} β), (Membership.mem.{u3, u3} (Set.{u3} β) (Filter.{u3} β) (instMembershipSetFilter.{u3} β) n (nhds.{u3} β _inst_1 y)) -> (Filter.Frequently.{u2} τ (fun (t : τ) => Set.Nonempty.{u1} α (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s (Set.preimage.{u1, u3} α β (ϕ t) n))) f))
+Case conversion may be inaccurate. Consider using '#align mem_omega_limit_iff_frequently mem_omegaLimit_iff_frequentlyₓ'. -/
/-- An element `y` is in the ω-limit set of `s` w.r.t. `f` if the
preimages of an arbitrary neighbourhood of `y` frequently
(w.r.t. `f`) intersects of `s`. -/
@@ -150,6 +212,12 @@ theorem mem_omegaLimit_iff_frequently (y : β) :
exact ⟨_, hϕtx, _, _, ht, hx, rfl⟩
#align mem_omega_limit_iff_frequently mem_omegaLimit_iff_frequently
+/- warning: mem_omega_limit_iff_frequently₂ -> mem_omegaLimit_iff_frequently₂ is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) (y : β), Iff (Membership.Mem.{u3, u3} β (Set.{u3} β) (Set.hasMem.{u3} β) y (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s)) (forall (n : Set.{u3} β), (Membership.Mem.{u3, u3} (Set.{u3} β) (Filter.{u3} β) (Filter.hasMem.{u3} β) n (nhds.{u3} β _inst_1 y)) -> (Filter.Frequently.{u1} τ (fun (t : τ) => Set.Nonempty.{u3} β (Inter.inter.{u3} (Set.{u3} β) (Set.hasInter.{u3} β) (Set.image.{u2, u3} α β (ϕ t) s) n)) f))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) (y : β), Iff (Membership.mem.{u3, u3} β (Set.{u3} β) (Set.instMembershipSet.{u3} β) y (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s)) (forall (n : Set.{u3} β), (Membership.mem.{u3, u3} (Set.{u3} β) (Filter.{u3} β) (instMembershipSetFilter.{u3} β) n (nhds.{u3} β _inst_1 y)) -> (Filter.Frequently.{u2} τ (fun (t : τ) => Set.Nonempty.{u3} β (Inter.inter.{u3} (Set.{u3} β) (Set.instInterSet.{u3} β) (Set.image.{u1, u3} α β (ϕ t) s) n)) f))
+Case conversion may be inaccurate. Consider using '#align mem_omega_limit_iff_frequently₂ mem_omegaLimit_iff_frequently₂ₓ'. -/
/-- An element `y` is in the ω-limit set of `s` w.r.t. `f` if the
forward images of `s` frequently (w.r.t. `f`) intersect arbitrary
neighbourhoods of `y`. -/
@@ -158,6 +226,12 @@ theorem mem_omegaLimit_iff_frequently₂ (y : β) :
simp_rw [mem_omegaLimit_iff_frequently, image_inter_nonempty_iff]
#align mem_omega_limit_iff_frequently₂ mem_omegaLimit_iff_frequently₂
+/- warning: mem_omega_limit_singleton_iff_map_cluster_point -> mem_omegaLimit_singleton_iff_map_cluster_point is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (x : α) (y : β), Iff (Membership.Mem.{u3, u3} β (Set.{u3} β) (Set.hasMem.{u3} β) y (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Singleton.singleton.{u2, u2} α (Set.{u2} α) (Set.hasSingleton.{u2} α) x))) (MapClusterPt.{u3, u1} β _inst_1 τ y f (fun (t : τ) => ϕ t x))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (x : α) (y : β), Iff (Membership.mem.{u3, u3} β (Set.{u3} β) (Set.instMembershipSet.{u3} β) y (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ (Singleton.singleton.{u1, u1} α (Set.{u1} α) (Set.instSingletonSet.{u1} α) x))) (MapClusterPt.{u3, u2} β _inst_1 τ y f (fun (t : τ) => ϕ t x))
+Case conversion may be inaccurate. Consider using '#align mem_omega_limit_singleton_iff_map_cluster_point mem_omegaLimit_singleton_iff_map_cluster_pointₓ'. -/
/-- An element `y` is in the ω-limit of `x` w.r.t. `f` if the forward
images of `x` frequently (w.r.t. `f`) falls within an arbitrary
neighbourhood of `y`. -/
@@ -171,15 +245,33 @@ theorem mem_omegaLimit_singleton_iff_map_cluster_point (x : α) (y : β) :
-/
+/- warning: omega_limit_inter -> omegaLimit_inter is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s₁ : Set.{u2} α) (s₂ : Set.{u2} α), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Inter.inter.{u2} (Set.{u2} α) (Set.hasInter.{u2} α) s₁ s₂)) (Inter.inter.{u3} (Set.{u3} β) (Set.hasInter.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₂))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s₁ s₂)) (Inter.inter.{u3} (Set.{u3} β) (Set.instInterSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s₂))
+Case conversion may be inaccurate. Consider using '#align omega_limit_inter omegaLimit_interₓ'. -/
theorem omegaLimit_inter : ω f ϕ (s₁ ∩ s₂) ⊆ ω f ϕ s₁ ∩ ω f ϕ s₂ :=
subset_inter (omegaLimit_mono_right _ _ (inter_subset_left _ _))
(omegaLimit_mono_right _ _ (inter_subset_right _ _))
#align omega_limit_inter omegaLimit_inter
+/- warning: omega_limit_Inter -> omegaLimit_interᵢ is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {ι : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u2} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Set.interᵢ.{u2, succ u4} α ι (fun (i : ι) => p i))) (Set.interᵢ.{u3, succ u4} β ι (fun (i : ι) => omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (p i)))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u4}} {β : Type.{u3}} {ι : Type.{u1}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u4} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u4, u3} τ α β _inst_1 f ϕ (Set.interᵢ.{u4, succ u1} α ι (fun (i : ι) => p i))) (Set.interᵢ.{u3, succ u1} β ι (fun (i : ι) => omegaLimit.{u2, u4, u3} τ α β _inst_1 f ϕ (p i)))
+Case conversion may be inaccurate. Consider using '#align omega_limit_Inter omegaLimit_interᵢₓ'. -/
theorem omegaLimit_interᵢ (p : ι → Set α) : ω f ϕ (⋂ i, p i) ⊆ ⋂ i, ω f ϕ (p i) :=
subset_interᵢ fun i => omegaLimit_mono_right _ _ (interᵢ_subset _ _)
#align omega_limit_Inter omegaLimit_interᵢ
+/- warning: omega_limit_union -> omegaLimit_union is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s₁ : Set.{u2} α) (s₂ : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Union.union.{u2} (Set.{u2} α) (Set.hasUnion.{u2} α) s₁ s₂)) (Union.union.{u3} (Set.{u3} β) (Set.hasUnion.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s₂))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s₁ s₂)) (Union.union.{u3} (Set.{u3} β) (Set.instUnionSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s₁) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s₂))
+Case conversion may be inaccurate. Consider using '#align omega_limit_union omegaLimit_unionₓ'. -/
theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s₂ :=
by
ext y; constructor
@@ -196,6 +288,12 @@ theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s
omegaLimit_mono_right _ _ (subset_union_right _ _) hy]
#align omega_limit_union omegaLimit_union
+/- warning: omega_limit_Union -> omegaLimit_unionᵢ is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} {ι : Type.{u4}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u2} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (Set.unionᵢ.{u3, succ u4} β ι (fun (i : ι) => omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (p i))) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ (Set.unionᵢ.{u2, succ u4} α ι (fun (i : ι) => p i)))
+but is expected to have type
+ forall {τ : Type.{u1}} {α : Type.{u4}} {β : Type.{u3}} {ι : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (p : ι -> (Set.{u4} α)), HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (Set.unionᵢ.{u3, succ u2} β ι (fun (i : ι) => omegaLimit.{u1, u4, u3} τ α β _inst_1 f ϕ (p i))) (omegaLimit.{u1, u4, u3} τ α β _inst_1 f ϕ (Set.unionᵢ.{u4, succ u2} α ι (fun (i : ι) => p i)))
+Case conversion may be inaccurate. Consider using '#align omega_limit_Union omegaLimit_unionᵢₓ'. -/
theorem omegaLimit_unionᵢ (p : ι → Set α) : (⋃ i, ω f ϕ (p i)) ⊆ ω f ϕ (⋃ i, p i) :=
by
rw [Union_subset_iff]
@@ -209,16 +307,34 @@ subsets of some set `v` also in `f`.
-/
+/- warning: omega_limit_eq_Inter -> omegaLimit_eq_interᵢ is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (fun (u : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeSubtype.{succ u1} (Set.{u1} τ) (fun (x : Set.{u1} τ) => Membership.Mem.{u1, u1} (Set.{u1} τ) (Set.{u1} (Set.{u1} τ)) (Set.hasMem.{u1} (Set.{u1} τ)) x (Filter.sets.{u1} τ f)))))) u) s)))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α), Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u2} β (Set.Elem.{u2} (Set.{u2} τ) (Filter.sets.{u2} τ f)) (fun (u : Set.Elem.{u2} (Set.{u2} τ) (Filter.sets.{u2} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ (Subtype.val.{succ u2} (Set.{u2} τ) (fun (x : Set.{u2} τ) => Membership.mem.{u2, u2} (Set.{u2} τ) (Set.{u2} (Set.{u2} τ)) (Set.instMembershipSet.{u2} (Set.{u2} τ)) x (Filter.sets.{u2} τ f)) u) s)))
+Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter omegaLimit_eq_interᵢₓ'. -/
theorem omegaLimit_eq_interᵢ : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ u s) :=
binterᵢ_eq_interᵢ _ _
#align omega_limit_eq_Inter omegaLimit_eq_interᵢ
+/- warning: omega_limit_eq_bInter_inter -> omegaLimit_eq_bInter_inter is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (Set.{u1} τ) (fun (u : Set.{u1} τ) => Set.interᵢ.{u3, 0} β (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) u v) s)))))
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u2, succ u3} β (Set.{u3} τ) (fun (u : Set.{u3} τ) => Set.interᵢ.{u2, 0} β (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) (fun (H : Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) u v) s)))))
+Case conversion may be inaccurate. Consider using '#align omega_limit_eq_bInter_inter omegaLimit_eq_bInter_interₓ'. -/
theorem omegaLimit_eq_bInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ (u ∩ v) s) :=
Subset.antisymm (interᵢ₂_mono' fun u hu => ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
(interᵢ₂_mono fun u hu => closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
#align omega_limit_eq_bInter_inter omegaLimit_eq_bInter_inter
+/- warning: omega_limit_eq_Inter_inter -> omegaLimit_eq_interᵢ_inter is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {v : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) -> (Eq.{succ u3} (Set.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u3, succ u1} β (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (fun (u : coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) => closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ (Inter.inter.{u1} (Set.{u1} τ) (Set.hasInter.{u1} τ) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Set.{u1} (Set.{u1} τ)) Type.{u1} (Set.hasCoeToSort.{u1} (Set.{u1} τ)) (Filter.sets.{u1} τ f)) (Set.{u1} τ) (coeSubtype.{succ u1} (Set.{u1} τ) (fun (x : Set.{u1} τ) => Membership.Mem.{u1, u1} (Set.{u1} τ) (Set.{u1} (Set.{u1} τ)) (Set.hasMem.{u1} (Set.{u1} τ)) x (Filter.sets.{u1} τ f)))))) u) v) s))))
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {v : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) -> (Eq.{succ u2} (Set.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (Set.interᵢ.{u2, succ u3} β (Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) (fun (u : Set.Elem.{u3} (Set.{u3} τ) (Filter.sets.{u3} τ f)) => closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ (Inter.inter.{u3} (Set.{u3} τ) (Set.instInterSet.{u3} τ) (Subtype.val.{succ u3} (Set.{u3} τ) (fun (x : Set.{u3} τ) => Membership.mem.{u3, u3} (Set.{u3} τ) (Set.{u3} (Set.{u3} τ)) (Set.instMembershipSet.{u3} (Set.{u3} τ)) x (Filter.sets.{u3} τ f)) u) v) s))))
+Case conversion may be inaccurate. Consider using '#align omega_limit_eq_Inter_inter omegaLimit_eq_interᵢ_interₓ'. -/
theorem omegaLimit_eq_interᵢ_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) :=
by
@@ -226,6 +342,12 @@ theorem omegaLimit_eq_interᵢ_inter {v : Set τ} (hv : v ∈ f) :
apply bInter_eq_Inter
#align omega_limit_eq_Inter_inter omegaLimit_eq_interᵢ_inter
+/- warning: omega_limit_subset_closure_fw_image -> omegaLimit_subset_closure_fw_image is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {u : Set.{u1} τ}, (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s)))
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {u : Set.{u3} τ}, (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) u f) -> (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s) (closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ u s)))
+Case conversion may be inaccurate. Consider using '#align omega_limit_subset_closure_fw_image omegaLimit_subset_closure_fw_imageₓ'. -/
theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
ω f ϕ s ⊆ closure (image2 ϕ u s) :=
by
@@ -240,6 +362,12 @@ theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
-/
+/- warning: eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset' -> eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset' is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Exists.{succ u1} (Set.{u1} τ) (fun (v : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ v s)) c))) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) n) -> (Exists.{succ u1} (Set.{u1} τ) (fun (u : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s)) n))))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Exists.{succ u2} (Set.{u2} τ) (fun (v : Set.{u2} τ) => And (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) v f) (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ v s)) c))) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) n) -> (Exists.{succ u2} (Set.{u2} τ) (fun (u : Set.{u2} τ) => And (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s)) n))))
+Case conversion may be inaccurate. Consider using '#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset' eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset'ₓ'. -/
/-- A set is eventually carried into any open neighbourhood of its ω-limit:
if `c` is a compact set such that `closure {ϕ t x | t ∈ v, x ∈ s} ⊆ c` for some `v ∈ f`
and `n` is an open neighbourhood of `ω f ϕ s`, then for some `u ∈ f` we have
@@ -287,6 +415,12 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
exact ⟨_, hw₂, hw⟩
#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset' eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset'
+/- warning: eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset -> eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : T2Space.{u3} β _inst_1] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Filter.Eventually.{u1} τ (fun (t : τ) => Set.MapsTo.{u2, u3} α β (ϕ t) s c) f) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) n) -> (Exists.{succ u1} (Set.{u1} τ) (fun (u : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s)) n))))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : T2Space.{u3} β _inst_1] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Filter.Eventually.{u2} τ (fun (t : τ) => Set.MapsTo.{u1, u3} α β (ϕ t) s c) f) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) n) -> (Exists.{succ u2} (Set.{u2} τ) (fun (u : Set.{u2} τ) => And (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s)) n))))
+Case conversion may be inaccurate. Consider using '#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subsetₓ'. -/
/-- A set is eventually carried into any open neighbourhood of its ω-limit:
if `c` is a compact set such that `closure {ϕ t x | t ∈ v, x ∈ s} ⊆ c` for some `v ∈ f`
and `n` is an open neighbourhood of `ω f ϕ s`, then for some `u ∈ f` we have
@@ -298,6 +432,12 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
⟨_, hc₂, closure_minimal (image2_subset_iff.2 fun t => id) hc₁.IsClosed⟩ hn₁ hn₂
#align eventually_closure_subset_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
+/- warning: eventually_maps_to_of_is_compact_absorbing_of_is_open_of_omega_limit_subset -> eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : T2Space.{u3} β _inst_1] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Filter.Eventually.{u1} τ (fun (t : τ) => Set.MapsTo.{u2, u3} α β (ϕ t) s c) f) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) n) -> (Filter.Eventually.{u1} τ (fun (t : τ) => Set.MapsTo.{u2, u3} α β (ϕ t) s n) f))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : T2Space.{u3} β _inst_1] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Filter.Eventually.{u2} τ (fun (t : τ) => Set.MapsTo.{u1, u3} α β (ϕ t) s c) f) -> (forall {n : Set.{u3} β}, (IsOpen.{u3} β _inst_1 n) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) n) -> (Filter.Eventually.{u2} τ (fun (t : τ) => Set.MapsTo.{u1, u3} α β (ϕ t) s n) f))
+Case conversion may be inaccurate. Consider using '#align eventually_maps_to_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subsetₓ'. -/
theorem eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset [T2Space β]
{c : Set β} (hc₁ : IsCompact c) (hc₂ : ∀ᶠ t in f, MapsTo (ϕ t) s c) {n : Set β} (hn₁ : IsOpen n)
(hn₂ : ω f ϕ s ⊆ n) : ∀ᶠ t in f, MapsTo (ϕ t) s n :=
@@ -309,12 +449,24 @@ theorem eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
exact hu (subset_closure <| mem_image2_of_mem ht hx)
#align eventually_maps_to_of_is_compact_absorbing_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset
+/- warning: eventually_closure_subset_of_is_open_of_omega_limit_subset -> eventually_closure_subset_of_isOpen_of_omegaLimit_subset is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : CompactSpace.{u3} β _inst_1] {v : Set.{u3} β}, (IsOpen.{u3} β _inst_1 v) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) v) -> (Exists.{succ u1} (Set.{u1} τ) (fun (u : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) u f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ u s)) v)))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : CompactSpace.{u3} β _inst_1] {v : Set.{u3} β}, (IsOpen.{u3} β _inst_1 v) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) v) -> (Exists.{succ u2} (Set.{u2} τ) (fun (u : Set.{u2} τ) => And (Membership.mem.{u2, u2} (Set.{u2} τ) (Filter.{u2} τ) (instMembershipSetFilter.{u2} τ) u f) (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u2, u1, u3} τ α β ϕ u s)) v)))
+Case conversion may be inaccurate. Consider using '#align eventually_closure_subset_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isOpen_of_omegaLimit_subsetₓ'. -/
theorem eventually_closure_subset_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v : Set β}
(hv₁ : IsOpen v) (hv₂ : ω f ϕ s ⊆ v) : ∃ u ∈ f, closure (image2 ϕ u s) ⊆ v :=
eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit_subset' _ _ _
isCompact_univ ⟨univ, univ_mem, subset_univ _⟩ hv₁ hv₂
#align eventually_closure_subset_of_is_open_of_omega_limit_subset eventually_closure_subset_of_isOpen_of_omegaLimit_subset
+/- warning: eventually_maps_to_of_is_open_of_omega_limit_subset -> eventually_mapsTo_of_isOpen_of_omegaLimit_subset is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : CompactSpace.{u3} β _inst_1] {v : Set.{u3} β}, (IsOpen.{u3} β _inst_1 v) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s) v) -> (Filter.Eventually.{u1} τ (fun (t : τ) => Set.MapsTo.{u2, u3} α β (ϕ t) s v) f)
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : CompactSpace.{u3} β _inst_1] {v : Set.{u3} β}, (IsOpen.{u3} β _inst_1 v) -> (HasSubset.Subset.{u3} (Set.{u3} β) (Set.instHasSubsetSet.{u3} β) (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s) v) -> (Filter.Eventually.{u2} τ (fun (t : τ) => Set.MapsTo.{u1, u3} α β (ϕ t) s v) f)
+Case conversion may be inaccurate. Consider using '#align eventually_maps_to_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isOpen_of_omegaLimit_subsetₓ'. -/
theorem eventually_mapsTo_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v : Set β}
(hv₁ : IsOpen v) (hv₂ : ω f ϕ s ⊆ v) : ∀ᶠ t in f, MapsTo (ϕ t) s v :=
by
@@ -323,6 +475,12 @@ theorem eventually_mapsTo_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v :
exact hu (subset_closure <| mem_image2_of_mem ht hx)
#align eventually_maps_to_of_is_open_of_omega_limit_subset eventually_mapsTo_of_isOpen_of_omegaLimit_subset
+/- warning: nonempty_omega_limit_of_is_compact_absorbing -> nonempty_omegaLimit_of_isCompact_absorbing is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : Filter.NeBot.{u1} τ f] {c : Set.{u3} β}, (IsCompact.{u3} β _inst_1 c) -> (Exists.{succ u1} (Set.{u1} τ) (fun (v : Set.{u1} τ) => Exists.{0} (Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) (fun (H : Membership.Mem.{u1, u1} (Set.{u1} τ) (Filter.{u1} τ) (Filter.hasMem.{u1} τ) v f) => HasSubset.Subset.{u3} (Set.{u3} β) (Set.hasSubset.{u3} β) (closure.{u3} β _inst_1 (Set.image2.{u1, u2, u3} τ α β ϕ v s)) c))) -> (Set.Nonempty.{u2} α s) -> (Set.Nonempty.{u3} β (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s))
+but is expected to have type
+ forall {τ : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} β] (f : Filter.{u3} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : Filter.NeBot.{u3} τ f] {c : Set.{u2} β}, (IsCompact.{u2} β _inst_1 c) -> (Exists.{succ u3} (Set.{u3} τ) (fun (v : Set.{u3} τ) => And (Membership.mem.{u3, u3} (Set.{u3} τ) (Filter.{u3} τ) (instMembershipSetFilter.{u3} τ) v f) (HasSubset.Subset.{u2} (Set.{u2} β) (Set.instHasSubsetSet.{u2} β) (closure.{u2} β _inst_1 (Set.image2.{u3, u1, u2} τ α β ϕ v s)) c))) -> (Set.Nonempty.{u1} α s) -> (Set.Nonempty.{u2} β (omegaLimit.{u3, u1, u2} τ α β _inst_1 f ϕ s))
+Case conversion may be inaccurate. Consider using '#align nonempty_omega_limit_of_is_compact_absorbing nonempty_omegaLimit_of_isCompact_absorbingₓ'. -/
/-- The ω-limit of a nonempty set w.r.t. a nontrivial filter is nonempty. -/
theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁ : IsCompact c)
(hc₂ : ∃ v ∈ f, closure (image2 ϕ v s) ⊆ c) (hs : s.Nonempty) : (ω f ϕ s).Nonempty :=
@@ -347,6 +505,12 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
· exact fun _ => isClosed_closure
#align nonempty_omega_limit_of_is_compact_absorbing nonempty_omegaLimit_of_isCompact_absorbing
+/- warning: nonempty_omega_limit -> nonempty_omegaLimit is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u1} τ) (ϕ : τ -> α -> β) (s : Set.{u2} α) [_inst_2 : CompactSpace.{u3} β _inst_1] [_inst_3 : Filter.NeBot.{u1} τ f], (Set.Nonempty.{u2} α s) -> (Set.Nonempty.{u3} β (omegaLimit.{u1, u2, u3} τ α β _inst_1 f ϕ s))
+but is expected to have type
+ forall {τ : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : TopologicalSpace.{u3} β] (f : Filter.{u2} τ) (ϕ : τ -> α -> β) (s : Set.{u1} α) [_inst_2 : CompactSpace.{u3} β _inst_1] [_inst_3 : Filter.NeBot.{u2} τ f], (Set.Nonempty.{u1} α s) -> (Set.Nonempty.{u3} β (omegaLimit.{u2, u1, u3} τ α β _inst_1 f ϕ s))
+Case conversion may be inaccurate. Consider using '#align nonempty_omega_limit nonempty_omegaLimitₓ'. -/
theorem nonempty_omegaLimit [CompactSpace β] [NeBot f] (hs : s.Nonempty) : (ω f ϕ s).Nonempty :=
nonempty_omegaLimit_of_isCompact_absorbing _ _ _ isCompact_univ ⟨univ, univ_mem, subset_univ _⟩ hs
#align nonempty_omega_limit nonempty_omegaLimit
@@ -365,6 +529,12 @@ variable {τ : Type _} [TopologicalSpace τ] [AddMonoid τ] [ContinuousAdd τ] {
open omegaLimit
+/- warning: flow.is_invariant_omega_limit -> Flow.isInvariant_omegaLimit is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddMonoid.{u1} τ] [_inst_3 : ContinuousAdd.{u1} τ _inst_1 (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))) t) f f) -> (IsInvariant.{u1, u2} τ α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) s))
+but is expected to have type
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5364 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5366 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5364 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5366) t) f f) -> (IsInvariant.{u2, u1} τ α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
+Case conversion may be inaccurate. Consider using '#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimitₓ'. -/
theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvariant ϕ (ω f ϕ s) :=
by
refine' fun t => maps_to.mono_right _ (omegaLimit_subset_of_tendsto ϕ s (hf t))
@@ -373,6 +543,12 @@ theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvar
(continuous_const.flow ϕ continuous_id)
#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimit
+/- warning: flow.omega_limit_image_subset -> Flow.omegaLimit_image_subset is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddMonoid.{u1} τ] [_inst_3 : ContinuousAdd.{u1} τ _inst_1 (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u2} α) (t : τ), (Filter.Tendsto.{u1, u1} τ τ (fun (_x : τ) => HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ _inst_2))) _x t) f f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) (Set.image.{u2, u2} α α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ t) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 _inst_2 _inst_3 α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ _inst_2 _inst_1 _inst_3 α _inst_4) ϕ) s))
+but is expected to have type
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddMonoid.{u2} τ] [_inst_3 : ContinuousAdd.{u2} τ _inst_1 (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4) (s : Set.{u1} α) (t : τ), (Filter.Tendsto.{u2, u2} τ τ (fun (_x : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ _inst_2))) _x t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) (Set.image.{u1, u1} α α (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ t) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 _inst_2 _inst_3 α _inst_4 ϕ) s))
+Case conversion may be inaccurate. Consider using '#align flow.omega_limit_image_subset Flow.omegaLimit_image_subsetₓ'. -/
theorem omegaLimit_image_subset (t : τ) (ht : Tendsto (· + t) f f) : ω f ϕ (ϕ t '' s) ⊆ ω f ϕ s :=
by
simp only [omegaLimit_image_eq, ← map_add]
@@ -393,6 +569,12 @@ variable {τ : Type _} [TopologicalSpace τ] [AddCommGroup τ] [TopologicalAddGr
open omegaLimit
+/- warning: flow.omega_limit_image_eq -> Flow.omegaLimit_image_eq is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddCommGroup.{u1} τ] [_inst_3 : TopologicalAddGroup.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2)] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (fun (_x : τ) => HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2)))))) _x t) f f) -> (forall (t : τ), Eq.{succ u2} (Set.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) (Set.image.{u2, u2} α α (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ t) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s))
+but is expected to have type
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ (fun (_x : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) _x t) f f) -> (forall (t : τ), Eq.{succ u1} (Set.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (Set.image.{u1, u1} α α (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ t) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
+Case conversion may be inaccurate. Consider using '#align flow.omega_limit_image_eq Flow.omegaLimit_image_eqₓ'. -/
/-- the ω-limit of a forward image of `s` is the same as the ω-limit of `s`. -/
@[simp]
theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f ϕ (ϕ t '' s) = ω f ϕ s :=
@@ -403,6 +585,12 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
#align flow.omega_limit_image_eq Flow.omegaLimit_image_eq
+/- warning: flow.omega_limit_omega_limit -> Flow.omegaLimit_omegaLimit is a dubious translation:
+lean 3 declaration is
+ forall {τ : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} τ] [_inst_2 : AddCommGroup.{u1} τ] [_inst_3 : TopologicalAddGroup.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2)] {α : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} α] (f : Filter.{u1} τ) (ϕ : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u2} α), (forall (t : τ), Filter.Tendsto.{u1, u1} τ τ (HAdd.hAdd.{u1, u1, u1} τ τ τ (instHAdd.{u1} τ (AddZeroClass.toHasAdd.{u1} τ (AddMonoid.toAddZeroClass.{u1} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2)))))) t) f f) -> (HasSubset.Subset.{u2} (Set.{u2} α) (Set.hasSubset.{u2} α) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s)) (omegaLimit.{u1, u2, u2} τ α α _inst_4 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) (fun (_x : Flow.{u1, u2} τ _inst_1 (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) => τ -> α -> α) (Flow.hasCoeToFun.{u1, u2} τ (SubNegMonoid.toAddMonoid.{u1} τ (AddGroup.toSubNegMonoid.{u1} τ (AddCommGroup.toAddGroup.{u1} τ _inst_2))) _inst_1 (TopologicalAddGroup.to_continuousAdd.{u1} τ _inst_1 (AddCommGroup.toAddGroup.{u1} τ _inst_2) _inst_3) α _inst_4) ϕ) s))
+but is expected to have type
+ forall {τ : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} τ] [_inst_2 : AddCommGroup.{u2} τ] [_inst_3 : TopologicalAddGroup.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2)] {α : Type.{u1}} [_inst_4 : TopologicalSpace.{u1} α] (f : Filter.{u2} τ) (ϕ : Flow.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4) (s : Set.{u1} α), (forall (t : τ), Filter.Tendsto.{u2, u2} τ τ ((fun (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5730 : τ) (x._@.Mathlib.Dynamics.OmegaLimit._hyg.5732 : τ) => HAdd.hAdd.{u2, u2, u2} τ τ τ (instHAdd.{u2} τ (AddZeroClass.toAdd.{u2} τ (AddMonoid.toAddZeroClass.{u2} τ (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2)))))) x._@.Mathlib.Dynamics.OmegaLimit._hyg.5730 x._@.Mathlib.Dynamics.OmegaLimit._hyg.5732) t) f f) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s)) (omegaLimit.{u2, u1, u1} τ α α _inst_4 f (Flow.toFun.{u2, u1} τ _inst_1 (SubNegMonoid.toAddMonoid.{u2} τ (AddGroup.toSubNegMonoid.{u2} τ (AddCommGroup.toAddGroup.{u2} τ _inst_2))) (TopologicalAddGroup.toContinuousAdd.{u2} τ _inst_1 (AddCommGroup.toAddGroup.{u2} τ _inst_2) _inst_3) α _inst_4 ϕ) s))
+Case conversion may be inaccurate. Consider using '#align flow.omega_limit_omega_limit Flow.omegaLimit_omegaLimitₓ'. -/
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s :=
by
simp only [subset_def, mem_omegaLimit_iff_frequently₂, frequently_iff]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -38,8 +38,6 @@ open Set Function Filter Topology
/-!
### Definition and notation
-/
-
-
section omegaLimit
variable {τ : Type*} {α : Type*} {β : Type*} {ι : Type*}
@@ -49,14 +47,13 @@ def omegaLimit [TopologicalSpace β] (f : Filter τ) (ϕ : τ → α → β) (s
⋂ u ∈ f, closure (image2 ϕ u s)
#align omega_limit omegaLimit
--- mathport name: omega_limit
@[inherit_doc]
scoped[omegaLimit] notation "ω" => omegaLimit
--- mathport name: omega_limit.atTop
+/-- The ω-limit w.r.t. `Filter.atTop`. -/
scoped[omegaLimit] notation "ω⁺" => omegaLimit Filter.atTop
--- mathport name: omega_limit.atBot
+/-- The ω-limit w.r.t. `Filter.atBot`. -/
scoped[omegaLimit] notation "ω⁻" => omegaLimit Filter.atBot
variable [TopologicalSpace β]
@@ -124,7 +121,6 @@ The next few lemmas are various versions of the property
characterising ω-limits:
-/
-
/-- An element `y` is in the ω-limit set of `s` w.r.t. `f` if the
preimages of an arbitrary neighbourhood of `y` frequently
(w.r.t. `f`) intersects of `s`. -/
@@ -160,7 +156,6 @@ theorem mem_omegaLimit_singleton_iff_map_cluster_point (x : α) (y : β) :
### Set operations and omega limits
-/
-
theorem omegaLimit_inter : ω f ϕ (s₁ ∩ s₂) ⊆ ω f ϕ s₁ ∩ ω f ϕ s₂ :=
subset_inter (omegaLimit_mono_right _ _ (inter_subset_left _ _))
(omegaLimit_mono_right _ _ (inter_subset_right _ _))
@@ -196,7 +191,6 @@ particular, one may restrict the intersection to sets in `f` which are
subsets of some set `v` also in `f`.
-/
-
theorem omegaLimit_eq_iInter : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ u s) :=
biInter_eq_iInter _ _
#align omega_limit_eq_Inter omegaLimit_eq_iInter
@@ -225,7 +219,6 @@ theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
### ω-limits and compactness
-/
-
/-- A set is eventually carried into any open neighbourhood of its ω-limit:
if `c` is a compact set such that `closure {ϕ t x | t ∈ v, x ∈ s} ⊆ c` for some `v ∈ f`
and `n` is an open neighbourhood of `ω f ϕ s`, then for some `u ∈ f` we have
@@ -328,10 +321,8 @@ theorem nonempty_omegaLimit [CompactSpace β] [NeBot f] (hs : s.Nonempty) : (ω
end omegaLimit
/-!
-### ω-limits of Flows by a Monoid
+### ω-limits of flows by a monoid
-/
-
-
namespace Flow
variable {τ : Type*} [TopologicalSpace τ] [AddMonoid τ] [ContinuousAdd τ] {α : Type*}
@@ -355,10 +346,8 @@ theorem omegaLimit_image_subset (t : τ) (ht : Tendsto (· + t) f f) :
end Flow
/-!
-### ω-limits of Flows by a Group
+### ω-limits of flows by a group
-/
-
-
namespace Flow
variable {τ : Type*} [TopologicalSpace τ] [AddCommGroup τ] [TopologicalAddGroup τ] {α : Type*}
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -60,7 +60,6 @@ scoped[omegaLimit] notation "ω⁺" => omegaLimit Filter.atTop
scoped[omegaLimit] notation "ω⁻" => omegaLimit Filter.atBot
variable [TopologicalSpace β]
-
variable (f : Filter τ) (ϕ : τ → α → β) (s s₁ s₂ : Set α)
/-!
This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0
branch as we update to intermediate nightlies.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>
@@ -244,7 +244,7 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
have : ⋃ u ∈ f, j u = ⋃ u : (↥f.sets), j u := biUnion_eq_iUnion _ _
rw [this, diff_subset_comm, diff_iUnion]
rw [omegaLimit_eq_iInter_inter _ _ _ hv₁] at hn₂
- simp_rw [diff_compl]
+ simp_rw [j, diff_compl]
rw [← inter_iInter]
exact Subset.trans (inter_subset_right _ _) hn₂
rcases hk.elim_finite_subcover_image hj₁ hj₂ with ⟨g, hg₁ : ∀ u ∈ g, u ∈ f, hg₂, hg₃⟩
The iInter version of Cantor's intersection theorem is already present: IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
.
The proof of the added sInter version takes advantage of the iInter version.
Much of the addition due to conversation with Sebastien Gouezel on Zulip.
@@ -305,7 +305,7 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
(hc₂ : ∃ v ∈ f, closure (image2 ϕ v s) ⊆ c) (hs : s.Nonempty) : (ω f ϕ s).Nonempty := by
rcases hc₂ with ⟨v, hv₁, hv₂⟩
rw [omegaLimit_eq_iInter_inter _ _ _ hv₁]
- apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
+ apply IsCompact.nonempty_iInter_of_directed_nonempty_isCompact_isClosed
· rintro ⟨u₁, hu₁⟩ ⟨u₂, hu₂⟩
use ⟨u₁ ∩ u₂, inter_mem hu₁ hu₂⟩
constructor
@@ -249,10 +249,10 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
exact Subset.trans (inter_subset_right _ _) hn₂
rcases hk.elim_finite_subcover_image hj₁ hj₂ with ⟨g, hg₁ : ∀ u ∈ g, u ∈ f, hg₂, hg₃⟩
let w := (⋂ u ∈ g, u) ∩ v
- have hw₂ : w ∈ f := by simpa [*]
+ have hw₂ : w ∈ f := by simpa [w, *]
have hw₃ : k \ n ⊆ (closure (image2 ϕ w s))ᶜ := by
apply Subset.trans hg₃
- simp only [iUnion_subset_iff, compl_subset_compl]
+ simp only [j, iUnion_subset_iff, compl_subset_compl]
intros u hu
mono
refine' iInter_subset_of_subset u (iInter_subset_of_subset hu _)
@[inherit_doc]
on notations (#9942)
Make all the notations that unambiguously should inherit the docstring of their definition actually inherit it.
Also write a few docstrings by hand. I only wrote the ones I was competent to write and which I was sure of. Some docstrings come from mathlib3 as they were lost during the early port.
This PR is only intended as a first pass There are many more docstrings to add.
@@ -44,13 +44,13 @@ section omegaLimit
variable {τ : Type*} {α : Type*} {β : Type*} {ι : Type*}
-/-- The ω-limit of a set `s` under `ϕ` with respect to a filter `f` is
- ⋂ u ∈ f, cl (ϕ u s). -/
+/-- The ω-limit of a set `s` under `ϕ` with respect to a filter `f` is `⋂ u ∈ f, cl (ϕ u s)`. -/
def omegaLimit [TopologicalSpace β] (f : Filter τ) (ϕ : τ → α → β) (s : Set α) : Set β :=
⋂ u ∈ f, closure (image2 ϕ u s)
#align omega_limit omegaLimit
-- mathport name: omega_limit
+@[inherit_doc]
scoped[omegaLimit] notation "ω" => omegaLimit
-- mathport name: omega_limit.atTop
Set.image2
etc (#9275)
Set.image2
to use ∃ a ∈ s, ∃ b ∈ t, f a b = c
instead of ∃ a b, a ∈ s ∧ b ∈ t ∧ f a b = c
.Set.seq
as Set.image2
. The new definition is equal to the old one but rw [Set.seq]
gives a different result.Filter.map₂
to use ∃ u ∈ f, ∃ v ∈ g, image2 m u v ⊆ s
instead of ∃ u v, u ∈ f ∧ v ∈ g ∧ ...
Set.mem_image2
, Finset.mem_image₂
, Set.mem_mul
, Finset.mem_div
etcThe two reasons to make the change are:
∃ a ∈ s, ∃ b ∈ t, _
is a simp
-normal form, and@@ -134,11 +134,11 @@ theorem mem_omegaLimit_iff_frequently (y : β) :
simp_rw [frequently_iff, omegaLimit_def, mem_iInter, mem_closure_iff_nhds]
constructor
· intro h _ hn _ hu
- rcases h _ hu _ hn with ⟨_, _, _, _, ht, hx, hϕtx⟩
- exact ⟨_, ht, _, hx, by rwa [mem_preimage, hϕtx]⟩
+ rcases h _ hu _ hn with ⟨_, _, _, ht, _, hx, rfl⟩
+ exact ⟨_, ht, _, hx, by rwa [mem_preimage]⟩
· intro h _ hu _ hn
rcases h _ hn hu with ⟨_, ht, _, hx, hϕtx⟩
- exact ⟨_, hϕtx, _, _, ht, hx, rfl⟩
+ exact ⟨_, hϕtx, _, ht, _, hx, rfl⟩
#align mem_omega_limit_iff_frequently mem_omegaLimit_iff_frequently
/-- An element `y` is in the ω-limit set of `s` w.r.t. `f` if the
@@ -391,7 +391,7 @@ theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto (t + ·) f f) : ω f ϕ (ω f
have l₃ : (o ∩ image2 ϕ u s).Nonempty := by
rcases l₂ with ⟨b, hb₁, hb₂⟩
exact mem_closure_iff_nhds.mp hb₁ o (IsOpen.mem_nhds ho₂ hb₂)
- rcases l₃ with ⟨ϕra, ho, ⟨_, _, hr, ha, hϕra⟩⟩
+ rcases l₃ with ⟨ϕra, ho, ⟨_, hr, _, ha, hϕra⟩⟩
exact ⟨_, hr, ϕra, ⟨_, ha, hϕra⟩, ho₁ ho⟩
#align flow.omega_limit_omega_limit Flow.omegaLimit_omegaLimit
(· op ·) a
by (a op ·)
(#8843)
I used the regex \(\(· (.) ·\) (.)\)
, replacing with ($2 $1 ·)
.
@@ -340,7 +340,7 @@ variable {τ : Type*} [TopologicalSpace τ] [AddMonoid τ] [ContinuousAdd τ] {
open omegaLimit
-theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvariant ϕ (ω f ϕ s) := by
+theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto (t + ·) f f) : IsInvariant ϕ (ω f ϕ s) := by
refine' fun t ↦ MapsTo.mono_right _ (omegaLimit_subset_of_tendsto ϕ s (hf t))
exact
mapsTo_omegaLimit _ (mapsTo_id _) (fun t' x ↦ (ϕ.map_add _ _ _).symm)
@@ -376,7 +376,7 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
_ ⊆ ω f ϕ (ϕ t '' s) := omegaLimit_image_subset _ _ _ _ (hf _)
#align flow.omega_limit_image_eq Flow.omegaLimit_image_eq
-theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s := by
+theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto (t + ·) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s := by
simp only [subset_def, mem_omegaLimit_iff_frequently₂, frequently_iff]
intro _ h
rintro n hn u hu
@@ -237,7 +237,7 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
rcases hc₂ with ⟨v, hv₁, hv₂⟩
let k := closure (image2 ϕ v s)
have hk : IsCompact (k \ n) :=
- IsCompact.diff (isCompact_of_isClosed_subset hc₁ isClosed_closure hv₂) hn₁
+ (hc₁.of_isClosed_subset isClosed_closure hv₂).diff hn₁
let j u := (closure (image2 ϕ (u ∩ v) s))ᶜ
have hj₁ : ∀ u ∈ f, IsOpen (j u) := fun _ _ ↦ isOpen_compl_iff.mpr isClosed_closure
have hj₂ : k \ n ⊆ ⋃ u ∈ f, j u := by
@@ -315,7 +315,7 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
Nonempty.image2 (Filter.nonempty_of_mem (inter_mem u.prop hv₁)) hs
exact hn.mono subset_closure
· intro
- apply isCompact_of_isClosed_subset hc₁ isClosed_closure
+ apply hc₁.of_isClosed_subset isClosed_closure
calc
_ ⊆ closure (image2 ϕ v s) := closure_mono (image2_subset (inter_subset_right _ _) Subset.rfl)
_ ⊆ c := hv₂
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -42,7 +42,7 @@ open Set Function Filter Topology
section omegaLimit
-variable {τ : Type _} {α : Type _} {β : Type _} {ι : Type _}
+variable {τ : Type*} {α : Type*} {β : Type*} {ι : Type*}
/-- The ω-limit of a set `s` under `ϕ` with respect to a filter `f` is
⋂ u ∈ f, cl (ϕ u s). -/
@@ -90,7 +90,7 @@ theorem isClosed_omegaLimit : IsClosed (ω f ϕ s) :=
isClosed_iInter fun _u ↦ isClosed_iInter fun _hu ↦ isClosed_closure
#align is_closed_omega_limit isClosed_omegaLimit
-theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
+theorem mapsTo_omegaLimit' {α' β' : Type*} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ᶠ t in f, EqOn (gb ∘ ϕ t) (ϕ' t ∘ ga) s) (hgc : Continuous gb) :
MapsTo gb (ω f ϕ s) (ω f ϕ' s') := by
@@ -102,18 +102,18 @@ theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter
_ ∈ image2 ϕ' u s' := mem_image2_of_mem ht.1 (hs hx)
#align maps_to_omega_limit' mapsTo_omegaLimit'
-theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
+theorem mapsTo_omegaLimit {α' β' : Type*} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ t x, gb (ϕ t x) = ϕ' t (ga x)) (hgc : Continuous gb) :
MapsTo gb (ω f ϕ s) (ω f ϕ' s') :=
mapsTo_omegaLimit' _ hs (eventually_of_forall fun t x _hx ↦ hg t x) hgc
#align maps_to_omega_limit mapsTo_omegaLimit
-theorem omegaLimit_image_eq {α' : Type _} (ϕ : τ → α' → β) (f : Filter τ) (g : α → α') :
+theorem omegaLimit_image_eq {α' : Type*} (ϕ : τ → α' → β) (f : Filter τ) (g : α → α') :
ω f ϕ (g '' s) = ω f (fun t x ↦ ϕ t (g x)) s := by simp only [omegaLimit, image2_image_right]
#align omega_limit_image_eq omegaLimit_image_eq
-theorem omegaLimit_preimage_subset {α' : Type _} (ϕ : τ → α' → β) (s : Set α') (f : Filter τ)
+theorem omegaLimit_preimage_subset {α' : Type*} (ϕ : τ → α' → β) (s : Set α') (f : Filter τ)
(g : α → α') : ω f (fun t x ↦ ϕ t (g x)) (g ⁻¹' s) ⊆ ω f ϕ s :=
mapsTo_omegaLimit _ (mapsTo_preimage _ _) (fun _t _x ↦ rfl) continuous_id
#align omega_limit_preimage_subset omegaLimit_preimage_subset
@@ -335,7 +335,7 @@ end omegaLimit
namespace Flow
-variable {τ : Type _} [TopologicalSpace τ] [AddMonoid τ] [ContinuousAdd τ] {α : Type _}
+variable {τ : Type*} [TopologicalSpace τ] [AddMonoid τ] [ContinuousAdd τ] {α : Type*}
[TopologicalSpace α] (f : Filter τ) (ϕ : Flow τ α) (s : Set α)
open omegaLimit
@@ -362,7 +362,7 @@ end Flow
namespace Flow
-variable {τ : Type _} [TopologicalSpace τ] [AddCommGroup τ] [TopologicalAddGroup τ] {α : Type _}
+variable {τ : Type*} [TopologicalSpace τ] [AddCommGroup τ] [TopologicalAddGroup τ] {α : Type*}
[TopologicalSpace α] (f : Filter τ) (ϕ : Flow τ α) (s : Set α)
open omegaLimit
@@ -2,15 +2,12 @@
Copyright (c) 2020 Jean Lo. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Jean Lo
-
-! This file was ported from Lean 3 source module dynamics.omega_limit
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Dynamics.Flow
import Mathlib.Tactic.Monotonicity
+#align_import dynamics.omega_limit from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
/-!
# ω-limits
@@ -189,7 +189,7 @@ theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s
omegaLimit_mono_right _ _ (subset_union_right _ _) hy]
#align omega_limit_union omegaLimit_union
-theorem omegaLimit_iUnion (p : ι → Set α) : (⋃ i, ω f ϕ (p i)) ⊆ ω f ϕ (⋃ i, p i) := by
+theorem omegaLimit_iUnion (p : ι → Set α) : ⋃ i, ω f ϕ (p i) ⊆ ω f ϕ (⋃ i, p i) := by
rw [iUnion_subset_iff]
exact fun i ↦ omegaLimit_mono_right _ _ (subset_iUnion _ _)
#align omega_limit_Union omegaLimit_iUnion
@@ -244,7 +244,7 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
let j u := (closure (image2 ϕ (u ∩ v) s))ᶜ
have hj₁ : ∀ u ∈ f, IsOpen (j u) := fun _ _ ↦ isOpen_compl_iff.mpr isClosed_closure
have hj₂ : k \ n ⊆ ⋃ u ∈ f, j u := by
- have : (⋃ u ∈ f, j u) = ⋃ u : (↥f.sets), j u := biUnion_eq_iUnion _ _
+ have : ⋃ u ∈ f, j u = ⋃ u : (↥f.sets), j u := biUnion_eq_iUnion _ _
rw [this, diff_subset_comm, diff_iUnion]
rw [omegaLimit_eq_iInter_inter _ _ _ hv₁] at hn₂
simp_rw [diff_compl]
@@ -241,7 +241,7 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
let k := closure (image2 ϕ v s)
have hk : IsCompact (k \ n) :=
IsCompact.diff (isCompact_of_isClosed_subset hc₁ isClosed_closure hv₂) hn₁
- let j u := closure (image2 ϕ (u ∩ v) s)ᶜ
+ let j u := (closure (image2 ϕ (u ∩ v) s))ᶜ
have hj₁ : ∀ u ∈ f, IsOpen (j u) := fun _ _ ↦ isOpen_compl_iff.mpr isClosed_closure
have hj₂ : k \ n ⊆ ⋃ u ∈ f, j u := by
have : (⋃ u ∈ f, j u) = ⋃ u : (↥f.sets), j u := biUnion_eq_iUnion _ _
@@ -253,14 +253,14 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
rcases hk.elim_finite_subcover_image hj₁ hj₂ with ⟨g, hg₁ : ∀ u ∈ g, u ∈ f, hg₂, hg₃⟩
let w := (⋂ u ∈ g, u) ∩ v
have hw₂ : w ∈ f := by simpa [*]
- have hw₃ : k \ n ⊆ closure (image2 ϕ w s)ᶜ := by
+ have hw₃ : k \ n ⊆ (closure (image2 ϕ w s))ᶜ := by
apply Subset.trans hg₃
simp only [iUnion_subset_iff, compl_subset_compl]
intros u hu
mono
refine' iInter_subset_of_subset u (iInter_subset_of_subset hu _)
all_goals exact Subset.rfl
- have hw₄ : kᶜ ⊆ closure (image2 ϕ w s)ᶜ := by
+ have hw₄ : kᶜ ⊆ (closure (image2 ϕ w s))ᶜ := by
simp only [compl_subset_compl]
exact closure_mono (image2_subset (inter_subset_right _ _) Subset.rfl)
have hnc : nᶜ ⊆ k \ n ∪ kᶜ := by rw [union_comm, ← inter_subset, diff_eq, inter_comm]
I wrote a script to find lines that contain an odd number of backticks
@@ -226,7 +226,7 @@ theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
#align omega_limit_subset_closure_fw_image omegaLimit_subset_closure_fw_image
/-!
-### `ω-limits and compactness
+### ω-limits and compactness
-/
@@ -182,10 +182,10 @@ theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s
simp only [not_frequently, not_nonempty_iff_eq_empty, ← subset_empty_iff]
rintro ⟨⟨n₁, hn₁, h₁⟩, ⟨n₂, hn₂, h₂⟩⟩
refine' ⟨n₁ ∩ n₂, inter_mem hn₁ hn₂, h₁.mono fun t ↦ _, h₂.mono fun t ↦ _⟩
- exacts[Subset.trans <| inter_subset_inter_right _ <| preimage_mono <| inter_subset_left _ _,
+ exacts [Subset.trans <| inter_subset_inter_right _ <| preimage_mono <| inter_subset_left _ _,
Subset.trans <| inter_subset_inter_right _ <| preimage_mono <| inter_subset_right _ _]
· rintro (hy | hy)
- exacts[omegaLimit_mono_right _ _ (subset_union_left _ _) hy,
+ exacts [omegaLimit_mono_right _ _ (subset_union_left _ _) hy,
omegaLimit_mono_right _ _ (subset_union_right _ _) hy]
#align omega_limit_union omegaLimit_union
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -76,7 +76,7 @@ theorem omegaLimit_def : ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ u s) := rfl
theorem omegaLimit_subset_of_tendsto {m : τ → τ} {f₁ f₂ : Filter τ} (hf : Tendsto m f₁ f₂) :
ω f₁ (fun t x ↦ ϕ (m t) x) s ⊆ ω f₂ ϕ s := by
- refine' interᵢ₂_mono' fun u hu ↦ ⟨m ⁻¹' u, tendsto_def.mp hf _ hu, _⟩
+ refine' iInter₂_mono' fun u hu ↦ ⟨m ⁻¹' u, tendsto_def.mp hf _ hu, _⟩
rw [← image2_image_left]
exact closure_mono (image2_subset (image_preimage_subset _ _) Subset.rfl)
#align omega_limit_subset_of_tendsto omegaLimit_subset_of_tendsto
@@ -86,18 +86,18 @@ theorem omegaLimit_mono_left {f₁ f₂ : Filter τ} (hf : f₁ ≤ f₂) : ω f
#align omega_limit_mono_left omegaLimit_mono_left
theorem omegaLimit_mono_right {s₁ s₂ : Set α} (hs : s₁ ⊆ s₂) : ω f ϕ s₁ ⊆ ω f ϕ s₂ :=
- interᵢ₂_mono fun _u _hu ↦ closure_mono (image2_subset Subset.rfl hs)
+ iInter₂_mono fun _u _hu ↦ closure_mono (image2_subset Subset.rfl hs)
#align omega_limit_mono_right omegaLimit_mono_right
theorem isClosed_omegaLimit : IsClosed (ω f ϕ s) :=
- isClosed_interᵢ fun _u ↦ isClosed_interᵢ fun _hu ↦ isClosed_closure
+ isClosed_iInter fun _u ↦ isClosed_iInter fun _hu ↦ isClosed_closure
#align is_closed_omega_limit isClosed_omegaLimit
theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ᶠ t in f, EqOn (gb ∘ ϕ t) (ϕ' t ∘ ga) s) (hgc : Continuous gb) :
MapsTo gb (ω f ϕ s) (ω f ϕ' s') := by
- simp only [omegaLimit_def, mem_interᵢ, MapsTo]
+ simp only [omegaLimit_def, mem_iInter, MapsTo]
intro y hy u hu
refine' map_mem_closure hgc (hy _ (inter_mem hu hg)) (forall_image2_iff.2 fun t ht x hx ↦ _)
calc
@@ -134,7 +134,7 @@ characterising ω-limits:
(w.r.t. `f`) intersects of `s`. -/
theorem mem_omegaLimit_iff_frequently (y : β) :
y ∈ ω f ϕ s ↔ ∀ n ∈ 𝓝 y, ∃ᶠ t in f, (s ∩ ϕ t ⁻¹' n).Nonempty := by
- simp_rw [frequently_iff, omegaLimit_def, mem_interᵢ, mem_closure_iff_nhds]
+ simp_rw [frequently_iff, omegaLimit_def, mem_iInter, mem_closure_iff_nhds]
constructor
· intro h _ hn _ hu
rcases h _ hu _ hn with ⟨_, _, _, _, ht, hx, hϕtx⟩
@@ -170,9 +170,9 @@ theorem omegaLimit_inter : ω f ϕ (s₁ ∩ s₂) ⊆ ω f ϕ s₁ ∩ ω f ϕ
(omegaLimit_mono_right _ _ (inter_subset_right _ _))
#align omega_limit_inter omegaLimit_inter
-theorem omegaLimit_interᵢ (p : ι → Set α) : ω f ϕ (⋂ i, p i) ⊆ ⋂ i, ω f ϕ (p i) :=
- subset_interᵢ fun _i ↦ omegaLimit_mono_right _ _ (interᵢ_subset _ _)
-#align omega_limit_Inter omegaLimit_interᵢ
+theorem omegaLimit_iInter (p : ι → Set α) : ω f ϕ (⋂ i, p i) ⊆ ⋂ i, ω f ϕ (p i) :=
+ subset_iInter fun _i ↦ omegaLimit_mono_right _ _ (iInter_subset _ _)
+#align omega_limit_Inter omegaLimit_iInter
theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s₂ := by
ext y; constructor
@@ -189,10 +189,10 @@ theorem omegaLimit_union : ω f ϕ (s₁ ∪ s₂) = ω f ϕ s₁ ∪ ω f ϕ s
omegaLimit_mono_right _ _ (subset_union_right _ _) hy]
#align omega_limit_union omegaLimit_union
-theorem omegaLimit_unionᵢ (p : ι → Set α) : (⋃ i, ω f ϕ (p i)) ⊆ ω f ϕ (⋃ i, p i) := by
- rw [unionᵢ_subset_iff]
- exact fun i ↦ omegaLimit_mono_right _ _ (subset_unionᵢ _ _)
-#align omega_limit_Union omegaLimit_unionᵢ
+theorem omegaLimit_iUnion (p : ι → Set α) : (⋃ i, ω f ϕ (p i)) ⊆ ω f ϕ (⋃ i, p i) := by
+ rw [iUnion_subset_iff]
+ exact fun i ↦ omegaLimit_mono_right _ _ (subset_iUnion _ _)
+#align omega_limit_Union omegaLimit_iUnion
/-!
Different expressions for omega limits, useful for rewrites. In
@@ -201,27 +201,27 @@ subsets of some set `v` also in `f`.
-/
-theorem omegaLimit_eq_interᵢ : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ u s) :=
- binterᵢ_eq_interᵢ _ _
-#align omega_limit_eq_Inter omegaLimit_eq_interᵢ
+theorem omegaLimit_eq_iInter : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ u s) :=
+ biInter_eq_iInter _ _
+#align omega_limit_eq_Inter omegaLimit_eq_iInter
-theorem omegaLimit_eq_binterᵢ_inter {v : Set τ} (hv : v ∈ f) :
+theorem omegaLimit_eq_biInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ (u ∩ v) s) :=
- Subset.antisymm (interᵢ₂_mono' fun u hu ↦ ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
- (interᵢ₂_mono fun _u _hu ↦ closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
-#align omega_limit_eq_bInter_inter omegaLimit_eq_binterᵢ_inter
+ Subset.antisymm (iInter₂_mono' fun u hu ↦ ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
+ (iInter₂_mono fun _u _hu ↦ closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
+#align omega_limit_eq_bInter_inter omegaLimit_eq_biInter_inter
-theorem omegaLimit_eq_interᵢ_inter {v : Set τ} (hv : v ∈ f) :
+theorem omegaLimit_eq_iInter_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) := by
- rw [omegaLimit_eq_binterᵢ_inter _ _ _ hv]
- apply binterᵢ_eq_interᵢ
-#align omega_limit_eq_Inter_inter omegaLimit_eq_interᵢ_inter
+ rw [omegaLimit_eq_biInter_inter _ _ _ hv]
+ apply biInter_eq_iInter
+#align omega_limit_eq_Inter_inter omegaLimit_eq_iInter_inter
theorem omegaLimit_subset_closure_fw_image {u : Set τ} (hu : u ∈ f) :
ω f ϕ s ⊆ closure (image2 ϕ u s) := by
- rw [omegaLimit_eq_interᵢ]
+ rw [omegaLimit_eq_iInter]
intro _ hx
- rw [mem_interᵢ] at hx
+ rw [mem_iInter] at hx
exact hx ⟨u, hu⟩
#align omega_limit_subset_closure_fw_image omegaLimit_subset_closure_fw_image
@@ -244,21 +244,21 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
let j u := closure (image2 ϕ (u ∩ v) s)ᶜ
have hj₁ : ∀ u ∈ f, IsOpen (j u) := fun _ _ ↦ isOpen_compl_iff.mpr isClosed_closure
have hj₂ : k \ n ⊆ ⋃ u ∈ f, j u := by
- have : (⋃ u ∈ f, j u) = ⋃ u : (↥f.sets), j u := bunionᵢ_eq_unionᵢ _ _
- rw [this, diff_subset_comm, diff_unionᵢ]
- rw [omegaLimit_eq_interᵢ_inter _ _ _ hv₁] at hn₂
+ have : (⋃ u ∈ f, j u) = ⋃ u : (↥f.sets), j u := biUnion_eq_iUnion _ _
+ rw [this, diff_subset_comm, diff_iUnion]
+ rw [omegaLimit_eq_iInter_inter _ _ _ hv₁] at hn₂
simp_rw [diff_compl]
- rw [← inter_interᵢ]
+ rw [← inter_iInter]
exact Subset.trans (inter_subset_right _ _) hn₂
rcases hk.elim_finite_subcover_image hj₁ hj₂ with ⟨g, hg₁ : ∀ u ∈ g, u ∈ f, hg₂, hg₃⟩
let w := (⋂ u ∈ g, u) ∩ v
have hw₂ : w ∈ f := by simpa [*]
have hw₃ : k \ n ⊆ closure (image2 ϕ w s)ᶜ := by
apply Subset.trans hg₃
- simp only [unionᵢ_subset_iff, compl_subset_compl]
+ simp only [iUnion_subset_iff, compl_subset_compl]
intros u hu
mono
- refine' interᵢ_subset_of_subset u (interᵢ_subset_of_subset hu _)
+ refine' iInter_subset_of_subset u (iInter_subset_of_subset hu _)
all_goals exact Subset.rfl
have hw₄ : kᶜ ⊆ closure (image2 ϕ w s)ᶜ := by
simp only [compl_subset_compl]
@@ -307,8 +307,8 @@ theorem eventually_mapsTo_of_isOpen_of_omegaLimit_subset [CompactSpace β] {v :
theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁ : IsCompact c)
(hc₂ : ∃ v ∈ f, closure (image2 ϕ v s) ⊆ c) (hs : s.Nonempty) : (ω f ϕ s).Nonempty := by
rcases hc₂ with ⟨v, hv₁, hv₂⟩
- rw [omegaLimit_eq_interᵢ_inter _ _ _ hv₁]
- apply IsCompact.nonempty_interᵢ_of_directed_nonempty_compact_closed
+ rw [omegaLimit_eq_iInter_inter _ _ _ hv₁]
+ apply IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
· rintro ⟨u₁, hu₁⟩ ⟨u₂, hu₂⟩
use ⟨u₁ ∩ u₂, inter_mem hu₁ hu₂⟩
constructor
This PR fixes two things:
align
statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align
). This is often seen in the mathport output after ending calc
blocks.#align
statements. (This was needed for a script I wrote for #3630.)@@ -377,7 +377,6 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
calc
ω f ϕ s = ω f ϕ (ϕ (-t) '' (ϕ t '' s)) := by simp [image_image, ← map_add]
_ ⊆ ω f ϕ (ϕ t '' s) := omegaLimit_image_subset _ _ _ _ (hf _)
-
#align flow.omega_limit_image_eq Flow.omegaLimit_image_eq
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s := by
@@ -36,9 +36,7 @@ endowed with an order.
-/
-open Set Function Filter
-
-open Topology
+open Set Function Filter Topology
/-!
### Definition and notation
@@ -95,7 +93,7 @@ theorem isClosed_omegaLimit : IsClosed (ω f ϕ s) :=
isClosed_interᵢ fun _u ↦ isClosed_interᵢ fun _hu ↦ isClosed_closure
#align is_closed_omega_limit isClosed_omegaLimit
-theorem mapsTo_omega_limit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
+theorem mapsTo_omegaLimit' {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ᶠ t in f, EqOn (gb ∘ ϕ t) (ϕ' t ∘ ga) s) (hgc : Continuous gb) :
MapsTo gb (ω f ϕ s) (ω f ϕ' s') := by
@@ -105,14 +103,13 @@ theorem mapsTo_omega_limit' {α' β' : Type _} [TopologicalSpace β'] {f : Filte
calc
gb (ϕ t x) = ϕ' t (ga x) := ht.2 hx
_ ∈ image2 ϕ' u s' := mem_image2_of_mem ht.1 (hs hx)
-
-#align maps_to_omega_limit' mapsTo_omega_limit'
+#align maps_to_omega_limit' mapsTo_omegaLimit'
theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
{ϕ' : τ → α' → β'} {ga : α → α'} {s' : Set α'} (hs : MapsTo ga s s') {gb : β → β'}
(hg : ∀ t x, gb (ϕ t x) = ϕ' t (ga x)) (hgc : Continuous gb) :
MapsTo gb (ω f ϕ s) (ω f ϕ' s') :=
- mapsTo_omega_limit' _ hs (eventually_of_forall fun t x _hx ↦ hg t x) hgc
+ mapsTo_omegaLimit' _ hs (eventually_of_forall fun t x _hx ↦ hg t x) hgc
#align maps_to_omega_limit mapsTo_omegaLimit
theorem omegaLimit_image_eq {α' : Type _} (ϕ : τ → α' → β) (f : Filter τ) (g : α → α') :
@@ -208,15 +205,15 @@ theorem omegaLimit_eq_interᵢ : ω f ϕ s = ⋂ u : ↥f.sets, closure (image2
binterᵢ_eq_interᵢ _ _
#align omega_limit_eq_Inter omegaLimit_eq_interᵢ
-theorem omegaLimit_eq_bInter_inter {v : Set τ} (hv : v ∈ f) :
+theorem omegaLimit_eq_binterᵢ_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u ∈ f, closure (image2 ϕ (u ∩ v) s) :=
Subset.antisymm (interᵢ₂_mono' fun u hu ↦ ⟨u ∩ v, inter_mem hu hv, Subset.rfl⟩)
(interᵢ₂_mono fun _u _hu ↦ closure_mono <| image2_subset (inter_subset_left _ _) Subset.rfl)
-#align omega_limit_eq_bInter_inter omegaLimit_eq_bInter_inter
+#align omega_limit_eq_bInter_inter omegaLimit_eq_binterᵢ_inter
theorem omegaLimit_eq_interᵢ_inter {v : Set τ} (hv : v ∈ f) :
ω f ϕ s = ⋂ u : ↥f.sets, closure (image2 ϕ (u ∩ v) s) := by
- rw [omegaLimit_eq_bInter_inter _ _ _ hv]
+ rw [omegaLimit_eq_binterᵢ_inter _ _ _ hv]
apply binterᵢ_eq_interᵢ
#align omega_limit_eq_Inter_inter omegaLimit_eq_interᵢ_inter
@@ -325,7 +322,6 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
calc
_ ⊆ closure (image2 ϕ v s) := closure_mono (image2_subset (inter_subset_right _ _) Subset.rfl)
_ ⊆ c := hv₂
-
· exact fun _ ↦ isClosed_closure
#align nonempty_omega_limit_of_is_compact_absorbing nonempty_omegaLimit_of_isCompact_absorbing
@@ -354,8 +350,8 @@ theorem isInvariant_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : IsInvar
(continuous_const.flow ϕ continuous_id)
#align flow.is_invariant_omega_limit Flow.isInvariant_omegaLimit
-theorem omegaLimit_image_subset (t : τ) (ht : Tendsto (· + t) f f) : ω f ϕ (ϕ t '' s) ⊆ ω f ϕ s :=
- by
+theorem omegaLimit_image_subset (t : τ) (ht : Tendsto (· + t) f f) :
+ ω f ϕ (ϕ t '' s) ⊆ ω f ϕ s := by
simp only [omegaLimit_image_eq, ← map_add]
exact omegaLimit_subset_of_tendsto ϕ s ht
#align flow.omega_limit_image_subset Flow.omegaLimit_image_subset
@@ -396,8 +392,7 @@ theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ
((isInvariant_iff_image _ _).mp (isInvariant_omegaLimit _ _ _ hf) _))
have l₂ : (closure (image2 ϕ u s) ∩ o).Nonempty :=
l₁.mono fun b hb ↦ ⟨omegaLimit_subset_closure_fw_image _ _ _ hu hb.1, hb.2⟩
- have l₃ : (o ∩ image2 ϕ u s).Nonempty :=
- by
+ have l₃ : (o ∩ image2 ϕ u s).Nonempty := by
rcases l₂ with ⟨b, hb₁, hb₂⟩
exact mem_closure_iff_nhds.mp hb₁ o (IsOpen.mem_nhds ho₂ hb₂)
rcases l₃ with ⟨ϕra, ho, ⟨_, _, hr, ha, hϕra⟩⟩
vscode is already configured by .vscode/settings.json
to trim these on save. It's not clear how they've managed to stick around.
By doing this all in one PR now, it avoids getting random whitespace diffs in PRs later.
This was done with a regex search in vscode,
@@ -105,7 +105,7 @@ theorem mapsTo_omega_limit' {α' β' : Type _} [TopologicalSpace β'] {f : Filte
calc
gb (ϕ t x) = ϕ' t (ga x) := ht.2 hx
_ ∈ image2 ϕ' u s' := mem_image2_of_mem ht.1 (hs hx)
-
+
#align maps_to_omega_limit' mapsTo_omega_limit'
theorem mapsTo_omegaLimit {α' β' : Type _} [TopologicalSpace β'] {f : Filter τ} {ϕ : τ → α → β}
@@ -325,7 +325,7 @@ theorem nonempty_omegaLimit_of_isCompact_absorbing [NeBot f] {c : Set β} (hc₁
calc
_ ⊆ closure (image2 ϕ v s) := closure_mono (image2_subset (inter_subset_right _ _) Subset.rfl)
_ ⊆ c := hv₂
-
+
· exact fun _ ↦ isClosed_closure
#align nonempty_omega_limit_of_is_compact_absorbing nonempty_omegaLimit_of_isCompact_absorbing
@@ -381,7 +381,7 @@ theorem omegaLimit_image_eq (hf : ∀ t, Tendsto (· + t) f f) (t : τ) : ω f
calc
ω f ϕ s = ω f ϕ (ϕ (-t) '' (ϕ t '' s)) := by simp [image_image, ← map_add]
_ ⊆ ω f ϕ (ϕ t '' s) := omegaLimit_image_subset _ _ _ _ (hf _)
-
+
#align flow.omega_limit_image_eq Flow.omegaLimit_image_eq
theorem omegaLimit_omegaLimit (hf : ∀ t, Tendsto ((· + ·) t) f f) : ω f ϕ (ω f ϕ s) ⊆ ω f ϕ s := by
@@ -260,7 +260,6 @@ theorem eventually_closure_subset_of_isCompact_absorbing_of_isOpen_of_omegaLimit
apply Subset.trans hg₃
simp only [unionᵢ_subset_iff, compl_subset_compl]
intros u hu
- apply closure_mono -- Porting note: not yet tagged with mono.
mono
refine' interᵢ_subset_of_subset u (interᵢ_subset_of_subset hu _)
all_goals exact Subset.rfl
The unported dependencies are