@@ -3601,10 +3601,10 @@ Proof. by rewrite setT_bool; apply/compactU; exact: compact_set1. Qed.
36013601End DiscreteTopology.
36023602#[global] Hint Resolve discrete_bool : core.
36033603
3604- Definition second_countable (T : topologicalType) := exists B,
3604+ Definition second_countable (T : topologicalType) := exists B,
36053605 [/\ countable B,
3606- forall A, B A -> open A &
3607- forall (x: T) V, nbhs x V -> exists A, B A /\ nbhs x A /\ A `<=` V].
3606+ B `<=` open &
3607+ forall (x : T) V, nbhs x V -> exists A, [/\ B A, nbhs x A & A `<=` V] ].
36083608
36093609Section ClopenSets.
36103610Implicit Types (T : topologicalType).
@@ -3630,7 +3630,7 @@ Lemma clopenT {T} : clopen [set: T].
36303630Proof . by split; [exact: openT | exact: closedT]. Qed .
36313631
36323632Lemma clopen_comp {T U : topologicalType} (f : T -> U) (A : set U) :
3633- clopen A -> continuous f -> clopen (f@^-1` A).
3633+ clopen A -> continuous f -> clopen (f @^-1` A).
36343634Proof . by case=> ? ?; split; [ exact: open_comp | exact: closed_comp]. Qed .
36353635
36363636Lemma clopen_separatedP {T} (A : set T) : clopen A <-> separated A (~` A).
@@ -3670,20 +3670,20 @@ move=> /( _ _ _ (fun C y => ~ C y) (powerset_filter_from_filter PF)); case.
36703670by move=> D [] DF Dsub [C] DC /(_ _ DC) /subsetC2/filterS; apply; exact: DF.
36713671Qed .
36723672
3673- Lemma clopen_countable {T} :
3673+ Lemma clopen_countable {T} :
36743674 compact [set: T] -> second_countable T -> countable (@clopen T).
36753675Proof .
36763676move=> cmpT [B []] /fset_subset_countable cntB obase Bbase.
36773677apply/(card_le_trans _ cntB)/pcard_surjP.
3678- pose f := ( fun (F : {fset set T}) => \bigcup_(x in [set` F]) x) ; exists f.
3679- move=> D [] oD cD /=; have cmpt : cover_compact D.
3678+ pose f := fun (F : {fset set T}) => \bigcup_(x in [set` F]) x; exists f.
3679+ move=> D [] oD cD /=; have cmpt : cover_compact D.
36803680 by rewrite -compact_cover; exact: (subclosed_compact _ cmpT).
3681- have h : forall (x : T), exists (V : set T), D x -> B V /\ nbhs x V /\ V `<=` D.
3682- move=> x; case: (pselect (D x)); last by move=> ?; exists set0.
3683- by rewrite openE in oD; move => /oD/Bbase [A[] ? [] ? ?]; exists A.
3684- pose h' := fun z => projT1 (cid (h z)); have [] := @cmpt T D h'.
3681+ have h (x : T) : exists (V : set T), D x -> B V /\ nbhs x V /\ V `<=` D.
3682+ case: (pselect (D x)); last by move=> ?; exists set0.
3683+ by rewrite openE in oD => /oD/Bbase [A[] ? ? ?]; exists A.
3684+ pose h' z := projT1 (cid (h z)); have [] := @cmpt T D h'.
36853685- by move=> z Dz; apply: obase; have [] := projT2 (cid (h z)) Dz.
3686- - move=> z Dz; exists z => //; apply: nbhs_singleton.
3686+ - move=> z Dz; exists z => //; apply: nbhs_singleton.
36873687 by have [? []] := projT2 (cid (h z)) Dz.
36883688move=> fs fsD DsubC; exists ([fset h' z | z in fs])%fset.
36893689 move=> U/imfsetP [z] /fsD /set_mem Dz ->; rewrite inE.
@@ -3696,13 +3696,13 @@ Qed.
36963696
36973697Lemma totally_disconnected_prod (I : choiceType) (T : I -> topologicalType) :
36983698 (forall i, @totally_disconnected (T i)) ->
3699- (@ totally_disconnected (product_topologicalType T) ).
3699+ totally_disconnected (product_topologicalType T).
37003700Proof .
37013701move=> dctTI /= x y /eqP xneqy.
37023702have [i /eqP /dctTI [A] [] Axi [] nAy coA] : exists i, x i <> y i.
3703- by apply/existsNP=> W; apply /xneqy/functional_extensionality_dep.
3704- exists (( prod_topo_apply i) @^-1` A); split;[|split] => //.
3705- apply: clopen_comp => //; exact: prod_topo_apply_continuous.
3703+ by apply/existsNP=> W; exact /xneqy/functional_extensionality_dep.
3704+ exists (prod_topo_apply i @^-1` A); split;[|split] => //.
3705+ by apply: clopen_comp => //; exact: prod_topo_apply_continuous.
37063706Qed .
37073707
37083708Lemma totally_disconnected_discrete {T} :
@@ -4862,31 +4862,30 @@ Definition fct_pseudoMetricType_mixin :=
48624862Canonical fct_pseudoMetricType := PseudoMetricType (T -> U) fct_pseudoMetricType_mixin.
48634863End fct_PseudoMetric.
48644864
4865- Lemma compact_second_countable {R : realType} {T : pseudoMetricType R} :
4865+ Lemma compact_second_countable {R : realType} {T : pseudoMetricType R} :
48664866 compact [set: T] -> second_countable T.
48674867Proof .
4868- have npos : forall n, ((0:R) < (n.+1%:R^-1))%R by [].
4869- pose f : nat -> T -> (set T) := fun n z => (ball z (PosNum (npos n))%:num)^°.
4870- move=> cmpt; have h : forall n, finSubCover [set: T] (f n) [set: T].
4871- move=> n; rewrite compact_cover in cmpt; apply: cmpt.
4872- by move=> z _; rewrite /f; exact: open_interior.
4873- by move=> z _; exists z => //; rewrite /f/interior; exact: nbhsx_ballx.
4874- pose h' := fun n => (cid (iffLR (exists2P _ _) (h n))).
4875- pose h'' := fun n => projT1 (h' n).
4876- pose B := \bigcup_n (f n) @` [set` (h'' n)]; exists B; split.
4868+ pose f n z : set T := (ball z n.+1%:R^-1)^°.
4869+ move=> cmpt; have h n : finSubCover [set: T] (f n) [set: T].
4870+ move: cmpt; rewrite compact_cover; apply.
4871+ by move=> z _; exact: open_interior.
4872+ by move=> z _; exists z => //; exact: (nbhsx_ballx _ n.+1%:R^-1%:pos).
4873+ pose h' n := cid (iffLR (exists2P _ _) (h n)).
4874+ pose h'' n := projT1 (h' n).
4875+ pose B := \bigcup_n (f n) @` [set` h'' n]; exists B; split.
48774876- apply: bigcup_countable => // n _; apply: finite_set_countable.
4878- exact/finite_image/ finite_fset.
4879- - by move=> z [n _ [w wn <-]]; exact: open_interior.
4880- - move=> x V /nbhs_ballP [] _/posnumP[eps] ballsubV.
4881- have [//|N] := @ltr_add_invr R 0%R (eps%:num/ 2) _; rewrite add0r => deleps.
4882- have [w [wh fx]] : exists w : T, w \in h'' N /\ f N w x.
4877+ exact/finite_image/finite_fset.
4878+ - by move=> _ [n _ [w wn <-]]; exact: open_interior.
4879+ - move=> x V /nbhs_ballP[] _/posnumP[eps] ballsubV.
4880+ have [//|N] := @ltr_add_invr R 0 (eps%:num / 2) _; rewrite add0r => deleps.
4881+ have [w [wh fx]] : exists w : T, w \in h'' N /\ f N w x.
48834882 by have [_ /(_ x) [// | w ? ?]] := projT2 (h' N); exists w.
4884- exists (f N w); split; first ( by exists N); split .
4883+ exists (f N w); split; first by exists N.
48854884 by apply: open_nbhs_nbhs; split => //; exact: open_interior.
4886- apply: ( subset_trans _ ballsubV) => z bz.
4887- rewrite [_%:num]splitr; apply: (@ball_triangle _ _ w).
4888- by apply: (le_ball (ltW deleps)); apply/ball_sym; apply : interior_subset.
4889- by apply: (le_ball (ltW deleps)); apply : interior_subset.
4885+ apply: subset_trans ballsubV => z bz.
4886+ rewrite [_%:num]splitr; apply: (@ball_triangle _ _ w).
4887+ by apply: (le_ball (ltW deleps)); apply/ball_sym; exact : interior_subset.
4888+ by apply: (le_ball (ltW deleps)); exact : interior_subset.
48904889Qed .
48914890
48924891(** ** Complete uniform spaces *)
0 commit comments