|
1 | 1 | (* mathcomp analysis (c) 2017 Inria and AIST. License: CeCILL-C. *) |
2 | 2 | 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. |
4 | 4 | From mathcomp.classical Require Import boolp classical_sets functions. |
5 | 5 | From mathcomp.classical Require Import cardinality mathcomp_extra fsbigop. |
6 | 6 | Require Import reals signed. |
@@ -303,6 +303,9 @@ Require Import reals signed. |
303 | 303 | (* close x y <-> x and y are arbitrarily close w.r.t. to *) |
304 | 304 | (* balls. *) |
305 | 305 | (* 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 *) |
306 | 309 | (* *) |
307 | 310 | (* * Complete uniform spaces : *) |
308 | 311 | (* cauchy F <-> the set of sets F is a cauchy filter *) |
@@ -4707,6 +4710,49 @@ HB.instance Definition _ := Uniform_isPseudoMetric.Build R (T -> U) |
4707 | 4710 | fct_ball_center fct_ball_sym fct_ball_triangle fct_entourage. |
4708 | 4711 | End fct_PseudoMetric. |
4709 | 4712 |
|
| 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 | + |
4710 | 4756 | (** ** Complete uniform spaces *) |
4711 | 4757 |
|
4712 | 4758 | Definition cauchy {T : uniformType} (F : set_system T) := (F, F) --> entourage. |
|
0 commit comments