diff --git a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md
index e496147954..fd1909ddec 100644
--- a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md
+++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md
@@ -453,11 +453,12 @@ module _
( left-summand-split-ℚ⁺ p)
( right-summand-split-ℚ⁺ p))
- bound-double-le-ℚ⁺ :
- Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p)
- bound-double-le-ℚ⁺ =
- ( modulus-le-double-le-ℚ⁺ , le-double-le-modulus-le-double-le-ℚ⁺)
+ bound-double-le-ℚ⁺ :
+ Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p)
+ bound-double-le-ℚ⁺ =
+ ( modulus-le-double-le-ℚ⁺ , le-double-le-modulus-le-double-le-ℚ⁺)
+ abstract
double-le-ℚ⁺ : exists ℚ⁺ (λ q → le-prop-ℚ⁺ (q +ℚ⁺ q) p)
double-le-ℚ⁺ = unit-trunc-Prop bound-double-le-ℚ⁺
```
diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md
index d08a6ffd1f..bc48c2ee7e 100644
--- a/src/metric-spaces.lagda.md
+++ b/src/metric-spaces.lagda.md
@@ -56,6 +56,7 @@ metric space, `N d₂ x y` [or](foundation.disjunction.md)
```agda
module metric-spaces where
+open import metric-spaces.accumulation-points-subsets-located-metric-spaces public
open import metric-spaces.apartness-located-metric-spaces public
open import metric-spaces.approximations-located-metric-spaces public
open import metric-spaces.approximations-metric-spaces public
diff --git a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md
new file mode 100644
index 0000000000..8f84ddb509
--- /dev/null
+++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md
@@ -0,0 +1,319 @@
+# Accumulation points of subsets of located metric spaces
+
+```agda
+module metric-spaces.accumulation-points-subsets-located-metric-spaces where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.addition-positive-rational-numbers
+open import elementary-number-theory.inequality-natural-numbers
+open import elementary-number-theory.natural-numbers
+open import elementary-number-theory.positive-rational-numbers
+open import elementary-number-theory.strict-inequality-rational-numbers
+
+open import foundation.conjunction
+open import foundation.dependent-pair-types
+open import foundation.existential-quantification
+open import foundation.function-types
+open import foundation.intersections-subtypes
+open import foundation.logical-equivalences
+open import foundation.propositional-truncations
+open import foundation.propositions
+open import foundation.subtypes
+open import foundation.universe-levels
+
+open import lists.sequences
+
+open import logic.functoriality-existential-quantification
+
+open import metric-spaces.apartness-located-metric-spaces
+open import metric-spaces.cauchy-approximations-metric-spaces
+open import metric-spaces.cauchy-sequences-metric-spaces
+open import metric-spaces.closed-subsets-located-metric-spaces
+open import metric-spaces.limits-of-cauchy-approximations-metric-spaces
+open import metric-spaces.limits-of-sequences-metric-spaces
+open import metric-spaces.located-metric-spaces
+open import metric-spaces.subspaces-metric-spaces
+```
+
+
+
+## Idea
+
+An
+{{#concept "accumulation point" WDID=Q858223 WD="limit point" Disambiguation="of a subset of a located metric space" Agda=accumulation-point-subset-Located-Metric-Space}}
+of a subset `S` of a
+[located metric space](metric-spaces.located-metric-spaces.md) `X` is a point
+`x : X` such that there exists a
+[Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) `a`
+with [limit](metric-spaces.limits-of-cauchy-approximations-metric-spaces.md) `x`
+such that for every `ε : ℚ⁺`, `a ε` is in `S` and is
+[apart](metric-spaces.apartness-located-metric-spaces.md) from `x`. In
+particular, this implies an accumulation point is not isolated.
+
+## Definition
+
+```agda
+module _
+ {l1 l2 l3 : Level}
+ (X : Located-Metric-Space l1 l2)
+ (S : subset-Located-Metric-Space l3 X)
+ where
+
+ is-accumulation-to-point-prop-subset-Located-Metric-Space :
+ type-Located-Metric-Space X →
+ subtype
+ ( l2)
+ ( cauchy-approximation-Metric-Space (subspace-Located-Metric-Space X S))
+ is-accumulation-to-point-prop-subset-Located-Metric-Space x a =
+ Π-Prop
+ ( ℚ⁺)
+ ( λ ε →
+ apart-prop-Located-Metric-Space X
+ ( pr1
+ ( map-cauchy-approximation-Metric-Space
+ ( subspace-Located-Metric-Space X S)
+ ( a)
+ ( ε)))
+ ( x)) ∧
+ is-limit-cauchy-approximation-prop-Metric-Space
+ ( metric-space-Located-Metric-Space X)
+ ( map-short-function-cauchy-approximation-Metric-Space
+ ( subspace-Located-Metric-Space X S)
+ ( metric-space-Located-Metric-Space X)
+ ( short-inclusion-subspace-Metric-Space
+ ( metric-space-Located-Metric-Space X)
+ ( S))
+ ( a))
+ ( x)
+
+ is-accumulation-to-point-subset-Located-Metric-Space :
+ type-Located-Metric-Space X →
+ cauchy-approximation-Metric-Space (subspace-Located-Metric-Space X S) →
+ UU l2
+ is-accumulation-to-point-subset-Located-Metric-Space x a =
+ type-Prop (is-accumulation-to-point-prop-subset-Located-Metric-Space x a)
+
+ is-accumulation-point-prop-subset-Located-Metric-Space :
+ subset-Metric-Space (l1 ⊔ l2 ⊔ l3) (metric-space-Located-Metric-Space X)
+ is-accumulation-point-prop-subset-Located-Metric-Space x =
+ ∃ ( cauchy-approximation-Metric-Space (subspace-Located-Metric-Space X S))
+ ( is-accumulation-to-point-prop-subset-Located-Metric-Space x)
+
+ is-accumulation-point-subset-Located-Metric-Space :
+ type-Located-Metric-Space X → UU (l1 ⊔ l2 ⊔ l3)
+ is-accumulation-point-subset-Located-Metric-Space x =
+ type-Prop (is-accumulation-point-prop-subset-Located-Metric-Space x)
+
+ accumulation-point-subset-Located-Metric-Space : UU (l1 ⊔ l2 ⊔ l3)
+ accumulation-point-subset-Located-Metric-Space =
+ type-subtype is-accumulation-point-prop-subset-Located-Metric-Space
+```
+
+## Properties
+
+### A closed subset of a metric space contains all its accumulation points
+
+```agda
+module _
+ {l1 l2 l3 : Level}
+ (X : Located-Metric-Space l1 l2)
+ (S : closed-subset-Located-Metric-Space l3 X)
+ where
+
+ is-in-closed-subset-is-accumulation-point-Located-Metric-Space :
+ (x : type-Located-Metric-Space X) →
+ is-accumulation-point-subset-Located-Metric-Space
+ ( X)
+ ( subset-closed-subset-Located-Metric-Space X S)
+ ( x) →
+ is-in-closed-subset-Located-Metric-Space X S x
+ is-in-closed-subset-is-accumulation-point-Located-Metric-Space x is-acc-x =
+ is-closed-subset-closed-subset-Located-Metric-Space
+ ( X)
+ ( S)
+ ( x)
+ ( λ ε →
+ let
+ open
+ do-syntax-trunc-Prop
+ ( ∃
+ ( type-Located-Metric-Space X)
+ ( λ y →
+ neighborhood-prop-Located-Metric-Space X ε x y ∧
+ subset-closed-subset-Located-Metric-Space X S y))
+ in do
+ (approx@(a , _) , a#x , lim-a=x) ← is-acc-x
+ let (y , y∈S) = a ε
+ intro-exists
+ ( y)
+ ( symmetric-neighborhood-Located-Metric-Space X
+ ( ε)
+ ( y)
+ ( x)
+ ( saturated-is-limit-cauchy-approximation-Metric-Space
+ ( metric-space-Located-Metric-Space X)
+ ( map-short-function-cauchy-approximation-Metric-Space
+ ( subspace-Located-Metric-Space
+ ( X)
+ ( subset-closed-subset-Located-Metric-Space X S))
+ ( metric-space-Located-Metric-Space X)
+ ( short-inclusion-subspace-Metric-Space
+ ( metric-space-Located-Metric-Space X)
+ ( subset-closed-subset-Located-Metric-Space X S))
+ ( approx))
+ ( x)
+ ( lim-a=x)
+ ( ε)) ,
+ y∈S))
+```
+
+### The property of being a sequential accumulation point
+
+```agda
+module _
+ {l1 l2 l3 : Level}
+ (X : Located-Metric-Space l1 l2)
+ (S : subset-Located-Metric-Space l3 X)
+ (x : type-Located-Metric-Space X)
+ where
+
+ is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space :
+ subtype l2 (sequence (type-subtype S))
+ is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space a =
+ Π-Prop ℕ (λ n → apart-prop-Located-Metric-Space X (pr1 (a n)) x) ∧
+ is-limit-prop-sequence-Metric-Space
+ ( metric-space-Located-Metric-Space X)
+ ( pr1 ∘ a)
+ ( x)
+
+ is-sequence-accumulating-to-point-subset-Located-Metric-Space :
+ sequence (type-subtype S) → UU l2
+ is-sequence-accumulating-to-point-subset-Located-Metric-Space =
+ is-in-subtype
+ ( is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space)
+
+ is-sequential-accumulation-point-prop-subset-Located-Metric-Space :
+ Prop (l1 ⊔ l2 ⊔ l3)
+ is-sequential-accumulation-point-prop-subset-Located-Metric-Space =
+ ∃ ( sequence (type-subtype S))
+ ( is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space)
+
+ is-sequential-accumulation-point-subset-Located-Metric-Space :
+ UU (l1 ⊔ l2 ⊔ l3)
+ is-sequential-accumulation-point-subset-Located-Metric-Space =
+ type-Prop is-sequential-accumulation-point-prop-subset-Located-Metric-Space
+```
+
+### If `x` is an accumulation point of `S`, it is a sequential accumulation point of `S`
+
+```agda
+module _
+ {l1 l2 l3 : Level}
+ (X : Located-Metric-Space l1 l2)
+ (S : subset-Located-Metric-Space l3 X)
+ (x : type-Located-Metric-Space X)
+ where
+
+ abstract
+ is-sequential-accumulation-point-is-accumulation-point-subset-Located-Metric-Space :
+ is-accumulation-point-subset-Located-Metric-Space X S x →
+ is-sequential-accumulation-point-subset-Located-Metric-Space X S x
+ is-sequential-accumulation-point-is-accumulation-point-subset-Located-Metric-Space =
+ map-exists
+ ( _)
+ ( map-cauchy-sequence-cauchy-approximation-Metric-Space
+ ( subspace-Located-Metric-Space X S))
+ ( λ a (a#x , lim-a=x) →
+ ( ( λ n → a#x _) ,
+ is-limit-cauchy-sequence-cauchy-approximation-Metric-Space
+ ( metric-space-Located-Metric-Space X)
+ ( map-short-function-cauchy-approximation-Metric-Space
+ ( subspace-Located-Metric-Space X S)
+ ( metric-space-Located-Metric-Space X)
+ ( short-inclusion-subspace-Metric-Space
+ ( metric-space-Located-Metric-Space X)
+ ( S))
+ ( a))
+ ( x)
+ ( lim-a=x)))
+```
+
+### If `x` is a sequential accumulation point of `S`, it is an accumulation point of `S`
+
+```agda
+module _
+ {l1 l2 l3 : Level}
+ (X : Located-Metric-Space l1 l2)
+ (S : subset-Located-Metric-Space l3 X)
+ (x : type-Located-Metric-Space X)
+ where
+
+ abstract
+ is-accumulation-point-is-sequential-accumulation-point-subset-Located-Metric-Space :
+ is-sequential-accumulation-point-subset-Located-Metric-Space X S x →
+ is-accumulation-point-subset-Located-Metric-Space X S x
+ is-accumulation-point-is-sequential-accumulation-point-subset-Located-Metric-Space
+ is-seq-acc-x =
+ let
+ open
+ do-syntax-trunc-Prop
+ ( is-accumulation-point-prop-subset-Located-Metric-Space X S x)
+ in do
+ (σ , σ#x , lim-σ=x) ← is-seq-acc-x
+ μ@(mod-μ , is-mod-μ) ← lim-σ=x
+ intro-exists
+ ( cauchy-approximation-cauchy-sequence-Metric-Space
+ ( subspace-Located-Metric-Space X S)
+ ( σ ,
+ is-cauchy-has-limit-modulus-sequence-Metric-Space
+ ( metric-space-Located-Metric-Space X)
+ ( pr1 ∘ σ)
+ ( x)
+ ( μ)))
+ ( ( λ ε → σ#x _) ,
+ ( λ ε δ →
+ let ε' = modulus-le-double-le-ℚ⁺ ε
+ in
+ monotonic-neighborhood-Located-Metric-Space
+ ( X)
+ ( pr1 (σ (mod-μ ε')))
+ ( x)
+ ( ε')
+ ( ε +ℚ⁺ δ)
+ ( transitive-le-ℚ _ _ _
+ ( le-left-add-ℚ⁺ ε δ)
+ ( le-modulus-le-double-le-ℚ⁺ ε))
+ ( is-mod-μ ε' (mod-μ ε') (refl-leq-ℕ (mod-μ ε')))))
+```
+
+### Being an accumulation point is equivalent to being a sequential accumulation point
+
+```agda
+module _
+ {l1 l2 l3 : Level}
+ (X : Located-Metric-Space l1 l2)
+ (S : subset-Located-Metric-Space l3 X)
+ (x : type-Located-Metric-Space X)
+ where
+
+ is-accumulation-point-iff-is-sequential-accumulation-point-subset-Located-Metric-Space :
+ is-accumulation-point-subset-Located-Metric-Space X S x ↔
+ is-sequential-accumulation-point-subset-Located-Metric-Space X S x
+ is-accumulation-point-iff-is-sequential-accumulation-point-subset-Located-Metric-Space =
+ ( is-sequential-accumulation-point-is-accumulation-point-subset-Located-Metric-Space
+ ( X)
+ ( S)
+ ( x) ,
+ is-accumulation-point-is-sequential-accumulation-point-subset-Located-Metric-Space
+ ( X)
+ ( S)
+ ( x))
+```
+
+## External links
+
+- [Accumulation point](https://en.wikipedia.org/wiki/Accumulation_point) on
+ Wikipedia
diff --git a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md
index 932310526d..71c916ccf9 100644
--- a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md
+++ b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md
@@ -19,6 +19,7 @@ open import elementary-number-theory.multiplicative-group-of-positive-rational-n
open import elementary-number-theory.natural-numbers
open import elementary-number-theory.nonzero-natural-numbers
open import elementary-number-theory.positive-rational-numbers
+open import elementary-number-theory.strict-inequality-natural-numbers
open import elementary-number-theory.strict-inequality-positive-rational-numbers
open import elementary-number-theory.strict-inequality-rational-numbers
open import elementary-number-theory.unit-fractions-rational-numbers
@@ -27,6 +28,8 @@ open import foundation.action-on-identifications-functions
open import foundation.binary-transport
open import foundation.coproduct-types
open import foundation.dependent-pair-types
+open import foundation.existential-quantification
+open import foundation.function-types
open import foundation.functoriality-dependent-pair-types
open import foundation.identity-types
open import foundation.propositional-truncations
@@ -399,7 +402,7 @@ module _
map-cauchy-approximation-Metric-Space
( M)
( x)
- ( positive-reciprocal-rational-ℕ⁺ (succ-nonzero-ℕ' n))
+ ( positive-reciprocal-rational-succ-ℕ n)
modulus-of-convergence-cauchy-sequence-cauchy-approximation-Metric-Space :
ℚ⁺ → ℕ
@@ -484,6 +487,49 @@ module _
is-cauchy-sequence-cauchy-sequence-cauchy-approximation-Metric-Space
```
+### If a Cauchy approximation has a limit, its corresponding Cauchy sequence has the same limit
+
+```agda
+module _
+ {l1 l2 : Level} (M : Metric-Space l1 l2)
+ (x : cauchy-approximation-Metric-Space M)
+ (lim : type-Metric-Space M)
+ (is-lim : is-limit-cauchy-approximation-Metric-Space M x lim)
+ where
+
+ abstract
+ is-limit-cauchy-sequence-cauchy-approximation-Metric-Space :
+ is-limit-cauchy-sequence-Metric-Space
+ ( M)
+ ( cauchy-sequence-cauchy-approximation-Metric-Space M x)
+ ( lim)
+ is-limit-cauchy-sequence-cauchy-approximation-Metric-Space =
+ is-limit-bound-modulus-sequence-Metric-Space M _ _
+ ( λ ε →
+ let
+ (n⁺ , 1/n⁺<ε) = smaller-reciprocal-ℚ⁺ ε
+ in
+ ( nat-nonzero-ℕ n⁺ ,
+ λ m n≤m →
+ monotonic-neighborhood-Metric-Space M
+ ( map-cauchy-sequence-cauchy-approximation-Metric-Space M x m)
+ ( lim)
+ ( positive-reciprocal-rational-succ-ℕ m)
+ ( ε)
+ ( transitive-le-ℚ _ (reciprocal-rational-ℕ⁺ n⁺) _
+ ( 1/n⁺<ε)
+ ( inv-le-ℚ⁺
+ ( positive-rational-ℕ⁺ n⁺)
+ ( positive-rational-ℕ⁺ (succ-nonzero-ℕ' m))
+ ( preserves-le-rational-ℕ
+ ( le-succ-leq-ℕ _ _ n≤m))))
+ ( saturated-is-limit-cauchy-approximation-Metric-Space M
+ ( x)
+ ( lim)
+ ( is-lim)
+ ( positive-reciprocal-rational-succ-ℕ m))))
+```
+
### If the Cauchy sequence associated with a Cauchy approximation has a limit modulus at `l`, its associated approximation converges to `l`
```agda
diff --git a/src/metric-spaces/closed-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/closed-subsets-located-metric-spaces.lagda.md
index 59906ef209..887300e2f4 100644
--- a/src/metric-spaces/closed-subsets-located-metric-spaces.lagda.md
+++ b/src/metric-spaces/closed-subsets-located-metric-spaces.lagda.md
@@ -7,7 +7,9 @@ module metric-spaces.closed-subsets-located-metric-spaces where
Imports
```agda
+open import foundation.dependent-pair-types
open import foundation.propositions
+open import foundation.subtypes
open import foundation.universe-levels
open import metric-spaces.closed-subsets-metric-spaces
@@ -48,4 +50,24 @@ closed-subset-Located-Metric-Space :
(X : Located-Metric-Space l1 l2) → UU (l1 ⊔ l2 ⊔ lsuc l3)
closed-subset-Located-Metric-Space l3 X =
closed-subset-Metric-Space l3 (metric-space-Located-Metric-Space X)
+
+subset-closed-subset-Located-Metric-Space :
+ {l1 l2 l3 : Level} (X : Located-Metric-Space l1 l2) →
+ (S : closed-subset-Located-Metric-Space l3 X) →
+ subset-Located-Metric-Space l3 X
+subset-closed-subset-Located-Metric-Space X = pr1
+
+is-closed-subset-closed-subset-Located-Metric-Space :
+ {l1 l2 l3 : Level} (X : Located-Metric-Space l1 l2) →
+ (S : closed-subset-Located-Metric-Space l3 X) →
+ is-closed-subset-Located-Metric-Space
+ ( X)
+ ( subset-closed-subset-Located-Metric-Space X S)
+is-closed-subset-closed-subset-Located-Metric-Space X = pr2
+
+is-in-closed-subset-Located-Metric-Space :
+ {l1 l2 l3 : Level} (X : Located-Metric-Space l1 l2) →
+ (S : closed-subset-Located-Metric-Space l3 X) →
+ type-Located-Metric-Space X → UU l3
+is-in-closed-subset-Located-Metric-Space X S = is-in-subtype (pr1 S)
```
diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md
index 4ba16ab30a..d9a5fe6ea1 100644
--- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md
+++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md
@@ -7,6 +7,7 @@ module metric-spaces.limits-of-cauchy-approximations-metric-spaces where
Imports
```agda
+open import elementary-number-theory.addition-positive-rational-numbers
open import elementary-number-theory.positive-rational-numbers
open import foundation.dependent-pair-types
@@ -20,6 +21,7 @@ open import foundation.universe-levels
open import metric-spaces.cauchy-approximations-metric-spaces
open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces
open import metric-spaces.metric-spaces
+open import metric-spaces.short-functions-metric-spaces
```
@@ -142,6 +144,34 @@ module _
( x)
```
+### The action of short maps on Cauchy approximations preserves limits
+
+```agda
+module _
+ {l1 l2 l1' l2' : Level}
+ (A : Metric-Space l1 l2) (B : Metric-Space l1' l2')
+ (f : short-function-Metric-Space A B)
+ (a : cauchy-approximation-Metric-Space A)
+ (lim : type-Metric-Space A)
+ where
+
+ abstract
+ preserves-limit-cauchy-approximation-map-short-function-Metric-Space :
+ is-limit-cauchy-approximation-Metric-Space A a lim →
+ is-limit-cauchy-approximation-Metric-Space
+ ( B)
+ ( map-short-function-cauchy-approximation-Metric-Space A B f a)
+ ( map-short-function-Metric-Space A B f lim)
+ preserves-limit-cauchy-approximation-map-short-function-Metric-Space
+ is-lim-a ε δ =
+ is-short-map-short-function-Metric-Space A B
+ ( f)
+ ( ε +ℚ⁺ δ)
+ ( map-cauchy-approximation-Metric-Space A a ε)
+ ( lim)
+ ( is-lim-a ε δ)
+```
+
## See also
- [Convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces.md)
diff --git a/src/metric-spaces/located-metric-spaces.lagda.md b/src/metric-spaces/located-metric-spaces.lagda.md
index 0da99bc734..5c1f581c70 100644
--- a/src/metric-spaces/located-metric-spaces.lagda.md
+++ b/src/metric-spaces/located-metric-spaces.lagda.md
@@ -133,6 +133,14 @@ module _
triangular-neighborhood-Located-Metric-Space =
triangular-neighborhood-Metric-Space metric-space-Located-Metric-Space
+ monotonic-neighborhood-Located-Metric-Space :
+ (x y : type-Located-Metric-Space) (d₁ d₂ : ℚ⁺) →
+ le-ℚ⁺ d₁ d₂ →
+ neighborhood-Located-Metric-Space d₁ x y →
+ neighborhood-Located-Metric-Space d₂ x y
+ monotonic-neighborhood-Located-Metric-Space =
+ monotonic-neighborhood-Metric-Space metric-space-Located-Metric-Space
+
is-located-Located-Metric-Space :
is-located-Metric-Space metric-space-Located-Metric-Space
is-located-Located-Metric-Space = pr2 X
@@ -223,3 +231,22 @@ module _
( real-dist-located-Metric-Space ,
is-nonnegative-real-dist-located-Metric-Space)
```
+
+### Located metric subspaces
+
+```agda
+module _
+ {l1 l2 l3 : Level}
+ (X : Located-Metric-Space l1 l2)
+ (S : subset-Located-Metric-Space l3 X)
+ where
+
+ subspace-Located-Metric-Space : Metric-Space (l1 ⊔ l3) l2
+ subspace-Located-Metric-Space =
+ subspace-Metric-Space (metric-space-Located-Metric-Space X) S
+
+ located-subspace-Located-Metric-Space : Located-Metric-Space (l1 ⊔ l3) l2
+ located-subspace-Located-Metric-Space =
+ ( subspace-Located-Metric-Space ,
+ λ (x , _) (y , _) → is-located-Located-Metric-Space X x y)
+```
diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md
index dbf9da826b..139b1a33aa 100644
--- a/src/real-numbers.lagda.md
+++ b/src/real-numbers.lagda.md
@@ -7,6 +7,7 @@ module real-numbers where
open import real-numbers.absolute-value-closed-intervals-real-numbers public
open import real-numbers.absolute-value-real-numbers public
+open import real-numbers.accumulation-points-subsets-real-numbers public
open import real-numbers.addition-lower-dedekind-real-numbers public
open import real-numbers.addition-nonnegative-real-numbers public
open import real-numbers.addition-real-numbers public
@@ -73,6 +74,7 @@ open import real-numbers.nonzero-real-numbers public
open import real-numbers.positive-and-negative-real-numbers public
open import real-numbers.positive-real-numbers public
open import real-numbers.powers-real-numbers public
+open import real-numbers.proper-closed-intervals-real-numbers public
open import real-numbers.raising-universe-levels-real-numbers public
open import real-numbers.rational-lower-dedekind-real-numbers public
open import real-numbers.rational-real-numbers public
@@ -84,6 +86,7 @@ open import real-numbers.saturation-inequality-nonnegative-real-numbers public
open import real-numbers.saturation-inequality-real-numbers public
open import real-numbers.series-real-numbers public
open import real-numbers.short-function-binary-maximum-real-numbers public
+open import real-numbers.short-function-binary-minimum-real-numbers public
open import real-numbers.similarity-nonnegative-real-numbers public
open import real-numbers.similarity-positive-real-numbers public
open import real-numbers.similarity-real-numbers public
diff --git a/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md b/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md
new file mode 100644
index 0000000000..31cee9ca46
--- /dev/null
+++ b/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md
@@ -0,0 +1,54 @@
+# Accumulation points of subsets of the real numbers
+
+```agda
+module real-numbers.accumulation-points-subsets-real-numbers where
+```
+
+Imports
+
+```agda
+open import foundation.propositions
+open import foundation.subtypes
+open import foundation.universe-levels
+
+open import lists.sequences
+
+open import metric-spaces.accumulation-points-subsets-located-metric-spaces
+
+open import real-numbers.dedekind-real-numbers
+open import real-numbers.located-metric-space-of-real-numbers
+open import real-numbers.subsets-real-numbers
+```
+
+
+
+## Idea
+
+An
+{{#concept "accumulation point" Disambiguation="of a subset of ℝ" Agda=accumulation-point-subset-ℝ}}
+of a [subset](real-numbers.subsets-real-numbers.md) `S` of the
+[real numbers](real-numbers.dedekind-real-numbers.md) is an
+[accumulation point](metric-spaces.accumulation-points-subsets-located-metric-spaces.md)
+of `S` in the
+[located metric space of the real numbers](real-numbers.located-metric-space-of-real-numbers.md).
+
+### Accumulation points of subsets of ℝ
+
+```agda
+module _
+ {l1 l2 : Level} (S : subset-ℝ l1 l2)
+ where
+
+ is-accumulation-point-prop-subset-ℝ : subset-ℝ (l1 ⊔ lsuc l2) l2
+ is-accumulation-point-prop-subset-ℝ =
+ is-accumulation-point-prop-subset-Located-Metric-Space
+ ( located-metric-space-ℝ l2)
+ ( S)
+
+ is-accumulation-point-subset-ℝ : ℝ l2 → UU (l1 ⊔ lsuc l2)
+ is-accumulation-point-subset-ℝ x =
+ type-Prop (is-accumulation-point-prop-subset-ℝ x)
+
+ accumulation-point-subset-ℝ : UU (l1 ⊔ lsuc l2)
+ accumulation-point-subset-ℝ = type-subtype is-accumulation-point-prop-subset-ℝ
+```
diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md
index 47a55ed6a5..5529df3497 100644
--- a/src/real-numbers/apartness-real-numbers.lagda.md
+++ b/src/real-numbers/apartness-real-numbers.lagda.md
@@ -67,6 +67,10 @@ module _
apart-le-ℝ :
{l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ x y → apart-ℝ x y
apart-le-ℝ = inl-disjunction
+
+apart-le-ℝ' :
+ {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ y x → apart-ℝ x y
+apart-le-ℝ' = inr-disjunction
```
## Properties
diff --git a/src/real-numbers/binary-maximum-real-numbers.lagda.md b/src/real-numbers/binary-maximum-real-numbers.lagda.md
index d4da7d69c0..b225ca7890 100644
--- a/src/real-numbers/binary-maximum-real-numbers.lagda.md
+++ b/src/real-numbers/binary-maximum-real-numbers.lagda.md
@@ -9,8 +9,11 @@ module real-numbers.binary-maximum-real-numbers where
Imports
```agda
+open import elementary-number-theory.inequality-rational-numbers
open import elementary-number-theory.positive-rational-numbers
+open import foundation.action-on-identifications-binary-functions
+open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.disjunction
open import foundation.empty-types
@@ -106,6 +109,11 @@ module _
( upper-real-max-ℝ)
( is-disjoint-lower-upper-max-ℝ)
( is-located-lower-upper-max-ℝ)
+
+ap-max-ℝ :
+ {l1 l2 : Level} → {x x' : ℝ l1} → x = x' →
+ {y y' : ℝ l2} → y = y' → max-ℝ x y = max-ℝ x' y'
+ap-max-ℝ = ap-binary max-ℝ
```
## Properties
@@ -375,3 +383,53 @@ module _
( is-located-lower-upper-cut-ℝ y q
@@ -64,6 +70,11 @@ subtype-closed-interval-ℝ :
subtype (l1 ⊔ l2 ⊔ l) (ℝ l)
subtype-closed-interval-ℝ = subtype-closed-interval-Large-Poset ℝ-Large-Poset
+type-closed-interval-ℝ :
+ {l1 l2 : Level} (l : Level) → closed-interval-ℝ l1 l2 → UU (l1 ⊔ l2 ⊔ lsuc l)
+type-closed-interval-ℝ l [a,b] =
+ type-subtype (subtype-closed-interval-ℝ l [a,b])
+
lower-bound-closed-interval-ℝ : {l1 l2 : Level} → closed-interval-ℝ l1 l2 → ℝ l1
lower-bound-closed-interval-ℝ =
lower-bound-closed-interval-Large-Poset ℝ-Large-Poset
@@ -161,3 +172,44 @@ complete-metric-space-unit-interval-ℝ :
complete-metric-space-unit-interval-ℝ l =
complete-metric-space-closed-interval-ℝ l unit-closed-interval-ℝ
```
+
+### The clamping function
+
+```agda
+clamp-closed-interval-ℝ :
+ {l1 l2 l3 : Level} ([a,b] : closed-interval-ℝ l1 l2) → ℝ l3 →
+ type-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b]
+clamp-closed-interval-ℝ ((a , b) , a≤b) x =
+ ( max-ℝ a (min-ℝ b x) ,
+ leq-left-max-ℝ _ _ ,
+ leq-max-leq-leq-ℝ _ _ _ a≤b (leq-left-min-ℝ b x))
+```
+
+### The clamping function is a short function
+
+```agda
+abstract
+ is-short-clamp-closed-interval-ℝ :
+ {l1 l2 l3 : Level} ([a,b] : closed-interval-ℝ l1 l2) →
+ is-short-function-Metric-Space
+ ( metric-space-ℝ l3)
+ ( metric-space-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b])
+ ( clamp-closed-interval-ℝ [a,b])
+ is-short-clamp-closed-interval-ℝ [a,b]@((a , b) , a≤b) =
+ is-short-comp-is-short-function-Metric-Space
+ ( metric-space-ℝ _)
+ ( metric-space-ℝ _)
+ ( metric-space-ℝ _)
+ ( max-ℝ a)
+ ( min-ℝ b)
+ ( is-short-function-left-max-ℝ a)
+ ( is-short-function-left-min-ℝ b)
+
+short-clamp-closed-interval-ℝ :
+ {l1 l2 l3 : Level} ([a,b] : closed-interval-ℝ l1 l2) →
+ short-function-Metric-Space
+ ( metric-space-ℝ l3)
+ ( metric-space-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b])
+short-clamp-closed-interval-ℝ [a,b] =
+ ( clamp-closed-interval-ℝ [a,b] , is-short-clamp-closed-interval-ℝ [a,b])
+```
diff --git a/src/real-numbers/isometry-addition-real-numbers.lagda.md b/src/real-numbers/isometry-addition-real-numbers.lagda.md
index 3b1ca98943..15906cfdbd 100644
--- a/src/real-numbers/isometry-addition-real-numbers.lagda.md
+++ b/src/real-numbers/isometry-addition-real-numbers.lagda.md
@@ -18,6 +18,8 @@ open import metric-spaces.cartesian-products-metric-spaces
open import metric-spaces.isometries-metric-spaces
open import metric-spaces.metric-space-of-isometries-metric-spaces
open import metric-spaces.modulated-uniformly-continuous-functions-metric-spaces
+open import metric-spaces.short-functions-metric-spaces
+open import metric-spaces.uniformly-continuous-functions-metric-spaces
open import real-numbers.addition-real-numbers
open import real-numbers.dedekind-real-numbers
@@ -94,6 +96,16 @@ module _
( metric-space-ℝ l2)
( metric-space-ℝ (l1 ⊔ l2))
isometry-right-add-ℝ = ( (λ y → add-ℝ y x) , is-isometry-right-add-ℝ)
+
+ short-left-add-ℝ :
+ short-function-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ short-left-add-ℝ =
+ short-isometry-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( isometry-left-add-ℝ)
```
### Addition is an isometry from `ℝ` to the metric space of isometries `ℝ → ℝ`
diff --git a/src/real-numbers/isometry-difference-real-numbers.lagda.md b/src/real-numbers/isometry-difference-real-numbers.lagda.md
index 73b411df6a..6b909afc88 100644
--- a/src/real-numbers/isometry-difference-real-numbers.lagda.md
+++ b/src/real-numbers/isometry-difference-real-numbers.lagda.md
@@ -13,6 +13,7 @@ open import foundation.dependent-pair-types
open import foundation.universe-levels
open import metric-spaces.isometries-metric-spaces
+open import metric-spaces.short-functions-metric-spaces
open import metric-spaces.uniformly-continuous-functions-metric-spaces
open import real-numbers.addition-real-numbers
@@ -61,6 +62,14 @@ module _
isometry-Metric-Space (metric-space-ℝ l2) (metric-space-ℝ (l1 ⊔ l2))
isometry-diff-ℝ = (diff-ℝ x , is-isometry-diff-ℝ)
+ short-diff-ℝ :
+ short-function-Metric-Space (metric-space-ℝ l2) (metric-space-ℝ (l1 ⊔ l2))
+ short-diff-ℝ =
+ short-isometry-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( isometry-diff-ℝ)
+
uniformly-continuous-diff-ℝ :
uniformly-continuous-function-Metric-Space
( metric-space-ℝ l2)
diff --git a/src/real-numbers/isometry-negation-real-numbers.lagda.md b/src/real-numbers/isometry-negation-real-numbers.lagda.md
index 3c2b449432..05c832b67f 100644
--- a/src/real-numbers/isometry-negation-real-numbers.lagda.md
+++ b/src/real-numbers/isometry-negation-real-numbers.lagda.md
@@ -20,6 +20,8 @@ open import foundation.transport-along-identifications
open import foundation.universe-levels
open import metric-spaces.isometries-metric-spaces
+open import metric-spaces.metric-spaces
+open import metric-spaces.short-functions-metric-spaces
open import real-numbers.addition-real-numbers
open import real-numbers.dedekind-real-numbers
@@ -122,3 +124,21 @@ module _
( metric-space-ℝ l1)
isometry-neg-ℝ = (neg-ℝ , is-isometry-neg-ℝ)
```
+
+### Negation on the real numbers is short
+
+```agda
+abstract
+ is-short-neg-ℝ :
+ {l : Level} →
+ is-short-function-Metric-Space
+ ( metric-space-ℝ l)
+ ( metric-space-ℝ l)
+ ( neg-ℝ)
+ is-short-neg-ℝ =
+ is-short-is-isometry-Metric-Space
+ ( metric-space-ℝ _)
+ ( metric-space-ℝ _)
+ ( neg-ℝ)
+ ( is-isometry-neg-ℝ)
+```
diff --git a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md
new file mode 100644
index 0000000000..fa15226a2a
--- /dev/null
+++ b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md
@@ -0,0 +1,376 @@
+# Proper closed intervals in the real numbers
+
+```agda
+module real-numbers.proper-closed-intervals-real-numbers where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.rational-numbers
+open import elementary-number-theory.unit-fractions-rational-numbers
+
+open import foundation.cartesian-product-types
+open import foundation.conjunction
+open import foundation.dependent-pair-types
+open import foundation.disjunction
+open import foundation.existential-quantification
+open import foundation.identity-types
+open import foundation.subtypes
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+
+open import metric-spaces.cauchy-approximations-metric-spaces
+open import metric-spaces.closed-subsets-metric-spaces
+open import metric-spaces.complete-metric-spaces
+open import metric-spaces.limits-of-cauchy-approximations-metric-spaces
+open import metric-spaces.metric-space-of-rational-numbers
+open import metric-spaces.metric-spaces
+open import metric-spaces.short-functions-metric-spaces
+open import metric-spaces.subspaces-metric-spaces
+
+open import order-theory.large-posets
+
+open import real-numbers.accumulation-points-subsets-real-numbers
+open import real-numbers.addition-real-numbers
+open import real-numbers.apartness-real-numbers
+open import real-numbers.binary-maximum-real-numbers
+open import real-numbers.binary-minimum-real-numbers
+open import real-numbers.closed-intervals-real-numbers
+open import real-numbers.dedekind-real-numbers
+open import real-numbers.difference-real-numbers
+open import real-numbers.inequality-real-numbers
+open import real-numbers.isometry-addition-real-numbers
+open import real-numbers.isometry-difference-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.positive-real-numbers
+open import real-numbers.rational-real-numbers
+open import real-numbers.similarity-real-numbers
+open import real-numbers.strict-inequality-real-numbers
+open import real-numbers.subsets-real-numbers
+```
+
+
+
+## Idea
+
+A
+{{#concept "proper closed interval" Disambiguation="in ℝ" Agda=proper-closed-interval-ℝ}}
+in the [real numbers](real-numbers.dedekind-real-numbers.md) is a
+[closed interval](real-numbers.closed-intervals-real-numbers.md) in which the
+lower bound is
+[strictly less than](real-numbers.strict-inequality-real-numbers.md) the upper
+bound.
+
+## Definition
+
+```agda
+proper-closed-interval-ℝ : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2)
+proper-closed-interval-ℝ l1 l2 = Σ (ℝ l1) (λ x → Σ (ℝ l2) (λ y → le-ℝ x y))
+
+closed-interval-proper-closed-interval-ℝ :
+ {l1 l2 : Level} → proper-closed-interval-ℝ l1 l2 → closed-interval-ℝ l1 l2
+closed-interval-proper-closed-interval-ℝ (a , b , a
@@ -128,6 +130,13 @@ module _
( metric-space-ℝ (l1 ⊔ l2))
short-left-max-ℝ =
(max-ℝ x , is-short-function-left-max-ℝ)
+
+ uniformly-continuous-left-max-ℝ : uniformly-continuous-function-ℝ l2 (l1 ⊔ l2)
+ uniformly-continuous-left-max-ℝ =
+ uniformly-continuous-short-function-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( short-left-max-ℝ)
```
### The binary maximum is a short function from `ℝ` to the metric space of short functions `ℝ → ℝ`
diff --git a/src/real-numbers/short-function-binary-minimum-real-numbers.lagda.md b/src/real-numbers/short-function-binary-minimum-real-numbers.lagda.md
new file mode 100644
index 0000000000..5ad2465841
--- /dev/null
+++ b/src/real-numbers/short-function-binary-minimum-real-numbers.lagda.md
@@ -0,0 +1,72 @@
+# The binary minimum of real numbers is a short function
+
+```agda
+{-# OPTIONS --lossy-unification #-}
+
+module real-numbers.short-function-binary-minimum-real-numbers where
+```
+
+Imports
+
+```agda
+open import foundation.dependent-pair-types
+open import foundation.universe-levels
+
+open import metric-spaces.short-functions-metric-spaces
+
+open import real-numbers.binary-maximum-real-numbers
+open import real-numbers.binary-minimum-real-numbers
+open import real-numbers.dedekind-real-numbers
+open import real-numbers.isometry-negation-real-numbers
+open import real-numbers.metric-space-of-real-numbers
+open import real-numbers.negation-real-numbers
+open import real-numbers.short-function-binary-maximum-real-numbers
+```
+
+
+
+## Idea
+
+For any `a : ℝ`, the
+[binary minimum](real-numbers.binary-minimum-real-numbers.md) with `a` is a
+[short function](metric-spaces.short-functions-metric-spaces.md) `ℝ → ℝ` for the
+[standard real metric structure](real-numbers.metric-space-of-real-numbers.md).
+
+## Proof
+
+```agda
+module _
+ {l1 l2 : Level} (x : ℝ l1)
+ where
+
+ abstract opaque
+ unfolding min-ℝ
+
+ is-short-function-left-min-ℝ :
+ is-short-function-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( min-ℝ x)
+ is-short-function-left-min-ℝ =
+ is-short-comp-is-short-function-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( neg-ℝ)
+ ( λ y → max-ℝ (neg-ℝ x) (neg-ℝ y))
+ ( is-short-neg-ℝ)
+ ( is-short-comp-is-short-function-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ ( max-ℝ (neg-ℝ x))
+ ( neg-ℝ)
+ ( is-short-function-left-max-ℝ (neg-ℝ x))
+ ( is-short-neg-ℝ))
+
+ short-left-min-ℝ :
+ short-function-Metric-Space
+ ( metric-space-ℝ l2)
+ ( metric-space-ℝ (l1 ⊔ l2))
+ short-left-min-ℝ = (min-ℝ x , is-short-function-left-min-ℝ)
+```