Skip to content

Commit c67e316

Browse files
authored
Bounded distance decompositions of metric spaces (UniMath#1482)
Given a metric space `A`, this PR introduces the bounded distance decomposition of a metric space `A`: the metric space ```agda bounded-distance-decompsition-Metric-Space : Metric-Space (l1 ⊔ l2) (l1 ⊔ l2) bounded-distance-decompsition-Metric-Space = indexed-sum-Metric-Space ( set-bounded-distance-component-Metric-Space A) ( subspace-bounded-distance-component-Metric-Space A) ``` where - `set-bounded-distance-component-Metric-Space A` is the quotient set of `A` by the equivalence relation of being at bounded distance; - `subspace-bounded-distance-component-Metric-Space A` is the subspace of elements in a given quotient class. In each subspace `subspace-bounded-distance-component-Metric-Space A X`, all elements are at bounded distance. Any metric space is isometrically equivalent to its bounded distance decomposition. The underlying equivalence is provided by the following new results for quotient sets and equivalence classes: ```agda module _ {l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A) where equiv-total-equivalence-class : Σ (equivalence-class R) (type-subtype ∘ is-in-equivalence-class-Prop R) ≃ A equiv-total-equivalence-class = [...] equiv-total-set-quotient : Σ ( set-quotient R) ( type-subtype ∘ is-in-equivalence-class-set-quotient-Prop R) ≃ ( A) equiv-total-set-quotient = [...] ```
1 parent 28a8254 commit c67e316

6 files changed

Lines changed: 765 additions & 10 deletions

src/foundation/equivalence-classes.lagda.md

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ module foundation.equivalence-classes where
88

99
```agda
1010
open import foundation.conjunction
11+
open import foundation.contractible-types
1112
open import foundation.dependent-pair-types
1213
open import foundation.effective-maps-equivalence-relations
14+
open import foundation.equivalences
1315
open import foundation.existential-quantification
16+
open import foundation.function-types
1417
open import foundation.functoriality-propositional-truncation
1518
open import foundation.fundamental-theorem-of-identity-types
19+
open import foundation.homotopies
1620
open import foundation.inhabited-subtypes
1721
open import foundation.locally-small-types
1822
open import foundation.logical-equivalences
@@ -23,13 +27,13 @@ open import foundation.small-types
2327
open import foundation.subtype-identity-principle
2428
open import foundation.subtypes
2529
open import foundation.surjective-maps
30+
open import foundation.type-arithmetic-dependent-pair-types
2631
open import foundation.universal-property-image
2732
open import foundation.universe-levels
2833
2934
open import foundation-core.cartesian-product-types
3035
open import foundation-core.embeddings
3136
open import foundation-core.equivalence-relations
32-
open import foundation-core.equivalences
3337
open import foundation-core.functoriality-dependent-pair-types
3438
open import foundation-core.identity-types
3539
open import foundation-core.propositions
@@ -315,12 +319,13 @@ module _
315319
( λ D → is-in-equivalence-class-Prop R D a)
316320
( eq-class-equivalence-class R C H)
317321
318-
is-torsorial-is-in-equivalence-class :
319-
is-torsorial (λ P → is-in-equivalence-class R P a)
320-
pr1 is-torsorial-is-in-equivalence-class =
321-
center-total-is-in-equivalence-class
322-
pr2 is-torsorial-is-in-equivalence-class =
323-
contraction-total-is-in-equivalence-class
322+
abstract
323+
is-torsorial-is-in-equivalence-class :
324+
is-torsorial (λ P → is-in-equivalence-class R P a)
325+
pr1 is-torsorial-is-in-equivalence-class =
326+
center-total-is-in-equivalence-class
327+
pr2 is-torsorial-is-in-equivalence-class =
328+
contraction-total-is-in-equivalence-class
324329
325330
is-in-equivalence-class-eq-equivalence-class :
326331
(q : equivalence-class R) → class R a = q →
@@ -338,6 +343,21 @@ module _
338343
( is-in-equivalence-class-eq-equivalence-class)
339344
```
340345

346+
### Σ-decompositions of types induced by equivalence classes
347+
348+
```agda
349+
module _
350+
{l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A)
351+
where
352+
353+
equiv-total-equivalence-class :
354+
Σ (equivalence-class R) (type-subtype ∘ is-in-equivalence-class-Prop R) ≃ A
355+
equiv-total-equivalence-class =
356+
( right-unit-law-Σ-is-contr
357+
( is-torsorial-is-in-equivalence-class R)) ∘e
358+
( equiv-left-swap-Σ)
359+
```
360+
341361
### The map `class : A → equivalence-class R` is an effective quotient map
342362

343363
```agda

src/foundation/set-quotients.lagda.md

Lines changed: 171 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,37 @@ module foundation.set-quotients where
88

99
```agda
1010
open import foundation.action-on-identifications-functions
11+
open import foundation.contractible-maps
12+
open import foundation.contractible-types
1113
open import foundation.dependent-pair-types
1214
open import foundation.effective-maps-equivalence-relations
1315
open import foundation.embeddings
16+
open import foundation.equality-dependent-pair-types
1417
open import foundation.equivalence-classes
1518
open import foundation.equivalences
19+
open import foundation.fibers-of-maps
1620
open import foundation.function-extensionality
21+
open import foundation.function-types
22+
open import foundation.functoriality-dependent-pair-types
23+
open import foundation.homotopies
1724
open import foundation.identity-types
1825
open import foundation.inhabited-subtypes
26+
open import foundation.logical-equivalences
1927
open import foundation.reflecting-maps-equivalence-relations
2028
open import foundation.sets
2129
open import foundation.slice
2230
open import foundation.surjective-maps
31+
open import foundation.torsorial-type-families
32+
open import foundation.transport-along-identifications
33+
open import foundation.type-arithmetic-dependent-pair-types
2334
open import foundation.uniqueness-set-quotients
2435
open import foundation.universal-property-image
2536
open import foundation.universal-property-set-quotients
2637
open import foundation.universe-levels
2738
open import foundation.whiskering-homotopies-composition
2839
2940
open import foundation-core.equivalence-relations
30-
open import foundation-core.function-types
3141
open import foundation-core.functoriality-dependent-function-types
32-
open import foundation-core.homotopies
3342
open import foundation-core.propositions
3443
open import foundation-core.small-types
3544
open import foundation-core.subtypes
@@ -152,7 +161,37 @@ module _
152161
( is-surjective-quotient-map)
153162
```
154163

155-
### The map `class : A → equivalence-class R` is an effective quotient map
164+
## Properties
165+
166+
### Any element is in the class of its quotient
167+
168+
```agda
169+
module _
170+
{l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A)
171+
(x : A)
172+
where
173+
174+
is-in-equivalence-class-quotient-map-set-quotient :
175+
is-in-equivalence-class-set-quotient
176+
( R)
177+
( quotient-map R x)
178+
( x)
179+
is-in-equivalence-class-quotient-map-set-quotient =
180+
is-in-equivalence-class-eq-equivalence-class
181+
( R)
182+
( x)
183+
( equivalence-class-set-quotient R (quotient-map R x))
184+
( inv
185+
( is-retraction-equivalence-class-set-quotient R (class R x)))
186+
187+
inhabitant-equivalence-class-quotient-map-set-quotient :
188+
type-subtype
189+
( subtype-set-quotient R (quotient-map R x))
190+
inhabitant-equivalence-class-quotient-map-set-quotient =
191+
(x , is-in-equivalence-class-quotient-map-set-quotient)
192+
```
193+
194+
### The map `class : A → set-quotient R` is an effective quotient map
156195

157196
```agda
158197
module _
@@ -417,6 +456,135 @@ module _
417456
B f Uf
418457
```
419458

459+
### Any quotient class containing a given element `x` is equal to `quotient-map x`
460+
461+
```agda
462+
module _
463+
{l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A)
464+
where
465+
466+
eq-set-quotient-equivalence-class-set-quotient :
467+
(X : set-quotient R) {x : A} →
468+
is-in-equivalence-class-set-quotient R X x →
469+
quotient-map R x = X
470+
eq-set-quotient-equivalence-class-set-quotient X {x} H =
471+
( ap
472+
( set-quotient-equivalence-class R)
473+
( eq-class-equivalence-class
474+
( R)
475+
( equivalence-class-set-quotient R X)
476+
( H))) ∙
477+
( is-section-equivalence-class-set-quotient R X)
478+
```
479+
480+
### Two quotient classes that contain similar elements are equal
481+
482+
```agda
483+
module _
484+
{l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A)
485+
where
486+
487+
eq-set-quotient-sim-element-set-quotient :
488+
(X : set-quotient R) {x : A} →
489+
(Y : set-quotient R) {y : A} →
490+
is-in-equivalence-class-set-quotient R X x →
491+
is-in-equivalence-class-set-quotient R Y y →
492+
sim-equivalence-relation R x y →
493+
X = Y
494+
eq-set-quotient-sim-element-set-quotient X {x} Y {y} x∈X y∈Y x~y =
495+
( ( inv (eq-set-quotient-equivalence-class-set-quotient R X x∈X)) ∙
496+
( apply-effectiveness-quotient-map' R x~y) ∙
497+
( eq-set-quotient-equivalence-class-set-quotient R Y y∈Y))
498+
```
499+
500+
### Two elements in the same quotient class are similar
501+
502+
```agda
503+
module _
504+
{l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A)
505+
where
506+
507+
sim-is-in-equivalence-class-set-quotient :
508+
(X : set-quotient R) {x y : A} →
509+
is-in-equivalence-class-set-quotient R X x →
510+
is-in-equivalence-class-set-quotient R X y →
511+
sim-equivalence-relation R x y
512+
sim-is-in-equivalence-class-set-quotient X {x} {y} x∈X y∈X =
513+
apply-effectiveness-quotient-map
514+
( R)
515+
( ( eq-set-quotient-equivalence-class-set-quotient R X x∈X) ∙
516+
( inv (eq-set-quotient-equivalence-class-set-quotient R X y∈X)))
517+
```
518+
519+
### Any element in the quotient class of another is similar to it
520+
521+
```agda
522+
module _
523+
{l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A)
524+
where
525+
526+
sim-is-in-equivalence-class-quotient-map-set-quotient :
527+
(x y : A) →
528+
is-in-equivalence-class-set-quotient
529+
( R)
530+
( quotient-map R x)
531+
( y) →
532+
sim-equivalence-relation R x y
533+
sim-is-in-equivalence-class-quotient-map-set-quotient x y =
534+
sim-is-in-equivalence-class-set-quotient
535+
( R)
536+
( quotient-map R x)
537+
( is-in-equivalence-class-quotient-map-set-quotient R x)
538+
```
539+
540+
### Σ-decompositions of types induced by set quotients
541+
542+
```agda
543+
module _
544+
{l1 l2 : Level} {A : UU l1} (R : equivalence-relation l2 A)
545+
where
546+
547+
abstract
548+
is-torsorial-is-in-equivalence-class-set-quotient :
549+
(x : A) →
550+
is-contr
551+
( Σ ( set-quotient R)
552+
( λ X → is-in-equivalence-class-set-quotient R X x))
553+
is-torsorial-is-in-equivalence-class-set-quotient x =
554+
is-contr-equiv'
555+
( Σ (equivalence-class R) (λ X → is-in-equivalence-class R X x))
556+
( equiv-Σ
557+
( λ X → is-in-equivalence-class-set-quotient R X x)
558+
( compute-set-quotient R)
559+
( λ X →
560+
equiv-iff-is-prop
561+
( is-prop-is-in-equivalence-class R X x)
562+
( is-prop-is-in-equivalence-class-set-quotient
563+
( R)
564+
( set-quotient-equivalence-class R X)
565+
( x))
566+
( λ x∈X →
567+
inv-tr
568+
( λ Y → is-in-equivalence-class R Y x)
569+
( is-retraction-equivalence-class-set-quotient R X)
570+
( x∈X))
571+
( λ x∈X →
572+
tr
573+
( λ Y → is-in-equivalence-class R Y x)
574+
( is-retraction-equivalence-class-set-quotient R X)
575+
( x∈X))))
576+
( is-torsorial-is-in-equivalence-class R x)
577+
578+
equiv-total-set-quotient :
579+
Σ ( set-quotient R)
580+
( type-subtype ∘ is-in-equivalence-class-set-quotient-Prop R) ≃
581+
( A)
582+
equiv-total-set-quotient =
583+
( right-unit-law-Σ-is-contr
584+
( is-torsorial-is-in-equivalence-class-set-quotient)) ∘e
585+
( equiv-left-swap-Σ)
586+
```
587+
420588
## See also
421589

422590
- [Set coequalizers](foundation.set-coequalizers.md) for an equivalent notion

src/metric-spaces.lagda.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ module metric-spaces where
4747
4848
open import metric-spaces.approximations-located-metric-spaces public
4949
open import metric-spaces.approximations-metric-spaces public
50+
open import metric-spaces.bounded-distance-decompositions-of-metric-spaces public
5051
open import metric-spaces.cartesian-products-metric-spaces public
5152
open import metric-spaces.category-of-metric-spaces-and-isometries public
5253
open import metric-spaces.category-of-metric-spaces-and-short-functions public

0 commit comments

Comments
 (0)