Skip to content

Commit b50d7cd

Browse files
authored
The image of a totally bounded metric space under a uniformly continuous function is totally bounded (#1513)
1 parent 84c2a53 commit b50d7cd

18 files changed

+979
-33
lines changed

src/foundation/images-subtypes.lagda.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ module _
7878
im-subtype : subtype (l1 ⊔ l2 ⊔ l3) B
7979
im-subtype y = subtype-im (f ∘ inclusion-subtype S) y
8080
81+
type-im-subtype : UU (l1 ⊔ l2 ⊔ l3)
82+
type-im-subtype = type-subtype im-subtype
83+
8184
is-in-im-subtype : B → UU (l1 ⊔ l2 ⊔ l3)
8285
is-in-im-subtype = is-in-subtype im-subtype
8386
```

src/foundation/images.lagda.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,28 @@ module foundation.images where
77
<details><summary>Imports</summary>
88

99
```agda
10+
open import foundation.action-on-identifications-functions
11+
open import foundation.contractible-types
1012
open import foundation.dependent-pair-types
13+
open import foundation.embeddings
1114
open import foundation.fundamental-theorem-of-identity-types
1215
open import foundation.propositional-truncations
16+
open import foundation.retractions
17+
open import foundation.sections
1318
open import foundation.slice
1419
open import foundation.subtype-identity-principle
1520
open import foundation.surjective-maps
21+
open import foundation.transport-along-identifications
1622
open import foundation.universe-levels
1723
1824
open import foundation-core.1-types
1925
open import foundation-core.commuting-triangles-of-maps
20-
open import foundation-core.embeddings
2126
open import foundation-core.equivalences
2227
open import foundation-core.fibers-of-maps
2328
open import foundation-core.function-types
2429
open import foundation-core.identity-types
2530
open import foundation-core.injective-maps
31+
open import foundation-core.propositional-maps
2632
open import foundation-core.propositions
2733
open import foundation-core.sets
2834
open import foundation-core.subtypes
@@ -218,6 +224,31 @@ im-1-Type :
218224
im-1-Type X f = im-Truncated-Type zero-𝕋 X f
219225
```
220226

227+
### The unit map of the image of an embedding is an equivalence
228+
229+
```agda
230+
module _
231+
{l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A ↪ B)
232+
where
233+
234+
map-unit-im-emb : A → im (map-emb f)
235+
map-unit-im-emb = map-unit-im (map-emb f)
236+
237+
abstract
238+
is-equiv-unit-im-emb : is-equiv map-unit-im-emb
239+
is-equiv-unit-im-emb =
240+
is-equiv-is-emb-is-surjective
241+
( is-surjective-map-unit-im (map-emb f))
242+
( is-emb-right-factor
243+
( inclusion-im (map-emb f))
244+
( map-unit-im (map-emb f))
245+
( is-emb-inclusion-im (map-emb f))
246+
( is-emb-map-emb f))
247+
248+
equiv-im-emb : A ≃ im (map-emb f)
249+
equiv-im-emb = (map-unit-im-emb , is-equiv-unit-im-emb)
250+
```
251+
221252
## External links
222253

223254
- [Image (mathematics)](<https://en.wikipedia.org/wiki/Image_(mathematics)>) at

src/foundation/surjective-maps.lagda.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ open import foundation.contractible-types
1313
open import foundation.dependent-pair-types
1414
open import foundation.diagonal-maps-of-types
1515
open import foundation.embeddings
16+
open import foundation.empty-types
1617
open import foundation.equality-cartesian-product-types
1718
open import foundation.functoriality-cartesian-product-types
1819
open import foundation.functoriality-propositional-truncation
@@ -237,6 +238,16 @@ surjection-retract R =
237238
( map-retraction-retract R , is-surjective-has-section (section-retract R))
238239
```
239240

241+
### If an empty type has a surjection into another type, that type is empty
242+
243+
```agda
244+
abstract
245+
is-empty-surjection :
246+
{l1 l2 : Level} {A : UU l1} {B : UU l2} → A ↠ B → is-empty A → is-empty B
247+
is-empty-surjection A↠B ¬A b =
248+
rec-trunc-Prop empty-Prop (¬A ∘ pr1) (is-surjective-map-surjection A↠B b)
249+
```
250+
240251
### Any split surjective map is surjective
241252

242253
```agda

src/metric-spaces.lagda.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ open import metric-spaces.functions-metric-spaces public
7474
open import metric-spaces.functions-pseudometric-spaces public
7575
open import metric-spaces.functor-category-set-functions-isometry-metric-spaces public
7676
open import metric-spaces.functor-category-short-isometry-metric-spaces public
77+
open import metric-spaces.images-isometries-metric-spaces public
78+
open import metric-spaces.images-metric-spaces public
79+
open import metric-spaces.images-short-functions-metric-spaces public
80+
open import metric-spaces.images-uniformly-continuous-functions-metric-spaces public
7781
open import metric-spaces.indexed-sums-metric-spaces public
7882
open import metric-spaces.interior-subsets-metric-spaces public
7983
open import metric-spaces.isometries-metric-spaces public

src/metric-spaces/approximations-metric-spaces.lagda.md

Lines changed: 165 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,30 @@ module metric-spaces.approximations-metric-spaces where
1010
open import elementary-number-theory.positive-rational-numbers
1111
1212
open import foundation.dependent-pair-types
13+
open import foundation.existential-quantification
1314
open import foundation.full-subtypes
15+
open import foundation.function-types
16+
open import foundation.images
17+
open import foundation.images-subtypes
18+
open import foundation.logical-equivalences
19+
open import foundation.propositional-truncations
1420
open import foundation.propositions
1521
open import foundation.subtypes
22+
open import foundation.transport-along-identifications
1623
open import foundation.unions-subtypes
1724
open import foundation.universe-levels
1825
19-
open import metric-spaces.located-metric-spaces
26+
open import metric-spaces.equality-of-metric-spaces
27+
open import metric-spaces.functions-metric-spaces
28+
open import metric-spaces.images-isometries-metric-spaces
29+
open import metric-spaces.images-metric-spaces
30+
open import metric-spaces.images-short-functions-metric-spaces
31+
open import metric-spaces.images-uniformly-continuous-functions-metric-spaces
32+
open import metric-spaces.isometries-metric-spaces
2033
open import metric-spaces.metric-spaces
34+
open import metric-spaces.short-functions-metric-spaces
2135
open import metric-spaces.subspaces-metric-spaces
36+
open import metric-spaces.uniformly-continuous-functions-metric-spaces
2237
```
2338

2439
</details>
@@ -72,6 +87,155 @@ module _
7287
type-approximation-Metric-Space : UU (l1 ⊔ l3)
7388
type-approximation-Metric-Space =
7489
type-subtype subset-approximation-Metric-Space
90+
91+
is-approximation-approximation-Metric-Space :
92+
is-approximation-Metric-Space X ε subset-approximation-Metric-Space
93+
is-approximation-approximation-Metric-Space = pr2 S
94+
```
95+
96+
## Properties
97+
98+
### If `μ` is a modulus of uniform continuity for `f : X → Y` and `A` is a `(μ ε)`-approximation of `X`, then `im f A` is an `ε`-approximation of `im f X`
99+
100+
```agda
101+
module _
102+
{l1 l2 l3 l4 l5 : Level} (X : Metric-Space l1 l2) (Y : Metric-Space l3 l4)
103+
(f : type-function-Metric-Space X Y) {μ : ℚ⁺ → ℚ⁺}
104+
(is-modulus-ucont-f-μ :
105+
is-modulus-of-uniform-continuity-function-Metric-Space X Y f μ)
106+
(ε : ℚ⁺) (A : approximation-Metric-Space l5 X (μ ε))
107+
where
108+
109+
abstract
110+
is-approximation-im-uniformly-continuous-function-approximation-Metric-Space :
111+
is-approximation-Metric-Space
112+
( im-Metric-Space X Y f)
113+
( ε)
114+
( im-subtype
115+
( map-unit-im f)
116+
( subset-approximation-Metric-Space X (μ ε) A))
117+
is-approximation-im-uniformly-continuous-function-approximation-Metric-Space
118+
(y , ∃x:fx=y) =
119+
let
120+
open
121+
do-syntax-trunc-Prop
122+
( ∃ _ (λ z → neighborhood-prop-Metric-Space Y ε (pr1 (pr1 z)) y))
123+
in do
124+
(x , fx=y) ← ∃x:fx=y
125+
((a , a∈A) , Nμεax) ←
126+
is-approximation-approximation-Metric-Space X (μ ε) A x
127+
intro-exists
128+
( map-unit-im
129+
( map-unit-im f ∘
130+
inclusion-subtype
131+
( subset-approximation-Metric-Space X (μ ε) A))
132+
( a , a∈A))
133+
( tr
134+
( neighborhood-Metric-Space Y ε (f a))
135+
( fx=y)
136+
( is-modulus-ucont-f-μ a ε x Nμεax))
137+
138+
approximation-im-uniformly-continuous-function-approximation-Metric-Space :
139+
approximation-Metric-Space (l1 ⊔ l3 ⊔ l5) (im-Metric-Space X Y f) ε
140+
approximation-im-uniformly-continuous-function-approximation-Metric-Space =
141+
( im-subtype (map-unit-im f) (subset-approximation-Metric-Space X (μ ε) A) ,
142+
is-approximation-im-uniformly-continuous-function-approximation-Metric-Space)
143+
```
144+
145+
### If `f : X → Y` is a short function and `A` is an `ε`-approximation of `X`, then `im f A` is an `ε`-approximation of `im f X`
146+
147+
```agda
148+
module _
149+
{l1 l2 l3 l4 l5 : Level} (X : Metric-Space l1 l2) (Y : Metric-Space l3 l4)
150+
(f : short-function-Metric-Space X Y)
151+
(ε : ℚ⁺) (A : approximation-Metric-Space l5 X ε)
152+
where
153+
154+
approximation-im-short-function-approximation-Metric-Space :
155+
approximation-Metric-Space
156+
( l1 ⊔ l3 ⊔ l5)
157+
( im-short-function-Metric-Space X Y f)
158+
( ε)
159+
approximation-im-short-function-approximation-Metric-Space =
160+
approximation-im-uniformly-continuous-function-approximation-Metric-Space
161+
( X)
162+
( Y)
163+
( map-short-function-Metric-Space X Y f)
164+
( id-is-modulus-of-uniform-continuity-is-short-function-Metric-Space
165+
( X)
166+
( Y)
167+
( map-short-function-Metric-Space X Y f)
168+
( is-short-map-short-function-Metric-Space X Y f))
169+
( ε)
170+
( A)
171+
```
172+
173+
### If `f : X → Y` is an isometry and `A` is an `ε`-approximation of `X`, then `im f A` is an `ε`-approximation of `im f X`
174+
175+
```agda
176+
module _
177+
{l1 l2 l3 l4 l5 : Level} (X : Metric-Space l1 l2) (Y : Metric-Space l3 l4)
178+
(f : isometry-Metric-Space X Y)
179+
(ε : ℚ⁺) (A : approximation-Metric-Space l5 X ε)
180+
where
181+
182+
approximation-im-isometry-approximation-Metric-Space :
183+
approximation-Metric-Space
184+
( l1 ⊔ l3 ⊔ l5)
185+
( im-isometry-Metric-Space X Y f)
186+
( ε)
187+
approximation-im-isometry-approximation-Metric-Space =
188+
approximation-im-short-function-approximation-Metric-Space X Y
189+
( short-isometry-Metric-Space X Y f)
190+
( ε)
191+
( A)
192+
```
193+
194+
### If `f : X ≃ Y` is an isometric equivalence and `A` is an `ε`-approximation of `X`, then `im f A` is an `ε`-approximation of `Y`
195+
196+
```agda
197+
module _
198+
{l1 l2 l3 l4 l5 : Level} (X : Metric-Space l1 l2) (Y : Metric-Space l3 l4)
199+
(f : isometric-equiv-Metric-Space X Y)
200+
(ε : ℚ⁺) (A : approximation-Metric-Space l5 X ε)
201+
where
202+
203+
abstract
204+
is-approximation-im-isometric-equiv-approximation-Metric-Space :
205+
is-approximation-Metric-Space
206+
( Y)
207+
( ε)
208+
( im-subtype
209+
( map-isometric-equiv-Metric-Space X Y f)
210+
( subset-approximation-Metric-Space X ε A))
211+
is-approximation-im-isometric-equiv-approximation-Metric-Space y =
212+
let
213+
open
214+
do-syntax-trunc-Prop
215+
( ∃ _ (λ z → neighborhood-prop-Metric-Space Y ε (pr1 z) y))
216+
in do
217+
let x = map-inv-isometric-equiv-Metric-Space X Y f y
218+
((a , a∈A) , Nεax) ← is-approximation-approximation-Metric-Space X ε A x
219+
intro-exists
220+
( map-unit-im
221+
( map-isometric-equiv-Metric-Space X Y f ∘
222+
inclusion-subtype (subset-approximation-Metric-Space X ε A))
223+
( a , a∈A))
224+
( tr
225+
( neighborhood-Metric-Space Y ε
226+
( map-isometric-equiv-Metric-Space X Y f a))
227+
( is-section-map-inv-isometric-equiv-Metric-Space X Y f y)
228+
( forward-implication
229+
( is-isometry-map-isometric-equiv-Metric-Space X Y f ε _ _)
230+
( Nεax)))
231+
232+
approximation-im-isometric-equiv-approximation-Metric-Space :
233+
approximation-Metric-Space (l1 ⊔ l3 ⊔ l5) Y ε
234+
approximation-im-isometric-equiv-approximation-Metric-Space =
235+
( im-subtype
236+
( map-isometric-equiv-Metric-Space X Y f)
237+
( subset-approximation-Metric-Space X ε A) ,
238+
is-approximation-im-isometric-equiv-approximation-Metric-Space)
75239
```
76240

77241
## References

src/metric-spaces/compact-metric-spaces.lagda.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,17 @@ if it is [totally bounded](metric-spaces.totally-bounded-metric-spaces.md) and
3030

3131
```agda
3232
module _
33-
{l1 l2 : Level} (X : Metric-Space l1 l2)
33+
{l1 l2 : Level} (l3 : Level) (X : Metric-Space l1 l2)
3434
where
3535
36-
is-compact-prop-Metric-Space : Prop (lsuc l1 ⊔ lsuc l2)
36+
is-compact-prop-Metric-Space : Prop (l1 ⊔ l2 ⊔ lsuc l3)
3737
is-compact-prop-Metric-Space =
38-
is-totally-bounded-prop-Metric-Space X ∧ is-complete-prop-Metric-Space X
38+
is-totally-bounded-prop-Metric-Space l3 X ∧ is-complete-prop-Metric-Space X
3939
40-
is-compact-Metric-Space : UU (lsuc l1 ⊔ lsuc l2)
40+
is-compact-Metric-Space : UU (l1 ⊔ l2 ⊔ lsuc l3)
4141
is-compact-Metric-Space = type-Prop is-compact-prop-Metric-Space
4242
43-
Compact-Metric-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
44-
Compact-Metric-Space l1 l2 =
45-
type-subtype (is-compact-prop-Metric-Space {l1} {l2})
43+
Compact-Metric-Space : (l1 l2 l3 : Level) → UU (lsuc l1 ⊔ lsuc l2 ⊔ lsuc l3)
44+
Compact-Metric-Space l1 l2 l3 =
45+
type-subtype (is-compact-prop-Metric-Space {l1} {l2} l3)
4646
```

src/metric-spaces/equality-of-metric-spaces.lagda.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ open import foundation.function-types
1818
open import foundation.functoriality-dependent-pair-types
1919
open import foundation.identity-types
2020
open import foundation.propositions
21+
open import foundation.retractions
22+
open import foundation.sections
2123
open import foundation.subtypes
2224
open import foundation.torsorial-type-families
2325
open import foundation.transport-along-identifications
@@ -82,6 +84,41 @@ module _
8284
isometric-equiv-Pseudometric-Space
8385
( pseudometric-Metric-Space A)
8486
( pseudometric-Metric-Space B)
87+
88+
equiv-isometric-equiv-Metric-Space :
89+
isometric-equiv-Metric-Space → type-Metric-Space A ≃ type-Metric-Space B
90+
equiv-isometric-equiv-Metric-Space = pr1
91+
92+
map-isometric-equiv-Metric-Space :
93+
isometric-equiv-Metric-Space → type-Metric-Space A → type-Metric-Space B
94+
map-isometric-equiv-Metric-Space e =
95+
map-equiv (equiv-isometric-equiv-Metric-Space e)
96+
97+
map-inv-isometric-equiv-Metric-Space :
98+
isometric-equiv-Metric-Space → type-Metric-Space B → type-Metric-Space A
99+
map-inv-isometric-equiv-Metric-Space e =
100+
map-inv-equiv (equiv-isometric-equiv-Metric-Space e)
101+
102+
is-section-map-inv-isometric-equiv-Metric-Space :
103+
(e : isometric-equiv-Metric-Space) →
104+
is-section
105+
( map-isometric-equiv-Metric-Space e)
106+
( map-inv-isometric-equiv-Metric-Space e)
107+
is-section-map-inv-isometric-equiv-Metric-Space e =
108+
is-section-map-inv-equiv (equiv-isometric-equiv-Metric-Space e)
109+
110+
is-retraction-map-inv-isometric-equiv-Metric-Space :
111+
(e : isometric-equiv-Metric-Space) →
112+
is-retraction
113+
( map-isometric-equiv-Metric-Space e)
114+
( map-inv-isometric-equiv-Metric-Space e)
115+
is-retraction-map-inv-isometric-equiv-Metric-Space e =
116+
is-retraction-map-inv-equiv (equiv-isometric-equiv-Metric-Space e)
117+
118+
is-isometry-map-isometric-equiv-Metric-Space :
119+
(e : isometric-equiv-Metric-Space) →
120+
is-isometry-Metric-Space A B (map-isometric-equiv-Metric-Space e)
121+
is-isometry-map-isometric-equiv-Metric-Space = pr2
85122
```
86123

87124
### Isometric equivalences between metric spaces

0 commit comments

Comments
 (0)