Skip to content

Commit 0af5657

Browse files
authored
Cauchy sequences in metric spaces (#1347)
Gives us the ability to go back and forth between Cauchy sequences and Cauchy approximations, and their limits. Naturally, this is going to be necessary for a lot of analysis built on series and sequences. Depends on #1345.
1 parent 88da6eb commit 0af5657

5 files changed

+766
-3
lines changed

src/elementary-number-theory/nonzero-natural-numbers.lagda.md

+35
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ open import elementary-number-theory.strict-inequality-natural-numbers
1717
open import foundation.coproduct-types
1818
open import foundation.dependent-pair-types
1919
open import foundation.empty-types
20+
open import foundation.equality-dependent-pair-types
2021
open import foundation.identity-types
22+
open import foundation.negated-equality
23+
open import foundation.propositions
24+
open import foundation.sections
2125
open import foundation.transport-along-identifications
2226
open import foundation.universe-levels
2327
```
@@ -57,6 +61,9 @@ nat-ℕ⁺ = nat-nonzero-ℕ
5761
5862
is-nonzero-nat-nonzero-ℕ : (n : nonzero-ℕ) → is-nonzero-ℕ (nat-nonzero-ℕ n)
5963
is-nonzero-nat-nonzero-ℕ = pr2
64+
65+
eq-nonzero-ℕ : {m n : nonzero-ℕ} → nat-nonzero-ℕ m = nat-nonzero-ℕ n → m = n
66+
eq-nonzero-ℕ m=n = eq-pair-Σ m=n (eq-is-prop is-prop-nonequal)
6067
```
6168

6269
### The nonzero natural number `1`
@@ -86,6 +93,24 @@ pr1 (succ-nonzero-ℕ' n) = succ-ℕ n
8693
pr2 (succ-nonzero-ℕ' n) = is-nonzero-succ-ℕ n
8794
```
8895

96+
### The predecessor function from the nonzero natural numbers to the natural numbers
97+
98+
```agda
99+
pred-nonzero-ℕ : nonzero-ℕ → ℕ
100+
pred-nonzero-ℕ (succ-ℕ n , _) = n
101+
pred-nonzero-ℕ (zero-ℕ , H) = ex-falso (H refl)
102+
103+
pred-ℕ⁺ : nonzero-ℕ → ℕ
104+
pred-ℕ⁺ = pred-nonzero-ℕ
105+
106+
is-section-succ-nonzero-ℕ' : is-section succ-nonzero-ℕ' pred-nonzero-ℕ
107+
is-section-succ-nonzero-ℕ' (zero-ℕ , H) = ex-falso (H refl)
108+
is-section-succ-nonzero-ℕ' (succ-ℕ n , _) = eq-nonzero-ℕ refl
109+
110+
is-section-pred-nonzero-ℕ : is-section pred-nonzero-ℕ succ-nonzero-ℕ'
111+
is-section-pred-nonzero-ℕ n = refl
112+
```
113+
89114
### The quotient of a nonzero natural number by a divisor
90115

91116
```agda
@@ -146,3 +171,13 @@ le-left-add-nat-ℕ⁺ m (n , n≠0) =
146171
( right-unit-law-add-ℕ m)
147172
( preserves-le-left-add-ℕ m zero-ℕ n (le-is-nonzero-ℕ n n≠0))
148173
```
174+
175+
### The predecessor function from the nonzero natural numbers reflects inequality
176+
177+
```agda
178+
reflects-leq-pred-nonzero-ℕ :
179+
(m n : ℕ⁺) → leq-ℕ (pred-ℕ⁺ m) (pred-ℕ⁺ n) → leq-ℕ⁺ m n
180+
reflects-leq-pred-nonzero-ℕ (succ-ℕ m , _) (succ-ℕ n , _) m≤n = m≤n
181+
reflects-leq-pred-nonzero-ℕ (zero-ℕ , H) _ = ex-falso (H refl)
182+
reflects-leq-pred-nonzero-ℕ (succ-ℕ _ , _) (zero-ℕ , H) = ex-falso (H refl)
183+
```

src/elementary-number-theory/positive-rational-numbers.lagda.md

+21-3
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,19 @@ is-prop-le-ℚ⁺ : (x y : ℚ⁺) → is-prop (le-ℚ⁺ x y)
468468
is-prop-le-ℚ⁺ x y = is-prop-type-Prop (le-prop-ℚ⁺ x y)
469469
```
470470

471+
### The inequality on positive rational numbers
472+
473+
```agda
474+
leq-prop-ℚ⁺ : ℚ⁺ → ℚ⁺ → Prop lzero
475+
leq-prop-ℚ⁺ x y = leq-ℚ-Prop (rational-ℚ⁺ x) (rational-ℚ⁺ y)
476+
477+
leq-ℚ⁺ : ℚ⁺ → ℚ⁺ → UU lzero
478+
leq-ℚ⁺ x y = type-Prop (leq-prop-ℚ⁺ x y)
479+
480+
is-prop-leq-ℚ⁺ : (x y : ℚ⁺) → is-prop (leq-ℚ⁺ x y)
481+
is-prop-leq-ℚ⁺ x y = is-prop-type-Prop (leq-prop-ℚ⁺ x y)
482+
```
483+
471484
### The sum of two positive rational numbers is greater than each of them
472485

473486
```agda
@@ -685,10 +698,10 @@ module _
685698

686699
```agda
687700
abstract
688-
double-le-ℚ⁺ :
701+
bound-double-le-ℚ⁺ :
689702
(p : ℚ⁺) →
690-
exists ℚ⁺ (λ q → le-prop-ℚ⁺ (q +ℚ⁺ q) p)
691-
double-le-ℚ⁺ p = unit-trunc-Prop dependent-pair-result
703+
Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p)
704+
bound-double-le-ℚ⁺ p = dependent-pair-result
692705
where
693706
q : ℚ⁺
694707
q = left-summand-split-ℚ⁺ p
@@ -710,6 +723,11 @@ abstract
710723
{ rational-ℚ⁺ r}
711724
( le-left-min-ℚ⁺ q r)
712725
( le-right-min-ℚ⁺ q r))
726+
727+
double-le-ℚ⁺ :
728+
(p : ℚ⁺) →
729+
exists ℚ⁺ (λ q → le-prop-ℚ⁺ (q +ℚ⁺ q) p)
730+
double-le-ℚ⁺ p = unit-trunc-Prop (bound-double-le-ℚ⁺ p)
713731
```
714732

715733
### Addition with a positive rational number is an increasing map

src/metric-spaces.lagda.md

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ open import metric-spaces.category-of-metric-spaces-and-isometries public
4949
open import metric-spaces.category-of-metric-spaces-and-short-functions public
5050
open import metric-spaces.cauchy-approximations-metric-spaces public
5151
open import metric-spaces.cauchy-approximations-premetric-spaces public
52+
open import metric-spaces.cauchy-sequences-complete-metric-spaces public
53+
open import metric-spaces.cauchy-sequences-metric-spaces public
5254
open import metric-spaces.closed-premetric-structures public
5355
open import metric-spaces.complete-metric-spaces public
5456
open import metric-spaces.convergent-cauchy-approximations-metric-spaces public
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# Cauchy sequences in complete metric spaces
2+
3+
```agda
4+
{-# OPTIONS --lossy-unification #-}
5+
6+
module metric-spaces.cauchy-sequences-complete-metric-spaces where
7+
```
8+
9+
<details><summary>Imports</summary>
10+
11+
```agda
12+
open import foundation.dependent-pair-types
13+
open import foundation.functoriality-dependent-pair-types
14+
open import foundation.universe-levels
15+
16+
open import metric-spaces.cauchy-approximations-metric-spaces
17+
open import metric-spaces.cauchy-sequences-metric-spaces
18+
open import metric-spaces.complete-metric-spaces
19+
open import metric-spaces.convergent-cauchy-approximations-metric-spaces
20+
open import metric-spaces.metric-spaces
21+
```
22+
23+
</details>
24+
25+
## Idea
26+
27+
A [Cauchy sequence](metric-spaces.cauchy-sequences-metric-spaces.md) in a
28+
[complete metric space](metric-spaces.complete-metric-spaces.md) is a Cauchy
29+
sequence in the underlying [metric space](metric-spaces.metric-spaces.md).
30+
Cauchy sequences in complete metric spaces always have a limit.
31+
32+
## Definition
33+
34+
```agda
35+
module _
36+
{l1 l2 : Level} (M : Complete-Metric-Space l1 l2)
37+
where
38+
39+
cauchy-sequence-Complete-Metric-Space : UU (l1 ⊔ l2)
40+
cauchy-sequence-Complete-Metric-Space =
41+
cauchy-sequence-Metric-Space (metric-space-Complete-Metric-Space M)
42+
43+
is-limit-cauchy-sequence-Complete-Metric-Space :
44+
cauchy-sequence-Complete-Metric-Space → type-Complete-Metric-Space M → UU l2
45+
is-limit-cauchy-sequence-Complete-Metric-Space x l =
46+
is-limit-cauchy-sequence-Metric-Space
47+
( metric-space-Complete-Metric-Space M)
48+
( x)
49+
( l)
50+
```
51+
52+
## Properties
53+
54+
### Every Cauchy sequence in a complete metric space has a limit
55+
56+
```agda
57+
module _
58+
{l1 l2 : Level} (M : Complete-Metric-Space l1 l2)
59+
(x : cauchy-sequence-Complete-Metric-Space M)
60+
where
61+
62+
limit-cauchy-sequence-Complete-Metric-Space : type-Complete-Metric-Space M
63+
limit-cauchy-sequence-Complete-Metric-Space =
64+
pr1
65+
( is-complete-metric-space-Complete-Metric-Space
66+
( M)
67+
( cauchy-approximation-cauchy-sequence-Metric-Space
68+
( metric-space-Complete-Metric-Space M)
69+
( x)))
70+
71+
is-limit-limit-cauchy-sequence-Complete-Metric-Space :
72+
is-limit-cauchy-sequence-Complete-Metric-Space
73+
( M)
74+
( x)
75+
( limit-cauchy-sequence-Complete-Metric-Space)
76+
is-limit-limit-cauchy-sequence-Complete-Metric-Space =
77+
is-limit-cauchy-sequence-limit-cauchy-approximation-cauchy-sequence-Metric-Space
78+
( metric-space-Complete-Metric-Space M)
79+
( x)
80+
( limit-cauchy-sequence-Complete-Metric-Space)
81+
( pr2
82+
( is-complete-metric-space-Complete-Metric-Space
83+
( M)
84+
( cauchy-approximation-cauchy-sequence-Metric-Space
85+
( metric-space-Complete-Metric-Space M)
86+
( x))))
87+
88+
has-limit-cauchy-sequence-Complete-Metric-Space :
89+
has-limit-cauchy-sequence-Metric-Space
90+
( metric-space-Complete-Metric-Space M)
91+
( x)
92+
has-limit-cauchy-sequence-Complete-Metric-Space =
93+
limit-cauchy-sequence-Complete-Metric-Space ,
94+
is-limit-limit-cauchy-sequence-Complete-Metric-Space
95+
```
96+
97+
### If every Cauchy sequence has a limit in a metric space, the metric space is complete
98+
99+
```agda
100+
module _
101+
{l1 l2 : Level} (M : Metric-Space l1 l2)
102+
where
103+
104+
cauchy-sequences-have-limits-Metric-Space : UU (l1 ⊔ l2)
105+
cauchy-sequences-have-limits-Metric-Space =
106+
(x : cauchy-sequence-Metric-Space M) →
107+
has-limit-cauchy-sequence-Metric-Space M x
108+
109+
module _
110+
{l1 l2 : Level} (M : Metric-Space l1 l2)
111+
(H : cauchy-sequences-have-limits-Metric-Space M)
112+
where
113+
114+
is-complete-metric-space-cauchy-sequences-have-limits-Metric-Space :
115+
is-complete-Metric-Space M
116+
is-complete-metric-space-cauchy-sequences-have-limits-Metric-Space x =
117+
tot
118+
( is-limit-cauchy-approximation-limit-cauchy-sequence-cauchy-approximation-Metric-Space
119+
( M)
120+
( x))
121+
( H (cauchy-sequence-cauchy-approximation-Metric-Space M x))
122+
123+
complete-metric-space-cauchy-sequences-have-limits-Metric-Space :
124+
Complete-Metric-Space l1 l2
125+
complete-metric-space-cauchy-sequences-have-limits-Metric-Space =
126+
M , is-complete-metric-space-cauchy-sequences-have-limits-Metric-Space
127+
```

0 commit comments

Comments
 (0)