Module mathcomp.analysis.topology_theory.subtype_topology
From HB Require Import structures.From mathcomp Require Import boot order algebra all_classical.
From mathcomp Require Import reals topology_structure uniform_structure compact.
From mathcomp Require Import pseudometric_structure connected initial_topology.
From mathcomp Require Import product_topology subspace_topology.
Unset SsrOldRewriteGoalsOrder.
Local Open Scope classical_set_scope.
Local Open Scope ring_scope.
.
Source code
Source code
Source code
Topological.copy (set_type A) (initial_topology set_val).
.
Source code
Source code
Source code
Uniform.copy (A : Type) (@initial_topology (A : Type) X set_val).
.
Source code
Source code
Source code
PseudoMetric.copy (A : Type) (@initial_topology (A : Type) X set_val).
Section subspace_sig.
Context { : topologicalType} ( : set X).
Lemma
Source code
nbhs x U <-> nbhs (set_val x : subspace A) (set_val @` U).
Proof.
by case: x; rewrite set_valE => //= ? /set_mem.
split.
case=> _ /= [] [W oW <- /= Wx sWU]; move: oW; rewrite openE /= /interior.
move=> /(_ _ Wx); apply: filter_app; apply: nearW => w /= Ww /mem_set Aw.
by exists (@exist _ _ w Aw) => //; exact: sWU.
rewrite withinE => -[V + UAVA]; rewrite nbhsE => -[V' [oV' V'x V'V]].
exists (sval @^-1` V'); split => //=; first by exists V'.
move=> w /= /V'V Vsw; have : (V `&` A) (\val w).
by split => //; case: w Vsw => //= ? /set_mem.
by rewrite -UAVA => -[[v ? /eq_sig_hprop] <-].
Qed.
Lemma
Source code
{within A, continuous f} <-> continuous (sigL A f).
Proof.
have /continuous_subspaceT/subspaceT_continuous :=
@initial_continuous A X set_val.
move=> svf ctsf; apply/continuous_subspace_setT => x.
apply: (@continuous_comp (subspace _) (subspace A)); last exact: ctsf.
by move=> U nfU; exact: svf.
rewrite continuous_subspace_in => + x Ax U nfxU.
move=> /(_ (@exist _ _ x Ax) U) /= []; first exact: nfxU.
move=> _ [/= [W + <- /=]] Wx svWU; rewrite nbhs_simpl/=.
rewrite /nbhs /= -nbhs_subspace_in; first exact/set_mem.
rewrite openE /= /interior=> /(_ _ Wx); rewrite {1}set_valE/=.
apply: filter_app; apply: nearW => w Ww /= /mem_set Aw.
by have /= := svWU (@exist _ _ w Aw); rewrite ?set_valE /=; exact.
Qed.
Lemma
Source code
{within A, continuous (valL_ y f)} <-> continuous f.
Proof.
exact/subspace_sigL_continuousP.
Qed.
Lemma
Source code
{within A, continuous (valL f)} <-> continuous f.
Proof.
End subspace_sig.
Lemma
Source code
( : set V) ( : V -> U) ( : U -> W) :
{in f @` A, continuous g} ->
{within A, continuous f} ->
{within A, continuous (g \o f)}.
Proof.
rewrite /sigL -compA => /= x; apply: continuous_comp; first exact: cf.
by apply/cg/image_f; rewrite inE; exact/set_valP.
Qed.
Section subtype_setX.
Context { : topologicalType} ( : set X) ( : set Y).
Program Definition
from_subspace : forall {T U : Type} (A : set T), (T -> U) -> subspace A -> U from_subspace is not universe polymorphic Arguments from_subspace {T U}%_type_scope A%_classical_set_scope f%_function_scope _ from_subspace is transparent Expands to: Constant mathcomp.analysis.topology_theory.subspace_topology.from_subspace Declared in library mathcomp.analysis.topology_theory.subspace_topology, line 317, characters 11-24
Source code
(@exist _ _ ab.1 _, @exist _ _ ab.2 _).
Program Definition
subspace_ent : forall {X : uniformType}, set X -> set_system (X * X) subspace_ent is not universe polymorphic Arguments subspace_ent {X} A%_classical_set_scope _ subspace_ent is transparent Expands to: Constant mathcomp.analysis.topology_theory.subspace_topology.subspace_ent Declared in library mathcomp.analysis.topology_theory.subspace_topology, line 440, characters 11-23
Source code
(@exist _ _ (\val ab.1, \val ab.2) _).
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Lemma
Source code
Proof.
case: nxP => _ [/= [] P' oP' <- /=]; rewrite set_valE /= => P'x P'P.
case: nyQ => _ [/= [] Q' oQ' <- /=]; rewrite set_valE /= => Q'x Q'Q.
pose PQ : set (A `*` B) := \val @^-1` (P' `*` Q').
exists PQ; split => //=.
exists (P' `*` Q') => //; rewrite openE => -[a b /=] [P'a Q'b].
exists (P', Q') => //; split.
- by move: oP'; rewrite openE; exact.
- by move: oQ'; rewrite openE; exact.
by move=> [[a b]/= abAB [P'a Q'b]]; apply/pqU; split; [exact: P'P|exact: Q'Q].
Qed.
Lemma
Source code
Proof.
rewrite openE /= => /[apply] [][][] P Q /=; rewrite (nbhsE x) (nbhsE y) => -[].
move=> [P' [oP' P'x P'P]] [Q' [oQ' Q'y Q'Q]] PQW WU.
exists (val @^-1` P', \val @^-1` Q') => /=; first split.
- by exists (\val@^-1` P'); split => //=; exists P'.
- by exists (\val @^-1` Q'); split => //=; exists Q'.
- by move=> [[p Ap] [q Bq]]/= [P'p Q'q]; apply/WU/PQW;
split; [exact: P'P|exact: Q'Q].
Qed.
End subtype_setX.