Skip to content

Commit 3b594c9

Browse files
zstone1affeldt-aist
authored andcommitted
Quotient topology (#786)
* quotient topology * docs * trying to fix build * cleaning up proof * more general quotients * docs * trying to fix build * nitpicks * quotType alias * fix changelog * fixing changelog again --------- Co-authored-by: Reynald Affeldt <[email protected]>
1 parent 0e8ede2 commit 3b594c9

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@
6464
+ lemmas `adde_def_doppeD`, `adde_def_doppeB`
6565
+ lemma `fin_num_sume_distrr`
6666

67+
- in file `topology.v`,
68+
+ new definitions `quotient_topology`, and `quotient_open`.
69+
+ new lemmas `pi_continuous`, `quotient_continuous`, and
70+
`repr_comp_continuous`.
71+
6772
### Changed
6873

6974
- in `fsbigop.v`:

theories/topology.v

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *)
22
From HB Require Import structures.
3-
From mathcomp Require Import all_ssreflect all_algebra finmap.
3+
From mathcomp Require Import all_ssreflect all_algebra finmap generic_quotient.
44
From mathcomp.classical Require Import boolp classical_sets functions.
55
From mathcomp.classical Require Import cardinality mathcomp_extra fsbigop.
66
Require Import reals signed.
@@ -303,6 +303,9 @@ Require Import reals signed.
303303
(* close x y <-> x and y are arbitrarily close w.r.t. to *)
304304
(* balls. *)
305305
(* weak_pseudoMetricType == the metric space for weak topologies *)
306+
(* quotient_topology Q == the quotient topology corresponding to *)
307+
(* quotient Q : quotType T. where T has *)
308+
(* type topologicalType *)
306309
(* *)
307310
(* * Complete uniform spaces : *)
308311
(* cauchy F <-> the set of sets F is a cauchy filter *)
@@ -4707,6 +4710,49 @@ HB.instance Definition _ := Uniform_isPseudoMetric.Build R (T -> U)
47074710
fct_ball_center fct_ball_sym fct_ball_triangle fct_entourage.
47084711
End fct_PseudoMetric.
47094712

4713+
Definition quotient_topology (T : topologicalType) (Q : quotType T) : Type := Q.
4714+
4715+
Section quotients.
4716+
Local Open Scope quotient_scope.
4717+
Context {T : topologicalType} {Q0 : quotType T}.
4718+
4719+
Local Notation Q := (quotient_topology Q0).
4720+
4721+
HB.instance Definition _ := gen_eqMixin Q.
4722+
HB.instance Definition _ := gen_choiceMixin Q.
4723+
HB.instance Definition _ := isPointed.Build Q (\pi_Q point).
4724+
4725+
Definition quotient_open U := open (\pi_Q @^-1` U).
4726+
4727+
Program Definition quotient_topologicalType_mixin :=
4728+
@Pointed_isOpenTopological.Build Q quotient_open _ _ _.
4729+
Next Obligation. by rewrite /quotient_open preimage_setT; exact: openT. Qed.
4730+
Next Obligation. by move=> ? ? ? ?; exact: openI. Qed.
4731+
Next Obligation. by move=> I f ofi; apply: bigcup_open => i _; exact: ofi. Qed.
4732+
HB.instance Definition _ := quotient_topologicalType_mixin.
4733+
4734+
Lemma pi_continuous : continuous (\pi_Q : T -> Q).
4735+
Proof. exact/continuousP. Qed.
4736+
4737+
Lemma quotient_continuous {Z : topologicalType} (f : Q -> Z) :
4738+
continuous f <-> continuous (f \o \pi_Q).
4739+
Proof.
4740+
split => /continuousP /= cts; apply/continuousP => A oA; last exact: cts.
4741+
by rewrite comp_preimage; move/continuousP: pi_continuous; apply; exact: cts.
4742+
Qed.
4743+
4744+
Lemma repr_comp_continuous (Z : topologicalType) (g : T -> Z) :
4745+
continuous g -> {homo g : a b / \pi_Q a == \pi_Q b :> Q >-> a == b} ->
4746+
continuous (g \o repr : Q -> Z).
4747+
Proof.
4748+
move=> /continuousP ctsG rgE; apply/continuousP => A oA.
4749+
rewrite /open/= /quotient_open (_ : _ @^-1` _ = g @^-1` A); first exact: ctsG.
4750+
have greprE x : g (repr (\pi_Q x)) = g x by apply/eqP; rewrite rgE// reprK.
4751+
by rewrite eqEsubset; split => x /=; rewrite greprE.
4752+
Qed.
4753+
4754+
End quotients.
4755+
47104756
(** ** Complete uniform spaces *)
47114757

47124758
Definition cauchy {T : uniformType} (F : set_system T) := (F, F) --> entourage.

0 commit comments

Comments
 (0)