@@ -121,28 +121,57 @@ theorem filter.tendsto.liminf_eq {f : filter β} {u : β → α} {a : α} [ne_bo
121
121
(h : tendsto u f (𝓝 a)) : liminf f u = a :=
122
122
Liminf_eq_of_le_nhds h
123
123
124
- end conditionally_complete_linear_order
125
-
126
- section complete_linear_order
127
- variables [complete_linear_order α] [topological_space α] [order_topology α]
128
- -- In complete_linear_order, the above theorems take a simpler form
129
-
130
124
/-- If the liminf and the limsup of a function coincide, then the limit of the function
131
125
exists and has the same value -/
132
126
theorem tendsto_of_liminf_eq_limsup {f : filter β} {u : β → α} {a : α}
133
- (hinf : liminf f u = a) (hsup : limsup f u = a) : tendsto u f (𝓝 a) :=
134
- le_nhds_of_Limsup_eq_Liminf is_bounded_le_of_top is_bounded_ge_of_bot hsup hinf
127
+ (hinf : liminf f u = a) (hsup : limsup f u = a)
128
+ (h : f.is_bounded_under (≤) u . is_bounded_default)
129
+ (h' : f.is_bounded_under (≥) u . is_bounded_default) :
130
+ tendsto u f (𝓝 a) :=
131
+ le_nhds_of_Limsup_eq_Liminf h h' hsup hinf
135
132
136
133
/-- If a number `a` is less than or equal to the `liminf` of a function `f` at some filter
137
134
and is greater than or equal to the `limsup` of `f`, then `f` tends to `a` along this filter. -/
138
135
theorem tendsto_of_le_liminf_of_limsup_le {f : filter β} {u : β → α} {a : α}
139
- (hinf : a ≤ liminf f u) (hsup : limsup f u ≤ a) :
136
+ (hinf : a ≤ liminf f u) (hsup : limsup f u ≤ a)
137
+ (h : f.is_bounded_under (≤) u . is_bounded_default)
138
+ (h' : f.is_bounded_under (≥) u . is_bounded_default) :
140
139
tendsto u f (𝓝 a) :=
141
140
if hf : f = ⊥ then hf.symm ▸ tendsto_bot
142
141
else by haveI : ne_bot f := ⟨hf⟩; exact tendsto_of_liminf_eq_limsup
143
- (le_antisymm (le_trans liminf_le_limsup hsup) hinf)
144
- (le_antisymm hsup (le_trans hinf liminf_le_limsup))
142
+ (le_antisymm (le_trans ( liminf_le_limsup h h') hsup) hinf)
143
+ (le_antisymm hsup (le_trans hinf ( liminf_le_limsup h h'))) h h'
145
144
146
- end complete_linear_order
145
+ /-- Assume that, for any `a < b`, a sequence can not be infinitely many times below `a` and
146
+ above `b`. If it is also ultimately bounded above and below, then it has to converge. This even
147
+ works if `a` and `b` are restricted to a dense subset.
148
+ -/
149
+ lemma tendsto_of_no_upcrossings [densely_ordered α]
150
+ {f : filter β} {u : β → α} {s : set α} (hs : dense s)
151
+ (H : ∀ (a ∈ s) (b ∈ s), a < b → ¬((∃ᶠ n in f, u n < a) ∧ (∃ᶠ n in f, b < u n)))
152
+ (h : f.is_bounded_under (≤) u . is_bounded_default)
153
+ (h' : f.is_bounded_under (≥) u . is_bounded_default) :
154
+ ∃ (c : α), tendsto u f (𝓝 c) :=
155
+ begin
156
+ by_cases hbot : f = ⊥, { rw hbot, exact ⟨Inf ∅, tendsto_bot⟩ },
157
+ haveI : ne_bot f := ⟨hbot⟩,
158
+ refine ⟨limsup f u, _⟩,
159
+ apply tendsto_of_le_liminf_of_limsup_le _ le_rfl h h',
160
+ by_contra hlt,
161
+ push_neg at hlt,
162
+ obtain ⟨a, ⟨⟨la, au⟩, as⟩⟩ : ∃ a, (f.liminf u < a ∧ a < f.limsup u) ∧ a ∈ s :=
163
+ dense_iff_inter_open.1 hs (set.Ioo (f.liminf u) (f.limsup u)) is_open_Ioo
164
+ (set.nonempty_Ioo.2 hlt),
165
+ obtain ⟨b, ⟨⟨ab, bu⟩, bs⟩⟩ : ∃ b, (a < b ∧ b < f.limsup u) ∧ b ∈ s :=
166
+ dense_iff_inter_open.1 hs (set.Ioo a (f.limsup u)) is_open_Ioo
167
+ (set.nonempty_Ioo.2 au),
168
+ have A : ∃ᶠ n in f, u n < a :=
169
+ frequently_lt_of_liminf_lt (is_bounded.is_cobounded_ge h) la,
170
+ have B : ∃ᶠ n in f, b < u n :=
171
+ frequently_lt_of_lt_limsup (is_bounded.is_cobounded_le h') bu,
172
+ exact H a as b bs ab ⟨A, B⟩,
173
+ end
174
+
175
+ end conditionally_complete_linear_order
147
176
148
177
end liminf_limsup
0 commit comments