Module mathcomp.analysis.topology_theory.initial_topology
From HB Require Import structures.From mathcomp Require Import all_ssreflect_compat all_algebra all_classical.
#[warning="-warn-library-file-internal-analysis"]
From mathcomp Require Import unstable.
From mathcomp Require Import interval_inference reals topology_structure.
From mathcomp Require Import uniform_structure order_topology.
From mathcomp Require Import pseudometric_structure.
Import Order.TTheory GRing.Theory Num.Theory.
Set SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
Definition
discrete_ent : forall {T : Type}, set (set (T * T)) discrete_ent is not universe polymorphic Arguments discrete_ent {T}%type_scope _ discrete_ent is transparent Expands to: Constant mathcomp.analysis.topology_theory.discrete_topology.discrete_ent Declared in library mathcomp.analysis.topology_theory.discrete_topology, line 42, characters 11-23
Used by
- mathcomp.analysis.homotopy_theory.continuous_path
- mathcomp.analysis.topology_theory.one_point_compactification
- mathcomp.analysis.topology_theory.function_spaces
- mathcomp.analysis.topology_theory.subtype_topology
- mathcomp.analysis.topology_theory.subspace_topology
- mathcomp.analysis.normedtype_theory.urysohn
Source code
( : S -> T) : Type := S.
Section Initial_Topology.
Variable ( : choiceType) ( : topologicalType) ( : S -> T).
Local Notation := (initial_topology f).
Definition
discrete_ball : forall {R : numDomainType} {T : Type}, T -> R -> T -> Prop discrete_ball is not universe polymorphic Arguments discrete_ball {R} {T}%type_scope x eps%ring_scope y discrete_ball is transparent Expands to: Constant mathcomp.analysis.topology_theory.discrete_topology.discrete_ball Declared in library mathcomp.analysis.topology_theory.discrete_topology, line 51, characters 11-24
Source code
Local Lemma
Local Lemma
Local Lemma
(forall , wopen (g i)) -> wopen (\bigcup_ g i).
Proof.
set opi := fun => [set | open Ui /\ g i = f @^-1` Ui].
exists (\bigcup_ get (opi i)).
apply: bigcup_open => i.
by have /getPex [] : exists , opi i U by have [U] := gop i; exists U.
have g_preim i : g i = f @^-1` (get (opi i)).
by have /getPex [] : exists , opi i U by have [U] := gop i; exists U.
rewrite predeqE => s; split=> [[i _]|[i _]]; last by rewrite g_preim; exists i.
by rewrite -[_ _]/((f @^-1` _) _) -g_preim; exists i.
Qed.
.
.
isOpenTopological.Build W wopT wopI wop_bigU.
Lemma
- mathcomp.analysis.topology_theory.function_spaces
- mathcomp.analysis.topology_theory.subtype_topology
Source code
Proof.
Lemma
- mathcomp.analysis.topology_theory.function_spaces
Source code
Filter F -> f @` setT = setT ->
F --> (s : W) <-> ([set f @` A | in F] : set_system _) --> f s.
Proof.
move=> A /initial_continuous [B [Bop Bs sBAf]].
have /cvFs FB : nbhs (s : W) B by apply: open_nbhs_nbhs.
rewrite nbhs_simpl; exists (f @^-1` A); first exact: filterS FB.
exact: image_preimage.
move=> A /= [_ [[B Bop <-] Bfs sBfA]].
have /cvfFfs [C FC fCeB] : nbhs (f s) B by rewrite nbhsE; exists B.
rewrite nbhs_filterE; apply: filterS FC.
by apply: subset_trans sBfA; rewrite -fCeB; apply: preimage_image.
Qed.
End Initial_Topology.
.
Pointed.on (initial_topology f).
Section initial_uniform.
Local Open Scope relation_scope.
Variable ( : choiceType) ( : uniformType) ( : pS -> U).
Let := initial_topology f.
Definition
discrete_topology : Type -> Type discrete_topology is not universe polymorphic Arguments discrete_topology T%type_scope discrete_topology is transparent Expands to: Constant mathcomp.analysis.topology_theory.discrete_topology.discrete_topology Declared in library mathcomp.analysis.topology_theory.discrete_topology, line 182, characters 11-28
Source code
filter_from (@entourage U) (fun => (map_pair f)@^-1` V).
Let
Proof.
by move=> P Q ??; (exists (P `&` Q); first exact: filterI) => ?.
Qed.
Let
Proof.
Let
Proof.
Let
Proof.
Let
Proof.
case=> [? [[B ? <-] ? BsubV]]; have: nbhs (f x) B by apply: open_nbhs_nbhs.
move=> /nbhsP [W ? WsubB]; exists ((map_pair f) @^-1` W); first by exists W.
by move=> ? ?; exact/BsubV/WsubB.
case=> W [V' entV' V'subW] /filterS; apply.
have : nbhs (f x) (xsection V' (f x)) by apply/nbhsP; exists V'.
rewrite (@nbhsE U) => [[O [openU Ofx Osub]]].
(exists (f @^-1` O); repeat split => //); first by exists O => //.
by move=> w ?; apply/mem_set; apply: V'subW; apply/set_mem; exact: Osub.
Qed.
.
initial_ent initial_ent_filter initial_ent_refl initial_ent_inv
initial_ent_split initial_ent_nbhs.
End initial_uniform.
.
Pointed.on (initial_topology f).
Section initial_pseudoMetric.
Context { : realType} ( : choiceType) ( : pseudoMetricType R) .
Variable ( : pS -> U).
Notation := (initial_topology f).
Definition
Source code
Let
initial_ball x e x.
Proof.
Let
Proof.
have -> : (fun => [set | ball (f xy.1) e (f xy.2)]) =
(preimage (map_pair f) \o fun => [set | ball xy.1 e xy.2])%FUN.
by [].
rewrite eqEsubset; split; apply/filter_fromP.
- apply: filter_from_filter; first by exists 1 => /=.
move=> e1 e2 e1pos e2pos; wlog e1lee2 : e1 e2 e1pos e2pos / e1 <= e2.
by have [?|/ltW ?] := lerP e1 e2; [exact | rewrite setIC; exact].
exists e1 => //; rewrite -preimage_setI; apply: preimage_subset.
by move=> ? ?; split => //; apply: le_ball; first exact: e1lee2.
- by move=> E [e ?] heE; exists e => //; apply: preimage_subset.
- apply: filter_from_filter.
by exists [set | ball xy.1 1 xy.2]; exists 1 => /=.
move=> E1 E2 [e1 e1pos he1E1] [e2 e2pos he2E2].
wlog ? : E1 E2 e1 e2 e1pos e2pos he1E1 he2E2 / e1 <= e2.
have [? /(_ _ _ e1 e2)|/ltW ? ] := lerP e1 e2; first exact.
by rewrite setIC => /(_ _ _ e2 e1); exact.
exists (E1 `&` E2) => //; exists e1 => // xy /= B; split; first exact: he1E1.
by apply/he2E2/le_ball; last exact: B.
- by move=> e ?; exists [set | ball xy.1 e xy.2] => //; exists e => /=.
Qed.
.
initial_pseudo_metric_ball_center (fun _ _ _ => @ball_sym _ _ _ _ _)
(fun _ _ _ _ _ => @ball_triangle _ _ _ _ _ _ _)
initial_pseudo_metric_entourageE.
Lemma
Proof.
End initial_pseudoMetric.
0,1[ | {2}` as a subset of `[0,3]` for an example
Context {} { : orderTopologicalType d} { : subType X}.
Let
Let
Lemma
Proof.
move=> [][][[]l|[]] [[]r|[]][]//= _ xlr /filterS; apply.
- exists `]l, r[%classic; split => //=; exists `]\val l, \val r[%classic.
exact: itv_open.
by rewrite eqEsubset; split => z; rewrite preimage_itv.
- exists `]l, +oo[%classic; split => //=; exists `]\val l, +oo[%classic.
exact: rray_open.
by rewrite eqEsubset; split => z; rewrite preimage_itv.
- exists `]-oo, r[%classic; split => //=; exists `]-oo, \val r[%classic.
exact: lray_open.
by rewrite eqEsubset; split => z; rewrite preimage_itv.
- by rewrite set_itvE; exact: filterT.
Qed.
End initial_order_refine.
Lemma
- mathcomp.analysis.topology_theory.function_spaces
Source code
( : Y -> Z) ( : X -> initial_topology w) :
continuous (w \o f) -> continuous f.