From d3cea33402d7d41cadbe5af8e8be7c86408fdd72 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 29 Jan 2025 09:48:57 -0800 Subject: [PATCH 001/227] Add lowasser to CONTRIBUTORS.toml --- CONTRIBUTORS.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CONTRIBUTORS.toml b/CONTRIBUTORS.toml index 34027f6812..e895ae5ed3 100644 --- a/CONTRIBUTORS.toml +++ b/CONTRIBUTORS.toml @@ -252,3 +252,8 @@ github = "djspacewhale" displayName = "Job Petrovčič" usernames = [ "Job Petrovčič", "JobPetrovcic" ] github = "JobPetrovcic" + +[[contributors]] +displayName = "Louis Wasserman" +usernames = [ "Louis Wasserman" ] +github = "lowasser" From 75f8ac5b57517e9ccf31c35142d5331342a3f765 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 30 Jan 2025 13:46:09 -0800 Subject: [PATCH 002/227] Define and begin proving the Archimedean property of the natural numbers --- .../archimedean-natural-numbers.lagda.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/elementary-number-theory/archimedean-natural-numbers.lagda.md diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md new file mode 100644 index 0000000000..3cb1278401 --- /dev/null +++ b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md @@ -0,0 +1,32 @@ +# Addition on the natural numbers + +```agda +module elementary-number-theory.archimedean-natural-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.equality-natural-numbers +open import elementary-number-theory.euclidean-division-natural-numbers +open import elementary-number-theory.multiplication-natural-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.nonzero-natural-numbers +open import elementary-number-theory.strict-inequality-natural-numbers + +open import foundation.dependent-pair-types +``` + +
+ +## Definition + +```agda +abstract + archimedean-property-ℕ : + (x : nonzero-ℕ) → + (y : ℕ) → + Σ ℕ (λ n → le-ℕ y (n *ℕ nat-nonzero-ℕ x)) + archimedean-property-ℕ (x , nonzero-x) y = + (succ-ℕ (quotient-euclidean-division-ℕ x y) , {! !}) +``` From 448e9d47c9d1d446a52d1d2d8679721452f628cd Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 30 Jan 2025 13:54:31 -0800 Subject: [PATCH 003/227] Prove that strict inequality on natural numbers is invariant by translation --- .../strict-inequality-natural-numbers.lagda.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md index bcc199912a..568151f868 100644 --- a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.inequality-natural-numbers open import elementary-number-theory.multiplication-natural-numbers open import elementary-number-theory.natural-numbers +open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types open import foundation.coproduct-types @@ -324,3 +325,16 @@ le-leq-neq-ℕ {succ-ℕ x} {succ-ℕ y} l f = le-one-mul-ℕ : (x y : ℕ) → 1 <-ℕ x → 1 <-ℕ y → 1 <-ℕ (x *ℕ y) le-one-mul-ℕ (succ-ℕ (succ-ℕ x)) (succ-ℕ (succ-ℕ y)) star star = star ``` + +### Strict inequality on the natural numbers is invariant by translation + +```agda +eq-translate-right-le-ℕ : (z x y : ℕ) → le-ℕ (x +ℕ z) (y +ℕ z) = le-ℕ x y +eq-translate-right-le-ℕ zero-ℕ x y = refl +eq-translate-right-le-ℕ (succ-ℕ z) x y = eq-translate-right-le-ℕ z x y + +eq-translate-left-le-ℕ : (z x y : ℕ) → le-ℕ (z +ℕ x) (z +ℕ y) = le-ℕ x y +eq-translate-left-le-ℕ z x y = + ap-binary le-ℕ (commutative-add-ℕ z x) (commutative-add-ℕ z y) ∙ + eq-translate-right-le-ℕ z x y +``` From c9353787d687302b2ced2fcd746ae81146c870e7 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 30 Jan 2025 14:05:00 -0800 Subject: [PATCH 004/227] Show preservation of strict inequality by addition on naturals --- ...strict-inequality-natural-numbers.lagda.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md index 568151f868..7ce69317a6 100644 --- a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md @@ -14,6 +14,7 @@ open import elementary-number-theory.natural-numbers open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions +open import foundation.binary-transport open import foundation.cartesian-product-types open import foundation.coproduct-types open import foundation.decidable-types @@ -338,3 +339,28 @@ eq-translate-left-le-ℕ z x y = ap-binary le-ℕ (commutative-add-ℕ z x) (commutative-add-ℕ z y) ∙ eq-translate-right-le-ℕ z x y ``` + +### Addition on the natural numbers preserves strict inequality + +```agda +preserves-le-right-add-ℕ : (z x y : ℕ) → le-ℕ x y → le-ℕ (x +ℕ z) (y +ℕ z) +preserves-le-right-add-ℕ zero-ℕ x y I = I +preserves-le-right-add-ℕ (succ-ℕ z) x y I = preserves-le-right-add-ℕ z x y I + +preserves-le-left-add-ℕ : (z x y : ℕ) → le-ℕ x y → le-ℕ (z +ℕ x) (z +ℕ y) +preserves-le-left-add-ℕ z x y I = + binary-tr + le-ℕ + (commutative-add-ℕ x z) + (commutative-add-ℕ y z) + (preserves-le-right-add-ℕ z x y I) + +preserves-le-add-ℕ : {a b c d : ℕ} → le-ℕ a b → le-ℕ c d → le-ℕ (a +ℕ c) (b +ℕ d) +preserves-le-add-ℕ {a} {b} {c} {d} H K = + transitive-le-ℕ + (a +ℕ c) + (b +ℕ c) + (b +ℕ d) + (preserves-le-right-add-ℕ c a b H) + (preserves-le-left-add-ℕ b c d K) +``` From a4679aa05a99f55161b4cb0610fa3c5ae936e7ca Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 30 Jan 2025 14:14:57 -0800 Subject: [PATCH 005/227] Prove the Archimedean property of the natural numbers. --- .../archimedean-natural-numbers.lagda.md | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md index 3cb1278401..805e5f4bc0 100644 --- a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md @@ -1,4 +1,4 @@ -# Addition on the natural numbers +# The Archimedean property of the natural numbers ```agda module elementary-number-theory.archimedean-natural-numbers where @@ -15,18 +15,32 @@ open import elementary-number-theory.nonzero-natural-numbers open import elementary-number-theory.strict-inequality-natural-numbers open import foundation.dependent-pair-types +open import foundation.transport-along-identifications ``` ## Definition +The Archimedean property of the natural numbers is that for any nonzero natural number `x` and natural number `y`, +there is an `n : ℕ` such that `y < n *ℕ x`. + ```agda abstract archimedean-property-ℕ : - (x : nonzero-ℕ) → - (y : ℕ) → - Σ ℕ (λ n → le-ℕ y (n *ℕ nat-nonzero-ℕ x)) - archimedean-property-ℕ (x , nonzero-x) y = - (succ-ℕ (quotient-euclidean-division-ℕ x y) , {! !}) + (x y : ℕ) → is-nonzero-ℕ x → Σ ℕ (λ n → le-ℕ y (n *ℕ x)) + archimedean-property-ℕ x y nonzero-x = + (succ-ℕ q , + tr + (λ z → le-ℕ z (succ-ℕ q *ℕ x)) + (eq-euclidean-division-ℕ x y) + (preserves-le-left-add-ℕ + (q *ℕ x) + r + x + (strict-upper-bound-remainder-euclidean-division-ℕ x y nonzero-x))) + where q : ℕ + q = quotient-euclidean-division-ℕ x y + r : ℕ + r = remainder-euclidean-division-ℕ x y ``` From f60f71f602e5328783eee7e3679e97a6e1e4c536 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 30 Jan 2025 15:16:22 -0800 Subject: [PATCH 006/227] Prove the Archimedean property of the integers --- .../archimedean-integers.lagda.md | 62 +++++++++++++++++++ .../positive-and-negative-integers.lagda.md | 11 ++++ .../strict-inequality-integers.lagda.md | 22 +++++++ 3 files changed, 95 insertions(+) create mode 100644 src/elementary-number-theory/archimedean-integers.lagda.md diff --git a/src/elementary-number-theory/archimedean-integers.lagda.md b/src/elementary-number-theory/archimedean-integers.lagda.md new file mode 100644 index 0000000000..7143e4004f --- /dev/null +++ b/src/elementary-number-theory/archimedean-integers.lagda.md @@ -0,0 +1,62 @@ +# The Archimedean property of the integers + +```agda +module elementary-number-theory.archimedean-integers where +``` + +
Imports + +```agda +open import elementary-number-theory.archimedean-natural-numbers +open import elementary-number-theory.integers +open import elementary-number-theory.multiplication-integers +open import elementary-number-theory.multiplication-natural-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.positive-and-negative-integers +open import elementary-number-theory.positive-integers +open import elementary-number-theory.strict-inequality-integers + +open import foundation.action-on-identifications-functions +open import foundation.binary-transport +open import foundation.cartesian-product-types +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.unit-type +``` + +
+ +## Definition + +The Archimedean property of the integers is that for any positive integer `x` and integer `y`, +there is an `n : ℕ` such that `y < int-ℕ n *ℤ x`. + +```agda +archimedean-property-ℤ : (x y : ℤ) → is-positive-ℤ x → Σ ℕ (λ n → le-ℤ y (int-ℕ n *ℤ x)) +archimedean-property-ℤ x y pos-x with decide-sign-ℤ {y} +... | inl neg-y = zero-ℕ , le-zero-is-negative-ℤ y neg-y +... | inr (inl refl) = 1 , le-zero-is-positive-ℤ x pos-x +... | inr (inr pos-y) = + ind-Σ + (λ nx (nonzero-nx , nx=x) → + ind-Σ + (λ ny (_ , ny=y) → + ind-Σ + (λ n y Date: Thu, 30 Jan 2025 15:23:02 -0800 Subject: [PATCH 007/227] Add Wikipedia link. --- .../archimedean-natural-numbers.lagda.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md index 805e5f4bc0..87cb819769 100644 --- a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md @@ -44,3 +44,8 @@ abstract r : ℕ r = remainder-euclidean-division-ℕ x y ``` + +## External links + +- [Archimedean property](https://en.wikipedia.org/wiki/Archimedean_property) + at Wikipedia From 8d6ed90ba2e3e8a6212b0f32643e4007a0af977d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 30 Jan 2025 15:23:34 -0800 Subject: [PATCH 008/227] Add Wikipedia link. --- src/elementary-number-theory/archimedean-integers.lagda.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/elementary-number-theory/archimedean-integers.lagda.md b/src/elementary-number-theory/archimedean-integers.lagda.md index 7143e4004f..10488a4719 100644 --- a/src/elementary-number-theory/archimedean-integers.lagda.md +++ b/src/elementary-number-theory/archimedean-integers.lagda.md @@ -60,3 +60,8 @@ archimedean-property-ℤ x y pos-x with decide-sign-ℤ {y} Σ ℕ (λ n → is-nonzero-ℕ n × (int-ℕ n = z)) pos-ℤ-to-ℕ (inr (inr n)) H = succ-ℕ n , (λ ()) , refl ``` + +## External links + +- [Archimedean property](https://en.wikipedia.org/wiki/Archimedean_property) + at Wikipedia From caa9ebce25f4c17e5b29d2d10aca1631033fdacc Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 30 Jan 2025 15:54:02 -0800 Subject: [PATCH 009/227] Prove the Archimedean property on integer fractions. --- .../archimedean-integer-fractions.lagda.md | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/elementary-number-theory/archimedean-integer-fractions.lagda.md diff --git a/src/elementary-number-theory/archimedean-integer-fractions.lagda.md b/src/elementary-number-theory/archimedean-integer-fractions.lagda.md new file mode 100644 index 0000000000..82cef0a17b --- /dev/null +++ b/src/elementary-number-theory/archimedean-integer-fractions.lagda.md @@ -0,0 +1,52 @@ +# The Archimedean property of integer fractions + +```agda +module elementary-number-theory.archimedean-integer-fractions where +``` + +
Imports + +```agda +open import elementary-number-theory.archimedean-integers +open import elementary-number-theory.integer-fractions +open import elementary-number-theory.integers +open import elementary-number-theory.multiplication-integer-fractions +open import elementary-number-theory.multiplication-integers +open import elementary-number-theory.multiplication-positive-and-negative-integers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.positive-integer-fractions +open import elementary-number-theory.strict-inequality-integer-fractions +open import elementary-number-theory.strict-inequality-integers + +open import foundation.binary-transport +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.universe-levels +``` + +
+ +## Definition + +The Archimedean property of the integer fractions is that for any positive +integer fraction `x` and integer fraction `y`, there is an `n : ℕ` such that +`y < in-fraction-ℤ (int-ℕ n) *fraction-ℤ x`. + +```agda +archimedean-property-fraction-ℤ : + (x y : fraction-ℤ) → + is-positive-fraction-ℤ x → + Σ ℕ λ n → le-fraction-ℤ y (in-fraction-ℤ (int-ℕ n) *fraction-ℤ x) +archimedean-property-fraction-ℤ (px , qx , pos-qx) (py , qy , pos-qy) pos-px = + ind-Σ + (λ n H → n , + tr + (le-ℤ (py *ℤ qx)) + (inv (associative-mul-ℤ (int-ℕ n) px qy)) + H) + (archimedean-property-ℤ + (px *ℤ qy) + (py *ℤ qx) + (is-positive-mul-ℤ pos-px pos-qy)) +``` From b6bc81c7fdfea2c71175bb29ffaaaf27f456d7ee Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 09:20:47 -0800 Subject: [PATCH 010/227] Remove unnecessary where --- .../archimedean-natural-numbers.lagda.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md index 87cb819769..a4d56e8686 100644 --- a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md @@ -30,19 +30,15 @@ abstract archimedean-property-ℕ : (x y : ℕ) → is-nonzero-ℕ x → Σ ℕ (λ n → le-ℕ y (n *ℕ x)) archimedean-property-ℕ x y nonzero-x = - (succ-ℕ q , + (succ-ℕ (quotient-euclidean-division-ℕ x y), tr - (λ z → le-ℕ z (succ-ℕ q *ℕ x)) + (λ z → le-ℕ z (succ-ℕ (quotient-euclidean-division-ℕ x y) *ℕ x)) (eq-euclidean-division-ℕ x y) (preserves-le-left-add-ℕ - (q *ℕ x) - r + (quotient-euclidean-division-ℕ x y *ℕ x) + (remainder-euclidean-division-ℕ x y) x (strict-upper-bound-remainder-euclidean-division-ℕ x y nonzero-x))) - where q : ℕ - q = quotient-euclidean-division-ℕ x y - r : ℕ - r = remainder-euclidean-division-ℕ x y ``` ## External links From 299cdd8d20fca0c6ca82e4991e2a524b3e116d70 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 09:23:43 -0800 Subject: [PATCH 011/227] make pre-commit changes --- src/elementary-number-theory.lagda.md | 1 + .../archimedean-natural-numbers.lagda.md | 10 +++++----- .../strict-inequality-natural-numbers.lagda.md | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index aaaa001d05..695ab65d0a 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -17,6 +17,7 @@ open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public +open import elementary-number-theory.archimedean-natural-numbers public open import elementary-number-theory.arithmetic-functions public open import elementary-number-theory.based-induction-natural-numbers public open import elementary-number-theory.based-strong-induction-natural-numbers public diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md index a4d56e8686..3229f50227 100644 --- a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md @@ -22,15 +22,15 @@ open import foundation.transport-along-identifications ## Definition -The Archimedean property of the natural numbers is that for any nonzero natural number `x` and natural number `y`, -there is an `n : ℕ` such that `y < n *ℕ x`. +The Archimedean property of the natural numbers is that for any nonzero natural +number `x` and natural number `y`, there is an `n : ℕ` such that `y < n *ℕ x`. ```agda abstract archimedean-property-ℕ : (x y : ℕ) → is-nonzero-ℕ x → Σ ℕ (λ n → le-ℕ y (n *ℕ x)) archimedean-property-ℕ x y nonzero-x = - (succ-ℕ (quotient-euclidean-division-ℕ x y), + (succ-ℕ (quotient-euclidean-division-ℕ x y) , tr (λ z → le-ℕ z (succ-ℕ (quotient-euclidean-division-ℕ x y) *ℕ x)) (eq-euclidean-division-ℕ x y) @@ -43,5 +43,5 @@ abstract ## External links -- [Archimedean property](https://en.wikipedia.org/wiki/Archimedean_property) - at Wikipedia +- [Archimedean property](https://en.wikipedia.org/wiki/Archimedean_property) at + Wikipedia diff --git a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md index 7ce69317a6..5fa10a1121 100644 --- a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md @@ -355,7 +355,8 @@ preserves-le-left-add-ℕ z x y I = (commutative-add-ℕ y z) (preserves-le-right-add-ℕ z x y I) -preserves-le-add-ℕ : {a b c d : ℕ} → le-ℕ a b → le-ℕ c d → le-ℕ (a +ℕ c) (b +ℕ d) +preserves-le-add-ℕ : + {a b c d : ℕ} → le-ℕ a b → le-ℕ c d → le-ℕ (a +ℕ c) (b +ℕ d) preserves-le-add-ℕ {a} {b} {c} {d} H K = transitive-le-ℕ (a +ℕ c) From c80acadb2ff295344893458660efcf13975ecb32 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 09:36:07 -0800 Subject: [PATCH 012/227] make pre-commit changes --- .../strict-inequality-natural-numbers.lagda.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md index bc1736b338..39b5515027 100644 --- a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md @@ -355,7 +355,8 @@ preserves-le-left-add-ℕ z x y I = (commutative-add-ℕ y z) (preserves-le-right-add-ℕ z x y I) -preserves-le-add-ℕ : {a b c d : ℕ} → le-ℕ a b → le-ℕ c d → le-ℕ (a +ℕ c) (b +ℕ d) +preserves-le-add-ℕ : + {a b c d : ℕ} → le-ℕ a b → le-ℕ c d → le-ℕ (a +ℕ c) (b +ℕ d) preserves-le-add-ℕ {a} {b} {c} {d} H K = transitive-le-ℕ (a +ℕ c) From d9bfbcd9869e46fc91687ced2b48b8413d089c45 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 09:37:03 -0800 Subject: [PATCH 013/227] Update src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md Co-authored-by: Fredrik Bakke --- .../strict-inequality-natural-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md index 39b5515027..1957d38b9d 100644 --- a/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-natural-numbers.lagda.md @@ -337,7 +337,7 @@ eq-translate-right-le-ℕ (succ-ℕ z) x y = eq-translate-right-le-ℕ z x y eq-translate-left-le-ℕ : (z x y : ℕ) → le-ℕ (z +ℕ x) (z +ℕ y) = le-ℕ x y eq-translate-left-le-ℕ z x y = ap-binary le-ℕ (commutative-add-ℕ z x) (commutative-add-ℕ z y) ∙ - eq-translate-right-le-ℕ z x y + eq-translate-right-le-ℕ z x y ``` ### Addition on the natural numbers preserves strict inequality From fa901c53d803f4f59576db276301cfc74ab122ed Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 10:10:08 -0800 Subject: [PATCH 014/227] Progress --- src/elementary-number-theory.lagda.md | 2 + .../archimedean-integers.lagda.md | 38 +++++++++---------- .../archimedean-natural-numbers.lagda.md | 8 ++-- ...strict-inequality-natural-numbers.lagda.md | 3 +- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index aaaa001d05..5b2d496bdb 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -17,6 +17,8 @@ open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public +open import elementary-number-theory.archimedean-integers public +open import elementary-number-theory.archimedean-natural-numbers public open import elementary-number-theory.arithmetic-functions public open import elementary-number-theory.based-induction-natural-numbers public open import elementary-number-theory.based-strong-induction-natural-numbers public diff --git a/src/elementary-number-theory/archimedean-integers.lagda.md b/src/elementary-number-theory/archimedean-integers.lagda.md index 10488a4719..6db707b82e 100644 --- a/src/elementary-number-theory/archimedean-integers.lagda.md +++ b/src/elementary-number-theory/archimedean-integers.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.integers open import elementary-number-theory.multiplication-integers open import elementary-number-theory.multiplication-natural-numbers open import elementary-number-theory.natural-numbers +open import elementary-number-theory.nonnegative-integers open import elementary-number-theory.positive-and-negative-integers open import elementary-number-theory.positive-integers open import elementary-number-theory.strict-inequality-integers @@ -30,29 +31,28 @@ open import foundation.unit-type ## Definition -The Archimedean property of the integers is that for any positive integer `x` and integer `y`, -there is an `n : ℕ` such that `y < int-ℕ n *ℤ x`. +The Archimedean property of the integers is that for any positive integer `x` +and integer `y`, there is an `n : ℕ` such that `y < int-ℕ n *ℤ x`. ```agda -archimedean-property-ℤ : (x y : ℤ) → is-positive-ℤ x → Σ ℕ (λ n → le-ℤ y (int-ℕ n *ℤ x)) -archimedean-property-ℤ x y pos-x with decide-sign-ℤ {y} +archimedean-property-ℤ : + (x y : ℤ) → is-positive-ℤ x → Σ ℕ (λ n → le-ℤ y (int-ℕ n *ℤ x)) +archimedean-property-ℤ x y pos-x with decide-is-negative-is-nonnegative-ℤ {y} ... | inl neg-y = zero-ℕ , le-zero-is-negative-ℤ y neg-y -... | inr (inl refl) = 1 , le-zero-is-positive-ℤ x pos-x -... | inr (inr pos-y) = +... | inr nonneg-y = ind-Σ (λ nx (nonzero-nx , nx=x) → ind-Σ - (λ ny (_ , ny=y) → - ind-Σ - (λ n y Date: Fri, 31 Jan 2025 10:22:02 -0800 Subject: [PATCH 015/227] Use LISP-style indentation/formatting. --- .../archimedean-natural-numbers.lagda.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md index 3229f50227..569849676a 100644 --- a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md @@ -32,13 +32,13 @@ abstract archimedean-property-ℕ x y nonzero-x = (succ-ℕ (quotient-euclidean-division-ℕ x y) , tr - (λ z → le-ℕ z (succ-ℕ (quotient-euclidean-division-ℕ x y) *ℕ x)) - (eq-euclidean-division-ℕ x y) - (preserves-le-left-add-ℕ - (quotient-euclidean-division-ℕ x y *ℕ x) - (remainder-euclidean-division-ℕ x y) - x - (strict-upper-bound-remainder-euclidean-division-ℕ x y nonzero-x))) + ( λ z → le-ℕ z (succ-ℕ (quotient-euclidean-division-ℕ x y) *ℕ x)) + ( eq-euclidean-division-ℕ x y) + ( preserves-le-left-add-ℕ + ( quotient-euclidean-division-ℕ x y *ℕ x) + ( remainder-euclidean-division-ℕ x y) + ( x) + ( strict-upper-bound-remainder-euclidean-division-ℕ x y nonzero-x))) ``` ## External links From c60c472f84dd3f4622bce4ecdd5e743a11661cf4 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 13:14:53 -0800 Subject: [PATCH 016/227] Show that arithmetically located cuts are located --- ...rict-inequality-integer-fractions.lagda.md | 71 ++++++------ ...trict-inequality-rational-numbers.lagda.md | 100 ++++++++--------- .../arithmetically-located-cuts.lagda.md | 101 ++++++++++++++++++ 3 files changed, 189 insertions(+), 83 deletions(-) create mode 100644 src/real-numbers/arithmetically-located-cuts.lagda.md diff --git a/src/elementary-number-theory/strict-inequality-integer-fractions.lagda.md b/src/elementary-number-theory/strict-inequality-integer-fractions.lagda.md index 5afdad1e89..8fff292158 100644 --- a/src/elementary-number-theory/strict-inequality-integer-fractions.lagda.md +++ b/src/elementary-number-theory/strict-inequality-integer-fractions.lagda.md @@ -157,41 +157,42 @@ module _ (p q r : fraction-ℤ) where - concatenate-le-leq-fraction-ℤ : - le-fraction-ℤ p q → - leq-fraction-ℤ q r → - le-fraction-ℤ p r - concatenate-le-leq-fraction-ℤ H H' = - is-positive-right-factor-mul-ℤ - ( is-positive-eq-ℤ - ( lemma-add-cross-mul-diff-fraction-ℤ p q r) - ( is-positive-add-nonnegative-positive-ℤ - ( is-nonnegative-mul-ℤ - ( is-nonnegative-is-positive-ℤ - ( is-positive-denominator-fraction-ℤ p)) - ( H')) - ( is-positive-mul-ℤ - ( is-positive-denominator-fraction-ℤ r) - ( H)))) - ( is-positive-denominator-fraction-ℤ q) - - concatenate-leq-le-fraction-ℤ : - leq-fraction-ℤ p q → - le-fraction-ℤ q r → - le-fraction-ℤ p r - concatenate-leq-le-fraction-ℤ H H' = - is-positive-right-factor-mul-ℤ - ( is-positive-eq-ℤ - ( lemma-add-cross-mul-diff-fraction-ℤ p q r) - ( is-positive-add-positive-nonnegative-ℤ - ( is-positive-mul-ℤ - ( is-positive-denominator-fraction-ℤ p) - ( H')) - ( is-nonnegative-mul-ℤ - ( is-nonnegative-is-positive-ℤ - ( is-positive-denominator-fraction-ℤ r)) - ( H)))) - ( is-positive-denominator-fraction-ℤ q) + abstract + concatenate-le-leq-fraction-ℤ : + le-fraction-ℤ p q → + leq-fraction-ℤ q r → + le-fraction-ℤ p r + concatenate-le-leq-fraction-ℤ H H' = + is-positive-right-factor-mul-ℤ + ( is-positive-eq-ℤ + ( lemma-add-cross-mul-diff-fraction-ℤ p q r) + ( is-positive-add-nonnegative-positive-ℤ + ( is-nonnegative-mul-ℤ + ( is-nonnegative-is-positive-ℤ + ( is-positive-denominator-fraction-ℤ p)) + ( H')) + ( is-positive-mul-ℤ + ( is-positive-denominator-fraction-ℤ r) + ( H)))) + ( is-positive-denominator-fraction-ℤ q) + + concatenate-leq-le-fraction-ℤ : + leq-fraction-ℤ p q → + le-fraction-ℤ q r → + le-fraction-ℤ p r + concatenate-leq-le-fraction-ℤ H H' = + is-positive-right-factor-mul-ℤ + ( is-positive-eq-ℤ + ( lemma-add-cross-mul-diff-fraction-ℤ p q r) + ( is-positive-add-positive-nonnegative-ℤ + ( is-positive-mul-ℤ + ( is-positive-denominator-fraction-ℤ p) + ( H')) + ( is-nonnegative-mul-ℤ + ( is-nonnegative-is-positive-ℤ + ( is-positive-denominator-fraction-ℤ r)) + ( H)))) + ( is-positive-denominator-fraction-ℤ q) ``` ### Chaining rules for similarity and strict inequality on the integer fractions diff --git a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md index f15fb7085d..7e771773b5 100644 --- a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md @@ -236,26 +236,29 @@ module _ (x y : ℚ) where - iff-translate-diff-le-zero-ℚ : le-ℚ zero-ℚ (y -ℚ x) ↔ le-ℚ x y - iff-translate-diff-le-zero-ℚ = - logical-equivalence-reasoning - le-ℚ zero-ℚ (y -ℚ x) - ↔ le-fraction-ℤ - ( zero-fraction-ℤ) - ( add-fraction-ℤ (fraction-ℚ y) (neg-fraction-ℤ (fraction-ℚ x))) - by - inv-iff - ( iff-le-right-rational-fraction-ℤ - ( zero-ℚ) - ( add-fraction-ℤ (fraction-ℚ y) (neg-fraction-ℤ (fraction-ℚ x)))) - ↔ le-ℚ x y - by - inv-tr - ( _↔ le-ℚ x y) - ( eq-translate-diff-le-zero-fraction-ℤ - ( fraction-ℚ x) - ( fraction-ℚ y)) - ( id-iff) + abstract + iff-translate-diff-le-zero-ℚ : le-ℚ zero-ℚ (y -ℚ x) ↔ le-ℚ x y + iff-translate-diff-le-zero-ℚ = + logical-equivalence-reasoning + le-ℚ zero-ℚ (y -ℚ x) + ↔ le-fraction-ℤ + ( zero-fraction-ℤ) + ( add-fraction-ℤ (fraction-ℚ y) (neg-fraction-ℤ (fraction-ℚ x))) + by + inv-iff + ( iff-le-right-rational-fraction-ℤ + ( zero-ℚ) + ( add-fraction-ℤ + ( fraction-ℚ y) + ( neg-fraction-ℤ (fraction-ℚ x)))) + ↔ le-ℚ x y + by + inv-tr + ( _↔ le-ℚ x y) + ( eq-translate-diff-le-zero-fraction-ℤ + ( fraction-ℚ x) + ( fraction-ℚ y)) + ( id-iff) ``` ### Strict inequality on the rational numbers is invariant by translation @@ -265,34 +268,35 @@ module _ (z x y : ℚ) where - iff-translate-left-le-ℚ : le-ℚ (z +ℚ x) (z +ℚ y) ↔ le-ℚ x y - iff-translate-left-le-ℚ = - logical-equivalence-reasoning - le-ℚ (z +ℚ x) (z +ℚ y) - ↔ le-ℚ zero-ℚ ((z +ℚ y) -ℚ (z +ℚ x)) - by (inv-iff (iff-translate-diff-le-zero-ℚ (z +ℚ x) (z +ℚ y))) - ↔ le-ℚ zero-ℚ (y -ℚ x) - by - ( inv-tr - ( _↔ le-ℚ zero-ℚ (y -ℚ x)) - ( ap (le-ℚ zero-ℚ) (left-translation-diff-ℚ y x z)) - ( id-iff)) - ↔ le-ℚ x y - by (iff-translate-diff-le-zero-ℚ x y) - - iff-translate-right-le-ℚ : le-ℚ (x +ℚ z) (y +ℚ z) ↔ le-ℚ x y - iff-translate-right-le-ℚ = - logical-equivalence-reasoning - le-ℚ (x +ℚ z) (y +ℚ z) - ↔ le-ℚ zero-ℚ ((y +ℚ z) -ℚ (x +ℚ z)) - by (inv-iff (iff-translate-diff-le-zero-ℚ (x +ℚ z) (y +ℚ z))) - ↔ le-ℚ zero-ℚ (y -ℚ x) - by - ( inv-tr - ( _↔ le-ℚ zero-ℚ (y -ℚ x)) - ( ap (le-ℚ zero-ℚ) (right-translation-diff-ℚ y x z)) - ( id-iff)) - ↔ le-ℚ x y by (iff-translate-diff-le-zero-ℚ x y) + abstract + iff-translate-left-le-ℚ : le-ℚ (z +ℚ x) (z +ℚ y) ↔ le-ℚ x y + iff-translate-left-le-ℚ = + logical-equivalence-reasoning + le-ℚ (z +ℚ x) (z +ℚ y) + ↔ le-ℚ zero-ℚ ((z +ℚ y) -ℚ (z +ℚ x)) + by (inv-iff (iff-translate-diff-le-zero-ℚ (z +ℚ x) (z +ℚ y))) + ↔ le-ℚ zero-ℚ (y -ℚ x) + by + ( inv-tr + ( _↔ le-ℚ zero-ℚ (y -ℚ x)) + ( ap (le-ℚ zero-ℚ) (left-translation-diff-ℚ y x z)) + ( id-iff)) + ↔ le-ℚ x y + by (iff-translate-diff-le-zero-ℚ x y) + + iff-translate-right-le-ℚ : le-ℚ (x +ℚ z) (y +ℚ z) ↔ le-ℚ x y + iff-translate-right-le-ℚ = + logical-equivalence-reasoning + le-ℚ (x +ℚ z) (y +ℚ z) + ↔ le-ℚ zero-ℚ ((y +ℚ z) -ℚ (x +ℚ z)) + by (inv-iff (iff-translate-diff-le-zero-ℚ (x +ℚ z) (y +ℚ z))) + ↔ le-ℚ zero-ℚ (y -ℚ x) + by + ( inv-tr + ( _↔ le-ℚ zero-ℚ (y -ℚ x)) + ( ap (le-ℚ zero-ℚ) (right-translation-diff-ℚ y x z)) + ( id-iff)) + ↔ le-ℚ x y by (iff-translate-diff-le-zero-ℚ x y) preserves-le-left-add-ℚ : le-ℚ x y → le-ℚ (x +ℚ z) (y +ℚ z) preserves-le-left-add-ℚ = backward-implication iff-translate-right-le-ℚ diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md new file mode 100644 index 0000000000..db32d53b02 --- /dev/null +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -0,0 +1,101 @@ +# Arithmetically located cuts + +```agda +module real-numbers.arithmetically-located-cuts where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.cartesian-product-types +open import foundation.conjunction +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.raising-universe-levels +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.abelian-groups +``` + +
+ +## Definition + +```agda +module _ + {l : Level} + (L : subtype l ℚ) + (U : subtype l ℚ) + where + + is-arithmetically-located : UU l + is-arithmetically-located = + (ε : ℚ) → + is-positive-ℚ ε → + exists (ℚ × ℚ) (λ (p , q) → le-ℚ-Prop p q ∧ le-ℚ-Prop q (p +ℚ ε) ∧ L p ∧ U q) +``` +### Arithmetically located cuts are located + +If a cut is arithmetically located and closed under strict inequality on the rational numbers, it is also located. + +```agda +module _ + {l : Level} + (L : subtype l ℚ) + (U : subtype l ℚ) + where + + arithmetically-located-and-closed-location : + is-arithmetically-located L U → + ((p q : ℚ) → le-ℚ p q → is-in-subtype L q → is-in-subtype L p) → + ((p q : ℚ) → le-ℚ p q → is-in-subtype U p → is-in-subtype U q) → + (p q : ℚ) → le-ℚ p q → type-disjunction-Prop (L p) (U q) + arithmetically-located-and-closed-location AL lower-closed upper-closed p q p Date: Fri, 31 Jan 2025 13:16:50 -0800 Subject: [PATCH 017/227] Back out statements we're not ready to prove --- src/real-numbers/arithmetically-located-cuts.lagda.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index db32d53b02..bd6e7686a9 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -97,5 +97,3 @@ module _ ( is-positive-le-zero-ℚ ( q -ℚ p) (backward-implication (iff-translate-diff-le-zero-ℚ p q) p Date: Fri, 31 Jan 2025 13:31:13 -0800 Subject: [PATCH 018/227] Reference the definition of arithmetic location. --- references.bib | 12 +++ src/real-numbers.lagda.md | 1 + .../arithmetically-located-cuts.lagda.md | 91 +++++++++++-------- 3 files changed, 67 insertions(+), 37 deletions(-) diff --git a/references.bib b/references.bib index 2c7232900e..568a2b1dfc 100644 --- a/references.bib +++ b/references.bib @@ -890,3 +890,15 @@ @online{Warn24 pubstate = {preprint}, keywords = {Mathematics - Algebraic Topology,Mathematics - Category Theory} } + +@article{TaylorP:dedras, + author = {Bauer, Andrej and Taylor, Paul}, + title = {The {D}edekind Reals in Abstract {S}tone Duality}, + journal = {Mathematical Structures in Computer Science}, + publisher = {Cambridge University Press}, + year = 2009, + volume = 19, + pages = {757--838}, + doi = {10.1017/S0960129509007695}, + url = {PaulTaylor.EU/ASD/dedras/}, + amsclass = {03F60, 06E15, 18C20, 26E40, 54D45, 65G40}} diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index a4f057db42..08b2d8cb28 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -5,6 +5,7 @@ ```agda module real-numbers where +open import real-numbers.arithmetically-located-cuts public open import real-numbers.dedekind-real-numbers public open import real-numbers.metric-space-of-real-numbers public open import real-numbers.rational-real-numbers public diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index bd6e7686a9..ef5b178c52 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -35,6 +35,11 @@ open import group-theory.abelian-groups ## Definition +A cut `(L, U)` is arithmetically located if for any positive `ε : ℚ`, there +exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. Intuitively, +when `L , U` represent the Dedekind cuts of a real number `x`, `p` and `q` are +rational approximations of `x` to within `ε`. + ```agda module _ {l : Level} @@ -46,11 +51,15 @@ module _ is-arithmetically-located = (ε : ℚ) → is-positive-ℚ ε → - exists (ℚ × ℚ) (λ (p , q) → le-ℚ-Prop p q ∧ le-ℚ-Prop q (p +ℚ ε) ∧ L p ∧ U q) + exists + ( ℚ × ℚ) + ( λ (p , q) → le-ℚ-Prop p q ∧ le-ℚ-Prop q (p +ℚ ε) ∧ L p ∧ U q) ``` + ### Arithmetically located cuts are located -If a cut is arithmetically located and closed under strict inequality on the rational numbers, it is also located. +If a cut is arithmetically located and closed under strict inequality on the +rational numbers, it is also located. ```agda module _ @@ -59,41 +68,49 @@ module _ (U : subtype l ℚ) where - arithmetically-located-and-closed-location : - is-arithmetically-located L U → - ((p q : ℚ) → le-ℚ p q → is-in-subtype L q → is-in-subtype L p) → - ((p q : ℚ) → le-ℚ p q → is-in-subtype U p → is-in-subtype U q) → - (p q : ℚ) → le-ℚ p q → type-disjunction-Prop (L p) (U q) - arithmetically-located-and-closed-location AL lower-closed upper-closed p q p Date: Fri, 31 Jan 2025 13:44:42 -0800 Subject: [PATCH 019/227] Correct formatting --- src/real-numbers/arithmetically-located-cuts.lagda.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index ef5b178c52..1f8f3a2079 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -36,7 +36,7 @@ open import group-theory.abelian-groups ## Definition A cut `(L, U)` is arithmetically located if for any positive `ε : ℚ`, there -exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. Intuitively, +exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. Intuitively, when `L , U` represent the Dedekind cuts of a real number `x`, `p` and `q` are rational approximations of `x` to within `ε`. @@ -109,6 +109,7 @@ module _ ( q -ℚ p) ( backward-implication (iff-translate-diff-le-zero-ℚ p q) p Date: Fri, 31 Jan 2025 13:57:21 -0800 Subject: [PATCH 020/227] Apply suggestions from code review Co-authored-by: Egbert Rijke --- .../archimedean-natural-numbers.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md index 569849676a..925741e459 100644 --- a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md @@ -22,17 +22,17 @@ open import foundation.transport-along-identifications ## Definition -The Archimedean property of the natural numbers is that for any nonzero natural -number `x` and natural number `y`, there is an `n : ℕ` such that `y < n *ℕ x`. +The {{#concept "Archimedean property" Disambiguation="natural numbers" Agda=archimedean-property-ℕ}} of the [natural numbers](elementary-number-theory.natural-numbers.md) is that for any nonzero natural +number `x` and any natural number `y`, there is an `n : ℕ` such that `y < n *ℕ x`. ```agda abstract archimedean-property-ℕ : - (x y : ℕ) → is-nonzero-ℕ x → Σ ℕ (λ n → le-ℕ y (n *ℕ x)) + (x y : ℕ) → is-nonzero-ℕ x → Σ ℕ (λ n → y <-ℕ n *ℕ x) archimedean-property-ℕ x y nonzero-x = (succ-ℕ (quotient-euclidean-division-ℕ x y) , tr - ( λ z → le-ℕ z (succ-ℕ (quotient-euclidean-division-ℕ x y) *ℕ x)) + ( λ z → z <-ℕ succ-ℕ (quotient-euclidean-division-ℕ x y) *ℕ x) ( eq-euclidean-division-ℕ x y) ( preserves-le-left-add-ℕ ( quotient-euclidean-division-ℕ x y *ℕ x) From 99cdebe791a84a641672f04f2cb4236f505afa69 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 14:04:37 -0800 Subject: [PATCH 021/227] Rename the file --- src/elementary-number-theory.lagda.md | 2 +- ...s.lagda.md => archimedean-property-natural-numbers.lagda.md} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/elementary-number-theory/{archimedean-natural-numbers.lagda.md => archimedean-property-natural-numbers.lagda.md} (100%) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 695ab65d0a..41a3d74b9c 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -17,7 +17,7 @@ open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public -open import elementary-number-theory.archimedean-natural-numbers public +open import elementary-number-theory.archimedean-property-natural-numbers public open import elementary-number-theory.arithmetic-functions public open import elementary-number-theory.based-induction-natural-numbers public open import elementary-number-theory.based-strong-induction-natural-numbers public diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md similarity index 100% rename from src/elementary-number-theory/archimedean-natural-numbers.lagda.md rename to src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md From 461014e24a1ab6b4b7d0a8c7be86b57bb15dcbab Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 14:05:12 -0800 Subject: [PATCH 022/227] Rename the file header --- .../archimedean-property-natural-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md index 925741e459..afee473b81 100644 --- a/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md @@ -1,7 +1,7 @@ # The Archimedean property of the natural numbers ```agda -module elementary-number-theory.archimedean-natural-numbers where +module elementary-number-theory.archimedean-property-natural-numbers where ```
Imports From e3f4ce8a1ebd4dd253306a91c031fbebb9974321 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 14:08:51 -0800 Subject: [PATCH 023/227] Line wrapping --- .../archimedean-property-natural-numbers.lagda.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md index afee473b81..93fe3def69 100644 --- a/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-natural-numbers.lagda.md @@ -22,8 +22,11 @@ open import foundation.transport-along-identifications ## Definition -The {{#concept "Archimedean property" Disambiguation="natural numbers" Agda=archimedean-property-ℕ}} of the [natural numbers](elementary-number-theory.natural-numbers.md) is that for any nonzero natural -number `x` and any natural number `y`, there is an `n : ℕ` such that `y < n *ℕ x`. +The +{{#concept "Archimedean property" Disambiguation="natural numbers" Agda=archimedean-property-ℕ}} +of the [natural numbers](elementary-number-theory.natural-numbers.md) is that +for any nonzero natural number `x` and any natural number `y`, there is an +`n : ℕ` such that `y < n *ℕ x`. ```agda abstract From 19da530f466989c2a272e5d284f056cd4598fac3 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 14:33:14 -0800 Subject: [PATCH 024/227] Update merge --- src/elementary-number-theory.lagda.md | 2 +- .../archimedean-natural-numbers.lagda.md | 51 ------------------- ...=> archimedean-property-integers.lagda.md} | 4 +- 3 files changed, 3 insertions(+), 54 deletions(-) delete mode 100644 src/elementary-number-theory/archimedean-natural-numbers.lagda.md rename src/elementary-number-theory/{archimedean-integers.lagda.md => archimedean-property-integers.lagda.md} (94%) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 6249e9cf7b..67f018523c 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -17,8 +17,8 @@ open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public +open import elementary-number-theory.archimedean-property-integers public open import elementary-number-theory.archimedean-property-natural-numbers public -open import elementary-number-theory.archimedean-integers public open import elementary-number-theory.arithmetic-functions public open import elementary-number-theory.based-induction-natural-numbers public open import elementary-number-theory.based-strong-induction-natural-numbers public diff --git a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md b/src/elementary-number-theory/archimedean-natural-numbers.lagda.md deleted file mode 100644 index 1b2318bda3..0000000000 --- a/src/elementary-number-theory/archimedean-natural-numbers.lagda.md +++ /dev/null @@ -1,51 +0,0 @@ -# The Archimedean property of the natural numbers - -```agda -module elementary-number-theory.archimedean-natural-numbers where -``` - -
Imports - -```agda -open import elementary-number-theory.equality-natural-numbers -open import elementary-number-theory.euclidean-division-natural-numbers -open import elementary-number-theory.multiplication-natural-numbers -open import elementary-number-theory.natural-numbers -open import elementary-number-theory.nonzero-natural-numbers -open import elementary-number-theory.strict-inequality-natural-numbers - -open import foundation.dependent-pair-types -open import foundation.transport-along-identifications -``` - -
- -## Definition - -The Archimedean property of the natural numbers is that for any nonzero natural -number `x` and natural number `y`, there is an `n : ℕ` such that `y < n *ℕ x`. - -```agda -abstract - archimedean-property-ℕ : - (x y : ℕ) → is-nonzero-ℕ x → Σ ℕ (λ n → le-ℕ y (n *ℕ x)) - archimedean-property-ℕ x y nonzero-x = - (succ-ℕ q , - tr - (λ z → le-ℕ z (succ-ℕ q *ℕ x)) - (eq-euclidean-division-ℕ x y) - (preserves-le-left-add-ℕ - (q *ℕ x) - r - x - (strict-upper-bound-remainder-euclidean-division-ℕ x y nonzero-x))) - where q : ℕ - q = quotient-euclidean-division-ℕ x y - r : ℕ - r = remainder-euclidean-division-ℕ x y -``` - -## External links - -- [Archimedean property](https://en.wikipedia.org/wiki/Archimedean_property) at - Wikipedia diff --git a/src/elementary-number-theory/archimedean-integers.lagda.md b/src/elementary-number-theory/archimedean-property-integers.lagda.md similarity index 94% rename from src/elementary-number-theory/archimedean-integers.lagda.md rename to src/elementary-number-theory/archimedean-property-integers.lagda.md index 6db707b82e..8ccf95c536 100644 --- a/src/elementary-number-theory/archimedean-integers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integers.lagda.md @@ -1,13 +1,13 @@ # The Archimedean property of the integers ```agda -module elementary-number-theory.archimedean-integers where +module elementary-number-theory.archimedean-property-integers where ```
Imports ```agda -open import elementary-number-theory.archimedean-natural-numbers +open import elementary-number-theory.archimedean-property-natural-numbers open import elementary-number-theory.integers open import elementary-number-theory.multiplication-integers open import elementary-number-theory.multiplication-natural-numbers From e6d09cfc3c8777b106fecc3345c71a3dd31368ce Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 14:37:32 -0800 Subject: [PATCH 025/227] Mark it abstract --- src/elementary-number-theory.lagda.md | 2 +- .../archimedean-property-integers.lagda.md | 49 ++++++++++--------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 0abc7c3278..d341a666f0 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -17,8 +17,8 @@ open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public -open import elementary-number-theory.archimedean-property-natural-numbers public open import elementary-number-theory.archimedean-property-integers public +open import elementary-number-theory.archimedean-property-natural-numbers public open import elementary-number-theory.arithmetic-functions public open import elementary-number-theory.based-induction-natural-numbers public open import elementary-number-theory.based-strong-induction-natural-numbers public diff --git a/src/elementary-number-theory/archimedean-property-integers.lagda.md b/src/elementary-number-theory/archimedean-property-integers.lagda.md index 8ccf95c536..997c17e6ee 100644 --- a/src/elementary-number-theory/archimedean-property-integers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integers.lagda.md @@ -35,30 +35,31 @@ The Archimedean property of the integers is that for any positive integer `x` and integer `y`, there is an `n : ℕ` such that `y < int-ℕ n *ℤ x`. ```agda -archimedean-property-ℤ : - (x y : ℤ) → is-positive-ℤ x → Σ ℕ (λ n → le-ℤ y (int-ℕ n *ℤ x)) -archimedean-property-ℤ x y pos-x with decide-is-negative-is-nonnegative-ℤ {y} -... | inl neg-y = zero-ℕ , le-zero-is-negative-ℤ y neg-y -... | inr nonneg-y = - ind-Σ - (λ nx (nonzero-nx , nx=x) → - ind-Σ - (λ n ny Date: Fri, 31 Jan 2025 14:38:41 -0800 Subject: [PATCH 026/227] Revert sign --- .../positive-and-negative-integers.lagda.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/elementary-number-theory/positive-and-negative-integers.lagda.md b/src/elementary-number-theory/positive-and-negative-integers.lagda.md index 18f92d41cf..844b95a8b8 100644 --- a/src/elementary-number-theory/positive-and-negative-integers.lagda.md +++ b/src/elementary-number-theory/positive-and-negative-integers.lagda.md @@ -101,17 +101,6 @@ decide-is-nonpositive-is-nonpositive-neg-ℤ {inr (inl x)} = inl star decide-is-nonpositive-is-nonpositive-neg-ℤ {inr (inr x)} = inr star ``` -### Trichotomies - -#### An integer is negative, zero, or positive - -```agda -decide-sign-ℤ : {x : ℤ} → is-negative-ℤ x + is-zero-ℤ x + is-positive-ℤ x -decide-sign-ℤ {inr (inl star)} = inr (inl refl) -decide-sign-ℤ {inr (inr _)} = inr (inr star) -decide-sign-ℤ {inl _} = inl star -``` - ### Positive integers are nonnegative ```agda From d9f2169f8ab2291decd344c8d80ab18ce9338a71 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 14:40:05 -0800 Subject: [PATCH 027/227] Use more-correct terminology --- .../strict-inequality-integers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/strict-inequality-integers.lagda.md b/src/elementary-number-theory/strict-inequality-integers.lagda.md index 8cd6ac4933..1bc81e4668 100644 --- a/src/elementary-number-theory/strict-inequality-integers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-integers.lagda.md @@ -271,7 +271,7 @@ module _ ( I)) ``` -### Converting a natural number to an integer preserves strict inequality +### The inclusion of natural numbers preserves strict inequality ```agda le-natural-le-ℤ : (m n : ℕ) → le-ℕ m n → le-ℤ (int-ℕ m) (int-ℕ n) From ff17a958558a5436beba453ddbbbad4aaaa122ed Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 31 Jan 2025 14:44:19 -0800 Subject: [PATCH 028/227] Correct indentation --- .../archimedean-property-integers.lagda.md | 19 +++++++++++-------- .../strict-inequality-integers.lagda.md | 16 ++++++++-------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/elementary-number-theory/archimedean-property-integers.lagda.md b/src/elementary-number-theory/archimedean-property-integers.lagda.md index 997c17e6ee..1267c8c06b 100644 --- a/src/elementary-number-theory/archimedean-property-integers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integers.lagda.md @@ -44,16 +44,19 @@ abstract ind-Σ (λ nx (nonzero-nx , nx=x) → ind-Σ - (λ n ny Date: Fri, 31 Jan 2025 14:44:52 -0800 Subject: [PATCH 029/227] Correct indentation --- .../archimedean-property-integers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/archimedean-property-integers.lagda.md b/src/elementary-number-theory/archimedean-property-integers.lagda.md index 1267c8c06b..d04b40b4a2 100644 --- a/src/elementary-number-theory/archimedean-property-integers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integers.lagda.md @@ -42,7 +42,7 @@ abstract ... | inl neg-y = zero-ℕ , le-zero-is-negative-ℤ y neg-y ... | inr nonneg-y = ind-Σ - (λ nx (nonzero-nx , nx=x) → + ( λ nx (nonzero-nx , nx=x) → ind-Σ ( λ n ny Date: Sat, 1 Feb 2025 14:23:11 -0800 Subject: [PATCH 030/227] Update src/elementary-number-theory/archimedean-property-integers.lagda.md Co-authored-by: Egbert Rijke --- .../archimedean-property-integers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/archimedean-property-integers.lagda.md b/src/elementary-number-theory/archimedean-property-integers.lagda.md index d04b40b4a2..454fe5f53d 100644 --- a/src/elementary-number-theory/archimedean-property-integers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integers.lagda.md @@ -31,7 +31,7 @@ open import foundation.unit-type ## Definition -The Archimedean property of the integers is that for any positive integer `x` +The {{#concept "Archimedean property" Disambiguation="integers" Agda=archimedean-property-ℤ}} of the [integers](elementary-number-theory.integers.md) is that for any [positive integer](elementary-number-theory.positive-integers.md) `x` and integer `y`, there is an `n : ℕ` such that `y < int-ℕ n *ℤ x`. ```agda From 868022256a18659eaf183780b37dec5e44a1cd2b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 1 Feb 2025 14:24:11 -0800 Subject: [PATCH 031/227] make pre-commit formatting --- .../archimedean-property-integers.lagda.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/elementary-number-theory/archimedean-property-integers.lagda.md b/src/elementary-number-theory/archimedean-property-integers.lagda.md index 454fe5f53d..9c0a183180 100644 --- a/src/elementary-number-theory/archimedean-property-integers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integers.lagda.md @@ -31,8 +31,11 @@ open import foundation.unit-type ## Definition -The {{#concept "Archimedean property" Disambiguation="integers" Agda=archimedean-property-ℤ}} of the [integers](elementary-number-theory.integers.md) is that for any [positive integer](elementary-number-theory.positive-integers.md) `x` -and integer `y`, there is an `n : ℕ` such that `y < int-ℕ n *ℤ x`. +The +{{#concept "Archimedean property" Disambiguation="integers" Agda=archimedean-property-ℤ}} +of the [integers](elementary-number-theory.integers.md) is that for any +[positive integer](elementary-number-theory.positive-integers.md) `x` and +integer `y`, there is an `n : ℕ` such that `y < int-ℕ n *ℤ x`. ```agda abstract From 278ab3fe70ee5495e6624709e5138e8352cb58a5 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 1 Feb 2025 14:30:47 -0800 Subject: [PATCH 032/227] The Archimedean property of integer fractions --- ...medean-property-integer-fractions.lagda.md | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md diff --git a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md new file mode 100644 index 0000000000..ae4d3f046b --- /dev/null +++ b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md @@ -0,0 +1,51 @@ +# The Archimedean property of integer fractions + +```agda +module elementary-number-theory.archimedean-property-integer-fractions where +``` + +
Imports + +```agda +open import elementary-number-theory.archimedean-property-integers +open import elementary-number-theory.integer-fractions +open import elementary-number-theory.integers +open import elementary-number-theory.multiplication-integer-fractions +open import elementary-number-theory.multiplication-integers +open import elementary-number-theory.multiplication-positive-and-negative-integers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.positive-integer-fractions +open import elementary-number-theory.strict-inequality-integer-fractions +open import elementary-number-theory.strict-inequality-integers + +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.transport-along-identifications +``` + +
+ +## Definition + +The Archimedean property of the integer fractions is that for any +`x y : fraction-ℤ`, with positive `x`, there is an `n : ℕ` such that +`y` is less than `n` as an integer fraction times `x`. + +```agda +archimedean-property-fraction-ℤ : + (x y : fraction-ℤ) → + is-positive-fraction-ℤ x → + Σ ℕ (λ n → le-fraction-ℤ y (in-fraction-ℤ (int-ℕ n) *fraction-ℤ x)) +archimedean-property-fraction-ℤ (px , qx , pos-qx) (py , qy , pos-qy) pos-px = + ind-Σ + ( λ n H → + n , + tr + ( le-ℤ (py *ℤ qx)) + ( inv (associative-mul-ℤ (int-ℕ n) px qy)) + ( H)) + (archimedean-property-ℤ + ( px *ℤ qy) + ( py *ℤ qx) + ( is-positive-mul-ℤ pos-px pos-qy)) +``` From 601f10a7919cc7e308ca38e0853175c1c6633a82 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 1 Feb 2025 14:57:04 -0800 Subject: [PATCH 033/227] Make abstract --- ...medean-property-integer-fractions.lagda.md | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md index ae4d3f046b..33d1667565 100644 --- a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md @@ -32,20 +32,21 @@ The Archimedean property of the integer fractions is that for any `y` is less than `n` as an integer fraction times `x`. ```agda -archimedean-property-fraction-ℤ : - (x y : fraction-ℤ) → - is-positive-fraction-ℤ x → - Σ ℕ (λ n → le-fraction-ℤ y (in-fraction-ℤ (int-ℕ n) *fraction-ℤ x)) -archimedean-property-fraction-ℤ (px , qx , pos-qx) (py , qy , pos-qy) pos-px = - ind-Σ - ( λ n H → - n , - tr - ( le-ℤ (py *ℤ qx)) - ( inv (associative-mul-ℤ (int-ℕ n) px qy)) - ( H)) - (archimedean-property-ℤ - ( px *ℤ qy) - ( py *ℤ qx) - ( is-positive-mul-ℤ pos-px pos-qy)) +abstract + archimedean-property-fraction-ℤ : + (x y : fraction-ℤ) → + is-positive-fraction-ℤ x → + Σ ℕ (λ n → le-fraction-ℤ y (in-fraction-ℤ (int-ℕ n) *fraction-ℤ x)) + archimedean-property-fraction-ℤ (px , qx , pos-qx) (py , qy , pos-qy) pos-px = + ind-Σ + ( λ n H → + n , + tr + ( le-ℤ (py *ℤ qx)) + ( inv (associative-mul-ℤ (int-ℕ n) px qy)) + ( H)) + (archimedean-property-ℤ + ( px *ℤ qy) + ( py *ℤ qx) + ( is-positive-mul-ℤ pos-px pos-qy)) ``` From af1253cc57a80af4d2283d2e0a33723509fb9203 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 1 Feb 2025 15:23:01 -0800 Subject: [PATCH 034/227] Simplify --- src/elementary-number-theory.lagda.md | 2 + ...medean-property-integer-fractions.lagda.md | 4 +- ...imedean-property-rational-numbers.lagda.md | 62 +++++++++++++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index d341a666f0..befe9c31fc 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -17,8 +17,10 @@ open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public +open import elementary-number-theory.archimedean-property-integer-fractions public open import elementary-number-theory.archimedean-property-integers public open import elementary-number-theory.archimedean-property-natural-numbers public +open import elementary-number-theory.archimedean-property-rational-numbers public open import elementary-number-theory.arithmetic-functions public open import elementary-number-theory.based-induction-natural-numbers public open import elementary-number-theory.based-strong-induction-natural-numbers public diff --git a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md index 33d1667565..281736386e 100644 --- a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md @@ -28,8 +28,8 @@ open import foundation.transport-along-identifications ## Definition The Archimedean property of the integer fractions is that for any -`x y : fraction-ℤ`, with positive `x`, there is an `n : ℕ` such that -`y` is less than `n` as an integer fraction times `x`. +`x y : fraction-ℤ`, with positive `x`, there is an `n : ℕ` such that `y` is less +than `n` as an integer fraction times `x`. ```agda abstract diff --git a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md new file mode 100644 index 0000000000..456f46aaf2 --- /dev/null +++ b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md @@ -0,0 +1,62 @@ +# The Archimedean property of `ℚ` + +```agda +module elementary-number-theory.archimedean-property-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.archimedean-property-integer-fractions +open import elementary-number-theory.integer-fractions +open import elementary-number-theory.integers +open import elementary-number-theory.multiplication-integer-fractions +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.action-on-identifications-binary-functions +open import foundation.binary-transport +open import foundation.dependent-pair-types +open import foundation.identity-types +``` + +
+ +## Definition + +The Archimedean property of `ℚ` is that for any `x y : ℚ`, with positive `x`, +there is an `n : ℕ` such that `y` is less than `n` as a rational number times +`x`. + +```agda +abstract + archimedean-property-ℚ : + (x y : ℚ) → + is-positive-ℚ x → + Σ ℕ (λ n → le-ℚ y (rational-ℤ (int-ℕ n) *ℚ x)) + archimedean-property-ℚ x y positive-x = + ind-Σ + ( λ n nx Date: Sat, 1 Feb 2025 15:53:05 -0800 Subject: [PATCH 035/227] Fiddle in the hopes of making things compile reasonably --- ...imedean-property-rational-numbers.lagda.md | 58 ++++++++++++------- ...trict-inequality-rational-numbers.lagda.md | 21 +++---- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md index 456f46aaf2..a6485699fa 100644 --- a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md @@ -27,9 +27,9 @@ open import foundation.identity-types ## Definition -The Archimedean property of `ℚ` is that for any `x y : ℚ`, with positive `x`, -there is an `n : ℕ` such that `y` is less than `n` as a rational number times -`x`. +The Archimedean property of `ℚ` is that for any +`x y : ℚ`, with positive `x`, there is an `n : ℕ` such that +`y` is less than `n` as a rational number times `x`. ```agda abstract @@ -37,26 +37,40 @@ abstract (x y : ℚ) → is-positive-ℚ x → Σ ℕ (λ n → le-ℚ y (rational-ℤ (int-ℕ n) *ℚ x)) - archimedean-property-ℚ x y positive-x = - ind-Σ - ( λ n nx Date: Sun, 2 Feb 2025 09:36:27 -0800 Subject: [PATCH 036/227] make pre-commit --- ...imedean-property-rational-numbers.lagda.md | 59 ++++++++----------- 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md index a6485699fa..c5f818f9a4 100644 --- a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md @@ -21,15 +21,16 @@ open import foundation.action-on-identifications-binary-functions open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.identity-types +open import foundation.universe-levels ```
## Definition -The Archimedean property of `ℚ` is that for any -`x y : ℚ`, with positive `x`, there is an `n : ℕ` such that -`y` is less than `n` as a rational number times `x`. +The Archimedean property of `ℚ` is that for any `x y : ℚ`, with positive `x`, +there is an `n : ℕ` such that `y` is less than `n` as a rational number times +`x`. ```agda abstract @@ -41,36 +42,24 @@ abstract with archimedean-property-fraction-ℤ (fraction-ℚ x) (fraction-ℚ y) positive-x ... | n , nx Date: Sun, 2 Feb 2025 09:46:07 -0800 Subject: [PATCH 037/227] Apply suggestions from code review Co-authored-by: Egbert Rijke --- references.bib | 2 +- src/real-numbers/arithmetically-located-cuts.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/references.bib b/references.bib index 568a2b1dfc..97fa0e6300 100644 --- a/references.bib +++ b/references.bib @@ -891,7 +891,7 @@ @online{Warn24 keywords = {Mathematics - Algebraic Topology,Mathematics - Category Theory} } -@article{TaylorP:dedras, +@article{BauerTaylor2009, author = {Bauer, Andrej and Taylor, Paul}, title = {The {D}edekind Reals in Abstract {S}tone Duality}, journal = {Mathematical Structures in Computer Science}, diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 1f8f3a2079..816c159d33 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -35,7 +35,7 @@ open import group-theory.abelian-groups ## Definition -A cut `(L, U)` is arithmetically located if for any positive `ε : ℚ`, there +A [Dedekind cut](real-numbers.dedekind-real-numbers.md) `(L, U)` is {{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=is-arithmetically-located}} if for any positive [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ`, there exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. Intuitively, when `L , U` represent the Dedekind cuts of a real number `x`, `p` and `q` are rational approximations of `x` to within `ε`. From 85ec844f0726546073b966fdf9f6a8e1c567ded4 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 2 Feb 2025 09:53:05 -0800 Subject: [PATCH 038/227] make pre-commit and manual review changes --- .../arithmetically-located-cuts.lagda.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 816c159d33..958409bd98 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -35,10 +35,14 @@ open import group-theory.abelian-groups ## Definition -A [Dedekind cut](real-numbers.dedekind-real-numbers.md) `(L, U)` is {{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=is-arithmetically-located}} if for any positive [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ`, there +A [Dedekind cut](real-numbers.dedekind-real-numbers.md) `(L, U)` is +{{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=is-arithmetically-located}} +if for any positive +[rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ`, there exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. Intuitively, when `L , U` represent the Dedekind cuts of a real number `x`, `p` and `q` are -rational approximations of `x` to within `ε`. +rational approximations of `x` to within `ε`. This follows parts of Section 11 +in {{#cite BauerTaylor2009}}. ```agda module _ @@ -110,8 +114,4 @@ module _ ( backward-implication (iff-translate-diff-le-zero-ℚ p q) p Date: Sun, 2 Feb 2025 10:08:48 -0800 Subject: [PATCH 039/227] Restore references --- src/real-numbers/arithmetically-located-cuts.lagda.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 958409bd98..64fe156e07 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -114,4 +114,6 @@ module _ ( backward-implication (iff-translate-diff-le-zero-ℚ p q) p Date: Sun, 2 Feb 2025 10:48:18 -0800 Subject: [PATCH 040/227] Begin proving located cuts are arithmetically located --- .../arithmetically-located-cuts.lagda.md | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 64fe156e07..b11d5358a4 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -11,10 +11,14 @@ open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.integers +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.natural-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.coproduct-types @@ -23,6 +27,7 @@ open import foundation.disjunction open import foundation.existential-quantification open import foundation.identity-types open import foundation.logical-equivalences +open import foundation.propositions open import foundation.raising-universe-levels open import foundation.subtypes open import foundation.transport-along-identifications @@ -66,7 +71,7 @@ If a cut is arithmetically located and closed under strict inequality on the rational numbers, it is also located. ```agda -module _ +{- module _ {l : Level} (L : subtype l ℚ) (U : subtype l ℚ) @@ -111,7 +116,40 @@ module _ ( q -ℚ p) ( is-positive-le-zero-ℚ ( q -ℚ p) - ( backward-implication (iff-translate-diff-le-zero-ℚ p q) p Date: Sun, 2 Feb 2025 10:59:16 -0800 Subject: [PATCH 041/227] make pre-commit --- src/elementary-number-theory.lagda.md | 1 + .../archimedean-property-integer-fractions.lagda.md | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index d341a666f0..41595a97ba 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -17,6 +17,7 @@ open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public +open import elementary-number-theory.archimedean-property-integer-fractions public open import elementary-number-theory.archimedean-property-integers public open import elementary-number-theory.archimedean-property-natural-numbers public open import elementary-number-theory.arithmetic-functions public diff --git a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md index 33d1667565..281736386e 100644 --- a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md @@ -28,8 +28,8 @@ open import foundation.transport-along-identifications ## Definition The Archimedean property of the integer fractions is that for any -`x y : fraction-ℤ`, with positive `x`, there is an `n : ℕ` such that -`y` is less than `n` as an integer fraction times `x`. +`x y : fraction-ℤ`, with positive `x`, there is an `n : ℕ` such that `y` is less +than `n` as an integer fraction times `x`. ```agda abstract From f3b0720b82d46655e366edfef990d5eed9f526a7 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 2 Feb 2025 11:00:27 -0800 Subject: [PATCH 042/227] Delete old file --- .../archimedean-integer-fractions.lagda.md | 52 ------------------- 1 file changed, 52 deletions(-) delete mode 100644 src/elementary-number-theory/archimedean-integer-fractions.lagda.md diff --git a/src/elementary-number-theory/archimedean-integer-fractions.lagda.md b/src/elementary-number-theory/archimedean-integer-fractions.lagda.md deleted file mode 100644 index 82cef0a17b..0000000000 --- a/src/elementary-number-theory/archimedean-integer-fractions.lagda.md +++ /dev/null @@ -1,52 +0,0 @@ -# The Archimedean property of integer fractions - -```agda -module elementary-number-theory.archimedean-integer-fractions where -``` - -
Imports - -```agda -open import elementary-number-theory.archimedean-integers -open import elementary-number-theory.integer-fractions -open import elementary-number-theory.integers -open import elementary-number-theory.multiplication-integer-fractions -open import elementary-number-theory.multiplication-integers -open import elementary-number-theory.multiplication-positive-and-negative-integers -open import elementary-number-theory.natural-numbers -open import elementary-number-theory.positive-integer-fractions -open import elementary-number-theory.strict-inequality-integer-fractions -open import elementary-number-theory.strict-inequality-integers - -open import foundation.binary-transport -open import foundation.dependent-pair-types -open import foundation.identity-types -open import foundation.transport-along-identifications -open import foundation.universe-levels -``` - -
- -## Definition - -The Archimedean property of the integer fractions is that for any positive -integer fraction `x` and integer fraction `y`, there is an `n : ℕ` such that -`y < in-fraction-ℤ (int-ℕ n) *fraction-ℤ x`. - -```agda -archimedean-property-fraction-ℤ : - (x y : fraction-ℤ) → - is-positive-fraction-ℤ x → - Σ ℕ λ n → le-fraction-ℤ y (in-fraction-ℤ (int-ℕ n) *fraction-ℤ x) -archimedean-property-fraction-ℤ (px , qx , pos-qx) (py , qy , pos-qy) pos-px = - ind-Σ - (λ n H → n , - tr - (le-ℤ (py *ℤ qx)) - (inv (associative-mul-ℤ (int-ℕ n) px qy)) - H) - (archimedean-property-ℤ - (px *ℤ qy) - (py *ℤ qx) - (is-positive-mul-ℤ pos-px pos-qy)) -``` From 37c9d8d2a8f12b3191c7162b563ee4976bd38cbe Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 2 Feb 2025 11:26:15 -0800 Subject: [PATCH 043/227] Progress --- src/real-numbers/arithmetically-located-cuts.lagda.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index b11d5358a4..fc93499663 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -136,7 +136,16 @@ module _ intro-exists (p , p +ℚ ε) ( le-right-add-rational-ℚ⁺ p (ε , positive-ε) , - {! !} , + tr + (leq-ℚ (p +ℚ ε)) + (equational-reasoning + (p +ℚ ε) +ℚ ε + = p +ℚ (ε +ℚ ε) by associative-add-ℚ p ε ε + = p +ℚ ((one-ℚ *ℚ ε) +ℚ (one-ℚ *ℚ ε)) + by ap (p +ℚ_) (inv (ap-add-ℚ (left-unit-law-mul-ℚ ε) (left-unit-law-mul-ℚ ε))) + = p +ℚ (? *ℚ ε) + by ap (p +ℚ_) (inv (right-distributive-mul-add-ℚ one-ℚ one-ℚ ε))) + (leq-le-ℚ (le-right-add-rational-ℚ⁺ (p +ℚ ε) (ε , positive-ε))) , p-in-L , tr (is-in-subtype U) {! ap (p +ℚ_) (left-unit-law-mul-ℚ ε) !} p-plus-1-ε-in-U) From 48952da87d2a7bc6f93b4a014031e2f24910b316 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 2 Feb 2025 11:28:21 -0800 Subject: [PATCH 044/227] Progress --- .../arithmetically-located-cuts.lagda.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index fc93499663..f30a7b7f67 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -131,23 +131,17 @@ module _ where lemma : (p ε : ℚ) → (n : ℕ) → is-positive-ℚ ε → is-in-subtype L p → is-in-subtype U (p +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε)) → - exists (ℚ × ℚ) (λ (q , r) → le-ℚ-Prop q r ∧ leq-ℚ-Prop r (q +ℚ (rational-ℤ (int-ℕ 2) *ℚ ε)) ∧ L q ∧ U r) + exists (ℚ × ℚ) (λ (q , r) → le-ℚ-Prop q r ∧ leq-ℚ-Prop r (q +ℚ (ε +ℚ ε)) ∧ L q ∧ U r) lemma p ε zero-ℕ positive-ε p-in-L p-plus-1-ε-in-U = intro-exists (p , p +ℚ ε) ( le-right-add-rational-ℚ⁺ p (ε , positive-ε) , tr (leq-ℚ (p +ℚ ε)) - (equational-reasoning - (p +ℚ ε) +ℚ ε - = p +ℚ (ε +ℚ ε) by associative-add-ℚ p ε ε - = p +ℚ ((one-ℚ *ℚ ε) +ℚ (one-ℚ *ℚ ε)) - by ap (p +ℚ_) (inv (ap-add-ℚ (left-unit-law-mul-ℚ ε) (left-unit-law-mul-ℚ ε))) - = p +ℚ (? *ℚ ε) - by ap (p +ℚ_) (inv (right-distributive-mul-add-ℚ one-ℚ one-ℚ ε))) + (associative-add-ℚ p ε ε) (leq-le-ℚ (le-right-add-rational-ℚ⁺ (p +ℚ ε) (ε , positive-ε))) , p-in-L , - tr (is-in-subtype U) {! ap (p +ℚ_) (left-unit-law-mul-ℚ ε) !} p-plus-1-ε-in-U) + tr (is-in-subtype U) (ap (p +ℚ_) (left-unit-law-mul-ℚ ε)) p-plus-1-ε-in-U) located-inhabited-arithmetically-located : is-arithmetically-located L U From 2a069228a530bab1645ae0c743fb9c93d2465367 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 08:58:03 -0800 Subject: [PATCH 045/227] Fix performance! --- .../archimedean-property-rational-numbers.lagda.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md index c5f818f9a4..85c9f72e2e 100644 --- a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md @@ -1,6 +1,8 @@ # The Archimedean property of `ℚ` ```agda +{-# OPTIONS --lossy-unification #-} + module elementary-number-theory.archimedean-property-rational-numbers where ``` From a65a35b826ad3b1ebf4a9da4a8d3a60b51b14ced Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 16:05:33 -0800 Subject: [PATCH 046/227] Formatting --- ...medean-property-integer-fractions.lagda.md | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md index 281736386e..1d20da58d6 100644 --- a/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md +++ b/src/elementary-number-theory/archimedean-property-integer-fractions.lagda.md @@ -1,6 +1,8 @@ # The Archimedean property of integer fractions ```agda +{-# OPTIONS --lossy-unification #-} + module elementary-number-theory.archimedean-property-integer-fractions where ``` @@ -19,6 +21,7 @@ open import elementary-number-theory.strict-inequality-integer-fractions open import elementary-number-theory.strict-inequality-integers open import foundation.dependent-pair-types +open import foundation.existential-quantification open import foundation.identity-types open import foundation.transport-along-identifications ``` @@ -35,18 +38,26 @@ than `n` as an integer fraction times `x`. abstract archimedean-property-fraction-ℤ : (x y : fraction-ℤ) → - is-positive-fraction-ℤ x → - Σ ℕ (λ n → le-fraction-ℤ y (in-fraction-ℤ (int-ℕ n) *fraction-ℤ x)) - archimedean-property-fraction-ℤ (px , qx , pos-qx) (py , qy , pos-qy) pos-px = - ind-Σ - ( λ n H → - n , - tr - ( le-ℤ (py *ℤ qx)) - ( inv (associative-mul-ℤ (int-ℕ n) px qy)) - ( H)) - (archimedean-property-ℤ - ( px *ℤ qy) - ( py *ℤ qx) - ( is-positive-mul-ℤ pos-px pos-qy)) + is-positive-fraction-ℤ x → + exists + ℕ + (λ n → le-fraction-ℤ-Prop y (in-fraction-ℤ (int-ℕ n) *fraction-ℤ x)) + archimedean-property-fraction-ℤ + x@(px , qx , pos-qx) y@(py , qy , pos-qy) pos-px = + elim-exists + (∃ + ( ℕ) + ( λ n → + le-fraction-ℤ-Prop y (in-fraction-ℤ (int-ℕ n) *fraction-ℤ x))) + ( λ n H → + intro-exists + ( n) + ( tr + ( le-ℤ (py *ℤ qx)) + ( inv (associative-mul-ℤ (int-ℕ n) px qy)) + ( H))) + ( archimedean-property-ℤ + ( px *ℤ qy) + ( py *ℤ qx) + ( is-positive-mul-ℤ pos-px pos-qy)) ``` From 516b79550c8d9d3c9ddd215069337e992eedb792 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 16:06:20 -0800 Subject: [PATCH 047/227] Progress --- src/real-numbers/arithmetically-located-cuts.lagda.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index f30a7b7f67..0771c90fcc 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -142,6 +142,7 @@ module _ (leq-le-ℚ (le-right-add-rational-ℚ⁺ (p +ℚ ε) (ε , positive-ε))) , p-in-L , tr (is-in-subtype U) (ap (p +ℚ_) (left-unit-law-mul-ℚ ε)) p-plus-1-ε-in-U) + lemma p ε (succ-ℕ n) positive-ε located-inhabited-arithmetically-located : is-arithmetically-located L U From 418ac9c2da87951764079f7b86d871c3291dcd35 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 16:07:53 -0800 Subject: [PATCH 048/227] Lossy unification on arithmetically located cuts --- src/real-numbers/arithmetically-located-cuts.lagda.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 64fe156e07..ef630eef16 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -1,6 +1,8 @@ # Arithmetically located cuts ```agda +{-# OPTIONS --lossy-unification #-} + module real-numbers.arithmetically-located-cuts where ``` From 20b10d5e47a8c235dd2ebdf5897b500bd9fbd04a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 16:11:45 -0800 Subject: [PATCH 049/227] Write existentially --- ...imedean-property-rational-numbers.lagda.md | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md index 85c9f72e2e..dfbb611268 100644 --- a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md @@ -20,6 +20,7 @@ open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-binary-functions +open import foundation.existential-quantification open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.identity-types @@ -39,29 +40,28 @@ abstract archimedean-property-ℚ : (x y : ℚ) → is-positive-ℚ x → - Σ ℕ (λ n → le-ℚ y (rational-ℤ (int-ℕ n) *ℚ x)) - archimedean-property-ℚ x y positive-x - with - archimedean-property-fraction-ℤ (fraction-ℚ x) (fraction-ℚ y) positive-x - ... | n , nx Date: Mon, 3 Feb 2025 16:28:48 -0800 Subject: [PATCH 050/227] Progress --- .../arithmetically-located-cuts.lagda.md | 46 +++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index afdccc554e..d4664a7191 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -73,7 +73,7 @@ If a cut is arithmetically located and closed under strict inequality on the rational numbers, it is also located. ```agda -{- module _ +module _ {l : Level} (L : subtype l ℚ) (U : subtype l ℚ) @@ -118,7 +118,7 @@ rational numbers, it is also located. ( q -ℚ p) ( is-positive-le-zero-ℚ ( q -ℚ p) - ( backward-implication (iff-translate-diff-le-zero-ℚ p q) p Date: Mon, 3 Feb 2025 16:42:52 -0800 Subject: [PATCH 051/227] Inclusion of integers in rationals preserves addition --- .../addition-rational-numbers.lagda.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index 0a44c40118..023e8e3db5 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -10,7 +10,9 @@ module elementary-number-theory.addition-rational-numbers where ```agda open import elementary-number-theory.addition-integer-fractions +open import elementary-number-theory.addition-integers open import elementary-number-theory.integer-fractions +open import elementary-number-theory.integers open import elementary-number-theory.rational-numbers open import elementary-number-theory.reduced-integer-fractions @@ -182,6 +184,34 @@ abstract ( sim-reduced-fraction-ℤ y))) ``` +### The inclusion of integers preserves addition + +```agda +abstract + add-rational-ℤ : + (x y : ℤ) → + rational-ℤ x +ℚ rational-ℤ y = + rational-ℤ (x +ℤ y) + add-rational-ℤ x y = equational-reasoning + rational-ℤ x +ℚ rational-ℤ y + = rational-fraction-ℤ (in-fraction-ℤ x) +ℚ + rational-fraction-ℤ (in-fraction-ℤ y) + by ap-add-ℚ + ( inv (is-retraction-rational-fraction-ℚ (rational-ℤ x))) + ( inv (is-retraction-rational-fraction-ℚ (rational-ℤ y))) + = rational-fraction-ℤ (in-fraction-ℤ x +fraction-ℤ in-fraction-ℤ y) + by add-rational-fraction-ℤ (in-fraction-ℤ x) (in-fraction-ℤ y) + = rational-fraction-ℤ (in-fraction-ℤ (x +ℤ y)) + by eq-ℚ-sim-fraction-ℤ + ( in-fraction-ℤ x +fraction-ℤ in-fraction-ℤ y) + ( in-fraction-ℤ (x +ℤ y)) + ( add-in-fraction-ℤ x y) + = rational-ℤ (x +ℤ y) + by is-retraction-rational-fraction-ℚ (rational-ℤ (x +ℤ y)) + + +``` + ## See also - The additive group structure on the rational numbers is defined in From fec2116006621b3902e3a087e035e8cbb7070978 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 16:46:31 -0800 Subject: [PATCH 052/227] Remove unused space --- src/elementary-number-theory/addition-rational-numbers.lagda.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index 023e8e3db5..eb489f84f6 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -208,8 +208,6 @@ abstract ( add-in-fraction-ℤ x y) = rational-ℤ (x +ℤ y) by is-retraction-rational-fraction-ℚ (rational-ℤ (x +ℤ y)) - - ``` ## See also From 4d821243046031b5b854d98ad41f8035bf39f60c Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 17:35:20 -0800 Subject: [PATCH 053/227] Progress --- .../arithmetically-located-cuts.lagda.md | 75 ++++++++++++++----- 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index d4664a7191..46bb81797a 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -9,6 +9,7 @@ module real-numbers.arithmetically-located-cuts where
Imports ```agda +open import elementary-number-theory.addition-integers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.difference-rational-numbers @@ -132,34 +133,68 @@ module _ (located : (p q : ℚ) → le-ℚ p q → type-disjunction-Prop (L p) (U q)) where - lemma : (p ε : ℚ) → (n : ℕ) → is-positive-ℚ ε → is-in-subtype L p → is-in-subtype U (p +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε)) → - exists (ℚ × ℚ) (λ (q , r) → le-ℚ-Prop q r ∧ leq-ℚ-Prop r ((q +ℚ ε) +ℚ ε) ∧ L q ∧ U r) - lemma p ε zero-ℕ positive-ε p-in-L p-plus-1-ε-in-U = + arithmetic-location-in-arithmetic-sequence : + (p ε : ℚ) → + (n : ℕ) → + is-positive-ℚ ε → + is-in-subtype L p → + is-in-subtype U (p +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε)) → + exists + (ℚ × ℚ) + (λ (q , r) → le-ℚ-Prop q r ∧ leq-ℚ-Prop r ((q +ℚ ε) +ℚ ε) ∧ L q ∧ U r) + arithmetic-location-in-arithmetic-sequence + p ε zero-ℕ positive-ε p-in-L p-plus-1-ε-in-U = intro-exists - (p , p +ℚ ε) + ( p , p +ℚ ε) ( le-right-add-rational-ℚ⁺ p (ε , positive-ε) , - leq-le-ℚ (le-right-add-rational-ℚ⁺ (p +ℚ ε) (ε , positive-ε)) , + leq-le-ℚ + { p +ℚ ε} + { (p +ℚ ε) +ℚ ε} + ( le-right-add-rational-ℚ⁺ (p +ℚ ε) (ε , positive-ε)) , p-in-L , tr (is-in-subtype U) (ap (p +ℚ_) (left-unit-law-mul-ℚ ε)) p-plus-1-ε-in-U) - lemma p ε (succ-ℕ n) positive-ε p-in-L p-plus-sn-ε-in-U = + arithmetic-location-in-arithmetic-sequence + p ε (succ-ℕ n) positive-ε p-in-L p-plus-sn-ε-in-U = elim-disjunction - (∃ (ℚ × ℚ) (λ (q , r) → le-ℚ-Prop q r ∧ leq-ℚ-Prop r ((q +ℚ ε) +ℚ ε) ∧ L q ∧ U r)) + (∃ + ( ℚ × ℚ) + ( λ (q , r) → le-ℚ-Prop q r ∧ leq-ℚ-Prop r ((q +ℚ ε) +ℚ ε) ∧ L q ∧ U r)) (λ p+ε-in-L → - lemma - (p +ℚ ε) - ε - n - positive-ε - p+ε-in-L - (tr - (is-in-subtype U) - (equational-reasoning + arithmetic-location-in-arithmetic-sequence + ( p +ℚ ε) + ( ε) + ( n) + ( positive-ε) + ( p+ε-in-L) + ( tr + ( is-in-subtype U) + ( equational-reasoning p +ℚ (rational-ℤ (int-ℕ (succ-ℕ (succ-ℕ n))) *ℚ ε) - = p +ℚ (rational-ℤ (succ-ℤ (int-ℕ (succ-ℕ n))) *ℚ ε) + = p +ℚ (rational-ℤ (one-ℤ +ℤ int-ℕ (succ-ℕ n)) *ℚ ε) + by ap + ( λ x → p +ℚ (rational-ℤ x *ℚ ε)) + ( inv (succ-int-ℕ (succ-ℕ n))) + = p +ℚ ((one-ℚ +ℚ rational-ℤ (int-ℕ (succ-ℕ n))) *ℚ ε) + by ap + (λ x → p +ℚ (x *ℚ ε)) + (inv (add-rational-ℤ one-ℤ (int-ℕ (succ-ℕ n)))) + = p +ℚ ((one-ℚ *ℚ ε) +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε)) + by ap + ( p +ℚ_) + ( right-distributive-mul-add-ℚ + ( one-ℚ) + ( rational-ℤ (int-ℕ (succ-ℕ n))) + ( ε)) + = p +ℚ (ε +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε)) by ap - (λ x → p +ℚ (rational-ℤ x *ℚ ε)) - (inv (succ-int-ℕ (succ-ℕ n))) - = {! !} by {! !}) + ( λ x → p +ℚ (x +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε))) + ( left-unit-law-mul-ℚ ε) + = (p +ℚ ε) +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε) + by inv + ( associative-add-ℚ + ( p) + ( ε) + ( rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε))) p-plus-sn-ε-in-U)) (λ p+2ε-in-U → intro-exists From 4933835e0dc09fffef6cadb2787a17ef1c7bb9a6 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 18:07:43 -0800 Subject: [PATCH 054/227] All positive rationals have another positive rational at most half itself --- .../positive-rational-numbers.lagda.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/elementary-number-theory/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index 67053cbe1e..b3d6675cab 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -611,6 +611,28 @@ module _ le-right-min-ℚ⁺ = pr2 (pr2 strict-min-law-ℚ⁺) ``` +### Any positive rational number `p` has a `q` with `q + q < p` + +```agda +less-than-half-ℚ⁺ : + (p : ℚ⁺) → + Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) +less-than-half-ℚ⁺ p = + q , + tr + ( le-ℚ⁺ (q +ℚ⁺ q)) + ( eq-add-split-ℚ⁺ p) + ( preserves-le-add-ℚ + { rational-ℚ⁺ q} + { rational-ℚ⁺ (left-summand-split-ℚ⁺ p)} + { rational-ℚ⁺ q} + { rational-ℚ⁺ (right-summand-split-ℚ⁺ p)} + ( le-left-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p)) + ( le-right-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p))) + where q : ℚ⁺ + q = strict-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p) +``` + ### Addition with a positive rational number is an increasing map ```agda From 3ab21a2898a6646b462aac73d963cefe81648970 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 3 Feb 2025 20:13:08 -0800 Subject: [PATCH 055/227] Real numbers are arithmetically located --- src/elementary-number-theory.lagda.md | 1 + ...imedean-property-rational-numbers.lagda.md | 3 +- .../positive-rational-numbers.lagda.md | 35 +-- .../arithmetically-located-cuts.lagda.md | 234 +++++++++++------- 4 files changed, 162 insertions(+), 111 deletions(-) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 4e386617b5..befe9c31fc 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -18,6 +18,7 @@ open import elementary-number-theory.addition-positive-and-negative-integers pub open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public open import elementary-number-theory.archimedean-property-integer-fractions public +open import elementary-number-theory.archimedean-property-integers public open import elementary-number-theory.archimedean-property-natural-numbers public open import elementary-number-theory.archimedean-property-rational-numbers public open import elementary-number-theory.arithmetic-functions public diff --git a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md index dfbb611268..35d544f577 100644 --- a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md @@ -20,9 +20,9 @@ open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-binary-functions -open import foundation.existential-quantification open import foundation.binary-transport open import foundation.dependent-pair-types +open import foundation.existential-quantification open import foundation.identity-types open import foundation.universe-levels ``` @@ -65,3 +65,4 @@ abstract ( fraction-ℚ x) ( fraction-ℚ y) ( positive-x)) +``` diff --git a/src/elementary-number-theory/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index b3d6675cab..fa3b8d87d8 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -614,23 +614,24 @@ module _ ### Any positive rational number `p` has a `q` with `q + q < p` ```agda -less-than-half-ℚ⁺ : - (p : ℚ⁺) → - Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) -less-than-half-ℚ⁺ p = - q , - tr - ( le-ℚ⁺ (q +ℚ⁺ q)) - ( eq-add-split-ℚ⁺ p) - ( preserves-le-add-ℚ - { rational-ℚ⁺ q} - { rational-ℚ⁺ (left-summand-split-ℚ⁺ p)} - { rational-ℚ⁺ q} - { rational-ℚ⁺ (right-summand-split-ℚ⁺ p)} - ( le-left-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p)) - ( le-right-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p))) - where q : ℚ⁺ - q = strict-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p) +abstract + less-than-half-ℚ⁺ : + (p : ℚ⁺) → + Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) + less-than-half-ℚ⁺ p = + q , + tr + ( le-ℚ⁺ (q +ℚ⁺ q)) + ( eq-add-split-ℚ⁺ p) + ( preserves-le-add-ℚ + { rational-ℚ⁺ q} + { rational-ℚ⁺ (left-summand-split-ℚ⁺ p)} + { rational-ℚ⁺ q} + { rational-ℚ⁺ (right-summand-split-ℚ⁺ p)} + ( le-left-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p)) + ( le-right-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p))) + where q : ℚ⁺ + q = strict-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p) ``` ### Addition with a positive rational number is an increasing map diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 46bb81797a..97a67ba9d9 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -12,6 +12,7 @@ module real-numbers.arithmetically-located-cuts where open import elementary-number-theory.addition-integers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.archimedean-property-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.integers @@ -27,9 +28,11 @@ open import foundation.conjunction open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.disjunction +open import foundation.empty-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.logical-equivalences +open import foundation.negation open import foundation.propositions open import foundation.raising-universe-levels open import foundation.subtypes @@ -37,6 +40,8 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import group-theory.abelian-groups + +open import real-numbers.dedekind-real-numbers ```
@@ -65,7 +70,7 @@ module _ is-positive-ℚ ε → exists ( ℚ × ℚ) - ( λ (p , q) → le-ℚ-Prop p q ∧ le-ℚ-Prop q (p +ℚ ε) ∧ L p ∧ U q) + ( λ (p , q) → le-ℚ-Prop q (p +ℚ ε) ∧ L p ∧ U q) ``` ### Arithmetically located cuts are located @@ -90,7 +95,7 @@ module _ arithmetically-located lower-closed upper-closed p q p Date: Mon, 3 Feb 2025 20:46:17 -0800 Subject: [PATCH 056/227] Phrase in terms of positive-Q --- .../arithmetically-located-cuts.lagda.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 97a67ba9d9..84cd497788 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -66,11 +66,10 @@ module _ is-arithmetically-located : UU l is-arithmetically-located = - (ε : ℚ) → - is-positive-ℚ ε → + (ε : ℚ⁺) → exists ( ℚ × ℚ) - ( λ (p , q) → le-ℚ-Prop q (p +ℚ ε) ∧ L p ∧ U q) + ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε) ∧ L p ∧ U q) ``` ### Arithmetically located cuts are located @@ -121,10 +120,10 @@ module _ ( q'-in-u))) (decide-le-leq-ℚ p p')) ( arithmetically-located - ( q -ℚ p) - ( is-positive-le-zero-ℚ - ( q -ℚ p) - ( backward-implication (iff-translate-diff-le-zero-ℚ p q) p Date: Tue, 4 Feb 2025 14:57:40 -0800 Subject: [PATCH 057/227] Formatting --- .../positive-rational-numbers.lagda.md | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/elementary-number-theory/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index 4235a2b9d3..c182cb6867 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -614,23 +614,29 @@ module _ ### Any positive rational number `p` has a `q` with `q + q < p` ```agda -less-than-half-ℚ⁺ : - (p : ℚ⁺) → - Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) -less-than-half-ℚ⁺ p = - q , - tr - ( le-ℚ⁺ (q +ℚ⁺ q)) - ( eq-add-split-ℚ⁺ p) - ( preserves-le-add-ℚ - { rational-ℚ⁺ q} - { rational-ℚ⁺ (left-summand-split-ℚ⁺ p)} - { rational-ℚ⁺ q} - { rational-ℚ⁺ (right-summand-split-ℚ⁺ p)} - ( le-left-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p)) - ( le-right-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p))) - where q : ℚ⁺ - q = strict-min-ℚ⁺ (left-summand-split-ℚ⁺ p) (right-summand-split-ℚ⁺ p) +abstract + double-le-ℚ⁺ : + (p : ℚ⁺) → + Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) + double-le-ℚ⁺ p = + s , + tr + ( le-ℚ⁺ (s +ℚ⁺ s)) + ( eq-add-split-ℚ⁺ p) + ( preserves-le-add-ℚ + { rational-ℚ⁺ s} + { rational-ℚ⁺ q} + { rational-ℚ⁺ s} + { rational-ℚ⁺ r} + ( le-left-min-ℚ⁺ q r) + ( le-right-min-ℚ⁺ q r)) + where + q : ℚ⁺ + q = left-summand-split-ℚ⁺ p + r : ℚ⁺ + r = right-summand-split-ℚ⁺ p + s : ℚ⁺ + s = strict-min-ℚ⁺ q r ``` ### Addition with a positive rational number is an increasing map From ccc8e35906fd14c1398287dce0775fb855259544 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 4 Feb 2025 15:00:22 -0800 Subject: [PATCH 058/227] Renaming --- src/real-numbers/arithmetically-located-cuts.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 84cd497788..903af2d056 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -256,7 +256,7 @@ module _ ( q0-p0 Date: Tue, 4 Feb 2025 15:11:58 -0800 Subject: [PATCH 059/227] Reassociated conjunction is the identity --- src/group-theory/abelian-groups.lagda.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/group-theory/abelian-groups.lagda.md b/src/group-theory/abelian-groups.lagda.md index ab6e812b23..404bada441 100644 --- a/src/group-theory/abelian-groups.lagda.md +++ b/src/group-theory/abelian-groups.lagda.md @@ -601,6 +601,11 @@ module _ is-identity-conjugation-Ab x y = ( ap (add-Ab' A (neg-Ab A x)) (commutative-add-Ab A x y)) ∙ ( is-retraction-right-subtraction-Ab A x y) + + is-identity-conjugation-assoc-Ab' : + (x : type-Ab A) → (add-Ab A x ∘ add-Ab' A (neg-Ab A x)) ~ id + is-identity-conjugation-assoc-Ab' x y = + inv (associative-add-Ab A x y (neg-Ab A x)) ∙ is-identity-conjugation-Ab x y ``` ### Laws for conjugation and addition From 4e42e4eeabba34bbe45b554fc7a5b83f1e4b1ad8 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 4 Feb 2025 15:45:57 -0800 Subject: [PATCH 060/227] Rename --- src/group-theory/abelian-groups.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/group-theory/abelian-groups.lagda.md b/src/group-theory/abelian-groups.lagda.md index 404bada441..4ca5e8299a 100644 --- a/src/group-theory/abelian-groups.lagda.md +++ b/src/group-theory/abelian-groups.lagda.md @@ -602,9 +602,9 @@ module _ ( ap (add-Ab' A (neg-Ab A x)) (commutative-add-Ab A x y)) ∙ ( is-retraction-right-subtraction-Ab A x y) - is-identity-conjugation-assoc-Ab' : + is-identity-conjugation-assoc-Ab : (x : type-Ab A) → (add-Ab A x ∘ add-Ab' A (neg-Ab A x)) ~ id - is-identity-conjugation-assoc-Ab' x y = + is-identity-conjugation-assoc-Ab x y = inv (associative-add-Ab A x y (neg-Ab A x)) ∙ is-identity-conjugation-Ab x y ``` From ce9f11c9d1e7c8b7b6a8594700223a41641431b1 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 4 Feb 2025 15:50:33 -0800 Subject: [PATCH 061/227] Simplification --- src/real-numbers/arithmetically-located-cuts.lagda.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 903af2d056..91c1e9c69d 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -108,12 +108,7 @@ module _ ( q' Date: Tue, 4 Feb 2025 17:19:14 -0800 Subject: [PATCH 062/227] Make existential --- .../positive-rational-numbers.lagda.md | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/src/elementary-number-theory/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index c182cb6867..3387da3a9d 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -37,10 +37,12 @@ open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types open import foundation.equivalences +open import foundation.existential-quantification open import foundation.function-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.negation +open import foundation.propositional-truncations open import foundation.propositions open import foundation.sets open import foundation.subtypes @@ -617,26 +619,29 @@ module _ abstract double-le-ℚ⁺ : (p : ℚ⁺) → - Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) - double-le-ℚ⁺ p = - s , - tr - ( le-ℚ⁺ (s +ℚ⁺ s)) - ( eq-add-split-ℚ⁺ p) - ( preserves-le-add-ℚ - { rational-ℚ⁺ s} - { rational-ℚ⁺ q} - { rational-ℚ⁺ s} - { rational-ℚ⁺ r} - ( le-left-min-ℚ⁺ q r) - ( le-right-min-ℚ⁺ q r)) + exists ℚ⁺ (λ q → le-prop-ℚ⁺ (q +ℚ⁺ q) p) + double-le-ℚ⁺ p = unit-trunc-Prop dependent-pair-result where - q : ℚ⁺ - q = left-summand-split-ℚ⁺ p - r : ℚ⁺ - r = right-summand-split-ℚ⁺ p - s : ℚ⁺ - s = strict-min-ℚ⁺ q r + q : ℚ⁺ + q = left-summand-split-ℚ⁺ p + r : ℚ⁺ + r = right-summand-split-ℚ⁺ p + s : ℚ⁺ + s = strict-min-ℚ⁺ q r + -- Inlining this blows up compile times for some unclear reason. + dependent-pair-result : Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) + dependent-pair-result = + s , + tr + ( le-ℚ⁺ (s +ℚ⁺ s)) + ( eq-add-split-ℚ⁺ p) + ( preserves-le-add-ℚ + { rational-ℚ⁺ s} + { rational-ℚ⁺ q} + { rational-ℚ⁺ s} + { rational-ℚ⁺ r} + ( le-left-min-ℚ⁺ q r) + ( le-right-min-ℚ⁺ q r)) ``` ### Addition with a positive rational number is an increasing map From 4f1640ae031f8ffa7700ec64e53fd02c2185d3c2 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 4 Feb 2025 17:19:53 -0800 Subject: [PATCH 063/227] Rename variable --- src/elementary-number-theory/positive-rational-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index 3387da3a9d..63ae446cfa 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -629,7 +629,7 @@ abstract s : ℚ⁺ s = strict-min-ℚ⁺ q r -- Inlining this blows up compile times for some unclear reason. - dependent-pair-result : Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) + dependent-pair-result : Σ ℚ⁺ (λ x → le-ℚ⁺ (x +ℚ⁺ x) p) dependent-pair-result = s , tr From 3447a427f948200bf8ba77bac5d64f4bdfa03fa7 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 4 Feb 2025 18:20:34 -0800 Subject: [PATCH 064/227] Factor out a lemma --- .../arithmetically-located-cuts.lagda.md | 99 ++++++++++--------- 1 file changed, 55 insertions(+), 44 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 91c1e9c69d..82520d2f35 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -196,62 +196,73 @@ module _ ( (p +ℚ ε) +ℚ ε) ( le-right-add-rational-ℚ⁺ (p +ℚ ε) (ε , positive-ε))) + bounded-arithmetic-location-twice-ε : + (p q ε : ℚ) → + is-positive-ℚ ε → + is-in-lower-cut-ℝ x p → + is-in-upper-cut-ℝ x q → + exists + ℚ + ( λ r → + lower-cut-ℝ x r ∧ + upper-cut-ℝ x (r +ℚ ε +ℚ ε)) + bounded-arithmetic-location-twice-ε p q ε pos-ε p-in-L q-in-U = + elim-exists + ( ∃ ℚ ( λ r → lower-cut-ℝ x r ∧ upper-cut-ℝ x (r +ℚ ε +ℚ ε))) + ( λ n q-p Date: Tue, 4 Feb 2025 18:26:09 -0800 Subject: [PATCH 065/227] Fiddling around --- src/real-numbers/arithmetically-located-cuts.lagda.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 82520d2f35..1ac8236f8d 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -230,7 +230,6 @@ module _ ( q-in-U))) ( archimedean-property-ℚ ε (q -ℚ p) pos-ε) - abstract arithmetically-located-ℝ : is-arithmetically-located (lower-cut-ℝ x) (upper-cut-ℝ x) arithmetically-located-ℝ (ε , positive-ε) = @@ -267,8 +266,7 @@ module _ where claim : Prop l claim = - ∃ - ( ℚ × ℚ) + ∃ ( ℚ × ℚ) ( λ (p , q) → le-ℚ-Prop q (p +ℚ ε) ∧ lower-cut-ℝ x p ∧ From 724bb08e947583e6e6241efdc43b7085c685050b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 4 Feb 2025 19:18:41 -0800 Subject: [PATCH 066/227] Break up abstract blocks --- src/real-numbers/arithmetically-located-cuts.lagda.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 1ac8236f8d..c3b032a200 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -196,6 +196,7 @@ module _ ( (p +ℚ ε) +ℚ ε) ( le-right-add-rational-ℚ⁺ (p +ℚ ε) (ε , positive-ε))) + abstract bounded-arithmetic-location-twice-ε : (p q ε : ℚ) → is-positive-ℚ ε → @@ -230,6 +231,7 @@ module _ ( q-in-U))) ( archimedean-property-ℚ ε (q -ℚ p) pos-ε) + abstract arithmetically-located-ℝ : is-arithmetically-located (lower-cut-ℝ x) (upper-cut-ℝ x) arithmetically-located-ℝ (ε , positive-ε) = From b33b532f9a423f15dae24da757c3e6d4e3ad494b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 5 Feb 2025 09:48:29 -0800 Subject: [PATCH 067/227] Use new names for conjugation, simplify --- src/real-numbers/arithmetically-located-cuts.lagda.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index c3b032a200..eb8611716e 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -108,17 +108,14 @@ module _ ( q' Date: Wed, 5 Feb 2025 09:53:08 -0800 Subject: [PATCH 068/227] Fix indentation --- src/real-numbers/arithmetically-located-cuts.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index eb8611716e..26ea04d5ca 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -137,7 +137,7 @@ module _ arithmetic-location-in-arithmetic-sequence p ε zero-ℕ positive-ε p-in-L p-plus-0-ε-in-U = ex-falso - (is-disjoint-cut-ℝ + ( is-disjoint-cut-ℝ ( x) ( p) ( p-in-L , @@ -186,8 +186,8 @@ module _ ( ε) ( rational-ℤ (int-ℕ n) *ℚ ε))) p-plus-sn-ε-in-U)) - (λ p+2ε-in-U → intro-exists p (p-in-L , p+2ε-in-U)) - (is-located-lower-upper-cut-ℝ + ( λ p+2ε-in-U → intro-exists p (p-in-L , p+2ε-in-U)) + ( is-located-lower-upper-cut-ℝ ( x) ( p +ℚ ε) ( (p +ℚ ε) +ℚ ε) From 56c3c34f531e3ee4961cd98eca148957685634bb Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 5 Feb 2025 14:35:28 -0800 Subject: [PATCH 069/227] Prove lemma --- .../multiplication-rational-numbers.lagda.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/elementary-number-theory/multiplication-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-rational-numbers.lagda.md index 9e737e3487..d76c52ca4b 100644 --- a/src/elementary-number-theory/multiplication-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-rational-numbers.lagda.md @@ -348,6 +348,24 @@ abstract ( sim-reduced-fraction-ℤ y))) ``` +### `succ-ℤ x * p = p + (x * p)` + +```agda +left-mul-succ-rational-ℤ : + (x : ℤ) → + (p : ℚ) → + rational-ℤ (succ-ℤ x) *ℚ p = p +ℚ (rational-ℤ x *ℚ p) +left-mul-succ-rational-ℤ x p = + equational-reasoning + rational-ℤ (succ-ℤ x) *ℚ p + = (one-ℚ +ℚ rational-ℤ x) *ℚ p + by ap (_*ℚ p) (inv (add-rational-ℤ one-ℤ x)) + = (one-ℚ *ℚ p) +ℚ (rational-ℤ x *ℚ p) + by right-distributive-mul-add-ℚ one-ℚ (rational-ℤ x) p + = p +ℚ (rational-ℤ x *ℚ p) + by ap-add-ℚ (left-unit-law-mul-ℚ p) refl +``` + ## See also - The multiplicative monoid structure on the rational numbers is defined in From 7d3d8d907135231efdb75944e6bb20f93e4d0607 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 5 Feb 2025 14:41:05 -0800 Subject: [PATCH 070/227] Simplifications --- .../arithmetically-located-cuts.lagda.md | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 26ea04d5ca..1c3c321438 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -160,32 +160,19 @@ module _ ( is-in-upper-cut-ℝ x) ( equational-reasoning p +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε) - = p +ℚ (rational-ℤ (one-ℤ +ℤ int-ℕ n) *ℚ ε) + = p +ℚ (rational-ℤ (succ-ℤ (int-ℕ n)) *ℚ ε) by ap ( λ x → p +ℚ (rational-ℤ x *ℚ ε)) ( inv (succ-int-ℕ n)) - = p +ℚ ((one-ℚ +ℚ rational-ℤ (int-ℕ n)) *ℚ ε) - by ap - (λ x → p +ℚ (x *ℚ ε)) - (inv (add-rational-ℤ one-ℤ (int-ℕ n))) - = p +ℚ ((one-ℚ *ℚ ε) +ℚ (rational-ℤ (int-ℕ n) *ℚ ε)) - by ap - ( p +ℚ_) - ( right-distributive-mul-add-ℚ - ( one-ℚ) - ( rational-ℤ (int-ℕ n)) - ( ε)) - = p +ℚ (ε +ℚ (rational-ℤ (int-ℕ n) *ℚ ε)) - by ap - ( λ x → p +ℚ (x +ℚ (rational-ℤ (int-ℕ n) *ℚ ε))) - ( left-unit-law-mul-ℚ ε) + = p +ℚ (ε +ℚ rational-ℤ (int-ℕ n) *ℚ ε) + by ap (p +ℚ_) (left-mul-succ-rational-ℤ (int-ℕ n) ε) = (p +ℚ ε) +ℚ (rational-ℤ (int-ℕ n) *ℚ ε) by inv ( associative-add-ℚ ( p) ( ε) ( rational-ℤ (int-ℕ n) *ℚ ε))) - p-plus-sn-ε-in-U)) + ( p-plus-sn-ε-in-U))) ( λ p+2ε-in-U → intro-exists p (p-in-L , p+2ε-in-U)) ( is-located-lower-upper-cut-ℝ ( x) From a11024b6275856dd88fb9a3e7818df014ab53d6b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 5 Feb 2025 14:48:26 -0800 Subject: [PATCH 071/227] Minor fixes --- src/real-numbers/arithmetically-located-cuts.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 1c3c321438..7aaeb980ce 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -218,7 +218,7 @@ module _ abstract arithmetically-located-ℝ : is-arithmetically-located (lower-cut-ℝ x) (upper-cut-ℝ x) - arithmetically-located-ℝ (ε , positive-ε) = + arithmetically-located-ℝ ε⁺@(ε , positive-ε) = elim-exists ( claim) ( λ p p-in-L → @@ -230,7 +230,7 @@ module _ ( λ (ε' , pos-ε') 2ε'<ε → elim-exists ( claim) - ( λ r (r-in-L , r+2ε-in-U) → + ( λ r (r-in-L , r+2ε'-in-U) → intro-exists ( r , r +ℚ ε' +ℚ ε') ( tr @@ -238,7 +238,7 @@ module _ (inv (associative-add-ℚ r ε' ε')) (preserves-le-right-add-ℚ r (ε' +ℚ ε') ε 2ε'<ε) , r-in-L , - r+2ε-in-U)) + r+2ε'-in-U)) ( bounded-arithmetic-location-twice-ε ( p) ( q) @@ -246,7 +246,7 @@ module _ ( pos-ε') ( p-in-L) ( q-in-U))) - ( double-le-ℚ⁺ (ε , positive-ε))) + ( double-le-ℚ⁺ ε⁺)) ( is-inhabited-upper-cut-ℝ x)) ( is-inhabited-lower-cut-ℝ x) where From 9c8a622f6115fd94fe0513f1a129d0cab24a9d53 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 5 Feb 2025 15:41:45 -0800 Subject: [PATCH 072/227] Define successor and predecessor for Q --- .../addition-rational-numbers.lagda.md | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index eb489f84f6..63fb41968f 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -19,8 +19,12 @@ open import elementary-number-theory.reduced-integer-fractions open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types +open import foundation.equivalences open import foundation.identity-types +open import foundation.injective-maps open import foundation.interchange-law +open import foundation.retractions +open import foundation.sections ```
@@ -49,6 +53,16 @@ ap-add-ℚ : ap-add-ℚ p q = ap-binary add-ℚ p q ``` +### The successor and predecessor functions on `ℚ` + +```agda +succ-ℚ : ℚ → ℚ +succ-ℚ = add-ℚ one-ℚ + +pred-ℚ : ℚ → ℚ +pred-ℚ = add-ℚ neg-one-ℚ +``` + ## Properties ### Unit laws @@ -161,6 +175,50 @@ abstract ( distributive-neg-add-fraction-ℤ x y)) ``` +### The successor and predecessor functions on ℚ are mutual inverses + +```agda +abstract + is-retraction-pred-ℚ : is-retraction succ-ℚ pred-ℚ + is-retraction-pred-ℚ x = + equational-reasoning + neg-one-ℚ +ℚ (one-ℚ +ℚ x) + = (neg-one-ℚ +ℚ one-ℚ) +ℚ x + by inv (associative-add-ℚ neg-one-ℚ one-ℚ x) + = zero-ℚ +ℚ x + by ap (_+ℚ x) (left-inverse-law-add-ℚ one-ℚ) + = x by left-unit-law-add-ℚ x + + is-section-pred-ℚ : is-section succ-ℚ pred-ℚ + is-section-pred-ℚ x = equational-reasoning + one-ℚ +ℚ (neg-one-ℚ +ℚ x) + = (one-ℚ +ℚ neg-one-ℚ) +ℚ x + by inv (associative-add-ℚ one-ℚ neg-one-ℚ x) + = zero-ℚ +ℚ x + by ap (_+ℚ x) (right-inverse-law-add-ℚ one-ℚ) + = x by left-unit-law-add-ℚ x + + is-equiv-succ-ℚ : is-equiv succ-ℚ + pr1 (pr1 is-equiv-succ-ℚ) = pred-ℚ + pr2 (pr1 is-equiv-succ-ℚ) = is-section-pred-ℚ + pr1 (pr2 is-equiv-succ-ℚ) = pred-ℚ + pr2 (pr2 is-equiv-succ-ℚ) = is-retraction-pred-ℚ + + is-equiv-pred-ℚ : is-equiv pred-ℚ + pr1 (pr1 is-equiv-pred-ℚ) = succ-ℚ + pr2 (pr1 is-equiv-pred-ℚ) = is-retraction-pred-ℚ + pr1 (pr2 is-equiv-pred-ℚ) = succ-ℚ + pr2 (pr2 is-equiv-pred-ℚ) = is-section-pred-ℚ + +equiv-succ-ℚ : ℚ ≃ ℚ +pr1 equiv-succ-ℚ = succ-ℚ +pr2 equiv-succ-ℚ = is-equiv-succ-ℚ + +equiv-pred-ℚ : ℚ ≃ ℚ +pr1 equiv-pred-ℚ = pred-ℚ +pr2 equiv-pred-ℚ = is-equiv-pred-ℚ +``` + ### The inclusion of integer fractions preserves addition ```agda From c051079e719b4e7baf3b2c211a6045233537afff Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 5 Feb 2025 15:46:24 -0800 Subject: [PATCH 073/227] Prove successor relation for integers --- .../addition-rational-numbers.lagda.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index 63fb41968f..4bd4afc3d5 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -268,6 +268,14 @@ abstract by is-retraction-rational-fraction-ℚ (rational-ℤ (x +ℤ y)) ``` +### The rational successor of an integer is the successor of the integer + +```agda +abstract + succ-rational-ℤ : (x : ℤ) → succ-ℚ (rational-ℤ x) = rational-ℤ (succ-ℤ x) + succ-rational-ℤ = add-rational-ℤ one-ℤ +``` + ## See also - The additive group structure on the rational numbers is defined in From 9db0797313d70618c5ccac8e055fe4dac93126e1 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 5 Feb 2025 15:49:36 -0800 Subject: [PATCH 074/227] Reframe in terms of rational successor --- .../multiplication-rational-numbers.lagda.md | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/elementary-number-theory/multiplication-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-rational-numbers.lagda.md index d76c52ca4b..0f002738ba 100644 --- a/src/elementary-number-theory/multiplication-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-rational-numbers.lagda.md @@ -348,22 +348,18 @@ abstract ( sim-reduced-fraction-ℤ y))) ``` -### `succ-ℤ x * p = p + (x * p)` +### `succ-ℚ p * q = q + (p * q)` ```agda -left-mul-succ-rational-ℤ : - (x : ℤ) → - (p : ℚ) → - rational-ℤ (succ-ℤ x) *ℚ p = p +ℚ (rational-ℤ x *ℚ p) -left-mul-succ-rational-ℤ x p = +left-mul-succ-ℚ : + (p q : ℚ) → + (succ-ℚ p *ℚ q) = q +ℚ (p *ℚ q) +left-mul-succ-ℚ p q = equational-reasoning - rational-ℤ (succ-ℤ x) *ℚ p - = (one-ℚ +ℚ rational-ℤ x) *ℚ p - by ap (_*ℚ p) (inv (add-rational-ℤ one-ℤ x)) - = (one-ℚ *ℚ p) +ℚ (rational-ℤ x *ℚ p) - by right-distributive-mul-add-ℚ one-ℚ (rational-ℤ x) p - = p +ℚ (rational-ℤ x *ℚ p) - by ap-add-ℚ (left-unit-law-mul-ℚ p) refl + succ-ℚ p *ℚ q + = (one-ℚ *ℚ q) +ℚ (p *ℚ q) + by right-distributive-mul-add-ℚ one-ℚ p q + = q +ℚ (p *ℚ q) by ap-add-ℚ (left-unit-law-mul-ℚ q) refl ``` ## See also From 97eaa48e8411bc39395446b84d118b9d6ca3c671 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 5 Feb 2025 15:57:02 -0800 Subject: [PATCH 075/227] Merge changes to rational laws --- src/real-numbers/arithmetically-located-cuts.lagda.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 7aaeb980ce..3f860d28d3 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -164,14 +164,12 @@ module _ by ap ( λ x → p +ℚ (rational-ℤ x *ℚ ε)) ( inv (succ-int-ℕ n)) + = p +ℚ (succ-ℚ (rational-ℤ (int-ℕ n)) *ℚ ε) + by ap (p +ℚ_) (ap (_*ℚ ε) (inv (succ-rational-ℤ (int-ℕ n)))) = p +ℚ (ε +ℚ rational-ℤ (int-ℕ n) *ℚ ε) - by ap (p +ℚ_) (left-mul-succ-rational-ℤ (int-ℕ n) ε) + by ap (p +ℚ_) (left-mul-succ-ℚ (rational-ℤ (int-ℕ n)) ε) = (p +ℚ ε) +ℚ (rational-ℤ (int-ℕ n) *ℚ ε) - by inv - ( associative-add-ℚ - ( p) - ( ε) - ( rational-ℤ (int-ℕ n) *ℚ ε))) + by inv (associative-add-ℚ p ε (rational-ℤ (int-ℕ n) *ℚ ε))) ( p-plus-sn-ε-in-U))) ( λ p+2ε-in-U → intro-exists p (p-in-L , p+2ε-in-U)) ( is-located-lower-upper-cut-ℝ From 66c0ec8956f9a55978775668b749bd56aefa3040 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Feb 2025 10:53:47 -0800 Subject: [PATCH 076/227] Fix indentation --- .../arithmetically-located-cuts.lagda.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 7aaeb980ce..1bc41a67f6 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -93,11 +93,11 @@ module _ arithmetically-located-and-closed-located arithmetically-located lower-closed upper-closed p q p Date: Thu, 6 Feb 2025 15:45:35 -0800 Subject: [PATCH 077/227] Rename function --- src/real-numbers/arithmetically-located-cuts.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index 3f860d28d3..bca18799db 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -167,7 +167,7 @@ module _ = p +ℚ (succ-ℚ (rational-ℤ (int-ℕ n)) *ℚ ε) by ap (p +ℚ_) (ap (_*ℚ ε) (inv (succ-rational-ℤ (int-ℕ n)))) = p +ℚ (ε +ℚ rational-ℤ (int-ℕ n) *ℚ ε) - by ap (p +ℚ_) (left-mul-succ-ℚ (rational-ℤ (int-ℕ n)) ε) + by ap (p +ℚ_) (mul-left-succ-ℚ (rational-ℤ (int-ℕ n)) ε) = (p +ℚ ε) +ℚ (rational-ℤ (int-ℕ n) *ℚ ε) by inv (associative-add-ℚ p ε (rational-ℤ (int-ℕ n) *ℚ ε))) ( p-plus-sn-ε-in-U))) From 1cf43a6f44954c8cc12c6f716940cec145cb29e9 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Feb 2025 16:45:26 -0800 Subject: [PATCH 078/227] Indentation --- src/real-numbers/arithmetically-located-cuts.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/arithmetically-located-cuts.lagda.md b/src/real-numbers/arithmetically-located-cuts.lagda.md index d80ccc883d..0722d9b0bd 100644 --- a/src/real-numbers/arithmetically-located-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-cuts.lagda.md @@ -233,8 +233,8 @@ module _ ( r , r +ℚ ε' +ℚ ε') ( tr ( λ s → le-ℚ s (r +ℚ ε)) - (inv (associative-add-ℚ r ε' ε')) - (preserves-le-right-add-ℚ r (ε' +ℚ ε') ε 2ε'<ε) , + ( inv (associative-add-ℚ r ε' ε')) + ( preserves-le-right-add-ℚ r (ε' +ℚ ε') ε 2ε'<ε) , r-in-L , r+2ε'-in-U)) ( bounded-arithmetic-location-twice-ε From 358b164580f46f928da63943e97ad16ed7baa0f1 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Feb 2025 14:31:03 -0800 Subject: [PATCH 079/227] Use map-exists at least once --- ...thmetically-located-dedekind-cuts.lagda.md | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 3f802cdd31..1ba1bbd593 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -39,6 +39,8 @@ open import foundation.universe-levels open import group-theory.abelian-groups +open import logic.functoriality-existential-quantification + open import real-numbers.dedekind-real-numbers ``` @@ -232,17 +234,19 @@ module _ elim-exists ( claim) ( λ (ε' , pos-ε') 2ε'<ε → - elim-exists - ( claim) + map-exists + ( λ (p , q) → + le-ℚ q (p +ℚ ε) × + is-in-lower-cut-ℝ x p × + is-in-upper-cut-ℝ x q) + ( λ r → (r , r +ℚ ε' +ℚ ε')) ( λ r (r-in-L , r+2ε'-in-U) → - intro-exists - ( r , r +ℚ ε' +ℚ ε') - ( tr - ( λ s → le-ℚ s (r +ℚ ε)) - ( inv (associative-add-ℚ r ε' ε')) - ( preserves-le-right-add-ℚ r (ε' +ℚ ε') ε 2ε'<ε) , - r-in-L , - r+2ε'-in-U)) + tr + ( λ s → le-ℚ s (r +ℚ ε)) + ( inv (associative-add-ℚ r ε' ε')) + ( preserves-le-right-add-ℚ r (ε' +ℚ ε') ε 2ε'<ε) , + r-in-L , + r+2ε'-in-U) ( bounded-arithmetic-location-twice-ε ( p) ( q) From b50272d4b8c71305fffe738efa40ad6c560e44a4 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Feb 2025 16:37:04 -0800 Subject: [PATCH 080/227] Attempt to simplify --- ...thmetically-located-dedekind-cuts.lagda.md | 82 ++++++++----------- 1 file changed, 35 insertions(+), 47 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 1ba1bbd593..af26fd2034 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -141,18 +141,18 @@ module _ is-in-upper-cut-ℝ x (p +ℚ (rational-ℤ (int-ℕ n) *ℚ ε)) → exists ℚ ( λ q → lower-cut-ℝ x q ∧ upper-cut-ℝ x (q +ℚ ε +ℚ ε)) arithmetic-location-in-arithmetic-sequence - p ε zero-ℕ positive-ε p-in-L p-plus-0-ε-in-U = + p ε zero-ℕ positive-ε p Date: Sat, 8 Feb 2025 18:01:11 -0800 Subject: [PATCH 081/227] Rewrite with do statement --- ...thmetically-located-dedekind-cuts.lagda.md | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index af26fd2034..3dfe8ed33f 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -225,34 +225,33 @@ module _ ( lower-cut-ℝ x) ( upper-cut-ℝ x) arithmetically-located-lower-upper-cut-ℝ ε⁺@(ε , positive-ε) = - elim-exists - ( ∃ - ( ℚ × ℚ) - ( λ (p , q) → - le-ℚ-Prop q (p +ℚ ε) ∧ lower-cut-ℝ x p ∧ upper-cut-ℝ x q)) - ( λ (p , q , ε' , pos-ε') (p>=_ : + {l1 l2 : Level} {A : UU l1} {B : A -> UU l2} → + exists-structure A B → + (Σ A B -> type-Prop claim) -> type-Prop claim + x >>= f = elim-exists claim (ev-pair f) x ``` ## References From de0244bb6ae4e80be5769d9fa3211d38dcf56a11 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Feb 2025 18:03:30 -0800 Subject: [PATCH 082/227] Fix an arrow --- src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 3dfe8ed33f..fc4e708570 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -250,7 +250,7 @@ module _ _>>=_ : {l1 l2 : Level} {A : UU l1} {B : A -> UU l2} → exists-structure A B → - (Σ A B -> type-Prop claim) -> type-Prop claim + (Σ A B -> type-Prop claim) → type-Prop claim x >>= f = elim-exists claim (ev-pair f) x ``` From 03bf44ad7a0a2f1cedef740c7b79932569cb3dfd Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Feb 2025 19:38:46 -0800 Subject: [PATCH 083/227] Do syntax for elim-exists chains, including application to strict real inequality --- .../existential-quantification.lagda.md | 18 +++ .../strict-inequality-real-numbers.lagda.md | 152 +++++++----------- 2 files changed, 79 insertions(+), 91 deletions(-) diff --git a/src/foundation/existential-quantification.lagda.md b/src/foundation/existential-quantification.lagda.md index a15d2258a9..1cd6eb79f9 100644 --- a/src/foundation/existential-quantification.lagda.md +++ b/src/foundation/existential-quantification.lagda.md @@ -331,6 +331,24 @@ module _ eq-distributive-product-exists-structure P ``` +## Existential quantification `do` syntax + +When eliminating a chain of existential quantifications, which may be +interdependent, Agda's `do` syntax can eliminate many levels of nesting. + +```agda +module elim-exists-do + {l : Level} + (P : Prop l) + where + + _>>=_ : + {l1 l2 : Level} {A : UU l1} {B : A -> UU l2} → + exists-structure A B → + (Σ A B -> type-Prop P) -> type-Prop P + x >>= f = elim-exists P (ev-pair f) x +``` + ## See also - Existential quantification is the indexed counterpart to diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index c37393a0ca..da7259e97c 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -20,10 +20,12 @@ open import foundation.disjunction open import foundation.empty-types open import foundation.existential-quantification open import foundation.function-types +open import foundation.functoriality-cartesian-product-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.negation open import foundation.propositions +open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels @@ -90,28 +92,24 @@ module _ asymmetric-le-ℝ : le-ℝ x y → ¬ (le-ℝ y x) asymmetric-le-ℝ x Date: Sat, 8 Feb 2025 19:42:58 -0800 Subject: [PATCH 084/227] Simplifications and indentation --- .../strict-inequality-real-numbers.lagda.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index da7259e97c..d4ff970765 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -96,18 +96,14 @@ module _ p , x

Date: Sat, 8 Feb 2025 19:44:11 -0800 Subject: [PATCH 085/227] make pre-commit --- src/foundation/existential-quantification.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/existential-quantification.lagda.md b/src/foundation/existential-quantification.lagda.md index 1cd6eb79f9..eaf1a65d1c 100644 --- a/src/foundation/existential-quantification.lagda.md +++ b/src/foundation/existential-quantification.lagda.md @@ -343,7 +343,7 @@ module elim-exists-do where _>>=_ : - {l1 l2 : Level} {A : UU l1} {B : A -> UU l2} → + {l1 l2 : Level} {A : UU l1} {B : A -> UU l2} → exists-structure A B → (Σ A B -> type-Prop P) -> type-Prop P x >>= f = elim-exists P (ev-pair f) x From 5481940316c92867e55b94c467eb6c4187b9009b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 09:25:08 -0800 Subject: [PATCH 086/227] Updates --- .../existential-quantification.lagda.md | 26 +++++++++++++++-- .../strict-inequality-real-numbers.lagda.md | 28 +++++++++---------- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/foundation/existential-quantification.lagda.md b/src/foundation/existential-quantification.lagda.md index eaf1a65d1c..23d53d9417 100644 --- a/src/foundation/existential-quantification.lagda.md +++ b/src/foundation/existential-quantification.lagda.md @@ -334,10 +334,32 @@ module _ ## Existential quantification `do` syntax When eliminating a chain of existential quantifications, which may be -interdependent, Agda's `do` syntax can eliminate many levels of nesting. +interdependent, [Agda's `do` syntax](https://agda.readthedocs.io/en/stable/language/syntactic-sugar.html#do-notation) can eliminate many levels of nesting. + +For example, suppose we have + +```text +R : Prop l + +exists-a-p : exists A P +a-p-implies-b-q-exists : (a : A) → P a → exists B Q +a-b-p-q-implies-r : (a : A) (b : B) → P a → Q b → R +``` + +To deduce `R`, we could write + +```text +do + a , pa ← exists-a-p + b , qb ← a-p-implies-b-q-exists a pa + a-b-p-q-implies-r a b pa qb +where open do-syntax-elim-exists R +``` + +instead of a nested chain of `elim-exists`. ```agda -module elim-exists-do +module do-syntax-elim-exists {l : Level} (P : Prop l) where diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index d4ff970765..e6c6041f4b 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -105,7 +105,7 @@ module _ ( q) ( le-lower-upper-cut-ℝ y p q p Date: Sun, 9 Feb 2025 09:26:52 -0800 Subject: [PATCH 087/227] make pre-commit --- src/foundation/existential-quantification.lagda.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/foundation/existential-quantification.lagda.md b/src/foundation/existential-quantification.lagda.md index 23d53d9417..04483c575f 100644 --- a/src/foundation/existential-quantification.lagda.md +++ b/src/foundation/existential-quantification.lagda.md @@ -334,7 +334,9 @@ module _ ## Existential quantification `do` syntax When eliminating a chain of existential quantifications, which may be -interdependent, [Agda's `do` syntax](https://agda.readthedocs.io/en/stable/language/syntactic-sugar.html#do-notation) can eliminate many levels of nesting. +interdependent, +[Agda's `do` syntax](https://agda.readthedocs.io/en/stable/language/syntactic-sugar.html#do-notation) +can eliminate many levels of nesting. For example, suppose we have From e84f3ce826860e6f38873509b2a003be10f799a2 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 10:22:00 -0800 Subject: [PATCH 088/227] Define Minkowski multiplication for semigroups --- ...nkowski-multiplication-semigroups.lagda.md | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/group-theory/minkowski-multiplication-semigroups.lagda.md diff --git a/src/group-theory/minkowski-multiplication-semigroups.lagda.md b/src/group-theory/minkowski-multiplication-semigroups.lagda.md new file mode 100644 index 0000000000..1978d3b786 --- /dev/null +++ b/src/group-theory/minkowski-multiplication-semigroups.lagda.md @@ -0,0 +1,144 @@ +# Minkowski multiplication of semigroup subtypes + +```agda +module group-theory.minkowski-multiplication-semigroups where +``` + +

Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.cartesian-product-types +open import foundation.conjunction +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import group-theory.semigroups +``` + +
+ +## Idea + +For two subtypes `A`, `B` of a semigroup `S`, the Minkowski multiplication of `A` and `B` is the set +of elements that can be formed by multiplying an element of `A` and an element +of `B`. (This is more usually referred to as a Minkowski sum, but as the +operation on semigroups is referred to as `mul`, we use multiplicative +terminology.) + +## Definition + +```agda +module _ + {l1 l2 l3 : Level} + (G : Semigroup l1) + (A : subtype l2 (type-Semigroup G)) + (B : subtype l3 (type-Semigroup G)) + where + + minkowski-mul-Semigroup : subtype (l1 ⊔ l2 ⊔ l3) (type-Semigroup G) + minkowski-mul-Semigroup c = + ∃ + ( type-Semigroup G × type-Semigroup G) + ( λ (a , b) → + A a ∧ B b ∧ Id-Prop (set-Semigroup G) c (mul-Semigroup G a b)) +``` + +## Properties + +### Minkowski multiplication of semigroup subtypes is associative + +```agda +module _ + {l1 l2 l3 l4 : Level} + (G : Semigroup l1) + (A : subtype l2 (type-Semigroup G)) + (B : subtype l3 (type-Semigroup G)) + (C : subtype l4 (type-Semigroup G)) + where + + associative-minkowski-mul-has-same-elements-subtype-Semigroup : + has-same-elements-subtype + ( minkowski-mul-Semigroup G (minkowski-mul-Semigroup G A B) C) + ( minkowski-mul-Semigroup G A (minkowski-mul-Semigroup G B C)) + pr1 (associative-minkowski-mul-has-same-elements-subtype-Semigroup x) = + elim-exists + ( claim) + ( λ (ab , c) (ab∈AB , c∈C , x=ab*c) → + elim-exists + ( claim) + ( λ (a , b) (a∈A , b∈B , ab=a*b) → + intro-exists + ( a , mul-Semigroup G b c) + ( a∈A , + intro-exists (b , c) (b∈B , c∈C , refl) , + ( equational-reasoning + x + = mul-Semigroup G ab c by x=ab*c + = mul-Semigroup G (mul-Semigroup G a b) c + by ap (mul-Semigroup' G c) ab=a*b + = mul-Semigroup G a (mul-Semigroup G b c) + by associative-mul-Semigroup G a b c))) + ( ab∈AB)) + where + claim = + minkowski-mul-Semigroup G A (minkowski-mul-Semigroup G B C) x + pr2 (associative-minkowski-mul-has-same-elements-subtype-Semigroup x) = + elim-exists + ( claim) + ( λ (a , bc) (a∈A , bc∈BC , x=a*bc) → + elim-exists + ( claim) + ( λ (b , c) (b∈B , c∈C , bc=b*c) → + intro-exists + ( mul-Semigroup G a b , c) + ( intro-exists (a , b) (a∈A , b∈B , refl) , + c∈C , + ( equational-reasoning + x + = mul-Semigroup G a bc by x=a*bc + = mul-Semigroup G a (mul-Semigroup G b c) + by ap (mul-Semigroup G a) bc=b*c + = mul-Semigroup G (mul-Semigroup G a b) c + by inv (associative-mul-Semigroup G a b c)))) + ( bc∈BC)) + where + claim = + minkowski-mul-Semigroup G (minkowski-mul-Semigroup G A B) C x + + associative-minkowski-mul-Semigroup : + minkowski-mul-Semigroup G (minkowski-mul-Semigroup G A B) C = + minkowski-mul-Semigroup G A (minkowski-mul-Semigroup G B C) + associative-minkowski-mul-Semigroup = + eq-has-same-elements-subtype + ( minkowski-mul-Semigroup G (minkowski-mul-Semigroup G A B) C) + ( minkowski-mul-Semigroup G A (minkowski-mul-Semigroup G B C)) + ( associative-minkowski-mul-has-same-elements-subtype-Semigroup) +``` + +### Minkowski multiplication of subtypes of a semigroup forms a semigroup + +```agda +module _ + {l1 : Level} + (G : Semigroup l1) + where + + semigroup-minkowski-mul-Semigroup : + (l : Level) → Semigroup (lsuc l1 ⊔ lsuc l) + pr1 (semigroup-minkowski-mul-Semigroup l) = + subtype-Set (l1 ⊔ l) (type-Semigroup G) + pr1 (pr2 (semigroup-minkowski-mul-Semigroup l)) = minkowski-mul-Semigroup G + pr2 (pr2 (semigroup-minkowski-mul-Semigroup l)) = + associative-minkowski-mul-Semigroup G +``` + +## External links + +- [Minkowski addition](https://en.wikipedia.org/wiki/Minkowski_addition) at + Wikipedia From 4f547c83691fc800d61a68d06f0518ac0ad1b514 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 10:22:39 -0800 Subject: [PATCH 089/227] make pre-commit --- src/group-theory.lagda.md | 1 + .../minkowski-multiplication-semigroups.lagda.md | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/group-theory.lagda.md b/src/group-theory.lagda.md index 962a96a816..1233b0af98 100644 --- a/src/group-theory.lagda.md +++ b/src/group-theory.lagda.md @@ -116,6 +116,7 @@ open import group-theory.large-semigroups public open import group-theory.loop-groups-sets public open import group-theory.mere-equivalences-concrete-group-actions public open import group-theory.mere-equivalences-group-actions public +open import group-theory.minkowski-multiplication-semigroups public open import group-theory.monoid-actions public open import group-theory.monoids public open import group-theory.monomorphisms-concrete-groups public diff --git a/src/group-theory/minkowski-multiplication-semigroups.lagda.md b/src/group-theory/minkowski-multiplication-semigroups.lagda.md index 1978d3b786..e4a81a386c 100644 --- a/src/group-theory/minkowski-multiplication-semigroups.lagda.md +++ b/src/group-theory/minkowski-multiplication-semigroups.lagda.md @@ -25,11 +25,11 @@ open import group-theory.semigroups ## Idea -For two subtypes `A`, `B` of a semigroup `S`, the Minkowski multiplication of `A` and `B` is the set -of elements that can be formed by multiplying an element of `A` and an element -of `B`. (This is more usually referred to as a Minkowski sum, but as the -operation on semigroups is referred to as `mul`, we use multiplicative -terminology.) +For two subtypes `A`, `B` of a semigroup `S`, the Minkowski multiplication of +`A` and `B` is the set of elements that can be formed by multiplying an element +of `A` and an element of `B`. (This is more usually referred to as a Minkowski +sum, but as the operation on semigroups is referred to as `mul`, we use +multiplicative terminology.) ## Definition From ab87dac060d95050de28e5aa81fd4830ceb99c50 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 11:15:39 -0800 Subject: [PATCH 090/227] Add monoids and commutative monoids --- ...ultiplication-commutative-monoids.lagda.md | 116 +++++++++++++++ .../minkowski-multiplication-monoids.lagda.md | 138 ++++++++++++++++++ ...nkowski-multiplication-semigroups.lagda.md | 17 +-- src/group-theory/monoids.lagda.md | 6 + 4 files changed, 268 insertions(+), 9 deletions(-) create mode 100644 src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md create mode 100644 src/group-theory/minkowski-multiplication-monoids.lagda.md diff --git a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md new file mode 100644 index 0000000000..f85d234c4a --- /dev/null +++ b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md @@ -0,0 +1,116 @@ +# Minkowski multiplication of commutative monoid subtypes + +```agda +module group-theory.minkowski-multiplication-commutative-monoids where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.powersets +open import foundation.subtypes +open import foundation.universe-levels + +open import group-theory.minkowski-multiplication-monoids +open import group-theory.commutative-monoids +open import group-theory.monoids +``` + +
+ +## Idea + +For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a +[commutative monoid](group-theory.commutative-monoids.md) `M`, the Minkowski multiplication of +`A` and `B` is the set of elements that can be formed by multiplying an element +of `A` and an element of `B`. (This is more usually referred to as a Minkowski +sum, but as the operation on commutative monoids is referred to as `mul`, we use +multiplicative terminology.) + +## Definition + +```agda +module _ + {l1 l2 l3 : Level} + (M : Commutative-Monoid l1) + (A : subtype l2 (type-Commutative-Monoid M)) + (B : subtype l3 (type-Commutative-Monoid M)) + where + + minkowski-mul-Commutative-Monoid : + subtype (l1 ⊔ l2 ⊔ l3) (type-Commutative-Monoid M) + minkowski-mul-Commutative-Monoid = + minkowski-mul-Monoid (monoid-Commutative-Monoid M) A B +``` + +## Properties + +### Minkowski multiplication on a commutative monoid is commutative + +```agda +module _ + {l1 l2 l3 : Level} + (M : Commutative-Monoid l1) + (A : subtype l2 (type-Commutative-Monoid M)) + (B : subtype l3 (type-Commutative-Monoid M)) + where + + commutative-minkowski-mul-leq-Commutative-Monoid : + minkowski-mul-Commutative-Monoid M A B ⊆ + minkowski-mul-Commutative-Monoid M B A + commutative-minkowski-mul-leq-Commutative-Monoid x = + elim-exists + (minkowski-mul-Commutative-Monoid M B A x) + ( λ (a , b) (a∈A , b∈B , x=ab) → + intro-exists + ( b , a) + ( b∈B , a∈A , x=ab ∙ commutative-mul-Commutative-Monoid M a b)) + +module _ + {l1 l2 l3 : Level} + (M : Commutative-Monoid l1) + (A : subtype l2 (type-Commutative-Monoid M)) + (B : subtype l3 (type-Commutative-Monoid M)) + where + + commutative-minkowski-mul-Commutative-Monoid : + minkowski-mul-Commutative-Monoid M A B = + minkowski-mul-Commutative-Monoid M B A + commutative-minkowski-mul-Commutative-Monoid = + antisymmetric-sim-subtype + ( minkowski-mul-Commutative-Monoid M A B) + ( minkowski-mul-Commutative-Monoid M B A) + ( commutative-minkowski-mul-leq-Commutative-Monoid M A B , + commutative-minkowski-mul-leq-Commutative-Monoid M B A) +``` + +### Minkowski multiplication on a commutative monoid is a commutative monoid + +```agda +module _ + {l : Level} + (M : Commutative-Monoid l) + where + + commutative-monoid-minkowski-mul-Commutative-Monoid : + Commutative-Monoid (lsuc l) + pr1 commutative-monoid-minkowski-mul-Commutative-Monoid = + monoid-minkowski-mul-Monoid (monoid-Commutative-Monoid M) + pr2 commutative-monoid-minkowski-mul-Commutative-Monoid = + commutative-minkowski-mul-Commutative-Monoid M +``` + +## See also + +- Minkowski multiplication on semigroups is defined in + [`group-theory.minkowski-multiplication-semigroups`](group-theory.minkowski-multiplication-semigroups.md). +- Minkowski multiplication on monoids is defined in + [`group-theory.minkowski-multiplication-monoids`](group-theory.minkowski-multiplication-monoids.md). + +## External links + +- [Minkowski addition](https://en.wikipedia.org/wiki/Minkowski_addition) at + Wikipedia diff --git a/src/group-theory/minkowski-multiplication-monoids.lagda.md b/src/group-theory/minkowski-multiplication-monoids.lagda.md new file mode 100644 index 0000000000..88de396de6 --- /dev/null +++ b/src/group-theory/minkowski-multiplication-monoids.lagda.md @@ -0,0 +1,138 @@ +# Minkowski multiplication of monoid subtypes + +```agda +module group-theory.minkowski-multiplication-monoids where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.powersets +open import foundation.unital-binary-operations +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.minkowski-multiplication-semigroups +open import group-theory.monoids +open import group-theory.semigroups +``` + +
+ +## Idea + +For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a +[monoid](group-theory.monoids.md) `M`, the Minkowski multiplication of +`A` and `B` is the set of elements that can be formed by multiplying an element +of `A` and an element of `B`. (This is more usually referred to as a Minkowski +sum, but as the operation on monoids is referred to as `mul`, we use +multiplicative terminology.) + +## Definition + +```agda +module _ + {l1 l2 l3 : Level} + (M : Monoid l1) + (A : subtype l2 (type-Monoid M)) + (B : subtype l3 (type-Monoid M)) + where + + minkowski-mul-Monoid : subtype (l1 ⊔ l2 ⊔ l3) (type-Monoid M) + minkowski-mul-Monoid = minkowski-mul-Semigroup (semigroup-Monoid M) A B +``` + +## Properties + +### Unit laws for Minkowski multiplication of semigroup subtypes + +```agda +module _ + {l1 l2 : Level} + (M : Monoid l1) + (A : subtype l2 (type-Monoid M)) + where + + left-unit-law-minkowski-mul-Monoid : + sim-subtype (minkowski-mul-Monoid M (is-unit-Monoid-Prop M) A) A + pr1 left-unit-law-minkowski-mul-Monoid a = + elim-exists + ( A a) + ( λ (z , a') (z=1 , a'∈A , a=za') → + tr + ( is-in-subtype A) + ( inv + ( equational-reasoning + a + = mul-Monoid M z a' by a=za' + = mul-Monoid M (unit-Monoid M) a' by ap (mul-Monoid' M a') z=1 + = a' by left-unit-law-mul-Monoid M a')) + ( a'∈A)) + pr2 left-unit-law-minkowski-mul-Monoid a a∈A = + intro-exists + ( unit-Monoid M , a) + ( refl , a∈A , inv (left-unit-law-mul-Monoid M a)) + + right-unit-law-minkowski-mul-Monoid : + sim-subtype (minkowski-mul-Monoid M A (is-unit-Monoid-Prop M)) A + pr1 right-unit-law-minkowski-mul-Monoid a = + elim-exists + ( A a) + ( λ (a' , z) (a'∈A , z=1 , a=a'z) → + tr + ( is-in-subtype A) + ( inv + ( equational-reasoning + a + = mul-Monoid M a' z by a=a'z + = mul-Monoid M a' (unit-Monoid M) by ap (mul-Monoid M a') z=1 + = a' by right-unit-law-mul-Monoid M a')) + ( a'∈A)) + pr2 right-unit-law-minkowski-mul-Monoid a a∈A = + intro-exists + ( a , unit-Monoid M) + ( a∈A , refl , inv (right-unit-law-mul-Monoid M a)) +``` + +### Minkowski multiplication of subtypes of a monoid forms a monoid + +```agda +module _ + {l : Level} + (M : Monoid l) + where + + is-unital-minkowski-mul-Monoid : + is-unital (minkowski-mul-Monoid {l} {l} {l} M) + pr1 is-unital-minkowski-mul-Monoid = is-unit-Monoid-Prop M + pr1 (pr2 is-unital-minkowski-mul-Monoid) A = + antisymmetric-sim-subtype + ( minkowski-mul-Monoid M (is-unit-Monoid-Prop M) A) + ( A) + ( left-unit-law-minkowski-mul-Monoid M A) + pr2 (pr2 is-unital-minkowski-mul-Monoid) A = + antisymmetric-sim-subtype + ( minkowski-mul-Monoid M A (is-unit-Monoid-Prop M)) + ( A) + ( right-unit-law-minkowski-mul-Monoid M A) + + monoid-minkowski-mul-Monoid : Monoid (lsuc l) + pr1 monoid-minkowski-mul-Monoid = + semigroup-minkowski-mul-Semigroup (semigroup-Monoid M) + pr2 monoid-minkowski-mul-Monoid = is-unital-minkowski-mul-Monoid +``` + +## See also + +- Minkowski multiplication on semigroups is defined in + [`group-theory.minkowski-multiplication-semigroups`](group-theory.minkowski-multiplication-semigroups.md). + +## External links + +- [Minkowski addition](https://en.wikipedia.org/wiki/Minkowski_addition) at + Wikipedia diff --git a/src/group-theory/minkowski-multiplication-semigroups.lagda.md b/src/group-theory/minkowski-multiplication-semigroups.lagda.md index e4a81a386c..4fd589d0d2 100644 --- a/src/group-theory/minkowski-multiplication-semigroups.lagda.md +++ b/src/group-theory/minkowski-multiplication-semigroups.lagda.md @@ -25,7 +25,8 @@ open import group-theory.semigroups ## Idea -For two subtypes `A`, `B` of a semigroup `S`, the Minkowski multiplication of +For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a +[semigroup](group-theory.semigroups.md) `S`, the Minkowski multiplication of `A` and `B` is the set of elements that can be formed by multiplying an element of `A` and an element of `B`. (This is more usually referred to as a Minkowski sum, but as the operation on semigroups is referred to as `mul`, we use @@ -125,16 +126,14 @@ module _ ```agda module _ - {l1 : Level} - (G : Semigroup l1) + {l : Level} + (G : Semigroup l) where - semigroup-minkowski-mul-Semigroup : - (l : Level) → Semigroup (lsuc l1 ⊔ lsuc l) - pr1 (semigroup-minkowski-mul-Semigroup l) = - subtype-Set (l1 ⊔ l) (type-Semigroup G) - pr1 (pr2 (semigroup-minkowski-mul-Semigroup l)) = minkowski-mul-Semigroup G - pr2 (pr2 (semigroup-minkowski-mul-Semigroup l)) = + semigroup-minkowski-mul-Semigroup : Semigroup (lsuc l) + pr1 semigroup-minkowski-mul-Semigroup = subtype-Set l (type-Semigroup G) + pr1 (pr2 semigroup-minkowski-mul-Semigroup) = minkowski-mul-Semigroup G + pr2 (pr2 semigroup-minkowski-mul-Semigroup) = associative-minkowski-mul-Semigroup G ``` diff --git a/src/group-theory/monoids.lagda.md b/src/group-theory/monoids.lagda.md index 1e76dbc225..6a0c542cfc 100644 --- a/src/group-theory/monoids.lagda.md +++ b/src/group-theory/monoids.lagda.md @@ -82,6 +82,12 @@ module _ unit-Monoid : type-Monoid unit-Monoid = pr1 has-unit-Monoid + is-unit-Monoid-Prop : type-Monoid → Prop l + is-unit-Monoid-Prop x = Id-Prop set-Monoid x unit-Monoid + + is-unit-Monoid : type-Monoid → UU l + is-unit-Monoid x = x = unit-Monoid + left-unit-law-mul-Monoid : (x : type-Monoid) → mul-Monoid unit-Monoid x = x left-unit-law-mul-Monoid = pr1 (pr2 has-unit-Monoid) From 1f8bb30ec86e99692a98eecfcc9f829029aa45ac Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 11:16:52 -0800 Subject: [PATCH 091/227] make pre-commit --- src/group-theory.lagda.md | 2 ++ ...owski-multiplication-commutative-monoids.lagda.md | 12 ++++++------ .../minkowski-multiplication-monoids.lagda.md | 12 ++++++------ .../minkowski-multiplication-semigroups.lagda.md | 8 ++++---- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/group-theory.lagda.md b/src/group-theory.lagda.md index 1233b0af98..3c4fb0e591 100644 --- a/src/group-theory.lagda.md +++ b/src/group-theory.lagda.md @@ -116,6 +116,8 @@ open import group-theory.large-semigroups public open import group-theory.loop-groups-sets public open import group-theory.mere-equivalences-concrete-group-actions public open import group-theory.mere-equivalences-group-actions public +open import group-theory.minkowski-multiplication-commutative-monoids public +open import group-theory.minkowski-multiplication-monoids public open import group-theory.minkowski-multiplication-semigroups public open import group-theory.monoid-actions public open import group-theory.monoids public diff --git a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md index f85d234c4a..90d8c9c2a6 100644 --- a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md @@ -14,8 +14,8 @@ open import foundation.powersets open import foundation.subtypes open import foundation.universe-levels -open import group-theory.minkowski-multiplication-monoids open import group-theory.commutative-monoids +open import group-theory.minkowski-multiplication-monoids open import group-theory.monoids ``` @@ -24,11 +24,11 @@ open import group-theory.monoids ## Idea For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a -[commutative monoid](group-theory.commutative-monoids.md) `M`, the Minkowski multiplication of -`A` and `B` is the set of elements that can be formed by multiplying an element -of `A` and an element of `B`. (This is more usually referred to as a Minkowski -sum, but as the operation on commutative monoids is referred to as `mul`, we use -multiplicative terminology.) +[commutative monoid](group-theory.commutative-monoids.md) `M`, the Minkowski +multiplication of `A` and `B` is the set of elements that can be formed by +multiplying an element of `A` and an element of `B`. (This is more usually +referred to as a Minkowski sum, but as the operation on commutative monoids is +referred to as `mul`, we use multiplicative terminology.) ## Definition diff --git a/src/group-theory/minkowski-multiplication-monoids.lagda.md b/src/group-theory/minkowski-multiplication-monoids.lagda.md index 88de396de6..34ceb6b961 100644 --- a/src/group-theory/minkowski-multiplication-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-monoids.lagda.md @@ -12,9 +12,9 @@ open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.powersets -open import foundation.unital-binary-operations open import foundation.subtypes open import foundation.transport-along-identifications +open import foundation.unital-binary-operations open import foundation.universe-levels open import group-theory.minkowski-multiplication-semigroups @@ -27,11 +27,11 @@ open import group-theory.semigroups ## Idea For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a -[monoid](group-theory.monoids.md) `M`, the Minkowski multiplication of -`A` and `B` is the set of elements that can be formed by multiplying an element -of `A` and an element of `B`. (This is more usually referred to as a Minkowski -sum, but as the operation on monoids is referred to as `mul`, we use -multiplicative terminology.) +[monoid](group-theory.monoids.md) `M`, the Minkowski multiplication of `A` and +`B` is the set of elements that can be formed by multiplying an element of `A` +and an element of `B`. (This is more usually referred to as a Minkowski sum, but +as the operation on monoids is referred to as `mul`, we use multiplicative +terminology.) ## Definition diff --git a/src/group-theory/minkowski-multiplication-semigroups.lagda.md b/src/group-theory/minkowski-multiplication-semigroups.lagda.md index 4fd589d0d2..3c6e307454 100644 --- a/src/group-theory/minkowski-multiplication-semigroups.lagda.md +++ b/src/group-theory/minkowski-multiplication-semigroups.lagda.md @@ -26,10 +26,10 @@ open import group-theory.semigroups ## Idea For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a -[semigroup](group-theory.semigroups.md) `S`, the Minkowski multiplication of -`A` and `B` is the set of elements that can be formed by multiplying an element -of `A` and an element of `B`. (This is more usually referred to as a Minkowski -sum, but as the operation on semigroups is referred to as `mul`, we use +[semigroup](group-theory.semigroups.md) `S`, the Minkowski multiplication of `A` +and `B` is the set of elements that can be formed by multiplying an element of +`A` and an element of `B`. (This is more usually referred to as a Minkowski sum, +but as the operation on semigroups is referred to as `mul`, we use multiplicative terminology.) ## Definition From 4581333c10e4b668df65a2f0a33378d7c1e28e78 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 11:27:12 -0800 Subject: [PATCH 092/227] Use subset syntax --- ...ultiplication-commutative-monoids.lagda.md | 17 +++++----- .../minkowski-multiplication-monoids.lagda.md | 13 ++++---- ...nkowski-multiplication-semigroups.lagda.md | 32 ++++++++++--------- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md index 90d8c9c2a6..1d5453d267 100644 --- a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md @@ -17,13 +17,14 @@ open import foundation.universe-levels open import group-theory.commutative-monoids open import group-theory.minkowski-multiplication-monoids open import group-theory.monoids +open import group-theory.subsets-commutative-monoids ``` ## Idea -For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a +For two [subsets](group-theory.subsets-commutative-monoids.md) `A`, `B` of a [commutative monoid](group-theory.commutative-monoids.md) `M`, the Minkowski multiplication of `A` and `B` is the set of elements that can be formed by multiplying an element of `A` and an element of `B`. (This is more usually @@ -36,12 +37,12 @@ referred to as `mul`, we use multiplicative terminology.) module _ {l1 l2 l3 : Level} (M : Commutative-Monoid l1) - (A : subtype l2 (type-Commutative-Monoid M)) - (B : subtype l3 (type-Commutative-Monoid M)) + (A : subset-Commutative-Monoid l2 M) + (B : subset-Commutative-Monoid l3 M) where minkowski-mul-Commutative-Monoid : - subtype (l1 ⊔ l2 ⊔ l3) (type-Commutative-Monoid M) + subset-Commutative-Monoid (l1 ⊔ l2 ⊔ l3) M minkowski-mul-Commutative-Monoid = minkowski-mul-Monoid (monoid-Commutative-Monoid M) A B ``` @@ -54,8 +55,8 @@ module _ module _ {l1 l2 l3 : Level} (M : Commutative-Monoid l1) - (A : subtype l2 (type-Commutative-Monoid M)) - (B : subtype l3 (type-Commutative-Monoid M)) + (A : subset-Commutative-Monoid l2 M) + (B : subset-Commutative-Monoid l3 M) where commutative-minkowski-mul-leq-Commutative-Monoid : @@ -72,8 +73,8 @@ module _ module _ {l1 l2 l3 : Level} (M : Commutative-Monoid l1) - (A : subtype l2 (type-Commutative-Monoid M)) - (B : subtype l3 (type-Commutative-Monoid M)) + (A : subset-Commutative-Monoid l2 M) + (B : subset-Commutative-Monoid l3 M) where commutative-minkowski-mul-Commutative-Monoid : diff --git a/src/group-theory/minkowski-multiplication-monoids.lagda.md b/src/group-theory/minkowski-multiplication-monoids.lagda.md index 34ceb6b961..6d51224108 100644 --- a/src/group-theory/minkowski-multiplication-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-monoids.lagda.md @@ -20,13 +20,14 @@ open import foundation.universe-levels open import group-theory.minkowski-multiplication-semigroups open import group-theory.monoids open import group-theory.semigroups +open import group-theory.subsets-monoids ``` ## Idea -For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a +For two [subsets](group-theory.subsets-monoids.md) `A`, `B` of a [monoid](group-theory.monoids.md) `M`, the Minkowski multiplication of `A` and `B` is the set of elements that can be formed by multiplying an element of `A` and an element of `B`. (This is more usually referred to as a Minkowski sum, but @@ -39,23 +40,23 @@ terminology.) module _ {l1 l2 l3 : Level} (M : Monoid l1) - (A : subtype l2 (type-Monoid M)) - (B : subtype l3 (type-Monoid M)) + (A : subset-Monoid l2 M) + (B : subset-Monoid l3 M) where - minkowski-mul-Monoid : subtype (l1 ⊔ l2 ⊔ l3) (type-Monoid M) + minkowski-mul-Monoid : subset-Monoid (l1 ⊔ l2 ⊔ l3) M minkowski-mul-Monoid = minkowski-mul-Semigroup (semigroup-Monoid M) A B ``` ## Properties -### Unit laws for Minkowski multiplication of semigroup subtypes +### Unit laws for Minkowski multiplication of monoid subsets ```agda module _ {l1 l2 : Level} (M : Monoid l1) - (A : subtype l2 (type-Monoid M)) + (A : subset-Monoid l2 M) where left-unit-law-minkowski-mul-Monoid : diff --git a/src/group-theory/minkowski-multiplication-semigroups.lagda.md b/src/group-theory/minkowski-multiplication-semigroups.lagda.md index 3c6e307454..0587640fe3 100644 --- a/src/group-theory/minkowski-multiplication-semigroups.lagda.md +++ b/src/group-theory/minkowski-multiplication-semigroups.lagda.md @@ -13,19 +13,21 @@ open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types +open import foundation.powersets open import foundation.propositions open import foundation.sets open import foundation.subtypes open import foundation.universe-levels open import group-theory.semigroups +open import group-theory.subsets-semigroups ``` ## Idea -For two [subtypes](foundation-core.subtypes.md) `A`, `B` of a +For two [subsets](group-theory.subsets-semigroups.md) `A`, `B` of a [semigroup](group-theory.semigroups.md) `S`, the Minkowski multiplication of `A` and `B` is the set of elements that can be formed by multiplying an element of `A` and an element of `B`. (This is more usually referred to as a Minkowski sum, @@ -38,11 +40,11 @@ multiplicative terminology.) module _ {l1 l2 l3 : Level} (G : Semigroup l1) - (A : subtype l2 (type-Semigroup G)) - (B : subtype l3 (type-Semigroup G)) + (A : subset-Semigroup l2 G) + (B : subset-Semigroup l3 G) where - minkowski-mul-Semigroup : subtype (l1 ⊔ l2 ⊔ l3) (type-Semigroup G) + minkowski-mul-Semigroup : subset-Semigroup (l1 ⊔ l2 ⊔ l3) G minkowski-mul-Semigroup c = ∃ ( type-Semigroup G × type-Semigroup G) @@ -52,22 +54,22 @@ module _ ## Properties -### Minkowski multiplication of semigroup subtypes is associative +### Minkowski multiplication of semigroup subsets is associative ```agda module _ {l1 l2 l3 l4 : Level} (G : Semigroup l1) - (A : subtype l2 (type-Semigroup G)) - (B : subtype l3 (type-Semigroup G)) - (C : subtype l4 (type-Semigroup G)) + (A : subset-Semigroup l2 G) + (B : subset-Semigroup l3 G) + (C : subset-Semigroup l4 G) where - associative-minkowski-mul-has-same-elements-subtype-Semigroup : - has-same-elements-subtype + associative-minkowski-mul-sim-Semigroup : + sim-subtype ( minkowski-mul-Semigroup G (minkowski-mul-Semigroup G A B) C) ( minkowski-mul-Semigroup G A (minkowski-mul-Semigroup G B C)) - pr1 (associative-minkowski-mul-has-same-elements-subtype-Semigroup x) = + pr1 associative-minkowski-mul-sim-Semigroup x = elim-exists ( claim) ( λ (ab , c) (ab∈AB , c∈C , x=ab*c) → @@ -89,7 +91,7 @@ module _ where claim = minkowski-mul-Semigroup G A (minkowski-mul-Semigroup G B C) x - pr2 (associative-minkowski-mul-has-same-elements-subtype-Semigroup x) = + pr2 associative-minkowski-mul-sim-Semigroup x = elim-exists ( claim) ( λ (a , bc) (a∈A , bc∈BC , x=a*bc) → @@ -116,13 +118,13 @@ module _ minkowski-mul-Semigroup G (minkowski-mul-Semigroup G A B) C = minkowski-mul-Semigroup G A (minkowski-mul-Semigroup G B C) associative-minkowski-mul-Semigroup = - eq-has-same-elements-subtype + antisymmetric-sim-subtype ( minkowski-mul-Semigroup G (minkowski-mul-Semigroup G A B) C) ( minkowski-mul-Semigroup G A (minkowski-mul-Semigroup G B C)) - ( associative-minkowski-mul-has-same-elements-subtype-Semigroup) + ( associative-minkowski-mul-sim-Semigroup) ``` -### Minkowski multiplication of subtypes of a semigroup forms a semigroup +### Minkowski multiplication of subsets of a semigroup forms a semigroup ```agda module _ From 6a9f8370e6b7eeb750fce2777014954461265d16 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 11:54:20 -0800 Subject: [PATCH 093/227] Define lower Dedekind cuts/reals --- .../lower-dedekind-real-numbers.lagda.md | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 src/real-numbers/lower-dedekind-real-numbers.lagda.md diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..58b8384159 --- /dev/null +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -0,0 +1,115 @@ +# Lower Dedekind real numbers + +```agda +module real-numbers.lower-dedekind-real-numbers where +``` + +
Imports +```agda +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.subtypes +open import foundation.conjunction +open import foundation.identity-types +open import foundation.existential-quantification +open import foundation.propositions +open import foundation.logical-equivalences +open import foundation.universe-levels +open import foundation.universal-quantification +``` + +
+## Idea + +A lower +{{#concept "Dedekind cut" Agda=is-dedekind-cut WD="dedekind cut" WDID=Q851333}} +consists of a +[subtype](foundation-core.subtypes.md) `L` of +[the rational numbers](elementary-number-theory.rational-numbers.md) `ℚ`, +satisfying the following two conditions: + +1. _Inhabitedness_. `L` is [inhabited](foundation.inhabited-subtypes.md). +2. _Roundedness_. A rational number `q` is in `L` + [if and only if](foundation.logical-equivalences.md) there + [exists](foundation.existential-quantification.md) `q < r` such that `r ∈ L`. + +The type of all lower Dedekind real numbers is the type of all lower Dedekind cuts. +A lower Dedekind cut is part of a [Dedekind real number](real-numbers.dedekind-real-numbers.md) + +## Definition + +### Lower Dedekind cuts + +```agda +module _ + {l : Level} + (L : subtype l ℚ) + where + + is-lower-dedekind-cut-Prop : Prop l + is-lower-dedekind-cut-Prop = + (∃ ℚ L) ∧ + (∀' ℚ (λ q → L q ⇔ (∃ ℚ (λ r → le-ℚ-Prop q r ∧ L r)))) + + is-lower-dedekind-cut : UU l + is-lower-dedekind-cut = type-Prop is-lower-dedekind-cut-Prop +``` + +## The lower Dedekind real numbers + +```agda +lower-ℝ : (l : Level) → UU (lsuc l) +lower-ℝ l = Σ (subtype l ℚ) is-lower-dedekind-cut + +module _ + {l : Level} + (x : lower-ℝ l) + where + + cut-lower-ℝ : subtype l ℚ + cut-lower-ℝ = pr1 x + + is-in-cut-lower-ℝ : ℚ → UU l + is-in-cut-lower-ℝ = is-in-subtype cut-lower-ℝ + + is-inhabited-lower-ℝ : exists ℚ cut-lower-ℝ + is-inhabited-lower-ℝ = pr1 (pr2 x) + + is-rounded-lower-ℝ : + (q : ℚ) → + is-in-cut-lower-ℝ q ↔ exists ℚ (λ r → le-ℚ-Prop q r ∧ cut-lower-ℝ r) + is-rounded-lower-ℝ = pr2 (pr2 x) +``` + +## Properties + +### Lower Dedekind cuts are closed under the standard ordering on the rationals + +```agda +module _ + {l : Level} (x : lower-ℝ l) (p q : ℚ) + where + + le-cut-lower-ℝ : le-ℚ p q → is-in-cut-lower-ℝ x q → is-in-cut-lower-ℝ x p + le-cut-lower-ℝ p Date: Sun, 9 Feb 2025 11:54:56 -0800 Subject: [PATCH 094/227] make pre-commit --- src/real-numbers.lagda.md | 1 + .../lower-dedekind-real-numbers.lagda.md | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index b2aaa1a1f4..6fc691eef0 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -8,6 +8,7 @@ module real-numbers where open import real-numbers.arithmetically-located-dedekind-cuts public open import real-numbers.dedekind-real-numbers public open import real-numbers.inequality-real-numbers public +open import real-numbers.lower-dedekind-real-numbers public open import real-numbers.metric-space-of-real-numbers public open import real-numbers.negation-real-numbers public open import real-numbers.rational-real-numbers public diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index 58b8384159..5d99526167 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -5,19 +5,20 @@ module real-numbers.lower-dedekind-real-numbers where ```
Imports + ```agda open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers -open import foundation.dependent-pair-types -open import foundation.subtypes open import foundation.conjunction -open import foundation.identity-types +open import foundation.dependent-pair-types open import foundation.existential-quantification -open import foundation.propositions +open import foundation.identity-types open import foundation.logical-equivalences -open import foundation.universe-levels +open import foundation.propositions +open import foundation.subtypes open import foundation.universal-quantification +open import foundation.universe-levels ```
@@ -25,8 +26,7 @@ open import foundation.universal-quantification A lower {{#concept "Dedekind cut" Agda=is-dedekind-cut WD="dedekind cut" WDID=Q851333}} -consists of a -[subtype](foundation-core.subtypes.md) `L` of +consists of a [subtype](foundation-core.subtypes.md) `L` of [the rational numbers](elementary-number-theory.rational-numbers.md) `ℚ`, satisfying the following two conditions: @@ -35,8 +35,9 @@ satisfying the following two conditions: [if and only if](foundation.logical-equivalences.md) there [exists](foundation.existential-quantification.md) `q < r` such that `r ∈ L`. -The type of all lower Dedekind real numbers is the type of all lower Dedekind cuts. -A lower Dedekind cut is part of a [Dedekind real number](real-numbers.dedekind-real-numbers.md) +The type of all lower Dedekind real numbers is the type of all lower Dedekind +cuts. A lower Dedekind cut is part of a +[Dedekind real number](real-numbers.dedekind-real-numbers.md) ## Definition @@ -110,6 +111,7 @@ module _ ## References -This page follows the terminology used in the exercises of Section 11 in {{#cite UF13}}. +This page follows the terminology used in the exercises of Section 11 in +{{#cite UF13}}. {{#bibliography}} From 59195c9edc8dfc2117df76628621a2767981ea31 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 11:59:55 -0800 Subject: [PATCH 095/227] Define upper Dedekind reals --- .../lower-dedekind-real-numbers.lagda.md | 10 +- .../upper-dedekind-real-numbers.lagda.md | 124 ++++++++++++++++++ 2 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 src/real-numbers/upper-dedekind-real-numbers.lagda.md diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index 5d99526167..f603657ab7 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -36,8 +36,7 @@ satisfying the following two conditions: [exists](foundation.existential-quantification.md) `q < r` such that `r ∈ L`. The type of all lower Dedekind real numbers is the type of all lower Dedekind -cuts. A lower Dedekind cut is part of a -[Dedekind real number](real-numbers.dedekind-real-numbers.md) +cuts. ## Definition @@ -109,6 +108,13 @@ module _ eq-eq-cut-lower-ℝ = eq-type-subtype is-lower-dedekind-cut-Prop ``` +## See also + +- Upper Dedekind cuts, the dual structure, are defined in + [`real-numbers.upper-dedekind-real-numbers`](real-numbers.upper-dedekind-real-numbers.md). +- Dedekind cuts, which form the usual real numbers, are defined in + [`real-numbers.dedekind-real-numbers`](real-numbers.dedekind-real-numbers.md) + ## References This page follows the terminology used in the exercises of Section 11 in diff --git a/src/real-numbers/upper-dedekind-real-numbers.lagda.md b/src/real-numbers/upper-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..bdf0a5525f --- /dev/null +++ b/src/real-numbers/upper-dedekind-real-numbers.lagda.md @@ -0,0 +1,124 @@ +# Upper Dedekind real numbers + +```agda +module real-numbers.upper-dedekind-real-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.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.identity-types +open import foundation.logical-equivalences +open import foundation.propositions +open import foundation.subtypes +open import foundation.universal-quantification +open import foundation.universe-levels +``` + +
+ +## Idea + +A upper +{{#concept "Dedekind cut" Agda=is-dedekind-cut WD="dedekind cut" WDID=Q851333}} +consists of a [subtype](foundation-core.subtypes.md) `U` of +[the rational numbers](elementary-number-theory.rational-numbers.md) `ℚ`, +satisfying the following two conditions: + +1. _Inhabitedness_. `U` is [inhabited](foundation.inhabited-subtypes.md). +2. _Roundedness_. A rational number `q` is in `U` + [if and only if](foundation.logical-equivalences.md) there + [exists](foundation.existential-quantification.md) `p < q` such that `p ∈ U`. + +The type of all upper Dedekind real numbers is the type of all upper Dedekind +cuts. + +## Definition + +### Upper Dedekind cuts + +```agda +module _ + {l : Level} + (U : subtype l ℚ) + where + + is-upper-dedekind-cut-Prop : Prop l + is-upper-dedekind-cut-Prop = + (∃ ℚ U) ∧ + (∀' ℚ (λ q → U q ⇔ (∃ ℚ (λ p → le-ℚ-Prop p q ∧ U p)))) + + is-upper-dedekind-cut : UU l + is-upper-dedekind-cut = type-Prop is-upper-dedekind-cut-Prop +``` + +## The upper Dedekind real numbers + +```agda +upper-ℝ : (l : Level) → UU (lsuc l) +upper-ℝ l = Σ (subtype l ℚ) is-upper-dedekind-cut + +module _ + {l : Level} + (x : upper-ℝ l) + where + + cut-upper-ℝ : subtype l ℚ + cut-upper-ℝ = pr1 x + + is-in-cut-upper-ℝ : ℚ → UU l + is-in-cut-upper-ℝ = is-in-subtype cut-upper-ℝ + + is-inhabited-upper-ℝ : exists ℚ cut-upper-ℝ + is-inhabited-upper-ℝ = pr1 (pr2 x) + + is-rounded-upper-ℝ : + (q : ℚ) → + is-in-cut-upper-ℝ q ↔ exists ℚ (λ p → le-ℚ-Prop p q ∧ cut-upper-ℝ p) + is-rounded-upper-ℝ = pr2 (pr2 x) +``` + +## Properties + +### Upper Dedekind cuts are closed under the standard ordering on the rationals + +```agda +module _ + {l : Level} (x : upper-ℝ l) (p q : ℚ) + where + + le-cut-upper-ℝ : le-ℚ p q → is-in-cut-upper-ℝ x p → is-in-cut-upper-ℝ x q + le-cut-upper-ℝ p Date: Sun, 9 Feb 2025 12:00:27 -0800 Subject: [PATCH 096/227] make pre-commit --- src/real-numbers.lagda.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 6fc691eef0..b110b77299 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -14,4 +14,5 @@ open import real-numbers.negation-real-numbers public open import real-numbers.rational-real-numbers public open import real-numbers.similarity-real-numbers public open import real-numbers.strict-inequality-real-numbers public +open import real-numbers.upper-dedekind-real-numbers public ``` From 0bd35b87219cd5d8601ed56d78fe283e9015b258 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 12:08:53 -0800 Subject: [PATCH 097/227] Start defining lower addition --- ...dditive-group-of-rational-numbers.lagda.md | 7 ++- ...ition-lower-dedekind-real-numbers.lagda.md | 58 +++++++++++++++++++ .../lower-dedekind-real-numbers.lagda.md | 1 + 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md diff --git a/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md index 60aeaf1fb9..e0e8513c49 100644 --- a/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md @@ -17,6 +17,7 @@ open import foundation.unital-binary-operations open import foundation.universe-levels open import group-theory.abelian-groups +open import group-theory.commutative-monoids open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups @@ -60,9 +61,13 @@ pr2 (pr2 (pr2 (pr2 group-add-ℚ))) = right-inverse-law-add-ℚ ## Properties -### Tha additive group of rational numbers is commutative +### The additive group of rational numbers is commutative ```agda +commutative-monoid-add-ℚ : Commutative-Monoid lzero +pr1 commutative-monoid-add-ℚ = monoid-add-ℚ +pr2 commutative-monoid-add-ℚ = commutative-add-ℚ + abelian-group-add-ℚ : Ab lzero pr1 abelian-group-add-ℚ = group-add-ℚ pr2 abelian-group-add-ℚ = commutative-add-ℚ diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..03096f38d0 --- /dev/null +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -0,0 +1,58 @@ +# Addition of lower Dedekind real numbers + +```agda +module real-numbers.addition-lower-dedekind-real-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.existential-quantification +open import foundation.subtypes +open import foundation.universe-levels + +open import group-theory.minkowski-multiplication-commutative-monoids + +open import real-numbers.lower-dedekind-real-numbers +``` + +
+ +## Idea + +The sum of two [lower Dedekind real numbers](real-numbers.lower-dedekind-real-numbers.md) +is the Minkowski sum of their cuts. + +```agda +module _ + {l1 l2 : Level} + (x : lower-ℝ l1) + (y : lower-ℝ l2) + where + + cut-add-lower-ℝ : subtype (l1 ⊔ l2) ℚ + cut-add-lower-ℝ = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( cut-lower-ℝ x) + ( cut-lower-ℝ y) + + is-in-add-lower-ℝ-cut : ℚ → UU (l1 ⊔ l2) + is-in-add-lower-ℝ-cut = is-in-subtype cut-add-lower-ℝ + + -- is-inhabited-add-lower-ℝ : exists ℚ cut-add-lower-ℝ + -- is-inhabited-add-lower-ℝ +``` + +## Properties + +### Addition of lower Dedekind real numbers is commutative + +```agda +-- commutative-add-lower-ℝ : +``` diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index f603657ab7..58c0fa6a7b 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -22,6 +22,7 @@ open import foundation.universe-levels ``` + ## Idea A lower From 258ec997f9af6eddb40b6ff3afbe6f53dfb53537 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 12:19:23 -0800 Subject: [PATCH 098/227] Inhabitedness --- ...ultiplication-commutative-monoids.lagda.md | 20 ++++++++++++++++ .../minkowski-multiplication-monoids.lagda.md | 21 ++++++++++++++++ ...nkowski-multiplication-semigroups.lagda.md | 24 +++++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md index 1d5453d267..1500a3439a 100644 --- a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md @@ -11,6 +11,7 @@ open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.powersets +open import foundation.inhabited-subtypes open import foundation.subtypes open import foundation.universe-levels @@ -104,6 +105,25 @@ module _ commutative-minkowski-mul-Commutative-Monoid M ``` +### The Minkowski multiplication of two inhabited subsets of a commutative monoid is inhabited + +```agda +module _ + {l1 : Level} + (M : Commutative-Monoid l1) + where + + minkowski-mul-inhabited-is-inhabited-Commutative-Monoid : + {l2 l3 : Level} → + (A : subset-Commutative-Monoid l2 M) → + (B : subset-Commutative-Monoid l3 M) → + is-inhabited-subtype A → + is-inhabited-subtype B → + is-inhabited-subtype (minkowski-mul-Commutative-Monoid M A B) + minkowski-mul-inhabited-is-inhabited-Commutative-Monoid = + minkowski-mul-inhabited-is-inhabited-Monoid (monoid-Commutative-Monoid M) +``` + ## See also - Minkowski multiplication on semigroups is defined in diff --git a/src/group-theory/minkowski-multiplication-monoids.lagda.md b/src/group-theory/minkowski-multiplication-monoids.lagda.md index 6d51224108..5152319062 100644 --- a/src/group-theory/minkowski-multiplication-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-monoids.lagda.md @@ -13,6 +13,7 @@ open import foundation.existential-quantification open import foundation.identity-types open import foundation.powersets open import foundation.subtypes +open import foundation.inhabited-subtypes open import foundation.transport-along-identifications open import foundation.unital-binary-operations open import foundation.universe-levels @@ -128,6 +129,26 @@ module _ pr2 monoid-minkowski-mul-Monoid = is-unital-minkowski-mul-Monoid ``` +### The Minkowski multiplication of two inhabited subsets of a monoid is inhabited + +```agda +module _ + {l1 : Level} + (M : Monoid l1) + where + + minkowski-mul-inhabited-is-inhabited-Monoid : + {l2 l3 : Level} → + (A : subset-Monoid l2 M) → + (B : subset-Monoid l3 M) → + is-inhabited-subtype A → + is-inhabited-subtype B → + is-inhabited-subtype (minkowski-mul-Monoid M A B) + minkowski-mul-inhabited-is-inhabited-Monoid = + minkowski-mul-inhabited-is-inhabited-Semigroup (semigroup-Monoid M) +``` + + ## See also - Minkowski multiplication on semigroups is defined in diff --git a/src/group-theory/minkowski-multiplication-semigroups.lagda.md b/src/group-theory/minkowski-multiplication-semigroups.lagda.md index 0587640fe3..ea819dde6b 100644 --- a/src/group-theory/minkowski-multiplication-semigroups.lagda.md +++ b/src/group-theory/minkowski-multiplication-semigroups.lagda.md @@ -13,12 +13,15 @@ open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types +open import foundation.inhabited-subtypes open import foundation.powersets open import foundation.propositions open import foundation.sets open import foundation.subtypes open import foundation.universe-levels +open import logic.functoriality-existential-quantification + open import group-theory.semigroups open import group-theory.subsets-semigroups ``` @@ -139,6 +142,27 @@ module _ associative-minkowski-mul-Semigroup G ``` +### The Minkowski multiplication of two inhabited subsets of a semigroup is inhabited + +```agda +module _ + {l1 l2 l3 : Level} + (G : Semigroup l1) + (A : subset-Semigroup l2 G) + (B : subset-Semigroup l3 G) + where + + minkowski-mul-inhabited-is-inhabited-Semigroup : + is-inhabited-subtype A → + is-inhabited-subtype B → + is-inhabited-subtype (minkowski-mul-Semigroup G A B) + minkowski-mul-inhabited-is-inhabited-Semigroup = + map-binary-exists + ( is-in-subtype (minkowski-mul-Semigroup G A B)) + ( mul-Semigroup G) + λ a b a∈A b∈B → intro-exists (a , b) (a∈A , b∈B , refl) +``` + ## External links - [Minkowski addition](https://en.wikipedia.org/wiki/Minkowski_addition) at From 40a9e33195feaa76211760edcf9138d3b4d5f192 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 12:20:00 -0800 Subject: [PATCH 099/227] make pre-commit --- .../minkowski-multiplication-commutative-monoids.lagda.md | 2 +- src/group-theory/minkowski-multiplication-monoids.lagda.md | 3 +-- src/group-theory/minkowski-multiplication-semigroups.lagda.md | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md index 1500a3439a..1e0ad307f4 100644 --- a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md @@ -10,8 +10,8 @@ module group-theory.minkowski-multiplication-commutative-monoids where open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types -open import foundation.powersets open import foundation.inhabited-subtypes +open import foundation.powersets open import foundation.subtypes open import foundation.universe-levels diff --git a/src/group-theory/minkowski-multiplication-monoids.lagda.md b/src/group-theory/minkowski-multiplication-monoids.lagda.md index 5152319062..b2e67b3464 100644 --- a/src/group-theory/minkowski-multiplication-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-monoids.lagda.md @@ -11,9 +11,9 @@ open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types +open import foundation.inhabited-subtypes open import foundation.powersets open import foundation.subtypes -open import foundation.inhabited-subtypes open import foundation.transport-along-identifications open import foundation.unital-binary-operations open import foundation.universe-levels @@ -148,7 +148,6 @@ module _ minkowski-mul-inhabited-is-inhabited-Semigroup (semigroup-Monoid M) ``` - ## See also - Minkowski multiplication on semigroups is defined in diff --git a/src/group-theory/minkowski-multiplication-semigroups.lagda.md b/src/group-theory/minkowski-multiplication-semigroups.lagda.md index ea819dde6b..dae5ef51d5 100644 --- a/src/group-theory/minkowski-multiplication-semigroups.lagda.md +++ b/src/group-theory/minkowski-multiplication-semigroups.lagda.md @@ -20,10 +20,10 @@ open import foundation.sets open import foundation.subtypes open import foundation.universe-levels -open import logic.functoriality-existential-quantification - open import group-theory.semigroups open import group-theory.subsets-semigroups + +open import logic.functoriality-existential-quantification ``` From f9006be947c95c2221923825e11ebf1c55351921 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 12:22:27 -0800 Subject: [PATCH 100/227] Progress --- .../addition-lower-dedekind-real-numbers.lagda.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index 03096f38d0..c0aa126a41 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -45,8 +45,14 @@ module _ is-in-add-lower-ℝ-cut : ℚ → UU (l1 ⊔ l2) is-in-add-lower-ℝ-cut = is-in-subtype cut-add-lower-ℝ - -- is-inhabited-add-lower-ℝ : exists ℚ cut-add-lower-ℝ - -- is-inhabited-add-lower-ℝ + is-inhabited-add-lower-ℝ : exists ℚ cut-add-lower-ℝ + is-inhabited-add-lower-ℝ = + minkowski-mul-inhabited-is-inhabited-Commutative-Monoid + ( commutative-monoid-add-ℚ) + (cut-lower-ℝ x) + (cut-lower-ℝ y) + {! is-inhabited-cut-lower-ℝ x !} + {! !} ``` ## Properties From 6ad62d519db2b3740365e3f0695413940e5850f8 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 12:23:46 -0800 Subject: [PATCH 101/227] Rename things --- .../lower-dedekind-real-numbers.lagda.md | 10 +++++----- .../upper-dedekind-real-numbers.lagda.md | 12 +++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index f603657ab7..6608478238 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -74,13 +74,13 @@ module _ is-in-cut-lower-ℝ : ℚ → UU l is-in-cut-lower-ℝ = is-in-subtype cut-lower-ℝ - is-inhabited-lower-ℝ : exists ℚ cut-lower-ℝ - is-inhabited-lower-ℝ = pr1 (pr2 x) + is-inhabited-cut-lower-ℝ : exists ℚ cut-lower-ℝ + is-inhabited-cut-lower-ℝ = pr1 (pr2 x) - is-rounded-lower-ℝ : + is-rounded-cut-lower-ℝ : (q : ℚ) → is-in-cut-lower-ℝ q ↔ exists ℚ (λ r → le-ℚ-Prop q r ∧ cut-lower-ℝ r) - is-rounded-lower-ℝ = pr2 (pr2 x) + is-rounded-cut-lower-ℝ = pr2 (pr2 x) ``` ## Properties @@ -94,7 +94,7 @@ module _ le-cut-lower-ℝ : le-ℚ p q → is-in-cut-lower-ℝ x q → is-in-cut-lower-ℝ x p le-cut-lower-ℝ p Date: Sun, 9 Feb 2025 13:43:23 -0800 Subject: [PATCH 102/227] Finish defining addition on lower reals --- .../positive-rational-numbers.lagda.md | 28 ++-- ...trict-inequality-rational-numbers.lagda.md | 32 +++-- src/group-theory/abelian-groups.lagda.md | 23 ++-- ...ition-lower-dedekind-real-numbers.lagda.md | 128 +++++++++++++++++- 4 files changed, 165 insertions(+), 46 deletions(-) diff --git a/src/elementary-number-theory/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index 63ae446cfa..88b15da00e 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -190,13 +190,14 @@ module _ (x y : ℚ) (H : le-ℚ x y) where - is-positive-diff-le-ℚ : is-positive-ℚ (y -ℚ x) - is-positive-diff-le-ℚ = - is-positive-le-zero-ℚ - ( y -ℚ x) - ( backward-implication - ( iff-translate-diff-le-zero-ℚ x y) - ( H)) + abstract + is-positive-diff-le-ℚ : is-positive-ℚ (y -ℚ x) + is-positive-diff-le-ℚ = + is-positive-le-zero-ℚ + ( y -ℚ x) + ( backward-implication + ( iff-translate-diff-le-zero-ℚ x y) + ( H)) positive-diff-le-ℚ : ℚ⁺ positive-diff-le-ℚ = y -ℚ x , is-positive-diff-le-ℚ @@ -539,12 +540,13 @@ mediant-zero-ℚ⁺ x = ( rational-ℚ⁺ x) ( le-zero-is-positive-ℚ (rational-ℚ⁺ x) (is-positive-rational-ℚ⁺ x)))) -le-mediant-zero-ℚ⁺ : (x : ℚ⁺) → le-ℚ⁺ (mediant-zero-ℚ⁺ x) x -le-mediant-zero-ℚ⁺ x = - le-right-mediant-ℚ - ( zero-ℚ) - ( rational-ℚ⁺ x) - ( le-zero-is-positive-ℚ (rational-ℚ⁺ x) (is-positive-rational-ℚ⁺ x)) +abstract + le-mediant-zero-ℚ⁺ : (x : ℚ⁺) → le-ℚ⁺ (mediant-zero-ℚ⁺ x) x + le-mediant-zero-ℚ⁺ x = + le-right-mediant-ℚ + ( zero-ℚ) + ( rational-ℚ⁺ x) + ( le-zero-is-positive-ℚ (rational-ℚ⁺ x) (is-positive-rational-ℚ⁺ x)) ``` ### Any positive rational number is the sum of two positive rational numbers diff --git a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md index 99d4619055..53e20051b7 100644 --- a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md @@ -122,12 +122,13 @@ module _ (x y z : ℚ) where - transitive-le-ℚ : le-ℚ y z → le-ℚ x y → le-ℚ x z - transitive-le-ℚ = - transitive-le-fraction-ℤ - ( fraction-ℚ x) - ( fraction-ℚ y) - ( fraction-ℚ z) + abstract + transitive-le-ℚ : le-ℚ y z → le-ℚ x y → le-ℚ x z + transitive-le-ℚ = + transitive-le-fraction-ℤ + ( fraction-ℚ x) + ( fraction-ℚ y) + ( fraction-ℚ z) ``` ### Concatenation rules for inequality and strict inequality on the rational numbers @@ -315,15 +316,16 @@ module _ ### Addition on the rational numbers preserves strict inequality ```agda -preserves-le-add-ℚ : - {a b c d : ℚ} → le-ℚ a b → le-ℚ c d → le-ℚ (a +ℚ c) (b +ℚ d) -preserves-le-add-ℚ {a} {b} {c} {d} H K = - transitive-le-ℚ - ( a +ℚ c) - ( b +ℚ c) - ( b +ℚ d) - ( preserves-le-right-add-ℚ b c d K) - ( preserves-le-left-add-ℚ c a b H) +abstract + preserves-le-add-ℚ : + {a b c d : ℚ} → le-ℚ a b → le-ℚ c d → le-ℚ (a +ℚ c) (b +ℚ d) + preserves-le-add-ℚ {a} {b} {c} {d} H K = + transitive-le-ℚ + ( a +ℚ c) + ( b +ℚ c) + ( b +ℚ d) + ( preserves-le-right-add-ℚ b c d K) + ( preserves-le-left-add-ℚ c a b H) ``` ### The rational numbers have no lower or upper bound diff --git a/src/group-theory/abelian-groups.lagda.md b/src/group-theory/abelian-groups.lagda.md index 6023e6276d..7033d0b8db 100644 --- a/src/group-theory/abelian-groups.lagda.md +++ b/src/group-theory/abelian-groups.lagda.md @@ -612,17 +612,18 @@ module _ {l : Level} (A : Ab l) where - is-identity-left-conjugation-Ab : - (x : type-Ab A) → left-conjugation-Ab A x ~ id - is-identity-left-conjugation-Ab x y = - ( ap (add-Ab' A (neg-Ab A x)) (commutative-add-Ab A x y)) ∙ - ( is-retraction-right-subtraction-Ab A x y) - - is-identity-right-conjugation-Ab : - (x : type-Ab A) → right-conjugation-Ab A x ~ id - is-identity-right-conjugation-Ab x = - inv-htpy (left-right-conjugation-Ab A x) ∙h - is-identity-left-conjugation-Ab x + abstract + is-identity-left-conjugation-Ab : + (x : type-Ab A) → left-conjugation-Ab A x ~ id + is-identity-left-conjugation-Ab x y = + ( ap (add-Ab' A (neg-Ab A x)) (commutative-add-Ab A x y)) ∙ + ( is-retraction-right-subtraction-Ab A x y) + + is-identity-right-conjugation-Ab : + (x : type-Ab A) → right-conjugation-Ab A x ~ id + is-identity-right-conjugation-Ab x = + inv-htpy (left-right-conjugation-Ab A x) ∙h + is-identity-left-conjugation-Ab x is-identity-conjugation-Ab : (x : type-Ab A) → conjugation-Ab A x ~ id diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index c0aa126a41..573b1e9ec3 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -1,6 +1,8 @@ # Addition of lower Dedekind real numbers ```agda +{-# OPTIONS --lossy-unification #-} + module real-numbers.addition-lower-dedekind-real-numbers where ``` @@ -9,13 +11,27 @@ module real-numbers.addition-lower-dedekind-real-numbers where ```agda open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.action-on-identifications-functions +open import foundation.binary-transport +open import foundation.cartesian-product-types +open import foundation.conjunction +open import foundation.dependent-pair-types open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.logical-equivalences open import foundation.subtypes +open import foundation.transport-along-identifications open import foundation.universe-levels +open import logic.functoriality-existential-quantification + +open import group-theory.abelian-groups +open import group-theory.groups open import group-theory.minkowski-multiplication-commutative-monoids open import real-numbers.lower-dedekind-real-numbers @@ -42,17 +58,111 @@ module _ ( cut-lower-ℝ x) ( cut-lower-ℝ y) - is-in-add-lower-ℝ-cut : ℚ → UU (l1 ⊔ l2) - is-in-add-lower-ℝ-cut = is-in-subtype cut-add-lower-ℝ + is-in-cut-add-lower-ℝ : ℚ → UU (l1 ⊔ l2) + is-in-cut-add-lower-ℝ = is-in-subtype cut-add-lower-ℝ is-inhabited-add-lower-ℝ : exists ℚ cut-add-lower-ℝ is-inhabited-add-lower-ℝ = minkowski-mul-inhabited-is-inhabited-Commutative-Monoid ( commutative-monoid-add-ℚ) - (cut-lower-ℝ x) - (cut-lower-ℝ y) - {! is-inhabited-cut-lower-ℝ x !} - {! !} + ( cut-lower-ℝ x) + ( cut-lower-ℝ y) + ( is-inhabited-cut-lower-ℝ x) + ( is-inhabited-cut-lower-ℝ y) + + abstract + is-rounded-cut-add-lower-ℝ : + (q : ℚ) → + is-in-cut-add-lower-ℝ q ↔ + exists ℚ (λ r → le-ℚ-Prop q r ∧ cut-add-lower-ℝ r) + pr1 (is-rounded-cut-add-lower-ℝ q) = + elim-exists + ( ∃ ℚ (λ r → le-ℚ-Prop q r ∧ cut-add-lower-ℝ r)) + ( λ (lx , ly) (lx Date: Sun, 9 Feb 2025 13:44:27 -0800 Subject: [PATCH 103/227] Fix naming --- .../addition-lower-dedekind-real-numbers.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index 573b1e9ec3..6ec4f92d57 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -61,8 +61,8 @@ module _ is-in-cut-add-lower-ℝ : ℚ → UU (l1 ⊔ l2) is-in-cut-add-lower-ℝ = is-in-subtype cut-add-lower-ℝ - is-inhabited-add-lower-ℝ : exists ℚ cut-add-lower-ℝ - is-inhabited-add-lower-ℝ = + is-inhabited-cut-add-lower-ℝ : exists ℚ cut-add-lower-ℝ + is-inhabited-cut-add-lower-ℝ = minkowski-mul-inhabited-is-inhabited-Commutative-Monoid ( commutative-monoid-add-ℚ) ( cut-lower-ℝ x) @@ -161,7 +161,7 @@ module _ add-lower-ℝ : lower-ℝ (l1 ⊔ l2) pr1 add-lower-ℝ = cut-add-lower-ℝ - pr1 (pr2 add-lower-ℝ) = is-inhabited-add-lower-ℝ + pr1 (pr2 add-lower-ℝ) = is-inhabited-cut-add-lower-ℝ pr2 (pr2 add-lower-ℝ) = is-rounded-cut-add-lower-ℝ ``` From d7f6e2d518fec56f063419e9c8cefb022ce51c8a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 14:09:53 -0800 Subject: [PATCH 104/227] Similarity and containment --- ...ultiplication-commutative-monoids.lagda.md | 80 +++++++++++++++++++ .../minkowski-multiplication-monoids.lagda.md | 66 +++++++++++++++ ...nkowski-multiplication-semigroups.lagda.md | 75 +++++++++++++++++ 3 files changed, 221 insertions(+) diff --git a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md index 1e0ad307f4..8956fa2608 100644 --- a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md @@ -124,6 +124,86 @@ module _ minkowski-mul-inhabited-is-inhabited-Monoid (monoid-Commutative-Monoid M) ``` +### Containment is preserved by Minkowski multiplication of monoid subsets + +```agda +module _ + {l1 l2 l3 l4 : Level} + (M : Commutative-Monoid l1) + (B : subset-Commutative-Monoid l2 M) + (A : subset-Commutative-Monoid l3 M) + (A' : subset-Commutative-Monoid l4 M) + where + + preserves-leq-left-minkowski-mul-Commutative-Monoid : + A ⊆ A' → + minkowski-mul-Commutative-Monoid M A B ⊆ + minkowski-mul-Commutative-Monoid M A' B + preserves-leq-left-minkowski-mul-Commutative-Monoid = + preserves-leq-left-minkowski-mul-Monoid (monoid-Commutative-Monoid M) B A A' + + preserves-leq-right-minkowski-mul-Commutative-Monoid : + A ⊆ A' → + minkowski-mul-Commutative-Monoid M B A ⊆ + minkowski-mul-Commutative-Monoid M B A' + preserves-leq-right-minkowski-mul-Commutative-Monoid = + preserves-leq-right-minkowski-mul-Monoid + ( monoid-Commutative-Monoid M) + ( B) + ( A) + ( A') +``` + +### Similarity is preserved by Minkowski multiplication of monoid subsets + +```agda +module _ + {l1 l2 l3 l4 : Level} + (M : Commutative-Monoid l1) + (B : subset-Commutative-Monoid l2 M) + (A : subset-Commutative-Monoid l3 M) + (A' : subset-Commutative-Monoid l4 M) + where + + preserves-sim-left-minkowski-mul-Commutative-Monoid : + sim-subtype A A' → + sim-subtype + ( minkowski-mul-Commutative-Monoid M A B) + ( minkowski-mul-Commutative-Monoid M A' B) + preserves-sim-left-minkowski-mul-Commutative-Monoid = + preserves-sim-left-minkowski-mul-Monoid (monoid-Commutative-Monoid M) B A A' + + preserves-sim-right-minkowski-mul-Commutative-Monoid : + sim-subtype A A' → + sim-subtype + ( minkowski-mul-Commutative-Monoid M B A) + ( minkowski-mul-Commutative-Monoid M B A') + preserves-sim-right-minkowski-mul-Commutative-Monoid = + preserves-sim-right-minkowski-mul-Monoid + ( monoid-Commutative-Monoid M) + ( B) + ( A) + ( A') + +module _ + {l1 l2 l3 l4 l5 : Level} + (M : Commutative-Monoid l1) + (A : subset-Commutative-Monoid l2 M) + (A' : subset-Commutative-Monoid l3 M) + (B : subset-Commutative-Monoid l4 M) + (B' : subset-Commutative-Monoid l5 M) + where + + preserves-sim-minkowski-mul-Commutative-Monoid : + sim-subtype A A' → + sim-subtype B B' → + sim-subtype + ( minkowski-mul-Commutative-Monoid M A B) + ( minkowski-mul-Commutative-Monoid M A' B') + preserves-sim-minkowski-mul-Commutative-Monoid = + preserves-sim-minkowski-mul-Monoid (monoid-Commutative-Monoid M) A A' B B' +``` + ## See also - Minkowski multiplication on semigroups is defined in diff --git a/src/group-theory/minkowski-multiplication-monoids.lagda.md b/src/group-theory/minkowski-multiplication-monoids.lagda.md index b2e67b3464..a9302b06e3 100644 --- a/src/group-theory/minkowski-multiplication-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-monoids.lagda.md @@ -148,10 +148,76 @@ module _ minkowski-mul-inhabited-is-inhabited-Semigroup (semigroup-Monoid M) ``` +### Containment is preserved by Minkowski multiplication of monoid subsets + +```agda +module _ + {l1 l2 l3 l4 : Level} + (M : Monoid l1) + (B : subset-Monoid l2 M) + (A : subset-Monoid l3 M) + (A' : subset-Monoid l4 M) + where + + preserves-leq-left-minkowski-mul-Monoid : + A ⊆ A' → minkowski-mul-Monoid M A B ⊆ minkowski-mul-Monoid M A' B + preserves-leq-left-minkowski-mul-Monoid = + preserves-leq-left-minkowski-mul-Semigroup (semigroup-Monoid M) B A A' + + preserves-leq-right-minkowski-mul-Monoid : + A ⊆ A' → minkowski-mul-Monoid M B A ⊆ minkowski-mul-Monoid M B A' + preserves-leq-right-minkowski-mul-Monoid = + preserves-leq-right-minkowski-mul-Semigroup (semigroup-Monoid M) B A A' +``` + +### Similarity is preserved by Minkowski multiplication of monoid subsets + +```agda +module _ + {l1 l2 l3 l4 : Level} + (M : Monoid l1) + (B : subset-Monoid l2 M) + (A : subset-Monoid l3 M) + (A' : subset-Monoid l4 M) + where + + preserves-sim-left-minkowski-mul-Monoid : + sim-subtype A A' → + sim-subtype (minkowski-mul-Monoid M A B) (minkowski-mul-Monoid M A' B) + preserves-sim-left-minkowski-mul-Monoid = + preserves-sim-left-minkowski-mul-Semigroup (semigroup-Monoid M) B A A' + + preserves-sim-right-minkowski-mul-Monoid : + sim-subtype A A' → + sim-subtype (minkowski-mul-Monoid M B A) (minkowski-mul-Monoid M B A') + preserves-sim-right-minkowski-mul-Monoid = + preserves-sim-right-minkowski-mul-Semigroup (semigroup-Monoid M) B A A' + +module _ + {l1 l2 l3 l4 l5 : Level} + (M : Monoid l1) + (A : subset-Monoid l2 M) + (A' : subset-Monoid l3 M) + (B : subset-Monoid l4 M) + (B' : subset-Monoid l5 M) + where + + preserves-sim-minkowski-mul-Monoid : + sim-subtype A A' → + sim-subtype B B' → + sim-subtype + ( minkowski-mul-Monoid M A B) + ( minkowski-mul-Monoid M A' B') + preserves-sim-minkowski-mul-Monoid = + preserves-sim-minkowski-mul-Semigroup (semigroup-Monoid M) A A' B B' +``` + ## See also - Minkowski multiplication on semigroups is defined in [`group-theory.minkowski-multiplication-semigroups`](group-theory.minkowski-multiplication-semigroups.md). +- Minkowski multiplication on commutative monoids is defined in + [`group-theory.minkowski-multiplication-commutative-monoids`](group-theory.minkowski-multiplication-commutative-monoids.md). ## External links diff --git a/src/group-theory/minkowski-multiplication-semigroups.lagda.md b/src/group-theory/minkowski-multiplication-semigroups.lagda.md index dae5ef51d5..8b233f4d0e 100644 --- a/src/group-theory/minkowski-multiplication-semigroups.lagda.md +++ b/src/group-theory/minkowski-multiplication-semigroups.lagda.md @@ -12,6 +12,8 @@ open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.existential-quantification +open import foundation.function-types +open import foundation.functoriality-cartesian-product-types open import foundation.identity-types open import foundation.inhabited-subtypes open import foundation.powersets @@ -163,6 +165,79 @@ module _ λ a b a∈A b∈B → intro-exists (a , b) (a∈A , b∈B , refl) ``` +### Containment is preserved by Minkowski multiplication of semigroup subtypes + +```agda +module _ + {l1 l2 l3 l4 : Level} + (G : Semigroup l1) + (B : subset-Semigroup l2 G) + (A : subset-Semigroup l3 G) + (A' : subset-Semigroup l4 G) + where + + preserves-leq-left-minkowski-mul-Semigroup : + A ⊆ A' → minkowski-mul-Semigroup G A B ⊆ minkowski-mul-Semigroup G A' B + preserves-leq-left-minkowski-mul-Semigroup A⊆A' x = + map-tot-exists (λ (a , b) → map-product (A⊆A' a) id) + + preserves-leq-right-minkowski-mul-Semigroup : + A ⊆ A' → minkowski-mul-Semigroup G B A ⊆ minkowski-mul-Semigroup G B A' + preserves-leq-right-minkowski-mul-Semigroup A⊆A' x = + map-tot-exists (λ (b , a) → map-product id (map-product (A⊆A' a) id)) +``` + +### Similarity is preserved by Minkowski multiplication of semigroup subtypes + +```agda +module _ + {l1 l2 l3 l4 : Level} + (G : Semigroup l1) + (B : subset-Semigroup l2 G) + (A : subset-Semigroup l3 G) + (A' : subset-Semigroup l4 G) + where + + preserves-sim-left-minkowski-mul-Semigroup : + sim-subtype A A' → + sim-subtype (minkowski-mul-Semigroup G A B) (minkowski-mul-Semigroup G A' B) + pr1 (preserves-sim-left-minkowski-mul-Semigroup (A⊆A' , _)) = + preserves-leq-left-minkowski-mul-Semigroup G B A A' A⊆A' + pr2 (preserves-sim-left-minkowski-mul-Semigroup (_ , A'⊆A)) = + preserves-leq-left-minkowski-mul-Semigroup G B A' A A'⊆A + + preserves-sim-right-minkowski-mul-Semigroup : + sim-subtype A A' → + sim-subtype (minkowski-mul-Semigroup G B A) (minkowski-mul-Semigroup G B A') + pr1 (preserves-sim-right-minkowski-mul-Semigroup (A⊆A' , _)) = + preserves-leq-right-minkowski-mul-Semigroup G B A A' A⊆A' + pr2 (preserves-sim-right-minkowski-mul-Semigroup (_ , A'⊆A)) = + preserves-leq-right-minkowski-mul-Semigroup G B A' A A'⊆A + +module _ + {l1 l2 l3 l4 l5 : Level} + (G : Semigroup l1) + (A : subset-Semigroup l2 G) + (A' : subset-Semigroup l3 G) + (B : subset-Semigroup l4 G) + (B' : subset-Semigroup l5 G) + where + + preserves-sim-minkowski-mul-Semigroup : + sim-subtype A A' → + sim-subtype B B' → + sim-subtype + ( minkowski-mul-Semigroup G A B) + ( minkowski-mul-Semigroup G A' B') + preserves-sim-minkowski-mul-Semigroup A≈A' B≈B' = + transitive-sim-subtype + ( minkowski-mul-Semigroup G A B) + ( minkowski-mul-Semigroup G A B') + ( minkowski-mul-Semigroup G A' B') + ( preserves-sim-left-minkowski-mul-Semigroup G B' A A' A≈A') + ( preserves-sim-right-minkowski-mul-Semigroup G A B B' B≈B') +``` + ## External links - [Minkowski addition](https://en.wikipedia.org/wiki/Minkowski_addition) at From fd4d1929dfe44d5f950237950629e2c22f37affe Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 14:22:00 -0800 Subject: [PATCH 105/227] Progress --- ...ition-lower-dedekind-real-numbers.lagda.md | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index 6ec4f92d57..40fcfc78da 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -159,10 +159,10 @@ module _ ( q)))) ( r Date: Sun, 9 Feb 2025 14:30:13 -0800 Subject: [PATCH 106/227] Propagate properties --- ...ultiplication-commutative-monoids.lagda.md | 69 +++++++++++++++++++ .../minkowski-multiplication-monoids.lagda.md | 18 +++++ 2 files changed, 87 insertions(+) diff --git a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md index 8956fa2608..ad3624e6ed 100644 --- a/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-commutative-monoids.lagda.md @@ -13,6 +13,7 @@ open import foundation.identity-types open import foundation.inhabited-subtypes open import foundation.powersets open import foundation.subtypes +open import foundation.unital-binary-operations open import foundation.universe-levels open import group-theory.commutative-monoids @@ -50,6 +51,74 @@ module _ ## Properties +### Minkowski multiplication of commutative monoid subsets is associative + +```agda +module _ + {l1 l2 l3 l4 : Level} + (M : Commutative-Monoid l1) + (A : subset-Commutative-Monoid l2 M) + (B : subset-Commutative-Monoid l3 M) + (C : subset-Commutative-Monoid l4 M) + where + + associative-minkowski-mul-Commutative-Monoid : + minkowski-mul-Commutative-Monoid + ( M) + ( minkowski-mul-Commutative-Monoid M A B) + ( C) = + minkowski-mul-Commutative-Monoid + ( M) + ( A) + ( minkowski-mul-Commutative-Monoid M B C) + associative-minkowski-mul-Commutative-Monoid = + associative-minkowski-mul-Monoid (monoid-Commutative-Monoid M) A B C +``` + +### Minkowski multiplication of commutative monoid subsets is unital + +```agda +module _ + {l1 l2 : Level} + (M : Commutative-Monoid l1) + (A : subset-Commutative-Monoid l2 M) + where + + left-unit-law-minkowski-mul-Commutative-Monoid : + sim-subtype + ( minkowski-mul-Commutative-Monoid + ( M) + ( is-unit-prop-Commutative-Monoid M) + ( A)) + ( A) + left-unit-law-minkowski-mul-Commutative-Monoid = + left-unit-law-minkowski-mul-Monoid (monoid-Commutative-Monoid M) A + + right-unit-law-minkowski-mul-Commutative-Monoid : + sim-subtype + ( minkowski-mul-Commutative-Monoid + ( M) + ( A) + ( is-unit-prop-Commutative-Monoid M)) + ( A) + right-unit-law-minkowski-mul-Commutative-Monoid = + right-unit-law-minkowski-mul-Monoid (monoid-Commutative-Monoid M) A +``` + +### Minkowski multiplication on a commutative monoid is unital + +```agda +module _ + {l : Level} + (M : Commutative-Monoid l) + where + + is-unital-minkowski-mul-Commutative-Monoid : + is-unital (minkowski-mul-Commutative-Monoid {l} {l} {l} M) + is-unital-minkowski-mul-Commutative-Monoid = + is-unital-minkowski-mul-Monoid (monoid-Commutative-Monoid M) +``` + ### Minkowski multiplication on a commutative monoid is commutative ```agda diff --git a/src/group-theory/minkowski-multiplication-monoids.lagda.md b/src/group-theory/minkowski-multiplication-monoids.lagda.md index a9302b06e3..b9f33264cf 100644 --- a/src/group-theory/minkowski-multiplication-monoids.lagda.md +++ b/src/group-theory/minkowski-multiplication-monoids.lagda.md @@ -51,6 +51,24 @@ module _ ## Properties +### Minkowski multiplication of monoid subsets is associative + +```agda +module _ + {l1 l2 l3 l4 : Level} + (M : Monoid l1) + (A : subset-Monoid l2 M) + (B : subset-Monoid l3 M) + (C : subset-Monoid l4 M) + where + + associative-minkowski-mul-Monoid : + minkowski-mul-Monoid M (minkowski-mul-Monoid M A B) C = + minkowski-mul-Monoid M A (minkowski-mul-Monoid M B C) + associative-minkowski-mul-Monoid = + associative-minkowski-mul-Semigroup (semigroup-Monoid M) A B C +``` + ### Unit laws for Minkowski multiplication of monoid subsets ```agda From 1a5f82f4610bac227d74f89f2b4b638ba4b598fb Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 14:32:24 -0800 Subject: [PATCH 107/227] Addition on lower reals is associative and commutative --- .../addition-lower-dedekind-real-numbers.lagda.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index 40fcfc78da..c45c75d99b 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -191,10 +191,16 @@ module _ module _ {l1 l2 l3 : Level} (x : lower-ℝ l1) (y : lower-ℝ l2) (z : lower-ℝ l3) where -{- + associative-add-lower-ℝ : add-lower-ℝ (add-lower-ℝ x y) z = add-lower-ℝ x (add-lower-ℝ y z) associative-add-lower-ℝ = eq-eq-cut-lower-ℝ - --(add-lower-ℝ (add-lower-ℝ -} + ( add-lower-ℝ (add-lower-ℝ x y) z) + ( add-lower-ℝ x (add-lower-ℝ y z)) + ( associative-minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( cut-lower-ℝ x) + ( cut-lower-ℝ y) + ( cut-lower-ℝ z)) ``` From 6bfb61920a9444ea881df44ddd4b2824e9b038dc Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 14:33:30 -0800 Subject: [PATCH 108/227] Formatting --- src/real-numbers/lower-dedekind-real-numbers.lagda.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index 6608478238..167a6805a5 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -22,6 +22,7 @@ open import foundation.universe-levels ``` + ## Idea A lower From fd8f3846dafbef038616b7b992081d60ec276300 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 14:44:51 -0800 Subject: [PATCH 109/227] Add new file --- ...ional-lower-dedekind-real-numbers.lagda.md | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/real-numbers/rational-lower-dedekind-real-numbers.lagda.md diff --git a/src/real-numbers/rational-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/rational-lower-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..4c9fca0bf0 --- /dev/null +++ b/src/real-numbers/rational-lower-dedekind-real-numbers.lagda.md @@ -0,0 +1,59 @@ +# Rational lower Dedekind real numbers + +```agda +module real-numbers.rational-lower-dedekind-real-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.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.logical-equivalences +open import foundation.subtypes +open import foundation.universe-levels + +open import real-numbers.lower-dedekind-real-numbers +``` + +
+ +## Idea + +There is a canonical mapping from the [rational numbers](elementary-number-theory.rational-numbers.md) +to the [lower Dedekind real numbers](real-numbers.lower-dedekind-real-numbers.md). + +## Definition + +```agda +module _ (q : ℚ) where + cut-lower-real-ℚ : subtype lzero ℚ + cut-lower-real-ℚ p = le-ℚ-Prop p q + + is-in-cut-lower-real-ℚ : ℚ → UU lzero + is-in-cut-lower-real-ℚ p = le-ℚ p q + + is-inhabited-cut-lower-real-ℚ : exists ℚ cut-lower-real-ℚ + is-inhabited-cut-lower-real-ℚ = exists-lesser-ℚ q + + is-rounded-cut-lower-real-ℚ : + (p : ℚ) → + le-ℚ p q ↔ exists ℚ (λ r → le-ℚ-Prop p r ∧ le-ℚ-Prop r q) + pr1 (is-rounded-cut-lower-real-ℚ p) p Date: Sun, 9 Feb 2025 14:45:17 -0800 Subject: [PATCH 110/227] Fix line length --- src/real-numbers/lower-dedekind-real-numbers.lagda.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index 167a6805a5..8d9097a7ec 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -95,7 +95,9 @@ module _ le-cut-lower-ℝ : le-ℚ p q → is-in-cut-lower-ℝ x q → is-in-cut-lower-ℝ x p le-cut-lower-ℝ p Date: Sun, 9 Feb 2025 14:49:24 -0800 Subject: [PATCH 111/227] Add rational upper reals --- ...ional-upper-dedekind-real-numbers.lagda.md | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/real-numbers/rational-upper-dedekind-real-numbers.lagda.md diff --git a/src/real-numbers/rational-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/rational-upper-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..c6e1c589de --- /dev/null +++ b/src/real-numbers/rational-upper-dedekind-real-numbers.lagda.md @@ -0,0 +1,59 @@ +# Rational upper Dedekind real numbers + +```agda +module real-numbers.rational-upper-dedekind-real-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.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.logical-equivalences +open import foundation.subtypes +open import foundation.universe-levels + +open import real-numbers.upper-dedekind-real-numbers +``` + +
+ +## Idea + +There is a canonical mapping from the [rational numbers](elementary-number-theory.rational-numbers.md) +to the [upper Dedekind real numbers](real-numbers.upper-dedekind-real-numbers.md). + +## Definition + +```agda +module _ (q : ℚ) where + cut-upper-real-ℚ : subtype lzero ℚ + cut-upper-real-ℚ = le-ℚ-Prop q + + is-in-cut-upper-real-ℚ : ℚ → UU lzero + is-in-cut-upper-real-ℚ = le-ℚ q + + is-inhabited-cut-upper-real-ℚ : exists ℚ cut-upper-real-ℚ + is-inhabited-cut-upper-real-ℚ = exists-greater-ℚ q + + is-rounded-cut-upper-real-ℚ : + (p : ℚ) → + le-ℚ q p ↔ exists ℚ (λ r → le-ℚ-Prop r p ∧ le-ℚ-Prop q r) + pr1 (is-rounded-cut-upper-real-ℚ p) q

Date: Sun, 9 Feb 2025 15:00:35 -0800 Subject: [PATCH 112/227] Progress --- ...ality-lower-dedekind-real-numbers.lagda.md | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md diff --git a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..4980bd1fdb --- /dev/null +++ b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md @@ -0,0 +1,56 @@ +# Inequality on the lower Dedekind real numbers + +```agda +module real-numbers.inequality-lower-dedekind-real-numbers where +``` + +

Imports + +```agda +open import elementary-number-theory.rational-numbers + +open import foundation.powersets +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import order-theory.large-posets +open import order-theory.large-preorders + +open import real-numbers.lower-dedekind-real-numbers +``` + +
+ +## Idea + +The {{#concept "standard ordering" Disambiguation="lower Dedekind real numbers" Agda=leq-lower-ℝ}} on +the [lower real numbers](real-numbers.lower-dedekind-real-numbers.md) is defined as the +cut of one being a subset of the cut of the other. + +## Definition + +```agda +module _ + {l1 l2 : Level} + (x : lower-ℝ l1) + (y : lower-ℝ l2) + where + + leq-lower-ℝ-Prop : Prop (l1 ⊔ l2) + leq-lower-ℝ-Prop = leq-prop-subtype (cut-lower-ℝ x) (cut-lower-ℝ y) +``` + +### Inequality on lower Dedekind reals is a large poset + +```agda +lower-ℝ-Large-Preorder : Large-Preorder lsuc _⊔_ +lower-ℝ-Large-Preorder = powerset-Large-Preorder ℚ + +lower-ℝ-Large-Poset : Large-Poset lsuc _⊔_ +lower-ℝ-Large-Poset = powerset-Large-Poset ℚ +``` + +## References + +{{#bibliography}} From fb18a45e9d71a0dc482e958b7bee3aba7dfd9750 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 15:09:04 -0800 Subject: [PATCH 113/227] Preservation of inequality --- ...ality-lower-dedekind-real-numbers.lagda.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md index 4980bd1fdb..52dd94fe52 100644 --- a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md @@ -7,8 +7,14 @@ module real-numbers.inequality-lower-dedekind-real-numbers where
Imports ```agda +open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.logical-equivalences open import foundation.powersets open import foundation.propositions open import foundation.subtypes @@ -18,6 +24,7 @@ open import order-theory.large-posets open import order-theory.large-preorders open import real-numbers.lower-dedekind-real-numbers +open import real-numbers.rational-lower-dedekind-real-numbers ```
@@ -39,8 +46,13 @@ module _ leq-lower-ℝ-Prop : Prop (l1 ⊔ l2) leq-lower-ℝ-Prop = leq-prop-subtype (cut-lower-ℝ x) (cut-lower-ℝ y) + + leq-lower-ℝ : UU (l1 ⊔ l2) + leq-lower-ℝ = type-Prop leq-lower-ℝ-Prop ``` +## Properties + ### Inequality on lower Dedekind reals is a large poset ```agda @@ -51,6 +63,25 @@ lower-ℝ-Large-Poset : Large-Poset lsuc _⊔_ lower-ℝ-Large-Poset = powerset-Large-Poset ℚ ``` +### The canonical map from the rational numbers to the lower reals preserves inequality + +```agda +preserves-leq-lower-real-ℚ : + (p q : ℚ) → leq-ℚ p q → leq-lower-ℝ (lower-real-ℚ p) (lower-real-ℚ q) +preserves-leq-lower-real-ℚ p q p≤q r r

Date: Sun, 9 Feb 2025 15:19:08 -0800 Subject: [PATCH 114/227] Define normal Dedekind reals in terms of lower and upper cuts --- .../dedekind-real-numbers.lagda.md | 57 ++++++++----------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 929862f718..0824ab205d 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -39,6 +39,9 @@ open import foundation.universe-levels open import foundation-core.truncation-levels open import logic.functoriality-existential-quantification + +open import real-numbers.lower-dedekind-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` @@ -48,19 +51,12 @@ open import logic.functoriality-existential-quantification A {{#concept "Dedekind cut" Agda=is-dedekind-cut WD="dedekind cut" WDID=Q851333}} consists of a [pair](foundation.dependent-pair-types.md) `(L , U)` of -[subtypes](foundation-core.subtypes.md) of -[the rational numbers](elementary-number-theory.rational-numbers.md) `ℚ`, -satisfying the following four conditions - -1. _Inhabitedness_. Both `L` and `U` are - [inhabited](foundation.inhabited-subtypes.md) subtypes of `ℚ`. -2. _Roundedness_. A rational number `q` is in `L` - [if and only if](foundation.logical-equivalences.md) there - [exists](foundation.existential-quantification.md) `q < r` such that `r ∈ L`, - and a rational number `r` is in `U` if and only if there exists `q < r` such - that `q ∈ U`. -3. _Disjointness_. `L` and `U` are disjoint subsets of `ℚ`. -4. _Locatedness_. If `q < r` then `q ∈ L` or `r ∈ U`. +a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers) +and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers) +that also satisfy the following conditions: + +1. _Disjointness_. `L` and `U` are disjoint subsets of `ℚ`. +2. _Locatedness_. If `q < r` then `q ∈ L` or `r ∈ U`. The type of {{#concept "Dedekind real numbers" Agda=ℝ}} is the type of all Dedekind cuts. The Dedekind real numbers will be taken as the standard @@ -77,15 +73,10 @@ module _ is-dedekind-cut-Prop : Prop (l1 ⊔ l2) is-dedekind-cut-Prop = - conjunction-Prop - ( (∃ ℚ L) ∧ (∃ ℚ U)) - ( conjunction-Prop - ( conjunction-Prop - ( ∀' ℚ ( λ q → L q ⇔ ∃ ℚ (λ r → le-ℚ-Prop q r ∧ L r))) - ( ∀' ℚ ( λ r → U r ⇔ ∃ ℚ (λ q → le-ℚ-Prop q r ∧ U q)))) - ( conjunction-Prop - ( ∀' ℚ (λ q → ¬' (L q ∧ U q))) - ( ∀' ℚ (λ q → ∀' ℚ (λ r → le-ℚ-Prop q r ⇒ (L q ∨ U r)))))) + is-lower-dedekind-cut-Prop L ∧ + is-upper-dedekind-cut-Prop U ∧ + ( ∀' ℚ (λ q → ¬' (L q ∧ U q))) ∧ + ( ∀' ℚ (λ q → ∀' ℚ (λ r → le-ℚ-Prop q r ⇒ (L q ∨ U r)))) is-dedekind-cut : UU (l1 ⊔ l2) is-dedekind-cut = type-Prop is-dedekind-cut-Prop @@ -113,6 +104,12 @@ module _ upper-cut-ℝ : subtype l ℚ upper-cut-ℝ = pr1 (pr2 x) + lower-real-ℝ : lower-ℝ l + lower-real-ℝ = lower-cut-ℝ , pr1 (pr2 (pr2 x)) + + upper-real-ℝ : upper-ℝ l + upper-real-ℝ = upper-cut-ℝ , pr1 (pr2 (pr2 (pr2 x))) + is-in-lower-cut-ℝ : ℚ → UU l is-in-lower-cut-ℝ = is-in-subtype lower-cut-ℝ @@ -123,34 +120,30 @@ module _ is-dedekind-cut-cut-ℝ = pr2 (pr2 x) is-inhabited-lower-cut-ℝ : exists ℚ lower-cut-ℝ - is-inhabited-lower-cut-ℝ = pr1 (pr1 is-dedekind-cut-cut-ℝ) + is-inhabited-lower-cut-ℝ = is-inhabited-cut-lower-ℝ lower-real-ℝ is-inhabited-upper-cut-ℝ : exists ℚ upper-cut-ℝ - is-inhabited-upper-cut-ℝ = pr2 (pr1 is-dedekind-cut-cut-ℝ) + is-inhabited-upper-cut-ℝ = is-inhabited-cut-upper-ℝ upper-real-ℝ is-rounded-lower-cut-ℝ : (q : ℚ) → is-in-lower-cut-ℝ q ↔ exists ℚ (λ r → (le-ℚ-Prop q r) ∧ (lower-cut-ℝ r)) - is-rounded-lower-cut-ℝ = - pr1 (pr1 (pr2 is-dedekind-cut-cut-ℝ)) + is-rounded-lower-cut-ℝ = is-rounded-cut-lower-ℝ lower-real-ℝ is-rounded-upper-cut-ℝ : (r : ℚ) → is-in-upper-cut-ℝ r ↔ exists ℚ (λ q → (le-ℚ-Prop q r) ∧ (upper-cut-ℝ q)) - is-rounded-upper-cut-ℝ = - pr2 (pr1 (pr2 is-dedekind-cut-cut-ℝ)) + is-rounded-upper-cut-ℝ = is-rounded-cut-upper-ℝ upper-real-ℝ is-disjoint-cut-ℝ : (q : ℚ) → ¬ (is-in-lower-cut-ℝ q × is-in-upper-cut-ℝ q) - is-disjoint-cut-ℝ = - pr1 (pr2 (pr2 is-dedekind-cut-cut-ℝ)) + is-disjoint-cut-ℝ = pr1 (pr2 (pr2 (pr2 (pr2 x)))) is-located-lower-upper-cut-ℝ : (q r : ℚ) → le-ℚ q r → type-disjunction-Prop (lower-cut-ℝ q) (upper-cut-ℝ r) - is-located-lower-upper-cut-ℝ = - pr2 (pr2 (pr2 is-dedekind-cut-cut-ℝ)) + is-located-lower-upper-cut-ℝ = pr2 (pr2 (pr2 (pr2 (pr2 x)))) cut-ℝ : subtype l ℚ cut-ℝ q = From 7499c7c9baad51f54cb31f7f4c52733a038fdc22 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 15:21:33 -0800 Subject: [PATCH 115/227] Start negation --- ...lower-upper-dedekind-real-numbers.lagda.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md diff --git a/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..485c61bb9c --- /dev/null +++ b/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md @@ -0,0 +1,20 @@ +# Negation of lower and upper Dedekind real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.negation-lower-upper-dedekind-real-numbers where +``` + +

Imports + +```agda +open import foundation.universe-levels + +open import real-numbers.lower-dedekind-real-numbers +open import real-numbers.upper-dedekind-real-numbers +``` + +
+ +## Idea From 2185e189ba4af56d44a7c3d5da0861682d7271de Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Feb 2025 15:26:36 -0800 Subject: [PATCH 116/227] Inequality on upper reals --- ...ality-upper-dedekind-real-numbers.lagda.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/real-numbers/inequality-upper-dedekind-real-numbers.lagda.md diff --git a/src/real-numbers/inequality-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/inequality-upper-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..4e6802b471 --- /dev/null +++ b/src/real-numbers/inequality-upper-dedekind-real-numbers.lagda.md @@ -0,0 +1,83 @@ +# Inequality on the upper Dedekind real numbers + +```agda +module real-numbers.inequality-upper-dedekind-real-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.logical-equivalences +open import foundation.powersets +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import order-theory.large-posets +open import order-theory.large-preorders + +open import real-numbers.upper-dedekind-real-numbers +open import real-numbers.rational-upper-dedekind-real-numbers +``` + +
+ +## Idea + +The {{#concept "standard ordering" Disambiguation="upper Dedekind real numbers" Agda=leq-upper-ℝ}} on +the [upper real numbers](real-numbers.upper-dedekind-real-numbers.md) is defined as the +cut of the second being a subset of the cut of the first. + +## Definition + +```agda +module _ + {l1 l2 : Level} + (x : upper-ℝ l1) + (y : upper-ℝ l2) + where + + leq-upper-ℝ-Prop : Prop (l1 ⊔ l2) + leq-upper-ℝ-Prop = leq-prop-subtype (cut-upper-ℝ y) (cut-upper-ℝ x) + + leq-upper-ℝ : UU (l1 ⊔ l2) + leq-upper-ℝ = type-Prop leq-upper-ℝ-Prop +``` + +## Properties + +### Inequality on upper Dedekind reals is a large poset + +```agda +upper-ℝ-Large-Preorder : Large-Preorder lsuc _⊔_ +upper-ℝ-Large-Preorder = powerset-Large-Preorder ℚ + +upper-ℝ-Large-Poset : Large-Poset lsuc _⊔_ +upper-ℝ-Large-Poset = powerset-Large-Poset ℚ +``` + +### The canonical map from the rational numbers to the upper reals preserves inequality + +```agda +preserves-leq-upper-real-ℚ : + (p q : ℚ) → leq-ℚ p q → leq-upper-ℝ (upper-real-ℚ p) (upper-real-ℚ q) +preserves-leq-upper-real-ℚ p q p≤q r = concatenate-leq-le-ℚ p q r p≤q + +reflects-leq-upper-real-ℚ : + (p q : ℚ) → leq-upper-ℝ (upper-real-ℚ p) (upper-real-ℚ q) → leq-ℚ p q +reflects-leq-upper-real-ℚ p q q Date: Mon, 10 Feb 2025 08:32:11 -0800 Subject: [PATCH 117/227] overhaul --- src/real-numbers.lagda.md | 5 + ...thmetically-located-dedekind-cuts.lagda.md | 76 +++---- .../dedekind-real-numbers.lagda.md | 33 ++- ...ality-lower-dedekind-real-numbers.lagda.md | 21 +- .../inequality-real-numbers.lagda.md | 31 +-- ...ality-upper-dedekind-real-numbers.lagda.md | 23 +- .../lower-dedekind-real-numbers.lagda.md | 3 + ...lower-upper-dedekind-real-numbers.lagda.md | 205 ++++++++++++++++++ .../negation-real-numbers.lagda.md | 88 ++------ ...ional-lower-dedekind-real-numbers.lagda.md | 5 +- .../rational-real-numbers.lagda.md | 31 +-- ...ional-upper-dedekind-real-numbers.lagda.md | 5 +- .../upper-dedekind-real-numbers.lagda.md | 3 + 13 files changed, 362 insertions(+), 167 deletions(-) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index b110b77299..1cd86ceaa3 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -7,11 +7,16 @@ module real-numbers where open import real-numbers.arithmetically-located-dedekind-cuts public open import real-numbers.dedekind-real-numbers public +open import real-numbers.inequality-lower-dedekind-real-numbers public open import real-numbers.inequality-real-numbers public +open import real-numbers.inequality-upper-dedekind-real-numbers public open import real-numbers.lower-dedekind-real-numbers public open import real-numbers.metric-space-of-real-numbers public +open import real-numbers.negation-lower-upper-dedekind-real-numbers public open import real-numbers.negation-real-numbers public +open import real-numbers.rational-lower-dedekind-real-numbers public open import real-numbers.rational-real-numbers public +open import real-numbers.rational-upper-dedekind-real-numbers public open import real-numbers.similarity-real-numbers public open import real-numbers.strict-inequality-real-numbers public open import real-numbers.upper-dedekind-real-numbers public diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index b33f8a86fc..31d707215b 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -17,6 +17,7 @@ open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.binary-transport open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.coproduct-types @@ -31,18 +32,23 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import group-theory.abelian-groups + +open import real-numbers.lower-dedekind-real-numbers +open import real-numbers.upper-dedekind-real-numbers +open import real-numbers.dedekind-real-numbers ``` ## Definition -A [Dedekind cut](real-numbers.dedekind-real-numbers.md) `(L, U)` is -{{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if for any -positive [rational number](elementary-number-theory.rational-numbers.md) +A pair of a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) +`L` and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U` +is {{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if for +any positive [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ`, there exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. -Intuitively, when `L , U` represent the Dedekind cuts of a real number `x`, `p` -and `q` are rational approximations of `x` to within `ε`. This follows parts of +Intuitively, when `L , U` represent the cuts of a real number `x`, `p` and `q` +are rational approximations of `x` to within `ε`. This follows parts of Section 11 in {{#cite BauerTaylor2009}}. ## Definitions @@ -51,16 +57,17 @@ Section 11 in {{#cite BauerTaylor2009}}. ```agda module _ - {l : Level} (L : subtype l ℚ) (U : subtype l ℚ) + {l : Level} (L : lower-ℝ l) (U : upper-ℝ l) where - is-arithmetically-located-pair-of-subtypes-ℚ : UU l - is-arithmetically-located-pair-of-subtypes-ℚ = - (ε : ℚ) → - is-positive-ℚ ε → + is-arithmetically-located-pair-of-cuts-ℚ : UU l + is-arithmetically-located-pair-of-cuts-ℚ = + (ε⁺ : ℚ⁺) → exists ( ℚ × ℚ) - ( λ (p , q) → le-ℚ-Prop p q ∧ le-ℚ-Prop q (p +ℚ ε) ∧ L p ∧ U q) + ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ + cut-lower-ℝ L p ∧ + cut-upper-ℝ U q) ``` ## Properties @@ -72,50 +79,37 @@ rational numbers, it is also located. ```agda module _ - {l : Level} (L : subtype l ℚ) (U : subtype l ℚ) + {l : Level} (L : lower-ℝ l) (U : upper-ℝ l) where abstract - is-located-is-arithmetically-located-pair-of-subtypes-ℚ : - is-arithmetically-located-pair-of-subtypes-ℚ L U → - ((p q : ℚ) → le-ℚ p q → is-in-subtype L q → is-in-subtype L p) → - ((p q : ℚ) → le-ℚ p q → is-in-subtype U p → is-in-subtype U q) → - (p q : ℚ) → le-ℚ p q → type-disjunction-Prop (L p) (U q) - is-located-is-arithmetically-located-pair-of-subtypes-ℚ - arithmetically-located lower-closed upper-closed p q p ## Idea -The {{#concept "standard ordering" Disambiguation="upper Dedekind real numbers" Agda=leq-upper-ℝ}} on -the [upper real numbers](real-numbers.upper-dedekind-real-numbers.md) is defined as the -cut of the second being a subset of the cut of the first. +The +{{#concept "standard ordering" Disambiguation="upper Dedekind real numbers" Agda=leq-upper-ℝ}} +on the [upper real numbers](real-numbers.upper-dedekind-real-numbers.md) is +defined as the cut of the second being a subset of the cut of the first. ## Definition @@ -57,10 +58,20 @@ module _ ```agda upper-ℝ-Large-Preorder : Large-Preorder lsuc _⊔_ -upper-ℝ-Large-Preorder = powerset-Large-Preorder ℚ +type-Large-Preorder upper-ℝ-Large-Preorder = upper-ℝ +leq-prop-Large-Preorder upper-ℝ-Large-Preorder = leq-upper-ℝ-Prop +refl-leq-Large-Preorder upper-ℝ-Large-Preorder x = + refl-leq-subtype (cut-upper-ℝ x) +transitive-leq-Large-Preorder upper-ℝ-Large-Preorder x y z y≤z x≤y = + transitive-leq-subtype (cut-upper-ℝ z) (cut-upper-ℝ y) (cut-upper-ℝ x) x≤y y≤z upper-ℝ-Large-Poset : Large-Poset lsuc _⊔_ -upper-ℝ-Large-Poset = powerset-Large-Poset ℚ +large-preorder-Large-Poset upper-ℝ-Large-Poset = upper-ℝ-Large-Preorder +antisymmetric-leq-Large-Poset upper-ℝ-Large-Poset x y x≤y y≤x = + eq-eq-cut-upper-ℝ + ( x) + ( y) + ( antisymmetric-leq-subtype (cut-upper-ℝ x) (cut-upper-ℝ y) y≤x x≤y) ``` ### The canonical map from the rational numbers to the upper reals preserves inequality diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index 8d9097a7ec..6bc94cd66d 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -75,6 +75,9 @@ module _ is-in-cut-lower-ℝ : ℚ → UU l is-in-cut-lower-ℝ = is-in-subtype cut-lower-ℝ + is-lower-dedekind-cut-lower-ℝ : is-lower-dedekind-cut cut-lower-ℝ + is-lower-dedekind-cut-lower-ℝ = pr2 x + is-inhabited-cut-lower-ℝ : exists ℚ cut-lower-ℝ is-inhabited-cut-lower-ℝ = pr1 (pr2 x) diff --git a/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md index 485c61bb9c..3f6366d7ac 100644 --- a/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md @@ -9,12 +9,217 @@ module real-numbers.negation-lower-upper-dedekind-real-numbers where
Imports ```agda +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.cartesian-product-types +open import foundation.conjunction +open import foundation.dependent-pair-types +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.powersets +open import foundation.retractions +open import foundation.sections +open import foundation.subtypes +open import foundation.transport-along-identifications open import foundation.universe-levels +open import logic.functoriality-existential-quantification + open import real-numbers.lower-dedekind-real-numbers open import real-numbers.upper-dedekind-real-numbers +open import real-numbers.rational-lower-dedekind-real-numbers +open import real-numbers.rational-upper-dedekind-real-numbers ```
## Idea + +The negation of a lower Dedekind real is an upper Dedekind real containing +the negations of elements in the lower cut, and vice versa. + +## Definition + +### The negation of a lower Dedekind real, as an upper Dedekind real + +```agda +module _ + {l : Level} (x : lower-ℝ l) + where + + cut-neg-lower-ℝ : subtype l ℚ + cut-neg-lower-ℝ p = cut-lower-ℝ x (neg-ℚ p) + + is-in-cut-neg-lower-ℝ : ℚ → UU l + is-in-cut-neg-lower-ℝ = is-in-subtype cut-neg-lower-ℝ + + abstract + is-inhabited-cut-neg-lower-ℝ : exists ℚ cut-neg-lower-ℝ + is-inhabited-cut-neg-lower-ℝ = + map-exists + ( is-in-cut-neg-lower-ℝ) + ( neg-ℚ) + ( λ p → tr (is-in-cut-lower-ℝ x) (inv (neg-neg-ℚ p))) + ( is-inhabited-cut-lower-ℝ x) + + is-rounded-cut-neg-lower-ℝ : + (q : ℚ) → + is-in-cut-neg-lower-ℝ q ↔ + exists ℚ (λ p → le-ℚ-Prop p q ∧ cut-neg-lower-ℝ p) + pr1 (is-rounded-cut-neg-lower-ℝ q) -q @@ -50,72 +55,17 @@ module _ {l : Level} (x : ℝ l) where + lower-real-neg-ℝ : lower-ℝ l + lower-real-neg-ℝ = neg-upper-ℝ (upper-real-ℝ x) + + upper-real-neg-ℝ : upper-ℝ l + upper-real-neg-ℝ = neg-lower-ℝ (lower-real-ℝ x) + lower-cut-neg-ℝ : subtype l ℚ - lower-cut-neg-ℝ q = upper-cut-ℝ x (neg-ℚ q) + lower-cut-neg-ℝ = cut-lower-ℝ lower-real-neg-ℝ upper-cut-neg-ℝ : subtype l ℚ - upper-cut-neg-ℝ q = lower-cut-ℝ x (neg-ℚ q) - - is-inhabited-lower-cut-neg-ℝ : exists ℚ lower-cut-neg-ℝ - is-inhabited-lower-cut-neg-ℝ = - map-exists - ( is-in-subtype lower-cut-neg-ℝ) - ( neg-ℚ) - ( λ q → tr (is-in-upper-cut-ℝ x) (inv (neg-neg-ℚ q))) - ( is-inhabited-upper-cut-ℝ x) - - is-inhabited-upper-cut-neg-ℝ : exists ℚ upper-cut-neg-ℝ - is-inhabited-upper-cut-neg-ℝ = - map-exists - ( is-in-subtype upper-cut-neg-ℝ) - ( neg-ℚ) - ( λ q → tr (is-in-lower-cut-ℝ x) (inv (neg-neg-ℚ q))) - ( is-inhabited-lower-cut-ℝ x) - - is-rounded-lower-cut-neg-ℝ : - (q : ℚ) → - is-in-subtype lower-cut-neg-ℝ q ↔ - exists ℚ (λ r → (le-ℚ-Prop q r) ∧ (lower-cut-neg-ℝ r)) - pr1 (is-rounded-lower-cut-neg-ℝ q) in-neg-lower = - map-exists - ( λ r → le-ℚ q r × is-in-subtype lower-cut-neg-ℝ r) - ( neg-ℚ) - ( λ r (r<-q , in-upper-r) → - ( ( tr - ( λ x → le-ℚ x (neg-ℚ r)) - ( neg-neg-ℚ q) - ( neg-le-ℚ r (neg-ℚ q) r<-q)) , - ( tr (is-in-upper-cut-ℝ x) (inv (neg-neg-ℚ r)) in-upper-r))) - ( forward-implication (is-rounded-upper-cut-ℝ x (neg-ℚ q)) in-neg-lower) - pr2 (is-rounded-lower-cut-neg-ℝ q) exists-r = - backward-implication - ( is-rounded-upper-cut-ℝ x (neg-ℚ q)) - ( map-exists - ( λ r → le-ℚ r (neg-ℚ q) × is-in-upper-cut-ℝ x r) - ( neg-ℚ) - ( λ r (q @@ -56,28 +60,13 @@ the [image](foundation.images.md) of this embedding is-dedekind-cut-le-ℚ : (x : ℚ) → is-dedekind-cut - (λ (q : ℚ) → le-ℚ-Prop q x) - (λ (r : ℚ) → le-ℚ-Prop x r) + (cut-lower-real-ℚ x) + (cut-upper-real-ℚ x) is-dedekind-cut-le-ℚ x = - ( exists-lesser-ℚ x , exists-greater-ℚ x) , - ( ( λ (q : ℚ) → - dense-le-ℚ q x , - elim-exists - ( le-ℚ-Prop q x) - ( λ r (H , H') → transitive-le-ℚ q r x H' H)) , - ( λ (r : ℚ) → - α x r ∘ dense-le-ℚ x r , - elim-exists - ( le-ℚ-Prop x r) - ( λ q (H , H') → transitive-le-ℚ x q r H H'))) , - ( λ (q : ℚ) (H , H') → asymmetric-le-ℚ q x H H') , - ( located-le-ℚ x) - where - α : - (a b : ℚ) → - exists ℚ (λ r → le-ℚ-Prop a r ∧ le-ℚ-Prop r b) → - exists ℚ (λ r → le-ℚ-Prop r b ∧ le-ℚ-Prop a r) - α a b = map-tot-exists (λ r (p , q) → (q , p)) + is-lower-dedekind-cut-lower-ℝ (lower-real-ℚ x) , + is-upper-dedekind-cut-upper-ℝ (upper-real-ℚ x) , + (λ q (H , K) → asymmetric-le-ℚ q x H K) , + located-le-ℚ x ``` ### The canonical map from `ℚ` to `ℝ` diff --git a/src/real-numbers/rational-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/rational-upper-dedekind-real-numbers.lagda.md index c6e1c589de..9761287d50 100644 --- a/src/real-numbers/rational-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/rational-upper-dedekind-real-numbers.lagda.md @@ -24,8 +24,9 @@ open import real-numbers.upper-dedekind-real-numbers ## Idea -There is a canonical mapping from the [rational numbers](elementary-number-theory.rational-numbers.md) -to the [upper Dedekind real numbers](real-numbers.upper-dedekind-real-numbers.md). +There is a canonical mapping from the +[rational numbers](elementary-number-theory.rational-numbers.md) to the +[upper Dedekind real numbers](real-numbers.upper-dedekind-real-numbers.md). ## Definition diff --git a/src/real-numbers/upper-dedekind-real-numbers.lagda.md b/src/real-numbers/upper-dedekind-real-numbers.lagda.md index c9dbf0f8f4..264bf07633 100644 --- a/src/real-numbers/upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/upper-dedekind-real-numbers.lagda.md @@ -75,6 +75,9 @@ module _ is-in-cut-upper-ℝ : ℚ → UU l is-in-cut-upper-ℝ = is-in-subtype cut-upper-ℝ + is-upper-dedekind-cut-upper-ℝ : is-upper-dedekind-cut cut-upper-ℝ + is-upper-dedekind-cut-upper-ℝ = pr2 x + is-inhabited-cut-upper-ℝ : exists ℚ cut-upper-ℝ is-inhabited-cut-upper-ℝ = pr1 (pr2 x) From 70f181c77d39b461ed5a3b79376f9f685fb70508 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Feb 2025 08:58:26 -0800 Subject: [PATCH 118/227] make pre-commit --- .../arithmetically-located-dedekind-cuts.lagda.md | 6 +++--- src/real-numbers/inequality-real-numbers.lagda.md | 6 +++--- ...egation-lower-upper-dedekind-real-numbers.lagda.md | 11 ++++++----- src/real-numbers/negation-real-numbers.lagda.md | 4 ++-- src/real-numbers/rational-real-numbers.lagda.md | 2 +- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 31d707215b..06174ce77c 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -33,9 +33,9 @@ open import foundation.universe-levels open import group-theory.abelian-groups +open import real-numbers.dedekind-real-numbers open import real-numbers.lower-dedekind-real-numbers open import real-numbers.upper-dedekind-real-numbers -open import real-numbers.dedekind-real-numbers ``` @@ -48,8 +48,8 @@ is {{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if for any positive [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ`, there exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. Intuitively, when `L , U` represent the cuts of a real number `x`, `p` and `q` -are rational approximations of `x` to within `ε`. This follows parts of -Section 11 in {{#cite BauerTaylor2009}}. +are rational approximations of `x` to within `ε`. This follows parts of Section +11 in {{#cite BauerTaylor2009}}. ## Definitions diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index 83978ab7da..579ef75be4 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -27,14 +27,14 @@ open import order-theory.large-preorders open import order-theory.posets open import order-theory.preorders +open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-lower-dedekind-real-numbers open import real-numbers.inequality-upper-dedekind-real-numbers open import real-numbers.lower-dedekind-real-numbers -open import real-numbers.upper-dedekind-real-numbers -open import real-numbers.negation-real-numbers open import real-numbers.negation-lower-upper-dedekind-real-numbers -open import real-numbers.dedekind-real-numbers +open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` diff --git a/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md index 3f6366d7ac..25081b1abe 100644 --- a/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md @@ -29,17 +29,17 @@ open import foundation.universe-levels open import logic.functoriality-existential-quantification open import real-numbers.lower-dedekind-real-numbers -open import real-numbers.upper-dedekind-real-numbers open import real-numbers.rational-lower-dedekind-real-numbers open import real-numbers.rational-upper-dedekind-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` ## Idea -The negation of a lower Dedekind real is an upper Dedekind real containing -the negations of elements in the lower cut, and vice versa. +The negation of a lower Dedekind real is an upper Dedekind real containing the +negations of elements in the lower cut, and vice versa. ## Definition @@ -126,7 +126,7 @@ module _ ( λ x → le-ℚ x (neg-ℚ p)) ( neg-neg-ℚ q) ( neg-le-ℚ p (neg-ℚ q) p<-q) , - tr (is-in-cut-upper-ℝ x) (inv (neg-neg-ℚ p)) x

diff --git a/src/real-numbers/rational-real-numbers.lagda.md b/src/real-numbers/rational-real-numbers.lagda.md index d3829df34b..69ec475e2a 100644 --- a/src/real-numbers/rational-real-numbers.lagda.md +++ b/src/real-numbers/rational-real-numbers.lagda.md @@ -37,9 +37,9 @@ open import logic.functoriality-existential-quantification open import real-numbers.dedekind-real-numbers open import real-numbers.lower-dedekind-real-numbers -open import real-numbers.upper-dedekind-real-numbers open import real-numbers.rational-lower-dedekind-real-numbers open import real-numbers.rational-upper-dedekind-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` From 926877950f77ce8f137452df3e56bbc22ad573bc Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Feb 2025 09:08:37 -0800 Subject: [PATCH 119/227] a -> an --- src/real-numbers/upper-dedekind-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/upper-dedekind-real-numbers.lagda.md b/src/real-numbers/upper-dedekind-real-numbers.lagda.md index 264bf07633..01625b8046 100644 --- a/src/real-numbers/upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/upper-dedekind-real-numbers.lagda.md @@ -25,7 +25,7 @@ open import foundation.universe-levels ## Idea -A upper +An upper {{#concept "Dedekind cut" Agda=is-dedekind-cut WD="dedekind cut" WDID=Q851333}} consists of a [subtype](foundation-core.subtypes.md) `U` of [the rational numbers](elementary-number-theory.rational-numbers.md) `ℚ`, From 1b9d81b2b52a68c6093186f8b12facffc089ed53 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Feb 2025 09:10:52 -0800 Subject: [PATCH 120/227] Rename some things --- src/real-numbers/inequality-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index 579ef75be4..098feec9e9 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -62,7 +62,7 @@ module _ ## Properties -### Equivalence with reversed containment of upper cuts +### Equivalence with inequality on upper cuts ```agda module _ From f75209b769526ce9b5c6f17f50b75c823ba3481f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Feb 2025 17:08:28 -0800 Subject: [PATCH 121/227] Some more theorems --- ...uality-lower-dedekind-real-numbers.lagda.md | 18 ++++++++++++++++++ ...uality-upper-dedekind-real-numbers.lagda.md | 18 ++++++++++++++++++ ...-lower-upper-dedekind-real-numbers.lagda.md | 2 ++ 3 files changed, 38 insertions(+) diff --git a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md index 9cd1a90e4c..7a0a1d476b 100644 --- a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md @@ -14,7 +14,9 @@ open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types +open import foundation.existential-quantification open import foundation.logical-equivalences +open import foundation.negation open import foundation.powersets open import foundation.propositions open import foundation.subtypes @@ -74,6 +76,22 @@ antisymmetric-leq-Large-Poset lower-ℝ-Large-Poset x y x≤y y≤x = ( antisymmetric-leq-subtype (cut-lower-ℝ x) (cut-lower-ℝ y) x≤y y≤x) ``` +### If a rational is in a lower Dedekind cut, its projections is less than or equal to the corresponding lower real + +```agda +module _ + {l : Level} + (x : lower-ℝ l) + (q : ℚ) + where + + leq-is-in-cut-lower-real-ℚ : is-in-cut-lower-ℝ x q → leq-lower-ℝ (lower-real-ℚ q) x + leq-is-in-cut-lower-real-ℚ q∈L p p From 098d4e88a48b3e1b87da820e5af988c4adc43399 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Feb 2025 17:20:47 -0800 Subject: [PATCH 122/227] Finish gaps --- .../inequality-rational-numbers.lagda.md | 256 +++++++++--------- .../rational-numbers.lagda.md | 17 +- ...thmetically-located-dedekind-cuts.lagda.md | 5 +- ...ality-lower-dedekind-real-numbers.lagda.md | 3 +- ...ality-upper-dedekind-real-numbers.lagda.md | 4 +- ...lower-upper-dedekind-real-numbers.lagda.md | 4 +- 6 files changed, 152 insertions(+), 137 deletions(-) diff --git a/src/elementary-number-theory/inequality-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-rational-numbers.lagda.md index a945128fad..12ddd6f34a 100644 --- a/src/elementary-number-theory/inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-rational-numbers.lagda.md @@ -103,33 +103,35 @@ refl-leq-ℚ x = ### Inequality on the rational numbers is antisymmetric ```agda -antisymmetric-leq-ℚ : (x y : ℚ) → leq-ℚ x y → leq-ℚ y x → x = y -antisymmetric-leq-ℚ x y H H' = - ( inv (is-retraction-rational-fraction-ℚ x)) ∙ - ( eq-ℚ-sim-fraction-ℤ - ( fraction-ℚ x) - ( fraction-ℚ y) - ( is-sim-antisymmetric-leq-fraction-ℤ +abstract + antisymmetric-leq-ℚ : (x y : ℚ) → leq-ℚ x y → leq-ℚ y x → x = y + antisymmetric-leq-ℚ x y H H' = + ( inv (is-retraction-rational-fraction-ℚ x)) ∙ + ( eq-ℚ-sim-fraction-ℤ ( fraction-ℚ x) ( fraction-ℚ y) - ( H) - ( H'))) ∙ - ( is-retraction-rational-fraction-ℚ y) + ( is-sim-antisymmetric-leq-fraction-ℤ + ( fraction-ℚ x) + ( fraction-ℚ y) + ( H) + ( H'))) ∙ + ( is-retraction-rational-fraction-ℚ y) ``` ### Inequality on the rational numbers is linear ```agda -linear-leq-ℚ : (x y : ℚ) → (leq-ℚ x y) + (leq-ℚ y x) -linear-leq-ℚ x y = - map-coproduct - ( id) - ( is-nonnegative-eq-ℤ - (distributive-neg-diff-ℤ - ( numerator-ℚ y *ℤ denominator-ℚ x) - ( numerator-ℚ x *ℤ denominator-ℚ y))) - ( decide-is-nonnegative-is-nonnegative-neg-ℤ - { cross-mul-diff-fraction-ℤ (fraction-ℚ x) (fraction-ℚ y)}) +abstract + linear-leq-ℚ : (x y : ℚ) → (leq-ℚ x y) + (leq-ℚ y x) + linear-leq-ℚ x y = + map-coproduct + ( id) + ( is-nonnegative-eq-ℤ + (distributive-neg-diff-ℤ + ( numerator-ℚ y *ℤ denominator-ℚ x) + ( numerator-ℚ x *ℤ denominator-ℚ y))) + ( decide-is-nonnegative-is-nonnegative-neg-ℤ + { cross-mul-diff-fraction-ℤ (fraction-ℚ x) (fraction-ℚ y)}) ``` ### Inequality on the rational numbers is transitive @@ -139,12 +141,13 @@ module _ (x y z : ℚ) where - transitive-leq-ℚ : leq-ℚ y z → leq-ℚ x y → leq-ℚ x z - transitive-leq-ℚ = - transitive-leq-fraction-ℤ - ( fraction-ℚ x) - ( fraction-ℚ y) - ( fraction-ℚ z) + abstract + transitive-leq-ℚ : leq-ℚ y z → leq-ℚ x y → leq-ℚ x z + transitive-leq-ℚ = + transitive-leq-fraction-ℤ + ( fraction-ℚ x) + ( fraction-ℚ y) + ( fraction-ℚ z) ``` ### The partially ordered set of rational numbers ordered by inequality @@ -165,43 +168,45 @@ module _ (p q : fraction-ℤ) where - preserves-leq-rational-fraction-ℤ : - leq-fraction-ℤ p q → leq-ℚ (rational-fraction-ℤ p) (rational-fraction-ℤ q) - preserves-leq-rational-fraction-ℤ = - preserves-leq-sim-fraction-ℤ - ( p) - ( q) - ( reduce-fraction-ℤ p) - ( reduce-fraction-ℤ q) - ( sim-reduced-fraction-ℤ p) - ( sim-reduced-fraction-ℤ q) + abstract + preserves-leq-rational-fraction-ℤ : + leq-fraction-ℤ p q → leq-ℚ (rational-fraction-ℤ p) (rational-fraction-ℤ q) + preserves-leq-rational-fraction-ℤ = + preserves-leq-sim-fraction-ℤ + ( p) + ( q) + ( reduce-fraction-ℤ p) + ( reduce-fraction-ℤ q) + ( sim-reduced-fraction-ℤ p) + ( sim-reduced-fraction-ℤ q) module _ (x : ℚ) (p : fraction-ℤ) where - preserves-leq-right-rational-fraction-ℤ : - leq-fraction-ℤ (fraction-ℚ x) p → leq-ℚ x (rational-fraction-ℤ p) - preserves-leq-right-rational-fraction-ℤ H = - concatenate-leq-sim-fraction-ℤ - ( fraction-ℚ x) - ( p) - ( fraction-ℚ ( rational-fraction-ℤ p)) - ( H) - ( sim-reduced-fraction-ℤ p) - - reflects-leq-right-rational-fraction-ℤ : - leq-ℚ x (rational-fraction-ℤ p) → leq-fraction-ℤ (fraction-ℚ x) p - reflects-leq-right-rational-fraction-ℤ H = - concatenate-leq-sim-fraction-ℤ - ( fraction-ℚ x) - ( reduce-fraction-ℤ p) - ( p) - ( H) - ( symmetric-sim-fraction-ℤ + abstract + preserves-leq-right-rational-fraction-ℤ : + leq-fraction-ℤ (fraction-ℚ x) p → leq-ℚ x (rational-fraction-ℤ p) + preserves-leq-right-rational-fraction-ℤ H = + concatenate-leq-sim-fraction-ℤ + ( fraction-ℚ x) ( p) + ( fraction-ℚ ( rational-fraction-ℤ p)) + ( H) + ( sim-reduced-fraction-ℤ p) + + reflects-leq-right-rational-fraction-ℤ : + leq-ℚ x (rational-fraction-ℤ p) → leq-fraction-ℤ (fraction-ℚ x) p + reflects-leq-right-rational-fraction-ℤ H = + concatenate-leq-sim-fraction-ℤ + ( fraction-ℚ x) ( reduce-fraction-ℤ p) - ( sim-reduced-fraction-ℤ p)) + ( p) + ( H) + ( symmetric-sim-fraction-ℤ + ( p) + ( reduce-fraction-ℤ p) + ( sim-reduced-fraction-ℤ p)) iff-leq-right-rational-fraction-ℤ : leq-fraction-ℤ (fraction-ℚ x) p ↔ leq-ℚ x (rational-fraction-ℤ p) @@ -209,26 +214,27 @@ module _ preserves-leq-right-rational-fraction-ℤ pr2 iff-leq-right-rational-fraction-ℤ = reflects-leq-right-rational-fraction-ℤ - preserves-leq-left-rational-fraction-ℤ : - leq-fraction-ℤ p (fraction-ℚ x) → leq-ℚ (rational-fraction-ℤ p) x - preserves-leq-left-rational-fraction-ℤ = - concatenate-sim-leq-fraction-ℤ - ( fraction-ℚ ( rational-fraction-ℤ p)) - ( p) - ( fraction-ℚ x) - ( symmetric-sim-fraction-ℤ - ( p) + abstract + preserves-leq-left-rational-fraction-ℤ : + leq-fraction-ℤ p (fraction-ℚ x) → leq-ℚ (rational-fraction-ℤ p) x + preserves-leq-left-rational-fraction-ℤ = + concatenate-sim-leq-fraction-ℤ ( fraction-ℚ ( rational-fraction-ℤ p)) - ( sim-reduced-fraction-ℤ p)) - - reflects-leq-left-rational-fraction-ℤ : - leq-ℚ (rational-fraction-ℤ p) x → leq-fraction-ℤ p (fraction-ℚ x) - reflects-leq-left-rational-fraction-ℤ = - concatenate-sim-leq-fraction-ℤ - ( p) - ( reduce-fraction-ℤ p) - ( fraction-ℚ x) - ( sim-reduced-fraction-ℤ p) + ( p) + ( fraction-ℚ x) + ( symmetric-sim-fraction-ℤ + ( p) + ( fraction-ℚ ( rational-fraction-ℤ p)) + ( sim-reduced-fraction-ℤ p)) + + reflects-leq-left-rational-fraction-ℤ : + leq-ℚ (rational-fraction-ℤ p) x → leq-fraction-ℤ p (fraction-ℚ x) + reflects-leq-left-rational-fraction-ℤ = + concatenate-sim-leq-fraction-ℤ + ( p) + ( reduce-fraction-ℤ p) + ( fraction-ℚ x) + ( sim-reduced-fraction-ℤ p) iff-leq-left-rational-fraction-ℤ : leq-fraction-ℤ p (fraction-ℚ x) ↔ leq-ℚ (rational-fraction-ℤ p) x @@ -243,26 +249,29 @@ module _ (x y : ℚ) where - iff-translate-diff-leq-zero-ℚ : leq-ℚ zero-ℚ (y -ℚ x) ↔ leq-ℚ x y - iff-translate-diff-leq-zero-ℚ = - logical-equivalence-reasoning - leq-ℚ zero-ℚ (y -ℚ x) - ↔ leq-fraction-ℤ - ( zero-fraction-ℤ) - ( add-fraction-ℤ (fraction-ℚ y) (neg-fraction-ℤ (fraction-ℚ x))) - by - inv-iff - ( iff-leq-right-rational-fraction-ℤ - ( zero-ℚ) - ( add-fraction-ℤ (fraction-ℚ y) (neg-fraction-ℤ (fraction-ℚ x)))) - ↔ leq-ℚ x y - by - inv-tr - ( _↔ leq-ℚ x y) - ( eq-translate-diff-leq-zero-fraction-ℤ - ( fraction-ℚ x) - ( fraction-ℚ y)) - ( id-iff) + abstract + iff-translate-diff-leq-zero-ℚ : leq-ℚ zero-ℚ (y -ℚ x) ↔ leq-ℚ x y + iff-translate-diff-leq-zero-ℚ = + logical-equivalence-reasoning + leq-ℚ zero-ℚ (y -ℚ x) + ↔ leq-fraction-ℤ + ( zero-fraction-ℤ) + ( add-fraction-ℤ (fraction-ℚ y) (neg-fraction-ℤ (fraction-ℚ x))) + by + inv-iff + ( iff-leq-right-rational-fraction-ℤ + ( zero-ℚ) + ( add-fraction-ℤ + ( fraction-ℚ y) + ( neg-fraction-ℤ (fraction-ℚ x)))) + ↔ leq-ℚ x y + by + inv-tr + ( _↔ leq-ℚ x y) + ( eq-translate-diff-leq-zero-fraction-ℤ + ( fraction-ℚ x) + ( fraction-ℚ y)) + ( id-iff) ``` ### Inequality on the rational numbers is invariant by translation @@ -272,34 +281,35 @@ module _ (z x y : ℚ) where - iff-translate-left-leq-ℚ : leq-ℚ (z +ℚ x) (z +ℚ y) ↔ leq-ℚ x y - iff-translate-left-leq-ℚ = - logical-equivalence-reasoning - leq-ℚ (z +ℚ x) (z +ℚ y) - ↔ leq-ℚ zero-ℚ ((z +ℚ y) -ℚ (z +ℚ x)) - by (inv-iff (iff-translate-diff-leq-zero-ℚ (z +ℚ x) (z +ℚ y))) - ↔ leq-ℚ zero-ℚ (y -ℚ x) - by - ( inv-tr - ( _↔ leq-ℚ zero-ℚ (y -ℚ x)) - ( ap (leq-ℚ zero-ℚ) (left-translation-diff-ℚ y x z)) - ( id-iff)) - ↔ leq-ℚ x y - by (iff-translate-diff-leq-zero-ℚ x y) - - iff-translate-right-leq-ℚ : leq-ℚ (x +ℚ z) (y +ℚ z) ↔ leq-ℚ x y - iff-translate-right-leq-ℚ = - logical-equivalence-reasoning - leq-ℚ (x +ℚ z) (y +ℚ z) - ↔ leq-ℚ zero-ℚ ((y +ℚ z) -ℚ (x +ℚ z)) - by (inv-iff (iff-translate-diff-leq-zero-ℚ (x +ℚ z) (y +ℚ z))) - ↔ leq-ℚ zero-ℚ (y -ℚ x) - by - ( inv-tr - ( _↔ leq-ℚ zero-ℚ (y -ℚ x)) - ( ap (leq-ℚ zero-ℚ) (right-translation-diff-ℚ y x z)) - ( id-iff)) - ↔ leq-ℚ x y by (iff-translate-diff-leq-zero-ℚ x y) + abstract + iff-translate-left-leq-ℚ : leq-ℚ (z +ℚ x) (z +ℚ y) ↔ leq-ℚ x y + iff-translate-left-leq-ℚ = + logical-equivalence-reasoning + leq-ℚ (z +ℚ x) (z +ℚ y) + ↔ leq-ℚ zero-ℚ ((z +ℚ y) -ℚ (z +ℚ x)) + by (inv-iff (iff-translate-diff-leq-zero-ℚ (z +ℚ x) (z +ℚ y))) + ↔ leq-ℚ zero-ℚ (y -ℚ x) + by + ( inv-tr + ( _↔ leq-ℚ zero-ℚ (y -ℚ x)) + ( ap (leq-ℚ zero-ℚ) (left-translation-diff-ℚ y x z)) + ( id-iff)) + ↔ leq-ℚ x y + by (iff-translate-diff-leq-zero-ℚ x y) + + iff-translate-right-leq-ℚ : leq-ℚ (x +ℚ z) (y +ℚ z) ↔ leq-ℚ x y + iff-translate-right-leq-ℚ = + logical-equivalence-reasoning + leq-ℚ (x +ℚ z) (y +ℚ z) + ↔ leq-ℚ zero-ℚ ((y +ℚ z) -ℚ (x +ℚ z)) + by (inv-iff (iff-translate-diff-leq-zero-ℚ (x +ℚ z) (y +ℚ z))) + ↔ leq-ℚ zero-ℚ (y -ℚ x) + by + ( inv-tr + ( _↔ leq-ℚ zero-ℚ (y -ℚ x)) + ( ap (leq-ℚ zero-ℚ) (right-translation-diff-ℚ y x z)) + ( id-iff)) + ↔ leq-ℚ x y by (iff-translate-diff-leq-zero-ℚ x y) preserves-leq-left-add-ℚ : leq-ℚ x y → leq-ℚ (x +ℚ z) (y +ℚ z) preserves-leq-left-add-ℚ = backward-implication iff-translate-right-leq-ℚ diff --git a/src/elementary-number-theory/rational-numbers.lagda.md b/src/elementary-number-theory/rational-numbers.lagda.md index f4b630199a..461cb3854d 100644 --- a/src/elementary-number-theory/rational-numbers.lagda.md +++ b/src/elementary-number-theory/rational-numbers.lagda.md @@ -155,14 +155,15 @@ mediant-ℚ x y = ### The rational images of two similar integer fractions are equal ```agda -eq-ℚ-sim-fraction-ℤ : - (x y : fraction-ℤ) → (H : sim-fraction-ℤ x y) → - rational-fraction-ℤ x = rational-fraction-ℤ y -eq-ℚ-sim-fraction-ℤ x y H = - eq-pair-Σ' - ( pair - ( unique-reduce-fraction-ℤ x y H) - ( eq-is-prop (is-prop-is-reduced-fraction-ℤ (reduce-fraction-ℤ y)))) +abstract + eq-ℚ-sim-fraction-ℤ : + (x y : fraction-ℤ) → (H : sim-fraction-ℤ x y) → + rational-fraction-ℤ x = rational-fraction-ℤ y + eq-ℚ-sim-fraction-ℤ x y H = + eq-pair-Σ' + ( pair + ( unique-reduce-fraction-ℤ x y H) + ( eq-is-prop (is-prop-is-reduced-fraction-ℤ (reduce-fraction-ℤ y)))) ``` ### The type of rationals is a set diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 06174ce77c..3df7d7cd6d 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -106,7 +106,10 @@ module _ ( p' +ℚ (q -ℚ p)) ( q) ( q' From b3b72b244d870facf903ebbd95993c18881cde0b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Feb 2025 19:28:57 -0800 Subject: [PATCH 123/227] Progress --- ...thmetically-located-dedekind-cuts.lagda.md | 10 +- .../dedekind-real-numbers.lagda.md | 222 +++++++++++------- .../lower-dedekind-real-numbers.lagda.md | 32 ++- .../upper-dedekind-real-numbers.lagda.md | 32 ++- 4 files changed, 199 insertions(+), 97 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 3df7d7cd6d..f4b8c30560 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -60,8 +60,8 @@ module _ {l : Level} (L : lower-ℝ l) (U : upper-ℝ l) where - is-arithmetically-located-pair-of-cuts-ℚ : UU l - is-arithmetically-located-pair-of-cuts-ℚ = + arithmetically-located-lower-upper-ℝ : UU l + arithmetically-located-lower-upper-ℝ = (ε⁺ : ℚ⁺) → exists ( ℚ × ℚ) @@ -79,13 +79,13 @@ rational numbers, it is also located. ```agda module _ - {l : Level} (L : lower-ℝ l) (U : upper-ℝ l) + {l : Level} (x : lower-ℝ l) (y : upper-ℝ l) where abstract is-located-is-arithmetically-located-pair-of-cuts-ℚ : - is-arithmetically-located-pair-of-cuts-ℚ L U → - is-located-cut (cut-lower-ℝ L) (cut-upper-ℝ U) + arithmetically-located-upper-real x y → + is-located-cut (cut-lower-ℝ x) (cut-upper-ℝ y) is-located-is-arithmetically-located-pair-of-cuts-ℚ arithmetically-located p q p

Imports ```agda +open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.conjunction +open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositions +open import foundation.sets open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.truncated-types +open import foundation.truncation-levels open import foundation.universal-quantification open import foundation.universe-levels ``` @@ -89,7 +95,18 @@ module _ ## Properties -### Lower Dedekind cuts are closed under the standard ordering on the rationals +### The lower Dedekind reals form a set + +```agda +abstract + is-set-lower-ℝ : (l : Level) → is-set (lower-ℝ l) + is-set-lower-ℝ l = + is-set-Σ + ( is-set-function-type (is-trunc-Truncated-Type neg-one-𝕋)) + ( λ q → is-set-is-prop (is-prop-type-Prop (is-lower-dedekind-cut-Prop q))) +``` + +### Lower Dedekind cuts are closed under strict inequality on the rationals ```agda module _ @@ -103,6 +120,19 @@ module _ ( intro-exists q (pImports ```agda +open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.conjunction +open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositions +open import foundation.sets open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.truncated-types +open import foundation.truncation-levels open import foundation.universal-quantification open import foundation.universe-levels ``` @@ -89,7 +95,18 @@ module _ ## Properties -### Upper Dedekind cuts are closed under the standard ordering on the rationals +### The upper Dedekind reals form a set + +```agda +abstract + is-set-upper-ℝ : (l : Level) → is-set (upper-ℝ l) + is-set-upper-ℝ l = + is-set-Σ + ( is-set-function-type (is-trunc-Truncated-Type neg-one-𝕋)) + ( λ q → is-set-is-prop (is-prop-type-Prop (is-upper-dedekind-cut-Prop q))) +``` + +### Upper Dedekind cuts are closed under strict inequality on the rationals ```agda module _ @@ -103,6 +120,19 @@ module _ ( intro-exists p (p Date: Mon, 10 Feb 2025 19:45:56 -0800 Subject: [PATCH 124/227] Recover all the previous results --- .../dedekind-real-numbers.lagda.md | 104 +++++------------- 1 file changed, 27 insertions(+), 77 deletions(-) diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index d4ec0c3e69..c973a7b3cc 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -21,6 +21,7 @@ open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.embeddings open import foundation.empty-types +open import foundation.equivalences open import foundation.existential-quantification open import foundation.function-types open import foundation.functoriality-cartesian-product-types @@ -397,6 +398,14 @@ module _ ( upper-cut-ℝ y) ( H))) + eq-lower-real-eq-upper-real-ℝ : + upper-real-ℝ x = upper-real-ℝ y → lower-real-ℝ x = lower-real-ℝ y + eq-lower-real-eq-upper-real-ℝ ux=uy = + eq-eq-cut-lower-ℝ + ( lower-real-ℝ x) + ( lower-real-ℝ y) + ( eq-lower-cut-eq-upper-cut-ℝ (ap cut-upper-ℝ ux=uy)) + eq-upper-cut-eq-lower-cut-ℝ : lower-cut-ℝ x = lower-cut-ℝ y → upper-cut-ℝ x = upper-cut-ℝ y eq-upper-cut-eq-lower-cut-ℝ H = @@ -413,6 +422,14 @@ module _ ( lower-cut-ℝ x) ( lower-cut-ℝ y) ( H))) + + eq-upper-real-eq-lower-real-ℝ : + lower-real-ℝ x = lower-real-ℝ y → upper-real-ℝ x = upper-real-ℝ y + eq-upper-real-eq-lower-real-ℝ lx=ly = + eq-eq-cut-upper-ℝ + ( upper-real-ℝ x) + ( upper-real-ℝ y) + ( eq-upper-cut-eq-lower-cut-ℝ (ap cut-lower-ℝ lx=ly)) ``` ### The map from a real number to its lower real is an embedding @@ -439,93 +456,26 @@ is-emb-lower-real : {l : Level} → is-emb (lower-real-ℝ {l}) is-emb-lower-real = is-emb-inclusion-subtype has-upper-real-Prop ``` -### The map from a real number to its upper real is an embedding +### Two real numbers with the same lower/upper real are equal ```agda module _ - {l : Level} - (uy : upper-ℝ l) - where - - has-lower-real-Prop : Prop (lsuc l) - pr1 has-lower-real-Prop = - Σ (lower-ℝ l) (λ lx → is-dedekind-lower-upper-ℝ lx uy) - pr2 has-lower-real-Prop = - ( is-prop-all-elements-equal) - ( λ lx lx' → - eq-type-subtype - ( λ l → is-dedekind-prop-lower-upper-ℝ l uy) - ( eq-eq-cut-lower-ℝ - ( pr1 lx) - ( pr1 lx') - ( eq-lower-cut-eq-upper-cut-ℝ - ( pr1 lx , uy , pr2 lx) - ( pr1 lx' , uy , pr2 lx') - ( refl)))) - -is-emb-upper-real : {l : Level} → is-emb (upper-real-ℝ {l}) -pr1 (pr1 (is-emb-upper-real (lx , ux , Hx) (ly , uy , Hy))) ux=uy = - ap - ( λ (uz , lz , Hz) → (lz , uz , Hz)) - ( pr1 - ( pr1 - ( is-emb-inclusion-subtype - ( has-lower-real-Prop) - ( ux , lx , Hx) - ( uy , ly , Hy))) - ( ux=uy)) -pr2 (pr1 (is-emb-upper-real (lx , ux , Hx) (ly , uy , Hy))) ux=uy = - {! (pr2 (pr1 (is-emb-inclusion-subtype has-lower-real-Prop (ux , lx , Hx) (uy , ly , Hy))) ux=uy) !} -pr1 (pr2 (is-emb-upper-real (lx , ux , Hx) (ly , uy , Hy))) ux=uy = - ap - ( λ (uz , lz , Hz) → (lz , uz , Hz)) - ( pr1 - (pr2 - (is-emb-inclusion-subtype - ( has-lower-real-Prop) - ( ux , lx , Hx) - ( uy , ly , Hy))) - ux=uy) -pr2 (pr2 (is-emb-upper-real (lx , ux , Hx) (ly , uy , Hy))) x=y = - {! pr2 (pr2 (is-emb-inclusion-subtype has-lower-real-Prop (ux , lx , Hx) (uy , ly , Hy))) (ap (λ (lz , uz , Hz) → (uz , lz , Hz)) x=y) !} -``` - -### The map from a real number to its lower cut is an embedding - -```agda -{- module _ - {l : Level} (L : subtype l ℚ) + {l : Level} (x y : ℝ l) where - has-upper-cut-Prop : Prop (lsuc l) - has-upper-cut-Prop = - pair - ( Σ (subtype l ℚ) (is-dedekind-cut L)) - ( is-prop-all-elements-equal - ( λ U U' → - eq-type-subtype - ( is-dedekind-cut-Prop L) - ( eq-upper-cut-eq-lower-cut-ℝ - ( pair L U) - ( pair L U') - ( refl)))) - -is-emb-lower-cut : {l : Level} → is-emb (lower-cut-ℝ {l}) -is-emb-lower-cut = is-emb-inclusion-subtype has-upper-cut-Prop -} -``` - -### Two real numbers with the same lower/upper cut are equal + eq-eq-lower-real-ℝ : lower-real-ℝ x = lower-real-ℝ y → x = y + eq-eq-lower-real-ℝ = eq-type-subtype has-upper-real-Prop -```agda -{- module _ - {l : Level} (x y : ℝ l) - where + eq-eq-upper-real-ℝ : upper-real-ℝ x = upper-real-ℝ y → x = y + eq-eq-upper-real-ℝ = eq-eq-lower-real-ℝ ∘ (eq-lower-real-eq-upper-real-ℝ x y) eq-eq-lower-cut-ℝ : lower-cut-ℝ x = lower-cut-ℝ y → x = y - eq-eq-lower-cut-ℝ = eq-type-subtype has-upper-cut-Prop + eq-eq-lower-cut-ℝ lcx=lcy = + eq-eq-lower-real-ℝ + ( eq-eq-cut-lower-ℝ (lower-real-ℝ x) (lower-real-ℝ y) lcx=lcy) eq-eq-upper-cut-ℝ : upper-cut-ℝ x = upper-cut-ℝ y → x = y - eq-eq-upper-cut-ℝ = eq-eq-lower-cut-ℝ ∘ (eq-lower-cut-eq-upper-cut-ℝ x y) -} + eq-eq-upper-cut-ℝ = eq-eq-lower-cut-ℝ ∘ (eq-lower-cut-eq-upper-cut-ℝ x y) ``` ## References From 263f367ecf3f72d4c45766fcacf734c7e7eceda7 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 11 Feb 2025 15:40:17 -0800 Subject: [PATCH 125/227] make pre-commit --- ...ithmetically-located-dedekind-cuts.lagda.md | 14 +++++++------- .../dedekind-real-numbers.lagda.md | 16 +++++++--------- .../rational-real-numbers.lagda.md | 18 ++++++------------ 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index f4b8c30560..ee15d2d9c1 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -83,22 +83,22 @@ module _ where abstract - is-located-is-arithmetically-located-pair-of-cuts-ℚ : - arithmetically-located-upper-real x y → - is-located-cut (cut-lower-ℝ x) (cut-upper-ℝ y) - is-located-is-arithmetically-located-pair-of-cuts-ℚ + is-located-is-arithmetically-located-lower-upper-ℝ : + arithmetically-located-lower-upper-ℝ x y → + is-located-lower-upper-ℝ x y + is-located-is-arithmetically-located-lower-upper-ℝ arithmetically-located p q p Date: Tue, 11 Feb 2025 15:47:49 -0800 Subject: [PATCH 126/227] Remove empty bibliography --- .../inequality-lower-dedekind-real-numbers.lagda.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md index 7a73363b9c..26abd2fb42 100644 --- a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md @@ -111,7 +111,3 @@ iff-leq-lower-real-ℚ : pr1 (iff-leq-lower-real-ℚ p q) = preserves-leq-lower-real-ℚ p q pr2 (iff-leq-lower-real-ℚ p q) = reflects-leq-lower-real-ℚ p q ``` - -## References - -{{#bibliography}} From 827111e46a69879d9d18e743bfc0e3de068f73b7 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 11 Feb 2025 15:58:20 -0800 Subject: [PATCH 127/227] Review changes --- .../lower-dedekind-real-numbers.lagda.md | 28 ++++++++++++------- .../upper-dedekind-real-numbers.lagda.md | 28 ++++++++++++------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index 948f6e60bd..db4cf96ad6 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -15,8 +15,10 @@ open import foundation.conjunction open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.existential-quantification +open import foundation.function-types open import foundation.identity-types open import foundation.logical-equivalences +open import foundation.powersets open import foundation.propositions open import foundation.sets open import foundation.subtypes @@ -31,9 +33,8 @@ open import foundation.universe-levels ## Idea -A lower -{{#concept "Dedekind cut" Agda=is-dedekind-cut WD="dedekind cut" WDID=Q851333}} -consists of a [subtype](foundation-core.subtypes.md) `L` of +A {{#concept "lower Dedekind cut" Agda=is-lower-dedekind-cut}} consists of a +[subtype](foundation-core.subtypes.md) `L` of [the rational numbers](elementary-number-theory.rational-numbers.md) `ℚ`, satisfying the following two conditions: @@ -42,8 +43,8 @@ satisfying the following two conditions: [if and only if](foundation.logical-equivalences.md) there [exists](foundation.existential-quantification.md) `q < r` such that `r ∈ L`. -The type of all lower Dedekind real numbers is the type of all lower Dedekind -cuts. +The {{#concept "lower Dedekind real numbers" Agda=lower-ℝ}} is the type of all +lower Dedekind cuts. ## Definition @@ -113,8 +114,9 @@ module _ {l : Level} (x : lower-ℝ l) (p q : ℚ) where - le-cut-lower-ℝ : le-ℚ p q → is-in-cut-lower-ℝ x q → is-in-cut-lower-ℝ x p - le-cut-lower-ℝ p Date: Tue, 11 Feb 2025 16:15:25 -0800 Subject: [PATCH 128/227] Fix names --- .../arithmetically-located-dedekind-cuts.lagda.md | 4 ++-- src/real-numbers/dedekind-real-numbers.lagda.md | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index ee15d2d9c1..38e39bfb9e 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -94,10 +94,10 @@ module _ rec-coproduct ( λ p Date: Tue, 11 Feb 2025 21:07:48 -0800 Subject: [PATCH 129/227] Fix links --- src/real-numbers/dedekind-real-numbers.lagda.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 76134fd985..3e6695ebce 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -51,8 +51,9 @@ open import real-numbers.upper-dedekind-real-numbers ## Idea A Dedekind real number consists of a [pair](foundation.dependent-pair-types.md) -`(lx , uy)` of a [lower Dedekind real](real-numbers.lower-dedekind-real-numbers) -and an [upper Dedekind real](real-numbers.upper-dedekind-real-numbers) that also +`(lx , uy)` of a +[lower Dedekind real](real-numbers.lower-dedekind-real-numbers.md) and an +[upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) that also satisfy the following conditions: 1. _Disjointness_. The cuts of `lx` and `uy` are disjoint subsets of `ℚ`. From 71479cac22d2f14bac981f0d66592b74e1d85048 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 12 Feb 2025 11:20:08 -0800 Subject: [PATCH 130/227] Fix naming --- .../arithmetically-located-dedekind-cuts.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 38e39bfb9e..fe8f273ea0 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -42,8 +42,8 @@ open import real-numbers.upper-dedekind-real-numbers ## Definition -A pair of a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) -`L` and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U` +A pair of a [lower Dedekind real](real-numbers.lower-dedekind-real-numbers.md) +`L` and an [upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) `U` is {{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if for any positive [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ`, there exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. From 9f12eee4548ad0a47f816c940993fbbd0b9b948e Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 12 Feb 2025 11:31:14 -0800 Subject: [PATCH 131/227] Progress on upper addition --- ...ition-upper-dedekind-real-numbers.lagda.md | 208 ++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md diff --git a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..bc9d4da02a --- /dev/null +++ b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md @@ -0,0 +1,208 @@ +# Addition of upper Dedekind real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.addition-upper-dedekind-real-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-transport +open import foundation.cartesian-product-types +open import foundation.conjunction +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import logic.functoriality-existential-quantification + +open import group-theory.abelian-groups +open import group-theory.groups +open import group-theory.minkowski-multiplication-commutative-monoids + +open import real-numbers.upper-dedekind-real-numbers +``` + +
+ +## Idea + +The sum of two [upper Dedekind real numbers](real-numbers.upper-dedekind-real-numbers.md) +is the Minkowski sum of their cuts. + +```agda +module _ + {l1 l2 : Level} + (x : upper-ℝ l1) + (y : upper-ℝ l2) + where + + cut-add-upper-ℝ : subtype (l1 ⊔ l2) ℚ + cut-add-upper-ℝ = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( cut-upper-ℝ x) + ( cut-upper-ℝ y) + + is-in-cut-add-upper-ℝ : ℚ → UU (l1 ⊔ l2) + is-in-cut-add-upper-ℝ = is-in-subtype cut-add-upper-ℝ + + is-inhabited-cut-add-upper-ℝ : exists ℚ cut-add-upper-ℝ + is-inhabited-cut-add-upper-ℝ = + minkowski-mul-inhabited-is-inhabited-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( cut-upper-ℝ x) + ( cut-upper-ℝ y) + ( is-inhabited-cut-upper-ℝ x) + ( is-inhabited-cut-upper-ℝ y) + + abstract + is-rounded-cut-add-upper-ℝ : + (q : ℚ) → + is-in-cut-add-upper-ℝ q ↔ + exists ℚ (λ p → le-ℚ-Prop p q ∧ cut-add-upper-ℝ p) + pr1 (is-rounded-cut-add-upper-ℝ q) = + elim-exists + ( ∃ ℚ (λ p → le-ℚ-Prop p q ∧ cut-add-upper-ℝ p)) + ( λ (ux , uy) (x Date: Wed, 12 Feb 2025 11:31:45 -0800 Subject: [PATCH 132/227] make pre-commit --- .../arithmetically-located-dedekind-cuts.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index fe8f273ea0..405a77a7e2 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -43,9 +43,9 @@ open import real-numbers.upper-dedekind-real-numbers ## Definition A pair of a [lower Dedekind real](real-numbers.lower-dedekind-real-numbers.md) -`L` and an [upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) `U` -is {{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if for -any positive [rational number](elementary-number-theory.rational-numbers.md) +`L` and an [upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) +`U` is {{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if +for any positive [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ`, there exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. Intuitively, when `L , U` represent the cuts of a real number `x`, `p` and `q` are rational approximations of `x` to within `ε`. This follows parts of Section From 74a4defe05d5e9546041eaf5e2253dba830ee7db Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 12 Feb 2025 12:15:35 -0800 Subject: [PATCH 133/227] make pre-commit --- src/real-numbers.lagda.md | 2 + ...ition-lower-dedekind-real-numbers.lagda.md | 15 ++- ...ition-upper-dedekind-real-numbers.lagda.md | 117 ++++++++---------- 3 files changed, 66 insertions(+), 68 deletions(-) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 1cd86ceaa3..ce1bcaf270 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -5,6 +5,8 @@ ```agda module real-numbers where +open import real-numbers.addition-lower-dedekind-real-numbers public +open import real-numbers.addition-upper-dedekind-real-numbers public open import real-numbers.arithmetically-located-dedekind-cuts public open import real-numbers.dedekind-real-numbers public open import real-numbers.inequality-lower-dedekind-real-numbers public diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index c45c75d99b..0073594d5b 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -28,12 +28,12 @@ open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels -open import logic.functoriality-existential-quantification - open import group-theory.abelian-groups open import group-theory.groups open import group-theory.minkowski-multiplication-commutative-monoids +open import logic.functoriality-existential-quantification + open import real-numbers.lower-dedekind-real-numbers ``` @@ -41,8 +41,11 @@ open import real-numbers.lower-dedekind-real-numbers ## Idea -The sum of two [lower Dedekind real numbers](real-numbers.lower-dedekind-real-numbers.md) -is the Minkowski sum of their cuts. +The sum of two +[lower Dedekind real numbers](real-numbers.lower-dedekind-real-numbers.md) is +the +[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of +their cuts. ```agda module _ @@ -109,13 +112,13 @@ module _ in intro-exists ( rx -ℚ ε , q -ℚ (rx -ℚ ε)) - ( le-cut-lower-ℝ + ( is-in-cut-le-ℚ-lower-ℝ ( x) ( rx -ℚ ε) ( rx) ( le-diff-rational-ℚ⁺ rx ε⁺) ( rx Date: Wed, 12 Feb 2025 22:14:37 -0800 Subject: [PATCH 134/227] Rewrite in terms of propositional truncation --- .../existential-quantification.lagda.md | 42 ------------- .../propositional-truncations.lagda.md | 59 +++++++++++++++++++ .../strict-inequality-real-numbers.lagda.md | 11 ++-- 3 files changed, 65 insertions(+), 47 deletions(-) diff --git a/src/foundation/existential-quantification.lagda.md b/src/foundation/existential-quantification.lagda.md index 04483c575f..a15d2258a9 100644 --- a/src/foundation/existential-quantification.lagda.md +++ b/src/foundation/existential-quantification.lagda.md @@ -331,48 +331,6 @@ module _ eq-distributive-product-exists-structure P ``` -## Existential quantification `do` syntax - -When eliminating a chain of existential quantifications, which may be -interdependent, -[Agda's `do` syntax](https://agda.readthedocs.io/en/stable/language/syntactic-sugar.html#do-notation) -can eliminate many levels of nesting. - -For example, suppose we have - -```text -R : Prop l - -exists-a-p : exists A P -a-p-implies-b-q-exists : (a : A) → P a → exists B Q -a-b-p-q-implies-r : (a : A) (b : B) → P a → Q b → R -``` - -To deduce `R`, we could write - -```text -do - a , pa ← exists-a-p - b , qb ← a-p-implies-b-q-exists a pa - a-b-p-q-implies-r a b pa qb -where open do-syntax-elim-exists R -``` - -instead of a nested chain of `elim-exists`. - -```agda -module do-syntax-elim-exists - {l : Level} - (P : Prop l) - where - - _>>=_ : - {l1 l2 : Level} {A : UU l1} {B : A -> UU l2} → - exists-structure A B → - (Σ A B -> type-Prop P) -> type-Prop P - x >>= f = elim-exists P (ev-pair f) x -``` - ## See also - Existential quantification is the indexed counterpart to diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index 1181cc2572..5f2cfd7bb5 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -446,6 +446,65 @@ module _ is-equiv-map-inv-trunc-Prop-diagonal-coproduct ``` +## `do` syntax for propositional truncation + +[Agda's `do` syntax](https://agda.readthedocs.io/en/v2.7.0/language/syntactic-sugar.html#do-notation) +is a handy tool to avoid deeply nesting calls to the same lambda-based function. +For example, consider a case where you are trying to prove a proposition, +`motive : Prop l`, from a chain of truncated propositions `P` and `Q`, where +showing `Q` requires having a value of `type-Prop P`: + +```text +rec-trunc-Prop + ( motive) + ( λ q → + rec-trunc-Prop + ( motive) + ( λ q → derive-motive-from p q) + ( truncated-prop-Q p)) + ( truncated-prop-P) +``` + +The tower of indentation, with many layers of indentation in the innermost +derivation, is painful; there are many duplicated lines of +`rec-trunc-Prop motive`. Agda's `do` syntax offers us an alternative. + +```agda +module do-syntax-trunc-Prop {l : Level} (motive : Prop l) where + _>>=_ : + {l : Level} {A : UU l} → + type-trunc-Prop A → (A → type-Prop motive) → + type-Prop motive + trunc-prop-a >>= k = rec-trunc-Prop motive k trunc-prop-a +``` + +This allows us to rewrite the deeply nested chain above + +```text +do + p ← truncated-prop-P + q ← truncated-prop-Q p + derive-motive-from p q +where open do-syntax-trunc-Prop motive +``` + +Note that the last line, `where open do-syntax-trunc-Prop motive`, is required +to make this syntax possible. + +In general, you can read the `p ← truncated-prop-P` as an _instruction_ saying, +"Get the value `p` out of its truncation `truncated-prop-Q`." We obviously +cannot get values out of truncations in general, but conceptually, we can do it +in the service of proving a proposition, and that's what we're doing here. The +following line `q ← truncated-prop-Q p` says, "Get the value `q` out of the +truncation `truncated-prop-Q p`" -- noticing that we can make use of `p` in that +line. Finally, `derive-motive-from p q` must give us a value of type +`type-Prop motive` from `p` and `q`. The result of the entire `do` block is the +value of type `type-Prop motive`, which is internally constructed with an +appropriate chain of `rec-trunc-Prop` from the intermediate steps. + +While we had each line depend on all the values from the lines above it, this is +not at all required. + ## Table of files about propositional logic The following table gives an overview of basic constructions in propositional diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index e6c6041f4b..1cf4481302 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -24,6 +24,7 @@ open import foundation.functoriality-cartesian-product-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.negation +open import foundation.propositional-truncations open import foundation.propositions open import foundation.subtypes open import foundation.transport-along-identifications @@ -105,7 +106,7 @@ module _ ( q) ( le-lower-upper-cut-ℝ y p q p Date: Wed, 12 Feb 2025 22:22:58 -0800 Subject: [PATCH 135/227] More words --- src/foundation/propositional-truncations.lagda.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index 5f2cfd7bb5..87986c98ab 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -466,8 +466,11 @@ rec-trunc-Prop ``` The tower of indentation, with many layers of indentation in the innermost -derivation, is painful; there are many duplicated lines of -`rec-trunc-Prop motive`. Agda's `do` syntax offers us an alternative. +derivation, is a little awkward even at two levels, let alone more. In +particular, we have the many duplicated lines of +`rec-trunc-Prop motive`, and the increasing distance between the +`rec-trunc-Prop` and the `trunc-Prop` being recursed on. +Agda's `do` syntax offers us an alternative. ```agda module do-syntax-trunc-Prop {l : Level} (motive : Prop l) where @@ -478,7 +481,7 @@ module do-syntax-trunc-Prop {l : Level} (motive : Prop l) where trunc-prop-a >>= k = rec-trunc-Prop motive k trunc-prop-a ``` -This allows us to rewrite the deeply nested chain above +This allows us to rewrite the nested chain above as ```text do From e510c3d10b7d37a49fa96bab3302b37e69a184a2 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 12 Feb 2025 22:23:29 -0800 Subject: [PATCH 136/227] make pre-commit --- src/foundation/propositional-truncations.lagda.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index 87986c98ab..5c6123e515 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -466,11 +466,10 @@ rec-trunc-Prop ``` The tower of indentation, with many layers of indentation in the innermost -derivation, is a little awkward even at two levels, let alone more. In -particular, we have the many duplicated lines of -`rec-trunc-Prop motive`, and the increasing distance between the -`rec-trunc-Prop` and the `trunc-Prop` being recursed on. -Agda's `do` syntax offers us an alternative. +derivation, is a little awkward even at two levels, let alone more. In +particular, we have the many duplicated lines of `rec-trunc-Prop motive`, and +the increasing distance between the `rec-trunc-Prop` and the `trunc-Prop` being +recursed on. Agda's `do` syntax offers us an alternative. ```agda module do-syntax-trunc-Prop {l : Level} (motive : Prop l) where From b4e7234f8a96af9dff8fa8c28abe883de6253c62 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 12 Feb 2025 22:25:44 -0800 Subject: [PATCH 137/227] Reorganize --- .../propositional-truncations.lagda.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index 5c6123e515..1a38564da6 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -490,22 +490,22 @@ do where open do-syntax-trunc-Prop motive ``` -Note that the last line, `where open do-syntax-trunc-Prop motive`, is required -to make this syntax possible. - -In general, you can read the `p ← truncated-prop-P` as an _instruction_ saying, -"Get the value `p` out of its truncation `truncated-prop-Q`." We obviously -cannot get values out of truncations in general, but conceptually, we can do it -in the service of proving a proposition, and that's what we're doing here. The -following line `q ← truncated-prop-Q p` says, "Get the value `q` out of the -truncation `truncated-prop-Q p`" -- noticing that we can make use of `p` in that -line. Finally, `derive-motive-from p q` must give us a value of type -`type-Prop motive` from `p` and `q`. The result of the entire `do` block is the -value of type `type-Prop motive`, which is internally constructed with an -appropriate chain of `rec-trunc-Prop` from the intermediate steps. - -While we had each line depend on all the values from the lines above it, this is -not at all required. +Going through each line: + +1. You can read the `p ← truncated-prop-P` as an _instruction_ saying, "Get the + value `p` out of its truncation `truncated-prop-Q`." We obviously cannot get + values out of truncations in general, but conceptually, we can do it in the + service of proving a proposition, and that's what we're doing here. +2. `q ← truncated-prop-Q p` says, "Get the value `q` out of the truncation + `truncated-prop-Q p`" -- noticing that we can make use of `p` in that line. +3. `derive-motive-from p q` must give us a value of type `type-Prop motive` from + `p` and `q`. +4. `where open do-syntax-trunc-Prop motive` is required to allow us to use the + `do` syntax. + +The result of the entire `do` block is the value of type `type-Prop motive`, +which is internally constructed with an appropriate chain of `rec-trunc-Prop` +from the intermediate steps. ## Table of files about propositional logic From 6cd9e60a6d17c1639fd6d03945c76bd8f9f33ea7 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 14:38:04 -0800 Subject: [PATCH 138/227] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vojtěch Štěpančík --- src/foundation/propositional-truncations.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index 1a38564da6..6d4d6c259e 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -446,7 +446,7 @@ module _ is-equiv-map-inv-trunc-Prop-diagonal-coproduct ``` -## `do` syntax for propositional truncation +## `do` syntax for propositional truncation { #do-syntax } [Agda's `do` syntax](https://agda.readthedocs.io/en/v2.7.0/language/syntactic-sugar.html#do-notation) is a handy tool to avoid deeply nesting calls to the same lambda-based function. From 45f47a805d65d39b85f5859043e23e8d5a9f97e2 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 14:59:08 -0800 Subject: [PATCH 139/227] Formatting --- .../existential-quantification.lagda.md | 5 ++ .../propositional-truncations.lagda.md | 59 ++++++++++++------- 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/src/foundation/existential-quantification.lagda.md b/src/foundation/existential-quantification.lagda.md index a15d2258a9..07e29f4bb7 100644 --- a/src/foundation/existential-quantification.lagda.md +++ b/src/foundation/existential-quantification.lagda.md @@ -202,6 +202,11 @@ module _ ( elim-exists Q) ``` +Note that since existential quantification is implemented using propositional +truncation, the associated +[do syntax](foundation.propositional-truncations.md#do-syntax) can be used to +simplify deeply nested chains of `elim-exists`. + ### The existential quantification satisfies the universal property of existential quantification ```agda diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index 1a38564da6..5f59a9bafc 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -446,23 +446,23 @@ module _ is-equiv-map-inv-trunc-Prop-diagonal-coproduct ``` -## `do` syntax for propositional truncation +## `do` syntax for propositional truncation {#do-syntax} [Agda's `do` syntax](https://agda.readthedocs.io/en/v2.7.0/language/syntactic-sugar.html#do-notation) is a handy tool to avoid deeply nesting calls to the same lambda-based function. For example, consider a case where you are trying to prove a proposition, -`motive : Prop l`, from a chain of truncated propositions `P` and `Q`, where -showing `Q` requires having a value of `type-Prop P`: +`motive : Prop l`, from witnesses of propositional truncations of types `P` and +`Q`: ```text rec-trunc-Prop ( motive) - ( λ q → + ( λ (p : P) → rec-trunc-Prop ( motive) - ( λ q → derive-motive-from p q) - ( truncated-prop-Q p)) - ( truncated-prop-P) + ( λ (q : Q) → witness-motive-P-Q p q) + ( witness-truncated-prop-Q p)) + ( witness-truncated-prop-P) ``` The tower of indentation, with many layers of indentation in the innermost @@ -484,23 +484,40 @@ This allows us to rewrite the nested chain above as ```text do - p ← truncated-prop-P - q ← truncated-prop-Q p - derive-motive-from p q + p ← witness-truncated-prop-P + q ← witness-truncated-prop-Q p + witness-motive-P-Q p q where open do-syntax-trunc-Prop motive ``` -Going through each line: - -1. You can read the `p ← truncated-prop-P` as an _instruction_ saying, "Get the - value `p` out of its truncation `truncated-prop-Q`." We obviously cannot get - values out of truncations in general, but conceptually, we can do it in the - service of proving a proposition, and that's what we're doing here. -2. `q ← truncated-prop-Q p` says, "Get the value `q` out of the truncation - `truncated-prop-Q p`" -- noticing that we can make use of `p` in that line. -3. `derive-motive-from p q` must give us a value of type `type-Prop motive` from - `p` and `q`. -4. `where open do-syntax-trunc-Prop motive` is required to allow us to use the +Since Agda's `do` syntax desugars to calls to `>>=`, this is simply syntactic +sugar for + +```text +witness-truncated-prop-P >>= + ( λ p → witness-truncated-prop-Q p >>= + ( λ q → witness-motive-P-Q p q)) +``` + +which, inlining the definition of `>>=`, becomes exactly the chain of +`rec-trunc-Prop` used above. + +To read the `do` syntax, it may help to go through each line: + +1. `do` simply indicates that we will be using Agda's syntactic sugar for the + `>>=` function defined in the `do-syntax-trunc-Prop` module. +1. You can read the `p ← witness-truncated-prop-P` as an _instruction_ saying, + "Get the value `p` out of the witness of `trunc-Prop P`." We cannot extract + elements out of witnesses of propositionally truncated types, but since we're + eliminating into a proposition, the universal property of the truncation + allows us to lift a map from the untruncated type to a map from its + truncation. +1. `q ← witness-truncated-prop-Q p` says, "Get the value `q` out of the witness + for the truncation `witness-truncated-prop-Q p`" -- noticing that we can make + use of `p : P` in that line. +1. `witness-motive-P-Q p q` must give us a witness of `motive` -- that is, a + value of type `type-Prop motive` -- from `p` and `q`. +1. `where open do-syntax-trunc-Prop motive` is required to allow us to use the `do` syntax. The result of the entire `do` block is the value of type `type-Prop motive`, From 23a33d354e3d0c034e5cec8180b9c058a04d6db9 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 15:07:01 -0800 Subject: [PATCH 140/227] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- ...rithmetically-located-dedekind-cuts.lagda.md | 2 +- src/real-numbers/dedekind-real-numbers.lagda.md | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 405a77a7e2..aaba62504f 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -46,7 +46,7 @@ A pair of a [lower Dedekind real](real-numbers.lower-dedekind-real-numbers.md) `L` and an [upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) `U` is {{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if for any positive [rational number](elementary-number-theory.rational-numbers.md) -`ε : ℚ`, there exist `p, q : ℚ` such that `0 < q - p < ε`, `p ∈ L`, and `q ∈ U`. +`ε : ℚ`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. Intuitively, when `L , U` represent the cuts of a real number `x`, `p` and `q` are rational approximations of `x` to within `ε`. This follows parts of Section 11 in {{#cite BauerTaylor2009}}. diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 3e6695ebce..e68152a823 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -50,22 +50,21 @@ open import real-numbers.upper-dedekind-real-numbers ## Idea -A Dedekind real number consists of a [pair](foundation.dependent-pair-types.md) -`(lx , uy)` of a -[lower Dedekind real](real-numbers.lower-dedekind-real-numbers.md) and an -[upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) that also -satisfy the following conditions: +A {{#concept "Dedekind real number" WD="real number" WDID=Q12916 Agda=ℝ}} `x` consists of a [pair](foundation.dependent-pair-types.md) + of _cuts_ `(L , U)` of [rational numbers](elementary-number-theory.rational-numbers.md), a +[lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) `L` and an +[upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U`. These cuts present lower and upper bounds on the Dedekind real number, and must satisfy the conditions -1. _Disjointness_. The cuts of `lx` and `uy` are disjoint subsets of `ℚ`. -2. _Locatedness_. If `q < r` then `q` is in the cut of `lx` or `r` is in the cut - of `uy`. +1. _Disjointness_. The cuts `lx` and `uy` are disjoint subsets of `ℚ`. +2. _Locatedness_. If `q < r` then `q` is in the cut `L` or `r` is in the cut `U`. +The {{#concept "collection of all Dedekind real numbers" WD="set of real numbers" WDID=Q1174982 Agda=ℝ}} is denoted `ℝ`. The Dedekind real numbers will be taken as the standard definition of the real numbers in the agda-unimath library. ## Definition -### Dedekind real numbers +### Dedekind cuts ```agda module _ From f2c3f7646486d0f5b5894418ea4baa08847a3f65 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 15:13:49 -0800 Subject: [PATCH 141/227] renaming --- src/real-numbers/dedekind-real-numbers.lagda.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index e68152a823..4c2e2f5a10 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -438,10 +438,11 @@ module _ (lx : lower-ℝ l) where - has-upper-real-Prop : Prop (lsuc l) - pr1 has-upper-real-Prop = Σ (upper-ℝ l) (is-dedekind-lower-upper-ℝ lx) - pr2 has-upper-real-Prop = - ( is-prop-all-elements-equal) + is-dedekind-cut-lower-ℝ-Prop : Prop (lsuc l) + pr1 is-dedekind-cut-lower-ℝ-Prop = + Σ (upper-ℝ l) (is-dedekind-lower-upper-ℝ lx) + pr2 is-dedekind-cut-lower-ℝ-Prop = + is-prop-all-elements-equal ( λ uy uy' → eq-type-subtype ( is-dedekind-prop-lower-upper-ℝ lx) @@ -451,7 +452,7 @@ module _ ( eq-upper-cut-eq-lower-cut-ℝ (lx , uy) (lx , uy') refl))) is-emb-lower-real : {l : Level} → is-emb (lower-real-ℝ {l}) -is-emb-lower-real = is-emb-inclusion-subtype has-upper-real-Prop +is-emb-lower-real = is-emb-inclusion-subtype is-dedekind-cut-lower-ℝ-Prop ``` ### Two real numbers with the same lower/upper real are equal @@ -462,7 +463,7 @@ module _ where eq-eq-lower-real-ℝ : lower-real-ℝ x = lower-real-ℝ y → x = y - eq-eq-lower-real-ℝ = eq-type-subtype has-upper-real-Prop + eq-eq-lower-real-ℝ = eq-type-subtype is-dedekind-cut-lower-ℝ-Prop eq-eq-upper-real-ℝ : upper-real-ℝ x = upper-real-ℝ y → x = y eq-eq-upper-real-ℝ = eq-eq-lower-real-ℝ ∘ (eq-lower-real-eq-upper-real-ℝ x y) From 36731631bde357cfda2527326f45a3d388ab945f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 15:58:03 -0800 Subject: [PATCH 142/227] make pre-commit --- ...thmetically-located-dedekind-cuts.lagda.md | 8 ++++---- .../dedekind-real-numbers.lagda.md | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index aaba62504f..f290bbe754 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -46,10 +46,10 @@ A pair of a [lower Dedekind real](real-numbers.lower-dedekind-real-numbers.md) `L` and an [upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) `U` is {{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if for any positive [rational number](elementary-number-theory.rational-numbers.md) -`ε : ℚ`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. -Intuitively, when `L , U` represent the cuts of a real number `x`, `p` and `q` -are rational approximations of `x` to within `ε`. This follows parts of Section -11 in {{#cite BauerTaylor2009}}. +`ε : ℚ`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that +`0 < q - p < ε`. Intuitively, when `L , U` represent the cuts of a real number +`x`, `p` and `q` are rational approximations of `x` to within `ε`. This follows +parts of Section 11 in {{#cite BauerTaylor2009}}. ## Definitions diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 4c2e2f5a10..3b6c9ce2bc 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -50,17 +50,22 @@ open import real-numbers.upper-dedekind-real-numbers ## Idea -A {{#concept "Dedekind real number" WD="real number" WDID=Q12916 Agda=ℝ}} `x` consists of a [pair](foundation.dependent-pair-types.md) - of _cuts_ `(L , U)` of [rational numbers](elementary-number-theory.rational-numbers.md), a +A {{#concept "Dedekind real number" WD="real number" WDID=Q12916 Agda=ℝ}} `x` +consists of a [pair](foundation.dependent-pair-types.md) of _cuts_ `(L , U)` of +[rational numbers](elementary-number-theory.rational-numbers.md), a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) `L` and an -[upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U`. These cuts present lower and upper bounds on the Dedekind real number, and must satisfy the conditions +[upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U`. These +cuts present lower and upper bounds on the Dedekind real number, and must +satisfy the conditions 1. _Disjointness_. The cuts `lx` and `uy` are disjoint subsets of `ℚ`. -2. _Locatedness_. If `q < r` then `q` is in the cut `L` or `r` is in the cut `U`. +2. _Locatedness_. If `q < r` then `q` is in the cut `L` or `r` is in the cut + `U`. -The {{#concept "collection of all Dedekind real numbers" WD="set of real numbers" WDID=Q1174982 Agda=ℝ}} is denoted `ℝ`. -The Dedekind real numbers will be taken as the standard definition of the real -numbers in the agda-unimath library. +The +{{#concept "collection of all Dedekind real numbers" WD="set of real numbers" WDID=Q1174982 Agda=ℝ}} +is denoted `ℝ`. The Dedekind real numbers will be taken as the standard +definition of the real numbers in the agda-unimath library. ## Definition From 324595aba9740dec0caaae65e69922c4fb08631e Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:02:06 -0800 Subject: [PATCH 143/227] Respond to review comments --- src/real-numbers/lower-dedekind-real-numbers.lagda.md | 8 ++++---- src/real-numbers/upper-dedekind-real-numbers.lagda.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index db4cf96ad6..ddae49559d 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -33,10 +33,10 @@ open import foundation.universe-levels ## Idea -A {{#concept "lower Dedekind cut" Agda=is-lower-dedekind-cut}} consists of a -[subtype](foundation-core.subtypes.md) `L` of -[the rational numbers](elementary-number-theory.rational-numbers.md) `ℚ`, -satisfying the following two conditions: +A [subtype](foundation-core.subtypes.md) `L` of +[the rational numbers](elementary-number-theory.rational-numbers.md) is a +{{#concept "lower Dedekind cut" Agda=is-lower-dedekind-cut}} if it satisfies the +following two conditions: 1. _Inhabitedness_. `L` is [inhabited](foundation.inhabited-subtypes.md). 2. _Roundedness_. A rational number `q` is in `L` diff --git a/src/real-numbers/upper-dedekind-real-numbers.lagda.md b/src/real-numbers/upper-dedekind-real-numbers.lagda.md index 83d2328e84..da99075a67 100644 --- a/src/real-numbers/upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/upper-dedekind-real-numbers.lagda.md @@ -33,10 +33,10 @@ open import foundation.universe-levels ## Idea -An {{#concept "upper Dedekind cut" Agda=is-upper-dedekind-cut}} consists of a -[subtype](foundation-core.subtypes.md) `U` of -[the rational numbers](elementary-number-theory.rational-numbers.md) `ℚ`, -satisfying the following two conditions: +A [subtype](foundation-core.subtypes.md) `U` of +[the rational numbers](elementary-number-theory.rational-numbers.md) is an +{{#concept "upper Dedekind cut" Agda=is-upper-dedekind-cut}} if it satisfies the +following two conditions: 1. _Inhabitedness_. `U` is [inhabited](foundation.inhabited-subtypes.md). 2. _Roundedness_. A rational number `q` is in `U` From 10a0a3612d92e4893433fcbdedf8d7a8d23d58c1 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:06:06 -0800 Subject: [PATCH 144/227] Inline explanations of lower and upper cuts --- src/real-numbers/dedekind-real-numbers.lagda.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 3b6c9ce2bc..912f8f9676 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -54,8 +54,15 @@ A {{#concept "Dedekind real number" WD="real number" WDID=Q12916 Agda=ℝ}} `x` consists of a [pair](foundation.dependent-pair-types.md) of _cuts_ `(L , U)` of [rational numbers](elementary-number-theory.rational-numbers.md), a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) `L` and an -[upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U`. These -cuts present lower and upper bounds on the Dedekind real number, and must +[upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U`. A lower +Dedekind cut `L` is a subtype of the rational numbers that is +[inhabited](foundation.inhabited-subtypes.md) and rounded, meaning that `q ∈ L` +[if and only if](foundation.logical-equivalences.md) there exists `r`, with +`q < r` and `r ∈ L`. An upper Dedekind cut is a subtype of the rational numbers +that is inhabited and rounded "in the other direction": `q ∈ U` if and only if +there is a `p < q` where `p ∈ U`. + +These cuts present lower and upper bounds on the Dedekind real number, and must satisfy the conditions 1. _Disjointness_. The cuts `lx` and `uy` are disjoint subsets of `ℚ`. From 6430f86be2f1172423b78799be52cbdfc11075c5 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:07:55 -0800 Subject: [PATCH 145/227] Reword --- .../dedekind-real-numbers.lagda.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 912f8f9676..3f83f4b510 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -54,13 +54,18 @@ A {{#concept "Dedekind real number" WD="real number" WDID=Q12916 Agda=ℝ}} `x` consists of a [pair](foundation.dependent-pair-types.md) of _cuts_ `(L , U)` of [rational numbers](elementary-number-theory.rational-numbers.md), a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) `L` and an -[upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U`. A lower -Dedekind cut `L` is a subtype of the rational numbers that is -[inhabited](foundation.inhabited-subtypes.md) and rounded, meaning that `q ∈ L` -[if and only if](foundation.logical-equivalences.md) there exists `r`, with -`q < r` and `r ∈ L`. An upper Dedekind cut is a subtype of the rational numbers -that is inhabited and rounded "in the other direction": `q ∈ U` if and only if -there is a `p < q` where `p ∈ U`. +[upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U`. + +A lower Dedekind cut `L` is a subtype of the rational numbers that is + +1. [Inhabited](foundation.inhabited-subtypes.md), meaning it has at least one + element. +2. Rounded, meaning that `q ∈ L` + [if and only if](foundation.logical-equivalences.md) there exists `r`, with + `q < r` and `r ∈ L`. + +An upper Dedekind cut is analogous, but must be rounded "in the other +direction": `q ∈ U` if and only if there is a `p < q` where `p ∈ U`. These cuts present lower and upper bounds on the Dedekind real number, and must satisfy the conditions From 69430a2f07180d25ca98d501cbfb8d678b8f1c54 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:19:20 -0800 Subject: [PATCH 146/227] Update src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md Co-authored-by: Fredrik Bakke --- src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index f290bbe754..4826d54cc4 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -44,7 +44,7 @@ open import real-numbers.upper-dedekind-real-numbers A pair of a [lower Dedekind real](real-numbers.lower-dedekind-real-numbers.md) `L` and an [upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) -`U` is {{#concept "arithmetically located" Disambiguation="Dedekind cut"}} if +`U` is {{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=arithmetically-located-lower-upper-ℝ}} if for any positive [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. Intuitively, when `L , U` represent the cuts of a real number From 8c1ad1108ac8a1b05fc13089c18e82f6cf961a7e Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:21:08 -0800 Subject: [PATCH 147/227] Progress --- .../arithmetically-located-dedekind-cuts.lagda.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 4826d54cc4..abd7034a5e 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -42,18 +42,19 @@ open import real-numbers.upper-dedekind-real-numbers ## Definition -A pair of a [lower Dedekind real](real-numbers.lower-dedekind-real-numbers.md) -`L` and an [upper Dedekind real](real-numbers.upper-dedekind-real-numbers.md) +A pair of a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) +`L` and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U` is {{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=arithmetically-located-lower-upper-ℝ}} if -for any positive [rational number](elementary-number-theory.rational-numbers.md) -`ε : ℚ`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that +for any [positive](elementary-number-theory.positive-rational-numbers.md) +[rational number](elementary-number-theory.rational-numbers.md) +`ε : ℚ⁺`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. Intuitively, when `L , U` represent the cuts of a real number `x`, `p` and `q` are rational approximations of `x` to within `ε`. This follows parts of Section 11 in {{#cite BauerTaylor2009}}. ## Definitions -### The predicate of being arithmetically located on pairs of subtypes of rational numbers +### The predicate of being arithmetically located on pairs of lower and upper Dedekind real numbers ```agda module _ @@ -74,8 +75,7 @@ module _ ### Arithmetically located cuts are located -If a cut is arithmetically located and closed under strict inequality on the -rational numbers, it is also located. +If a pair of lower and upper Dedekind cuts is arithmetically located, it is also located. ```agda module _ From 9f4197ca964c339bb510ff2b7849c203b1e2246c Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:21:52 -0800 Subject: [PATCH 148/227] Review comments --- .../arithmetically-located-dedekind-cuts.lagda.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index abd7034a5e..5b589d3f7e 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -49,7 +49,9 @@ for any [positive](elementary-number-theory.positive-rational-numbers.md) [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ⁺`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. Intuitively, when `L , U` represent the cuts of a real number -`x`, `p` and `q` are rational approximations of `x` to within `ε`. This follows +`x`, `p` and `q` are rational approximations of `x` to within `ε`. + +This follows parts of Section 11 in {{#cite BauerTaylor2009}}. ## Definitions From d6da82420b1046f383d342b4128edd2bafe5e501 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:24:05 -0800 Subject: [PATCH 149/227] reword negation --- ...thmetically-located-dedekind-cuts.lagda.md | 21 ++++++++++--------- ...lower-upper-dedekind-real-numbers.lagda.md | 6 ++++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 5b589d3f7e..dc0ce73fc2 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -43,16 +43,16 @@ open import real-numbers.upper-dedekind-real-numbers ## Definition A pair of a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) -`L` and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) -`U` is {{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=arithmetically-located-lower-upper-ℝ}} if -for any [positive](elementary-number-theory.positive-rational-numbers.md) -[rational number](elementary-number-theory.rational-numbers.md) -`ε : ℚ⁺`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that -`0 < q - p < ε`. Intuitively, when `L , U` represent the cuts of a real number -`x`, `p` and `q` are rational approximations of `x` to within `ε`. +`L` and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U` +is +{{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=arithmetically-located-lower-upper-ℝ}} +if for any [positive](elementary-number-theory.positive-rational-numbers.md) +[rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ⁺`, there +exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. +Intuitively, when `L , U` represent the cuts of a real number `x`, `p` and `q` +are rational approximations of `x` to within `ε`. -This follows -parts of Section 11 in {{#cite BauerTaylor2009}}. +This follows parts of Section 11 in {{#cite BauerTaylor2009}}. ## Definitions @@ -77,7 +77,8 @@ module _ ### Arithmetically located cuts are located -If a pair of lower and upper Dedekind cuts is arithmetically located, it is also located. +If a pair of lower and upper Dedekind cuts is arithmetically located, it is also +located. ```agda module _ diff --git a/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md index 5c6f4d84f5..b9847a632c 100644 --- a/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/negation-lower-upper-dedekind-real-numbers.lagda.md @@ -40,8 +40,10 @@ open import real-numbers.upper-dedekind-real-numbers ## Idea -The negation of a lower Dedekind real is an upper Dedekind real containing the -negations of elements in the lower cut, and vice versa. +The negation of a +[lower Dedekind real number](real-numbers.lower-dedekind-real-numbers.md) is an +[upper Dedekind real number](real-numbers.upper-dedekind-real-numbers.md) whose +cut contains negations of elements in the lower cut, and vice versa. ## Definition From 0a2691ca5cddb2441a32e7c73cf5133cdec1bb03 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:24:49 -0800 Subject: [PATCH 150/227] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../arithmetically-located-dedekind-cuts.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index dc0ce73fc2..c3d4d59716 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -60,7 +60,7 @@ This follows parts of Section 11 in {{#cite BauerTaylor2009}}. ```agda module _ - {l : Level} (L : lower-ℝ l) (U : upper-ℝ l) + {l1 l2 : Level} (L : lower-ℝ l1) (U : upper-ℝ l2) where arithmetically-located-lower-upper-ℝ : UU l @@ -82,7 +82,7 @@ located. ```agda module _ - {l : Level} (x : lower-ℝ l) (y : upper-ℝ l) + {l1 l2 : Level} (x : lower-ℝ l1) (y : upper-ℝ l2) where abstract From f462be5d7d0007edf17871bde17dcd75435cb29d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:32:12 -0800 Subject: [PATCH 151/227] Fix compile --- .../arithmetically-located-dedekind-cuts.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index c3d4d59716..fa5295f6a6 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -60,17 +60,17 @@ This follows parts of Section 11 in {{#cite BauerTaylor2009}}. ```agda module _ - {l1 l2 : Level} (L : lower-ℝ l1) (U : upper-ℝ l2) + {l1 l2 : Level} (x : lower-ℝ l1) (y : upper-ℝ l2) where - arithmetically-located-lower-upper-ℝ : UU l + arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) arithmetically-located-lower-upper-ℝ = (ε⁺ : ℚ⁺) → exists ( ℚ × ℚ) ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ - cut-lower-ℝ L p ∧ - cut-upper-ℝ U q) + cut-lower-ℝ x p ∧ + cut-upper-ℝ y q) ``` ## Properties From 5978e1a566b16e416be7efcee630e639ebadc241 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Feb 2025 16:44:22 -0800 Subject: [PATCH 152/227] Review comments --- src/foundation/propositional-truncations.lagda.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index f067b32f78..8580a7744a 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -490,8 +490,7 @@ do where open do-syntax-trunc-Prop motive ``` -Since Agda's `do` syntax desugars to calls to `>>=`, this is simply syntactic -sugar for +Since Agda's `do` syntax desugars to calls to `>>=`, this is syntactic sugar for ```text witness-truncated-prop-P >>= @@ -504,8 +503,8 @@ which, inlining the definition of `>>=`, becomes exactly the chain of To read the `do` syntax, it may help to go through each line: -1. `do` simply indicates that we will be using Agda's syntactic sugar for the - `>>=` function defined in the `do-syntax-trunc-Prop` module. +1. `do` indicates that we will be using Agda's syntactic sugar for the `>>=` + function defined in the `do-syntax-trunc-Prop` module. 1. You can read the `p ← witness-truncated-prop-P` as an _instruction_ saying, "Get the value `p` out of the witness of `trunc-Prop P`." We cannot extract elements out of witnesses of propositionally truncated types, but since we're @@ -513,10 +512,10 @@ To read the `do` syntax, it may help to go through each line: allows us to lift a map from the untruncated type to a map from its truncation. 1. `q ← witness-truncated-prop-Q p` says, "Get the value `q` out of the witness - for the truncation `witness-truncated-prop-Q p`" -- noticing that we can make - use of `p : P` in that line. -1. `witness-motive-P-Q p q` must give us a witness of `motive` -- that is, a - value of type `type-Prop motive` -- from `p` and `q`. + for the truncation `witness-truncated-prop-Q p`" --- noticing that we can + make use of `p : P` in that line. +1. `witness-motive-P-Q p q` must give us a witness of `motive` --- that is, a + value of type `type-Prop motive` --- from `p` and `q`. 1. `where open do-syntax-trunc-Prop motive` is required to allow us to use the `do` syntax. From 51dcb2f88f4c11f92be5787bc0adbbe891a8ecb5 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 14 Feb 2025 11:27:13 -0800 Subject: [PATCH 153/227] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../existential-quantification.lagda.md | 2 +- .../propositional-truncations.lagda.md | 2 +- .../strict-inequality-real-numbers.lagda.md | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/foundation/existential-quantification.lagda.md b/src/foundation/existential-quantification.lagda.md index 07e29f4bb7..13a376ea80 100644 --- a/src/foundation/existential-quantification.lagda.md +++ b/src/foundation/existential-quantification.lagda.md @@ -204,7 +204,7 @@ module _ Note that since existential quantification is implemented using propositional truncation, the associated -[do syntax](foundation.propositional-truncations.md#do-syntax) can be used to +[`do` syntax](foundation.propositional-truncations.md#do-syntax) can be used to simplify deeply nested chains of `elim-exists`. ### The existential quantification satisfies the universal property of existential quantification diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index 8580a7744a..555dbd395d 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -448,7 +448,7 @@ module _ ## `do` syntax for propositional truncation { #do-syntax } -[Agda's `do` syntax](https://agda.readthedocs.io/en/v2.7.0/language/syntactic-sugar.html#do-notation) +[Agda's `do` syntax](https://agda.readthedocs.io/en/latest/language/syntactic-sugar.html#do-notation) is a handy tool to avoid deeply nesting calls to the same lambda-based function. For example, consider a case where you are trying to prove a proposition, `motive : Prop l`, from witnesses of propositional truncations of types `P` and diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index b4cb9f9f2c..0deea45410 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -89,8 +89,8 @@ module _ asymmetric-le-ℝ : le-ℝ x y → ¬ (le-ℝ y x) asymmetric-le-ℝ x Date: Fri, 14 Feb 2025 11:32:13 -0800 Subject: [PATCH 154/227] Use the established do syntax. --- ...thmetically-located-dedekind-cuts.lagda.md | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index fc4e708570..a7cdc4e9ad 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -31,16 +31,14 @@ open import foundation.empty-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.logical-equivalences +open import foundation.propositional-truncations open import foundation.propositions -open import foundation.raising-universe-levels open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels open import group-theory.abelian-groups -open import logic.functoriality-existential-quantification - open import real-numbers.dedekind-real-numbers ``` @@ -241,17 +239,12 @@ module _ ( preserves-le-right-add-ℚ r (ε' +ℚ ε') ε 2ε'<ε) intro-exists (r , r') (r'>=_ : - {l1 l2 : Level} {A : UU l1} {B : A -> UU l2} → - exists-structure A B → - (Σ A B -> type-Prop claim) → type-Prop claim - x >>= f = elim-exists claim (ev-pair f) x + open + do-syntax-trunc-Prop + ( ∃ + ( ℚ × ℚ) + ( λ (p , q) → + le-ℚ-Prop q (p +ℚ ε) ∧ lower-cut-ℝ x p ∧ upper-cut-ℝ x q)) ``` ## References From 338e6b588760e5353d51afe52d518bdaffac06d9 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 14 Feb 2025 11:44:17 -0800 Subject: [PATCH 155/227] Fix up arithmetic location results to be about lower and upper reals --- ...thmetically-located-dedekind-cuts.lagda.md | 58 ++++++------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 388c5d68fe..0abcd44aca 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -21,11 +21,8 @@ open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers -<<<<<<< HEAD open import foundation.action-on-identifications-functions -======= open import foundation.binary-transport ->>>>>>> lower-upper-neg open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.coproduct-types @@ -44,11 +41,8 @@ open import foundation.universe-levels open import group-theory.abelian-groups open import real-numbers.dedekind-real-numbers -<<<<<<< HEAD -======= open import real-numbers.lower-dedekind-real-numbers open import real-numbers.upper-dedekind-real-numbers ->>>>>>> lower-upper-neg ``` @@ -76,14 +70,6 @@ module _ {l1 l2 : Level} (x : lower-ℝ l1) (y : upper-ℝ l2) where -<<<<<<< HEAD - is-arithmetically-located-pair-of-subtypes-ℚ : UU l - is-arithmetically-located-pair-of-subtypes-ℚ = - (ε : ℚ⁺) → - exists - ( ℚ × ℚ) - ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε) ∧ L p ∧ U q) -======= arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) arithmetically-located-lower-upper-ℝ = (ε⁺ : ℚ⁺) → @@ -92,7 +78,6 @@ module _ ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ cut-lower-ℝ x p ∧ cut-upper-ℝ y q) ->>>>>>> lower-upper-neg ``` ## Properties @@ -114,13 +99,8 @@ module _ is-located-is-arithmetically-located-lower-upper-ℝ arithmetically-located p q p>>>>>> lower-upper-neg rec-coproduct ( λ p>>>>>> lower-upper-neg ``` ## References From 582f331af68c4129d169a99ccf4ebb7348fd8b0a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 14 Feb 2025 11:46:30 -0800 Subject: [PATCH 156/227] maybe name things better? --- .../arithmetically-located-dedekind-cuts.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 0abcd44aca..7dca2436cf 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -134,14 +134,14 @@ module _ where abstract - arithmetic-location-in-arithmetic-sequence : + arithmetic-location-from-multiple-difference-in-lower-upper-cut-ℝ : (p ε : ℚ) → (n : ℕ) → is-positive-ℚ ε → is-in-lower-cut-ℝ x p → is-in-upper-cut-ℝ x (p +ℚ (rational-ℤ (int-ℕ n) *ℚ ε)) → exists ℚ ( λ q → lower-cut-ℝ x q ∧ upper-cut-ℝ x (q +ℚ ε +ℚ ε)) - arithmetic-location-in-arithmetic-sequence + arithmetic-location-from-multiple-difference-in-lower-upper-cut-ℝ p ε zero-ℕ positive-ε p Date: Fri, 14 Feb 2025 11:50:03 -0800 Subject: [PATCH 157/227] Progress --- .../addition-lower-dedekind-real-numbers.lagda.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index 0073594d5b..36113fa021 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -207,3 +207,9 @@ module _ ( cut-lower-ℝ y) ( cut-lower-ℝ z)) ``` + +### Unit laws for the addition of lower Dedekind real numbers + +```agda + +``` From d90e459a320fef8aa2e97962d8a5b781d5d78159 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 14 Feb 2025 13:32:26 -0800 Subject: [PATCH 158/227] Unit laws and simplifications --- ...ition-lower-dedekind-real-numbers.lagda.md | 194 ++++++++++-------- ...ition-upper-dedekind-real-numbers.lagda.md | 180 +++++++++------- .../lower-dedekind-real-numbers.lagda.md | 17 ++ .../upper-dedekind-real-numbers.lagda.md | 19 ++ 4 files changed, 250 insertions(+), 160 deletions(-) diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index 36113fa021..652c87812c 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -24,6 +24,7 @@ open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.logical-equivalences +open import foundation.propositional-truncations open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels @@ -35,6 +36,7 @@ open import group-theory.minkowski-multiplication-commutative-monoids open import logic.functoriality-existential-quantification open import real-numbers.lower-dedekind-real-numbers +open import real-numbers.rational-lower-dedekind-real-numbers ``` @@ -78,89 +80,67 @@ module _ (q : ℚ) → is-in-cut-add-lower-ℝ q ↔ exists ℚ (λ r → le-ℚ-Prop q r ∧ cut-add-lower-ℝ r) - pr1 (is-rounded-cut-add-lower-ℝ q) = - elim-exists - ( ∃ ℚ (λ r → le-ℚ-Prop q r ∧ cut-add-lower-ℝ r)) - ( λ (lx , ly) (lx @@ -78,81 +78,67 @@ module _ (q : ℚ) → is-in-cut-add-upper-ℝ q ↔ exists ℚ (λ p → le-ℚ-Prop p q ∧ cut-add-upper-ℝ p) - pr1 (is-rounded-cut-add-upper-ℝ q) = - elim-exists - ( ∃ ℚ (λ p → le-ℚ-Prop p q ∧ cut-add-upper-ℝ p)) - ( λ (ux , uy) (xImports ```agda +open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -122,6 +126,19 @@ module _ ( intro-exists q (pImports ```agda +open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -122,6 +124,23 @@ module _ ( intro-exists p (p Date: Fri, 14 Feb 2025 13:38:01 -0800 Subject: [PATCH 159/227] make pre-commit --- src/real-numbers.lagda.md | 2 +- src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 840e17a3da..24d0f66b34 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -5,9 +5,9 @@ ```agda module real-numbers where -open import real-numbers.apartness-real-numbers public open import real-numbers.addition-lower-dedekind-real-numbers public open import real-numbers.addition-upper-dedekind-real-numbers public +open import real-numbers.apartness-real-numbers public open import real-numbers.arithmetically-located-dedekind-cuts public open import real-numbers.dedekind-real-numbers public open import real-numbers.inequality-lower-dedekind-real-numbers public diff --git a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md index 0941ed1a99..33dd0ded7d 100644 --- a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md @@ -33,8 +33,8 @@ open import group-theory.abelian-groups open import group-theory.groups open import group-theory.minkowski-multiplication-commutative-monoids -open import real-numbers.upper-dedekind-real-numbers open import real-numbers.rational-upper-dedekind-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` From 1d98b949f76174e831f8fb61c34e0edf0fd8e9f9 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 14 Feb 2025 13:53:45 -0800 Subject: [PATCH 160/227] Progress --- .../addition-real-numbers.lagda.md | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/real-numbers/addition-real-numbers.lagda.md diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md new file mode 100644 index 0000000000..d6c5ea6578 --- /dev/null +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -0,0 +1,83 @@ +# Addition of Dedekind real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.addition-real-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.binary-transport +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.identity-types +open import foundation.propositional-truncations +open import foundation.universe-levels + +open import real-numbers.dedekind-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.lower-dedekind-real-numbers +open import real-numbers.addition-lower-dedekind-real-numbers +open import real-numbers.upper-dedekind-real-numbers +open import real-numbers.addition-upper-dedekind-real-numbers +``` + +
+ +## Idea + +The sum of two +[Dedekind real numbers](real-numbers.dedekind-real-numbers.md) is +is a Dedekind real number whose lower cut (upper cut) is the +the +[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of +their lower (upper) cuts. + +```agda +module _ + {l1 l2 : Level} + (x : ℝ l1) (y : ℝ l2) + where + + lower-real-add-ℝ : lower-ℝ (l1 ⊔ l2) + lower-real-add-ℝ = add-lower-ℝ (lower-real-ℝ x) (lower-real-ℝ y) + + upper-real-add-ℝ : upper-ℝ (l1 ⊔ l2) + upper-real-add-ℝ = add-upper-ℝ (upper-real-ℝ x) (upper-real-ℝ y) + + is-disjoint-lower-upper-add-ℝ : + is-disjoint-lower-upper-ℝ lower-real-add-ℝ upper-real-add-ℝ + is-disjoint-lower-upper-add-ℝ p (p Date: Fri, 14 Feb 2025 14:38:10 -0800 Subject: [PATCH 161/227] Progress --- .../addition-real-numbers.lagda.md | 182 +++++++++++++++--- ...thmetically-located-dedekind-cuts.lagda.md | 32 +-- .../rational-real-numbers.lagda.md | 7 + 3 files changed, 183 insertions(+), 38 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index d6c5ea6578..96389c1c86 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -12,19 +12,29 @@ module real-numbers.addition-real-numbers where open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.action-on-identifications-functions open import foundation.binary-transport +open import foundation.cartesian-product-types open import foundation.dependent-pair-types +open import foundation.conjunction open import foundation.empty-types open import foundation.identity-types open import foundation.propositional-truncations open import foundation.universe-levels - +open import foundation.transport-along-identifications +open import foundation.existential-quantification +open import elementary-number-theory.rational-numbers open import real-numbers.dedekind-real-numbers +open import elementary-number-theory.positive-rational-numbers open import real-numbers.rational-real-numbers open import real-numbers.lower-dedekind-real-numbers open import real-numbers.addition-lower-dedekind-real-numbers open import real-numbers.upper-dedekind-real-numbers open import real-numbers.addition-upper-dedekind-real-numbers +open import real-numbers.arithmetically-located-dedekind-cuts +open import real-numbers.negation-real-numbers +open import real-numbers.negation-lower-upper-dedekind-real-numbers +open import real-numbers.similarity-real-numbers ``` @@ -50,34 +60,156 @@ module _ upper-real-add-ℝ : upper-ℝ (l1 ⊔ l2) upper-real-add-ℝ = add-upper-ℝ (upper-real-ℝ x) (upper-real-ℝ y) - is-disjoint-lower-upper-add-ℝ : - is-disjoint-lower-upper-ℝ lower-real-add-ℝ upper-real-add-ℝ - is-disjoint-lower-upper-add-ℝ p (p Date: Fri, 14 Feb 2025 14:43:23 -0800 Subject: [PATCH 162/227] Progress --- src/real-numbers/addition-real-numbers.lagda.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 96389c1c86..58be082326 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -208,8 +208,12 @@ right-unit-law-add-ℝ x = ```agda left-inverse-law-add-ℝ : {l : Level} → (x : ℝ l) → sim-ℝ (neg-ℝ x +ℝ x) zero-ℝ -pr1 (left-inverse-law-add-ℝ x) r = - elim-exists - ( le-ℚ-Prop r zero-ℚ) - ( λ (p , q) (x<-p , q Date: Fri, 14 Feb 2025 14:54:26 -0800 Subject: [PATCH 163/227] Finish --- .../addition-real-numbers.lagda.md | 38 ++++++++++++++++--- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 58be082326..d2f01b67c6 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -11,7 +11,8 @@ module real-numbers.addition-real-numbers where ```agda open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers - +open import elementary-number-theory.additive-group-of-rational-numbers +open import group-theory.groups open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.cartesian-product-types @@ -207,13 +208,38 @@ right-unit-law-add-ℝ x = ### Inverse laws for addition ```agda -left-inverse-law-add-ℝ : {l : Level} → (x : ℝ l) → sim-ℝ (neg-ℝ x +ℝ x) zero-ℝ -left-inverse-law-add-ℝ x = +right-inverse-law-add-ℝ : {l : Level} → (x : ℝ l) → sim-ℝ (x +ℝ neg-ℝ x) zero-ℝ +right-inverse-law-add-ℝ x = sim-rational-ℝ - ( neg-ℝ x +ℝ x , + ( x +ℝ neg-ℝ x , zero-ℚ , elim-exists ( empty-Prop) - ( λ (p , q) (x<-p , q Date: Fri, 14 Feb 2025 15:40:39 -0800 Subject: [PATCH 164/227] Fixes --- ...thmetically-located-dedekind-cuts.lagda.md | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 7dca2436cf..43df39cf93 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -70,14 +70,20 @@ module _ {l1 l2 : Level} (x : lower-ℝ l1) (y : upper-ℝ l2) where - arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) - arithmetically-located-lower-upper-ℝ = - (ε⁺ : ℚ⁺) → - exists - ( ℚ × ℚ) - ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ - cut-lower-ℝ x p ∧ - cut-upper-ℝ y q) + arithmetically-located-prop-lower-upper-ℝ : Prop (l1 ⊔ l2) + arithmetically-located-prop-lower-upper-ℝ = + Π-Prop + ( ℚ⁺) + ( λ ε⁺ → ∃ + ( ℚ × ℚ) + ( λ (p , q) → + le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ + cut-lower-ℝ x p ∧ + cut-upper-ℝ y q)) + + is-arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) + is-arithmetically-located-lower-upper-ℝ = + type-Prop (arithmetically-located-prop-lower-upper-ℝ) ``` ## Properties @@ -94,7 +100,7 @@ module _ abstract is-located-is-arithmetically-located-lower-upper-ℝ : - arithmetically-located-lower-upper-ℝ x y → + is-arithmetically-located-lower-upper-ℝ x y → is-located-lower-upper-ℝ x y is-located-is-arithmetically-located-lower-upper-ℝ arithmetically-located p q p Date: Tue, 18 Feb 2025 17:34:51 -0800 Subject: [PATCH 165/227] Back out do syntax --- ...thmetically-located-dedekind-cuts.lagda.md | 56 ++++++++++++------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 43df39cf93..117778bc40 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -232,27 +232,43 @@ module _ ( lower-real-ℝ x) ( upper-real-ℝ x) is-arithmetically-located-lower-upper-real-ℝ ε⁺@(ε , positive-ε) = - do - (ε' , pos-ε') , 2ε'<ε ← double-le-ℚ⁺ ε⁺ - (p , p Date: Tue, 18 Feb 2025 17:58:27 -0800 Subject: [PATCH 166/227] Rationalize names --- .../arithmetically-located-dedekind-cuts.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index ca8e682df3..3f71926415 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -70,8 +70,8 @@ module _ {l1 l2 : Level} (x : lower-ℝ l1) (y : upper-ℝ l2) where - arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) - arithmetically-located-lower-upper-ℝ = + is-arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) + is-arithmetically-located-lower-upper-ℝ = (ε⁺ : ℚ⁺) → exists ( ℚ × ℚ) @@ -94,7 +94,7 @@ module _ abstract is-located-is-arithmetically-located-lower-upper-ℝ : - arithmetically-located-lower-upper-ℝ x y → + is-arithmetically-located-lower-upper-ℝ x y → is-located-lower-upper-ℝ x y is-located-is-arithmetically-located-lower-upper-ℝ arithmetically-located p q p Date: Tue, 18 Feb 2025 18:44:39 -0800 Subject: [PATCH 167/227] make pre-commit --- src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index d4c1cf301d..3f71926415 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -23,7 +23,6 @@ open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-functions open import foundation.binary-transport -open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.coproduct-types From 2406ff76f564590ef467466f7ce5320fb4071a15 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 18 Feb 2025 18:50:54 -0800 Subject: [PATCH 168/227] Fix concept --- src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 3f71926415..8b5fcdd45c 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -52,7 +52,7 @@ open import real-numbers.upper-dedekind-real-numbers A pair of a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) `L` and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U` is -{{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=arithmetically-located-lower-upper-ℝ}} +{{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=is-arithmetically-located-lower-upper-ℝ}} if for any [positive](elementary-number-theory.positive-rational-numbers.md) [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ⁺`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. From daa8d784437f6fa0ec29c733495f5d9c22bb02b0 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 18 Feb 2025 19:21:15 -0800 Subject: [PATCH 169/227] Reinstate do syntax --- ...thmetically-located-dedekind-cuts.lagda.md | 80 ++++++++----------- 1 file changed, 35 insertions(+), 45 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 8b5fcdd45c..43df39cf93 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -52,12 +52,12 @@ open import real-numbers.upper-dedekind-real-numbers A pair of a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) `L` and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U` is -{{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=is-arithmetically-located-lower-upper-ℝ}} +{{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=arithmetically-located-lower-upper-ℝ}} if for any [positive](elementary-number-theory.positive-rational-numbers.md) [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ⁺`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. -Intuitively, when `L` and `U` are the lower and upper cuts of a real number `x`, -then `p` and `q` are rational approximations of `x` to within `ε`. +Intuitively, when `L , U` represent the cuts of a real number `x`, `p` and `q` +are rational approximations of `x` to within `ε`. This follows parts of Section 11 in {{#cite BauerTaylor2009}}. @@ -70,14 +70,20 @@ module _ {l1 l2 : Level} (x : lower-ℝ l1) (y : upper-ℝ l2) where + arithmetically-located-prop-lower-upper-ℝ : Prop (l1 ⊔ l2) + arithmetically-located-prop-lower-upper-ℝ = + Π-Prop + ( ℚ⁺) + ( λ ε⁺ → ∃ + ( ℚ × ℚ) + ( λ (p , q) → + le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ + cut-lower-ℝ x p ∧ + cut-upper-ℝ y q)) + is-arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) is-arithmetically-located-lower-upper-ℝ = - (ε⁺ : ℚ⁺) → - exists - ( ℚ × ℚ) - ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ - cut-lower-ℝ x p ∧ - cut-upper-ℝ y q) + type-Prop (arithmetically-located-prop-lower-upper-ℝ) ``` ## Properties @@ -226,43 +232,27 @@ module _ ( lower-real-ℝ x) ( upper-real-ℝ x) is-arithmetically-located-lower-upper-real-ℝ ε⁺@(ε , positive-ε) = - elim-exists - ( claim) - ( λ (ε' , pos-ε') 2ε'<ε → - elim-exists - ( claim) - ( λ p p Date: Tue, 18 Feb 2025 20:35:07 -0800 Subject: [PATCH 170/227] Define similarity in the real numbers without reference to inequality --- .../dedekind-real-numbers.lagda.md | 42 +++++++++++++------ ...ality-lower-dedekind-real-numbers.lagda.md | 2 +- .../similarity-real-numbers.lagda.md | 28 ++++--------- 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 3f83f4b510..6cc3c84b46 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -29,6 +29,7 @@ open import foundation.functoriality-dependent-pair-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.negation +open import foundation.powersets open import foundation.propositional-truncations open import foundation.propositions open import foundation.sets @@ -371,7 +372,7 @@ module _ ```agda module _ - {l : Level} (x y : ℝ l) + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) where subset-lower-cut-upper-cut-ℝ : @@ -392,6 +393,26 @@ module _ ( eq-upper-cut-upper-complement-lower-cut-ℝ x) ( λ q → map-tot-exists (λ p → tot (λ _ K → K ∘ H p))) +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + sim-lower-cut-sim-upper-cut-ℝ : + sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) → + sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) + pr1 (sim-lower-cut-sim-upper-cut-ℝ (_ , uy⊆ux)) = + subset-lower-cut-upper-cut-ℝ x y uy⊆ux + pr2 (sim-lower-cut-sim-upper-cut-ℝ (ux⊆uy , _)) = + subset-lower-cut-upper-cut-ℝ y x ux⊆uy + + sim-upper-cut-sim-lower-cut-ℝ : + sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) → + sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) + pr1 (sim-upper-cut-sim-lower-cut-ℝ (_ , ly⊆lx)) = + subset-upper-cut-lower-cut-ℝ y x ly⊆lx + pr2 (sim-upper-cut-sim-lower-cut-ℝ (lx⊆ly , _)) = + subset-upper-cut-lower-cut-ℝ x y lx⊆ly + module _ {l : Level} (x y : ℝ l) where @@ -399,19 +420,16 @@ module _ eq-lower-cut-eq-upper-cut-ℝ : upper-cut-ℝ x = upper-cut-ℝ y → lower-cut-ℝ x = lower-cut-ℝ y eq-lower-cut-eq-upper-cut-ℝ H = - antisymmetric-leq-subtype + antisymmetric-sim-subtype ( lower-cut-ℝ x) ( lower-cut-ℝ y) - ( subset-lower-cut-upper-cut-ℝ x y - ( pr2 ∘ has-same-elements-eq-subtype - ( upper-cut-ℝ x) - ( upper-cut-ℝ y) - ( H))) - ( subset-lower-cut-upper-cut-ℝ y x - ( pr1 ∘ has-same-elements-eq-subtype - ( upper-cut-ℝ x) - ( upper-cut-ℝ y) - ( H))) + ( sim-lower-cut-sim-upper-cut-ℝ + ( x) + ( y) + ( tr + ( sim-subtype (upper-cut-ℝ x)) + ( H) + ( refl-sim-subtype (upper-cut-ℝ x)))) eq-lower-real-eq-upper-real-ℝ : upper-real-ℝ x = upper-real-ℝ y → lower-real-ℝ x = lower-real-ℝ y diff --git a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md index 26abd2fb42..ba3a6179da 100644 --- a/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/inequality-lower-dedekind-real-numbers.lagda.md @@ -76,7 +76,7 @@ antisymmetric-leq-Large-Poset lower-ℝ-Large-Poset x y x≤y y≤x = ( antisymmetric-leq-subtype (cut-lower-ℝ x) (cut-lower-ℝ y) x≤y y≤x) ``` -### If a rational is in a lower Dedekind cut, its projections is less than or equal to the corresponding lower real +### If a rational is in a lower Dedekind cut, its projection is less than or equal to the corresponding lower real ```agda module _ diff --git a/src/real-numbers/similarity-real-numbers.lagda.md b/src/real-numbers/similarity-real-numbers.lagda.md index 7284ce1cf1..9ca939ec6d 100644 --- a/src/real-numbers/similarity-real-numbers.lagda.md +++ b/src/real-numbers/similarity-real-numbers.lagda.md @@ -24,7 +24,6 @@ open import order-theory.large-posets open import order-theory.similarity-of-elements-large-posets open import real-numbers.dedekind-real-numbers -open import real-numbers.inequality-real-numbers open import real-numbers.rational-real-numbers ``` @@ -43,7 +42,7 @@ differing universe levels. ```agda sim-prop-ℝ : {l1 l2 : Level} → ℝ l1 → ℝ l2 → Prop (l1 ⊔ l2) -sim-prop-ℝ = sim-prop-Large-Poset ℝ-Large-Poset +sim-prop-ℝ x y = sim-prop-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) sim-ℝ : {l1 l2 : Level} → ℝ l1 → ℝ l2 → UU (l1 ⊔ l2) sim-ℝ x y = type-Prop (sim-prop-ℝ x y) @@ -72,21 +71,15 @@ module _ sim-upper-cut-iff-sim-ℝ : sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) ↔ sim-ℝ x y - pr1 (pr1 sim-upper-cut-iff-sim-ℝ (ux⊆uy , uy⊆ux)) = - backward-implication (leq-iff-ℝ' x y) uy⊆ux - pr2 (pr1 sim-upper-cut-iff-sim-ℝ (ux⊆uy , uy⊆ux)) = - backward-implication (leq-iff-ℝ' y x) ux⊆uy - pr1 (pr2 sim-upper-cut-iff-sim-ℝ (lx⊆ly , ly⊆lx)) = - forward-implication (leq-iff-ℝ' y x) ly⊆lx - pr2 (pr2 sim-upper-cut-iff-sim-ℝ (lx⊆ly , ly⊆lx)) = - forward-implication (leq-iff-ℝ' x y) lx⊆ly + pr1 sim-upper-cut-iff-sim-ℝ = sim-lower-cut-sim-upper-cut-ℝ x y + pr2 sim-upper-cut-iff-sim-ℝ = sim-upper-cut-sim-lower-cut-ℝ x y ``` ### Reflexivity ```agda refl-sim-ℝ : {l : Level} → (x : ℝ l) → sim-ℝ x x -refl-sim-ℝ = refl-sim-Large-Poset ℝ-Large-Poset +refl-sim-ℝ x = refl-sim-subtype (lower-cut-ℝ x) ``` ### Transitivity @@ -94,20 +87,17 @@ refl-sim-ℝ = refl-sim-Large-Poset ℝ-Large-Poset ```agda transitive-sim-ℝ : {l1 l2 l3 : Level} → - (x : ℝ l1) → - (y : ℝ l2) → - (z : ℝ l3) → - sim-ℝ y z → - sim-ℝ x y → - sim-ℝ x z -transitive-sim-ℝ = transitive-sim-Large-Poset ℝ-Large-Poset + (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → + sim-ℝ y z → sim-ℝ x y → sim-ℝ x z +transitive-sim-ℝ x y z = + transitive-sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) (lower-cut-ℝ z) ``` ### Similar real numbers in the same universe are equal ```agda eq-sim-ℝ : {l : Level} → (x y : ℝ l) → sim-ℝ x y → x = y -eq-sim-ℝ = eq-sim-Large-Poset ℝ-Large-Poset +eq-sim-ℝ x y H = eq-eq-lower-cut-ℝ x y (antisymmetric-sim-subtype _ _ H) ``` ### A rational real is similar to the canonical projection of its rational From 1128bd64286437087d8d69eced6be72f24ea5137 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 18 Feb 2025 22:09:46 -0800 Subject: [PATCH 171/227] Define effects of addition on inequality --- src/foundation/powersets.lagda.md | 14 +++ .../addition-real-numbers.lagda.md | 93 +++++++++++++++++++ .../inequality-real-numbers.lagda.md | 90 ++++++++++++++++++ .../similarity-real-numbers.lagda.md | 8 ++ 4 files changed, 205 insertions(+) diff --git a/src/foundation/powersets.lagda.md b/src/foundation/powersets.lagda.md index 40d81d0d15..8d49495a95 100644 --- a/src/foundation/powersets.lagda.md +++ b/src/foundation/powersets.lagda.md @@ -217,6 +217,20 @@ module _ refl-sim-subtype = refl-sim-Large-Poset (powerset-Large-Poset A) ``` +#### Similarity is symmetric + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + symmetric-sim-subtype : + {l2 l3 : Level} → + (P : subtype l2 A) (Q : subtype l3 A) → + sim-subtype P Q → sim-subtype Q P + symmetric-sim-subtype = symmetric-sim-Large-Poset (powerset-Large-Poset A) +``` + #### Similarity is transitive ```agda diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index d2f01b67c6..6575acce4d 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -22,8 +22,12 @@ open import foundation.empty-types open import foundation.identity-types open import foundation.propositional-truncations open import foundation.universe-levels +open import foundation.function-types +open import foundation.logical-equivalences +open import foundation.functoriality-cartesian-product-types open import foundation.transport-along-identifications open import foundation.existential-quantification +open import logic.functoriality-existential-quantification open import elementary-number-theory.rational-numbers open import real-numbers.dedekind-real-numbers open import elementary-number-theory.positive-rational-numbers @@ -36,6 +40,7 @@ open import real-numbers.arithmetically-located-dedekind-cuts open import real-numbers.negation-real-numbers open import real-numbers.negation-lower-upper-dedekind-real-numbers open import real-numbers.similarity-real-numbers +open import foundation.equivalences ``` @@ -243,3 +248,91 @@ left-inverse-law-add-ℝ x = ( commutative-add-ℝ x (neg-ℝ x)) ( right-inverse-law-add-ℝ x) ``` + +### Addition on the real numbers preserves similarity + +```agda +module _ + {l1 l2 l3 : Level} + (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + preserves-sim-right-add-ℝ : sim-ℝ x y → sim-ℝ (x +ℝ z) (y +ℝ z) + pr1 (preserves-sim-right-add-ℝ (lx⊆ly , _)) q = + map-tot-exists (λ (qx , _) → map-product (lx⊆ly qx) id) + pr2 (preserves-sim-right-add-ℝ (_ , ly⊆lx)) q = + map-tot-exists (λ (qy , _) → map-product (ly⊆lx qy) id) + + preserves-sim-left-add-ℝ : sim-ℝ x y → sim-ℝ (z +ℝ x) (z +ℝ y) + preserves-sim-left-add-ℝ x≈y = + binary-tr + ( sim-ℝ) + ( commutative-add-ℝ x z) + ( commutative-add-ℝ y z) + ( preserves-sim-right-add-ℝ x≈y) +``` + +### Addition and subtraction on the right cancel out + +DO NOT SUBMIT: I don't know what to call this, because the usual notions of +equivalences, retractions, etc. don't work for similarity. + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + cancel-right-add-ℝ : sim-ℝ ((x +ℝ y) +ℝ neg-ℝ y) x + cancel-right-add-ℝ = + binary-tr + ( sim-ℝ) + ( inv (associative-add-ℝ x y (neg-ℝ y))) + ( right-unit-law-add-ℝ x) + ( preserves-sim-left-add-ℝ + ( x) + ( y +ℝ neg-ℝ y) + ( zero-ℝ) + ( right-inverse-law-add-ℝ y)) + +``` + +### Addition reflects similarity + +```agda +module _ + {l1 l2 l3 : Level} + (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + reflects-sim-right-add-ℝ : sim-ℝ (x +ℝ z) (y +ℝ z) → sim-ℝ x y + reflects-sim-right-add-ℝ x+z≈y+z = + transitive-sim-ℝ + ( x) + ( (x +ℝ z) +ℝ neg-ℝ z) + ( y) + ( transitive-sim-ℝ + ( (x +ℝ z) +ℝ neg-ℝ z) + ( (y +ℝ z) +ℝ neg-ℝ z) + ( y) + ( cancel-right-add-ℝ y z) + ( preserves-sim-right-add-ℝ (neg-ℝ z) (x +ℝ z) (y +ℝ z) x+z≈y+z)) + ( symmetric-sim-ℝ ((x +ℝ z) +ℝ neg-ℝ z) x (cancel-right-add-ℝ x z)) + + reflects-sim-left-add-ℝ : sim-ℝ (z +ℝ x) (z +ℝ y) → sim-ℝ x y + reflects-sim-left-add-ℝ z+x≈z+y = + reflects-sim-right-add-ℝ + ( binary-tr sim-ℝ (commutative-add-ℝ z x) (commutative-add-ℝ z y) z+x≈z+y) + +module _ + {l1 l2 l3 : Level} + (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + iff-translate-right-sim-ℝ : sim-ℝ x y ↔ sim-ℝ (x +ℝ z) (y +ℝ z) + pr1 iff-translate-right-sim-ℝ = preserves-sim-right-add-ℝ z x y + pr2 iff-translate-right-sim-ℝ = reflects-sim-right-add-ℝ z x y + + iff-translate-left-sim-ℝ : sim-ℝ x y ↔ sim-ℝ (z +ℝ x) (z +ℝ y) + pr1 iff-translate-left-sim-ℝ = preserves-sim-left-add-ℝ z x y + pr2 iff-translate-left-sim-ℝ = reflects-sim-left-add-ℝ z x y +``` diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index 098feec9e9..682453314a 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -11,11 +11,14 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.binary-transport +open import foundation.functoriality-cartesian-product-types open import foundation.complements-subtypes open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types open import foundation.existential-quantification +open import foundation.function-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositions @@ -27,6 +30,8 @@ open import order-theory.large-preorders open import order-theory.posets open import order-theory.preorders +open import logic.functoriality-existential-quantification + open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-lower-dedekind-real-numbers open import real-numbers.inequality-upper-dedekind-real-numbers @@ -35,6 +40,8 @@ open import real-numbers.negation-lower-upper-dedekind-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.upper-dedekind-real-numbers +open import real-numbers.addition-real-numbers +open import real-numbers.similarity-real-numbers ``` @@ -186,6 +193,89 @@ iff-leq-real-ℚ : (x y : ℚ) → leq-ℚ x y ↔ leq-ℝ (real-ℚ x) (real- iff-leq-real-ℚ = iff-leq-lower-real-ℚ ``` +### Inequality on the real numbers is invariant under similarity + +```agda +module _ + {l1 l2 l3 : Level} + (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) (x≈y : sim-ℝ x y) + where + + preserves-leq-left-sim-ℝ : leq-ℝ x z → leq-ℝ y z + preserves-leq-left-sim-ℝ lx⊆lz q q Date: Tue, 18 Feb 2025 22:10:29 -0800 Subject: [PATCH 172/227] make pre-commit --- src/real-numbers.lagda.md | 1 + .../addition-real-numbers.lagda.md | 33 ++++++++++--------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 24d0f66b34..f8dbb63bcb 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -6,6 +6,7 @@ module real-numbers where open import real-numbers.addition-lower-dedekind-real-numbers public +open import real-numbers.addition-real-numbers public open import real-numbers.addition-upper-dedekind-real-numbers public open import real-numbers.apartness-real-numbers public open import real-numbers.arithmetically-located-dedekind-cuts public diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index d2f01b67c6..a95d2c4a2f 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -10,42 +10,43 @@ module real-numbers.addition-real-numbers where ```agda open import elementary-number-theory.addition-rational-numbers -open import elementary-number-theory.strict-inequality-rational-numbers open import elementary-number-theory.additive-group-of-rational-numbers -open import group-theory.groups +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.cartesian-product-types -open import foundation.dependent-pair-types open import foundation.conjunction +open import foundation.dependent-pair-types open import foundation.empty-types +open import foundation.existential-quantification open import foundation.identity-types open import foundation.propositional-truncations -open import foundation.universe-levels open import foundation.transport-along-identifications -open import foundation.existential-quantification -open import elementary-number-theory.rational-numbers -open import real-numbers.dedekind-real-numbers -open import elementary-number-theory.positive-rational-numbers -open import real-numbers.rational-real-numbers -open import real-numbers.lower-dedekind-real-numbers +open import foundation.universe-levels + +open import group-theory.groups + open import real-numbers.addition-lower-dedekind-real-numbers -open import real-numbers.upper-dedekind-real-numbers open import real-numbers.addition-upper-dedekind-real-numbers open import real-numbers.arithmetically-located-dedekind-cuts -open import real-numbers.negation-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.lower-dedekind-real-numbers open import real-numbers.negation-lower-upper-dedekind-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` ## Idea -The sum of two -[Dedekind real numbers](real-numbers.dedekind-real-numbers.md) is -is a Dedekind real number whose lower cut (upper cut) is the -the +The sum of two [Dedekind real numbers](real-numbers.dedekind-real-numbers.md) is +is a Dedekind real number whose lower cut (upper cut) is the the [Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of their lower (upper) cuts. From ca27b0df2f0143bf08dfc3dad92e1fb225337dcb Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 18 Feb 2025 22:12:26 -0800 Subject: [PATCH 173/227] make pre-commit --- .../addition-real-numbers.lagda.md | 20 ++++++------------- .../inequality-real-numbers.lagda.md | 10 +++++----- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 0dee69d4bb..c38cdaa356 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -21,26 +21,20 @@ open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.empty-types +open import foundation.equivalences open import foundation.existential-quantification -open import foundation.identity-types -open import foundation.propositional-truncations -open import foundation.universe-levels open import foundation.function-types -open import foundation.logical-equivalences open import foundation.functoriality-cartesian-product-types -open import foundation.transport-along-identifications -open import foundation.existential-quantification -open import logic.functoriality-existential-quantification -open import elementary-number-theory.rational-numbers -open import real-numbers.dedekind-real-numbers -open import elementary-number-theory.positive-rational-numbers -open import real-numbers.rational-real-numbers -open import real-numbers.lower-dedekind-real-numbers +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations open import foundation.transport-along-identifications open import foundation.universe-levels open import group-theory.groups +open import logic.functoriality-existential-quantification + open import real-numbers.addition-lower-dedekind-real-numbers open import real-numbers.addition-upper-dedekind-real-numbers open import real-numbers.arithmetically-located-dedekind-cuts @@ -50,7 +44,6 @@ open import real-numbers.negation-lower-upper-dedekind-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import foundation.equivalences open import real-numbers.upper-dedekind-real-numbers ``` @@ -302,7 +295,6 @@ module _ ( y +ℝ neg-ℝ y) ( zero-ℝ) ( right-inverse-law-add-ℝ y)) - ``` ### Addition reflects similarity diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index 682453314a..63ab1837a2 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -12,26 +12,27 @@ open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.binary-transport -open import foundation.functoriality-cartesian-product-types open import foundation.complements-subtypes open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types open import foundation.existential-quantification open import foundation.function-types +open import foundation.functoriality-cartesian-product-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositions open import foundation.subtypes open import foundation.universe-levels +open import logic.functoriality-existential-quantification + open import order-theory.large-posets open import order-theory.large-preorders open import order-theory.posets open import order-theory.preorders -open import logic.functoriality-existential-quantification - +open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-lower-dedekind-real-numbers open import real-numbers.inequality-upper-dedekind-real-numbers @@ -39,9 +40,8 @@ open import real-numbers.lower-dedekind-real-numbers open import real-numbers.negation-lower-upper-dedekind-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.upper-dedekind-real-numbers -open import real-numbers.addition-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` From 7d284272f4afdd065dceb8a70a3042a6ad3a87bd Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 18 Feb 2025 23:13:24 -0800 Subject: [PATCH 174/227] Addition preserves strict inequality on real numbers --- .../strict-inequality-real-numbers.lagda.md | 158 ++++++++++++++++-- 1 file changed, 145 insertions(+), 13 deletions(-) diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index b4cb9f9f2c..40cb17a789 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -9,9 +9,15 @@ module real-numbers.strict-inequality-real-numbers where
Imports ```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.action-on-identifications-functions +open import foundation.binary-transport open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.coproduct-types @@ -33,10 +39,15 @@ open import foundation.universe-levels open import logic.functoriality-existential-quantification +open import group-theory.abelian-groups + +open import real-numbers.arithmetically-located-dedekind-cuts +open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers ```
@@ -342,20 +353,141 @@ module _ ### Strict inequality on the real numbers is cotransitive ```agda -cotransitive-le-ℝ : is-cotransitive-Large-Relation-Prop ℝ le-ℝ-Prop -cotransitive-le-ℝ x y z = - elim-exists - ( le-ℝ-Prop x z ∨ le-ℝ-Prop z y) - ( λ q (x Date: Tue, 18 Feb 2025 23:17:24 -0800 Subject: [PATCH 175/227] Add the iff --- .../strict-inequality-real-numbers.lagda.md | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index 40cb17a789..c1dd16907b 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -37,12 +37,12 @@ open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels -open import logic.functoriality-existential-quantification - open import group-theory.abelian-groups -open import real-numbers.arithmetically-located-dedekind-cuts +open import logic.functoriality-existential-quantification + open import real-numbers.addition-real-numbers +open import real-numbers.arithmetically-located-dedekind-cuts open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.negation-real-numbers @@ -473,21 +473,34 @@ module _ {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) where - reflects-le-right-add-ℝ : le-ℝ (x +ℝ z) (y +ℝ z) → le-ℝ x y - reflects-le-right-add-ℝ x+z Date: Tue, 18 Feb 2025 23:19:55 -0800 Subject: [PATCH 176/227] Fix concept link --- src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 43df39cf93..3016c0d7e5 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -52,7 +52,7 @@ open import real-numbers.upper-dedekind-real-numbers A pair of a [lower Dedekind cut](real-numbers.lower-dedekind-real-numbers.md) `L` and an [upper Dedekind cut](real-numbers.upper-dedekind-real-numbers.md) `U` is -{{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=arithmetically-located-lower-upper-ℝ}} +{{#concept "arithmetically located" Disambiguation="Dedekind cut" Agda=is-arithmetically-located-lower-upper-ℝ}} if for any [positive](elementary-number-theory.positive-rational-numbers.md) [rational number](elementary-number-theory.rational-numbers.md) `ε : ℚ⁺`, there exists `p, q : ℚ` where `p ∈ L` and `q ∈ U`, such that `0 < q - p < ε`. From 1f4bd852ace84d0e940a951f22d460b5f2f81a6d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 18 Feb 2025 23:21:29 -0800 Subject: [PATCH 177/227] Define similarity of real numbers without reference to inequality, and reference it in addition --- .../addition-real-numbers.lagda.md | 93 +++++++++++++++++++ .../similarity-real-numbers.lagda.md | 36 ++++--- 2 files changed, 110 insertions(+), 19 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index a95d2c4a2f..c38cdaa356 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -21,14 +21,20 @@ open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.empty-types +open import foundation.equivalences open import foundation.existential-quantification +open import foundation.function-types +open import foundation.functoriality-cartesian-product-types open import foundation.identity-types +open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.transport-along-identifications open import foundation.universe-levels open import group-theory.groups +open import logic.functoriality-existential-quantification + open import real-numbers.addition-lower-dedekind-real-numbers open import real-numbers.addition-upper-dedekind-real-numbers open import real-numbers.arithmetically-located-dedekind-cuts @@ -244,3 +250,90 @@ left-inverse-law-add-ℝ x = ( commutative-add-ℝ x (neg-ℝ x)) ( right-inverse-law-add-ℝ x) ``` + +### Addition on the real numbers preserves similarity + +```agda +module _ + {l1 l2 l3 : Level} + (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + preserves-sim-right-add-ℝ : sim-ℝ x y → sim-ℝ (x +ℝ z) (y +ℝ z) + pr1 (preserves-sim-right-add-ℝ (lx⊆ly , _)) q = + map-tot-exists (λ (qx , _) → map-product (lx⊆ly qx) id) + pr2 (preserves-sim-right-add-ℝ (_ , ly⊆lx)) q = + map-tot-exists (λ (qy , _) → map-product (ly⊆lx qy) id) + + preserves-sim-left-add-ℝ : sim-ℝ x y → sim-ℝ (z +ℝ x) (z +ℝ y) + preserves-sim-left-add-ℝ x≈y = + binary-tr + ( sim-ℝ) + ( commutative-add-ℝ x z) + ( commutative-add-ℝ y z) + ( preserves-sim-right-add-ℝ x≈y) +``` + +### Addition and subtraction on the right cancel out + +DO NOT SUBMIT: I don't know what to call this, because the usual notions of +equivalences, retractions, etc. don't work for similarity. + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + cancel-right-add-ℝ : sim-ℝ ((x +ℝ y) +ℝ neg-ℝ y) x + cancel-right-add-ℝ = + binary-tr + ( sim-ℝ) + ( inv (associative-add-ℝ x y (neg-ℝ y))) + ( right-unit-law-add-ℝ x) + ( preserves-sim-left-add-ℝ + ( x) + ( y +ℝ neg-ℝ y) + ( zero-ℝ) + ( right-inverse-law-add-ℝ y)) +``` + +### Addition reflects similarity + +```agda +module _ + {l1 l2 l3 : Level} + (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + reflects-sim-right-add-ℝ : sim-ℝ (x +ℝ z) (y +ℝ z) → sim-ℝ x y + reflects-sim-right-add-ℝ x+z≈y+z = + transitive-sim-ℝ + ( x) + ( (x +ℝ z) +ℝ neg-ℝ z) + ( y) + ( transitive-sim-ℝ + ( (x +ℝ z) +ℝ neg-ℝ z) + ( (y +ℝ z) +ℝ neg-ℝ z) + ( y) + ( cancel-right-add-ℝ y z) + ( preserves-sim-right-add-ℝ (neg-ℝ z) (x +ℝ z) (y +ℝ z) x+z≈y+z)) + ( symmetric-sim-ℝ ((x +ℝ z) +ℝ neg-ℝ z) x (cancel-right-add-ℝ x z)) + + reflects-sim-left-add-ℝ : sim-ℝ (z +ℝ x) (z +ℝ y) → sim-ℝ x y + reflects-sim-left-add-ℝ z+x≈z+y = + reflects-sim-right-add-ℝ + ( binary-tr sim-ℝ (commutative-add-ℝ z x) (commutative-add-ℝ z y) z+x≈z+y) + +module _ + {l1 l2 l3 : Level} + (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + iff-translate-right-sim-ℝ : sim-ℝ x y ↔ sim-ℝ (x +ℝ z) (y +ℝ z) + pr1 iff-translate-right-sim-ℝ = preserves-sim-right-add-ℝ z x y + pr2 iff-translate-right-sim-ℝ = reflects-sim-right-add-ℝ z x y + + iff-translate-left-sim-ℝ : sim-ℝ x y ↔ sim-ℝ (z +ℝ x) (z +ℝ y) + pr1 iff-translate-left-sim-ℝ = preserves-sim-left-add-ℝ z x y + pr2 iff-translate-left-sim-ℝ = reflects-sim-left-add-ℝ z x y +``` diff --git a/src/real-numbers/similarity-real-numbers.lagda.md b/src/real-numbers/similarity-real-numbers.lagda.md index 7284ce1cf1..8051a73b92 100644 --- a/src/real-numbers/similarity-real-numbers.lagda.md +++ b/src/real-numbers/similarity-real-numbers.lagda.md @@ -24,7 +24,6 @@ open import order-theory.large-posets open import order-theory.similarity-of-elements-large-posets open import real-numbers.dedekind-real-numbers -open import real-numbers.inequality-real-numbers open import real-numbers.rational-real-numbers ``` @@ -43,7 +42,7 @@ differing universe levels. ```agda sim-prop-ℝ : {l1 l2 : Level} → ℝ l1 → ℝ l2 → Prop (l1 ⊔ l2) -sim-prop-ℝ = sim-prop-Large-Poset ℝ-Large-Poset +sim-prop-ℝ x y = sim-prop-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) sim-ℝ : {l1 l2 : Level} → ℝ l1 → ℝ l2 → UU (l1 ⊔ l2) sim-ℝ x y = type-Prop (sim-prop-ℝ x y) @@ -72,21 +71,23 @@ module _ sim-upper-cut-iff-sim-ℝ : sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) ↔ sim-ℝ x y - pr1 (pr1 sim-upper-cut-iff-sim-ℝ (ux⊆uy , uy⊆ux)) = - backward-implication (leq-iff-ℝ' x y) uy⊆ux - pr2 (pr1 sim-upper-cut-iff-sim-ℝ (ux⊆uy , uy⊆ux)) = - backward-implication (leq-iff-ℝ' y x) ux⊆uy - pr1 (pr2 sim-upper-cut-iff-sim-ℝ (lx⊆ly , ly⊆lx)) = - forward-implication (leq-iff-ℝ' y x) ly⊆lx - pr2 (pr2 sim-upper-cut-iff-sim-ℝ (lx⊆ly , ly⊆lx)) = - forward-implication (leq-iff-ℝ' x y) lx⊆ly + pr1 sim-upper-cut-iff-sim-ℝ = sim-lower-cut-sim-upper-cut-ℝ x y + pr2 sim-upper-cut-iff-sim-ℝ = sim-upper-cut-sim-lower-cut-ℝ x y ``` ### Reflexivity ```agda refl-sim-ℝ : {l : Level} → (x : ℝ l) → sim-ℝ x x -refl-sim-ℝ = refl-sim-Large-Poset ℝ-Large-Poset +refl-sim-ℝ x = refl-sim-subtype (lower-cut-ℝ x) +``` + +### Symmetry + +```agda +symmetric-sim-ℝ : + {l1 l2 : Level} → (x : ℝ l1) (y : ℝ l2) → sim-ℝ x y → sim-ℝ y x +symmetric-sim-ℝ x y = symmetric-sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) ``` ### Transitivity @@ -94,20 +95,17 @@ refl-sim-ℝ = refl-sim-Large-Poset ℝ-Large-Poset ```agda transitive-sim-ℝ : {l1 l2 l3 : Level} → - (x : ℝ l1) → - (y : ℝ l2) → - (z : ℝ l3) → - sim-ℝ y z → - sim-ℝ x y → - sim-ℝ x z -transitive-sim-ℝ = transitive-sim-Large-Poset ℝ-Large-Poset + (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → + sim-ℝ y z → sim-ℝ x y → sim-ℝ x z +transitive-sim-ℝ x y z = + transitive-sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) (lower-cut-ℝ z) ``` ### Similar real numbers in the same universe are equal ```agda eq-sim-ℝ : {l : Level} → (x y : ℝ l) → sim-ℝ x y → x = y -eq-sim-ℝ = eq-sim-Large-Poset ℝ-Large-Poset +eq-sim-ℝ x y H = eq-eq-lower-cut-ℝ x y (antisymmetric-sim-subtype _ _ H) ``` ### A rational real is similar to the canonical projection of its rational From 368ac61a2087946d6fad371637fa9ee541f362ee Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 18 Feb 2025 23:39:21 -0800 Subject: [PATCH 178/227] Line length --- src/real-numbers/strict-inequality-real-numbers.lagda.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index c1dd16907b..83c187447e 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -488,7 +488,11 @@ module _ reflects-le-left-add-ℝ : le-ℝ (z +ℝ x) (z +ℝ y) → le-ℝ x y reflects-le-left-add-ℝ z+x Date: Tue, 18 Feb 2025 23:43:45 -0800 Subject: [PATCH 179/227] Fix indentation --- src/real-numbers/addition-real-numbers.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index c38cdaa356..1faf14ab92 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -86,8 +86,8 @@ module _ { qx} { py} { qy} - (le-lower-upper-cut-ℝ x px qx px Date: Wed, 19 Feb 2025 21:51:28 -0800 Subject: [PATCH 180/227] Addition respects rationals --- .../addition-real-numbers.lagda.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 1faf14ab92..df32701ca9 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -337,3 +337,34 @@ module _ pr1 iff-translate-left-sim-ℝ = preserves-sim-left-add-ℝ z x y pr2 iff-translate-left-sim-ℝ = reflects-sim-left-add-ℝ z x y ``` + +### The inclusion of rational numbers preserves addition + +```agda +add-real-ℚ : (p q : ℚ) → real-ℚ p +ℝ real-ℚ q = real-ℚ (p +ℚ q) +add-real-ℚ p q = + eq-sim-ℝ + ( real-ℚ p +ℝ real-ℚ q) + ( real-ℚ (p +ℚ q)) + ( sim-rational-ℝ + ( real-ℚ p +ℝ real-ℚ q , + p +ℚ q , + elim-exists + ( empty-Prop) + ( λ (pl , ql) (pl

Date: Wed, 19 Feb 2025 21:54:02 -0800 Subject: [PATCH 181/227] Mark abstract --- .../addition-real-numbers.lagda.md | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index df32701ca9..82af66d7ce 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -341,30 +341,31 @@ module _ ### The inclusion of rational numbers preserves addition ```agda -add-real-ℚ : (p q : ℚ) → real-ℚ p +ℝ real-ℚ q = real-ℚ (p +ℚ q) -add-real-ℚ p q = - eq-sim-ℝ - ( real-ℚ p +ℝ real-ℚ q) - ( real-ℚ (p +ℚ q)) - ( sim-rational-ℝ - ( real-ℚ p +ℝ real-ℚ q , - p +ℚ q , - elim-exists - ( empty-Prop) - ( λ (pl , ql) (pl

Date: Thu, 20 Feb 2025 17:41:06 -0800 Subject: [PATCH 182/227] Merge relevant changes from Cauchy branch --- .../addition-real-numbers.lagda.md | 151 ++++++++-- .../difference-real-numbers.lagda.md | 53 ++++ .../inequality-real-numbers.lagda.md | 53 +++- .../negation-real-numbers.lagda.md | 8 + .../rational-real-numbers.lagda.md | 23 ++ .../similarity-real-numbers.lagda.md | 26 +- .../strict-inequality-real-numbers.lagda.md | 270 +++++++++++------- 7 files changed, 441 insertions(+), 143 deletions(-) create mode 100644 src/real-numbers/difference-real-numbers.lagda.md diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 82af66d7ce..4b60f6efa8 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -274,27 +274,55 @@ module _ ( preserves-sim-right-add-ℝ x≈y) ``` -### Addition and subtraction on the right cancel out - -DO NOT SUBMIT: I don't know what to call this, because the usual notions of -equivalences, retractions, etc. don't work for similarity. +### Swapping laws for addition on real numbers ```agda +module _ + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) + where + + abstract + right-swap-add-ℝ : + (x +ℝ y) +ℝ z = (x +ℝ z) +ℝ y + right-swap-add-ℝ = + equational-reasoning + (x +ℝ y) +ℝ z + = x +ℝ (y +ℝ z) by associative-add-ℝ x y z + = x +ℝ (z +ℝ y) by ap (x +ℝ_) (commutative-add-ℝ y z) + = (x +ℝ z) +ℝ y by inv (associative-add-ℝ x z y) + left-swap-add-ℝ : + x +ℝ (y +ℝ z) = y +ℝ (x +ℝ z) + left-swap-add-ℝ = + equational-reasoning + x +ℝ (y +ℝ z) + = (x +ℝ y) +ℝ z by inv (associative-add-ℝ x y z) + = (y +ℝ x) +ℝ z by ap (_+ℝ z) (commutative-add-ℝ x y) + = y +ℝ (x +ℝ z) by associative-add-ℝ y x z + module _ {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) where - cancel-right-add-ℝ : sim-ℝ ((x +ℝ y) +ℝ neg-ℝ y) x - cancel-right-add-ℝ = - binary-tr - ( sim-ℝ) - ( inv (associative-add-ℝ x y (neg-ℝ y))) - ( right-unit-law-add-ℝ x) - ( preserves-sim-left-add-ℝ - ( x) - ( y +ℝ neg-ℝ y) - ( zero-ℝ) - ( right-inverse-law-add-ℝ y)) + abstract + cancel-right-diff-add-ℝ : sim-ℝ ((x +ℝ y) +ℝ neg-ℝ y) x + cancel-right-diff-add-ℝ = + binary-tr + ( sim-ℝ) + ( inv (associative-add-ℝ x y (neg-ℝ y))) + ( right-unit-law-add-ℝ x) + ( preserves-sim-left-add-ℝ + ( x) + ( y +ℝ neg-ℝ y) + ( zero-ℝ) + ( right-inverse-law-add-ℝ y)) + + cancel-right-add-diff-ℝ : sim-ℝ ((x +ℝ neg-ℝ y) +ℝ y) x + cancel-right-add-diff-ℝ = + tr + ( λ z → sim-ℝ z x) + ( right-swap-add-ℝ x y (neg-ℝ y)) + ( cancel-right-diff-add-ℝ) + ``` ### Addition reflects similarity @@ -315,9 +343,9 @@ module _ ( (x +ℝ z) +ℝ neg-ℝ z) ( (y +ℝ z) +ℝ neg-ℝ z) ( y) - ( cancel-right-add-ℝ y z) + ( cancel-right-diff-add-ℝ y z) ( preserves-sim-right-add-ℝ (neg-ℝ z) (x +ℝ z) (y +ℝ z) x+z≈y+z)) - ( symmetric-sim-ℝ ((x +ℝ z) +ℝ neg-ℝ z) x (cancel-right-add-ℝ x z)) + ( symmetric-sim-ℝ ((x +ℝ z) +ℝ neg-ℝ z) x (cancel-right-diff-add-ℝ x z)) reflects-sim-left-add-ℝ : sim-ℝ (z +ℝ x) (z +ℝ y) → sim-ℝ x y reflects-sim-left-add-ℝ z+x≈z+y = @@ -368,4 +396,93 @@ abstract ( le-ℚ (p +ℚ q)) ( p+q=pu+qu) ( preserves-le-add-ℚ {p} {pu} {q} {qu} p

Imports + +```agda +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.difference-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.universe-levels + +open import real-numbers.addition-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers +``` + + + +## Idea + +The {{#concept "difference" Disambiguation="real numbers" Agda=diff-ℝ}} of two +[real numbers](real-numbers.dedekind-real-numbers.md) `x` and `y` is the sum of +`x` and the [negation](real-numbers.negation-real-numbers.md) of `y`. + +## Definition + +```agda +diff-ℝ : {l1 l2 : Level} → (x : ℝ l1) → (y : ℝ l2) → ℝ (l1 ⊔ l2) +diff-ℝ x y = add-ℝ x (neg-ℝ y) + +infixl 36 _-ℝ_ +_-ℝ_ = diff-ℝ +``` + +## Properties + +### The inclusion of rational numbers preserves differences + +```agda +abstract + diff-real-ℚ : (p q : ℚ) → real-ℚ p -ℝ real-ℚ q = real-ℚ (p -ℚ q) + diff-real-ℚ p q = ap (real-ℚ p +ℝ_) (neg-real-ℚ q) ∙ add-real-ℚ p (neg-ℚ q) +``` diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index 63ab1837a2..d2a056bf10 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -22,6 +22,8 @@ open import foundation.functoriality-cartesian-product-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositions +open import foundation.action-on-identifications-functions +open import foundation.transport-along-identifications open import foundation.subtypes open import foundation.universe-levels @@ -42,6 +44,7 @@ open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.upper-dedekind-real-numbers +open import real-numbers.difference-real-numbers ``` @@ -253,8 +256,8 @@ module _ ( x) ( (y +ℝ z) +ℝ neg-ℝ z) ( y) - ( cancel-right-add-ℝ x z) - ( cancel-right-add-ℝ y z) + ( cancel-right-diff-add-ℝ x z) + ( cancel-right-diff-add-ℝ y z) ( preserves-leq-right-add-ℝ (neg-ℝ z) (x +ℝ z) (y +ℝ z) x+z≤y+z) reflects-leq-left-add-ℝ : leq-ℝ (z +ℝ x) (z +ℝ y) → leq-ℝ x y @@ -276,6 +279,52 @@ module _ pr2 iff-leq-left-add-ℝ = reflects-leq-left-add-ℝ z x y ``` +### Negation reverses the ordering of inequality on real numbers + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + neg-leq-ℝ : leq-ℝ x y → leq-ℝ (neg-ℝ y) (neg-ℝ x) + neg-leq-ℝ x≤y p = forward-implication (leq-iff-ℝ' x y) x≤y (neg-ℚ p) +``` + +### `x + y ≤ z` if and only if `x ≤ y - z` + +```agda +module _ + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) + where + + iff-diff-right-leq-ℝ : leq-ℝ (x +ℝ y) z ↔ leq-ℝ x (z -ℝ y) + pr1 iff-diff-right-leq-ℝ x+y @@ -119,4 +120,11 @@ neg-Rational-ℝ (x , q , q≮x , x≮q) = neg-ℚ q , x≮q ∘ tr (is-in-upper-cut-ℝ x) (neg-neg-ℚ q) , q≮x ∘ tr (is-in-lower-cut-ℝ x) (neg-neg-ℚ q) + +neg-real-ℚ : (q : ℚ) → neg-ℝ (real-ℚ q) = real-ℚ (neg-ℚ q) +neg-real-ℚ q = + eq-sim-ℝ + ( neg-ℝ (real-ℚ q)) + ( real-ℚ (neg-ℚ q)) + ( sim-rational-ℝ (neg-Rational-ℝ (rational-real-ℚ q))) ``` diff --git a/src/real-numbers/rational-real-numbers.lagda.md b/src/real-numbers/rational-real-numbers.lagda.md index 5eccd0b642..6723c1d5f4 100644 --- a/src/real-numbers/rational-real-numbers.lagda.md +++ b/src/real-numbers/rational-real-numbers.lagda.md @@ -40,6 +40,7 @@ open import real-numbers.lower-dedekind-real-numbers open import real-numbers.rational-lower-dedekind-real-numbers open import real-numbers.rational-upper-dedekind-real-numbers open import real-numbers.upper-dedekind-real-numbers +open import real-numbers.similarity-real-numbers ``` @@ -231,3 +232,25 @@ pr2 equiv-rational-real = retraction-rational-rational-ℝ = (rational-real-ℚ , is-retraction-rational-real-ℚ) ``` + +### A rational real is similar to the canonical projection of its rational + +```agda +sim-rational-ℝ : + {l : Level} → + (x : Rational-ℝ l) → + sim-ℝ (real-rational-ℝ x) (real-ℚ (rational-rational-ℝ x)) +pr1 (sim-rational-ℝ (x , q , q∉lx , q∉ux)) p p∈lx = + trichotomy-le-ℚ + ( p) + ( q) + ( id) + ( λ p=q → ex-falso (q∉lx (tr (is-in-lower-cut-ℝ x) p=q p∈lx))) + ( λ q

@@ -80,6 +79,9 @@ module _ ```agda refl-sim-ℝ : {l : Level} → (x : ℝ l) → sim-ℝ x x refl-sim-ℝ x = refl-sim-subtype (lower-cut-ℝ x) + +sim-eq-ℝ : {l : Level} → {x y : ℝ l} → x = y → sim-ℝ x y +sim-eq-ℝ {_} {x} {y} x=y = tr (sim-ℝ x) x=y (refl-sim-ℝ x) ``` ### Symmetry @@ -107,25 +109,3 @@ transitive-sim-ℝ x y z = eq-sim-ℝ : {l : Level} → (x y : ℝ l) → sim-ℝ x y → x = y eq-sim-ℝ x y H = eq-eq-lower-cut-ℝ x y (antisymmetric-sim-subtype _ _ H) ``` - -### A rational real is similar to the canonical projection of its rational - -```agda -sim-rational-ℝ : - {l : Level} → - (x : Rational-ℝ l) → - sim-ℝ (real-rational-ℝ x) (real-ℚ (rational-rational-ℝ x)) -pr1 (sim-rational-ℝ (x , q , q∉lx , q∉ux)) p p∈lx = - trichotomy-le-ℚ - ( p) - ( q) - ( id) - ( λ p=q → ex-falso (q∉lx (tr (is-in-lower-cut-ℝ x) p=q p∈lx))) - ( λ q

@@ -73,6 +74,28 @@ is-prop-le-ℝ x y = is-prop-type-Prop (le-ℝ-Prop x y) ## Properties +### Strict inequality on the reals implies inequality + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + abstract + leq-le-ℝ : le-ℝ x y → leq-ℝ x y + leq-le-ℝ x Date: Fri, 21 Feb 2025 09:45:11 -0800 Subject: [PATCH 183/227] Truncate documentation. --- .../propositional-truncations.lagda.md | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index 8580a7744a..e447220276 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -490,39 +490,6 @@ do where open do-syntax-trunc-Prop motive ``` -Since Agda's `do` syntax desugars to calls to `>>=`, this is syntactic sugar for - -```text -witness-truncated-prop-P >>= - ( λ p → witness-truncated-prop-Q p >>= - ( λ q → witness-motive-P-Q p q)) -``` - -which, inlining the definition of `>>=`, becomes exactly the chain of -`rec-trunc-Prop` used above. - -To read the `do` syntax, it may help to go through each line: - -1. `do` indicates that we will be using Agda's syntactic sugar for the `>>=` - function defined in the `do-syntax-trunc-Prop` module. -1. You can read the `p ← witness-truncated-prop-P` as an _instruction_ saying, - "Get the value `p` out of the witness of `trunc-Prop P`." We cannot extract - elements out of witnesses of propositionally truncated types, but since we're - eliminating into a proposition, the universal property of the truncation - allows us to lift a map from the untruncated type to a map from its - truncation. -1. `q ← witness-truncated-prop-Q p` says, "Get the value `q` out of the witness - for the truncation `witness-truncated-prop-Q p`" --- noticing that we can - make use of `p : P` in that line. -1. `witness-motive-P-Q p q` must give us a witness of `motive` --- that is, a - value of type `type-Prop motive` --- from `p` and `q`. -1. `where open do-syntax-trunc-Prop motive` is required to allow us to use the - `do` syntax. - -The result of the entire `do` block is the value of type `type-Prop motive`, -which is internally constructed with an appropriate chain of `rec-trunc-Prop` -from the intermediate steps. - ## Table of files about propositional logic The following table gives an overview of basic constructions in propositional From 385f10a66d47273e83aa8b1b70c5296025f8a1ff Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 09:50:20 -0800 Subject: [PATCH 184/227] Cut more docs --- src/foundation/propositional-truncations.lagda.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index c9a07cc910..fc2218f84c 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -448,9 +448,7 @@ module _ ## `do` syntax for propositional truncation { #do-syntax } -[Agda's `do` syntax](https://agda.readthedocs.io/en/latest/language/syntactic-sugar.html#do-notation) -is a handy tool to avoid deeply nesting calls to the same lambda-based function. -For example, consider a case where you are trying to prove a proposition, +Consider a case where you are trying to prove a proposition, `motive : Prop l`, from witnesses of propositional truncations of types `P` and `Q`: @@ -465,11 +463,8 @@ rec-trunc-Prop ( witness-truncated-prop-P) ``` -The tower of indentation, with many layers of indentation in the innermost -derivation, is a little awkward even at two levels, let alone more. In -particular, we have the many duplicated lines of `rec-trunc-Prop motive`, and -the increasing distance between the `rec-trunc-Prop` and the `trunc-Prop` being -recursed on. Agda's `do` syntax offers us an alternative. +We can rewrite this using [Agda's `do` syntax](https://agda.readthedocs.io/en/latest/language/syntactic-sugar.html#do-notation) +with the module ```agda module do-syntax-trunc-Prop {l : Level} (motive : Prop l) where From 63789a3ff20001f3c9ba491dc029f21a984e9c5b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 09:50:56 -0800 Subject: [PATCH 185/227] Cut docs more --- src/foundation/propositional-truncations.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/foundation/propositional-truncations.lagda.md b/src/foundation/propositional-truncations.lagda.md index fc2218f84c..2ae3713137 100644 --- a/src/foundation/propositional-truncations.lagda.md +++ b/src/foundation/propositional-truncations.lagda.md @@ -448,9 +448,8 @@ module _ ## `do` syntax for propositional truncation { #do-syntax } -Consider a case where you are trying to prove a proposition, -`motive : Prop l`, from witnesses of propositional truncations of types `P` and -`Q`: +Consider a case where you are trying to prove a proposition, `motive : Prop l`, +from witnesses of propositional truncations of types `P` and `Q`: ```text rec-trunc-Prop @@ -463,7 +462,8 @@ rec-trunc-Prop ( witness-truncated-prop-P) ``` -We can rewrite this using [Agda's `do` syntax](https://agda.readthedocs.io/en/latest/language/syntactic-sugar.html#do-notation) +We can rewrite this using +[Agda's `do` syntax](https://agda.readthedocs.io/en/latest/language/syntactic-sugar.html#do-notation) with the module ```agda From 539a1ac158a5732e39c89db2904536b9a673edc4 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 10:04:55 -0800 Subject: [PATCH 186/227] Overhaul similarity of real numbers --- src/foundation-core/identity-types.lagda.md | 6 +- .../similarity-real-numbers.lagda.md | 103 +++++++++++------- 2 files changed, 64 insertions(+), 45 deletions(-) diff --git a/src/foundation-core/identity-types.lagda.md b/src/foundation-core/identity-types.lagda.md index b4c54955d7..1a8a144f36 100644 --- a/src/foundation-core/identity-types.lagda.md +++ b/src/foundation-core/identity-types.lagda.md @@ -509,9 +509,9 @@ equational-reasoning = v by eq-3 ``` -The resulting identification of this computaion is `eq-1 ∙ (eq-2 ∙ eq-3)`, i.e., -the identification is associated fully to the right. For examples of the use of -equational reasoning, see +The resulting identification of this computation is `eq-1 ∙ (eq-2 ∙ eq-3)`, +i.e., the identification is associated fully to the right. For examples of the +use of equational reasoning, see [addition-integers](elementary-number-theory.addition-integers.md). ```agda diff --git a/src/real-numbers/similarity-real-numbers.lagda.md b/src/real-numbers/similarity-real-numbers.lagda.md index 7284ce1cf1..c60dc16fd7 100644 --- a/src/real-numbers/similarity-real-numbers.lagda.md +++ b/src/real-numbers/similarity-real-numbers.lagda.md @@ -24,8 +24,6 @@ open import order-theory.large-posets open import order-theory.similarity-of-elements-large-posets open import real-numbers.dedekind-real-numbers -open import real-numbers.inequality-real-numbers -open import real-numbers.rational-real-numbers ``` @@ -43,10 +41,13 @@ differing universe levels. ```agda sim-prop-ℝ : {l1 l2 : Level} → ℝ l1 → ℝ l2 → Prop (l1 ⊔ l2) -sim-prop-ℝ = sim-prop-Large-Poset ℝ-Large-Poset +sim-prop-ℝ x y = sim-prop-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) sim-ℝ : {l1 l2 : Level} → ℝ l1 → ℝ l2 → UU (l1 ⊔ l2) sim-ℝ x y = type-Prop (sim-prop-ℝ x y) + +infix 6 _≈ℝ_ +_≈ℝ_ = sim-ℝ ``` ## Properties @@ -59,7 +60,7 @@ module _ where sim-lower-cut-iff-sim-ℝ : - sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) ↔ sim-ℝ x y + sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) ↔ x ≈ℝ y sim-lower-cut-iff-sim-ℝ = id-iff ``` @@ -71,22 +72,27 @@ module _ where sim-upper-cut-iff-sim-ℝ : - sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) ↔ sim-ℝ x y - pr1 (pr1 sim-upper-cut-iff-sim-ℝ (ux⊆uy , uy⊆ux)) = - backward-implication (leq-iff-ℝ' x y) uy⊆ux - pr2 (pr1 sim-upper-cut-iff-sim-ℝ (ux⊆uy , uy⊆ux)) = - backward-implication (leq-iff-ℝ' y x) ux⊆uy - pr1 (pr2 sim-upper-cut-iff-sim-ℝ (lx⊆ly , ly⊆lx)) = - forward-implication (leq-iff-ℝ' y x) ly⊆lx - pr2 (pr2 sim-upper-cut-iff-sim-ℝ (lx⊆ly , ly⊆lx)) = - forward-implication (leq-iff-ℝ' x y) lx⊆ly + sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) ↔ x ≈ℝ y + pr1 sim-upper-cut-iff-sim-ℝ = sim-lower-cut-sim-upper-cut-ℝ x y + pr2 sim-upper-cut-iff-sim-ℝ = sim-upper-cut-sim-lower-cut-ℝ x y ``` ### Reflexivity ```agda -refl-sim-ℝ : {l : Level} → (x : ℝ l) → sim-ℝ x x -refl-sim-ℝ = refl-sim-Large-Poset ℝ-Large-Poset +refl-sim-ℝ : {l : Level} → (x : ℝ l) → x ≈ℝ x +refl-sim-ℝ x = refl-sim-subtype (lower-cut-ℝ x) + +sim-eq-ℝ : {l : Level} → {x y : ℝ l} → x = y → x ≈ℝ y +sim-eq-ℝ {_} {x} {y} x=y = tr (sim-ℝ x) x=y (refl-sim-ℝ x) +``` + +### Symmetry + +```agda +symmetric-sim-ℝ : + {l1 l2 : Level} → (x : ℝ l1) (y : ℝ l2) → x ≈ℝ y → y ≈ℝ x +symmetric-sim-ℝ x y = symmetric-sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) ``` ### Transitivity @@ -94,40 +100,53 @@ refl-sim-ℝ = refl-sim-Large-Poset ℝ-Large-Poset ```agda transitive-sim-ℝ : {l1 l2 l3 : Level} → - (x : ℝ l1) → - (y : ℝ l2) → - (z : ℝ l3) → - sim-ℝ y z → - sim-ℝ x y → - sim-ℝ x z -transitive-sim-ℝ = transitive-sim-Large-Poset ℝ-Large-Poset + (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → + y ≈ℝ z → x ≈ℝ y → x ≈ℝ z +transitive-sim-ℝ x y z = + transitive-sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) (lower-cut-ℝ z) ``` ### Similar real numbers in the same universe are equal ```agda -eq-sim-ℝ : {l : Level} → (x y : ℝ l) → sim-ℝ x y → x = y -eq-sim-ℝ = eq-sim-Large-Poset ℝ-Large-Poset +eq-sim-ℝ : {l : Level} → (x y : ℝ l) → x ≈ℝ y → x = y +eq-sim-ℝ x y H = eq-eq-lower-cut-ℝ x y (antisymmetric-sim-subtype _ _ H) +``` + +### Similarity reasoning + +Similarities between real numbers can be constructed by similarity reasoning in +the following way: + +```text +similarity-reasoning-ℝ + x ≈ℝ y by sim-1 + ≅ℝ z by eq-2 + ≈ℝ v by sim-3 ``` -### A rational real is similar to the canonical projection of its rational +Note that we can use both similarities (with `≈ℝ`) and equalities (with `≅ℝ`) in +the chain of reasoning. ```agda -sim-rational-ℝ : - {l : Level} → - (x : Rational-ℝ l) → - sim-ℝ (real-rational-ℝ x) (real-ℚ (rational-rational-ℝ x)) -pr1 (sim-rational-ℝ (x , q , q∉lx , q∉ux)) p p∈lx = - trichotomy-le-ℚ - ( p) - ( q) - ( id) - ( λ p=q → ex-falso (q∉lx (tr (is-in-lower-cut-ℝ x) p=q p∈lx))) - ( λ q

Date: Fri, 21 Feb 2025 10:07:16 -0800 Subject: [PATCH 187/227] Progress --- src/foundation/powersets.lagda.md | 14 +++++++ .../dedekind-real-numbers.lagda.md | 42 +++++++++++++------ .../similarity-real-numbers.lagda.md | 8 ++-- 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/foundation/powersets.lagda.md b/src/foundation/powersets.lagda.md index 40d81d0d15..8d49495a95 100644 --- a/src/foundation/powersets.lagda.md +++ b/src/foundation/powersets.lagda.md @@ -217,6 +217,20 @@ module _ refl-sim-subtype = refl-sim-Large-Poset (powerset-Large-Poset A) ``` +#### Similarity is symmetric + +```agda +module _ + {l1 : Level} {A : UU l1} + where + + symmetric-sim-subtype : + {l2 l3 : Level} → + (P : subtype l2 A) (Q : subtype l3 A) → + sim-subtype P Q → sim-subtype Q P + symmetric-sim-subtype = symmetric-sim-Large-Poset (powerset-Large-Poset A) +``` + #### Similarity is transitive ```agda diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 3f83f4b510..6cc3c84b46 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -29,6 +29,7 @@ open import foundation.functoriality-dependent-pair-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.negation +open import foundation.powersets open import foundation.propositional-truncations open import foundation.propositions open import foundation.sets @@ -371,7 +372,7 @@ module _ ```agda module _ - {l : Level} (x y : ℝ l) + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) where subset-lower-cut-upper-cut-ℝ : @@ -392,6 +393,26 @@ module _ ( eq-upper-cut-upper-complement-lower-cut-ℝ x) ( λ q → map-tot-exists (λ p → tot (λ _ K → K ∘ H p))) +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + sim-lower-cut-sim-upper-cut-ℝ : + sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) → + sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) + pr1 (sim-lower-cut-sim-upper-cut-ℝ (_ , uy⊆ux)) = + subset-lower-cut-upper-cut-ℝ x y uy⊆ux + pr2 (sim-lower-cut-sim-upper-cut-ℝ (ux⊆uy , _)) = + subset-lower-cut-upper-cut-ℝ y x ux⊆uy + + sim-upper-cut-sim-lower-cut-ℝ : + sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) → + sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) + pr1 (sim-upper-cut-sim-lower-cut-ℝ (_ , ly⊆lx)) = + subset-upper-cut-lower-cut-ℝ y x ly⊆lx + pr2 (sim-upper-cut-sim-lower-cut-ℝ (lx⊆ly , _)) = + subset-upper-cut-lower-cut-ℝ x y lx⊆ly + module _ {l : Level} (x y : ℝ l) where @@ -399,19 +420,16 @@ module _ eq-lower-cut-eq-upper-cut-ℝ : upper-cut-ℝ x = upper-cut-ℝ y → lower-cut-ℝ x = lower-cut-ℝ y eq-lower-cut-eq-upper-cut-ℝ H = - antisymmetric-leq-subtype + antisymmetric-sim-subtype ( lower-cut-ℝ x) ( lower-cut-ℝ y) - ( subset-lower-cut-upper-cut-ℝ x y - ( pr2 ∘ has-same-elements-eq-subtype - ( upper-cut-ℝ x) - ( upper-cut-ℝ y) - ( H))) - ( subset-lower-cut-upper-cut-ℝ y x - ( pr1 ∘ has-same-elements-eq-subtype - ( upper-cut-ℝ x) - ( upper-cut-ℝ y) - ( H))) + ( sim-lower-cut-sim-upper-cut-ℝ + ( x) + ( y) + ( tr + ( sim-subtype (upper-cut-ℝ x)) + ( H) + ( refl-sim-subtype (upper-cut-ℝ x)))) eq-lower-real-eq-upper-real-ℝ : upper-real-ℝ x = upper-real-ℝ y → lower-real-ℝ x = lower-real-ℝ y diff --git a/src/real-numbers/similarity-real-numbers.lagda.md b/src/real-numbers/similarity-real-numbers.lagda.md index c60dc16fd7..296d10d8d1 100644 --- a/src/real-numbers/similarity-real-numbers.lagda.md +++ b/src/real-numbers/similarity-real-numbers.lagda.md @@ -60,7 +60,7 @@ module _ where sim-lower-cut-iff-sim-ℝ : - sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) ↔ x ≈ℝ y + sim-subtype (lower-cut-ℝ x) (lower-cut-ℝ y) ↔ (x ≈ℝ y) sim-lower-cut-iff-sim-ℝ = id-iff ``` @@ -72,7 +72,7 @@ module _ where sim-upper-cut-iff-sim-ℝ : - sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) ↔ x ≈ℝ y + sim-subtype (upper-cut-ℝ x) (upper-cut-ℝ y) ↔ (x ≈ℝ y) pr1 sim-upper-cut-iff-sim-ℝ = sim-lower-cut-sim-upper-cut-ℝ x y pr2 sim-upper-cut-iff-sim-ℝ = sim-upper-cut-sim-lower-cut-ℝ x y ``` @@ -135,12 +135,12 @@ infixl 0 step-eq-similarity-reasoning-ℝ similarity-reasoning-ℝ_ : {l : Level} → (x : ℝ l) → sim-ℝ x x -similarity-reasoning-ℝ = refl-sim-ℝ +similarity-reasoning-ℝ x = refl-sim-ℝ x step-similarity-reasoning-ℝ : {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → sim-ℝ x y → {l3 : Level} → (u : ℝ l3) → sim-ℝ y u → sim-ℝ x u -step-similarity-reasoning-ℝ {x = x} {y = y} p u q = transitive-sim-ℝ x y u p q +step-similarity-reasoning-ℝ {x = x} {y = y} p u q = transitive-sim-ℝ x y u q p step-eq-similarity-reasoning-ℝ : {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → From 5046f705048279558c9178b7080224b12cc21da2 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 12:59:25 -0800 Subject: [PATCH 188/227] Start defining --- ...s-of-order-preserving-maps-posets.lagda.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md diff --git a/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md b/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md new file mode 100644 index 0000000000..38ad9f844a --- /dev/null +++ b/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md @@ -0,0 +1,30 @@ +# Transposing inequalities in posets along sections of order-preserving maps + +```agda +module order-theory.transposition-inequalities-along-sections-of-order-preserving-maps-posets where +``` + +

Imports + +```agda +open import foundation.universe-levels +open import foundation.sections +open import foundation.identity-types + +open import order-theory.posets +open import order-theory.order-preserving-maps-posets +``` + +## Idea + +Given a pair of posets `P` and `Q`, consider an +[order preserving map](order-theory.order-preserving-maps-posets.md) +`f : type-Poset P → type-Poset Q` and a map +`g : type-Poset Q → type-Poset P` in the converse direction. +Then there is a family of transposition maps + +```text +x ≤ g y → f x ≤ y +``` + +indexed by `x : type-Poset P` and `y : type-Poset Q`. From d750489a2c509a89d104ec6c0fb1d22f1876f0b9 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 13:06:49 -0800 Subject: [PATCH 189/227] Define the core idea --- ...s-of-order-preserving-maps-posets.lagda.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md b/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md index 38ad9f844a..9baae6b4f9 100644 --- a/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md +++ b/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md @@ -8,6 +8,9 @@ module order-theory.transposition-inequalities-along-sections-of-order-preservin ```agda open import foundation.universe-levels +open import foundation.function-types +open import foundation.homotopies +open import foundation.transport-along-identifications open import foundation.sections open import foundation.identity-types @@ -28,3 +31,22 @@ x ≤ g y → f x ≤ y ``` indexed by `x : type-Poset P` and `y : type-Poset Q`. + +## Definition + +```agda +module _ + {l1 l2 l3 l4 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) + (f : hom-Poset P Q) + (g : type-Poset Q → type-Poset P) + where + + leq-transpose-is-section-hom-Poset : + (map-hom-Poset P Q f ∘ g ~ id) → {x : type-Poset P} {y : type-Poset Q} → + leq-Poset P x (g y) → leq-Poset Q (map-hom-Poset P Q f x) y + leq-transpose-is-section-hom-Poset f-section-g {x} {y} x≤gy = + tr + ( leq-Poset Q (map-hom-Poset P Q f x)) + ( f-section-g y) + ( preserves-order-hom-Poset P Q f x (g y) x≤gy) +``` From 31cf14f1f0aac7c060d16c594b890ec4eaff1c64 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 13:51:26 -0800 Subject: [PATCH 190/227] Transpositions for strict and nonstrict rational inequalities --- .../inequality-rational-numbers.lagda.md | 76 +++++++++++++++++++ ...trict-inequality-rational-numbers.lagda.md | 45 ++++++++++- ...der-preserving-retractions-posets.lagda.md | 52 +++++++++++++ ...s-of-order-preserving-maps-posets.lagda.md | 10 +-- 4 files changed, 177 insertions(+), 6 deletions(-) create mode 100644 src/order-theory/transposition-inequalities-along-order-preserving-retractions-posets.lagda.md diff --git a/src/elementary-number-theory/inequality-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-rational-numbers.lagda.md index 12ddd6f34a..ba2a90124a 100644 --- a/src/elementary-number-theory/inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-rational-numbers.lagda.md @@ -1,6 +1,8 @@ # Inequality on the rational numbers ```agda +{-# OPTIONS --lossy-unification #-} + module elementary-number-theory.inequality-rational-numbers where ``` @@ -8,6 +10,7 @@ module elementary-number-theory.inequality-rational-numbers where ```agda open import elementary-number-theory.addition-integer-fractions +open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.cross-multiplication-difference-integer-fractions open import elementary-number-theory.difference-integers @@ -39,8 +42,13 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels +open import group-theory.groups + open import order-theory.posets open import order-theory.preorders +open import order-theory.transposition-inequalities-along-sections-of-order-preserving-maps-posets +open import order-theory.transposition-inequalities-along-order-preserving-retractions-posets +open import order-theory.order-preserving-maps-posets ```
@@ -322,6 +330,14 @@ module _ reflects-leq-right-add-ℚ : leq-ℚ (z +ℚ x) (z +ℚ y) → leq-ℚ x y reflects-leq-right-add-ℚ = forward-implication iff-translate-left-leq-ℚ + +right-add-hom-leq-ℚ : (z : ℚ) → hom-Poset ℚ-Poset ℚ-Poset +pr1 (right-add-hom-leq-ℚ z) x = x +ℚ z +pr2 (right-add-hom-leq-ℚ z) = preserves-leq-left-add-ℚ z + +left-add-hom-leq-ℚ : (z : ℚ) → hom-Poset ℚ-Poset ℚ-Poset +pr1 (left-add-hom-leq-ℚ z) x = z +ℚ x +pr2 (left-add-hom-leq-ℚ z) = preserves-leq-right-add-ℚ z ``` ### Addition on the rational numbers preserves inequality @@ -338,6 +354,66 @@ preserves-leq-add-ℚ {a} {b} {c} {d} H K = ( preserves-leq-left-add-ℚ c a b H) ``` +### Transposing additions on inequalities of rational numbers + +```agda +leq-transpose-right-diff-ℚ : (x y z : ℚ) → x ≤-ℚ (y -ℚ z) → x +ℚ z ≤-ℚ y +leq-transpose-right-diff-ℚ x y z x≤y-z = + leq-transpose-is-section-hom-Poset + ( ℚ-Poset) + ( ℚ-Poset) + ( right-add-hom-leq-ℚ z) + ( _-ℚ z) + ( is-section-right-div-Group group-add-ℚ z) + ( x) + ( y) + ( x≤y-z) + +leq-transpose-right-add-ℚ : (x y z : ℚ) → x ≤-ℚ y +ℚ z → x -ℚ z ≤-ℚ y +leq-transpose-right-add-ℚ x y z x≤y+z = + leq-transpose-is-section-hom-Poset + ( ℚ-Poset) + ( ℚ-Poset) + ( right-add-hom-leq-ℚ (neg-ℚ z)) + ( _+ℚ z) + ( is-retraction-right-div-Group group-add-ℚ z) + ( x) + ( y) + ( x≤y+z) + +leq-transpose-left-add-ℚ : (x y z : ℚ) → x +ℚ y ≤-ℚ z → x ≤-ℚ z -ℚ y +leq-transpose-left-add-ℚ x y z x+y≤z = + leq-transpose-is-retraction-hom-Poset + ( ℚ-Poset) + ( ℚ-Poset) + ( _+ℚ y) + ( right-add-hom-leq-ℚ (neg-ℚ y)) + ( is-retraction-right-div-Group group-add-ℚ y) + ( x) + ( z) + ( x+y≤z) + +leq-transpose-left-diff-ℚ : (x y z : ℚ) → x -ℚ y ≤-ℚ z → x ≤-ℚ z +ℚ y +leq-transpose-left-diff-ℚ x y z x-y≤z = + leq-transpose-is-retraction-hom-Poset + ( ℚ-Poset) + ( ℚ-Poset) + ( _-ℚ y) + ( right-add-hom-leq-ℚ y) + ( is-section-right-div-Group group-add-ℚ y) + ( x) + ( z) + ( x-y≤z) + +leq-iff-transpose-left-add-ℚ : (x y z : ℚ) → x +ℚ y ≤-ℚ z ↔ x ≤-ℚ z -ℚ y +pr1 (leq-iff-transpose-left-add-ℚ x y z) = leq-transpose-left-add-ℚ x y z +pr2 (leq-iff-transpose-left-add-ℚ x y z) = leq-transpose-right-diff-ℚ x z y + +leq-iff-transpose-left-diff-ℚ : (x y z : ℚ) → x -ℚ y ≤-ℚ z ↔ x ≤-ℚ z +ℚ y +pr1 (leq-iff-transpose-left-diff-ℚ x y z) = leq-transpose-left-diff-ℚ x y z +pr2 (leq-iff-transpose-left-diff-ℚ x y z) = leq-transpose-right-add-ℚ x z y +``` + ## See also - The decidable total order on the rational numbers is defined in diff --git a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md index 99d4619055..316bfb3622 100644 --- a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md @@ -1,6 +1,8 @@ # Strict inequality on the rational numbers ```agda +{-# OPTIONS --lossy-unification #-} + module elementary-number-theory.strict-inequality-rational-numbers where ``` @@ -9,6 +11,7 @@ module elementary-number-theory.strict-inequality-rational-numbers where ```agda open import elementary-number-theory.addition-integer-fractions open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.cross-multiplication-difference-integer-fractions open import elementary-number-theory.difference-integers open import elementary-number-theory.difference-rational-numbers @@ -27,7 +30,7 @@ open import elementary-number-theory.rational-numbers open import elementary-number-theory.reduced-integer-fractions open import elementary-number-theory.strict-inequality-integer-fractions open import elementary-number-theory.strict-inequality-integers - +open import group-theory.groups open import foundation.action-on-identifications-functions open import foundation.binary-relations open import foundation.cartesian-product-types @@ -457,3 +460,43 @@ located-le-ℚ x y z H = neg-le-ℚ : (x y : ℚ) → le-ℚ x y → le-ℚ (neg-ℚ y) (neg-ℚ x) neg-le-ℚ x y = neg-le-fraction-ℤ (fraction-ℚ x) (fraction-ℚ y) ``` + +### Transposing additions on strict inequalities of rational numbers + +```agda +le-transpose-right-diff-ℚ : (x y z : ℚ) → le-ℚ x (y -ℚ z) → le-ℚ (x +ℚ z) y +le-transpose-right-diff-ℚ x y z xImports + +```agda +open import foundation.universe-levels +open import foundation.function-types +open import foundation.homotopies +open import foundation.transport-along-identifications +open import foundation.identity-types + +open import order-theory.posets +open import order-theory.order-preserving-maps-posets +``` + +## Idea + +Given a pair of posets `P` and `Q`, consider a map +`f : type-Poset P → type-Poset Q` and an +[order preserving map](order-theory.order-preserving-maps-posets.md) +`g : type-Poset Q → type-Poset P` in the converse direction, such that `g` is a +[retraction](foundation.retractions.md) of `f`. Then there is a family of +transposition maps + +```text +f x ≤ y → x ≤ g y +``` + +indexed by `x : type-Poset P` and `y : type-Poset Q`. + +## Definition + +```agda +module _ + {l1 l2 l3 l4 : Level} (P : Poset l1 l2) (Q : Poset l3 l4) + (f : type-Poset P → type-Poset Q) + (g : hom-Poset Q P) + where + + leq-transpose-is-retraction-hom-Poset : + (map-hom-Poset Q P g ∘ f ~ id) → (x : type-Poset P) (y : type-Poset Q) → + leq-Poset Q (f x) y → leq-Poset P x (map-hom-Poset Q P g y) + leq-transpose-is-retraction-hom-Poset f-retraction-g x y fx≤y = + tr + ( λ z → leq-Poset P z (map-hom-Poset Q P g y)) + ( f-retraction-g x) + ( preserves-order-hom-Poset Q P g (f x) y fx≤y) +``` diff --git a/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md b/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md index 9baae6b4f9..9ce5a791b6 100644 --- a/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md +++ b/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md @@ -11,7 +11,6 @@ open import foundation.universe-levels open import foundation.function-types open import foundation.homotopies open import foundation.transport-along-identifications -open import foundation.sections open import foundation.identity-types open import order-theory.posets @@ -23,8 +22,9 @@ open import order-theory.order-preserving-maps-posets Given a pair of posets `P` and `Q`, consider an [order preserving map](order-theory.order-preserving-maps-posets.md) `f : type-Poset P → type-Poset Q` and a map -`g : type-Poset Q → type-Poset P` in the converse direction. -Then there is a family of transposition maps +`g : type-Poset Q → type-Poset P` in the converse direction, such that `g` is a +[section](foundation.sections.md) of `f`. Then there is a family of +transposition maps ```text x ≤ g y → f x ≤ y @@ -42,9 +42,9 @@ module _ where leq-transpose-is-section-hom-Poset : - (map-hom-Poset P Q f ∘ g ~ id) → {x : type-Poset P} {y : type-Poset Q} → + (map-hom-Poset P Q f ∘ g ~ id) → (x : type-Poset P) (y : type-Poset Q) → leq-Poset P x (g y) → leq-Poset Q (map-hom-Poset P Q f x) y - leq-transpose-is-section-hom-Poset f-section-g {x} {y} x≤gy = + leq-transpose-is-section-hom-Poset f-section-g x y x≤gy = tr ( leq-Poset Q (map-hom-Poset P Q f x)) ( f-section-g y) From d1fb935084a3fa5c921712def3ba33d7d6378470 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 14:16:57 -0800 Subject: [PATCH 191/227] Restart arithmetic location --- ...thmetically-located-dedekind-cuts.lagda.md | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 82cf6a86a3..2219d31b24 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -16,13 +16,18 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.integers +open import elementary-number-theory.multiplication-rational-numbers open import foundation.binary-transport +open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.disjunction +open import foundation.empty-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.logical-equivalences @@ -118,6 +123,73 @@ module _ ( arithmetically-located (positive-diff-le-ℚ p q p Date: Fri, 21 Feb 2025 14:31:55 -0800 Subject: [PATCH 192/227] Prove real numbers are arithmetically located --- ...thmetically-located-dedekind-cuts.lagda.md | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 2219d31b24..5d43a29272 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -19,6 +19,7 @@ open import elementary-number-theory.strict-inequality-rational-numbers open import elementary-number-theory.natural-numbers open import elementary-number-theory.integers open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.archimedean-property-rational-numbers open import foundation.binary-transport open import foundation.action-on-identifications-functions @@ -33,6 +34,7 @@ open import foundation.identity-types open import foundation.logical-equivalences open import foundation.raising-universe-levels open import foundation.subtypes +open import foundation.propositional-truncations open import foundation.transport-along-identifications open import foundation.universe-levels @@ -187,7 +189,43 @@ module _ arithmetically-located-cuts-ℝ : arithmetically-located-lower-upper-ℝ (lower-real-ℝ x) (upper-real-ℝ x) - arithmetically-located-cuts-ℝ = {! !} + arithmetically-located-cuts-ℝ ε⁺@(ε , _)= + do + ε'⁺@(ε' , pos-ε') , 2ε'<ε ← double-le-ℚ⁺ ε⁺ + p , p Date: Fri, 21 Feb 2025 15:02:17 -0800 Subject: [PATCH 193/227] Extract from previous drafts --- ...dditive-group-of-rational-numbers.lagda.md | 7 +- ...ition-lower-dedekind-real-numbers.lagda.md | 243 ++++++++++++++++++ ...ition-upper-dedekind-real-numbers.lagda.md | 227 ++++++++++++++++ .../dedekind-real-numbers.lagda.md | 42 ++- 4 files changed, 506 insertions(+), 13 deletions(-) create mode 100644 src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md create mode 100644 src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md diff --git a/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md index 60aeaf1fb9..e0e8513c49 100644 --- a/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md @@ -17,6 +17,7 @@ open import foundation.unital-binary-operations open import foundation.universe-levels open import group-theory.abelian-groups +open import group-theory.commutative-monoids open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups @@ -60,9 +61,13 @@ pr2 (pr2 (pr2 (pr2 group-add-ℚ))) = right-inverse-law-add-ℚ ## Properties -### Tha additive group of rational numbers is commutative +### The additive group of rational numbers is commutative ```agda +commutative-monoid-add-ℚ : Commutative-Monoid lzero +pr1 commutative-monoid-add-ℚ = monoid-add-ℚ +pr2 commutative-monoid-add-ℚ = commutative-add-ℚ + abelian-group-add-ℚ : Ab lzero pr1 abelian-group-add-ℚ = group-add-ℚ pr2 abelian-group-add-ℚ = commutative-add-ℚ diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md new file mode 100644 index 0000000000..652c87812c --- /dev/null +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -0,0 +1,243 @@ +# Addition of lower Dedekind real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.addition-lower-dedekind-real-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-transport +open import foundation.cartesian-product-types +open import foundation.conjunction +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.abelian-groups +open import group-theory.groups +open import group-theory.minkowski-multiplication-commutative-monoids + +open import logic.functoriality-existential-quantification + +open import real-numbers.lower-dedekind-real-numbers +open import real-numbers.rational-lower-dedekind-real-numbers +``` + +
+ +## Idea + +The sum of two +[lower Dedekind real numbers](real-numbers.lower-dedekind-real-numbers.md) is +the +[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of +their cuts. + +```agda +module _ + {l1 l2 : Level} + (x : lower-ℝ l1) + (y : lower-ℝ l2) + where + + cut-add-lower-ℝ : subtype (l1 ⊔ l2) ℚ + cut-add-lower-ℝ = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( cut-lower-ℝ x) + ( cut-lower-ℝ y) + + is-in-cut-add-lower-ℝ : ℚ → UU (l1 ⊔ l2) + is-in-cut-add-lower-ℝ = is-in-subtype cut-add-lower-ℝ + + is-inhabited-cut-add-lower-ℝ : exists ℚ cut-add-lower-ℝ + is-inhabited-cut-add-lower-ℝ = + minkowski-mul-inhabited-is-inhabited-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( cut-lower-ℝ x) + ( cut-lower-ℝ y) + ( is-inhabited-cut-lower-ℝ x) + ( is-inhabited-cut-lower-ℝ y) + + abstract + is-rounded-cut-add-lower-ℝ : + (q : ℚ) → + is-in-cut-add-lower-ℝ q ↔ + exists ℚ (λ r → le-ℚ-Prop q r ∧ cut-add-lower-ℝ r) + pr1 (is-rounded-cut-add-lower-ℝ q) qImports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-transport +open import foundation.cartesian-product-types +open import foundation.conjunction +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.abelian-groups +open import group-theory.groups +open import group-theory.minkowski-multiplication-commutative-monoids + +open import real-numbers.rational-upper-dedekind-real-numbers +open import real-numbers.upper-dedekind-real-numbers +``` + + + +## Idea + +The sum of two +[upper Dedekind real numbers](real-numbers.upper-dedekind-real-numbers.md) is +the +[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of +their cuts. + +```agda +module _ + {l1 l2 : Level} + (x : upper-ℝ l1) + (y : upper-ℝ l2) + where + + cut-add-upper-ℝ : subtype (l1 ⊔ l2) ℚ + cut-add-upper-ℝ = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( cut-upper-ℝ x) + ( cut-upper-ℝ y) + + is-in-cut-add-upper-ℝ : ℚ → UU (l1 ⊔ l2) + is-in-cut-add-upper-ℝ = is-in-subtype cut-add-upper-ℝ + + is-inhabited-cut-add-upper-ℝ : exists ℚ cut-add-upper-ℝ + is-inhabited-cut-add-upper-ℝ = + minkowski-mul-inhabited-is-inhabited-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( cut-upper-ℝ x) + ( cut-upper-ℝ y) + ( is-inhabited-cut-upper-ℝ x) + ( is-inhabited-cut-upper-ℝ y) + + abstract + is-rounded-cut-add-upper-ℝ : + (q : ℚ) → + is-in-cut-add-upper-ℝ q ↔ + exists ℚ (λ p → le-ℚ-Prop p q ∧ cut-add-upper-ℝ p) + pr1 (is-rounded-cut-add-upper-ℝ q) q Date: Fri, 21 Feb 2025 15:14:33 -0800 Subject: [PATCH 194/227] Merge other changes --- .../lower-dedekind-real-numbers.lagda.md | 17 +++++++++++++++++ .../upper-dedekind-real-numbers.lagda.md | 19 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index 3d3bfcb9e7..aed0348cb0 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -1,13 +1,17 @@ # Lower Dedekind real numbers ```agda +{-# OPTIONS --lossy-unification #-} + module real-numbers.lower-dedekind-real-numbers where ```
Imports ```agda +open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -122,6 +126,19 @@ module _ ( intro-exists q (pImports ```agda +open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -122,6 +124,23 @@ module _ ( intro-exists p (p Date: Fri, 21 Feb 2025 15:22:46 -0800 Subject: [PATCH 195/227] Identities for rational math derived from group properties --- ...dditive-group-of-rational-numbers.lagda.md | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md index 60aeaf1fb9..62a262f0e4 100644 --- a/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/additive-group-of-rational-numbers.lagda.md @@ -10,9 +10,11 @@ module elementary-number-theory.additive-group-of-rational-numbers where ```agda open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.rational-numbers open import foundation.dependent-pair-types +open import foundation.identity-types open import foundation.unital-binary-operations open import foundation.universe-levels @@ -60,10 +62,29 @@ pr2 (pr2 (pr2 (pr2 group-add-ℚ))) = right-inverse-law-add-ℚ ## Properties -### Tha additive group of rational numbers is commutative +### The additive group of rational numbers is commutative ```agda abelian-group-add-ℚ : Ab lzero pr1 abelian-group-add-ℚ = group-add-ℚ pr2 abelian-group-add-ℚ = commutative-add-ℚ ``` + +### Identities for addition on the rational numbers from group properties + +```agda +abstract + is-identity-right-conjugation-add-ℚ : (p q : ℚ) → p +ℚ (q -ℚ p) = q + is-identity-right-conjugation-add-ℚ = + is-identity-right-conjugation-Ab abelian-group-add-ℚ + + is-identity-left-conjugation-add-ℚ : (p q : ℚ) → (p +ℚ q) -ℚ p = q + is-identity-left-conjugation-add-ℚ = + is-identity-left-conjugation-Ab abelian-group-add-ℚ + + is-section-diff-ℚ : (p q : ℚ) → (q -ℚ p) +ℚ p = q + is-section-diff-ℚ = is-section-right-div-Group group-add-ℚ + + is-retraction-diff-ℚ : (p q : ℚ) → (q +ℚ p) -ℚ p = q + is-retraction-diff-ℚ = is-retraction-right-div-Group group-add-ℚ +``` From f124c2f45df319359165fb202d90d213de1c2933 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 15:25:23 -0800 Subject: [PATCH 196/227] Use rational identities --- .../inequality-rational-numbers.lagda.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/elementary-number-theory/inequality-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-rational-numbers.lagda.md index ba2a90124a..447a3bf610 100644 --- a/src/elementary-number-theory/inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-rational-numbers.lagda.md @@ -42,8 +42,6 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels -open import group-theory.groups - open import order-theory.posets open import order-theory.preorders open import order-theory.transposition-inequalities-along-sections-of-order-preserving-maps-posets @@ -364,7 +362,7 @@ leq-transpose-right-diff-ℚ x y z x≤y-z = ( ℚ-Poset) ( right-add-hom-leq-ℚ z) ( _-ℚ z) - ( is-section-right-div-Group group-add-ℚ z) + ( is-section-diff-ℚ z) ( x) ( y) ( x≤y-z) @@ -376,7 +374,7 @@ leq-transpose-right-add-ℚ x y z x≤y+z = ( ℚ-Poset) ( right-add-hom-leq-ℚ (neg-ℚ z)) ( _+ℚ z) - ( is-retraction-right-div-Group group-add-ℚ z) + ( is-retraction-diff-ℚ z) ( x) ( y) ( x≤y+z) @@ -388,7 +386,7 @@ leq-transpose-left-add-ℚ x y z x+y≤z = ( ℚ-Poset) ( _+ℚ y) ( right-add-hom-leq-ℚ (neg-ℚ y)) - ( is-retraction-right-div-Group group-add-ℚ y) + ( is-retraction-diff-ℚ y) ( x) ( z) ( x+y≤z) @@ -400,7 +398,7 @@ leq-transpose-left-diff-ℚ x y z x-y≤z = ( ℚ-Poset) ( _-ℚ y) ( right-add-hom-leq-ℚ y) - ( is-section-right-div-Group group-add-ℚ y) + ( is-section-diff-ℚ y) ( x) ( z) ( x-y≤z) From a9e21cc939f83d53b8cb63a1851103645c8fd667 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 15:26:26 -0800 Subject: [PATCH 197/227] make pre-commit --- .../inequality-rational-numbers.lagda.md | 6 +++--- .../strict-inequality-rational-numbers.lagda.md | 4 +++- src/order-theory.lagda.md | 2 ++ ...g-order-preserving-retractions-posets.lagda.md | 8 +++++--- ...tions-of-order-preserving-maps-posets.lagda.md | 15 ++++++++------- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/elementary-number-theory/inequality-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-rational-numbers.lagda.md index 447a3bf610..e602ea684a 100644 --- a/src/elementary-number-theory/inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-rational-numbers.lagda.md @@ -10,8 +10,8 @@ module elementary-number-theory.inequality-rational-numbers where ```agda open import elementary-number-theory.addition-integer-fractions -open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.cross-multiplication-difference-integer-fractions open import elementary-number-theory.difference-integers open import elementary-number-theory.difference-rational-numbers @@ -42,11 +42,11 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels +open import order-theory.order-preserving-maps-posets open import order-theory.posets open import order-theory.preorders -open import order-theory.transposition-inequalities-along-sections-of-order-preserving-maps-posets open import order-theory.transposition-inequalities-along-order-preserving-retractions-posets -open import order-theory.order-preserving-maps-posets +open import order-theory.transposition-inequalities-along-sections-of-order-preserving-maps-posets ```
diff --git a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md index 316bfb3622..8f5c5545e7 100644 --- a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md @@ -30,7 +30,7 @@ open import elementary-number-theory.rational-numbers open import elementary-number-theory.reduced-integer-fractions open import elementary-number-theory.strict-inequality-integer-fractions open import elementary-number-theory.strict-inequality-integers -open import group-theory.groups + open import foundation.action-on-identifications-functions open import foundation.binary-relations open import foundation.cartesian-product-types @@ -49,6 +49,8 @@ open import foundation.propositional-truncations open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels + +open import group-theory.groups ``` diff --git a/src/order-theory.lagda.md b/src/order-theory.lagda.md index f285009bbb..398affc925 100644 --- a/src/order-theory.lagda.md +++ b/src/order-theory.lagda.md @@ -129,6 +129,8 @@ open import order-theory.top-elements-preorders public open import order-theory.total-orders public open import order-theory.total-preorders public open import order-theory.transitive-well-founded-relations public +open import order-theory.transposition-inequalities-along-order-preserving-retractions-posets public +open import order-theory.transposition-inequalities-along-sections-of-order-preserving-maps-posets public open import order-theory.upper-bounds-chains-posets public open import order-theory.upper-bounds-large-posets public open import order-theory.upper-bounds-posets public diff --git a/src/order-theory/transposition-inequalities-along-order-preserving-retractions-posets.lagda.md b/src/order-theory/transposition-inequalities-along-order-preserving-retractions-posets.lagda.md index d8924dcf73..92d7450096 100644 --- a/src/order-theory/transposition-inequalities-along-order-preserving-retractions-posets.lagda.md +++ b/src/order-theory/transposition-inequalities-along-order-preserving-retractions-posets.lagda.md @@ -7,16 +7,18 @@ module order-theory.transposition-inequalities-along-order-preserving-retraction
Imports ```agda -open import foundation.universe-levels open import foundation.function-types open import foundation.homotopies -open import foundation.transport-along-identifications open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.universe-levels -open import order-theory.posets open import order-theory.order-preserving-maps-posets +open import order-theory.posets ``` +
+ ## Idea Given a pair of posets `P` and `Q`, consider a map diff --git a/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md b/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md index 9ce5a791b6..facee62fab 100644 --- a/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md +++ b/src/order-theory/transposition-inequalities-along-sections-of-order-preserving-maps-posets.lagda.md @@ -7,24 +7,25 @@ module order-theory.transposition-inequalities-along-sections-of-order-preservin
Imports ```agda -open import foundation.universe-levels open import foundation.function-types open import foundation.homotopies -open import foundation.transport-along-identifications open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.universe-levels -open import order-theory.posets open import order-theory.order-preserving-maps-posets +open import order-theory.posets ``` +
+ ## Idea Given a pair of posets `P` and `Q`, consider an [order preserving map](order-theory.order-preserving-maps-posets.md) -`f : type-Poset P → type-Poset Q` and a map -`g : type-Poset Q → type-Poset P` in the converse direction, such that `g` is a -[section](foundation.sections.md) of `f`. Then there is a family of -transposition maps +`f : type-Poset P → type-Poset Q` and a map `g : type-Poset Q → type-Poset P` in +the converse direction, such that `g` is a [section](foundation.sections.md) of +`f`. Then there is a family of transposition maps ```text x ≤ g y → f x ≤ y From 939f402c15f5d536f74e9a987d56dbfac5dd001d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 21 Feb 2025 15:35:34 -0800 Subject: [PATCH 198/227] Use some identities. --- .../addition-lower-dedekind-real-numbers.lagda.md | 6 +----- .../addition-upper-dedekind-real-numbers.lagda.md | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index 652c87812c..8fd8df351d 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -230,11 +230,7 @@ module _ ( backward-implication ( iff-translate-diff-le-zero-ℚ p q) ( p Date: Fri, 21 Feb 2025 15:36:56 -0800 Subject: [PATCH 199/227] Use another identity --- .../addition-upper-dedekind-real-numbers.lagda.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md index 62d4359e5c..26acf72ba0 100644 --- a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md @@ -133,11 +133,7 @@ module _ ( neg-ℚ ε) ( neg-le-ℚ ε (q -ℚ p) ε Date: Fri, 21 Feb 2025 15:43:33 -0800 Subject: [PATCH 200/227] Rename things --- ...thmetically-located-dedekind-cuts.lagda.md | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 5d43a29272..5bf373be66 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -24,6 +24,7 @@ open import elementary-number-theory.archimedean-property-rational-numbers open import foundation.binary-transport open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types +open import foundation.propositions open import foundation.conjunction open import foundation.coproduct-types open import foundation.dependent-pair-types @@ -70,14 +71,20 @@ module _ {l1 l2 : Level} (x : lower-ℝ l1) (y : upper-ℝ l2) where - arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) - arithmetically-located-lower-upper-ℝ = - (ε⁺ : ℚ⁺) → - exists - ( ℚ × ℚ) - ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ - cut-lower-ℝ x p ∧ - cut-upper-ℝ y q) + arithmetically-located-prop-lower-upper-ℝ : Prop (l1 ⊔ l2) + arithmetically-located-prop-lower-upper-ℝ = + Π-Prop + ( ℚ⁺) + ( λ ε⁺ → + ∃ + ( ℚ × ℚ) + ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ + cut-lower-ℝ x p ∧ + cut-upper-ℝ y q)) + + is-arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) + is-arithmetically-located-lower-upper-ℝ = + type-Prop arithmetically-located-prop-lower-upper-ℝ ``` ## Properties @@ -94,7 +101,7 @@ module _ abstract is-located-is-arithmetically-located-lower-upper-ℝ : - arithmetically-located-lower-upper-ℝ x y → + is-arithmetically-located-lower-upper-ℝ x y → is-located-lower-upper-ℝ x y is-located-is-arithmetically-located-lower-upper-ℝ arithmetically-located p q p Date: Sat, 22 Feb 2025 09:43:52 -0800 Subject: [PATCH 201/227] Progress --- .../addition-real-numbers.lagda.md | 18 ++++++++++----- .../similarity-real-numbers.lagda.md | 23 ++++++------------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 4b60f6efa8..c23445b64b 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -94,10 +94,8 @@ module _ is-arithmetically-located-lower-upper-ℝ lower-real-add-ℝ upper-real-add-ℝ is-arithmetically-located-lower-upper-add-ℝ ε⁺ = do - (px , qx) , qx Date: Sat, 22 Feb 2025 10:38:15 -0800 Subject: [PATCH 202/227] Make opacity work! --- .../addition-real-numbers.lagda.md | 46 +++---- .../rational-real-numbers.lagda.md | 37 +++--- .../similarity-real-numbers.lagda.md | 113 +++++++++++------- 3 files changed, 112 insertions(+), 84 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index c23445b64b..e499e1cabc 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -257,19 +257,22 @@ module _ (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) where - preserves-sim-right-add-ℝ : sim-ℝ x y → sim-ℝ (x +ℝ z) (y +ℝ z) - pr1 (preserves-sim-right-add-ℝ (lx⊆ly , _)) q = - map-tot-exists (λ (qx , _) → map-product (lx⊆ly qx) id) - pr2 (preserves-sim-right-add-ℝ (_ , ly⊆lx)) q = - map-tot-exists (λ (qy , _) → map-product (ly⊆lx qy) id) - - preserves-sim-left-add-ℝ : sim-ℝ x y → sim-ℝ (z +ℝ x) (z +ℝ y) - preserves-sim-left-add-ℝ x≈y = - binary-tr - ( sim-ℝ) - ( commutative-add-ℝ x z) - ( commutative-add-ℝ y z) - ( preserves-sim-right-add-ℝ x≈y) + opaque + unfolding sim-ℝ + + preserves-sim-right-add-ℝ : sim-ℝ x y → sim-ℝ (x +ℝ z) (y +ℝ z) + pr1 (preserves-sim-right-add-ℝ (lx⊆ly , _)) q = + map-tot-exists (λ (qx , _) → map-product (lx⊆ly qx) id) + pr2 (preserves-sim-right-add-ℝ (_ , ly⊆lx)) q = + map-tot-exists (λ (qy , _) → map-product (ly⊆lx qy) id) + + preserves-sim-left-add-ℝ : sim-ℝ x y → sim-ℝ (z +ℝ x) (z +ℝ y) + preserves-sim-left-add-ℝ x≈y = + binary-tr + ( sim-ℝ) + ( commutative-add-ℝ x z) + ( commutative-add-ℝ y z) + ( preserves-sim-right-add-ℝ x≈y) ``` ### Swapping laws for addition on real numbers @@ -336,22 +339,11 @@ module _ reflects-sim-right-add-ℝ x+z≈y+z = similarity-reasoning-ℝ x - ≈ℝ (x +ℝ z) +ℝ neg-ℝ z + ~ℝ (x +ℝ z) +ℝ neg-ℝ z by symmetric-sim-ℝ ((x +ℝ z) +ℝ neg-ℝ z) x (cancel-right-diff-add-ℝ x z) - ≈ℝ (y +ℝ z) +ℝ neg-ℝ z + ~ℝ (y +ℝ z) +ℝ neg-ℝ z by preserves-sim-right-add-ℝ (neg-ℝ z) (x +ℝ z) (y +ℝ z) x+z≈y+z - ≈ℝ y by cancel-right-diff-add-ℝ y z - {- transitive-sim-ℝ - ( x) - ( (x +ℝ z) +ℝ neg-ℝ z) - ( y) - ( transitive-sim-ℝ - ( (x +ℝ z) +ℝ neg-ℝ z) - ( (y +ℝ z) +ℝ neg-ℝ z) - ( y) - ( cancel-right-diff-add-ℝ y z) - ( preserves-sim-right-add-ℝ (neg-ℝ z) (x +ℝ z) (y +ℝ z) x+z≈y+z)) - ( symmetric-sim-ℝ ((x +ℝ z) +ℝ neg-ℝ z) x (cancel-right-diff-add-ℝ x z))-} + ~ℝ y by cancel-right-diff-add-ℝ y z reflects-sim-left-add-ℝ : sim-ℝ (z +ℝ x) (z +ℝ y) → sim-ℝ x y reflects-sim-left-add-ℝ z+x≈z+y = diff --git a/src/real-numbers/rational-real-numbers.lagda.md b/src/real-numbers/rational-real-numbers.lagda.md index 6723c1d5f4..495613c96d 100644 --- a/src/real-numbers/rational-real-numbers.lagda.md +++ b/src/real-numbers/rational-real-numbers.lagda.md @@ -236,21 +236,24 @@ pr2 equiv-rational-real = ### A rational real is similar to the canonical projection of its rational ```agda -sim-rational-ℝ : - {l : Level} → - (x : Rational-ℝ l) → - sim-ℝ (real-rational-ℝ x) (real-ℚ (rational-rational-ℝ x)) -pr1 (sim-rational-ℝ (x , q , q∉lx , q∉ux)) p p∈lx = - trichotomy-le-ℚ - ( p) - ( q) - ( id) - ( λ p=q → ex-falso (q∉lx (tr (is-in-lower-cut-ℝ x) p=q p∈lx))) - ( λ q

Date: Sat, 22 Feb 2025 10:38:41 -0800 Subject: [PATCH 203/227] Pull in opacity logic. --- .../rational-real-numbers.lagda.md | 33 ++++++ .../similarity-real-numbers.lagda.md | 112 +++++++++++------- 2 files changed, 101 insertions(+), 44 deletions(-) diff --git a/src/real-numbers/rational-real-numbers.lagda.md b/src/real-numbers/rational-real-numbers.lagda.md index 938a399af7..495613c96d 100644 --- a/src/real-numbers/rational-real-numbers.lagda.md +++ b/src/real-numbers/rational-real-numbers.lagda.md @@ -40,6 +40,7 @@ open import real-numbers.lower-dedekind-real-numbers open import real-numbers.rational-lower-dedekind-real-numbers open import real-numbers.rational-upper-dedekind-real-numbers open import real-numbers.upper-dedekind-real-numbers +open import real-numbers.similarity-real-numbers ``` @@ -74,6 +75,13 @@ real-ℚ : ℚ → ℝ lzero real-ℚ x = (lower-real-ℚ x , upper-real-ℚ x , is-dedekind-lower-upper-real-ℚ x) ``` +### Zero as a real number + +```agda +zero-ℝ : ℝ lzero +zero-ℝ = real-ℚ zero-ℚ +``` + ### The property of being a rational real number ```agda @@ -224,3 +232,28 @@ pr2 equiv-rational-real = retraction-rational-rational-ℝ = (rational-real-ℚ , is-retraction-rational-real-ℚ) ``` + +### A rational real is similar to the canonical projection of its rational + +```agda +opaque + unfolding sim-ℝ + + sim-rational-ℝ : + {l : Level} → + (x : Rational-ℝ l) → + sim-ℝ (real-rational-ℝ x) (real-ℚ (rational-rational-ℝ x)) + pr1 (sim-rational-ℝ (x , q , q∉lx , q∉ux)) p p∈lx = + trichotomy-le-ℚ + ( p) + ( q) + ( id) + ( λ p=q → ex-falso (q∉lx (tr (is-in-lower-cut-ℝ x) p=q p∈lx))) + ( λ q

Date: Sat, 22 Feb 2025 11:11:10 -0800 Subject: [PATCH 204/227] Complete overhaul of addition --- .../addition-real-numbers.lagda.md | 125 +++++++----------- .../negation-real-numbers.lagda.md | 6 +- .../similarity-real-numbers.lagda.md | 23 +--- 3 files changed, 55 insertions(+), 99 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index e499e1cabc..039d4db5d7 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -92,8 +92,11 @@ module _ is-arithmetically-located-lower-upper-add-ℝ : is-arithmetically-located-lower-upper-ℝ lower-real-add-ℝ upper-real-add-ℝ - is-arithmetically-located-lower-upper-add-ℝ ε⁺ = + is-arithmetically-located-lower-upper-add-ℝ ε⁺@(ε , _) = do + let + εx⁺@(εx , _) = left-summand-split-ℚ⁺ ε⁺ + εy⁺@(εy , _) = right-summand-split-ℚ⁺ ε⁺ (px , qx) , qx Date: Sat, 22 Feb 2025 11:25:03 -0800 Subject: [PATCH 205/227] Use more identities --- .../addition-lower-dedekind-real-numbers.lagda.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index 8fd8df351d..f966e44a38 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -135,11 +135,7 @@ module _ by is-retraction-left-div-Group group-add-ℚ rx ry) ( preserves-le-right-add-ℚ (q -ℚ rx) ε (r -ℚ q) ε Date: Sat, 22 Feb 2025 11:28:34 -0800 Subject: [PATCH 206/227] make pre-commit, revise doc --- src/real-numbers.lagda.md | 2 ++ .../addition-lower-dedekind-real-numbers.lagda.md | 10 ++++++---- .../addition-upper-dedekind-real-numbers.lagda.md | 10 ++++++---- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 9f3700a10d..24d0f66b34 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -5,6 +5,8 @@ ```agda module real-numbers where +open import real-numbers.addition-lower-dedekind-real-numbers public +open import real-numbers.addition-upper-dedekind-real-numbers public open import real-numbers.apartness-real-numbers public open import real-numbers.arithmetically-located-dedekind-cuts public open import real-numbers.dedekind-real-numbers public diff --git a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md index f966e44a38..ed2dedb91a 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -43,11 +43,13 @@ open import real-numbers.rational-lower-dedekind-real-numbers ## Idea -The sum of two -[lower Dedekind real numbers](real-numbers.lower-dedekind-real-numbers.md) is -the +We introduce +{{#concept "addition" Disambiguation="lower Dedekind real numbers" Agda=add-lower-ℝ}} +of two +[lower Dedekind real numbers](real-numbers.lower-dedekind-real-numbers.md) `x` +and `y`, which is a lower Dedekind real number with cut equal to the [Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of -their cuts. +the cuts of `x` and `y`. ```agda module _ diff --git a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md index 26acf72ba0..863baf8738 100644 --- a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md @@ -41,11 +41,13 @@ open import real-numbers.upper-dedekind-real-numbers ## Idea -The sum of two -[upper Dedekind real numbers](real-numbers.upper-dedekind-real-numbers.md) is -the +We introduce +{{#concept "addition" Disambiguation="upper Dedekind real numbers" Agda=add-upper-ℝ}} +of two +[upper Dedekind real numbers](real-numbers.upper-dedekind-real-numbers.md) `x` +and `y`, which is an upper Dedekind real number with cut equal to the [Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of -their cuts. +the cuts of `x` and `y`. ```agda module _ From 1bad7e2462dc82c15252b14ab5a02eae601c9938 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 22 Feb 2025 11:30:12 -0800 Subject: [PATCH 207/227] make pre-commit --- src/real-numbers.lagda.md | 1 + src/real-numbers/addition-real-numbers.lagda.md | 1 - .../arithmetically-located-dedekind-cuts.lagda.md | 9 +-------- src/real-numbers/difference-real-numbers.lagda.md | 2 +- src/real-numbers/inequality-real-numbers.lagda.md | 6 +++--- src/real-numbers/negation-real-numbers.lagda.md | 2 +- src/real-numbers/rational-real-numbers.lagda.md | 2 +- src/real-numbers/strict-inequality-real-numbers.lagda.md | 2 +- 8 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index f8dbb63bcb..a41b4f62cf 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -11,6 +11,7 @@ open import real-numbers.addition-upper-dedekind-real-numbers public open import real-numbers.apartness-real-numbers public open import real-numbers.arithmetically-located-dedekind-cuts public open import real-numbers.dedekind-real-numbers public +open import real-numbers.difference-real-numbers public open import real-numbers.inequality-lower-dedekind-real-numbers public open import real-numbers.inequality-real-numbers public open import real-numbers.inequality-upper-dedekind-real-numbers public diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 039d4db5d7..4323598980 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -318,7 +318,6 @@ module _ ( λ z → sim-ℝ z x) ( right-swap-add-ℝ x y (neg-ℝ y)) ( cancel-right-add-diff-ℝ) - ``` ### Addition reflects similarity diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 3fcd897455..66b0b74af3 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -20,16 +20,10 @@ open import elementary-number-theory.natural-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers -open import elementary-number-theory.natural-numbers -open import elementary-number-theory.integers -open import elementary-number-theory.multiplication-rational-numbers -open import elementary-number-theory.archimedean-property-rational-numbers open import foundation.action-on-identifications-functions open import foundation.binary-transport -open import foundation.action-on-identifications-functions open import foundation.cartesian-product-types -open import foundation.propositions open import foundation.conjunction open import foundation.coproduct-types open import foundation.dependent-pair-types @@ -41,7 +35,6 @@ open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.propositions open import foundation.subtypes -open import foundation.propositional-truncations open import foundation.transport-along-identifications open import foundation.universe-levels @@ -202,7 +195,7 @@ module _ is-arithmetically-located-ℝ : is-arithmetically-located-lower-upper-ℝ (lower-real-ℝ x) (upper-real-ℝ x) - is-arithmetically-located-ℝ ε⁺@(ε , _)= + is-arithmetically-located-ℝ ε⁺@(ε , _) = do ε'⁺@(ε' , pos-ε') , 2ε'<ε ← double-le-ℚ⁺ ε⁺ p , p

Imports ```agda -open import elementary-number-theory.rational-numbers open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.rational-numbers open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index d2a056bf10..a85420afef 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -11,6 +11,7 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.complements-subtypes open import foundation.coproduct-types @@ -22,9 +23,8 @@ open import foundation.functoriality-cartesian-product-types open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositions -open import foundation.action-on-identifications-functions -open import foundation.transport-along-identifications open import foundation.subtypes +open import foundation.transport-along-identifications open import foundation.universe-levels open import logic.functoriality-existential-quantification @@ -36,6 +36,7 @@ open import order-theory.preorders open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers +open import real-numbers.difference-real-numbers open import real-numbers.inequality-lower-dedekind-real-numbers open import real-numbers.inequality-upper-dedekind-real-numbers open import real-numbers.lower-dedekind-real-numbers @@ -44,7 +45,6 @@ open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.upper-dedekind-real-numbers -open import real-numbers.difference-real-numbers ``` diff --git a/src/real-numbers/negation-real-numbers.lagda.md b/src/real-numbers/negation-real-numbers.lagda.md index 407b197d6b..4a1ec737d5 100644 --- a/src/real-numbers/negation-real-numbers.lagda.md +++ b/src/real-numbers/negation-real-numbers.lagda.md @@ -38,8 +38,8 @@ open import real-numbers.negation-lower-upper-dedekind-real-numbers open import real-numbers.rational-lower-dedekind-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.rational-upper-dedekind-real-numbers -open import real-numbers.upper-dedekind-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` diff --git a/src/real-numbers/rational-real-numbers.lagda.md b/src/real-numbers/rational-real-numbers.lagda.md index 495613c96d..fef5967beb 100644 --- a/src/real-numbers/rational-real-numbers.lagda.md +++ b/src/real-numbers/rational-real-numbers.lagda.md @@ -39,8 +39,8 @@ open import real-numbers.dedekind-real-numbers open import real-numbers.lower-dedekind-real-numbers open import real-numbers.rational-lower-dedekind-real-numbers open import real-numbers.rational-upper-dedekind-real-numbers -open import real-numbers.upper-dedekind-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.upper-dedekind-real-numbers ``` diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index fe64f4a9d6..e92b87ed69 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -44,11 +44,11 @@ open import logic.functoriality-existential-quantification open import real-numbers.addition-real-numbers open import real-numbers.arithmetically-located-dedekind-cuts 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.negation-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.difference-real-numbers ``` From 26c41ca9149f3480a7ae0d4ae7078f2755a68047 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 22 Feb 2025 12:02:26 -0800 Subject: [PATCH 208/227] Simplifications --- .../inequality-real-numbers.lagda.md | 37 +-- .../strict-inequality-real-numbers.lagda.md | 227 +++++++++--------- 2 files changed, 130 insertions(+), 134 deletions(-) diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index a85420afef..b7b29c6d0f 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -86,7 +86,7 @@ module _ leq-ℝ' = type-Prop leq-ℝ-Prop' leq-iff-ℝ' : leq-ℝ x y ↔ leq-ℝ' - pr1 (leq-iff-ℝ') lx⊆ly q q-in-uy = + pr1 leq-iff-ℝ' x≤y q yx , px)) H) + + le-iff-upper-cut-real-ℚ : is-in-upper-cut-ℝ x q ↔ le-ℝ x (real-ℚ q) + pr1 le-iff-upper-cut-real-ℚ = le-upper-cut-real-ℚ + pr2 le-iff-upper-cut-real-ℚ = upper-cut-real-le-ℚ +``` + ### The reals have no lower or upper bound ```agda @@ -219,18 +260,16 @@ module _ abstract exists-lesser-ℝ : exists (ℝ lzero) (λ y → le-ℝ-Prop y x) exists-lesser-ℝ = - map-exists - ( λ y → le-ℝ y x) - ( real-ℚ) - ( λ q → forward-implication (is-rounded-lower-cut-ℝ x q)) - ( is-inhabited-lower-cut-ℝ x) + do + ( q , qx , px)) H) - - le-iff-upper-cut-real-ℚ : is-in-upper-cut-ℝ x q ↔ le-ℝ x (real-ℚ q) - pr1 le-iff-upper-cut-real-ℚ = le-upper-cut-real-ℚ - pr2 le-iff-upper-cut-real-ℚ = upper-cut-real-le-ℚ -``` - ### Strict inequality on the real numbers is dense ```agda @@ -370,9 +368,9 @@ module _ le-ℝ x y → exists (ℝ lzero) (λ z → le-ℝ-Prop x z ∧ le-ℝ-Prop z y) dense-le-ℝ x Date: Sat, 22 Feb 2025 15:01:31 -0800 Subject: [PATCH 209/227] make pre-commit --- .../strict-inequality-real-numbers.lagda.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index 8a34e3491f..cb530febff 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -153,8 +153,8 @@ module _ transitive-le-ℝ : le-ℝ y z → le-ℝ x y → le-ℝ x z transitive-le-ℝ y Date: Sun, 23 Mar 2025 16:09:13 -0700 Subject: [PATCH 210/227] make pre-commit --- .../addition-real-numbers.lagda.md | 39 +++++++++++++++++++ .../rational-real-numbers.lagda.md | 25 ------------ 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 4323598980..cfe1523292 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -31,7 +31,11 @@ open import foundation.propositional-truncations open import foundation.transport-along-identifications open import foundation.universe-levels +open import group-theory.abelian-groups +open import group-theory.commutative-monoids open import group-theory.groups +open import group-theory.monoids +open import group-theory.semigroups open import logic.functoriality-existential-quantification @@ -452,3 +456,38 @@ module _ ~ℝ neg-ℝ x +ℝ neg-ℝ y by sim-eq-ℝ (ap (_+ℝ neg-ℝ y) (left-unit-law-add-ℝ _))) ``` + +### The Abelian group of real numbers at `lzero` under addition + +```agda +semigroup-add-ℝ-lzero : Semigroup (lsuc lzero) +semigroup-add-ℝ-lzero = + ℝ-Set lzero , + add-ℝ , + associative-add-ℝ + +monoid-add-ℝ-lzero : Monoid (lsuc lzero) +monoid-add-ℝ-lzero = + semigroup-add-ℝ-lzero , + zero-ℝ , + left-unit-law-add-ℝ , + right-unit-law-add-ℝ + +commutative-monoid-add-ℝ-lzero : Commutative-Monoid (lsuc lzero) +commutative-monoid-add-ℝ-lzero = + monoid-add-ℝ-lzero , + commutative-add-ℝ + +group-add-ℝ-lzero : Group (lsuc lzero) +group-add-ℝ-lzero = + semigroup-add-ℝ-lzero , + ( zero-ℝ , left-unit-law-add-ℝ , right-unit-law-add-ℝ) , + ( neg-ℝ , + eq-sim-ℝ ∘ left-inverse-law-add-ℝ , + eq-sim-ℝ ∘ right-inverse-law-add-ℝ) + +abelian-group-add-ℝ-lzero : Ab (lsuc lzero) +abelian-group-add-ℝ-lzero = + group-add-ℝ-lzero , + commutative-add-ℝ +``` diff --git a/src/real-numbers/rational-real-numbers.lagda.md b/src/real-numbers/rational-real-numbers.lagda.md index 593a0955c1..19ff6b404c 100644 --- a/src/real-numbers/rational-real-numbers.lagda.md +++ b/src/real-numbers/rational-real-numbers.lagda.md @@ -238,28 +238,3 @@ pr2 equiv-rational-real = retraction-rational-rational-ℝ = (rational-real-ℚ , is-retraction-rational-real-ℚ) ``` - -### A rational real is similar to the canonical projection of its rational - -```agda -opaque - unfolding sim-ℝ - - sim-rational-ℝ : - {l : Level} → - (x : Rational-ℝ l) → - sim-ℝ (real-rational-ℝ x) (real-ℚ (rational-rational-ℝ x)) - pr1 (sim-rational-ℝ (x , q , q∉lx , q∉ux)) p p∈lx = - trichotomy-le-ℚ - ( p) - ( q) - ( id) - ( λ p=q → ex-falso (q∉lx (tr (is-in-lower-cut-ℝ x) p=q p∈lx))) - ( λ q

Date: Sun, 23 Mar 2025 16:11:54 -0700 Subject: [PATCH 211/227] Minor simplification --- src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 66b0b74af3..3198c8f553 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -200,7 +200,6 @@ module _ ε'⁺@(ε' , pos-ε') , 2ε'<ε ← double-le-ℚ⁺ ε⁺ p , p Date: Sun, 23 Mar 2025 16:14:43 -0700 Subject: [PATCH 212/227] Correct indentation --- .../addition-real-numbers.lagda.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index cfe1523292..a2c8c46f6d 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -106,21 +106,21 @@ module _ intro-exists ( px +ℚ py , qx +ℚ qy) ( tr - ( le-ℚ (qx +ℚ qy)) - ( equational-reasoning - (px +ℚ εx) +ℚ (py +ℚ εy) - = (px +ℚ py) +ℚ (εx +ℚ εy) - by interchange-law-add-add-ℚ px εx py εy - = (px +ℚ py) +ℚ ε - by - ap ((px +ℚ py) +ℚ_) (ap rational-ℚ⁺ (eq-add-split-ℚ⁺ ε⁺))) - ( preserves-le-add-ℚ - { qx} - { px +ℚ εx} - { qy} - { py +ℚ εy} - ( qx Date: Wed, 26 Mar 2025 10:04:58 -0700 Subject: [PATCH 213/227] Make abstract --- ...thmetically-located-dedekind-cuts.lagda.md | 176 +++++++++--------- 1 file changed, 89 insertions(+), 87 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 3198c8f553..02f5a6b3c3 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -138,99 +138,101 @@ module _ {l : Level} (x : ℝ l) where - location-in-arithmetic-sequence-located-ℝ : - (ε : ℚ⁺) (n : ℕ) (p : ℚ) → - is-in-lower-cut-ℝ x p → - is-in-upper-cut-ℝ x (p +ℚ (rational-ℤ (int-ℕ n) *ℚ rational-ℚ⁺ ε)) → - exists - ( ℚ) - ( λ q → lower-cut-ℝ x q ∧ upper-cut-ℝ x (q +ℚ rational-ℚ⁺ (ε +ℚ⁺ ε))) - location-in-arithmetic-sequence-located-ℝ ε⁺@(ε , _) zero-ℕ p p Date: Wed, 26 Mar 2025 10:14:42 -0700 Subject: [PATCH 214/227] Fix indentatino --- .../arithmetically-located-dedekind-cuts.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 02f5a6b3c3..de480a3ce1 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -122,10 +122,10 @@ module _ ( p' +ℚ (q -ℚ p)) ( q) ( q' Date: Wed, 26 Mar 2025 10:35:20 -0700 Subject: [PATCH 215/227] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../arithmetically-located-dedekind-cuts.lagda.md | 6 +++--- src/real-numbers/difference-real-numbers.lagda.md | 2 +- src/real-numbers/inequality-real-numbers.lagda.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index de480a3ce1..a97e2cd6d5 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -75,9 +75,9 @@ module _ Π-Prop ( ℚ⁺) ( λ ε⁺ → - ∃ - ( ℚ × ℚ) - ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ + ∃ ( ℚ × ℚ) + ( λ (p , q) → + le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ cut-lower-ℝ x p ∧ cut-upper-ℝ y q)) diff --git a/src/real-numbers/difference-real-numbers.lagda.md b/src/real-numbers/difference-real-numbers.lagda.md index 4a49343b51..b18ed10ecd 100644 --- a/src/real-numbers/difference-real-numbers.lagda.md +++ b/src/real-numbers/difference-real-numbers.lagda.md @@ -48,6 +48,6 @@ _-ℝ_ = diff-ℝ ```agda abstract - diff-real-ℚ : (p q : ℚ) → real-ℚ p -ℝ real-ℚ q = real-ℚ (p -ℚ q) + diff-real-ℚ : (p q : ℚ) → (real-ℚ p) -ℝ (real-ℚ q) = real-ℚ (p -ℚ q) diff-real-ℚ p q = ap (real-ℚ p +ℝ_) (neg-real-ℚ q) ∙ add-real-ℚ p (neg-ℚ q) ``` diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index b7b29c6d0f..adbb050150 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -229,7 +229,7 @@ module _ ( preserves-leq-right-sim-ℝ x1 y1 y2 y1~y2 x1≤y1) ``` -### Inequality on the real numbers is invariant by translation +### Inequality on the real numbers is invariant under translation ```agda module _ @@ -293,7 +293,7 @@ module _ neg-leq-ℝ x≤y p = forward-implication (leq-iff-ℝ' x y) x≤y (neg-ℚ p) ``` -### `x + y ≤ z` if and only if `x ≤ y - z` +### `x + y ≤ z` if and only if `x ≤ z - y` ```agda module _ From b03d63bd3066e5cbe45b28eafe290229cd5bd595 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 26 Mar 2025 10:57:39 -0700 Subject: [PATCH 216/227] Review comments --- .../addition-rational-numbers.lagda.md | 10 +++ ...thmetically-located-dedekind-cuts.lagda.md | 4 +- .../strict-inequality-real-numbers.lagda.md | 70 +++++++++++++------ 3 files changed, 60 insertions(+), 24 deletions(-) diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index 4bd4afc3d5..b34794c88b 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -14,6 +14,7 @@ open import elementary-number-theory.addition-integers open import elementary-number-theory.integer-fractions open import elementary-number-theory.integers open import elementary-number-theory.rational-numbers +open import elementary-number-theory.natural-numbers open import elementary-number-theory.reduced-integer-fractions open import foundation.action-on-identifications-binary-functions @@ -276,6 +277,15 @@ abstract succ-rational-ℤ = add-rational-ℤ one-ℤ ``` +### The embedding of the successor of a natural number is the successor of its embedding + +```agda +abstract + succ-rational-int-ℕ : + (n : ℕ) → succ-ℚ (rational-ℤ (int-ℕ n)) = rational-ℤ (int-ℕ (succ-ℕ n)) + succ-rational-int-ℕ n = succ-rational-ℤ _ ∙ ap rational-ℤ (succ-int-ℕ n) +``` + ## See also - The additive group structure on the rational numbers is defined in diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index de480a3ce1..506ddfbbca 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -172,10 +172,8 @@ module _ ( is-in-upper-cut-ℝ x) ( equational-reasoning p +ℚ (rational-ℤ (int-ℕ (succ-ℕ n)) *ℚ ε) - = p +ℚ (rational-ℤ (succ-ℤ (int-ℕ n)) *ℚ ε) - by ap (λ m → p +ℚ (rational-ℤ m *ℚ ε)) (inv (succ-int-ℕ n)) = p +ℚ (succ-ℚ (rational-ℤ (int-ℕ n)) *ℚ ε) - by ap (λ m → p +ℚ (m *ℚ ε)) (inv (succ-rational-ℤ _)) + by ap (p +ℚ_) (ap (_*ℚ ε) (inv (succ-rational-int-ℕ n))) = p +ℚ (ε +ℚ (rational-ℤ (int-ℕ n) *ℚ ε)) by ap (p +ℚ_) (mul-left-succ-ℚ _ _) = (p +ℚ ε) +ℚ rational-ℤ (int-ℕ n) *ℚ ε diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index cb530febff..54fab97111 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -532,39 +532,67 @@ module _ pr2 iff-translate-left-le-ℝ = reflects-le-left-add-ℝ z x y ``` -### `x + y < z` if and only if `x < y - z` +### `x + y < z` if and only if `x < z - y` ```agda +module _ + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) + where + + abstract + le-transpose-left-add-ℝ : le-ℝ (x +ℝ y) z → le-ℝ x (z -ℝ y) + le-transpose-left-add-ℝ x+y Date: Wed, 26 Mar 2025 11:00:27 -0700 Subject: [PATCH 217/227] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../strict-inequality-real-numbers.lagda.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index cb530febff..565988869e 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -128,13 +128,13 @@ module _ ( q , y Date: Wed, 26 Mar 2025 11:26:53 -0700 Subject: [PATCH 218/227] make pre-commit --- .../addition-rational-numbers.lagda.md | 2 +- src/foundation.lagda.md | 1 + .../functoriality-disjunction.lagda.md | 36 ++++++++++++++++ ...thmetically-located-dedekind-cuts.lagda.md | 7 +++- .../similarity-real-numbers.lagda.md | 13 ++++-- .../strict-inequality-real-numbers.lagda.md | 42 ++++++++++--------- 6 files changed, 75 insertions(+), 26 deletions(-) create mode 100644 src/foundation/functoriality-disjunction.lagda.md diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index b34794c88b..1ef00d6b27 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -13,8 +13,8 @@ open import elementary-number-theory.addition-integer-fractions open import elementary-number-theory.addition-integers open import elementary-number-theory.integer-fractions open import elementary-number-theory.integers -open import elementary-number-theory.rational-numbers open import elementary-number-theory.natural-numbers +open import elementary-number-theory.rational-numbers open import elementary-number-theory.reduced-integer-fractions open import foundation.action-on-identifications-binary-functions diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md index fa5ed4f5b6..429dd75e39 100644 --- a/src/foundation.lagda.md +++ b/src/foundation.lagda.md @@ -205,6 +205,7 @@ open import foundation.functoriality-cartesian-product-types public open import foundation.functoriality-coproduct-types public open import foundation.functoriality-dependent-function-types public open import foundation.functoriality-dependent-pair-types public +open import foundation.functoriality-disjunction public open import foundation.functoriality-fibers-of-maps public open import foundation.functoriality-function-types public open import foundation.functoriality-morphisms-arrows public diff --git a/src/foundation/functoriality-disjunction.lagda.md b/src/foundation/functoriality-disjunction.lagda.md new file mode 100644 index 0000000000..b37fca2817 --- /dev/null +++ b/src/foundation/functoriality-disjunction.lagda.md @@ -0,0 +1,36 @@ +# Functoriality of disjunction + +```agda +module foundation.functoriality-disjunction where +``` + +

Imports + +```agda +open import foundation.disjunction +open import foundation.function-types +open import foundation.propositions +open import foundation.universe-levels +``` + +
+ +## Idea + +Any two implications `f : A ⇒ B` and `g : C ⇒ D` induce an implication +`map-disjunction f g : (A ∨ B) ⇒ (C ∨ D)`. + +## Definitions + +### The functorial action of disjunction + +```agda +module _ + {l1 l2 l3 l4 : Level} (A : Prop l1) (B : Prop l2) (C : Prop l3) (D : Prop l4) + (f : type-Prop (A ⇒ B)) (g : type-Prop (C ⇒ D)) + where + + map-disjunction : type-Prop ((A ∨ C) ⇒ (B ∨ D)) + map-disjunction = + elim-disjunction (B ∨ D) (inl-disjunction ∘ f) (inr-disjunction ∘ g) +``` diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 2be94326ed..5e4a4e073c 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -76,7 +76,7 @@ module _ ( ℚ⁺) ( λ ε⁺ → ∃ ( ℚ × ℚ) - ( λ (p , q) → + ( λ (p , q) → le-ℚ-Prop q (p +ℚ rational-ℚ⁺ ε⁺) ∧ cut-lower-ℝ x p ∧ cut-upper-ℝ y q)) @@ -124,7 +124,10 @@ module _ ( q'x , px)) H) le-iff-upper-cut-real-ℚ : is-in-upper-cut-ℝ x q ↔ le-ℝ x (real-ℚ q) - pr1 le-iff-upper-cut-real-ℚ = le-upper-cut-real-ℚ - pr2 le-iff-upper-cut-real-ℚ = upper-cut-real-le-ℚ + pr1 le-iff-upper-cut-real-ℚ = le-real-is-in-upper-cut-ℚ + pr2 le-iff-upper-cut-real-ℚ = is-in-upper-cut-le-real-ℚ ``` ### The reals have no lower or upper bound @@ -262,14 +263,14 @@ module _ exists-lesser-ℝ = do ( q , q Date: Wed, 26 Mar 2025 11:27:08 -0700 Subject: [PATCH 219/227] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../arithmetically-located-dedekind-cuts.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index a97e2cd6d5..f7d5ca97ef 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -70,8 +70,8 @@ module _ {l1 l2 : Level} (x : lower-ℝ l1) (y : upper-ℝ l2) where - arithmetically-located-prop-lower-upper-ℝ : Prop (l1 ⊔ l2) - arithmetically-located-prop-lower-upper-ℝ = + is-arithmetically-located-prop-lower-upper-ℝ : Prop (l1 ⊔ l2) + is-arithmetically-located-prop-lower-upper-ℝ = Π-Prop ( ℚ⁺) ( λ ε⁺ → @@ -83,7 +83,7 @@ module _ is-arithmetically-located-lower-upper-ℝ : UU (l1 ⊔ l2) is-arithmetically-located-lower-upper-ℝ = - type-Prop arithmetically-located-prop-lower-upper-ℝ + type-Prop is-arithmetically-located-prop-lower-upper-ℝ ``` ## Properties From 70bd0b8a7eae2d4cc5db5d5b2a314b4b8cc90d25 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 26 Mar 2025 11:58:28 -0700 Subject: [PATCH 220/227] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- src/real-numbers/addition-real-numbers.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index a2c8c46f6d..4b220695c0 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -462,9 +462,9 @@ module _ ```agda semigroup-add-ℝ-lzero : Semigroup (lsuc lzero) semigroup-add-ℝ-lzero = - ℝ-Set lzero , - add-ℝ , - associative-add-ℝ + ( ℝ-Set lzero , + add-ℝ , + associative-add-ℝ) monoid-add-ℝ-lzero : Monoid (lsuc lzero) monoid-add-ℝ-lzero = From bc28de4231740f4ea6221abb1293552b2ece9db8 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 26 Mar 2025 12:44:30 -0700 Subject: [PATCH 221/227] Respond to review --- .../addition-rational-numbers.lagda.md | 15 ++ .../positive-rational-numbers.lagda.md | 32 ++- ...iality-existential-quantification.lagda.md | 17 ++ .../addition-real-numbers.lagda.md | 218 +++++++++--------- ...thmetically-located-dedekind-cuts.lagda.md | 15 +- .../strict-inequality-real-numbers.lagda.md | 28 +-- 6 files changed, 186 insertions(+), 139 deletions(-) diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index 1ef00d6b27..3918d0e078 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -162,6 +162,21 @@ abstract commutative-add-ℚ x (neg-ℚ x) ∙ left-inverse-law-add-ℚ x ``` +### If `p + q = 0`, then `p = -q` + +```agda +abstract + unique-left-neg-ℚ : (p q : ℚ) → p +ℚ q = zero-ℚ → p = neg-ℚ q + unique-left-neg-ℚ p q p+q=0 = + equational-reasoning + p + = p +ℚ zero-ℚ by inv (right-unit-law-add-ℚ p) + = p +ℚ (q +ℚ neg-ℚ q) by ap (p +ℚ_) (inv (right-inverse-law-add-ℚ q)) + = (p +ℚ q) +ℚ neg-ℚ q by inv (associative-add-ℚ _ _ _) + = zero-ℚ +ℚ neg-ℚ q by ap (_+ℚ neg-ℚ q) p+q=0 + = neg-ℚ q by left-unit-law-add-ℚ _ +``` + ### The negatives of rational numbers distribute over addition ```agda diff --git a/src/elementary-number-theory/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index d06431191d..6f1708a292 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -644,16 +644,40 @@ module _ right-summand-split-ℚ⁺ = le-diff-ℚ⁺ (mediant-zero-ℚ⁺ x) x (le-mediant-zero-ℚ⁺ x) - eq-add-split-ℚ⁺ : - left-summand-split-ℚ⁺ +ℚ⁺ right-summand-split-ℚ⁺ = x - eq-add-split-ℚ⁺ = - right-diff-law-add-ℚ⁺ (mediant-zero-ℚ⁺ x) x (le-mediant-zero-ℚ⁺ x) + abstract + eq-add-split-ℚ⁺ : + left-summand-split-ℚ⁺ +ℚ⁺ right-summand-split-ℚ⁺ = x + eq-add-split-ℚ⁺ = + right-diff-law-add-ℚ⁺ (mediant-zero-ℚ⁺ x) x (le-mediant-zero-ℚ⁺ x) split-ℚ⁺ : Σ ℚ⁺ (λ u → Σ ℚ⁺ (λ v → u +ℚ⁺ v = x)) split-ℚ⁺ = left-summand-split-ℚ⁺ , right-summand-split-ℚ⁺ , eq-add-split-ℚ⁺ + + abstract + le-add-split-ℚ⁺ : + (p q r s : ℚ) → + le-ℚ p (q +ℚ rational-ℚ⁺ left-summand-split-ℚ⁺) → + le-ℚ r (s +ℚ rational-ℚ⁺ right-summand-split-ℚ⁺) → + le-ℚ (p +ℚ r) ((q +ℚ s) +ℚ rational-ℚ⁺ x) + le-add-split-ℚ⁺ p q r s px , px)) H) - - le-iff-upper-cut-real-ℚ : is-in-upper-cut-ℝ x q ↔ le-ℝ x (real-ℚ q) - pr1 le-iff-upper-cut-real-ℚ = le-real-is-in-upper-cut-ℚ - pr2 le-iff-upper-cut-real-ℚ = is-in-upper-cut-le-real-ℚ + is-in-upper-cut-le-real-ℚ = backward-implication le-iff-upper-cut-real-ℚ ``` ### The reals have no lower or upper bound From fe49786d9a747f605a02280b5923237b37743301 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 26 Mar 2025 12:47:33 -0700 Subject: [PATCH 222/227] make pre-commit --- .../functoriality-existential-quantification.lagda.md | 7 ++----- src/real-numbers/addition-real-numbers.lagda.md | 7 +++---- src/real-numbers/strict-inequality-real-numbers.lagda.md | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/logic/functoriality-existential-quantification.lagda.md b/src/logic/functoriality-existential-quantification.lagda.md index c0fb2fd8ef..03ac7bfe62 100644 --- a/src/logic/functoriality-existential-quantification.lagda.md +++ b/src/logic/functoriality-existential-quantification.lagda.md @@ -7,13 +7,11 @@ module logic.functoriality-existential-quantification where
Imports ```agda +open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.function-types -open import foundation.universe-levels open import foundation.logical-equivalences - -open import foundation.dependent-pair-types -open import foundation-core.function-types +open import foundation.universe-levels ```
@@ -123,7 +121,6 @@ module _ pr2 (iff-tot-exists g) = map-tot-exists (backward-implication ∘ g) ``` - ### The functorial action of existential quantification on maps of the base ```agda diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index c51878e41a..c2d5c3b952 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -55,10 +55,9 @@ open import real-numbers.upper-dedekind-real-numbers ## Idea -We introduce -{{#concept "addition" Disambiguation="real numbers" Agda=add-ℝ}} on the -[Dedekind real numbers](real-numbers.dedekind-real-numbers.md) and derive its -basic properties. +We introduce {{#concept "addition" Disambiguation="real numbers" Agda=add-ℝ}} on +the [Dedekind real numbers](real-numbers.dedekind-real-numbers.md) and derive +its basic properties. The sum of two Dedekind real numbers is is a Dedekind real number whose lower cut (upper cut) is the the diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index 7e1a44f967..9bf6240d28 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -34,9 +34,9 @@ open import foundation.logical-equivalences open import foundation.negation open import foundation.propositional-truncations open import foundation.propositions -open import foundation.type-arithmetic-cartesian-product-types open import foundation.subtypes open import foundation.transport-along-identifications +open import foundation.type-arithmetic-cartesian-product-types open import foundation.universe-levels open import group-theory.abelian-groups From b85db3d24abc0b0ebe288d37dff8bf9c3225631b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 26 Mar 2025 12:55:13 -0700 Subject: [PATCH 223/227] Wrap line --- .../arithmetically-located-dedekind-cuts.lagda.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index a4a2e90d9a..38954ca42d 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -161,9 +161,7 @@ module _ location-in-arithmetic-sequence-located-ℝ ε⁺@(ε , _) (succ-ℕ n) p p Date: Wed, 26 Mar 2025 19:17:11 -0700 Subject: [PATCH 224/227] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../addition-real-numbers.lagda.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index c2d5c3b952..2bb721a842 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -467,26 +467,26 @@ semigroup-add-ℝ-lzero = monoid-add-ℝ-lzero : Monoid (lsuc lzero) monoid-add-ℝ-lzero = - semigroup-add-ℝ-lzero , - zero-ℝ , - left-unit-law-add-ℝ , - right-unit-law-add-ℝ + ( semigroup-add-ℝ-lzero , + zero-ℝ , + left-unit-law-add-ℝ , + right-unit-law-add-ℝ) commutative-monoid-add-ℝ-lzero : Commutative-Monoid (lsuc lzero) commutative-monoid-add-ℝ-lzero = - monoid-add-ℝ-lzero , - commutative-add-ℝ + ( monoid-add-ℝ-lzero , + commutative-add-ℝ) group-add-ℝ-lzero : Group (lsuc lzero) group-add-ℝ-lzero = - semigroup-add-ℝ-lzero , - ( zero-ℝ , left-unit-law-add-ℝ , right-unit-law-add-ℝ) , - ( neg-ℝ , - eq-sim-ℝ ∘ left-inverse-law-add-ℝ , - eq-sim-ℝ ∘ right-inverse-law-add-ℝ) + ( ( semigroup-add-ℝ-lzero) , + ( zero-ℝ , left-unit-law-add-ℝ , right-unit-law-add-ℝ) , + ( neg-ℝ , + eq-sim-ℝ ∘ left-inverse-law-add-ℝ , + eq-sim-ℝ ∘ right-inverse-law-add-ℝ)) abelian-group-add-ℝ-lzero : Ab (lsuc lzero) abelian-group-add-ℝ-lzero = - group-add-ℝ-lzero , - commutative-add-ℝ + ( group-add-ℝ-lzero , + commutative-add-ℝ) ``` From b3652bd11aeb282b863a661d20239b52ac82f303 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 26 Mar 2025 19:23:34 -0700 Subject: [PATCH 225/227] Progress --- .../addition-real-numbers.lagda.md | 24 +++++++++---------- ...thmetically-located-dedekind-cuts.lagda.md | 20 ++++++++-------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 2bb721a842..31d98f9d82 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -80,7 +80,8 @@ module _ is-disjoint-lower-upper-add-ℝ : is-disjoint-lower-upper-ℝ lower-real-add-ℝ upper-real-add-ℝ is-disjoint-lower-upper-add-ℝ p (p Date: Wed, 26 Mar 2025 19:33:22 -0700 Subject: [PATCH 226/227] Progress --- .../inequality-real-numbers.lagda.md | 55 ++++++++++++++----- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index adbb050150..cd635e5e6d 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -296,25 +296,42 @@ module _ ### `x + y ≤ z` if and only if `x ≤ z - y` ```agda +module _ + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) + where + + abstract + leq-transpose-left-add-ℝ : leq-ℝ (x +ℝ y) z → leq-ℝ x (z -ℝ y) + leq-transpose-left-add-ℝ x+y Date: Wed, 26 Mar 2025 19:38:29 -0700 Subject: [PATCH 227/227] Progress --- .../strict-inequality-real-numbers.lagda.md | 55 +++++++++++-------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/src/real-numbers/strict-inequality-real-numbers.lagda.md b/src/real-numbers/strict-inequality-real-numbers.lagda.md index 9bf6240d28..f018ba1f5f 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -120,7 +120,9 @@ module _ abstract asymmetric-le-ℝ : le-ℝ x y → ¬ (le-ℝ y x) asymmetric-le-ℝ x