@@ -129,43 +129,65 @@ begin
129
129
exact ⟨h₁ c cpos, h₂ c cpos⟩
130
130
end
131
131
132
- private theorem congr_aux1 (f₁ f₂ : α → β) (g : α → γ) (l : filter α)
133
- (h : {x | f₁ x = f₂ x} ∈ l.sets) :
134
- ∀ c, {x : α | ∥f₁ x∥ ≤ c * ∥g x∥} ∈ l.sets ↔ {x : α | ∥f₂ x∥ ≤ c * ∥g x∥} ∈ l.sets :=
135
- begin
136
- intro c, split,
137
- { intro h₀, filter_upwards [h₀, h], dsimp, intros x hx e, rw ←e, apply hx },
138
- intro h₀, filter_upwards [h₀, h], dsimp, intros x hx e, rw e, apply hx
139
- end
132
+ theorem is_bigo_congr {f₁ f₂ : α → β} {g₁ g₂ : α → γ} {l : filter α}
133
+ (hf : {x | f₁ x = f₂ x} ∈ l.sets) (hg : {x | g₁ x = g₂ x} ∈ l.sets) :
134
+ is_bigo f₁ g₁ l ↔ is_bigo f₂ g₂ l :=
135
+ bex_congr $ λ c _, filter.congr_sets $
136
+ by filter_upwards [hf, hg] λ x e₁ e₂,
137
+ by dsimp at e₁ e₂ ⊢; rw [e₁, e₂]
138
+
139
+ theorem is_littleo_congr {f₁ f₂ : α → β} {g₁ g₂ : α → γ} {l : filter α}
140
+ (hf : {x | f₁ x = f₂ x} ∈ l.sets) (hg : {x | g₁ x = g₂ x} ∈ l.sets) :
141
+ is_littleo f₁ g₁ l ↔ is_littleo f₂ g₂ l :=
142
+ ball_congr $ λ c _, filter.congr_sets $
143
+ by filter_upwards [hf, hg] λ x e₁ e₂,
144
+ by dsimp at e₁ e₂ ⊢; rw [e₁, e₂]
145
+
146
+ theorem is_bigo.congr {f₁ f₂ : α → β} {g₁ g₂ : α → γ} {l : filter α}
147
+ (hf : ∀ x, f₁ x = f₂ x) (hg : ∀ x, g₁ x = g₂ x) :
148
+ is_bigo f₁ g₁ l → is_bigo f₂ g₂ l :=
149
+ (is_bigo_congr (univ_mem_sets' hf) (univ_mem_sets' hg)).1
150
+
151
+ theorem is_littleo.congr {f₁ f₂ : α → β} {g₁ g₂ : α → γ} {l : filter α}
152
+ (hf : ∀ x, f₁ x = f₂ x) (hg : ∀ x, g₁ x = g₂ x) :
153
+ is_littleo f₁ g₁ l → is_littleo f₂ g₂ l :=
154
+ (is_littleo_congr (univ_mem_sets' hf) (univ_mem_sets' hg)).1
155
+
156
+ theorem is_bigo_congr_left {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
157
+ (h : {x | f₁ x = f₂ x} ∈ l.sets) :
158
+ is_bigo f₁ g l ↔ is_bigo f₂ g l :=
159
+ is_bigo_congr h (univ_mem_sets' $ λ _, rfl)
160
+
161
+ theorem is_littleo_congr_left {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
162
+ (h : {x | f₁ x = f₂ x} ∈ l.sets) :
163
+ is_littleo f₁ g l ↔ is_littleo f₂ g l :=
164
+ is_littleo_congr h (univ_mem_sets' $ λ _, rfl)
140
165
141
166
theorem is_bigo.congr_left {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
142
- (h : {x | f₁ x = f₂ x} ∈ l.sets) :
143
- is_bigo f₁ g l ↔ is_bigo f₂ g l :=
144
- by simp only [is_bigo, congr_aux1 f₁ f₂ g l h]
167
+ (hf : ∀ x, f₁ x = f₂ x) : is_bigo f₁ g l → is_bigo f₂ g l :=
168
+ is_bigo.congr hf (λ _, rfl)
145
169
146
170
theorem is_littleo.congr_left {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
147
- (h : {x | f₁ x = f₂ x} ∈ l.sets) :
148
- is_littleo f₁ g l ↔ is_littleo f₂ g l :=
149
- by simp only [is_littleo, congr_aux1 f₁ f₂ g l h]
171
+ (hf : ∀ x, f₁ x = f₂ x) : is_littleo f₁ g l → is_littleo f₂ g l :=
172
+ is_littleo.congr hf (λ _, rfl)
150
173
151
- private theorem congr_aux2 (f : α → β) (g₁ g₂ : α → γ) (l : filter α)
152
- (h : {x | g₁ x = g₂ x} ∈ l.sets) :
153
- ∀ c, {x : α | ∥f x∥ ≤ c * ∥g₁ x∥} ∈ l.sets ↔ {x : α | ∥f x∥ ≤ c * ∥g₂ x∥} ∈ l.sets :=
154
- begin
155
- intro c, split,
156
- { intro h₀, filter_upwards [h₀, h], dsimp, intros x hx e, rw ←e, apply hx },
157
- intro h₀, filter_upwards [h₀, h], dsimp, intros x hx e, rw e, apply hx
158
- end
174
+ theorem is_bigo_congr_right {f : α → β} {g₁ g₂ : α → γ} {l : filter α}
175
+ (h : {x | g₁ x = g₂ x} ∈ l.sets) :
176
+ is_bigo f g₁ l ↔ is_bigo f g₂ l :=
177
+ is_bigo_congr (univ_mem_sets' $ λ _, rfl) h
178
+
179
+ theorem is_littleo_congr_right {f : α → β} {g₁ g₂ : α → γ} {l : filter α}
180
+ (h : {x | g₁ x = g₂ x} ∈ l.sets) :
181
+ is_littleo f g₁ l ↔ is_littleo f g₂ l :=
182
+ is_littleo_congr (univ_mem_sets' $ λ _, rfl) h
159
183
160
184
theorem is_bigo.congr_right {f : α → β} {g₁ g₂ : α → γ} {l : filter α}
161
- (h : {x | g₁ x = g₂ x} ∈ l.sets) :
162
- is_bigo f g₁ l ↔ is_bigo f g₂ l :=
163
- by simp only [is_bigo, congr_aux2 f g₁ g₂ l h]
185
+ (hg : ∀ x, g₁ x = g₂ x) : is_bigo f g₁ l → is_bigo f g₂ l :=
186
+ is_bigo.congr (λ _, rfl) hg
164
187
165
188
theorem is_littleo.congr_right {f : α → β} {g₁ g₂ : α → γ} {l : filter α}
166
- (h : {x | g₁ x = g₂ x} ∈ l.sets) :
167
- is_littleo f g₁ l ↔ is_littleo f g₂ l :=
168
- by simp only [is_littleo, congr_aux2 f g₁ g₂ l h]
189
+ (hg : ∀ x, g₁ x = g₂ x) : is_littleo f g₁ l → is_littleo f g₂ l :=
190
+ is_littleo.congr (λ _, rfl) hg
169
191
170
192
end
171
193
@@ -230,23 +252,19 @@ end
230
252
section
231
253
variables [normed_group β] [has_norm γ]
232
254
233
- @[simp]
234
- theorem is_bigo_norm_left {f : α → β} {g : α → γ} {l : filter α} :
255
+ @[simp] theorem is_bigo_norm_left {f : α → β} {g : α → γ} {l : filter α} :
235
256
is_bigo (λ x, ∥f x∥) g l ↔ is_bigo f g l :=
236
257
by simp only [is_bigo, norm_norm]
237
258
238
- @[simp]
239
- theorem is_littleo_norm_left {f : α → β} {g : α → γ} {l : filter α} :
259
+ @[simp] theorem is_littleo_norm_left {f : α → β} {g : α → γ} {l : filter α} :
240
260
is_littleo (λ x, ∥f x∥) g l ↔ is_littleo f g l :=
241
261
by simp only [is_littleo, norm_norm]
242
262
243
- @[simp]
244
- theorem is_bigo_neg_left {f : α → β} {g : α → γ} {l : filter α} :
263
+ @[simp] theorem is_bigo_neg_left {f : α → β} {g : α → γ} {l : filter α} :
245
264
is_bigo (λ x, -f x) g l ↔ is_bigo f g l :=
246
265
by { rw ←is_bigo_norm_left, simp only [norm_neg], rw is_bigo_norm_left }
247
266
248
- @[simp]
249
- theorem is_littleo_neg_left {f : α → β} {g : α → γ} {l : filter α} :
267
+ @[simp] theorem is_littleo_neg_left {f : α → β} {g : α → γ} {l : filter α} :
250
268
is_littleo (λ x, -f x) g l ↔ is_littleo f g l :=
251
269
by { rw ←is_littleo_norm_left, simp only [norm_neg], rw is_littleo_norm_left }
252
270
@@ -287,6 +305,46 @@ theorem is_littleo.sub {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
287
305
is_littleo (λ x, f₁ x - f₂ x) g l :=
288
306
h₁.add (is_littleo_neg_left.mpr h₂)
289
307
308
+ theorem is_bigo_comm {f₁ f₂ : α → β} {g : α → γ} {l : filter α} :
309
+ is_bigo (λ x, f₁ x - f₂ x) g l ↔ is_bigo (λ x, f₂ x - f₁ x) g l :=
310
+ by simpa using @is_bigo_neg_left _ _ _ _ _ (λ x, f₂ x - f₁ x) g l
311
+
312
+ theorem is_bigo.symm {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
313
+ : is_bigo (λ x, f₁ x - f₂ x) g l → is_bigo (λ x, f₂ x - f₁ x) g l :=
314
+ is_bigo_comm.1
315
+
316
+ theorem is_bigo.tri {f₁ f₂ f₃ : α → β} {g : α → γ} {l : filter α}
317
+ (h₁ : is_bigo (λ x, f₁ x - f₂ x) g l)
318
+ (h₂ : is_bigo (λ x, f₂ x - f₃ x) g l) :
319
+ is_bigo (λ x, f₁ x - f₃ x) g l :=
320
+ (h₁.add h₂).congr_left (by simp)
321
+
322
+ theorem is_bigo.congr_of_sub {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
323
+ (h : is_bigo (λ x, f₁ x - f₂ x) g l) :
324
+ is_bigo f₁ g l ↔ is_bigo f₂ g l :=
325
+ ⟨λ h', (h'.sub h).congr_left (λ x, sub_sub_cancel _ _),
326
+ λ h', (h.add h').congr_left (λ x, sub_add_cancel _ _)⟩
327
+
328
+ theorem is_littleo_comm {f₁ f₂ : α → β} {g : α → γ} {l : filter α} :
329
+ is_littleo (λ x, f₁ x - f₂ x) g l ↔ is_littleo (λ x, f₂ x - f₁ x) g l :=
330
+ by simpa using @is_littleo_neg_left _ _ _ _ _ (λ x, f₂ x - f₁ x) g l
331
+
332
+ theorem is_littleo.symm {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
333
+ : is_littleo (λ x, f₁ x - f₂ x) g l → is_littleo (λ x, f₂ x - f₁ x) g l :=
334
+ is_littleo_comm.1
335
+
336
+ theorem is_littleo.tri {f₁ f₂ f₃ : α → β} {g : α → γ} {l : filter α}
337
+ (h₁ : is_littleo (λ x, f₁ x - f₂ x) g l)
338
+ (h₂ : is_littleo (λ x, f₂ x - f₃ x) g l) :
339
+ is_littleo (λ x, f₁ x - f₃ x) g l :=
340
+ (h₁.add h₂).congr_left (by simp)
341
+
342
+ theorem is_littleo.congr_of_sub {f₁ f₂ : α → β} {g : α → γ} {l : filter α}
343
+ (h : is_littleo (λ x, f₁ x - f₂ x) g l) :
344
+ is_littleo f₁ g l ↔ is_littleo f₂ g l :=
345
+ ⟨λ h', (h'.sub h).congr_left (λ x, sub_sub_cancel _ _),
346
+ λ h', (h.add h').congr_left (λ x, sub_add_cancel _ _)⟩
347
+
290
348
end
291
349
292
350
section
@@ -296,6 +354,10 @@ theorem is_bigo_zero (g : α → γ) (l : filter α) :
296
354
is_bigo (λ x, (0 : β)) g l :=
297
355
⟨1 , zero_lt_one, by { filter_upwards [univ_mem_sets], intros x _, simp }⟩
298
356
357
+ theorem is_bigo_refl_left {f : α → β} {g : α → γ} {l : filter α} :
358
+ is_bigo (λ x, f x - f x) g l :=
359
+ by simpa using is_bigo_zero g l
360
+
299
361
theorem is_bigo_zero_right_iff {f : α → β} {l : filter α} :
300
362
is_bigo f (λ x, (0 : γ)) l ↔ {x | f x = 0 } ∈ l.sets :=
301
363
begin
@@ -317,6 +379,10 @@ theorem is_littleo_zero (g : α → γ) (l : filter α) :
317
379
by { filter_upwards [univ_mem_sets], intros x _, simp,
318
380
exact mul_nonneg (le_of_lt cpos) (norm_nonneg _)}
319
381
382
+ theorem is_littleo_refl_left {f : α → β} {g : α → γ} {l : filter α} :
383
+ is_littleo (λ x, f x - f x) g l :=
384
+ by simpa using is_littleo_zero g l
385
+
320
386
theorem is_littleo_zero_right_iff {f : α → β} (l : filter α) :
321
387
is_littleo f (λ x, (0 : γ)) l ↔ {x | f x = 0 } ∈ l.sets :=
322
388
begin
@@ -408,7 +474,7 @@ theorem is_bigo_of_is_bigo_const_mul_right {f : α → β} {g : α → γ} {l :
408
474
is_bigo f g l :=
409
475
begin
410
476
cases classical.em (c = 0 ) with h' h',
411
- { simp [h', is_bigo_zero_right_iff] at h, rw is_bigo.congr_left h, apply is_bigo_zero },
477
+ { simp [h', is_bigo_zero_right_iff] at h, rw is_bigo_congr_left h, apply is_bigo_zero },
412
478
have cne0 : ∥c∥ ≠ 0 , from mt (norm_eq_zero _).mp h',
413
479
have cpos : ∥c∥ > 0 , from lt_of_le_of_ne (norm_nonneg _) (ne.symm cne0),
414
480
rcases h with ⟨c', c'pos, h''⟩,
@@ -433,7 +499,7 @@ theorem is_littleo_of_is_littleo_const_mul_right {f : α → β} {g : α → γ}
433
499
is_littleo f g l :=
434
500
begin
435
501
cases classical.em (c = 0 ) with h' h',
436
- { simp [h', is_littleo_zero_right_iff] at h, rw is_littleo.congr_left h, apply is_littleo_zero },
502
+ { simp [h', is_littleo_zero_right_iff] at h, rw is_littleo_congr_left h, apply is_littleo_zero },
437
503
have cne0 : ∥c∥ ≠ 0 , from mt (norm_eq_zero _).mp h',
438
504
have cpos : ∥c∥ > 0 , from lt_of_le_of_ne (norm_nonneg _) (ne.symm cne0),
439
505
intros c' c'pos,
468
534
469
535
end
470
536
537
+ section
538
+ variables [normed_group β] [normed_group γ]
539
+
540
+ theorem is_bigo.trans_tendsto {f : α → β} {g : α → γ} {l : filter α}
541
+ (h₁ : is_bigo f g l) (h₂ : tendsto g l (nhds 0 )) : tendsto f l (nhds 0 ) :=
542
+ (@is_littleo_one_iff _ _ ℝ _ _ _ _).1 $ h₁.trans_is_littleo $ is_littleo_one_iff.2 h₂
543
+
544
+ theorem is_littleo.trans_tendsto {f : α → β} {g : α → γ} {l : filter α}
545
+ (h₁ : is_littleo f g l) : tendsto g l (nhds 0 ) → tendsto f l (nhds 0 ) :=
546
+ h₁.to_is_bigo.trans_tendsto
547
+
548
+ end
549
+
471
550
section
472
551
variables [normed_field β] [normed_field γ]
473
552
0 commit comments