Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cauchy sequences in metric spaces #1347

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
87543f9
Add a bunch of stuff about reciprocals
lowasser Feb 23, 2025
84d694e
Break out a section
lowasser Feb 23, 2025
6280bfe
Begin defining Cauchy sequences and their limits
lowasser Feb 23, 2025
2ee26da
Add a bunch of stuff about reciprocals
lowasser Feb 23, 2025
aa61680
Progress
lowasser Feb 23, 2025
0bce621
Break out a section
lowasser Feb 23, 2025
7b7a27c
Process
lowasser Feb 23, 2025
6c7068e
Wrap up
lowasser Feb 23, 2025
a190827
make pre-commit
lowasser Feb 23, 2025
962d7b6
Merge branch 'reciprocals' into cauchy-sequence-to-cauchy-approximation
lowasser Feb 23, 2025
23f4a04
make pre-commit
lowasser Feb 23, 2025
4a8c2c3
Link typo
lowasser Feb 23, 2025
7e17e0a
Factor out unit fractions file
lowasser Feb 25, 2025
bdb5085
make pre-commit
lowasser Feb 25, 2025
35ea4bf
Simplifications
lowasser Feb 25, 2025
a6136b8
make pre-commit
lowasser Feb 25, 2025
74efa30
Merge branch 'master' into reciprocals
lowasser Feb 25, 2025
5a803b6
Merge branch 'master' into cauchy-sequence-to-cauchy-approximation
lowasser Feb 26, 2025
16c67de
Merge branch 'reciprocals' into cauchy-sequence-to-cauchy-approximation
lowasser Feb 26, 2025
5ba1f8a
Updates and make pre-commit
lowasser Feb 26, 2025
a84ab80
Merge remote-tracking branch 'origin/cauchy-sequence-to-cauchy-approx…
lowasser Feb 26, 2025
ebd4d06
Rewrap
lowasser Feb 26, 2025
cc41f76
Make many things abstract
lowasser Feb 26, 2025
a486e08
Eliminate many lets
lowasser Feb 26, 2025
54dd27b
Revert multiplicative group
lowasser Feb 26, 2025
de72b0a
Merge branch 'reciprocals' into cauchy-sequence-to-cauchy-approximation
lowasser Feb 26, 2025
0035a06
wrapping
lowasser Feb 26, 2025
d370bdf
Apply suggestions from code review
lowasser Feb 28, 2025
966666d
Update nonzero-natural-numbers.lagda.md
lowasser Feb 28, 2025
49e72f5
Update nonzero-natural-numbers.lagda.md
lowasser Feb 28, 2025
1819fff
Merge branch 'master' into reciprocals
lowasser Feb 28, 2025
f59d46e
make pre-commit
lowasser Feb 28, 2025
919bc7f
Fix typo
lowasser Feb 28, 2025
f9da0b4
Merge branch 'reciprocals' into cauchy-sequence-to-cauchy-approximation
lowasser Feb 28, 2025
4335da2
Merge branch 'master' into cauchy-sequence-to-cauchy-approximation
lowasser Mar 4, 2025
c4619f5
Update nonzero-natural-numbers.lagda.md
lowasser Mar 4, 2025
8266f0a
Apply suggestions from code review
lowasser Mar 5, 2025
693e339
Respond to review feedback
lowasser Mar 5, 2025
f21201c
Respond to review feedback
lowasser Mar 5, 2025
93e1447
Fix precommits
lowasser Mar 5, 2025
f1341bd
Fix typo
lowasser Mar 6, 2025
016bea6
Fix typo
lowasser Mar 6, 2025
3469c7e
Fix typo
lowasser Mar 6, 2025
528961e
Merge branch 'master' into cauchy-sequence-to-cauchy-approximation
lowasser Mar 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions src/elementary-number-theory/nonzero-natural-numbers.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ open import elementary-number-theory.strict-inequality-natural-numbers
open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.empty-types
open import foundation.equality-dependent-pair-types
open import foundation.identity-types
open import foundation.negated-equality
open import foundation.propositions
open import foundation.sections
open import foundation.transport-along-identifications
open import foundation.universe-levels
```
Expand Down Expand Up @@ -57,6 +61,9 @@ nat-ℕ⁺ = nat-nonzero-ℕ

is-nonzero-nat-nonzero-ℕ : (n : nonzero-ℕ) → is-nonzero-ℕ (nat-nonzero-ℕ n)
is-nonzero-nat-nonzero-ℕ = pr2

eq-nonzero-ℕ : {m n : nonzero-ℕ} → nat-nonzero-ℕ m = nat-nonzero-ℕ n → m = n
eq-nonzero-ℕ m=n = eq-pair-Σ m=n (eq-is-prop is-prop-nonequal)
```

### The nonzero natural number `1`
Expand Down Expand Up @@ -86,6 +93,24 @@ pr1 (succ-nonzero-ℕ' n) = succ-ℕ n
pr2 (succ-nonzero-ℕ' n) = is-nonzero-succ-ℕ n
```

### The predecessor function from the nonzero natural numbers to the natural numbers

```agda
pred-nonzero-ℕ : nonzero-ℕ → ℕ
pred-nonzero-ℕ (succ-ℕ n , _) = n
pred-nonzero-ℕ (zero-ℕ , H) = ex-falso (H refl)

pred-ℕ⁺ : nonzero-ℕ → ℕ
pred-ℕ⁺ = pred-nonzero-ℕ

is-section-succ-nonzero-ℕ' : is-section succ-nonzero-ℕ' pred-nonzero-ℕ
is-section-succ-nonzero-ℕ' (zero-ℕ , H) = ex-falso (H refl)
is-section-succ-nonzero-ℕ' (succ-ℕ n , _) = eq-nonzero-ℕ refl

is-section-pred-nonzero-ℕ : is-section pred-nonzero-ℕ succ-nonzero-ℕ'
is-section-pred-nonzero-ℕ n = refl
```

### The quotient of a nonzero natural number by a divisor

```agda
Expand Down Expand Up @@ -146,3 +171,13 @@ le-left-add-nat-ℕ⁺ m (n , n≠0) =
( right-unit-law-add-ℕ m)
( preserves-le-left-add-ℕ m zero-ℕ n (le-is-nonzero-ℕ n n≠0))
```

### The predecessor function from the nonzero natural numbers reflects inequality

```agda
reflects-leq-pred-nonzero-ℕ :
(m n : ℕ⁺) → leq-ℕ (pred-ℕ⁺ m) (pred-ℕ⁺ n) → leq-ℕ⁺ m n
reflects-leq-pred-nonzero-ℕ (succ-ℕ m , _) (succ-ℕ n , _) m≤n = m≤n
reflects-leq-pred-nonzero-ℕ (zero-ℕ , H) _ = ex-falso (H refl)
reflects-leq-pred-nonzero-ℕ (succ-ℕ _ , _) (zero-ℕ , H) = ex-falso (H refl)
```
24 changes: 21 additions & 3 deletions src/elementary-number-theory/positive-rational-numbers.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,19 @@ is-prop-le-ℚ⁺ : (x y : ℚ⁺) → is-prop (le-ℚ⁺ x y)
is-prop-le-ℚ⁺ x y = is-prop-type-Prop (le-prop-ℚ⁺ x y)
```

### The inequality on positive rational numbers

```agda
leq-prop-ℚ⁺ : ℚ⁺ → ℚ⁺ → Prop lzero
leq-prop-ℚ⁺ x y = leq-ℚ-Prop (rational-ℚ⁺ x) (rational-ℚ⁺ y)

leq-ℚ⁺ : ℚ⁺ → ℚ⁺ → UU lzero
leq-ℚ⁺ x y = type-Prop (leq-prop-ℚ⁺ x y)

is-prop-leq-ℚ⁺ : (x y : ℚ⁺) → is-prop (leq-ℚ⁺ x y)
is-prop-leq-ℚ⁺ x y = is-prop-type-Prop (leq-prop-ℚ⁺ x y)
```

### The sum of two positive rational numbers is greater than each of them

```agda
Expand Down Expand Up @@ -685,10 +698,10 @@ module _

```agda
abstract
double-le-ℚ⁺ :
bound-double-le-ℚ⁺ :
(p : ℚ⁺) →
exists ℚ⁺ (λ q → le-prop-ℚ⁺ (q +ℚ⁺ q) p)
double-le-ℚ⁺ p = unit-trunc-Prop dependent-pair-result
Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p)
bound-double-le-ℚ⁺ p = dependent-pair-result
where
q : ℚ⁺
q = left-summand-split-ℚ⁺ p
Expand All @@ -710,6 +723,11 @@ abstract
{ rational-ℚ⁺ r}
( le-left-min-ℚ⁺ q r)
( le-right-min-ℚ⁺ q r))

double-le-ℚ⁺ :
(p : ℚ⁺) →
exists ℚ⁺ (λ q → le-prop-ℚ⁺ (q +ℚ⁺ q) p)
double-le-ℚ⁺ p = unit-trunc-Prop (bound-double-le-ℚ⁺ p)
```

### Addition with a positive rational number is an increasing map
Expand Down
2 changes: 2 additions & 0 deletions src/metric-spaces.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ open import metric-spaces.category-of-metric-spaces-and-isometries public
open import metric-spaces.category-of-metric-spaces-and-short-functions public
open import metric-spaces.cauchy-approximations-metric-spaces public
open import metric-spaces.cauchy-approximations-premetric-spaces public
open import metric-spaces.cauchy-sequences-complete-metric-spaces public
open import metric-spaces.cauchy-sequences-metric-spaces public
open import metric-spaces.closed-premetric-structures public
open import metric-spaces.complete-metric-spaces public
open import metric-spaces.convergent-cauchy-approximations-metric-spaces public
Expand Down
127 changes: 127 additions & 0 deletions src/metric-spaces/cauchy-sequences-complete-metric-spaces.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# Cauchy sequences in complete metric spaces

```agda
{-# OPTIONS --lossy-unification #-}

module metric-spaces.cauchy-sequences-complete-metric-spaces where
```

<details><summary>Imports</summary>

```agda
open import foundation.dependent-pair-types
open import foundation.functoriality-dependent-pair-types
open import foundation.universe-levels

open import metric-spaces.cauchy-approximations-metric-spaces
open import metric-spaces.cauchy-sequences-metric-spaces
open import metric-spaces.complete-metric-spaces
open import metric-spaces.convergent-cauchy-approximations-metric-spaces
open import metric-spaces.metric-spaces
```

</details>

## Idea

A [Cauchy sequence](metric-spaces.cauchy-sequences-metric-spaces.md) in a
[complete metric space](metric-spaces.complete-metric-spaces.md) is a Cauchy
sequence in the underlying [metric space](metric-spaces.metric-spaces.md).
Cauchy sequences in complete metric spaces always have a limit.

## Definition

```agda
module _
{l1 l2 : Level} (M : Complete-Metric-Space l1 l2)
where

cauchy-sequence-Complete-Metric-Space : UU (l1 ⊔ l2)
cauchy-sequence-Complete-Metric-Space =
cauchy-sequence-Metric-Space (metric-space-Complete-Metric-Space M)

is-limit-cauchy-sequence-Complete-Metric-Space :
cauchy-sequence-Complete-Metric-Space → type-Complete-Metric-Space M → UU l2
is-limit-cauchy-sequence-Complete-Metric-Space x l =
is-limit-cauchy-sequence-Metric-Space
( metric-space-Complete-Metric-Space M)
( x)
( l)
```

## Properties

### Every Cauchy sequence in a complete metric space has a limit

```agda
module _
{l1 l2 : Level} (M : Complete-Metric-Space l1 l2)
(x : cauchy-sequence-Complete-Metric-Space M)
where

limit-cauchy-sequence-Complete-Metric-Space : type-Complete-Metric-Space M
limit-cauchy-sequence-Complete-Metric-Space =
pr1
( is-complete-metric-space-Complete-Metric-Space
( M)
( cauchy-approximation-cauchy-sequence-Metric-Space
( metric-space-Complete-Metric-Space M)
( x)))

is-limit-limit-cauchy-sequence-Complete-Metric-Space :
is-limit-cauchy-sequence-Complete-Metric-Space
( M)
( x)
( limit-cauchy-sequence-Complete-Metric-Space)
is-limit-limit-cauchy-sequence-Complete-Metric-Space =
is-limit-cauchy-sequence-limit-cauchy-approximation-cauchy-sequence-Metric-Space
( metric-space-Complete-Metric-Space M)
( x)
( limit-cauchy-sequence-Complete-Metric-Space)
( pr2
( is-complete-metric-space-Complete-Metric-Space
( M)
( cauchy-approximation-cauchy-sequence-Metric-Space
( metric-space-Complete-Metric-Space M)
( x))))

has-limit-cauchy-sequence-Complete-Metric-Space :
has-limit-cauchy-sequence-Metric-Space
( metric-space-Complete-Metric-Space M)
( x)
has-limit-cauchy-sequence-Complete-Metric-Space =
limit-cauchy-sequence-Complete-Metric-Space ,
is-limit-limit-cauchy-sequence-Complete-Metric-Space
```

### If every Cauchy sequence has a limit in a metric space, the metric space is complete

```agda
module _
{l1 l2 : Level} (M : Metric-Space l1 l2)
where

cauchy-sequences-have-limits-Metric-Space : UU (l1 ⊔ l2)
cauchy-sequences-have-limits-Metric-Space =
(x : cauchy-sequence-Metric-Space M) →
has-limit-cauchy-sequence-Metric-Space M x

module _
{l1 l2 : Level} (M : Metric-Space l1 l2)
(H : cauchy-sequences-have-limits-Metric-Space M)
where

is-complete-metric-space-cauchy-sequences-have-limits-Metric-Space :
is-complete-Metric-Space M
is-complete-metric-space-cauchy-sequences-have-limits-Metric-Space x =
tot
( is-limit-cauchy-approximation-limit-cauchy-sequence-cauchy-approximation-Metric-Space
( M)
( x))
( H (cauchy-sequence-cauchy-approximation-Metric-Space M x))

complete-metric-space-cauchy-sequences-have-limits-Metric-Space :
Complete-Metric-Space l1 l2
complete-metric-space-cauchy-sequences-have-limits-Metric-Space =
M , is-complete-metric-space-cauchy-sequences-have-limits-Metric-Space
```
Loading