@@ -220,6 +220,66 @@ continuous_iff_le_coinduced.2 $ bot_le
220
220
221
221
end constructions
222
222
223
+ section induced
224
+ open topological_space
225
+ variables [t : topological_space β] {f : α → β}
226
+
227
+ theorem is_open_induced {s : set β} (h : is_open s) : (induced f t).is_open (f ⁻¹' s) :=
228
+ ⟨s, h, rfl⟩
229
+
230
+ lemma nhds_induced_eq_comap {a : α} : @nhds α (induced f t) a = comap f (nhds (f a)) :=
231
+ le_antisymm
232
+ (assume s ⟨s', hs', (h_s : f ⁻¹' s' ⊆ s)⟩,
233
+ let ⟨t', hsub, ht', hin⟩ := mem_nhds_sets_iff.1 hs' in
234
+ (@nhds α (induced f t) a).sets_of_superset
235
+ begin
236
+ simp [mem_nhds_sets_iff],
237
+ exact ⟨preimage f t', preimage_mono hsub, is_open_induced ht', hin⟩
238
+ end
239
+ h_s)
240
+ (le_infi $ assume s, le_infi $ assume ⟨as, s', is_open_s', s_eq⟩,
241
+ begin
242
+ simp [comap, mem_nhds_sets_iff, s_eq],
243
+ exact ⟨s', ⟨s', subset.refl _, is_open_s', by rwa [s_eq] at as⟩, subset.refl _⟩
244
+ end )
245
+
246
+ lemma map_nhds_induced_eq {a : α} (h : image f univ ∈ (nhds (f a)).sets) :
247
+ map f (@nhds α (induced f t) a) = nhds (f a) :=
248
+ le_antisymm
249
+ (@continuous.tendsto α β (induced f t) _ _ continuous_induced_dom a)
250
+ (assume s, assume hs : f ⁻¹' s ∈ (@nhds α (induced f t) a).sets,
251
+ let ⟨t', t_subset, is_open_t, a_in_t⟩ := mem_nhds_sets_iff.mp h in
252
+ let ⟨s', s'_subset, ⟨s'', is_open_s'', s'_eq⟩, a_in_s'⟩ := (@mem_nhds_sets_iff _ (induced f t) _ _).mp hs in
253
+ by subst s'_eq; exact (mem_nhds_sets_iff.mpr $
254
+ ⟨t' ∩ s'',
255
+ assume x ⟨h₁, h₂⟩, match x, h₂, t_subset h₁ with
256
+ | x, h₂, ⟨y, _, y_eq⟩ := begin subst y_eq, exact s'_subset h₂ end
257
+ end ,
258
+ is_open_inter is_open_t is_open_s'',
259
+ ⟨a_in_t, a_in_s'⟩⟩))
260
+
261
+ lemma closure_induced [t : topological_space β] {f : α → β} {a : α} {s : set α}
262
+ (hf : ∀x y, f x = f y → x = y) :
263
+ a ∈ @closure α (topological_space.induced f t) s ↔ f a ∈ closure (f '' s) :=
264
+ have comap f (nhds (f a) ⊓ principal (f '' s)) ≠ ⊥ ↔ nhds (f a) ⊓ principal (f '' s) ≠ ⊥,
265
+ from ⟨assume h₁ h₂, h₁ $ h₂.symm ▸ comap_bot,
266
+ assume h,
267
+ forall_sets_neq_empty_iff_neq_bot.mp $
268
+ assume s₁ ⟨s₂, hs₂, (hs : f ⁻¹' s₂ ⊆ s₁)⟩,
269
+ have f '' s ∈ (nhds (f a) ⊓ principal (f '' s)).sets,
270
+ from mem_inf_sets_of_right $ by simp [subset.refl],
271
+ have s₂ ∩ f '' s ∈ (nhds (f a) ⊓ principal (f '' s)).sets,
272
+ from inter_mem_sets hs₂ this ,
273
+ let ⟨b, hb₁, ⟨a, ha, ha₂⟩⟩ := inhabited_of_mem_sets h this in
274
+ ne_empty_of_mem $ hs $ by rwa [←ha₂] at hb₁⟩,
275
+ calc a ∈ @closure α (topological_space.induced f t) s
276
+ ↔ (@nhds α (topological_space.induced f t) a) ⊓ principal s ≠ ⊥ : by rw [closure_eq_nhds]; refl
277
+ ... ↔ comap f (nhds (f a)) ⊓ principal (f ⁻¹' (f '' s)) ≠ ⊥ : by rw [nhds_induced_eq_comap, preimage_image_eq _ hf]
278
+ ... ↔ comap f (nhds (f a) ⊓ principal (f '' s)) ≠ ⊥ : by rw [comap_inf, ←comap_principal]
279
+ ... ↔ _ : by rwa [closure_eq_nhds]
280
+
281
+ end induced
282
+
223
283
section embedding
224
284
225
285
/-- A function between topological spaces is an embedding if it is injective,
@@ -262,6 +322,19 @@ let ⟨t, ht, h_eq⟩ := by rw [hf.right, is_closed_induced_iff] at hs; exact hs
262
322
have is_closed (t ∩ range f), from is_closed_inter ht h,
263
323
h_eq.symm ▸ by rwa [image_preimage_eq_inter_range]
264
324
325
+ lemma embedding.map_nhds_eq [topological_space α] [topological_space β] {f : α → β} (hf : embedding f) (a : α)
326
+ (h : f '' univ ∈ (nhds (f a)).sets) : (nhds a).map f = nhds (f a) :=
327
+ by rw [hf.2 ]; exact map_nhds_induced_eq h
328
+
329
+ lemma embedding.tendsto_nhds_iff {ι : Type *}
330
+ {f : ι → β} {g : β → γ} {a : filter ι} {b : β} (hg : embedding g) :
331
+ tendsto f a (nhds b) ↔ tendsto (g ∘ f) a (nhds (g b)) :=
332
+ by rw [tendsto, tendsto, hg.right, nhds_induced_eq_comap, ← map_le_iff_le_comap, filter.map_map]
333
+
334
+ lemma embedding.continuous_iff {f : α → β} {g : β → γ} (hg : embedding g) :
335
+ continuous f ↔ continuous (g ∘ f) :=
336
+ by simp [continuous_iff_tendsto, embedding.tendsto_nhds_iff hg]
337
+
265
338
end embedding
266
339
267
340
section quotient_map
@@ -289,6 +362,10 @@ lemma quotient_map_of_quotient_map_compose {f : α → β} {g : β → γ}
289
362
(by rw [hgf.right, ← continuous_iff_le_coinduced];
290
363
apply hf.comp continuous_coinduced_rng)⟩
291
364
365
+ lemma quotient_map.continuous_iff {f : α → β} {g : β → γ} (hf : quotient_map f) :
366
+ continuous g ↔ continuous (g ∘ f) :=
367
+ by rw [continuous_iff_le_coinduced, continuous_iff_le_coinduced, hf.right, coinduced_compose]
368
+
292
369
end quotient_map
293
370
294
371
section sierpinski
@@ -308,70 +385,6 @@ lemma continuous_Prop {p : α → Prop} : continuous p ↔ is_open {x | p x} :=
308
385
309
386
end sierpinski
310
387
311
- section induced
312
- open topological_space
313
- variables [t : topological_space β] {f : α → β}
314
-
315
- theorem is_open_induced {s : set β} (h : is_open s) : (induced f t).is_open (f ⁻¹' s) :=
316
- ⟨s, h, rfl⟩
317
-
318
- lemma nhds_induced_eq_comap {a : α} : @nhds α (induced f t) a = comap f (nhds (f a)) :=
319
- le_antisymm
320
- (assume s ⟨s', hs', (h_s : f ⁻¹' s' ⊆ s)⟩,
321
- let ⟨t', hsub, ht', hin⟩ := mem_nhds_sets_iff.1 hs' in
322
- (@nhds α (induced f t) a).sets_of_superset
323
- begin
324
- simp [mem_nhds_sets_iff],
325
- exact ⟨preimage f t', preimage_mono hsub, is_open_induced ht', hin⟩
326
- end
327
- h_s)
328
- (le_infi $ assume s, le_infi $ assume ⟨as, s', is_open_s', s_eq⟩,
329
- begin
330
- simp [comap, mem_nhds_sets_iff, s_eq],
331
- exact ⟨s', ⟨s', subset.refl _, is_open_s', by rwa [s_eq] at as⟩, subset.refl _⟩
332
- end )
333
-
334
- lemma map_nhds_induced_eq {a : α} (h : image f univ ∈ (nhds (f a)).sets) :
335
- map f (@nhds α (induced f t) a) = nhds (f a) :=
336
- le_antisymm
337
- (@continuous.tendsto α β (induced f t) _ _ continuous_induced_dom a)
338
- (assume s, assume hs : f ⁻¹' s ∈ (@nhds α (induced f t) a).sets,
339
- let ⟨t', t_subset, is_open_t, a_in_t⟩ := mem_nhds_sets_iff.mp h in
340
- let ⟨s', s'_subset, ⟨s'', is_open_s'', s'_eq⟩, a_in_s'⟩ := (@mem_nhds_sets_iff _ (induced f t) _ _).mp hs in
341
- by subst s'_eq; exact (mem_nhds_sets_iff.mpr $
342
- ⟨t' ∩ s'',
343
- assume x ⟨h₁, h₂⟩, match x, h₂, t_subset h₁ with
344
- | x, h₂, ⟨y, _, y_eq⟩ := begin subst y_eq, exact s'_subset h₂ end
345
- end ,
346
- is_open_inter is_open_t is_open_s'',
347
- ⟨a_in_t, a_in_s'⟩⟩))
348
-
349
- lemma embedding.map_nhds_eq [topological_space α] [topological_space β] {f : α → β} (hf : embedding f) (a : α)
350
- (h : f '' univ ∈ (nhds (f a)).sets) : (nhds a).map f = nhds (f a) :=
351
- by rw [hf.2 ]; exact map_nhds_induced_eq h
352
-
353
- lemma closure_induced [t : topological_space β] {f : α → β} {a : α} {s : set α}
354
- (hf : ∀x y, f x = f y → x = y) :
355
- a ∈ @closure α (topological_space.induced f t) s ↔ f a ∈ closure (f '' s) :=
356
- have comap f (nhds (f a) ⊓ principal (f '' s)) ≠ ⊥ ↔ nhds (f a) ⊓ principal (f '' s) ≠ ⊥,
357
- from ⟨assume h₁ h₂, h₁ $ h₂.symm ▸ comap_bot,
358
- assume h,
359
- forall_sets_neq_empty_iff_neq_bot.mp $
360
- assume s₁ ⟨s₂, hs₂, (hs : f ⁻¹' s₂ ⊆ s₁)⟩,
361
- have f '' s ∈ (nhds (f a) ⊓ principal (f '' s)).sets,
362
- from mem_inf_sets_of_right $ by simp [subset.refl],
363
- have s₂ ∩ f '' s ∈ (nhds (f a) ⊓ principal (f '' s)).sets,
364
- from inter_mem_sets hs₂ this ,
365
- let ⟨b, hb₁, ⟨a, ha, ha₂⟩⟩ := inhabited_of_mem_sets h this in
366
- ne_empty_of_mem $ hs $ by rwa [←ha₂] at hb₁⟩,
367
- calc a ∈ @closure α (topological_space.induced f t) s
368
- ↔ (@nhds α (topological_space.induced f t) a) ⊓ principal s ≠ ⊥ : by rw [closure_eq_nhds]; refl
369
- ... ↔ comap f (nhds (f a)) ⊓ principal (f ⁻¹' (f '' s)) ≠ ⊥ : by rw [nhds_induced_eq_comap, preimage_image_eq _ hf]
370
- ... ↔ comap f (nhds (f a) ⊓ principal (f '' s)) ≠ ⊥ : by rw [comap_inf, ←comap_principal]
371
- ... ↔ _ : by rwa [closure_eq_nhds]
372
-
373
- end induced
374
-
375
388
section prod
376
389
open topological_space
377
390
variables [topological_space α] [topological_space β] [topological_space γ]
@@ -605,18 +618,9 @@ continuous_inf_dom hf hg
605
618
606
619
end sum
607
620
608
- lemma embedding.tendsto_nhds_iff [topological_space β] [topological_space γ]
609
- {f : α → β} {g : β → γ} {a : filter α} {b : β} (hg : embedding g) :
610
- tendsto f a (nhds b) ↔ tendsto (g ∘ f) a (nhds (g b)) :=
611
- by rw [tendsto, tendsto, hg.right, nhds_induced_eq_comap, ← map_le_iff_le_comap, filter.map_map]
612
-
613
621
section subtype
614
622
variables [topological_space α] [topological_space β] [topological_space γ] {p : α → Prop }
615
623
616
- lemma embedding.continuous_iff {f : α → β} {g : β → γ} (hg : embedding g) :
617
- continuous f ↔ continuous (g ∘ f) :=
618
- by simp [continuous_iff_tendsto, @embedding.tendsto_nhds_iff α β γ _ _ f g _ _ hg]
619
-
620
624
lemma embedding_graph {f : α → β} (hf : continuous f) : embedding (λx, (x, f x)) :=
621
625
embedding_of_embedding_compose (continuous_id.prod_mk hf) continuous_fst embedding_id
622
626
@@ -713,7 +717,7 @@ continuous_iff_is_closed.mpr $
713
717
end ,
714
718
by rwa [this ]
715
719
716
- lemma closure_subtype {p : α → Prop } { x : {a // p a}} {s : set {a // p a}}:
720
+ lemma closure_subtype {x : {a // p a}} {s : set {a // p a}}:
717
721
x ∈ closure s ↔ x.val ∈ closure (subtype.val '' s) :=
718
722
closure_induced $ assume x y, subtype.eq
719
723
@@ -723,10 +727,6 @@ section quotient
723
727
variables [topological_space α] [topological_space β] [topological_space γ]
724
728
variables {r : α → α → Prop } {s : setoid α}
725
729
726
- lemma quotient_map.continuous_iff {f : α → β} {g : β → γ} (hf : quotient_map f) :
727
- continuous g ↔ continuous (g ∘ f) :=
728
- by rw [continuous_iff_le_coinduced, continuous_iff_le_coinduced, hf.right, coinduced_compose]
729
-
730
730
lemma quotient_map_quot_mk : quotient_map (@quot.mk α r) :=
731
731
⟨quot.exists_rep, rfl⟩
732
732
0 commit comments