@@ -655,6 +655,16 @@ have ∀ t, is_open (function.restrict f s ⁻¹' t) ↔ ∃ (u : set α), is_op
655
655
end ,
656
656
by rw [continuous_on_iff_continuous_restrict, continuous]; simp only [this ]
657
657
658
+ theorem continuous_on_iff_is_closed {f : α → β} {s : set α} :
659
+ continuous_on f s ↔ ∀ t : set β, is_closed t → ∃ u, is_closed u ∧ f ⁻¹' t ∩ s = u ∩ s :=
660
+ have ∀ t, is_closed (function.restrict f s ⁻¹' t) ↔ ∃ (u : set α), is_closed u ∧ f ⁻¹' t ∩ s = u ∩ s,
661
+ begin
662
+ intro t,
663
+ rw [is_closed_induced_iff, function.restrict_eq, set.preimage_comp],
664
+ simp only [subtype.preimage_val_eq_preimage_val_iff]
665
+ end ,
666
+ by rw [continuous_on_iff_continuous_restrict, continuous_iff_is_closed]; simp only [this ]
667
+
658
668
theorem nhds_within_le_comap {x : α} {s : set α} {f : α → β} (ctsf : continuous_within_at f s x) :
659
669
nhds_within x s ≤ comap f (nhds_within (f x) (f '' s)) :=
660
670
map_le_iff_le_comap.1 ctsf.tendsto_nhds_within_image
@@ -671,6 +681,14 @@ lemma continuous_within_at.mono {f : α → β} {s t : set α} {x : α} (h : con
671
681
(hs : s ⊆ t) : continuous_within_at f s x :=
672
682
tendsto_le_left (nhds_within_mono x hs) h
673
683
684
+ lemma continuous_within_at_inter' {f : α → β} {s t : set α} {x : α} (h : t ∈ nhds_within x s) :
685
+ continuous_within_at f (s ∩ t) x ↔ continuous_within_at f s x :=
686
+ by simp [continuous_within_at, nhds_within_restrict'' s h]
687
+
688
+ lemma continuous_within_at_inter {f : α → β} {s t : set α} {x : α} (h : t ∈ nhds x) :
689
+ continuous_within_at f (s ∩ t) x ↔ continuous_within_at f s x :=
690
+ by simp [continuous_within_at, nhds_within_restrict' s h]
691
+
674
692
lemma continuous_on.congr_mono {f g : α → β} {s s₁ : set α} (h : continuous_on f s)
675
693
(h' : ∀x ∈ s₁, g x = f x) (h₁ : s₁ ⊆ s) : continuous_on g s₁ :=
676
694
begin
@@ -690,6 +708,13 @@ lemma continuous_at.continuous_within_at {f : α → β} {s : set α} {x : α} (
690
708
continuous_within_at f s x :=
691
709
continuous_within_at.mono ((continuous_within_at_univ f x).2 h) (subset_univ _)
692
710
711
+ lemma continuous_within_at.continuous_at {f : α → β} {s : set α} {x : α}
712
+ (h : continuous_within_at f s x) (hs : s ∈ nhds x) : continuous_at f x :=
713
+ begin
714
+ have : s = univ ∩ s, by rw univ_inter,
715
+ rwa [this , continuous_within_at_inter hs, continuous_within_at_univ] at h
716
+ end
717
+
693
718
lemma continuous_within_at.comp {g : β → γ} {f : α → β} {s : set α} {t : set β} {x : α}
694
719
(hg : continuous_within_at g t (f x)) (hf : continuous_within_at f s x) (h : f '' s ⊆ t) :
695
720
continuous_within_at (g ∘ f) s x :=
@@ -727,15 +752,58 @@ begin
727
752
exact h.mono (subset_univ _)
728
753
end
729
754
755
+ lemma continuous.comp_continuous_on {g : β → γ} {f : α → β} {s : set α}
756
+ (hg : continuous g) (hf : continuous_on f s) :
757
+ continuous_on (g ∘ f) s :=
758
+ hg.continuous_on.comp hf (subset_univ _)
759
+
760
+ lemma continuous.continuous_at {f : α → β} {x : α} (h : continuous f) :
761
+ continuous_at f x :=
762
+ begin
763
+ have := continuous_iff_continuous_on_univ.1 h x (mem_univ _),
764
+ rwa continuous_within_at_univ at this ,
765
+ end
766
+
767
+ lemma continuous_at.preimage_mem_nhds {f : α → β} {x : α} {t : set β} (h : continuous_at f x)
768
+ (ht : t ∈ nhds (f x)) : f ⁻¹' t ∈ nhds x :=
769
+ h ht
770
+
771
+ lemma continuous_within_at.preimage_mem_nhds_within {f : α → β} {x : α} {s : set α} {t : set β}
772
+ (h : continuous_within_at f s x) (ht : t ∈ nhds (f x)) : f ⁻¹' t ∈ nhds_within x s :=
773
+ h ht
774
+
775
+ lemma continuous_within_at.congr_of_mem_nhds_within {f f₁ : α → β} {s : set α} {x : α}
776
+ (h : continuous_within_at f s x) (h₁ : {y | f₁ y = f y} ∈ nhds_within x s) (hx : f₁ x = f x) :
777
+ continuous_within_at f₁ s x :=
778
+ by rwa [continuous_within_at, filter.tendsto, hx, filter.map_cong h₁]
779
+
730
780
lemma continuous_on_const {s : set α} {c : β} : continuous_on (λx, c) s :=
731
781
continuous_const.continuous_on
732
782
783
+ lemma continuous_on_open_iff {f : α → β} {s : set α} (hs : is_open s) :
784
+ continuous_on f s ↔ (∀t, _root_.is_open t → is_open (s ∩ f⁻¹' t)) :=
785
+ begin
786
+ rw continuous_on_iff',
787
+ split,
788
+ { assume h t ht,
789
+ rcases h t ht with ⟨u, u_open, hu⟩,
790
+ rw [inter_comm, hu],
791
+ apply is_open_inter u_open hs },
792
+ { assume h t ht,
793
+ refine ⟨s ∩ f ⁻¹' t, h t ht, _⟩,
794
+ rw [@inter_comm _ s (f ⁻¹' t), inter_assoc, inter_self] }
795
+ end
796
+
733
797
lemma continuous_on.preimage_open_of_open {f : α → β} {s : set α} {t : set β}
734
798
(hf : continuous_on f s) (hs : is_open s) (ht : is_open t) : is_open (s ∩ f⁻¹' t) :=
799
+ (continuous_on_open_iff hs).1 hf t ht
800
+
801
+ lemma continuous_on.preimage_closed_of_closed {f : α → β} {s : set α} {t : set β}
802
+ (hf : continuous_on f s) (hs : is_closed s) (ht : is_closed t) : is_closed (s ∩ f⁻¹' t) :=
735
803
begin
736
- rcases continuous_on_iff' .1 hf t ht with ⟨u, hu⟩,
804
+ rcases continuous_on_iff_is_closed .1 hf t ht with ⟨u, hu⟩,
737
805
rw [inter_comm, hu.2 ],
738
- apply is_open_inter hu.1 hs
806
+ apply is_closed_inter hu.1 hs
739
807
end
740
808
741
809
lemma continuous_on.preimage_interior_subset_interior_preimage {f : α → β} {s : set α} {t : set β}
@@ -757,6 +825,24 @@ begin
757
825
rwa [continuous_within_at, ← nhds_within_restrict _ xt open_t] at this
758
826
end
759
827
828
+ lemma continuous_on_open_of_generate_from {β : Type *} {s : set α} {T : set (set β)} {f : α → β}
829
+ (hs : is_open s) (h : ∀t ∈ T, is_open (s ∩ f⁻¹' t)) :
830
+ @continuous_on α β _ (topological_space.generate_from T) f s :=
831
+ begin
832
+ rw continuous_on_open_iff,
833
+ assume t ht,
834
+ induction ht with u hu u v Tu Tv hu hv U hU hU',
835
+ { exact h u hu },
836
+ { simp only [preimage_univ, inter_univ], exact hs },
837
+ { have : s ∩ f ⁻¹' (u ∩ v) = (s ∩ f ⁻¹' u) ∩ (s ∩ f ⁻¹' v),
838
+ by { ext x, simp, split, finish, finish },
839
+ rw this ,
840
+ exact is_open_inter hu hv },
841
+ { rw [preimage_sUnion, inter_bUnion],
842
+ exact is_open_bUnion hU' },
843
+ { exact hs }
844
+ end
845
+
760
846
end topα
761
847
762
848
end constructions
0 commit comments