@@ -43,12 +43,13 @@ Import numFieldTopology.Exports.
4343
4444Local Open Scope classical_set_scope.
4545
46- Definition cantor_space :=
47- prod_topology (fun _ : nat => discrete_topology discrete_bool ).
46+ Definition cantor_space : Type : =
47+ prod_topology (fun _ : nat => bool ).
4848
4949HB.instance Definition _ := Pointed.on cantor_space.
5050HB.instance Definition _ := Nbhs.on cantor_space.
5151HB.instance Definition _ := Topological.on cantor_space.
52+ HB.instance Definition _ := Uniform.on cantor_space.
5253
5354Definition cantor_like (T : topologicalType) :=
5455 [/\ perfect_set [set: T],
@@ -58,20 +59,18 @@ Definition cantor_like (T : topologicalType) :=
5859
5960Lemma cantor_space_compact : compact [set: cantor_space].
6061Proof .
61- have := @tychonoff _ (fun _ : nat => _) _ (fun=> discrete_bool_compact ).
62+ have := @tychonoff _ (fun _ : nat => _) _ (fun=> bool_compact ).
6263by congr (compact _); rewrite eqEsubset.
6364Qed .
6465
6566Lemma cantor_space_hausdorff : hausdorff_space cantor_space.
6667Proof .
6768apply: hausdorff_product => ?; apply: discrete_hausdorff.
68- exact: discrete_space_discrete.
6969Qed .
7070
7171Lemma cantor_zero_dimensional : zero_dimensional cantor_space.
7272Proof .
7373apply: zero_dimension_prod => _; apply: discrete_zero_dimension.
74- exact: discrete_space_discrete.
7574Qed .
7675
7776Lemma cantor_perfect : perfect_set [set: cantor_space].
@@ -102,13 +101,12 @@ Qed.
102101(* *)
103102(***************************************************************************** *)
104103Section topological_trees.
105- Context {K : nat -> ptopologicalType } {X : ptopologicalType}
104+ Context {K : nat -> pdiscreteTopologicalType } {X : ptopologicalType}
106105 (refine_apx : forall n, set X -> K n -> set X)
107106 (tree_invariant : set X -> Prop).
108107
109108Hypothesis cmptX : compact [set: X].
110109Hypothesis hsdfX : hausdorff_space X.
111- Hypothesis discreteK : forall n, discrete_space (K n).
112110Hypothesis refine_cover : forall n U, U = \bigcup_e @refine_apx n U e.
113111Hypothesis refine_invar : forall n U e,
114112 tree_invariant U -> tree_invariant (@refine_apx n U e).
@@ -122,7 +120,7 @@ Hypothesis refine_separates: forall x y : X, x != y ->
122120Let refine_subset n U e : @refine_apx n U e `<=` U.
123121Proof . by rewrite [X in _ `<=` X](refine_cover n); exact: bigcup_sup. Qed .
124122
125- Let T := prod_topology K .
123+ Let T := prod_topology (K : nat -> ptopologicalType) .
126124
127125Local Fixpoint branch_apx (b : T) n :=
128126 if n is m.+1 then refine_apx (branch_apx b m) (b m) else [set: X].
@@ -193,7 +191,6 @@ near=> z => i; rewrite leq_eqVlt => /predU1P[|iSn]; last by rewrite (near IH z).
193191move=> [->]; near: z; exists (proj n @^-1` [set b n]).
194192split => //; suff : @open T (proj n @^-1` [set b n]) by [].
195193apply: open_comp; [move=> + _; exact: proj_continuous| apply: discrete_open].
196- exact: discreteK.
197194Unshelve. all: end_near. Qed .
198195
199196Let apx_prefix b c n :
@@ -293,9 +290,7 @@ Local Lemma cantor_map : exists f : cantor_space -> T,
293290 set_surj [set: cantor_space] [set: T] f &
294291 set_inj [set: cantor_space] f ].
295292Proof .
296- have [] := @tree_map_props
297- (fun=> discrete_topology discrete_bool) T c_ind c_invar cmptT hsdfT.
298- - by move=> ?; exact: discrete_space_discrete.
293+ have [] := @tree_map_props (fun=> bool) T c_ind c_invar cmptT hsdfT.
299294- move=> n V; rewrite eqEsubset; split => [t Vt|t [? ? []]//].
300295 have [?|?] := pselect (U_ n `&` V !=set0 /\ ~` U_ n `&` V !=set0).
301296 + have [Unt|Unt] := pselect (U_ n t).
@@ -350,38 +345,40 @@ Qed.
350345
351346End TreeStructure.
352347
348+ Section cantor.
349+ Context {R : realType}.
350+
353351(**md************************************************************************* *)
354352(* ## Part 3: Finitely branching trees are Cantor-like *)
355353(***************************************************************************** *)
356354Section FinitelyBranchingTrees.
357355
358356Definition tree_of (T : nat -> pointedType) : Type :=
359- prod_topology (fun n => discrete_topology_type (T n)).
357+ prod_topology (fun n => discrete_topology (T n)).
360358
361359HB.instance Definition _ (T : nat -> pointedType) : Pointed (tree_of T):=
362360 Pointed.on (tree_of T).
363361
364362HB.instance Definition _ (T : nat -> pointedType) := Uniform.on (tree_of T).
365363
366- HB.instance Definition _ {R : realType} (T : nat -> pointedType) :
364+ HB.instance Definition _ (T : nat -> pointedType) :
367365 @PseudoMetric R _ :=
368366 @PseudoMetric.on (tree_of T).
369367
370368Lemma cantor_like_finite_prod (T : nat -> ptopologicalType) :
371- (forall n, finite_set [set: discrete_topology_type (T n)]) ->
369+ (forall n, finite_set [set: discrete_topology (T n)]) ->
372370 (forall n, (exists xy : T n * T n, xy.1 != xy.2)) ->
373371 cantor_like (tree_of T).
374372Proof .
375373move=> finiteT twoElems; split.
376- - exact/(@perfect_diagonal (discrete_topology_type \o T))/twoElems.
374+ - exact/(@perfect_diagonal (discrete_topology \o T))/twoElems.
377375- have := tychonoff (fun n => finite_compact (finiteT n)).
378376 set A := (X in compact X -> _).
379377 suff : A = [set: tree_of (fun x : nat => T x)] by move=> ->.
380378 by rewrite eqEsubset.
381- - apply: (@hausdorff_product _ (discrete_topology_type \o T)) => n.
379+ - apply: (@hausdorff_product _ (discrete_topology \o T)) => n.
382380 by apply: discrete_hausdorff; exact: discrete_space_discrete.
383381- apply: zero_dimension_prod => ?; apply: discrete_zero_dimension.
384- exact: discrete_space_discrete.
385382Qed .
386383
387384End FinitelyBranchingTrees.
@@ -390,7 +387,7 @@ End FinitelyBranchingTrees.
390387(* ## Part 4: Building a finitely branching tree to cover `T` *)
391388(***************************************************************************** *)
392389Section alexandroff_hausdorff.
393- Context {R : realType} { T : pseudoPMetricType R}.
390+ Context {T : pseudoPMetricType R}.
394391
395392Hypothesis cptT : compact [set: T].
396393Hypothesis hsdfT : hausdorff_space T.
@@ -469,9 +466,14 @@ HB.instance Definition _ n := gen_eqMixin (K' n).
469466HB.instance Definition _ n := gen_choiceMixin (K' n).
470467HB.instance Definition _ n := isPointed.Build (K' n) (K'p n).
471468
472- Let K n := K' n.
469+ Let K n := discrete_topology ( K' n) .
473470Let Tree := @tree_of K.
474471
472+ HB.instance Definition _ n :=
473+ DiscreteTopology.on (K n).
474+ HB.instance Definition _ n :=
475+ Pointed.on (K n).
476+
475477Let embed_refine n (U : set T) (k : K n) :=
476478 (if pselect (projT1 k `&` U !=set0)
477479 then projT1 k
@@ -486,17 +488,12 @@ case: e => W; have [//| _ _ _ _] := projT2 (cid (ent_balls' (count_unif n))).
486488exact.
487489Qed .
488490
489- Let discrete_subproof (P : choiceType) :
490- discrete_space (principal_filter_type P).
491- Proof . by []. Qed .
492-
493491Local Lemma cantor_surj_pt1 : exists2 f : Tree -> T,
494492 continuous f & set_surj [set: Tree] [set: T] f.
495493Proof .
496494pose entn n := projT2 (cid (ent_balls' (count_unif n))).
497- have [//| | |? []//| |? []// | |] := @tree_map_props
498- (discrete_topology_type \o K) T (embed_refine) (embed_invar) cptT hsdfT.
499- - by move=> n; exact: discrete_space_discrete.
495+ have [ | |? []//| |? []// | |] := @tree_map_props
496+ K T (embed_refine) (embed_invar) cptT hsdfT.
500497- move=> n U; rewrite eqEsubset; split=> [t Ut|t [? ? []]//].
501498 have [//|_ _ _ + _] := entn n; rewrite -subTset.
502499 move=> /(_ t I)[W cbW Wt]; exists (existT _ W cbW) => //.
@@ -535,7 +532,7 @@ Local Lemma cantor_surj_pt2 :
535532 exists f : {surj [set: cantor_space] >-> [set: Tree]}, continuous f.
536533Proof .
537534have [|f [ctsf _]] := @homeomorphism_cantor_like R Tree; last by exists f.
538- apply: (@cantor_like_finite_prod (discrete_topology_type \o K)) => [n /=|n].
535+ apply: (@cantor_like_finite_prod (discrete_topology \o K)) => [n /=|n].
539536 have [//| fs _ _ _ _] := projT2 (cid (ent_balls' (count_unif n))).
540537 suff -> : [set: {classic K' n}] =
541538 (@projT1 (set T) _) @^-1` (projT1 (cid (ent_balls' (count_unif n)))).
@@ -569,3 +566,4 @@ by exists f; rewrite -cstf; exact: cst_continuous.
569566Qed .
570567
571568End alexandroff_hausdorff.
569+ End cantor.
0 commit comments