@@ -3,58 +3,77 @@ From mathcomp Require Import all_ssreflect all_algebra all_classical all_reals.
33From mathcomp Require Import topology_structure uniform_structure.
44From mathcomp Require Import order_topology pseudometric_structure compact.
55
6+ (**md************************************************************************* *)
7+ (* # Discrete Topology *)
8+ (* ``` *)
9+ (* discreteNbhsType == *)
10+ (* discrete_ent == entourages of the discrete uniformity *)
11+ (* topology, equipped with the Uniform *)
12+ (* structure *)
13+ (* discrete_ball == singleton balls for the discrete metric, *)
14+ (* equipped with the Uniform structure *)
15+ (* discreteTopologicalType == type of choice types with a discrete *)
16+ (* topology *)
17+ (* discreteOrderTopologicalType == *)
18+ (* pdiscreteTopologicalType == *)
19+ (* pdiscreteOrderTopologicalType == *)
20+ (* discreteUniformType == *)
21+ (* discretePseudoMetricType == *)
22+ (* discrete_topology T == alias attaching discrete structures for *)
23+ (* topology, uniformity, and pseudometric *)
24+ (* ``` *)
25+ (***************************************************************************** *)
626Import Order.TTheory GRing.Theory Num.Def Num.Theory.
727
828Local Open Scope classical_set_scope.
929Local Open Scope ring_scope.
1030
11-
1231HB.mixin Record Discrete_ofNbhs T of Nbhs T := {
1332 nbhs_principalE : (@nbhs T _) = principal_filter;
1433}.
1534
1635#[short(type="discreteNbhsType")]
1736HB.structure Definition DiscreteNbhs := {T of Nbhs T & Discrete_ofNbhs T}.
1837
19-
2038Definition discrete_ent {T} : set (set (T * T)) :=
2139 globally (range (fun x => (x, x))).
2240
23- (** Note: having the discrete topology does not guarantee the discrete
41+ (** Note: having the discrete topology does not guarantee the discrete
2442 uniformity. Likewise for the discrete metric. Consider [set 1/n | n in R] *)
2543HB.mixin Record Discrete_ofUniform T of Uniform T := {
2644 uniform_discrete : @entourage T = discrete_ent
2745}.
2846
29- Definition discrete_ball {R : numDomainType} {T} (x : T) (eps : R) y : Prop := x = y.
47+ Definition discrete_ball {R : numDomainType} {T} (x : T) (eps : R) y : Prop :=
48+ x = y.
3049
31- HB.mixin Record Discrete_ofPseudometric {R : numDomainType} T of
50+ HB.mixin Record Discrete_ofPseudometric {R : numDomainType} T of
3251 PseudoMetric R T := {
3352 metric_discrete : @ball R T = @discrete_ball R T
3453}.
3554
3655#[short(type="discreteTopologicalType")]
37- HB.structure Definition DiscreteTopology :=
56+ HB.structure Definition DiscreteTopology :=
3857 { T of DiscreteNbhs T & Topological T}.
3958
4059#[short(type="discreteOrderTopologicalType")]
41- HB.structure Definition DiscreteOrderTopology d :=
60+ HB.structure Definition DiscreteOrderTopology d :=
4261 { T of Discrete_ofNbhs T & OrderTopological d T}.
4362
4463#[short(type="pdiscreteTopologicalType")]
45- HB.structure Definition PointedDiscreteTopology :=
64+ HB.structure Definition PointedDiscreteTopology :=
4665 { T of DiscreteTopology T & Pointed T}.
4766
4867#[short(type="pdiscreteOrderTopologicalType")]
49- HB.structure Definition PointedDiscreteOrderTopology d :=
68+ HB.structure Definition PointedDiscreteOrderTopology d :=
5069 { T of Discrete_ofNbhs T & OrderTopological d T & Pointed T}.
5170
5271#[short(type="discreteUniformType")]
53- HB.structure Definition DiscreteUniform :=
72+ HB.structure Definition DiscreteUniform :=
5473 { T of Discrete_ofUniform T & Uniform T & Discrete_ofNbhs T}.
5574
5675#[short(type="discretePseudoMetricType")]
57- HB.structure Definition DiscretePseudoMetric {R : numDomainType} :=
76+ HB.structure Definition DiscretePseudoMetric {R : numDomainType} :=
5877 { T of Discrete_ofPseudometric R T & PseudoMetric R T & DiscreteUniform T}.
5978
6079HB.builders Context T of Discrete_ofNbhs T.
@@ -65,7 +84,8 @@ Proof. rewrite nbhs_principalE; exact: principal_filter_proper. Qed.
6584Local Lemma principal_nbhs_singleton (p : T) (A : set T) : nbhs p A -> A p.
6685Proof . by rewrite nbhs_principalE => /principal_filterP. Qed .
6786
68- Local Lemma principal_nbhs_nbhs (p : T) (A : set T) : nbhs p A -> nbhs p (nbhs^~ A).
87+ Local Lemma principal_nbhs_nbhs (p : T) (A : set T) :
88+ nbhs p A -> nbhs p (nbhs^~ A).
6989Proof . by move=> ?; rewrite {1}nbhs_principalE; apply/principal_filterP. Qed .
7090
7191HB.instance Definition _ := @Nbhs_isNbhsTopological.Build T
@@ -101,16 +121,16 @@ Qed.
101121Local Lemma discrete_entourage_nbhsE : (@nbhs T _) = nbhs_ d.
102122Proof .
103123rewrite funeqE => x; rewrite nbhs_principalE eqEsubset; split => U.
104- move/principal_filterP => ?; exists diagonal; first by move=> ? [w _ <-].
124+ move/principal_filterP => ?; exists diagonal; first by move=> ? [w _ <-].
105125 by move=> z /= /set_mem; rewrite /diagonal /= => <-.
106126case => w entW wU; apply/principal_filterP; apply: wU; apply/mem_set.
107127exact: entW.
108128Qed .
109129
110130HB.instance Definition _ := @Nbhs_isUniform.Build T
111- discrete_ent
112- discrete_entourage_filter
113- discrete_entourage_diagonal
131+ discrete_ent
132+ discrete_entourage_filter
133+ discrete_entourage_diagonal
114134 discrete_entourage_inv
115135 discrete_entourage_split_ex
116136 discrete_entourage_nbhsE.
@@ -119,12 +139,12 @@ HB.instance Definition _ := @Discrete_ofUniform.Build T erefl.
119139
120140HB.end .
121141
122- HB.factory Record DiscretePseudoMetric_ofUniform (R : numDomainType) T of
142+ HB.factory Record DiscretePseudoMetric_ofUniform (R : numDomainType) T of
123143 DiscreteUniform T := {}.
124144
125145HB.builders Context R T of DiscretePseudoMetric_ofUniform R T.
126146
127- Local Lemma discrete_ball_center x (eps : R) : 0 < eps ->
147+ Local Lemma discrete_ball_center x (eps : R) : 0 < eps ->
128148 @discrete_ball R T x eps x.
129149Proof . by []. Qed .
130150
@@ -143,9 +163,9 @@ move=> entP; exists 1 => //= z z12; apply: entP; exists z.1 => //.
143163by rewrite {2}z12 -surjective_pairing.
144164Qed .
145165
146- HB.instance Definition _ :=
147- @Uniform_isPseudoMetric.Build R T (@discrete_ball R T)
148- discrete_ball_center discrete_ball_sym discrete_ball_triangle
166+ HB.instance Definition _ :=
167+ @Uniform_isPseudoMetric.Build R T (@discrete_ball R T)
168+ discrete_ball_center discrete_ball_sym discrete_ball_triangle
149169 discrete_entourageE.
150170
151171Local Lemma discrete_ballE : @ball R T = @discrete_ball R T.
@@ -155,9 +175,8 @@ HB.instance Definition _ := @Discrete_ofPseudometric.Build R T discrete_ballE.
155175
156176HB.end .
157177
158- (** we introducing an alias attaching discrete structures for
159- topology, uniformity, and pseudometric *)
160178Definition discrete_topology (T : Type) : Type := T.
179+
161180HB.instance Definition _ (T : choiceType) :=
162181 Choice.copy (discrete_topology T) T.
163182HB.instance Definition _ (T : pointedType) :=
@@ -166,9 +185,9 @@ HB.instance Definition _ (T : choiceType) :=
166185 hasNbhs.Build (discrete_topology T) principal_filter.
167186HB.instance Definition _ (T : choiceType) :=
168187 Discrete_ofNbhs.Build (discrete_topology T) erefl.
169- HB.instance Definition _ (T : choiceType) :=
188+ HB.instance Definition _ (T : choiceType) :=
170189 DiscreteUniform_ofNbhs.Build (discrete_topology T).
171- HB.instance Definition _ {R : numDomainType} (T : choiceType) :=
190+ HB.instance Definition _ {R : numDomainType} (T : choiceType) :=
172191 @DiscretePseudoMetric_ofUniform.Build R (discrete_topology T).
173192
174193Section discrete_topology.
0 commit comments