From 54da0617a511aab4529a12bee360d8df696172bc Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 10 Oct 2025 15:54:25 -0700 Subject: [PATCH 001/134] Reorganize signed arithmetic on rational numbers --- src/elementary-number-theory.lagda.md | 2 + ...closed-intervals-rational-numbers.lagda.md | 2 +- .../absolute-value-rational-numbers.lagda.md | 255 ++++++++---------- ...tion-nonnegative-rational-numbers.lagda.md | 10 +- ...ddition-positive-rational-numbers.lagda.md | 14 +- .../addition-rational-numbers.lagda.md | 5 +- ...roperty-positive-rational-numbers.lagda.md | 4 +- ...imedean-property-rational-numbers.lagda.md | 8 +- .../difference-rational-numbers.lagda.md | 2 +- .../distance-rational-numbers.lagda.md | 2 +- ...ive-and-negative-rational-numbers.lagda.md | 106 ++++++++ .../inequality-rational-numbers.lagda.md | 11 +- ...imum-nonnegative-rational-numbers.lagda.md | 4 +- ...inima-and-maxima-rational-numbers.lagda.md | 8 +- ...closed-intervals-rational-numbers.lagda.md | 1 + ...closed-intervals-rational-numbers.lagda.md | 6 +- ...ication-negative-rational-numbers.lagda.md | 159 +++++++++++ ...tion-nonnegative-rational-numbers.lagda.md | 48 +++- ...tion-nonpositive-rational-numbers.lagda.md | 14 +- ...ive-and-negative-rational-numbers.lagda.md | 9 +- ...ication-positive-rational-numbers.lagda.md | 12 +- ...icative-group-of-rational-numbers.lagda.md | 4 +- ...closed-intervals-rational-numbers.lagda.md | 6 +- .../negative-rational-numbers.lagda.md | 227 ++++------------ .../nonnegative-rational-numbers.lagda.md | 98 +++---- .../nonpositive-rational-numbers.lagda.md | 55 ++-- ...ive-and-negative-rational-numbers.lagda.md | 195 ++++++++++---- .../positive-rational-numbers.lagda.md | 104 +++---- .../rational-numbers.lagda.md | 21 +- .../squares-rational-numbers.lagda.md | 19 +- ...lity-nonnegative-rational-numbers.lagda.md | 10 - ...quality-positive-rational-numbers.lagda.md | 5 +- ...trict-inequality-rational-numbers.lagda.md | 7 +- ...at-bounded-distance-metric-spaces.lagda.md | 8 +- .../located-metric-spaces.lagda.md | 4 +- .../metric-space-of-rational-numbers.lagda.md | 8 +- ...onal-sequences-approximating-zero.lagda.md | 1 + src/order-theory.lagda.md | 1 + .../order-preserving-maps-posets.lagda.md | 6 +- ...rder-preserving-maps-total-orders.lagda.md | 193 +++++++++++++ ...ition-lower-dedekind-real-numbers.lagda.md | 16 +- ...ition-upper-dedekind-real-numbers.lagda.md | 4 +- ...thmetically-located-dedekind-cuts.lagda.md | 6 +- .../multiplication-real-numbers.lagda.md | 1 + ...lower-upper-dedekind-real-numbers.lagda.md | 16 +- .../negation-real-numbers.lagda.md | 2 +- .../nonnegative-real-numbers.lagda.md | 5 +- .../positive-real-numbers.lagda.md | 16 +- .../strict-inequality-real-numbers.lagda.md | 2 +- 49 files changed, 1052 insertions(+), 670 deletions(-) create mode 100644 src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/multiplication-negative-rational-numbers.lagda.md create mode 100644 src/order-theory/order-preserving-maps-total-orders.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 662f2615dc5..d6d8fc4df2d 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -93,6 +93,7 @@ open import elementary-number-theory.group-of-integers public open import elementary-number-theory.half-integers public open import elementary-number-theory.hardy-ramanujan-number public open import elementary-number-theory.inclusion-natural-numbers-conatural-numbers public +open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers public open import elementary-number-theory.inequality-arithmetic-geometric-means-integers public open import elementary-number-theory.inequality-arithmetic-geometric-means-rational-numbers public open import elementary-number-theory.inequality-conatural-numbers public @@ -137,6 +138,7 @@ open import elementary-number-theory.multiplication-integers public open import elementary-number-theory.multiplication-interior-closed-intervals-rational-numbers public open import elementary-number-theory.multiplication-lists-of-natural-numbers public open import elementary-number-theory.multiplication-natural-numbers public +open import elementary-number-theory.multiplication-negative-rational-numbers public open import elementary-number-theory.multiplication-nonnegative-rational-numbers public open import elementary-number-theory.multiplication-nonpositive-rational-numbers public open import elementary-number-theory.multiplication-positive-and-negative-integers public diff --git a/src/elementary-number-theory/absolute-value-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/absolute-value-closed-intervals-rational-numbers.lagda.md index 21651d39f03..c0568e3e299 100644 --- a/src/elementary-number-theory/absolute-value-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/absolute-value-closed-intervals-rational-numbers.lagda.md @@ -69,7 +69,7 @@ abstract ( r≤0)) ( transitive-leq-ℚ (neg-ℚ r) (neg-ℚ p) (rational-abs-ℚ p) ( neg-leq-abs-ℚ p) - ( neg-leq-ℚ _ _ p≤r)))) + ( neg-leq-ℚ p≤r)))) ( λ 0≤r → transitive-leq-ℚ ( rational-abs-ℚ r) diff --git a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md index 93b5e7586ee..fa1c1a6995c 100644 --- a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md +++ b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md @@ -12,12 +12,15 @@ module elementary-number-theory.absolute-value-rational-numbers where open import elementary-number-theory.addition-nonnegative-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers open import elementary-number-theory.inequality-nonnegative-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.multiplication-nonnegative-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.nonpositive-rational-numbers +open import elementary-number-theory.positive-and-negative-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 @@ -48,29 +51,27 @@ its negation. rational-abs-ℚ : ℚ → ℚ rational-abs-ℚ q = max-ℚ q (neg-ℚ q) -opaque - unfolding neg-ℚ - +abstract is-nonnegative-rational-abs-ℚ : (q : ℚ) → is-nonnegative-ℚ (rational-abs-ℚ q) is-nonnegative-rational-abs-ℚ q = rec-coproduct - ( λ 0≤q → + ( λ is-nonpos-q → inv-tr ( is-nonnegative-ℚ) - ( right-leq-left-max-ℚ - ( q) - ( neg-ℚ q) - ( transitive-leq-ℚ (neg-ℚ q) zero-ℚ q 0≤q (neg-leq-ℚ zero-ℚ q 0≤q))) - ( is-nonnegative-leq-zero-ℚ q 0≤q)) - ( λ q≤0 → + ( left-leq-right-max-ℚ _ _ + ( leq-nonpositive-nonnegative-ℚ + ( q , is-nonpos-q) + ( neg-ℚ⁰⁻ (q , is-nonpos-q)))) + ( is-nonnegative-neg-is-nonpositive-ℚ is-nonpos-q)) + ( λ is-nonneg-q → inv-tr ( is-nonnegative-ℚ) - ( left-leq-right-max-ℚ - ( q) - ( neg-ℚ q) - ( transitive-leq-ℚ q zero-ℚ (neg-ℚ q) (neg-leq-ℚ q zero-ℚ q≤0) q≤0)) - ( is-nonnegative-leq-zero-ℚ (neg-ℚ q) (neg-leq-ℚ q zero-ℚ q≤0))) - ( linear-leq-ℚ zero-ℚ q) + ( right-leq-left-max-ℚ _ _ + ( leq-nonpositive-nonnegative-ℚ + ( neg-ℚ⁰⁺ (q , is-nonneg-q)) + ( q , is-nonneg-q))) + ( is-nonneg-q)) + ( is-nonpositive-or-nonnegative-ℚ q) abs-ℚ : ℚ → ℚ⁰⁺ pr1 (abs-ℚ q) = rational-abs-ℚ q @@ -92,41 +93,43 @@ abstract le-abs-le-le-neg-ℚ p q = le-max-le-both-ℚ q p (neg-ℚ p) ``` -### The absolute value of a nonnegative rational number is the number itself +### The absolute value of the negation of `q` is the absolute value of `q` ```agda -opaque - unfolding neg-ℚ +abstract + abs-neg-ℚ : (q : ℚ) → abs-ℚ (neg-ℚ q) = abs-ℚ q + abs-neg-ℚ q = + eq-ℚ⁰⁺ + ( ap (max-ℚ (neg-ℚ q)) (neg-neg-ℚ q) ∙ commutative-max-ℚ _ _) + + rational-abs-neg-ℚ : (q : ℚ) → rational-abs-ℚ (neg-ℚ q) = rational-abs-ℚ q + rational-abs-neg-ℚ q = ap rational-ℚ⁰⁺ (abs-neg-ℚ q) +``` + +### The absolute value of a nonnegative rational number is the number itself +```agda +abstract abs-rational-ℚ⁰⁺ : (q : ℚ⁰⁺) → abs-ℚ (rational-ℚ⁰⁺ q) = q - abs-rational-ℚ⁰⁺ (q , nonneg-q) = + abs-rational-ℚ⁰⁺ q = eq-ℚ⁰⁺ - ( right-leq-left-max-ℚ - ( q) - ( neg-ℚ q) - ( transitive-leq-ℚ - ( neg-ℚ q) - ( zero-ℚ) - ( q) - ( leq-zero-is-nonnegative-ℚ q nonneg-q) - ( neg-leq-ℚ zero-ℚ q (leq-zero-is-nonnegative-ℚ q nonneg-q)))) + ( right-leq-left-max-ℚ _ _ (leq-nonpositive-nonnegative-ℚ (neg-ℚ⁰⁺ q) q)) rational-abs-zero-leq-ℚ : (q : ℚ) → leq-ℚ zero-ℚ q → rational-abs-ℚ q = q rational-abs-zero-leq-ℚ q 0≤q = - ap rational-ℚ⁰⁺ (abs-rational-ℚ⁰⁺ (q , is-nonnegative-leq-zero-ℚ q 0≤q)) + ap rational-ℚ⁰⁺ (abs-rational-ℚ⁰⁺ (q , is-nonnegative-leq-zero-ℚ 0≤q)) rational-abs-leq-zero-ℚ : (q : ℚ) → leq-ℚ q zero-ℚ → rational-abs-ℚ q = neg-ℚ q rational-abs-leq-zero-ℚ q q≤0 = - left-leq-right-max-ℚ - ( q) - ( neg-ℚ q) - ( transitive-leq-ℚ - ( q) - ( zero-ℚ) - ( neg-ℚ q) - ( neg-leq-ℚ q zero-ℚ q≤0) - ( q≤0)) + equational-reasoning + rational-abs-ℚ q + = rational-abs-ℚ (neg-ℚ q) + by inv (rational-abs-neg-ℚ q) + = neg-ℚ q + by + ap rational-ℚ⁰⁺ + ( abs-rational-ℚ⁰⁺ (neg-ℚ⁰⁻ (q , is-nonpositive-leq-zero-ℚ q≤0))) ``` ### The absolute value of a positive rational number is the number itself @@ -139,16 +142,6 @@ abstract ap rational-ℚ⁰⁺ (abs-rational-ℚ⁰⁺ (nonnegative-ℚ⁺ q)) ``` -### The absolute value of the negation of `q` is the absolute value of `q` - -```agda -abstract - abs-neg-ℚ : (q : ℚ) → abs-ℚ (neg-ℚ q) = abs-ℚ q - abs-neg-ℚ q = - eq-ℚ⁰⁺ - ( ap (max-ℚ (neg-ℚ q)) (neg-neg-ℚ q) ∙ commutative-max-ℚ _ _) -``` - ### `q` is less than or equal to `abs-ℚ q` ```agda @@ -163,36 +156,31 @@ abstract ### The absolute value of `q` is zero iff `q` is zero ```agda -opaque - unfolding neg-ℚ - - eq-zero-eq-abs-zero-ℚ : (q : ℚ) → abs-ℚ q = zero-ℚ⁰⁺ → q = zero-ℚ - eq-zero-eq-abs-zero-ℚ q abs=0 = - rec-coproduct - ( λ 0≤q → - antisymmetric-leq-ℚ - ( q) - ( zero-ℚ) - ( tr (leq-ℚ q) (ap rational-ℚ⁰⁺ abs=0) (leq-abs-ℚ q)) 0≤q) - ( λ q≤0 → - antisymmetric-leq-ℚ - ( q) - ( zero-ℚ) - ( q≤0) - ( tr - ( leq-ℚ zero-ℚ) - ( neg-neg-ℚ q) - ( neg-leq-ℚ - ( neg-ℚ q) - ( zero-ℚ) - ( tr - ( leq-ℚ (neg-ℚ q)) - ( ap rational-ℚ⁰⁺ abs=0) - ( neg-leq-abs-ℚ q))))) - ( linear-leq-ℚ zero-ℚ q) +abstract + eq-zero-eq-abs-zero-ℚ : {q : ℚ} → abs-ℚ q = zero-ℚ⁰⁺ → q = zero-ℚ + eq-zero-eq-abs-zero-ℚ {q} abs=0 = + antisymmetric-leq-ℚ + ( q) + ( zero-ℚ) + ( transitive-leq-ℚ + ( q) + ( rational-abs-ℚ q) + ( zero-ℚ) + ( leq-eq-ℚ _ _ (ap rational-ℚ⁰⁺ abs=0)) + ( leq-abs-ℚ q)) + ( binary-tr + ( leq-ℚ) + ( ap (neg-ℚ ∘ rational-ℚ⁰⁺) abs=0 ∙ neg-zero-ℚ) + ( neg-neg-ℚ q) + ( neg-leq-ℚ (neg-leq-abs-ℚ q))) abs-zero-ℚ : abs-ℚ zero-ℚ = zero-ℚ⁰⁺ - abs-zero-ℚ = eq-ℚ⁰⁺ (left-leq-right-max-ℚ _ _ (refl-leq-ℚ zero-ℚ)) + abs-zero-ℚ = + eq-ℚ⁰⁺ + ( equational-reasoning + max-ℚ zero-ℚ (neg-ℚ zero-ℚ) + = max-ℚ zero-ℚ zero-ℚ by ap-max-ℚ refl neg-zero-ℚ + = zero-ℚ by idempotent-max-ℚ zero-ℚ) ``` ### The triangle inequality @@ -236,78 +224,53 @@ abstract ### `|ab| = |a||b|` ```agda -opaque - unfolding neg-ℚ - - abs-left-mul-nonnegative-ℚ : - (q : ℚ) (p : ℚ⁰⁺) → abs-ℚ (rational-ℚ⁰⁺ p *ℚ q) = p *ℚ⁰⁺ abs-ℚ q - abs-left-mul-nonnegative-ℚ q p⁰⁺@(p , nonneg-p) with linear-leq-ℚ zero-ℚ q - ... | inl 0≤q = - eq-ℚ⁰⁺ - ( equational-reasoning - rational-abs-ℚ (p *ℚ q) - = p *ℚ q - by - ap - ( rational-ℚ⁰⁺) - ( abs-rational-ℚ⁰⁺ - ( p⁰⁺ *ℚ⁰⁺ (q , is-nonnegative-leq-zero-ℚ q 0≤q))) - = p *ℚ rational-abs-ℚ q - by ap (p *ℚ_) (inv (rational-abs-zero-leq-ℚ q 0≤q))) - ... | inr q≤0 = - eq-ℚ⁰⁺ - ( equational-reasoning - rational-abs-ℚ (p *ℚ q) - = rational-abs-ℚ (neg-ℚ (p *ℚ q)) - by ap rational-ℚ⁰⁺ (inv (abs-neg-ℚ (p *ℚ q))) - = rational-abs-ℚ (p *ℚ neg-ℚ q) - by ap rational-abs-ℚ (inv (right-negative-law-mul-ℚ p q)) - = p *ℚ neg-ℚ q - by - ap - ( rational-ℚ⁰⁺) - ( abs-rational-ℚ⁰⁺ - ( p⁰⁺ *ℚ⁰⁺ - ( neg-ℚ q , - is-nonnegative-leq-zero-ℚ - ( neg-ℚ q) - ( neg-leq-ℚ q zero-ℚ q≤0)))) - = p *ℚ rational-abs-ℚ q - by ap (p *ℚ_) (inv (rational-abs-leq-zero-ℚ q q≤0))) +abstract + rational-abs-left-mul-nonnegative-ℚ : + (q : ℚ) (p : ℚ⁰⁺) → + rational-abs-ℚ (rational-ℚ⁰⁺ p *ℚ q) = rational-ℚ⁰⁺ p *ℚ rational-abs-ℚ q + rational-abs-left-mul-nonnegative-ℚ q p⁰⁺@(p , _) = + equational-reasoning + rational-abs-ℚ (p *ℚ q) + = max-ℚ (p *ℚ q) (p *ℚ neg-ℚ q) + by ap-max-ℚ refl (inv (right-negative-law-mul-ℚ p q)) + = p *ℚ rational-abs-ℚ q + by inv (left-distributive-mul-max-ℚ⁰⁺ p⁰⁺ _ _) abs-mul-ℚ : (p q : ℚ) → abs-ℚ (p *ℚ q) = abs-ℚ p *ℚ⁰⁺ abs-ℚ q - abs-mul-ℚ p q with linear-leq-ℚ zero-ℚ p - ... | inl 0≤p = + abs-mul-ℚ p q = eq-ℚ⁰⁺ - ( equational-reasoning - rational-abs-ℚ (p *ℚ q) - = p *ℚ rational-abs-ℚ q - by - ap - ( rational-ℚ⁰⁺) - ( abs-left-mul-nonnegative-ℚ - ( q) - ( p , is-nonnegative-leq-zero-ℚ p 0≤p)) - = rational-abs-ℚ p *ℚ rational-abs-ℚ q - by ap (_*ℚ rational-abs-ℚ q) (inv (rational-abs-zero-leq-ℚ p 0≤p))) - ... | inr p≤0 = - eq-ℚ⁰⁺ - ( equational-reasoning - rational-abs-ℚ (p *ℚ q) - = rational-abs-ℚ (neg-ℚ (p *ℚ q)) - by ap rational-ℚ⁰⁺ (inv (abs-neg-ℚ (p *ℚ q))) - = rational-abs-ℚ (neg-ℚ p *ℚ q) - by ap rational-abs-ℚ (inv (left-negative-law-mul-ℚ p q)) - = neg-ℚ p *ℚ rational-abs-ℚ q - by - ap - ( rational-ℚ⁰⁺) - ( abs-left-mul-nonnegative-ℚ - ( q) - ( neg-ℚ p , - is-nonnegative-leq-zero-ℚ (neg-ℚ p) (neg-leq-ℚ p zero-ℚ p≤0))) - = rational-abs-ℚ p *ℚ rational-abs-ℚ q - by ap (_*ℚ rational-abs-ℚ q) (inv (rational-abs-leq-zero-ℚ p p≤0))) + ( rec-coproduct + ( λ is-nonpos-p → + equational-reasoning + rational-abs-ℚ (p *ℚ q) + = rational-abs-ℚ (neg-ℚ (p *ℚ q)) + by inv (rational-abs-neg-ℚ _) + = rational-abs-ℚ (neg-ℚ p *ℚ q) + by ap rational-abs-ℚ (inv (left-negative-law-mul-ℚ p q)) + = neg-ℚ p *ℚ rational-abs-ℚ q + by + rational-abs-left-mul-nonnegative-ℚ + ( q) + ( neg-ℚ⁰⁻ (p , is-nonpos-p)) + = rational-abs-ℚ p *ℚ rational-abs-ℚ q + by + ap-mul-ℚ + ( inv + ( rational-abs-leq-zero-ℚ + ( p) + ( leq-zero-is-nonpositive-ℚ is-nonpos-p))) + ( refl)) + ( λ is-nonneg-p → + equational-reasoning + rational-abs-ℚ (p *ℚ q) + = p *ℚ rational-abs-ℚ q + by rational-abs-left-mul-nonnegative-ℚ q (p , is-nonneg-p) + = rational-abs-ℚ p *ℚ rational-abs-ℚ q + by + ap-mul-ℚ + ( inv (ap rational-ℚ⁰⁺ (abs-rational-ℚ⁰⁺ (p , is-nonneg-p)))) + ( refl)) + ( is-nonpositive-or-nonnegative-ℚ p)) abstract rational-abs-mul-ℚ : diff --git a/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md index cf3e298f8bb..fa24223764b 100644 --- a/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md @@ -35,12 +35,12 @@ nonnegative. ```agda opaque - unfolding add-ℚ + unfolding add-ℚ is-nonnegative-ℚ is-nonnegative-add-ℚ : - (p q : ℚ) → is-nonnegative-ℚ p → is-nonnegative-ℚ q → + {p q : ℚ} → is-nonnegative-ℚ p → is-nonnegative-ℚ q → is-nonnegative-ℚ (p +ℚ q) - is-nonnegative-add-ℚ p q nonneg-p nonneg-q = + is-nonnegative-add-ℚ {p} {q} nonneg-p nonneg-q = is-nonnegative-rational-fraction-ℤ ( is-nonnegative-add-fraction-ℤ { fraction-ℚ p} @@ -50,7 +50,7 @@ opaque add-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ add-ℚ⁰⁺ (p , nonneg-p) (q , nonneg-q) = - ( p +ℚ q , is-nonnegative-add-ℚ p q nonneg-p nonneg-q) + ( p +ℚ q , is-nonnegative-add-ℚ nonneg-p nonneg-q) infixl 35 _+ℚ⁰⁺_ _+ℚ⁰⁺_ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ @@ -73,7 +73,7 @@ abstract ( q) ( zero-ℚ) ( p) - ( leq-zero-is-nonnegative-ℚ p nonneg-p)) + ( leq-zero-is-nonnegative-ℚ nonneg-p)) is-inflationary-map-right-add-rational-ℚ⁰⁺ : (p : ℚ⁰⁺) → is-inflationary-map-Poset ℚ-Poset (_+ℚ rational-ℚ⁰⁺ p) diff --git a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md index 5b5cc12dc1b..85668704afe 100644 --- a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md @@ -57,7 +57,7 @@ positive. ```agda opaque - unfolding add-ℚ + unfolding add-ℚ is-positive-ℚ is-positive-add-ℚ : {x y : ℚ} → is-positive-ℚ x → is-positive-ℚ y → is-positive-ℚ (x +ℚ y) @@ -147,9 +147,7 @@ module _ ( rational-ℚ⁺ x) ( zero-ℚ) ( rational-ℚ⁺ y) - ( le-zero-is-positive-ℚ - ( rational-ℚ⁺ y) - ( is-positive-rational-ℚ⁺ y))) + ( le-zero-is-positive-ℚ (is-positive-rational-ℚ⁺ y))) le-right-add-ℚ⁺ : le-ℚ⁺ y (x +ℚ⁺ y) le-right-add-ℚ⁺ = @@ -160,9 +158,7 @@ module _ ( rational-ℚ⁺ y) ( zero-ℚ) ( rational-ℚ⁺ x) - ( le-zero-is-positive-ℚ - ( rational-ℚ⁺ x) - ( is-positive-rational-ℚ⁺ x))) + ( le-zero-is-positive-ℚ (is-positive-rational-ℚ⁺ x))) ``` ### The positive difference of strictly inequal positive rational numbers @@ -268,9 +264,7 @@ abstract ( x) ( zero-ℚ) ( rational-ℚ⁺ d) - ( le-zero-is-positive-ℚ - ( rational-ℚ⁺ d) - ( is-positive-rational-ℚ⁺ d))) + ( le-zero-is-positive-ℚ (is-positive-rational-ℚ⁺ d))) le-right-add-rational-ℚ⁺ : (x : ℚ) (d : ℚ⁺) → le-ℚ x (x +ℚ (rational-ℚ⁺ d)) le-right-add-rational-ℚ⁺ x d = diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index 8d887c25a69..0603a977979 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -154,8 +154,7 @@ abstract ```agda opaque - unfolding add-ℚ - unfolding neg-ℚ + unfolding add-ℚ neg-ℚ left-inverse-law-add-ℚ : (x : ℚ) → (neg-ℚ x) +ℚ x = zero-ℚ left-inverse-law-add-ℚ x = @@ -199,7 +198,7 @@ opaque distributive-neg-add-ℚ : (x y : ℚ) → neg-ℚ (x +ℚ y) = neg-ℚ x +ℚ neg-ℚ y distributive-neg-add-ℚ (x , dxp) (y , dyp) = - ( inv (preserves-neg-rational-fraction-ℤ (x +fraction-ℤ y))) ∙ + ( inv (neg-rational-fraction-ℤ (x +fraction-ℤ y))) ∙ ( eq-ℚ-sim-fraction-ℤ ( neg-fraction-ℤ (x +fraction-ℤ y)) ( add-fraction-ℤ (neg-fraction-ℤ x) (neg-fraction-ℤ y)) diff --git a/src/elementary-number-theory/archimedean-property-positive-rational-numbers.lagda.md b/src/elementary-number-theory/archimedean-property-positive-rational-numbers.lagda.md index 3affd486cfb..458395e0a84 100644 --- a/src/elementary-number-theory/archimedean-property-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-positive-rational-numbers.lagda.md @@ -13,7 +13,6 @@ open import elementary-number-theory.archimedean-property-rational-numbers open import elementary-number-theory.integers open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers -open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers open import elementary-number-theory.natural-numbers open import elementary-number-theory.nonzero-natural-numbers open import elementary-number-theory.positive-rational-numbers @@ -22,7 +21,6 @@ open import elementary-number-theory.strict-inequality-positive-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.dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types @@ -57,7 +55,7 @@ abstract asymmetric-le-ℚ ( zero-ℚ) ( y) - ( le-zero-is-positive-ℚ y pos-y) + ( le-zero-is-positive-ℚ pos-y) ( tr ( le-ℚ y) ( equational-reasoning 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 59ab9240074..f2fdcf6a303 100644 --- a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md @@ -15,7 +15,7 @@ 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.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -42,7 +42,9 @@ of `ℚ` is that for any two an `n : ℕ` such that `y` is less than `n` as a rational number times `x`. ```agda -abstract +opaque + unfolding is-positive-ℚ + bound-archimedean-property-ℚ : (x y : ℚ) → is-positive-ℚ x → @@ -90,5 +92,5 @@ abstract exists-greater-natural-ℚ q = map-tot-exists ( λ _ → tr (le-ℚ q) (right-unit-law-mul-ℚ _)) - ( archimedean-property-ℚ one-ℚ q _) + ( archimedean-property-ℚ one-ℚ q (is-positive-rational-ℚ⁺ one-ℚ⁺)) ``` diff --git a/src/elementary-number-theory/difference-rational-numbers.lagda.md b/src/elementary-number-theory/difference-rational-numbers.lagda.md index 45b52b7ba80..21f068f27b5 100644 --- a/src/elementary-number-theory/difference-rational-numbers.lagda.md +++ b/src/elementary-number-theory/difference-rational-numbers.lagda.md @@ -183,7 +183,7 @@ abstract equational-reasoning rational-ℤ x -ℚ rational-ℤ y = rational-ℤ x +ℚ rational-ℤ (neg-ℤ y) - by ap (rational-ℤ x +ℚ_) (inv (preserves-neg-rational-ℤ y)) + by ap (rational-ℤ x +ℚ_) (inv (neg-rational-ℤ y)) = rational-ℤ (x -ℤ y) by add-rational-ℤ x (neg-ℤ y) ``` diff --git a/src/elementary-number-theory/distance-rational-numbers.lagda.md b/src/elementary-number-theory/distance-rational-numbers.lagda.md index 8576576ca69..066898a463e 100644 --- a/src/elementary-number-theory/distance-rational-numbers.lagda.md +++ b/src/elementary-number-theory/distance-rational-numbers.lagda.md @@ -141,7 +141,7 @@ abstract ( equational-reasoning p *ℚ rational-dist-ℚ q r = rational-abs-ℚ (p *ℚ (q -ℚ r)) - by ap rational-ℚ⁰⁺ (inv (abs-left-mul-nonnegative-ℚ _ p⁰⁺)) + by inv (rational-abs-left-mul-nonnegative-ℚ _ p⁰⁺) = rational-abs-ℚ (p *ℚ q +ℚ p *ℚ (neg-ℚ r)) by ap rational-abs-ℚ (left-distributive-mul-add-ℚ p q (neg-ℚ r)) = rational-abs-ℚ (p *ℚ q -ℚ p *ℚ r) diff --git a/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md new file mode 100644 index 00000000000..3c35c0ff087 --- /dev/null +++ b/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md @@ -0,0 +1,106 @@ +# Inequalities between positive, negative, nonnegative, and nonpositive rational numbers + +```agda +module elementary-number-theory.inequalities-positive-and-negative-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.negative-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.nonpositive-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.dependent-pair-types +``` + +
+ +## Idea + +This page describes +[inequalities](elementary-number-theory.inequalities-rational-numbers.md) and +[strict inequalities](elementary-number-theory.strict-inequality-rational-numbers.md) +between [positive](elementary-number-theory.positive-rational-numbers.md), +[negative](elementary-number-theory.negative-rational-numbers.md), +[nonnegative](elementary-number-theory.nonnegative-rational-numbers.md), and +[nonpositive](elementary-number-theory.nonpositive-rational-numbers.md) +[rational numbers](elementary-number-theory.rational-numbers.md). + +## Properties + +### Inequalities between rational numbers with different signs + +Some inequalities can be deduced directly from the sign of a rational number: +for example, every negative rational number is less than every nonnegative +rational number. + +#### Any negative rational number is less than any nonnegative rational number + +```agda +abstract + le-negative-nonnegative-ℚ : + (p : ℚ⁻) (q : ℚ⁰⁺) → le-ℚ (rational-ℚ⁻ p) (rational-ℚ⁰⁺ q) + le-negative-nonnegative-ℚ (p , neg-p) (q , nonneg-q) = + concatenate-le-leq-ℚ p zero-ℚ q + ( le-zero-is-negative-ℚ neg-p) + ( leq-zero-is-nonnegative-ℚ nonneg-q) + + leq-negative-nonnegative-ℚ : + (p : ℚ⁻) (q : ℚ⁰⁺) → leq-ℚ (rational-ℚ⁻ p) (rational-ℚ⁰⁺ q) + leq-negative-nonnegative-ℚ p q = leq-le-ℚ (le-negative-nonnegative-ℚ p q) +``` + +#### A nonpositive rational number is less than a positive rational number + +```agda +abstract + le-nonpositive-positive-ℚ : + (p : ℚ⁰⁻) (q : ℚ⁺) → le-ℚ (rational-ℚ⁰⁻ p) (rational-ℚ⁺ q) + le-nonpositive-positive-ℚ (p , nonpos-p) (q , pos-q) = + concatenate-leq-le-ℚ p zero-ℚ q + ( leq-zero-is-nonpositive-ℚ nonpos-p) + ( le-zero-is-positive-ℚ pos-q) +``` + +#### A nonpositive rational number is less than or equal to a nonnegative rational number + +```agda +abstract + leq-nonpositive-nonnegative-ℚ : + (p : ℚ⁰⁻) (q : ℚ⁰⁺) → leq-ℚ (rational-ℚ⁰⁻ p) (rational-ℚ⁰⁺ q) + leq-nonpositive-nonnegative-ℚ (p , nonpos-p) (q , nonneg-q) = + transitive-leq-ℚ p zero-ℚ q + ( leq-zero-is-nonnegative-ℚ nonneg-q) + ( leq-zero-is-nonpositive-ℚ nonpos-p) +``` + +### Inequalities showing the sign of a rational number + +#### If `p < q` and `p` is nonnegative, then `q` is positive + +```agda +abstract + is-positive-le-ℚ⁰⁺ : + (p : ℚ⁰⁺) (q : ℚ) → le-ℚ (rational-ℚ⁰⁺ p) q → is-positive-ℚ q + is-positive-le-ℚ⁰⁺ (p , nonneg-p) q pImports + +```agda +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.multiplication-positive-rational-numbers +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers +open import elementary-number-theory.negative-rational-numbers +open import elementary-number-theory.positive-and-negative-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.identity-types +open import foundation.transport-along-identifications +``` + + + +## Idea + +The product of two +[negative rational numbers](elementary-number-theory.negative-rational-numbers.md) +is their [product](elementary-number-theory.multiplication-rational-numbers.md) +as [rational numbers](elementary-number-theory.rational-numbers.md), and is +[positive](elementary-number-theory.positive-rational-numbers.md). + +## Properties + +### The product of two negative rational numbers is positive + +```agda +opaque + unfolding is-negative-ℚ + + is-positive-mul-negative-ℚ : + {x y : ℚ} → is-negative-ℚ x → is-negative-ℚ y → is-positive-ℚ (x *ℚ y) + is-positive-mul-negative-ℚ {x} {y} P Q = + tr + ( is-positive-ℚ) + ( negative-law-mul-ℚ x y) + ( is-positive-mul-ℚ P Q) +``` + +### Multiplication by a negative rational number reverses inequality + +```agda +module _ + (p : ℚ⁻) + (q r : ℚ) + (H : leq-ℚ q r) + where + + abstract + reverses-leq-right-mul-ℚ⁻ : leq-ℚ (r *ℚ rational-ℚ⁻ p) (q *ℚ rational-ℚ⁻ p) + reverses-leq-right-mul-ℚ⁻ = + binary-tr + ( leq-ℚ) + ( negative-law-mul-ℚ r (rational-ℚ⁻ p)) + ( negative-law-mul-ℚ q (rational-ℚ⁻ p)) + ( preserves-leq-right-mul-ℚ⁺ + ( neg-ℚ⁻ p) + ( neg-ℚ r) + ( neg-ℚ q) + ( neg-leq-ℚ H)) +``` + +### Multiplication by a negative rational number reverses strict inequality + +```agda +module _ + (p : ℚ⁻) + (q r : ℚ) + (H : le-ℚ q r) + where + + abstract + reverses-le-right-mul-ℚ⁻ : le-ℚ (r *ℚ rational-ℚ⁻ p) (q *ℚ rational-ℚ⁻ p) + reverses-le-right-mul-ℚ⁻ = + binary-tr + ( le-ℚ) + ( negative-law-mul-ℚ r (rational-ℚ⁻ p)) + ( negative-law-mul-ℚ q (rational-ℚ⁻ p)) + ( preserves-le-right-mul-ℚ⁺ + ( neg-ℚ⁻ p) + ( neg-ℚ r) + ( neg-ℚ q) + ( neg-le-ℚ H)) + + reverses-le-left-mul-ℚ⁻ : le-ℚ (rational-ℚ⁻ p *ℚ r) (rational-ℚ⁻ p *ℚ q) + reverses-le-left-mul-ℚ⁻ = + binary-tr + ( le-ℚ) + ( commutative-mul-ℚ _ _) + ( commutative-mul-ℚ _ _) + ( reverses-le-right-mul-ℚ⁻) +``` + +### The negative rational numbers are invertible elements of the multiplicative monoid of rational numbers + +```agda +opaque + inv-ℚ⁻ : ℚ⁻ → ℚ⁻ + inv-ℚ⁻ q = neg-ℚ⁺ (inv-ℚ⁺ (neg-ℚ⁻ q)) + + left-inverse-law-mul-ℚ⁻ : + (q : ℚ⁻) → rational-ℚ⁻ (inv-ℚ⁻ q) *ℚ rational-ℚ⁻ q = one-ℚ + left-inverse-law-mul-ℚ⁻ q = + inv (swap-neg-mul-ℚ _ _) ∙ + ap rational-ℚ⁺ (left-inverse-law-mul-ℚ⁺ (neg-ℚ⁻ q)) + + right-inverse-law-mul-ℚ⁻ : + (q : ℚ⁻) → rational-ℚ⁻ q *ℚ rational-ℚ⁻ (inv-ℚ⁻ q) = one-ℚ + right-inverse-law-mul-ℚ⁻ q = + swap-neg-mul-ℚ _ _ ∙ + ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ (neg-ℚ⁻ q)) +``` + +### Inversion reverses inequality on negative rational numbers + +```agda +opaque + unfolding inv-ℚ⁻ + + reverses-leq-inv-ℚ⁻ : + (p q : ℚ⁻) → leq-ℚ⁻ p q → leq-ℚ⁻ (inv-ℚ⁻ q) (inv-ℚ⁻ p) + reverses-leq-inv-ℚ⁻ p q p≤q = + neg-leq-ℚ + ( inv-leq-ℚ⁺ + ( neg-ℚ⁻ q) + ( neg-ℚ⁻ p) + ( neg-leq-ℚ p≤q)) +``` + +### Inversion reverses strict inequality on negative rational numbers + +```agda +opaque + unfolding inv-ℚ⁻ + + reverses-le-inv-ℚ⁻ : + (p q : ℚ⁻) → le-ℚ⁻ p q → le-ℚ⁻ (inv-ℚ⁻ q) (inv-ℚ⁻ p) + reverses-le-inv-ℚ⁻ p q pImports ```agda +open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.inequality-integers open import elementary-number-theory.inequality-nonnegative-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.maximum-rational-numbers +open import elementary-number-theory.minimum-rational-numbers 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 @@ -23,6 +26,8 @@ open import elementary-number-theory.rational-numbers open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.identity-types + +open import order-theory.order-preserving-maps-total-orders ``` @@ -41,12 +46,12 @@ itself nonnegative. ```agda opaque - unfolding mul-ℚ + unfolding is-nonnegative-ℚ mul-ℚ is-nonnegative-mul-ℚ : - (p q : ℚ) → is-nonnegative-ℚ p → is-nonnegative-ℚ q → + {p q : ℚ} → is-nonnegative-ℚ p → is-nonnegative-ℚ q → is-nonnegative-ℚ (p *ℚ q) - is-nonnegative-mul-ℚ p q nonneg-p nonneg-q = + is-nonnegative-mul-ℚ {p} {q} nonneg-p nonneg-q = is-nonnegative-rational-fraction-ℤ ( is-nonnegative-mul-nonnegative-fraction-ℤ { fraction-ℚ p} @@ -56,7 +61,7 @@ opaque mul-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ mul-ℚ⁰⁺ (p , nonneg-p) (q , nonneg-q) = - ( p *ℚ q , is-nonnegative-mul-ℚ p q nonneg-p nonneg-q) + ( p *ℚ q , is-nonnegative-mul-ℚ nonneg-p nonneg-q) infixl 35 _*ℚ⁰⁺_ _*ℚ⁰⁺_ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ @@ -77,8 +82,7 @@ abstract ```agda opaque - unfolding leq-ℚ-Prop - unfolding mul-ℚ + unfolding is-nonnegative-ℚ leq-ℚ-Prop mul-ℚ preserves-leq-right-mul-ℚ⁰⁺ : (p : ℚ⁰⁺) (q r : ℚ) → leq-ℚ q r → @@ -123,3 +127,33 @@ abstract ( preserves-leq-right-mul-ℚ⁰⁺ s _ _ p≤q) ( preserves-leq-left-mul-ℚ⁰⁺ p _ _ r≤s) ``` + +### Multiplication by a nonnegative rational number distributes over the minimum operation + +```agda +abstract + left-distributive-mul-min-ℚ⁰⁺ : + (p : ℚ⁰⁺) (q r : ℚ) → + rational-ℚ⁰⁺ p *ℚ min-ℚ q r = + min-ℚ (rational-ℚ⁰⁺ p *ℚ q) (rational-ℚ⁰⁺ p *ℚ r) + left-distributive-mul-min-ℚ⁰⁺ p⁰⁺@(p , _) = + distributive-map-hom-min-Total-Order + ( ℚ-Total-Order) + ( ℚ-Total-Order) + ( p *ℚ_ , preserves-leq-left-mul-ℚ⁰⁺ p⁰⁺) +``` + +### Multiplication by a nonnegative rational number distributes over the maximum operation + +```agda +abstract + left-distributive-mul-max-ℚ⁰⁺ : + (p : ℚ⁰⁺) (q r : ℚ) → + rational-ℚ⁰⁺ p *ℚ max-ℚ q r = + max-ℚ (rational-ℚ⁰⁺ p *ℚ q) (rational-ℚ⁰⁺ p *ℚ r) + left-distributive-mul-max-ℚ⁰⁺ p⁰⁺@(p , _) = + distributive-map-hom-max-Total-Order + ( ℚ-Total-Order) + ( ℚ-Total-Order) + ( p *ℚ_ , preserves-leq-left-mul-ℚ⁰⁺ p⁰⁺) +``` diff --git a/src/elementary-number-theory/multiplication-nonpositive-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-nonpositive-rational-numbers.lagda.md index 42b601b5891..f5bb0a14227 100644 --- a/src/elementary-number-theory/multiplication-nonpositive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-nonpositive-rational-numbers.lagda.md @@ -1,4 +1,4 @@ -# Multiplication of nonpositive rational numbers +# Multiplication by nonpositive rational numbers ```agda {-# OPTIONS --lossy-unification #-} @@ -36,7 +36,9 @@ as [rational numbers](elementary-number-theory.rational-numbers.md), and is ## Definition ```agda -abstract +opaque + unfolding is-nonpositive-ℚ + is-nonnegative-mul-nonpositive-ℚ : {x y : ℚ} → is-nonpositive-ℚ x → is-nonpositive-ℚ y → is-nonnegative-ℚ (x *ℚ y) @@ -44,7 +46,7 @@ abstract tr ( is-nonnegative-ℚ) ( negative-law-mul-ℚ x y) - ( is-nonnegative-mul-ℚ _ _ nonpos-x nonpos-y) + ( is-nonnegative-mul-ℚ nonpos-x nonpos-y) mul-nonpositive-ℚ : ℚ⁰⁻ → ℚ⁰⁻ → ℚ⁰⁺ mul-nonpositive-ℚ (p , nonpos-p) (q , nonpos-q) = @@ -56,7 +58,9 @@ mul-nonpositive-ℚ (p , nonpos-p) (q , nonpos-q) = ### Multiplication by a nonpositive rational number reverses inequality ```agda -abstract +opaque + unfolding is-nonpositive-ℚ + reverses-leq-right-mul-ℚ⁰⁻ : (p : ℚ⁰⁻) (q r : ℚ) → leq-ℚ q r → leq-ℚ (r *ℚ rational-ℚ⁰⁻ p) (q *ℚ rational-ℚ⁰⁻ p) @@ -65,6 +69,6 @@ abstract ( leq-ℚ) ( ap neg-ℚ (right-negative-law-mul-ℚ r p) ∙ neg-neg-ℚ _) ( ap neg-ℚ (right-negative-law-mul-ℚ q p) ∙ neg-neg-ℚ _) - ( neg-leq-ℚ _ _ + ( neg-leq-ℚ ( preserves-leq-right-mul-ℚ⁰⁺ (neg-ℚ p , nonpos-p) q r q≤r)) ``` diff --git a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md index bf55c8c8e74..63a7876bb54 100644 --- a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md @@ -1,4 +1,4 @@ -# Multiplication of positive, negative, and nonnegative rational numbers +# Multiplication by positive, negative, and nonnegative rational numbers ```agda module elementary-number-theory.multiplication-positive-and-negative-rational-numbers where @@ -25,8 +25,9 @@ open import foundation.transport-along-identifications ## Idea When we have information about the sign of the factors of a -[rational product](elementary-number-theory.multiplication-rational-numbers.md), -we can deduce the sign of their product too. +[rational](elementary-number-theory.rational-numbers.md) +[product](elementary-number-theory.multiplication-rational-numbers.md), we can +deduce the sign of their product too. ## Lemmas @@ -34,7 +35,7 @@ we can deduce the sign of their product too. ```agda opaque - unfolding mul-ℚ + unfolding is-positive-ℚ mul-ℚ is-negative-mul-positive-negative-ℚ : {x y : ℚ} → is-positive-ℚ x → is-negative-ℚ y → is-negative-ℚ (x *ℚ y) diff --git a/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md index fd4ad86379d..1c43c7546b9 100644 --- a/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md @@ -1,4 +1,4 @@ -# Multiplication of positive rational numbers +# Multiplication by positive rational numbers ```agda {-# OPTIONS --lossy-unification #-} @@ -59,7 +59,7 @@ itself positive. ```agda opaque - unfolding mul-ℚ + unfolding is-positive-ℚ mul-ℚ is-positive-mul-ℚ : {x y : ℚ} → is-positive-ℚ x → is-positive-ℚ y → is-positive-ℚ (x *ℚ y) @@ -147,7 +147,7 @@ module _ where opaque - unfolding mul-ℚ + unfolding is-positive-ℚ mul-ℚ inv-is-positive-ℚ : ℚ pr1 inv-is-positive-ℚ = inv-is-positive-fraction-ℤ (fraction-ℚ x) P @@ -215,8 +215,7 @@ module _ ```agda opaque - unfolding le-ℚ-Prop - unfolding mul-ℚ + unfolding is-positive-ℚ le-ℚ-Prop mul-ℚ preserves-le-left-mul-ℚ⁺ : (p : ℚ⁺) (q r : ℚ) → @@ -256,8 +255,7 @@ opaque ```agda opaque - unfolding leq-ℚ-Prop - unfolding mul-ℚ + unfolding is-positive-ℚ leq-ℚ-Prop mul-ℚ preserves-leq-left-mul-ℚ⁺ : (p : ℚ⁺) (q r : ℚ) → leq-ℚ q r → diff --git a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md index 37fa4dc41d4..4db36a011c9 100644 --- a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md @@ -138,7 +138,9 @@ module _ ( H) ( inv K) - abstract + opaque + unfolding is-negative-ℚ + is-invertible-element-ring-is-nonzero-ℚ : is-nonzero-ℚ x → is-invertible-element-Ring ring-ℚ x is-invertible-element-ring-is-nonzero-ℚ H = diff --git a/src/elementary-number-theory/negation-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/negation-closed-intervals-rational-numbers.lagda.md index 27b21b5e0b1..36d0cbef5f4 100644 --- a/src/elementary-number-theory/negation-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/negation-closed-intervals-rational-numbers.lagda.md @@ -32,7 +32,7 @@ of a ```agda neg-closed-interval-ℚ : closed-interval-ℚ → closed-interval-ℚ neg-closed-interval-ℚ ((a , b) , a≤b) = - ((neg-ℚ b , neg-ℚ a) , neg-leq-ℚ a b a≤b) + ((neg-ℚ b , neg-ℚ a) , neg-leq-ℚ a≤b) ``` ## Properties @@ -48,7 +48,7 @@ abstract ( neg-closed-interval-ℚ [a,b]) ( neg-closed-interval-ℚ [c,d]) is-interior-neg-closed-interval-ℚ ((a , b) , _) ((c , d) , _) (aImports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.disjunction +open import foundation.function-types +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import order-theory.order-preserving-maps-posets +open import order-theory.total-orders +``` + + + +## Idea + +A map `f : P → Q` between the underlying types of two +[total orders](order-theory.total-orders.md) is said to be +{{#concept "order preserving" Agda=hom-Total-Order Disambiguation="map between total orders"}} +if `x ≤ y` in `P` implies `f x ≤ f y` in `Q`. + +## Definition + +### Order preserving maps + +```agda +module _ + {l1 l2 l3 l4 : Level} (P : Total-Order l1 l2) (Q : Total-Order l3 l4) + where + + preserves-order-prop-Total-Order : + (type-Total-Order P → type-Total-Order Q) → Prop (l1 ⊔ l2 ⊔ l4) + preserves-order-prop-Total-Order = + preserves-order-prop-Poset (poset-Total-Order P) (poset-Total-Order Q) + + preserves-order-Total-Order : + (type-Total-Order P → type-Total-Order Q) → UU (l1 ⊔ l2 ⊔ l4) + preserves-order-Total-Order = + preserves-order-Poset (poset-Total-Order P) (poset-Total-Order Q) + + is-prop-preserves-order-Total-Order : + (f : type-Total-Order P → type-Total-Order Q) → + is-prop (preserves-order-Total-Order f) + is-prop-preserves-order-Total-Order = + is-prop-preserves-order-Poset (poset-Total-Order P) (poset-Total-Order Q) + + hom-set-Total-Order : Set (l1 ⊔ l2 ⊔ l3 ⊔ l4) + hom-set-Total-Order = + set-subset + ( function-Set (type-Total-Order P) (set-Total-Order Q)) + ( preserves-order-prop-Total-Order) + + hom-Total-Order : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + hom-Total-Order = type-Set hom-set-Total-Order + + map-hom-Total-Order : + hom-Total-Order → type-Total-Order P → type-Total-Order Q + map-hom-Total-Order = + map-hom-Poset (poset-Total-Order P) (poset-Total-Order Q) + + preserves-order-hom-Total-Order : + (f : hom-Total-Order) → preserves-order-Total-Order (map-hom-Total-Order f) + preserves-order-hom-Total-Order = + preserves-order-hom-Poset (poset-Total-Order P) (poset-Total-Order Q) +``` + +## Properties + +### Order-preserving maps distribute over the minimum operation + +```agda +module _ + {l1 l2 l3 l4 : Level} (P : Total-Order l1 l2) (Q : Total-Order l3 l4) + (f : hom-Total-Order P Q) + where + + abstract + distributive-map-hom-min-Total-Order : + (x y : type-Total-Order P) → + map-hom-Total-Order P Q f (min-Total-Order P x y) = + min-Total-Order Q + ( map-hom-Total-Order P Q f x) + ( map-hom-Total-Order P Q f y) + distributive-map-hom-min-Total-Order x y = + elim-disjunction + ( Id-Prop + ( set-Total-Order Q) + ( map-hom-Total-Order P Q f (min-Total-Order P x y)) + ( min-Total-Order Q + ( map-hom-Total-Order P Q f x) + ( map-hom-Total-Order P Q f y))) + ( λ x≤y → + equational-reasoning + map-hom-Total-Order P Q f (min-Total-Order P x y) + = map-hom-Total-Order P Q f x + by + ap + ( map-hom-Total-Order P Q f) + ( left-leq-right-min-Total-Order P x y x≤y) + = + min-Total-Order Q + ( map-hom-Total-Order P Q f x) + ( map-hom-Total-Order P Q f y) + by + inv + ( left-leq-right-min-Total-Order Q _ _ + ( preserves-order-hom-Total-Order P Q f x y x≤y))) + ( λ y≤x → + equational-reasoning + map-hom-Total-Order P Q f (min-Total-Order P x y) + = map-hom-Total-Order P Q f y + by + ap + ( map-hom-Total-Order P Q f) + ( right-leq-left-min-Total-Order P x y y≤x) + = + min-Total-Order Q + ( map-hom-Total-Order P Q f x) + ( map-hom-Total-Order P Q f y) + by + inv + ( right-leq-left-min-Total-Order Q _ _ + ( preserves-order-hom-Total-Order P Q f y x y≤x))) + ( is-total-Total-Order P x y) +``` + +### Order-preserving maps distribute over the maximum operation + +```agda +module _ + {l1 l2 l3 l4 : Level} (P : Total-Order l1 l2) (Q : Total-Order l3 l4) + (f : hom-Total-Order P Q) + where + + abstract + distributive-map-hom-max-Total-Order : + (x y : type-Total-Order P) → + map-hom-Total-Order P Q f (max-Total-Order P x y) = + max-Total-Order Q + ( map-hom-Total-Order P Q f x) + ( map-hom-Total-Order P Q f y) + distributive-map-hom-max-Total-Order x y = + elim-disjunction + ( Id-Prop + ( set-Total-Order Q) + ( map-hom-Total-Order P Q f (max-Total-Order P x y)) + ( max-Total-Order Q + ( map-hom-Total-Order P Q f x) + ( map-hom-Total-Order P Q f y))) + ( λ x≤y → + equational-reasoning + map-hom-Total-Order P Q f (max-Total-Order P x y) + = map-hom-Total-Order P Q f y + by + ap + ( map-hom-Total-Order P Q f) + ( left-leq-right-max-Total-Order P x y x≤y) + = + max-Total-Order Q + ( map-hom-Total-Order P Q f x) + ( map-hom-Total-Order P Q f y) + by + inv + ( left-leq-right-max-Total-Order Q _ _ + ( preserves-order-hom-Total-Order P Q f x y x≤y))) + ( λ y≤x → + equational-reasoning + map-hom-Total-Order P Q f (max-Total-Order P x y) + = map-hom-Total-Order P Q f x + by + ap + ( map-hom-Total-Order P Q f) + ( right-leq-left-max-Total-Order P x y y≤x) + = + max-Total-Order Q + ( map-hom-Total-Order P Q f x) + ( map-hom-Total-Order P Q f y) + by + inv + ( right-leq-left-max-Total-Order Q _ _ + ( preserves-order-hom-Total-Order P Q f y x y≤x))) + ( is-total-Total-Order P x y) +``` 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 6d2c68d957e..d970a20b789 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -12,6 +12,8 @@ module real-numbers.addition-lower-dedekind-real-numbers where 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.negative-rational-numbers +open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-positive-rational-numbers @@ -213,9 +215,7 @@ module _ {l : Level} (x : lower-ℝ l) where - opaque - unfolding neg-ℚ - + abstract right-unit-law-add-lower-ℝ : add-lower-ℝ x (lower-real-ℚ zero-ℚ) = x right-unit-law-add-lower-ℝ = eq-sim-cut-lower-ℝ @@ -231,8 +231,7 @@ module _ ( is-in-cut-diff-rational-ℚ⁺-lower-ℝ ( x) ( p) - ( neg-ℚ q , - is-positive-le-zero-ℚ (neg-ℚ q) (neg-le-ℚ q zero-ℚ q<0)) + ( neg-ℚ⁻ (q , is-negative-le-zero-ℚ q<0)) ( p Date: Fri, 10 Oct 2025 16:00:52 -0700 Subject: [PATCH 002/134] make pre-commit --- .../archimedean-property-rational-numbers.lagda.md | 2 +- ...inequalities-positive-and-negative-rational-numbers.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 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 f2fdcf6a303..f9f12927fbf 100644 --- a/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md +++ b/src/elementary-number-theory/archimedean-property-rational-numbers.lagda.md @@ -15,7 +15,7 @@ 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.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers diff --git a/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md index 3c35c0ff087..ac81b04c088 100644 --- a/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md @@ -23,7 +23,7 @@ open import foundation.dependent-pair-types ## Idea This page describes -[inequalities](elementary-number-theory.inequalities-rational-numbers.md) and +[inequalities](elementary-number-theory.inequality-rational-numbers.md) and [strict inequalities](elementary-number-theory.strict-inequality-rational-numbers.md) between [positive](elementary-number-theory.positive-rational-numbers.md), [negative](elementary-number-theory.negative-rational-numbers.md), From 9dc460aca8f3d50aede96fcb7222cc61ea54219b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 11 Oct 2025 21:23:22 -0700 Subject: [PATCH 003/134] Update --- ...ive-and-negative-rational-numbers.lagda.md | 15 ++++++++ .../negative-rational-numbers.lagda.md | 6 ++-- .../nonnegative-rational-numbers.lagda.md | 25 ++++++++++++++ .../nonpositive-rational-numbers.lagda.md | 13 +++++++ ...ive-and-negative-rational-numbers.lagda.md | 20 +++++------ .../rational-numbers.lagda.md | 3 +- ...e-roots-positive-rational-numbers.lagda.md | 2 +- .../squares-rational-numbers.lagda.md | 6 ++-- .../nonnegative-real-numbers.lagda.md | 7 ++-- ...re-roots-nonnegative-real-numbers.lagda.md | 34 ++++++++++--------- 10 files changed, 93 insertions(+), 38 deletions(-) diff --git a/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md index ac81b04c088..414fa5ecdc3 100644 --- a/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md @@ -11,6 +11,7 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.nonpositive-rational-numbers +open import elementary-number-theory.positive-and-negative-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 @@ -55,6 +56,20 @@ abstract leq-negative-nonnegative-ℚ p q = leq-le-ℚ (le-negative-nonnegative-ℚ p q) ``` +#### Any negative rational number is less than any positive rational number + +```agda +abstract + le-negative-positive-ℚ : + (p : ℚ⁻) (q : ℚ⁺) → le-ℚ (rational-ℚ⁻ p) (rational-ℚ⁺ q) + le-negative-positive-ℚ p q = + le-negative-nonnegative-ℚ p (nonnegative-ℚ⁺ q) + + leq-negative-positive-ℚ : + (p : ℚ⁻) (q : ℚ⁺) → leq-ℚ (rational-ℚ⁻ p) (rational-ℚ⁺ q) + leq-negative-positive-ℚ p q = leq-le-ℚ (le-negative-positive-ℚ p q) +``` + #### A nonpositive rational number is less than a positive rational number ```agda diff --git a/src/elementary-number-theory/negative-rational-numbers.lagda.md b/src/elementary-number-theory/negative-rational-numbers.lagda.md index 2dc1da8460c..20a8ca5963f 100644 --- a/src/elementary-number-theory/negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/negative-rational-numbers.lagda.md @@ -264,13 +264,13 @@ opaque mediant-zero-ℚ⁻ : ℚ⁻ → ℚ⁻ mediant-zero-ℚ⁻ (q , is-neg-q) = ( mediant-ℚ q zero-ℚ , - is-negative-le-zero-ℚ _ - ( le-right-mediant-ℚ _ _ (le-zero-is-negative-ℚ q is-neg-q))) + is-negative-le-zero-ℚ + ( le-right-mediant-ℚ _ _ (le-zero-is-negative-ℚ is-neg-q))) le-mediant-zero-ℚ⁻ : (q : ℚ⁻) → le-ℚ (rational-ℚ⁻ q) (rational-ℚ⁻ (mediant-zero-ℚ⁻ q)) le-mediant-zero-ℚ⁻ (q , is-neg-q) = - le-left-mediant-ℚ _ _ (le-zero-is-negative-ℚ q is-neg-q) + le-left-mediant-ℚ _ _ (le-zero-is-negative-ℚ is-neg-q) rational-mediant-zero-ℚ⁻ : ℚ⁻ → ℚ rational-mediant-zero-ℚ⁻ q = rational-ℚ⁻ (mediant-zero-ℚ⁻ q) diff --git a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md index 621a2787146..b7d23dc65ad 100644 --- a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md @@ -249,3 +249,28 @@ abstract nonnegative-diff-leq-ℚ : (x y : ℚ) → leq-ℚ x y → ℚ⁰⁺ nonnegative-diff-leq-ℚ x y x≤y = (y -ℚ x , is-nonnegative-diff-leq-ℚ x y x≤y) ``` + +### If `x ≤ y` and `x` is nonnegative, then `y` is nonnegative + +```agda +abstract + is-nonnegative-leq-ℚ⁰⁺ : + (x : ℚ⁰⁺) (y : ℚ) → leq-ℚ (rational-ℚ⁰⁺ x) y → + is-nonnegative-ℚ y + is-nonnegative-leq-ℚ⁰⁺ (x , is-nonneg-x) y x≤y = + is-nonnegative-leq-zero-ℚ + ( transitive-leq-ℚ zero-ℚ x y + ( x≤y) + ( leq-zero-is-nonnegative-ℚ is-nonneg-x)) +``` + +### If `x < y` and `x` is nonnegative, then `y` is nonnegative + +```agda +abstract + is-nonnegative-le-ℚ⁰⁺ : + (x : ℚ⁰⁺) (y : ℚ) → le-ℚ (rational-ℚ⁰⁺ x) y → + is-nonnegative-ℚ y + is-nonnegative-le-ℚ⁰⁺ x y xImports ```agda +open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.minimum-rational-numbers @@ -88,8 +89,7 @@ module _ ( λ is-nonneg-neg-one-ℚ → ex-falso ( not-is-negative-is-nonnegative-ℚ - ( is-nonneg-neg-one-ℚ) - ( is-negative-rational-ℚ⁻ neg-one-ℚ⁻))) + ( is-negative-rational-ℚ⁻ neg-one-ℚ⁻ , is-nonneg-neg-one-ℚ))) is-inhabited-upper-cut-sqrt-ℝ⁰⁺ : is-inhabited-subtype upper-cut-sqrt-ℝ⁰⁺ is-inhabited-upper-cut-sqrt-ℝ⁰⁺ = @@ -122,8 +122,8 @@ module _ λ is-nonneg-q' → ex-falso ( not-is-negative-is-nonnegative-ℚ - ( is-nonneg-q') - ( is-negative-rational-ℚ⁻ (mediant-zero-ℚ⁻ q⁻))))) + ( is-negative-rational-ℚ⁻ (mediant-zero-ℚ⁻ q⁻) , + is-nonneg-q')))) ( λ q=0 → do ( q' , 0 Date: Tue, 14 Oct 2025 14:29:14 -0700 Subject: [PATCH 004/134] Progress --- ...wers-of-positive-rational-numbers.lagda.md | 0 ...wers-of-positive-rational-numbers.lagda.md | 49 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 src/elementary-number-theory/integer-powers-of-positive-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/powers-of-positive-rational-numbers.lagda.md diff --git a/src/elementary-number-theory/integer-powers-of-positive-rational-numbers.lagda.md b/src/elementary-number-theory/integer-powers-of-positive-rational-numbers.lagda.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/elementary-number-theory/powers-of-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-of-positive-rational-numbers.lagda.md new file mode 100644 index 00000000000..33cb3b88f16 --- /dev/null +++ b/src/elementary-number-theory/powers-of-positive-rational-numbers.lagda.md @@ -0,0 +1,49 @@ +# Powers of positive rational numbers + +```agda +module elementary-number-theory.powers-of-positive-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.multiplication-positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.bernoullis-inequality-positive-rational-numbers +open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.addition-natural-numbers +open import elementary-number-theory.multiplication-natural-numbers +open import group-theory.powers-of-elements-groups +``` + +
+ +## Idea + +The +{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ}} +on the [positive](elementary-number-theory.positive-rational-numbers.md) +[rational numbers](elementary-number-theory.rational-numbers.md) `n x ↦ xⁿ`, +which is defined by [iteratively](foundation.iterating-functions.md) multiplying +`x` with itself `n` times. + +## Definition + +```agda +power-ℚ⁺ : ℕ → ℚ⁺ → ℚ⁺ +power-ℚ⁺ = power-Group group-mul-ℚ⁺ +``` + +## Properties + +### For any positive rational `ε`, `(1 + ε)ⁿ` grows without bound + +```agda + +``` + +## See also + +- [Powers of elements of a group](group-theory.powers-of-elements-groups.md) From 9963c472ee1f912b12ac290301d97d71fb48dd33 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 14 Oct 2025 14:49:48 -0700 Subject: [PATCH 005/134] Updates --- .../maximum-nonnegative-rational-numbers.lagda.md | 2 +- .../minimum-positive-rational-numbers.lagda.md | 6 +++--- ...positive-and-negative-rational-numbers.lagda.md | 6 ++++-- ...positive-and-negative-rational-numbers.lagda.md | 14 ++++++++++++++ ...icative-inverses-positive-real-numbers.lagda.md | 5 ++++- src/real-numbers/positive-real-numbers.lagda.md | 1 - 6 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/elementary-number-theory/maximum-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-nonnegative-rational-numbers.lagda.md index e58e1036a68..2160af8be1b 100644 --- a/src/elementary-number-theory/maximum-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/maximum-nonnegative-rational-numbers.lagda.md @@ -37,7 +37,7 @@ abstract {p q : ℚ} → is-nonnegative-ℚ p → is-nonnegative-ℚ q → is-nonnegative-ℚ (max-ℚ p q) is-nonnegative-max-ℚ {p} {q} is-nonneg-p _ = - is-nonnegative-leq-zero-ℚ _ + is-nonnegative-leq-zero-ℚ ( transitive-leq-ℚ ( zero-ℚ) ( p) diff --git a/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md b/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md index 47c9745f5f1..b5ccc9867d9 100644 --- a/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md @@ -39,10 +39,10 @@ abstract is-positive-min-ℚ : {p q : ℚ} → is-positive-ℚ p → is-positive-ℚ q → is-positive-ℚ (min-ℚ p q) is-positive-min-ℚ {p} {q} is-pos-p is-pos-q = - is-positive-le-zero-ℚ _ + is-positive-le-zero-ℚ ( le-min-le-both-ℚ zero-ℚ p q - ( le-zero-is-positive-ℚ p is-pos-p) - ( le-zero-is-positive-ℚ q is-pos-q)) + ( le-zero-is-positive-ℚ is-pos-p) + ( le-zero-is-positive-ℚ is-pos-q)) min-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ min-ℚ⁺ (p , is-pos-p) (q , is-pos-q) = diff --git a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md index 72a497095a0..8cbfc9610b2 100644 --- a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md @@ -71,7 +71,7 @@ mul-negative-positive-ℚ (p , neg-p) (q , pos-q) = ```agda opaque - unfolding mul-ℚ + unfolding is-nonnegative-ℚ is-positive-ℚ mul-ℚ is-nonnegative-mul-nonnegative-positive-ℚ : {x y : ℚ} → is-nonnegative-ℚ x → is-positive-ℚ y → is-nonnegative-ℚ (x *ℚ y) @@ -83,7 +83,9 @@ opaque ### The product of a nonpositive and a positive rational number is nonpositive ```agda -abstract +opaque + unfolding is-nonpositive-ℚ + is-nonpositive-mul-nonpositive-positive-ℚ : {x y : ℚ} → is-nonpositive-ℚ x → is-positive-ℚ y → is-nonpositive-ℚ (x *ℚ y) is-nonpositive-mul-nonpositive-positive-ℚ is-nonneg-neg-x is-pos-y = diff --git a/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md index a2f18c7d166..af6fead7f8f 100644 --- a/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md @@ -238,3 +238,17 @@ abstract ( le-zero-is-negative-ℚ N) ( leq-zero-is-nonnegative-ℚ NN) ``` + +### A rational number is not both positive and nonpositive + +```agda +abstract + not-is-positive-is-nonpositive-ℚ : + {x : ℚ} → ¬ (is-positive-ℚ x × is-nonpositive-ℚ x) + not-is-positive-is-nonpositive-ℚ {x} (P , NP) = + not-leq-le-ℚ + ( zero-ℚ) + ( x) + ( le-zero-is-positive-ℚ P) + ( leq-zero-is-nonpositive-ℚ NP) +``` diff --git a/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md index b8a957c53fe..384e7af4c8a 100644 --- a/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md @@ -19,6 +19,7 @@ open import elementary-number-theory.multiplication-closed-intervals-rational-nu open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers open import elementary-number-theory.nonpositive-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers @@ -443,7 +444,9 @@ module _ ( inv-le-ℚ⁺ p⁺ q⁺ p Date: Tue, 14 Oct 2025 16:39:53 -0700 Subject: [PATCH 006/134] More properties --- src/elementary-number-theory.lagda.md | 2 + ...roup-of-positive-rational-numbers.lagda.md | 8 + ...wers-of-positive-rational-numbers.lagda.md | 49 ---- .../powers-positive-rational-numbers.lagda.md | 256 ++++++++++++++++++ .../powers-of-elements-groups.lagda.md | 25 ++ ...ve-inverses-positive-real-numbers.lagda.md | 2 +- 6 files changed, 292 insertions(+), 50 deletions(-) delete mode 100644 src/elementary-number-theory/powers-of-positive-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/powers-positive-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 542cd4fce73..f53d1f7c1a8 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -108,6 +108,7 @@ open import elementary-number-theory.infinitude-of-primes public open import elementary-number-theory.initial-segments-natural-numbers public open import elementary-number-theory.integer-fractions public open import elementary-number-theory.integer-partitions public +open import elementary-number-theory.integer-powers-of-positive-rational-numbers public open import elementary-number-theory.integers public open import elementary-number-theory.interior-closed-intervals-rational-numbers public open import elementary-number-theory.intersections-closed-intervals-rational-numbers public @@ -179,6 +180,7 @@ open import elementary-number-theory.positive-integers public open import elementary-number-theory.positive-rational-numbers public open import elementary-number-theory.powers-integers public open import elementary-number-theory.powers-of-two public +open import elementary-number-theory.powers-positive-rational-numbers public open import elementary-number-theory.prime-numbers public open import elementary-number-theory.products-of-natural-numbers public open import elementary-number-theory.proper-closed-intervals-rational-numbers public diff --git a/src/elementary-number-theory/multiplicative-group-of-positive-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-group-of-positive-rational-numbers.lagda.md index 9ccaea277e7..3b2ca16a732 100644 --- a/src/elementary-number-theory/multiplicative-group-of-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplicative-group-of-positive-rational-numbers.lagda.md @@ -236,3 +236,11 @@ abstract ( is-retraction-left-div-ℚ⁺ p⁺ r) ( preserves-le-left-mul-ℚ⁺ (inv-ℚ⁺ p⁺) _ _ pqImports - -```agda -open import elementary-number-theory.multiplication-positive-rational-numbers -open import elementary-number-theory.rational-numbers -open import elementary-number-theory.positive-rational-numbers -open import elementary-number-theory.bernoullis-inequality-positive-rational-numbers -open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers -open import elementary-number-theory.natural-numbers -open import elementary-number-theory.addition-natural-numbers -open import elementary-number-theory.multiplication-natural-numbers -open import group-theory.powers-of-elements-groups -``` - - - -## Idea - -The -{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ}} -on the [positive](elementary-number-theory.positive-rational-numbers.md) -[rational numbers](elementary-number-theory.rational-numbers.md) `n x ↦ xⁿ`, -which is defined by [iteratively](foundation.iterating-functions.md) multiplying -`x` with itself `n` times. - -## Definition - -```agda -power-ℚ⁺ : ℕ → ℚ⁺ → ℚ⁺ -power-ℚ⁺ = power-Group group-mul-ℚ⁺ -``` - -## Properties - -### For any positive rational `ε`, `(1 + ε)ⁿ` grows without bound - -```agda - -``` - -## See also - -- [Powers of elements of a group](group-theory.powers-of-elements-groups.md) diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md new file mode 100644 index 00000000000..7815783fb91 --- /dev/null +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -0,0 +1,256 @@ +# Powers of positive rational numbers + +```agda +module elementary-number-theory.powers-positive-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-natural-numbers +open import elementary-number-theory.addition-positive-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.arithmetic-sequences-positive-rational-numbers +open import elementary-number-theory.bernoullis-inequality-positive-rational-numbers +open import elementary-number-theory.geometric-sequences-positive-rational-numbers +open import elementary-number-theory.inequality-positive-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.multiplication-natural-numbers +open import elementary-number-theory.multiplication-positive-rational-numbers +open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.nonzero-natural-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-positive-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.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.propositional-truncations +open import foundation.transport-along-identifications + +open import group-theory.multiples-of-elements-abelian-groups +open import group-theory.powers-of-elements-groups +``` + +
+ +## Idea + +The +{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ}} +on the [positive](elementary-number-theory.positive-rational-numbers.md) +[rational numbers](elementary-number-theory.rational-numbers.md) `n x ↦ xⁿ`, +which is defined by [iteratively](foundation.iterating-functions.md) multiplying +`x` with itself `n` times. + +## Definition + +```agda +power-ℚ⁺ : ℕ → ℚ⁺ → ℚ⁺ +power-ℚ⁺ = power-Group group-mul-ℚ⁺ +``` + +## Properties + +### `1ⁿ = 1` + +```agda +power-one-ℚ⁺ : (n : ℕ) → power-ℚ⁺ n one-ℚ⁺ = one-ℚ⁺ +power-one-ℚ⁺ = power-unit-Group group-mul-ℚ⁺ +``` + +### `qⁿ⁺¹ = qⁿq` + +```agda +power-succ-ℚ⁺ : (n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (succ-ℕ n) q = power-ℚ⁺ n q *ℚ⁺ q +power-succ-ℚ⁺ = power-succ-Group group-mul-ℚ⁺ +``` + +### `qⁿ = qqⁿ` + +```agda +power-succ-ℚ⁺' : (n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (succ-ℕ n) q = q *ℚ⁺ power-ℚ⁺ n q +power-succ-ℚ⁺' = power-succ-Group' group-mul-ℚ⁺ +``` + +### `qᵐ⁺ⁿ = qᵐqⁿ` + +```agda +distributive-power-add-ℚ⁺ : + (m n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (m +ℕ n) q = power-ℚ⁺ m q *ℚ⁺ power-ℚ⁺ n q +distributive-power-add-ℚ⁺ m n _ = distributive-power-add-Group group-mul-ℚ⁺ m n +``` + +### `(pq)ⁿ=pⁿqⁿ` + +```agda +left-distributive-power-mul-ℚ⁺ : + (n : ℕ) (p q : ℚ⁺) → power-ℚ⁺ n (p *ℚ⁺ q) = power-ℚ⁺ n p *ℚ⁺ power-ℚ⁺ n q +left-distributive-power-mul-ℚ⁺ n p q = + left-distributive-multiple-add-Ab abelian-group-mul-ℚ⁺ n +``` + +### `pᵐⁿ = (pᵐ)ⁿ` + +```agda +power-mul-ℚ⁺ : + (m n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (m *ℕ n) q = power-ℚ⁺ n (power-ℚ⁺ m q) +power-mul-ℚ⁺ m n q = power-mul-Group group-mul-ℚ⁺ m n +``` + +### If `p` and `q` are positive rational numbers with `p < q` and `n` is nonzero, `pⁿ < qⁿ` + +```agda +abstract + preserves-le-power-ℚ⁺ : + (n : ℕ) (p q : ℚ⁺) → le-ℚ⁺ p q → is-nonzero-ℕ n → + le-ℚ⁺ (power-ℚ⁺ n p) (power-ℚ⁺ n q) + preserves-le-power-ℚ⁺ 0 p q p Date: Tue, 14 Oct 2025 16:43:12 -0700 Subject: [PATCH 007/134] Back out integer powers --- .../integer-powers-of-positive-rational-numbers.lagda.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/elementary-number-theory/integer-powers-of-positive-rational-numbers.lagda.md diff --git a/src/elementary-number-theory/integer-powers-of-positive-rational-numbers.lagda.md b/src/elementary-number-theory/integer-powers-of-positive-rational-numbers.lagda.md deleted file mode 100644 index e69de29bb2d..00000000000 From a69f76695b653a7178ad6277aa99b9713adfd65f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 14 Oct 2025 20:45:33 -0700 Subject: [PATCH 008/134] Fixes --- src/elementary-number-theory.lagda.md | 1 - .../powers-positive-rational-numbers.lagda.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index f53d1f7c1a8..be3b1e0ad01 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -108,7 +108,6 @@ open import elementary-number-theory.infinitude-of-primes public open import elementary-number-theory.initial-segments-natural-numbers public open import elementary-number-theory.integer-fractions public open import elementary-number-theory.integer-partitions public -open import elementary-number-theory.integer-powers-of-positive-rational-numbers public open import elementary-number-theory.integers public open import elementary-number-theory.interior-closed-intervals-rational-numbers public open import elementary-number-theory.intersections-closed-intervals-rational-numbers public diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index 7815783fb91..811235c5420 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -45,7 +45,7 @@ open import group-theory.powers-of-elements-groups ## Idea The -{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ}} +{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ⁺}} on the [positive](elementary-number-theory.positive-rational-numbers.md) [rational numbers](elementary-number-theory.rational-numbers.md) `n x ↦ xⁿ`, which is defined by [iteratively](foundation.iterating-functions.md) multiplying From ea3fa12c81c28d11c10da66a04d9e42d6a7baf98 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 15 Oct 2025 09:15:11 -0700 Subject: [PATCH 009/134] Fix merge --- ...ion-positive-and-negative-rational-numbers.lagda.md | 6 ++---- .../positive-and-negative-rational-numbers.lagda.md | 10 ---------- ...ltiplicative-inverses-nonzero-real-numbers.lagda.md | 4 +--- src/real-numbers/negative-real-numbers.lagda.md | 4 ++-- .../square-roots-nonnegative-real-numbers.lagda.md | 10 ++-------- 5 files changed, 7 insertions(+), 27 deletions(-) diff --git a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md index e8b894794eb..eda0123b5e7 100644 --- a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md @@ -148,8 +148,7 @@ abstract ( y≠0) ( λ is-pos-y → ex-falso - ( is-not-negative-and-positive-ℚ - ( x *ℚ y) + ( not-is-negative-is-positive-ℚ ( is-negative-mul-negative-positive-ℚ is-neg-x is-pos-y , is-pos-xy)))) ( λ x=0 → @@ -164,8 +163,7 @@ abstract ( y) ( λ is-neg-y → ex-falso - ( is-not-negative-and-positive-ℚ - ( x *ℚ y) + ( not-is-negative-is-positive-ℚ ( is-negative-mul-positive-negative-ℚ is-pos-x is-neg-y , is-pos-xy))) ( y≠0) diff --git a/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md index ed64fcf3fdf..00e1063ad38 100644 --- a/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md @@ -239,16 +239,6 @@ abstract ( leq-zero-is-nonnegative-ℚ NN) ``` -### A positive rational number is not negative - -```agda -abstract - not-is-negative-is-positive-ℚ : - {q : ℚ} → is-positive-ℚ q → ¬ (is-negative-ℚ q) - not-is-negative-is-positive-ℚ {q} is-pos-q = - not-is-negative-is-nonnegative-ℚ (is-nonnegative-is-positive-ℚ q is-pos-q) -``` - ### If `p < q` and `q` is nonpositive, then `p` is negative ```agda diff --git a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md index 79a1985bb71..43c55227e30 100644 --- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md @@ -151,7 +151,6 @@ opaque let is-positive-mul p q {r} lb1 lb2 = is-positive-le-zero-ℚ - ( p *ℚ q) ( concatenate-le-leq-ℚ ( zero-ℚ) ( lower-bound-mul-closed-interval-ℚ [a,b] [c,d]) @@ -173,8 +172,7 @@ opaque ( intro-exists (b , is-neg-b) x Date: Wed, 15 Oct 2025 09:29:06 -0700 Subject: [PATCH 010/134] make pre-commit --- .../multiplicative-inverses-positive-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md index 384e7af4c8a..06b96659065 100644 --- a/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md @@ -10,6 +10,7 @@ module real-numbers.multiplicative-inverses-positive-real-numbers where ```agda open import elementary-number-theory.closed-intervals-rational-numbers +open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.maximum-positive-rational-numbers open import elementary-number-theory.maximum-rational-numbers @@ -19,7 +20,6 @@ open import elementary-number-theory.multiplication-closed-intervals-rational-nu open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers -open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers open import elementary-number-theory.nonpositive-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers From df308e2425fb8b1863565200a6a735d7e5afc7cd Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 15 Oct 2025 13:58:21 -0700 Subject: [PATCH 011/134] Fix merge --- ...ication-negative-rational-numbers.lagda.md | 19 +++++++++---------- .../squares-real-numbers.lagda.md | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/elementary-number-theory/multiplication-negative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-negative-rational-numbers.lagda.md index 5a41de6f305..bd53f0e9c03 100644 --- a/src/elementary-number-theory/multiplication-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-negative-rational-numbers.lagda.md @@ -21,18 +21,9 @@ open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-functions open import foundation.binary-transport +open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.transport-along-identifications -open import elementary-number-theory.multiplication-positive-rational-numbers -open import elementary-number-theory.multiplication-rational-numbers -open import elementary-number-theory.negative-integer-fractions -open import elementary-number-theory.negative-rational-numbers -open import elementary-number-theory.positive-and-negative-rational-numbers -open import elementary-number-theory.positive-integer-fractions -open import elementary-number-theory.positive-rational-numbers -open import elementary-number-theory.rational-numbers - -open import foundation.dependent-pair-types ``` @@ -60,6 +51,14 @@ opaque ( is-positive-ℚ) ( negative-law-mul-ℚ x y) ( is-positive-mul-ℚ P Q) + +mul-ℚ⁻ : ℚ⁻ → ℚ⁻ → ℚ⁺ +mul-ℚ⁻ (p , is-neg-p) (q , is-neg-q) = + (p *ℚ q , is-positive-mul-negative-ℚ is-neg-p is-neg-q) + +infixl 40 _*ℚ⁻_ +_*ℚ⁻_ : ℚ⁻ → ℚ⁻ → ℚ⁺ +_*ℚ⁻_ = mul-ℚ⁻ ``` ### Multiplication by a negative rational number reverses inequality diff --git a/src/real-numbers/squares-real-numbers.lagda.md b/src/real-numbers/squares-real-numbers.lagda.md index 9420a081e95..c6fedb34990 100644 --- a/src/real-numbers/squares-real-numbers.lagda.md +++ b/src/real-numbers/squares-real-numbers.lagda.md @@ -98,7 +98,7 @@ opaque ( is-positive-prop-ℚ q) ( λ a'<0 → let - a'⁻ = (a' , is-negative-le-zero-ℚ a' a'<0) + a'⁻ = (a' , is-negative-le-zero-ℚ a'<0) in is-positive-le-ℚ⁺ ( a'⁻ *ℚ⁻ a'⁻) @@ -113,7 +113,7 @@ opaque ( [a',b'][a',b'] Date: Fri, 17 Oct 2025 09:39:18 -0700 Subject: [PATCH 012/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- ...lities-positive-and-negative-rational-numbers.lagda.md | 8 ++++---- ...cation-positive-and-negative-rational-numbers.lagda.md | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md index 414fa5ecdc3..88ac145a32a 100644 --- a/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequalities-positive-and-negative-rational-numbers.lagda.md @@ -36,8 +36,8 @@ between [positive](elementary-number-theory.positive-rational-numbers.md), ### Inequalities between rational numbers with different signs -Some inequalities can be deduced directly from the sign of a rational number: -for example, every negative rational number is less than every nonnegative +Some inequalities can be deduced directly from the sign of a rational number. +For example, every negative rational number is less than every nonnegative rational number. #### Any negative rational number is less than any nonnegative rational number @@ -70,7 +70,7 @@ abstract leq-negative-positive-ℚ p q = leq-le-ℚ (le-negative-positive-ℚ p q) ``` -#### A nonpositive rational number is less than a positive rational number +#### A nonpositive rational number is less than any positive rational number ```agda abstract @@ -82,7 +82,7 @@ abstract ( le-zero-is-positive-ℚ pos-q) ``` -#### A nonpositive rational number is less than or equal to a nonnegative rational number +#### A nonpositive rational number is less than or equal to any nonnegative rational number ```agda abstract diff --git a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md index eda0123b5e7..39db46c6512 100644 --- a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md @@ -30,8 +30,7 @@ open import foundation.transport-along-identifications ## Idea When we have information about the sign of the factors of a -[rational](elementary-number-theory.rational-numbers.md) -[product](elementary-number-theory.multiplication-rational-numbers.md), we can +[product](elementary-number-theory.multiplication-rational-numbers.md) of [rational numbers](elementary-number-theory.rational-numbers.md), we can deduce the sign of their product too. ## Lemmas From daa9fc084e696aa8775564973cdcc2804bd7e3aa Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 17 Oct 2025 09:43:42 -0700 Subject: [PATCH 013/134] Respond to review comments --- ...positive-and-negative-rational-numbers.lagda.md | 9 +++++---- ...positive-and-negative-rational-numbers.lagda.md | 14 +++++++------- .../order-preserving-maps-posets.lagda.md | 2 +- .../order-preserving-maps-total-orders.lagda.md | 2 +- ...licative-inverses-nonzero-real-numbers.lagda.md | 2 +- ...icative-inverses-positive-real-numbers.lagda.md | 2 +- .../square-roots-nonnegative-real-numbers.lagda.md | 10 +++++----- 7 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md index 39db46c6512..4cbe0a91112 100644 --- a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md @@ -30,8 +30,9 @@ open import foundation.transport-along-identifications ## Idea When we have information about the sign of the factors of a -[product](elementary-number-theory.multiplication-rational-numbers.md) of [rational numbers](elementary-number-theory.rational-numbers.md), we can -deduce the sign of their product too. +[product](elementary-number-theory.multiplication-rational-numbers.md) of +[rational numbers](elementary-number-theory.rational-numbers.md), we can deduce +the sign of their product too. ## Lemmas @@ -147,7 +148,7 @@ abstract ( y≠0) ( λ is-pos-y → ex-falso - ( not-is-negative-is-positive-ℚ + ( is-not-negative-and-positive-ℚ ( is-negative-mul-negative-positive-ℚ is-neg-x is-pos-y , is-pos-xy)))) ( λ x=0 → @@ -162,7 +163,7 @@ abstract ( y) ( λ is-neg-y → ex-falso - ( not-is-negative-is-positive-ℚ + ( is-not-negative-and-positive-ℚ ( is-negative-mul-positive-negative-ℚ is-pos-x is-neg-y , is-pos-xy))) ( y≠0) diff --git a/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md index 00e1063ad38..e0447a64bbc 100644 --- a/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md @@ -215,9 +215,9 @@ neg-ℚ⁰⁻ (q , is-nonpos-q) = ```agda abstract - not-is-negative-is-positive-ℚ : + is-not-negative-and-positive-ℚ : {x : ℚ} → ¬ (is-negative-ℚ x × is-positive-ℚ x) - not-is-negative-is-positive-ℚ {x} (N , P) = + is-not-negative-and-positive-ℚ {x} (N , P) = not-leq-le-ℚ ( zero-ℚ) ( x) @@ -229,9 +229,9 @@ abstract ```agda abstract - not-is-negative-is-nonnegative-ℚ : + is-not-negative-and-nonnegativeℚ : {x : ℚ} → ¬ (is-negative-ℚ x × is-nonnegative-ℚ x) - not-is-negative-is-nonnegative-ℚ {x} (N , NN) = + is-not-negative-and-nonnegativeℚ {x} (N , NN) = not-leq-le-ℚ ( x) ( zero-ℚ) @@ -239,13 +239,13 @@ abstract ( leq-zero-is-nonnegative-ℚ NN) ``` -### If `p < q` and `q` is nonpositive, then `p` is negative +### A rational number is not both positive and nonpositive ```agda abstract - not-is-positive-is-nonpositive-ℚ : + is-not-positive-and-nonpositive-ℚ : {x : ℚ} → ¬ (is-positive-ℚ x × is-nonpositive-ℚ x) - not-is-positive-is-nonpositive-ℚ {x} (P , NP) = + is-not-positive-and-nonpositive-ℚ {x} (P , NP) = not-leq-le-ℚ ( zero-ℚ) ( x) diff --git a/src/order-theory/order-preserving-maps-posets.lagda.md b/src/order-theory/order-preserving-maps-posets.lagda.md index 4d127ed3ff8..bcd5ba75286 100644 --- a/src/order-theory/order-preserving-maps-posets.lagda.md +++ b/src/order-theory/order-preserving-maps-posets.lagda.md @@ -27,7 +27,7 @@ open import order-theory.posets A map `f : P → Q` between the underlying types of two [posets](order-theory.posets.md) is said to be -{{#concept "order preserving" Agda=hom-Poset Disambiguation="map between posets"}} +{{#concept "order preserving" WD="increasing function" WDID=Q3075182 Agda=hom-Poset Disambiguation="map between posets"}} if `x ≤ y` in `P` implies `f x ≤ f y` in `Q`. ## Definition diff --git a/src/order-theory/order-preserving-maps-total-orders.lagda.md b/src/order-theory/order-preserving-maps-total-orders.lagda.md index f3ae69baab9..161a0dafd86 100644 --- a/src/order-theory/order-preserving-maps-total-orders.lagda.md +++ b/src/order-theory/order-preserving-maps-total-orders.lagda.md @@ -26,7 +26,7 @@ open import order-theory.total-orders A map `f : P → Q` between the underlying types of two [total orders](order-theory.total-orders.md) is said to be -{{#concept "order preserving" Agda=hom-Total-Order Disambiguation="map between total orders"}} +{{#concept "order preserving" WD="increasing function" WDID=Q3075182 Agda=hom-Total-Order Disambiguation="map between total orders"}} if `x ≤ y` in `P` implies `f x ≤ f y` in `Q`. ## Definition diff --git a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md index 43c55227e30..f91c1d2bfcf 100644 --- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md @@ -172,7 +172,7 @@ opaque ( intro-exists (b , is-neg-b) x Date: Fri, 17 Oct 2025 10:07:16 -0700 Subject: [PATCH 014/134] Progress --- .../powers-rational-numbers.lagda.md | 228 ++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 src/elementary-number-theory/powers-rational-numbers.lagda.md diff --git a/src/elementary-number-theory/powers-rational-numbers.lagda.md b/src/elementary-number-theory/powers-rational-numbers.lagda.md new file mode 100644 index 00000000000..ee922d0fad0 --- /dev/null +++ b/src/elementary-number-theory/powers-rational-numbers.lagda.md @@ -0,0 +1,228 @@ +# Powers of rational numbers + +```agda +module elementary-number-theory.powers-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.multiplicative-monoid-of-rational-numbers +open import group-theory.powers-of-elements-monoids +open import foundation.identity-types +``` + +
+ +## Idea + +The +{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ⁺}} +on the [positive](elementary-number-theory.positive-rational-numbers.md) +[rational numbers](elementary-number-theory.rational-numbers.md) `n x ↦ xⁿ`, +which is defined by [iteratively](foundation.iterating-functions.md) multiplying +`x` with itself `n` times. + +## Definition + +```agda +power-ℚ⁺ : ℕ → ℚ⁺ → ℚ⁺ +power-ℚ⁺ = power-Group group-mul-ℚ⁺ +``` + +## Properties + +### `1ⁿ = 1` + +```agda +power-one-ℚ⁺ : (n : ℕ) → power-ℚ⁺ n one-ℚ⁺ = one-ℚ⁺ +power-one-ℚ⁺ = power-unit-Group group-mul-ℚ⁺ +``` + +### `qⁿ⁺¹ = qⁿq` + +```agda +power-succ-ℚ⁺ : (n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (succ-ℕ n) q = power-ℚ⁺ n q *ℚ⁺ q +power-succ-ℚ⁺ = power-succ-Group group-mul-ℚ⁺ +``` + +### `qⁿ = qqⁿ` + +```agda +power-succ-ℚ⁺' : (n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (succ-ℕ n) q = q *ℚ⁺ power-ℚ⁺ n q +power-succ-ℚ⁺' = power-succ-Group' group-mul-ℚ⁺ +``` + +### `qᵐ⁺ⁿ = qᵐqⁿ` + +```agda +distributive-power-add-ℚ⁺ : + (m n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (m +ℕ n) q = power-ℚ⁺ m q *ℚ⁺ power-ℚ⁺ n q +distributive-power-add-ℚ⁺ m n _ = distributive-power-add-Group group-mul-ℚ⁺ m n +``` + +### `(pq)ⁿ=pⁿqⁿ` + +```agda +left-distributive-power-mul-ℚ⁺ : + (n : ℕ) (p q : ℚ⁺) → power-ℚ⁺ n (p *ℚ⁺ q) = power-ℚ⁺ n p *ℚ⁺ power-ℚ⁺ n q +left-distributive-power-mul-ℚ⁺ n p q = + left-distributive-multiple-add-Ab abelian-group-mul-ℚ⁺ n +``` + +### `pᵐⁿ = (pᵐ)ⁿ` + +```agda +power-mul-ℚ⁺ : + (m n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (m *ℕ n) q = power-ℚ⁺ n (power-ℚ⁺ m q) +power-mul-ℚ⁺ m n q = power-mul-Group group-mul-ℚ⁺ m n +``` + +### If `p` and `q` are positive rational numbers with `p < q` and `n` is nonzero, `pⁿ < qⁿ` + +```agda +abstract + preserves-le-power-ℚ⁺ : + (n : ℕ) (p q : ℚ⁺) → le-ℚ⁺ p q → is-nonzero-ℕ n → + le-ℚ⁺ (power-ℚ⁺ n p) (power-ℚ⁺ n q) + preserves-le-power-ℚ⁺ 0 p q p Date: Fri, 17 Oct 2025 10:07:41 -0700 Subject: [PATCH 015/134] Clarify concept disambiguation --- .../powers-positive-rational-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index 811235c5420..789446dfa67 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -45,7 +45,7 @@ open import group-theory.powers-of-elements-groups ## Idea The -{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ⁺}} +{{#concept "power operation" Disambiguation="a positive rational number to a natural number power" Agda=power-ℚ⁺}} on the [positive](elementary-number-theory.positive-rational-numbers.md) [rational numbers](elementary-number-theory.rational-numbers.md) `n x ↦ xⁿ`, which is defined by [iteratively](foundation.iterating-functions.md) multiplying From e0a24b825f0e63177d5c9fe62c33c3a092b47e2d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 17 Oct 2025 10:08:06 -0700 Subject: [PATCH 016/134] Progress --- .../powers-rational-numbers.lagda.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/elementary-number-theory/powers-rational-numbers.lagda.md b/src/elementary-number-theory/powers-rational-numbers.lagda.md index ee922d0fad0..2f5c88228e5 100644 --- a/src/elementary-number-theory/powers-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-rational-numbers.lagda.md @@ -17,11 +17,10 @@ open import foundation.identity-types ## Idea The -{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ⁺}} -on the [positive](elementary-number-theory.positive-rational-numbers.md) -[rational numbers](elementary-number-theory.rational-numbers.md) `n x ↦ xⁿ`, -which is defined by [iteratively](foundation.iterating-functions.md) multiplying -`x` with itself `n` times. +{{#concept "power operation" Disambiguation="raising a rational number to a natural number power" Agda=power-ℚ}} +on the [rational numbers](elementary-number-theory.rational-numbers.md) +`n x ↦ xⁿ`, is defined by [iteratively](foundation.iterating-functions.md) +multiplying `x` with itself `n` times. ## Definition From c5b3be8a204d11ef7e5b5439126af5ecc24b5cd4 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 17 Oct 2025 10:08:45 -0700 Subject: [PATCH 017/134] Further clarify doc --- .../powers-positive-rational-numbers.lagda.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index 789446dfa67..61a906395d3 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -47,9 +47,11 @@ open import group-theory.powers-of-elements-groups The {{#concept "power operation" Disambiguation="a positive rational number to a natural number power" Agda=power-ℚ⁺}} on the [positive](elementary-number-theory.positive-rational-numbers.md) -[rational numbers](elementary-number-theory.rational-numbers.md) `n x ↦ xⁿ`, -which is defined by [iteratively](foundation.iterating-functions.md) multiplying -`x` with itself `n` times. +[rational numbers](elementary-number-theory.rational-numbers.md) is the +operation `n x ↦ xⁿ`, which is defined by +[iteratively](foundation.iterating-functions.md) multiplying `x` with itself `n` +times. This file covers the case where `n` is a +[natural number](elementary-number-theory.natural-numbers.md). ## Definition From a8c35cd424f51abc92b27cfe1e0f2330b3df1025 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 17 Oct 2025 10:55:55 -0700 Subject: [PATCH 018/134] Progress --- src/elementary-number-theory.lagda.md | 1 + .../parity-natural-numbers.lagda.md | 10 +- .../powers-rational-numbers.lagda.md | 271 +++++++++--------- .../squares-rational-numbers.lagda.md | 24 ++ ...s-of-elements-commutative-monoids.lagda.md | 8 +- 5 files changed, 168 insertions(+), 146 deletions(-) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index be3b1e0ad01..0e518ce0112 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -180,6 +180,7 @@ open import elementary-number-theory.positive-rational-numbers public open import elementary-number-theory.powers-integers public open import elementary-number-theory.powers-of-two public open import elementary-number-theory.powers-positive-rational-numbers public +open import elementary-number-theory.powers-rational-numbers public open import elementary-number-theory.prime-numbers public open import elementary-number-theory.products-of-natural-numbers public open import elementary-number-theory.proper-closed-intervals-rational-numbers public diff --git a/src/elementary-number-theory/parity-natural-numbers.lagda.md b/src/elementary-number-theory/parity-natural-numbers.lagda.md index 503b5245425..9fa410e7f87 100644 --- a/src/elementary-number-theory/parity-natural-numbers.lagda.md +++ b/src/elementary-number-theory/parity-natural-numbers.lagda.md @@ -29,9 +29,13 @@ open import foundation.universe-levels ## Idea -Parity partitions the natural numbers into two classes: the even and the odd -natural numbers. Even natural numbers are those that are divisible by two, and -odd natural numbers are those that aren't. +{{#concept "Parity" WDID=Q230967 WD="parity"}} partitions the +[natural numbers](elementary-number-theory.natural-numbers.md) into two classes: +the {{#concept "even" WDID=Q13366104 WD="even number" Agda=is-even-ℕ}} and the +{{#concept "odd" WDID=Q13366129 WD="odd number" Agda=is-odd-ℕ}} natural numbers. +Even natural numbers are those that are +[divisible](elementary-number-theory.divisibility-natural-numbers.md) by two, +and odd natural numbers are those that [aren't](foundation.negation.md). ## Definition diff --git a/src/elementary-number-theory/powers-rational-numbers.lagda.md b/src/elementary-number-theory/powers-rational-numbers.lagda.md index 2f5c88228e5..83f95cea235 100644 --- a/src/elementary-number-theory/powers-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-rational-numbers.lagda.md @@ -7,9 +7,32 @@ module elementary-number-theory.powers-rational-numbers where
Imports ```agda +open import elementary-number-theory.absolute-value-rational-numbers +open import elementary-number-theory.addition-natural-numbers +open import elementary-number-theory.inequality-nonnegative-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.multiplication-natural-numbers +open import elementary-number-theory.multiplication-nonnegative-rational-numbers +open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers +open import elementary-number-theory.multiplication-positive-rational-numbers +open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-monoid-of-rational-numbers -open import group-theory.powers-of-elements-monoids +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.negative-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.parity-natural-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.squares-rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-transport +open import foundation.dependent-pair-types open import foundation.identity-types +open import foundation.transport-along-identifications + +open import group-theory.powers-of-elements-commutative-monoids +open import group-theory.powers-of-elements-monoids ```
@@ -25,8 +48,8 @@ multiplying `x` with itself `n` times. ## Definition ```agda -power-ℚ⁺ : ℕ → ℚ⁺ → ℚ⁺ -power-ℚ⁺ = power-Group group-mul-ℚ⁺ +power-ℚ : ℕ → ℚ → ℚ +power-ℚ = power-Monoid monoid-mul-ℚ ``` ## Properties @@ -34,194 +57,162 @@ power-ℚ⁺ = power-Group group-mul-ℚ⁺ ### `1ⁿ = 1` ```agda -power-one-ℚ⁺ : (n : ℕ) → power-ℚ⁺ n one-ℚ⁺ = one-ℚ⁺ -power-one-ℚ⁺ = power-unit-Group group-mul-ℚ⁺ +abstract + power-one-ℚ : (n : ℕ) → power-ℚ n one-ℚ = one-ℚ + power-one-ℚ = power-unit-Monoid monoid-mul-ℚ ``` -### `qⁿ⁺¹ = qⁿq` +### `qⁿ¹ = qⁿq` ```agda -power-succ-ℚ⁺ : (n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (succ-ℕ n) q = power-ℚ⁺ n q *ℚ⁺ q -power-succ-ℚ⁺ = power-succ-Group group-mul-ℚ⁺ +abstract + power-succ-ℚ : (n : ℕ) (q : ℚ) → power-ℚ (succ-ℕ n) q = power-ℚ n q *ℚ q + power-succ-ℚ = power-succ-Monoid monoid-mul-ℚ ``` ### `qⁿ = qqⁿ` ```agda -power-succ-ℚ⁺' : (n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (succ-ℕ n) q = q *ℚ⁺ power-ℚ⁺ n q -power-succ-ℚ⁺' = power-succ-Group' group-mul-ℚ⁺ +abstract + power-succ-ℚ' : (n : ℕ) (q : ℚ) → power-ℚ (succ-ℕ n) q = q *ℚ power-ℚ n q + power-succ-ℚ' = power-succ-Monoid' monoid-mul-ℚ ``` -### `qᵐ⁺ⁿ = qᵐqⁿ` +### `qᵐⁿ = qᵐqⁿ` ```agda -distributive-power-add-ℚ⁺ : - (m n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (m +ℕ n) q = power-ℚ⁺ m q *ℚ⁺ power-ℚ⁺ n q -distributive-power-add-ℚ⁺ m n _ = distributive-power-add-Group group-mul-ℚ⁺ m n +abstract + distributive-power-add-ℚ : + (m n : ℕ) (q : ℚ) → power-ℚ (m +ℕ n) q = power-ℚ m q *ℚ power-ℚ n q + distributive-power-add-ℚ m n _ = + distributive-power-add-Monoid monoid-mul-ℚ m n ``` ### `(pq)ⁿ=pⁿqⁿ` ```agda -left-distributive-power-mul-ℚ⁺ : - (n : ℕ) (p q : ℚ⁺) → power-ℚ⁺ n (p *ℚ⁺ q) = power-ℚ⁺ n p *ℚ⁺ power-ℚ⁺ n q -left-distributive-power-mul-ℚ⁺ n p q = - left-distributive-multiple-add-Ab abelian-group-mul-ℚ⁺ n +abstract + left-distributive-power-mul-ℚ : + (n : ℕ) (p q : ℚ) → power-ℚ n (p *ℚ q) = power-ℚ n p *ℚ power-ℚ n q + left-distributive-power-mul-ℚ n p q = + distributive-power-mul-Commutative-Monoid commutative-monoid-mul-ℚ n ``` ### `pᵐⁿ = (pᵐ)ⁿ` ```agda -power-mul-ℚ⁺ : - (m n : ℕ) (q : ℚ⁺) → power-ℚ⁺ (m *ℕ n) q = power-ℚ⁺ n (power-ℚ⁺ m q) -power-mul-ℚ⁺ m n q = power-mul-Group group-mul-ℚ⁺ m n +abstract + power-mul-ℚ : + (m n : ℕ) (q : ℚ) → power-ℚ (m *ℕ n) q = power-ℚ n (power-ℚ m q) + power-mul-ℚ m n q = power-mul-Monoid monoid-mul-ℚ m n ``` -### If `p` and `q` are positive rational numbers with `p < q` and `n` is nonzero, `pⁿ < qⁿ` +### Even powers of rational numbers are nonnegative ```agda abstract - preserves-le-power-ℚ⁺ : - (n : ℕ) (p q : ℚ⁺) → le-ℚ⁺ p q → is-nonzero-ℕ n → - le-ℚ⁺ (power-ℚ⁺ n p) (power-ℚ⁺ n q) - preserves-le-power-ℚ⁺ 0 p q pImports ```agda +open import elementary-number-theory.absolute-value-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers open import elementary-number-theory.inequality-nonnegative-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.multiplication-negative-rational-numbers open import elementary-number-theory.multiplication-nonnegative-rational-numbers open import elementary-number-theory.multiplication-nonpositive-rational-numbers @@ -171,6 +173,10 @@ abstract (x : ℚ) → is-negative-ℚ x → is-positive-ℚ (square-ℚ x) is-positive-square-negative-ℚ x neg-x = is-positive-mul-negative-ℚ {x} {x} neg-x neg-x + +square-ℚ⁻ : ℚ⁻ → ℚ⁺ +square-ℚ⁻ (q , is-neg-q) = + (square-ℚ q , is-positive-square-negative-ℚ q is-neg-q) ``` ### If the square of a rational number is 0, it is zero @@ -274,3 +280,21 @@ abstract ( preserves-leq-square-ℚ⁰⁺ q⁰⁺ p⁰⁺ q≤p))) ( decide-le-leq-ℚ p q) ``` + +### `|p|² = p²` + +```agda +abstract + square-abs-ℚ : (q : ℚ) → square-ℚ (rational-abs-ℚ q) = square-ℚ q + square-abs-ℚ q = + rec-coproduct + ( λ q≤-q → + equational-reasoning + square-ℚ (rational-abs-ℚ q) + = square-ℚ (neg-ℚ q) + by ap square-ℚ (left-leq-right-max-ℚ _ _ q≤-q) + = square-ℚ q + by square-neg-ℚ q) + ( λ -q≤q → ap square-ℚ (right-leq-left-max-ℚ _ _ -q≤q)) + ( linear-leq-ℚ q (neg-ℚ q)) +``` diff --git a/src/group-theory/powers-of-elements-commutative-monoids.lagda.md b/src/group-theory/powers-of-elements-commutative-monoids.lagda.md index 344471dcb03..54c92815ab0 100644 --- a/src/group-theory/powers-of-elements-commutative-monoids.lagda.md +++ b/src/group-theory/powers-of-elements-commutative-monoids.lagda.md @@ -144,13 +144,15 @@ module _ distributive-power-mul-Commutative-Monoid : (n : ℕ) {x y : type-Commutative-Monoid M} → - (H : mul-Commutative-Monoid M x y = mul-Commutative-Monoid M y x) → power-Commutative-Monoid M n (mul-Commutative-Monoid M x y) = mul-Commutative-Monoid M ( power-Commutative-Monoid M n x) ( power-Commutative-Monoid M n y) - distributive-power-mul-Commutative-Monoid = - distributive-power-mul-Monoid (monoid-Commutative-Monoid M) + distributive-power-mul-Commutative-Monoid n = + distributive-power-mul-Monoid + ( monoid-Commutative-Monoid M) + ( n) + ( commutative-mul-Commutative-Monoid M _ _) ``` ### Powers by products of natural numbers are iterated powers From 906c3fb059f557700d7b67fb336fef916c093875 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 17 Oct 2025 12:21:35 -0700 Subject: [PATCH 019/134] Progress --- src/elementary-number-theory.lagda.md | 2 + .../absolute-value-rational-numbers.lagda.md | 14 +- ...lity-nonnegative-rational-numbers.lagda.md | 8 + ...d-of-nonnegative-rational-numbers.lagda.md | 55 ++++ ...cative-monoid-of-rational-numbers.lagda.md | 4 +- .../nonnegative-rational-numbers.lagda.md | 3 + .../parity-natural-numbers.lagda.md | 9 + ...wers-nonnegative-rational-numbers.lagda.md | 146 ++++++++++ .../powers-positive-rational-numbers.lagda.md | 10 +- .../powers-rational-numbers.lagda.md | 258 +++++++++++++++--- ...lity-nonnegative-rational-numbers.lagda.md | 22 ++ .../submonoids-commutative-monoids.lagda.md | 5 +- src/group-theory/submonoids.lagda.md | 6 +- 13 files changed, 495 insertions(+), 47 deletions(-) create mode 100644 src/elementary-number-theory/multiplicative-monoid-of-nonnegative-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/powers-nonnegative-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 0e518ce0112..6655218d7ca 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -148,6 +148,7 @@ open import elementary-number-theory.multiplicative-group-of-positive-rational-n open import elementary-number-theory.multiplicative-group-of-rational-numbers public open import elementary-number-theory.multiplicative-inverses-positive-integer-fractions public open import elementary-number-theory.multiplicative-monoid-of-natural-numbers public +open import elementary-number-theory.multiplicative-monoid-of-nonnegative-rational-numbers public open import elementary-number-theory.multiplicative-monoid-of-rational-numbers public open import elementary-number-theory.multiplicative-units-integers public open import elementary-number-theory.multiplicative-units-standard-cyclic-rings public @@ -178,6 +179,7 @@ open import elementary-number-theory.positive-integer-fractions public open import elementary-number-theory.positive-integers public open import elementary-number-theory.positive-rational-numbers public open import elementary-number-theory.powers-integers public +open import elementary-number-theory.powers-nonnegative-rational-numbers public open import elementary-number-theory.powers-of-two public open import elementary-number-theory.powers-positive-rational-numbers public open import elementary-number-theory.powers-rational-numbers public diff --git a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md index fa1c1a6995c..4b0ad01d885 100644 --- a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md +++ b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md @@ -174,13 +174,15 @@ abstract ( neg-neg-ℚ q) ( neg-leq-ℚ (neg-leq-abs-ℚ q))) + rational-abs-zero-ℚ : rational-abs-ℚ zero-ℚ = zero-ℚ + rational-abs-zero-ℚ = + equational-reasoning + max-ℚ zero-ℚ (neg-ℚ zero-ℚ) + = max-ℚ zero-ℚ zero-ℚ by ap-max-ℚ refl neg-zero-ℚ + = zero-ℚ by idempotent-max-ℚ zero-ℚ + abs-zero-ℚ : abs-ℚ zero-ℚ = zero-ℚ⁰⁺ - abs-zero-ℚ = - eq-ℚ⁰⁺ - ( equational-reasoning - max-ℚ zero-ℚ (neg-ℚ zero-ℚ) - = max-ℚ zero-ℚ zero-ℚ by ap-max-ℚ refl neg-zero-ℚ - = zero-ℚ by idempotent-max-ℚ zero-ℚ) + abs-zero-ℚ = eq-ℚ⁰⁺ rational-abs-zero-ℚ ``` ### The triangle inequality diff --git a/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md index 7ec428e6cf1..a78e7658d87 100644 --- a/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md @@ -51,3 +51,11 @@ decidable-total-order-ℚ⁰⁺ = ℚ-Decidable-Total-Order is-nonnegative-prop-ℚ ``` + +### Inequality on the nonnegative rational numbers is transitive + +```agda +abstract + transitive-leq-ℚ⁰⁺ : (p q r : ℚ⁰⁺) → leq-ℚ⁰⁺ q r → leq-ℚ⁰⁺ p q → leq-ℚ⁰⁺ p r + transitive-leq-ℚ⁰⁺ (p , _) (q , _) (r , _) = transitive-leq-ℚ p q r +``` diff --git a/src/elementary-number-theory/multiplicative-monoid-of-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-monoid-of-nonnegative-rational-numbers.lagda.md new file mode 100644 index 00000000000..da8d59e5b14 --- /dev/null +++ b/src/elementary-number-theory/multiplicative-monoid-of-nonnegative-rational-numbers.lagda.md @@ -0,0 +1,55 @@ +# The multiplicative monoid of nonnegative rational numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module elementary-number-theory.multiplicative-monoid-of-nonnegative-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.multiplication-nonnegative-rational-numbers +open import elementary-number-theory.multiplicative-monoid-of-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.universe-levels + +open import group-theory.commutative-monoids +open import group-theory.monoids +open import group-theory.submonoids-commutative-monoids +``` + +
+ +## Idea + +The type of +[nonnegative](elementary-number-theory.nonnegative-rational-numbers.md) +[rational numbers](elementary-number-theory.rational-numbers.md) equipped with +[multiplication](elementary-number-theory.multiplication-nonnegative-rational-numbers.md) +is a [commutative monoid](group-theory.commutative-monoids.md) with unit +`one-ℚ⁰⁺`. + +## Definitions + +### The multiplicative commutative monoid of nonnegative rational numbers + +```agda +nonnegative-submonoid-commutative-monoid-mul-ℚ : + Commutative-Submonoid lzero commutative-monoid-mul-ℚ +nonnegative-submonoid-commutative-monoid-mul-ℚ = + ( is-nonnegative-prop-ℚ , + is-nonnegative-one-ℚ , + λ _ _ → is-nonnegative-mul-ℚ) + +commutative-monoid-mul-ℚ⁰⁺ : Commutative-Monoid lzero +commutative-monoid-mul-ℚ⁰⁺ = + commutative-monoid-Commutative-Submonoid + ( commutative-monoid-mul-ℚ) + ( nonnegative-submonoid-commutative-monoid-mul-ℚ) + +monoid-mul-ℚ⁰⁺ : Monoid lzero +monoid-mul-ℚ⁰⁺ = monoid-Commutative-Monoid commutative-monoid-mul-ℚ⁰⁺ +``` diff --git a/src/elementary-number-theory/multiplicative-monoid-of-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-monoid-of-rational-numbers.lagda.md index 781ac3df4c6..a3ac5b301d7 100644 --- a/src/elementary-number-theory/multiplicative-monoid-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplicative-monoid-of-rational-numbers.lagda.md @@ -27,8 +27,8 @@ open import group-theory.semigroups The type of [rational numbers](elementary-number-theory.rational-numbers.md) equipped with -[multiplication](elementary-number-theory.addition-rational-numbers.md) is a -[commutative monoid](group-theory.commutative-monoids.md) with unit `one-ℚ`. +[multiplication](elementary-number-theory.multiplication-rational-numbers.md) is +a [commutative monoid](group-theory.commutative-monoids.md) with unit `one-ℚ`. ## Definitions diff --git a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md index b7d23dc65ad..f16ddf889fb 100644 --- a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md @@ -166,6 +166,9 @@ zero-ℚ⁰⁺ = nonnegative-rational-ℕ zero-ℕ one-ℚ⁰⁺ : ℚ⁰⁺ one-ℚ⁰⁺ = nonnegative-rational-ℕ 1 + +is-nonnegative-one-ℚ : is-nonnegative-ℚ one-ℚ +is-nonnegative-one-ℚ = is-nonnegative-rational-ℕ 1 ``` ### The rational image of a nonnegative integer fraction is nonnegative diff --git a/src/elementary-number-theory/parity-natural-numbers.lagda.md b/src/elementary-number-theory/parity-natural-numbers.lagda.md index 9fa410e7f87..5a7c82123c1 100644 --- a/src/elementary-number-theory/parity-natural-numbers.lagda.md +++ b/src/elementary-number-theory/parity-natural-numbers.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.equality-natural-numbers open import elementary-number-theory.modular-arithmetic-standard-finite-types 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 foundation.action-on-identifications-functions open import foundation.decidable-types @@ -69,6 +70,14 @@ is-odd-one-ℕ : is-odd-ℕ 1 is-odd-one-ℕ H = Eq-eq-ℕ (is-one-div-one-ℕ 2 H) ``` +### An odd natural number is nonzero + +```agda +abstract + is-nonzero-is-odd-ℕ : {n : ℕ} → is-odd-ℕ n → is-nonzero-ℕ n + is-nonzero-is-odd-ℕ odd-n refl = odd-n is-even-zero-ℕ +``` + ### A natural number `x` is even if and only if `x + 2` is even ```agda diff --git a/src/elementary-number-theory/powers-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/powers-nonnegative-rational-numbers.lagda.md new file mode 100644 index 00000000000..9ad7fa97c80 --- /dev/null +++ b/src/elementary-number-theory/powers-nonnegative-rational-numbers.lagda.md @@ -0,0 +1,146 @@ +# Powers of nonnegative rational numbers + +```agda +module elementary-number-theory.powers-nonnegative-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-natural-numbers +open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers +open import elementary-number-theory.inequality-nonnegative-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.multiplication-natural-numbers +open import elementary-number-theory.multiplication-nonnegative-rational-numbers +open import elementary-number-theory.multiplication-positive-rational-numbers +open import elementary-number-theory.multiplicative-monoid-of-nonnegative-rational-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.positive-and-negative-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-nonnegative-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.identity-types + +open import group-theory.powers-of-elements-commutative-monoids +open import group-theory.powers-of-elements-monoids +``` + +
+ +## Idea + +The +{{#concept "power operation" Disambiguation="a nonnegative rational number to a natural number power" Agda=power-ℚ⁰⁺}} +on the [nonnegative](elementary-number-theory.nonnegative-rational-numbers.md) +[rational numbers](elementary-number-theory.rational-numbers.md) is the +operation `n x ↦ xⁿ`, which is defined by +[iteratively](foundation.iterating-functions.md) multiplying `x` with itself `n` +times. This file covers the case where `n` is a +[natural number](elementary-number-theory.natural-numbers.md). + +## Definition + +```agda +power-ℚ⁰⁺ : ℕ → ℚ⁰⁺ → ℚ⁰⁺ +power-ℚ⁰⁺ = power-Commutative-Monoid commutative-monoid-mul-ℚ⁰⁺ +``` + +## Properties + +### `1ⁿ = 1` + +```agda +power-one-ℚ⁰⁺ : (n : ℕ) → power-ℚ⁰⁺ n one-ℚ⁰⁺ = one-ℚ⁰⁺ +power-one-ℚ⁰⁺ = power-unit-Commutative-Monoid commutative-monoid-mul-ℚ⁰⁺ +``` + +### `qⁿ⁺¹ = qⁿq` + +```agda +power-succ-ℚ⁰⁺ : + (n : ℕ) (q : ℚ⁰⁺) → power-ℚ⁰⁺ (succ-ℕ n) q = power-ℚ⁰⁺ n q *ℚ⁰⁺ q +power-succ-ℚ⁰⁺ = power-succ-Commutative-Monoid commutative-monoid-mul-ℚ⁰⁺ +``` + +### `qⁿ = qqⁿ` + +```agda +power-succ-ℚ⁰⁺' : + (n : ℕ) (q : ℚ⁰⁺) → power-ℚ⁰⁺ (succ-ℕ n) q = q *ℚ⁰⁺ power-ℚ⁰⁺ n q +power-succ-ℚ⁰⁺' = power-succ-Commutative-Monoid' commutative-monoid-mul-ℚ⁰⁺ +``` + +### `qᵐ⁺ⁿ = qᵐqⁿ` + +```agda +abstract + distributive-power-add-ℚ⁰⁺ : + (m n : ℕ) (q : ℚ⁰⁺) → + power-ℚ⁰⁺ (m +ℕ n) q = power-ℚ⁰⁺ m q *ℚ⁰⁺ power-ℚ⁰⁺ n q + distributive-power-add-ℚ⁰⁺ m n _ = + distributive-power-add-Commutative-Monoid commutative-monoid-mul-ℚ⁰⁺ m n +``` + +### `(pq)ⁿ=pⁿqⁿ` + +```agda +abstract + left-distributive-power-mul-ℚ⁰⁺ : + (n : ℕ) (p q : ℚ⁰⁺) → + power-ℚ⁰⁺ n (p *ℚ⁰⁺ q) = power-ℚ⁰⁺ n p *ℚ⁰⁺ power-ℚ⁰⁺ n q + left-distributive-power-mul-ℚ⁰⁺ n p q = + distributive-power-mul-Commutative-Monoid commutative-monoid-mul-ℚ⁰⁺ n +``` + +### `pᵐⁿ = (pᵐ)ⁿ` + +```agda +power-mul-ℚ⁰⁺ : + (m n : ℕ) (q : ℚ⁰⁺) → power-ℚ⁰⁺ (m *ℕ n) q = power-ℚ⁰⁺ n (power-ℚ⁰⁺ m q) +power-mul-ℚ⁰⁺ m n q = + power-mul-Commutative-Monoid commutative-monoid-mul-ℚ⁰⁺ m n +``` + +### If `p` and `q` are nonnegative rational numbers with `p < q` and `n` is nonzero, `pⁿ < qⁿ` + +```agda +abstract + preserves-le-power-ℚ⁰⁺ : + (n : ℕ) → is-nonzero-ℕ n → (p q : ℚ⁰⁺) → le-ℚ⁰⁺ p q → + le-ℚ⁰⁺ (power-ℚ⁰⁺ n p) (power-ℚ⁰⁺ n q) + preserves-le-power-ℚ⁰⁺ 0 H p q pImports ```agda +open import elementary-number-theory.inequality-nonnegative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -37,3 +38,24 @@ le-prop-ℚ⁰⁺ p q = le-ℚ-Prop (rational-ℚ⁰⁺ p) (rational-ℚ⁰⁺ q le-ℚ⁰⁺ : (p q : ℚ⁰⁺) → UU lzero le-ℚ⁰⁺ p q = type-Prop (le-prop-ℚ⁰⁺ p q) ``` + +## Properties + +### Strict inequality on the nonnegative rational numbers is transitive + +```agda +abstract + transitive-le-ℚ⁰⁺ : (p q r : ℚ⁰⁺) → le-ℚ⁰⁺ q r → le-ℚ⁰⁺ p q → le-ℚ⁰⁺ p r + transitive-le-ℚ⁰⁺ (p , _) (q , _) (r , _) = transitive-le-ℚ p q r +``` + +### Concatenation laws with inequality + +```agda +abstract + concatenate-le-leq-ℚ⁰⁺ : (p q r : ℚ⁰⁺) → le-ℚ⁰⁺ p q → leq-ℚ⁰⁺ q r → le-ℚ⁰⁺ p r + concatenate-le-leq-ℚ⁰⁺ (p , _) (q , _) (r , _) = concatenate-le-leq-ℚ p q r + + concatenate-leq-le-ℚ⁰⁺ : (p q r : ℚ⁰⁺) → leq-ℚ⁰⁺ p q → le-ℚ⁰⁺ q r → le-ℚ⁰⁺ p r + concatenate-leq-le-ℚ⁰⁺ (p , _) (q , _) (r , _) = concatenate-leq-le-ℚ p q r +``` diff --git a/src/group-theory/submonoids-commutative-monoids.lagda.md b/src/group-theory/submonoids-commutative-monoids.lagda.md index 1b93a31af20..6734dc7ba91 100644 --- a/src/group-theory/submonoids-commutative-monoids.lagda.md +++ b/src/group-theory/submonoids-commutative-monoids.lagda.md @@ -27,7 +27,10 @@ open import group-theory.subsets-commutative-monoids ## Idea -A submonoid of a commutative monoid `M` is a subset of `M` that contains the +A +{{#concept "submonoid" Disambiguation="of a commutative monoid" Agda=Commutative-Submonoid}} +of a [commutative monoid](group-theory.commutative-monoids.md) `M` is a +[subset](group-theory.subsets-commutative-monoids.md) of `M` that contains the unit of `M` and is closed under multiplication. ## Definitions diff --git a/src/group-theory/submonoids.lagda.md b/src/group-theory/submonoids.lagda.md index 4245b22e102..28dacdedee4 100644 --- a/src/group-theory/submonoids.lagda.md +++ b/src/group-theory/submonoids.lagda.md @@ -27,8 +27,10 @@ open import group-theory.subsets-monoids ## Idea -A submonoid of a monoid `M` is a subset of `M` that contains the unit of `M` and -is closed under multiplication. +A {{#concept "submonoid" WDID=Q121499459 WD="submonoid" Agda=Submonoid}} of a +[monoid](group-theory.monoids.md) `M` is a +[subset](group-theory.subsets-monoids.md) of `M` that contains the unit of `M` +and is closed under multiplication. ## Definitions From 92b42a5ad47796ab1923535a41077a5cdc97a22c Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 17 Oct 2025 12:37:31 -0700 Subject: [PATCH 020/134] Correct superscripts --- src/elementary-number-theory/powers-rational-numbers.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/elementary-number-theory/powers-rational-numbers.lagda.md b/src/elementary-number-theory/powers-rational-numbers.lagda.md index 1374740c371..392ea1998cf 100644 --- a/src/elementary-number-theory/powers-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-rational-numbers.lagda.md @@ -93,7 +93,7 @@ abstract power-one-ℚ = power-unit-Monoid monoid-mul-ℚ ``` -### `qⁿ¹ = qⁿq` +### `qⁿ⁺¹ = qⁿq` ```agda abstract @@ -101,7 +101,7 @@ abstract power-succ-ℚ = power-succ-Monoid monoid-mul-ℚ ``` -### `qⁿ = qqⁿ` +### `qⁿ⁺¹ = qqⁿ` ```agda abstract From 978b5045b61f96dfd1b8dc09145956ea5da15ce8 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 17 Oct 2025 15:47:48 -0700 Subject: [PATCH 021/134] Progress --- ...of-elements-commutative-semirings.lagda.md | 15 ++ ...icative-group-of-rational-numbers.lagda.md | 21 ++ .../arithmetic-sequences-semigroups.lagda.md | 27 +++ src/lists/sequences.lagda.md | 9 + src/ring-theory.lagda.md | 1 + .../geometric-sequences-rings.lagda.md | 216 ++++++++++++++++++ .../geometric-sequences-semirings.lagda.md | 36 ++- 7 files changed, 323 insertions(+), 2 deletions(-) create mode 100644 src/ring-theory/geometric-sequences-rings.lagda.md diff --git a/src/commutative-algebra/powers-of-elements-commutative-semirings.lagda.md b/src/commutative-algebra/powers-of-elements-commutative-semirings.lagda.md index 0bda772d1a1..a5727d03a8e 100644 --- a/src/commutative-algebra/powers-of-elements-commutative-semirings.lagda.md +++ b/src/commutative-algebra/powers-of-elements-commutative-semirings.lagda.md @@ -51,6 +51,21 @@ module _ power-succ-Semiring (semiring-Commutative-Semiring A) ``` +### `xⁿ⁺¹ = xxⁿ` + +```agda +module _ + {l : Level} (A : Commutative-Semiring l) + where + + power-succ-Commutative-Semiring' : + (n : ℕ) (x : type-Commutative-Semiring A) → + power-Commutative-Semiring A (succ-ℕ n) x = + mul-Commutative-Semiring A x (power-Commutative-Semiring A n x) + power-succ-Commutative-Semiring' = + power-succ-Semiring' (semiring-Commutative-Semiring A) +``` + ### Powers by sums of natural numbers are products of powers ```agda diff --git a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md index 4db36a011c9..a35af131e80 100644 --- a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md @@ -10,8 +10,10 @@ module elementary-number-theory.multiplicative-group-of-rational-numbers where ```agda open import elementary-number-theory.multiplication-positive-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-monoid-of-rational-numbers +open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonzero-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers @@ -25,6 +27,7 @@ open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types open import foundation.function-types +open import foundation.negated-equality open import foundation.identity-types open import foundation.subtypes open import foundation.transport-along-identifications @@ -86,6 +89,9 @@ _*ℚˣ_ = mul-ℚˣ inv-ℚˣ : ℚˣ → ℚˣ inv-ℚˣ = inv-group-of-units-Ring ring-ℚ + +rational-inv-ℚˣ : ℚˣ → ℚ +rational-inv-ℚˣ q = rational-ℚˣ (inv-ℚˣ q) ``` ### Inverse laws in the multiplicative group of rational numbers @@ -169,3 +175,18 @@ invertible-ℚ⁺ = invertible-nonzero-ℚ ∘ nonzero-ℚ⁺ invertible-ℚ⁻ : ℚ⁻ → ℚˣ invertible-ℚ⁻ = invertible-nonzero-ℚ ∘ nonzero-ℚ⁻ ``` + +### If `a ≠ b`, `b - a` is invertible + +```agda +abstract + is-invertible-diff-neq-ℚ : + (a b : ℚ) → a ≠ b → is-invertible-element-Ring ring-ℚ (b -ℚ a) + is-invertible-diff-neq-ℚ a b a≠b = + is-invertible-element-ring-is-nonzero-ℚ + ( b -ℚ a) + ( λ b-a=0 → a≠b (inv (eq-is-unit-right-div-Group group-add-ℚ b-a=0))) + +invertible-diff-neq-ℚ : (a b : ℚ) → a ≠ b → ℚˣ +invertible-diff-neq-ℚ a b a≠b = (b -ℚ a , is-invertible-diff-neq-ℚ a b a≠b) +``` diff --git a/src/group-theory/arithmetic-sequences-semigroups.lagda.md b/src/group-theory/arithmetic-sequences-semigroups.lagda.md index f58aa8571c4..0238c5bd311 100644 --- a/src/group-theory/arithmetic-sequences-semigroups.lagda.md +++ b/src/group-theory/arithmetic-sequences-semigroups.lagda.md @@ -13,6 +13,7 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.homotopies open import foundation.identity-types open import foundation.propositions @@ -188,6 +189,32 @@ module _ ( refl) ``` +### The tail of a standard arithmetic sequence is another standard arithmetic sequence + +```agda +module _ + {l : Level} (G : Semigroup l) (a d : type-Semigroup G) + where + + abstract + htpy-tail-standard-arithmetric-sequence-Semigroup : + tail-sequence + ( seq-standard-arithmetic-sequence-Semigroup G a d) ~ + seq-standard-arithmetic-sequence-Semigroup G (mul-Semigroup G a d) d + htpy-tail-standard-arithmetric-sequence-Semigroup 0 = refl + htpy-tail-standard-arithmetric-sequence-Semigroup (succ-ℕ n) = + ap-mul-Semigroup G + ( htpy-tail-standard-arithmetric-sequence-Semigroup n) + ( refl) + + eq-tail-standard-arithmetric-sequence-Semigroup : + tail-sequence + ( seq-standard-arithmetic-sequence-Semigroup G a d) = + seq-standard-arithmetic-sequence-Semigroup G (mul-Semigroup G a d) d + eq-tail-standard-arithmetric-sequence-Semigroup = + eq-htpy htpy-tail-standard-arithmetric-sequence-Semigroup +``` + ## External links - [Arithmetic progressions](https://en.wikipedia.org/wiki/Arithmetic_progression) diff --git a/src/lists/sequences.lagda.md b/src/lists/sequences.lagda.md index 2549a666e11..a09c39a608b 100644 --- a/src/lists/sequences.lagda.md +++ b/src/lists/sequences.lagda.md @@ -7,6 +7,8 @@ module lists.sequences where
Imports ```agda +open import elementary-number-theory.natural-numbers + open import foundation.universe-levels open import foundation-core.function-types @@ -36,6 +38,13 @@ sequence : {l : Level} → UU l → UU l sequence A = dependent-sequence (λ _ → A) ``` +### The tail of a sequence + +```agda +tail-sequence : {l : Level} {A : UU l} → sequence A → sequence A +tail-sequence u n = u (succ-ℕ n) +``` + ### Functorial action on maps of sequences ```agda diff --git a/src/ring-theory.lagda.md b/src/ring-theory.lagda.md index a16c402dafa..7322fd40478 100644 --- a/src/ring-theory.lagda.md +++ b/src/ring-theory.lagda.md @@ -29,6 +29,7 @@ open import ring-theory.full-ideals-rings public open import ring-theory.function-rings public open import ring-theory.function-semirings public open import ring-theory.generating-elements-rings public +open import ring-theory.geometric-sequences-rings public open import ring-theory.geometric-sequences-semirings public open import ring-theory.groups-of-units-rings public open import ring-theory.homomorphisms-cyclic-rings public diff --git a/src/ring-theory/geometric-sequences-rings.lagda.md b/src/ring-theory/geometric-sequences-rings.lagda.md new file mode 100644 index 00000000000..90497c4db21 --- /dev/null +++ b/src/ring-theory/geometric-sequences-rings.lagda.md @@ -0,0 +1,216 @@ +# Geometric sequences in rings + +```agda +module ring-theory.geometric-sequences-rings where +``` + +
Imports + +```agda +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.dependent-pair-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.universe-levels + +open import group-theory.arithmetic-sequences-semigroups + +open import lists.sequences + +open import ring-theory.geometric-sequences-semirings +open import ring-theory.powers-of-elements-rings +open import ring-theory.rings +``` + +
+ +## Ideas + +A +{{#concept "geometric sequence" Disambiguation="in a ring" Agda=geometric-sequence-Ring}} +in a [ring](ring-theory.semirings.md) is an +[arithmetic sequence](ring-theory.geometric-sequence-semirings.md) in the +underlying [semiring](ring-theory.semirings.md). + +These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the +semiring. + +## Definitions + +### Geometric sequences in rings + +```agda +module _ + {l : Level} (R : Ring l) + where + + geometric-sequence-Ring : UU l + geometric-sequence-Ring = + geometric-sequence-Semiring (semiring-Ring R) + +module _ + {l : Level} (R : Ring l) + (u : geometric-sequence-Ring R) + where + + seq-geometric-sequence-Ring : ℕ → type-Ring R + seq-geometric-sequence-Ring = + seq-geometric-sequence-Semiring (semiring-Ring R) u + + common-ratio-geometric-sequence-Ring : type-Ring R + common-ratio-geometric-sequence-Ring = + common-ratio-geometric-sequence-Semiring (semiring-Ring R) u + + is-common-ratio-geometric-sequence-Ring : + ( n : ℕ) → + ( seq-geometric-sequence-Ring (succ-ℕ n)) = + ( mul-Ring + ( R) + ( seq-geometric-sequence-Ring n) + ( common-ratio-geometric-sequence-Ring)) + is-common-ratio-geometric-sequence-Ring = + is-common-difference-arithmetic-sequence-Semigroup + ( multiplicative-semigroup-Ring R) + ( u) + + initial-term-geometric-sequence-Ring : type-Ring R + initial-term-geometric-sequence-Ring = + initial-term-arithmetic-sequence-Semigroup + ( multiplicative-semigroup-Ring R) + ( u) +``` + +### The standard geometric sequences in a semiring + +The standard geometric sequence with initial term `a` and common factor `r` is +the sequence `u` defined by: + +- `u₀ = a` +- `uₙ₊₁ = uₙ * r` + +```agda +module _ + {l : Level} (R : Ring l) (a r : type-Ring R) + where + + standard-geometric-sequence-Ring : geometric-sequence-Ring R + standard-geometric-sequence-Ring = + standard-arithmetic-sequence-Semigroup + ( multiplicative-semigroup-Ring R) + ( a) + ( r) + + seq-standard-geometric-sequence-Ring : ℕ → type-Ring R + seq-standard-geometric-sequence-Ring = + seq-geometric-sequence-Ring R + standard-geometric-sequence-Ring +``` + +### The geometric sequences `n ↦ a * rⁿ` + +```agda +module _ + {l : Level} (R : Ring l) (a r : type-Ring R) + where + + mul-pow-nat-Ring : sequence (type-Ring R) + mul-pow-nat-Ring = mul-pow-nat-Semiring (semiring-Ring R) a r + + geometric-mul-pow-nat-Ring : geometric-sequence-Ring R + geometric-mul-pow-nat-Ring = + geometric-mul-pow-nat-Semiring (semiring-Ring R) a r + + initial-term-mul-pow-nat-Ring : type-Ring R + initial-term-mul-pow-nat-Ring = + initial-term-mul-pow-nat-Semiring (semiring-Ring R) a r + + eq-initial-term-mul-pow-nat-Ring : + initial-term-mul-pow-nat-Ring = a + eq-initial-term-mul-pow-nat-Ring = + eq-initial-term-mul-pow-nat-Semiring (semiring-Ring R) a r +``` + +## Properties + +### Any geometric sequence in a semiring is homotopic to a standard geometric sequence + +```agda +module _ + {l : Level} (R : Ring l) + (u : geometric-sequence-Ring R) + where + + htpy-seq-standard-geometric-sequence-Ring : + ( seq-geometric-sequence-Ring R + ( standard-geometric-sequence-Ring R + ( initial-term-geometric-sequence-Ring R u) + ( common-ratio-geometric-sequence-Ring R u))) ~ + ( seq-geometric-sequence-Ring R u) + htpy-seq-standard-geometric-sequence-Ring = + htpy-seq-standard-arithmetic-sequence-Semigroup + ( multiplicative-semigroup-Ring R) + ( u) +``` + +### The nth term of an geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` + +```agda +module _ + {l : Level} (R : Ring l) (a r : type-Ring R) + where + + htpy-mul-pow-standard-geometric-sequence-Ring : + mul-pow-nat-Ring R a r ~ seq-standard-geometric-sequence-Ring R a r + htpy-mul-pow-standard-geometric-sequence-Ring = + htpy-mul-pow-standard-geometric-sequence-Semiring (semiring-Ring R) a r +``` + +```agda +module _ + {l : Level} (R : Ring l) (u : geometric-sequence-Ring R) + where + + htpy-mul-pow-geometric-sequence-Ring : + mul-pow-nat-Ring + ( R) + ( initial-term-geometric-sequence-Ring R u) + ( common-ratio-geometric-sequence-Ring R u) ~ + seq-geometric-sequence-Ring R u + htpy-mul-pow-geometric-sequence-Ring = + htpy-mul-pow-geometric-sequence-Semiring (semiring-Ring R) u +``` + +### Constant sequences are geometric with common ratio one + +```agda +module _ + {l : Level} (R : Ring l) (a : type-Ring R) + where + + one-is-common-ratio-const-sequence-Ring : + is-common-difference-sequence-Semigroup + ( multiplicative-semigroup-Ring R) + ( λ _ → a) + ( one-Ring R) + one-is-common-ratio-const-sequence-Ring n = + inv (right-unit-law-mul-Ring R a) + + geometric-const-sequence-Ring : geometric-sequence-Ring R + geometric-const-sequence-Ring = + geometric-const-sequence-Semiring (semiring-Ring R) a +``` + +## See also + +- [Geometric sequences in a semiring](ring-theory.geometric-sequences-semirings.md) + +## External links + +- [Geometric progressions](https://en.wikipedia.org/wiki/Geometric_progression) + at Wikipedia diff --git a/src/ring-theory/geometric-sequences-semirings.lagda.md b/src/ring-theory/geometric-sequences-semirings.lagda.md index 2b0107a2dbd..3d7dff3e3ac 100644 --- a/src/ring-theory/geometric-sequences-semirings.lagda.md +++ b/src/ring-theory/geometric-sequences-semirings.lagda.md @@ -13,6 +13,7 @@ open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.homotopies open import foundation.identity-types open import foundation.propositions @@ -54,6 +55,11 @@ module _ arithmetic-sequence-Semigroup ( multiplicative-semigroup-Semiring R) + is-geometric-sequence-Semiring : sequence (type-Semiring R) → UU l + is-geometric-sequence-Semiring = + is-arithmetic-sequence-Semigroup + ( multiplicative-semigroup-Semiring R) + module _ {l : Level} (R : Semiring l) (u : geometric-sequence-Semiring R) @@ -66,8 +72,8 @@ module _ ( u) is-geometric-seq-geometric-sequence-Semiring : - is-arithmetic-sequence-Semigroup - ( multiplicative-semigroup-Semiring R) + is-geometric-sequence-Semiring + ( R) ( seq-geometric-sequence-Semiring) is-geometric-seq-geometric-sequence-Semiring = is-arithmetic-seq-arithmetic-sequence-Semigroup @@ -267,6 +273,32 @@ module _ ( one-Semiring R , one-is-common-ratio-const-sequence-Semiring) ``` +### The tail of a standard geometric sequence is another standard geometric sequence + +```agda +module _ + {l : Level} (R : Semiring l) (a r : type-Semiring R) + where + + abstract + htpy-tail-standard-geometric-sequence-Semiring : + tail-sequence + ( seq-standard-geometric-sequence-Semiring R a r) ~ + seq-standard-geometric-sequence-Semiring R (mul-Semiring R a r) r + htpy-tail-standard-geometric-sequence-Semiring = + htpy-tail-standard-arithmetric-sequence-Semigroup + ( multiplicative-semigroup-Semiring R) + ( a) + ( r) + + eq-tail-standard-geometric-sequence-Semiring : + tail-sequence + ( seq-standard-geometric-sequence-Semiring R a r) = + seq-standard-geometric-sequence-Semiring R (mul-Semiring R a r) r + eq-tail-standard-geometric-sequence-Semiring = + eq-htpy htpy-tail-standard-geometric-sequence-Semiring +``` + ## External links - [Geometric progressions](https://en.wikipedia.org/wiki/Geometric_progression) From e332e1993006ccbeed9f7b35f0e8499bc429155c Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 17 Oct 2025 16:26:05 -0700 Subject: [PATCH 022/134] Sums of geometric series for rational numbers --- src/commutative-algebra.lagda.md | 2 + ...etric-sequences-commutative-rings.lagda.md | 311 +++++++++++++ ...c-sequences-commutative-semirings.lagda.md | 439 ++++++++++++++++++ src/elementary-number-theory.lagda.md | 1 + ...metric-sequences-rational-numbers.lagda.md | 203 ++++++++ ...icative-group-of-rational-numbers.lagda.md | 23 +- .../geometric-sequences-rings.lagda.md | 2 +- .../geometric-sequences-semirings.lagda.md | 2 +- 8 files changed, 978 insertions(+), 5 deletions(-) create mode 100644 src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md create mode 100644 src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md create mode 100644 src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md diff --git a/src/commutative-algebra.lagda.md b/src/commutative-algebra.lagda.md index 0ca53e325c4..801d517bd88 100644 --- a/src/commutative-algebra.lagda.md +++ b/src/commutative-algebra.lagda.md @@ -22,6 +22,8 @@ open import commutative-algebra.formal-power-series-commutative-semirings public open import commutative-algebra.full-ideals-commutative-rings public open import commutative-algebra.function-commutative-rings public open import commutative-algebra.function-commutative-semirings public +open import commutative-algebra.geometric-sequences-commutative-rings public +open import commutative-algebra.geometric-sequences-commutative-semirings public open import commutative-algebra.groups-of-units-commutative-rings public open import commutative-algebra.homomorphisms-commutative-rings public open import commutative-algebra.homomorphisms-commutative-semirings public diff --git a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md new file mode 100644 index 00000000000..ee6b868c9e9 --- /dev/null +++ b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md @@ -0,0 +1,311 @@ +# Geometric sequences in commutative rings + +```agda +module commutative-algebra.geometric-sequences-commutative-rings where +``` + +
Imports + +```agda +open import commutative-algebra.commutative-rings +open import commutative-algebra.commutative-semirings +open import commutative-algebra.geometric-sequences-commutative-semirings +open import commutative-algebra.powers-of-elements-commutative-rings + +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.dependent-pair-types +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.universe-levels + +open import group-theory.arithmetic-sequences-semigroups + +open import lists.finite-sequences +open import lists.sequences +``` + +
+ +## Ideas + +A +{{#concept "geometric sequence" Disambiguation="in a commutative semiring" Agda=geometric-sequence-Commutative-Ring}} +in a [semiring](ring-theory.semirings.md) is an +[geometric sequence](ring-theory.geometric-sequences-semirings.md) in the +semiring multiplicative [semigroup](group-theory.semigroups.md). + +These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the +semiring. + +## Definitions + +### Geometric sequences in semirings + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + geometric-sequence-Commutative-Ring : UU l + geometric-sequence-Commutative-Ring = + geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + + is-geometric-sequence-Commutative-Ring : + sequence (type-Commutative-Ring R) → UU l + is-geometric-sequence-Commutative-Ring = + is-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + +module _ + {l : Level} (R : Commutative-Ring l) + (u : geometric-sequence-Commutative-Ring R) + where + + seq-geometric-sequence-Commutative-Ring : ℕ → type-Commutative-Ring R + seq-geometric-sequence-Commutative-Ring = + seq-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( u) + + is-geometric-seq-geometric-sequence-Commutative-Ring : + is-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( seq-geometric-sequence-Commutative-Ring) + is-geometric-seq-geometric-sequence-Commutative-Ring = + is-geometric-seq-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( u) + + common-ratio-geometric-sequence-Commutative-Ring : + type-Commutative-Ring R + common-ratio-geometric-sequence-Commutative-Ring = + common-ratio-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( u) + + is-common-ratio-geometric-sequence-Commutative-Ring : + ( n : ℕ) → + ( seq-geometric-sequence-Commutative-Ring (succ-ℕ n)) = + ( mul-Commutative-Ring + ( R) + ( seq-geometric-sequence-Commutative-Ring n) + ( common-ratio-geometric-sequence-Commutative-Ring)) + is-common-ratio-geometric-sequence-Commutative-Ring = + is-common-ratio-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( u) + + initial-term-geometric-sequence-Commutative-Ring : + type-Commutative-Ring R + initial-term-geometric-sequence-Commutative-Ring = + initial-term-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( u) +``` + +### The standard geometric sequences in a semiring + +The standard geometric sequence with initial term `a` and common factor `r` is +the sequence `u` defined by: + +- `u₀ = a` +- `uₙ₊₁ = uₙ * r` + +```agda +module _ + {l : Level} (R : Commutative-Ring l) (a r : type-Commutative-Ring R) + where + + standard-geometric-sequence-Commutative-Ring : + geometric-sequence-Commutative-Ring R + standard-geometric-sequence-Commutative-Ring = + standard-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( a) + ( r) + + seq-standard-geometric-sequence-Commutative-Ring : + ℕ → type-Commutative-Ring R + seq-standard-geometric-sequence-Commutative-Ring = + seq-geometric-sequence-Commutative-Ring R + standard-geometric-sequence-Commutative-Ring + + is-geometric-standard-geometric-sequence-Commutative-Ring : + is-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( seq-standard-geometric-sequence-Commutative-Ring) + is-geometric-standard-geometric-sequence-Commutative-Ring = + is-geometric-seq-geometric-sequence-Commutative-Ring R + standard-geometric-sequence-Commutative-Ring +``` + +### The geometric sequences `n ↦ a * rⁿ` + +```agda +module _ + {l : Level} (R : Commutative-Ring l) (a r : type-Commutative-Ring R) + where + + mul-pow-nat-Commutative-Ring : ℕ → type-Commutative-Ring R + mul-pow-nat-Commutative-Ring n = + mul-Commutative-Ring R a (power-Commutative-Ring R n r) + + geometric-mul-pow-nat-Commutative-Ring : geometric-sequence-Commutative-Ring R + geometric-mul-pow-nat-Commutative-Ring = + geometric-mul-pow-nat-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( a) + ( r) + + initial-term-mul-pow-nat-Commutative-Ring : type-Commutative-Ring R + initial-term-mul-pow-nat-Commutative-Ring = + initial-term-geometric-sequence-Commutative-Ring + ( R) + ( geometric-mul-pow-nat-Commutative-Ring) + + eq-initial-term-mul-pow-nat-Commutative-Ring : + initial-term-mul-pow-nat-Commutative-Ring = a + eq-initial-term-mul-pow-nat-Commutative-Ring = + right-unit-law-mul-Commutative-Ring R a +``` + +## Properties + +### Any geometric sequence in a semiring is homotopic to a standard geometric sequence + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + (u : geometric-sequence-Commutative-Ring R) + where + + htpy-seq-standard-geometric-sequence-Commutative-Ring : + ( seq-geometric-sequence-Commutative-Ring R + ( standard-geometric-sequence-Commutative-Ring R + ( initial-term-geometric-sequence-Commutative-Ring R u) + ( common-ratio-geometric-sequence-Commutative-Ring R u))) ~ + ( seq-geometric-sequence-Commutative-Ring R u) + htpy-seq-standard-geometric-sequence-Commutative-Ring = + htpy-seq-standard-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( u) +``` + +### The nth term of a geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` + +```agda +module _ + {l : Level} (R : Commutative-Ring l) (a r : type-Commutative-Ring R) + where + + htpy-mul-pow-standard-geometric-sequence-Commutative-Ring : + mul-pow-nat-Commutative-Ring R a r ~ + seq-standard-geometric-sequence-Commutative-Ring R a r + htpy-mul-pow-standard-geometric-sequence-Commutative-Ring = + htpy-mul-pow-standard-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( a) + ( r) + + initial-term-standard-geometric-sequence-Commutative-Ring : + seq-standard-geometric-sequence-Commutative-Ring R a r 0 = a + initial-term-standard-geometric-sequence-Commutative-Ring = + ( inv (htpy-mul-pow-standard-geometric-sequence-Commutative-Ring 0)) ∙ + ( eq-initial-term-mul-pow-nat-Commutative-Ring R a r) +``` + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + (u : geometric-sequence-Commutative-Ring R) + where + + htpy-mul-pow-geometric-sequence-Commutative-Ring : + mul-pow-nat-Commutative-Ring + ( R) + ( initial-term-geometric-sequence-Commutative-Ring R u) + ( common-ratio-geometric-sequence-Commutative-Ring R u) ~ + seq-geometric-sequence-Commutative-Ring R u + htpy-mul-pow-geometric-sequence-Commutative-Ring n = + ( htpy-mul-pow-standard-geometric-sequence-Commutative-Ring + ( R) + ( initial-term-geometric-sequence-Commutative-Ring R u) + ( common-ratio-geometric-sequence-Commutative-Ring R u) + ( n)) ∙ + ( htpy-seq-standard-geometric-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( u) + ( n)) +``` + +### Constant sequences are geometric with common ratio one + +```agda +module _ + {l : Level} (R : Commutative-Ring l) (a : type-Commutative-Ring R) + where + + geometric-const-sequence-Commutative-Ring : + geometric-sequence-Commutative-Ring R + geometric-const-sequence-Commutative-Ring = + geometric-const-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( a) +``` + +### Finite geometric sequences + +```agda +module _ + {l : Level} (R : Commutative-Ring l) (a r : type-Commutative-Ring R) + where + + standard-geometric-fin-sequence-Commutative-Ring : + (n : ℕ) → fin-sequence (type-Commutative-Ring R) n + standard-geometric-fin-sequence-Commutative-Ring = + fin-sequence-sequence + ( seq-standard-geometric-sequence-Commutative-Ring R a r) + + sum-standard-geometric-fin-sequence-Commutative-Ring : + (n : ℕ) → type-Commutative-Ring R + sum-standard-geometric-fin-sequence-Commutative-Ring = + sum-standard-geometric-fin-sequence-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( a) + ( r) +``` + +### The sum of a finite geometric sequence + +```agda +module _ + {l : Level} (R : Commutative-Ring l) (a r : type-Commutative-Ring R) + where + + abstract + compute-sum-standard-geometric-fin-sequence-succ-Commutative-Ring : + (n : ℕ) → + sum-standard-geometric-fin-sequence-Commutative-Ring R + ( a) + ( r) + ( succ-ℕ n) = + add-Commutative-Ring R + ( a) + ( mul-Commutative-Ring R + ( r) + ( sum-standard-geometric-fin-sequence-Commutative-Ring R a r n)) + compute-sum-standard-geometric-fin-sequence-succ-Commutative-Ring = + compute-sum-standard-geometric-fin-sequence-succ-Commutative-Semiring + ( commutative-semiring-Commutative-Ring R) + ( a) + ( r) +``` diff --git a/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md new file mode 100644 index 00000000000..821a30d43c3 --- /dev/null +++ b/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md @@ -0,0 +1,439 @@ +# Geometric sequences in commutative semirings + +```agda +module commutative-algebra.geometric-sequences-commutative-semirings where +``` + +
Imports + +```agda +open import commutative-algebra.commutative-semirings +open import commutative-algebra.powers-of-elements-commutative-semirings +open import commutative-algebra.sums-of-finite-sequences-of-elements-commutative-semirings + +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.dependent-pair-types +open import foundation.function-extensionality +open import foundation.function-types +open import foundation.homotopies +open import foundation.identity-types +open import foundation.propositions +open import foundation.sets +open import foundation.universe-levels + +open import group-theory.arithmetic-sequences-semigroups + +open import lists.finite-sequences +open import lists.sequences + +open import ring-theory.geometric-sequences-semirings +open import ring-theory.powers-of-elements-semirings +open import ring-theory.semirings + +open import univalent-combinatorics.standard-finite-types +``` + +
+ +## Ideas + +A +{{#concept "geometric sequence" Disambiguation="in a commutative semiring" Agda=geometric-sequence-Commutative-Semiring}} +in a [semiring](ring-theory.semirings.md) is an +[geometric sequence](ring-theory.geometric-sequences-semirings.md) in the +semiring multiplicative [semigroup](group-theory.semigroups.md). + +These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the +semiring. + +## Definitions + +### Geometric sequences in semirings + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + where + + geometric-sequence-Commutative-Semiring : UU l + geometric-sequence-Commutative-Semiring = + geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + + is-geometric-sequence-Commutative-Semiring : + sequence (type-Commutative-Semiring R) → UU l + is-geometric-sequence-Commutative-Semiring = + is-geometric-sequence-Semiring (semiring-Commutative-Semiring R) + +module _ + {l : Level} (R : Commutative-Semiring l) + (u : geometric-sequence-Commutative-Semiring R) + where + + seq-geometric-sequence-Commutative-Semiring : ℕ → type-Commutative-Semiring R + seq-geometric-sequence-Commutative-Semiring = + seq-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( u) + + is-geometric-seq-geometric-sequence-Commutative-Semiring : + is-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( seq-geometric-sequence-Commutative-Semiring) + is-geometric-seq-geometric-sequence-Commutative-Semiring = + is-geometric-seq-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( u) + + common-ratio-geometric-sequence-Commutative-Semiring : + type-Commutative-Semiring R + common-ratio-geometric-sequence-Commutative-Semiring = + common-ratio-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( u) + + is-common-ratio-geometric-sequence-Commutative-Semiring : + ( n : ℕ) → + ( seq-geometric-sequence-Commutative-Semiring (succ-ℕ n)) = + ( mul-Commutative-Semiring + ( R) + ( seq-geometric-sequence-Commutative-Semiring n) + ( common-ratio-geometric-sequence-Commutative-Semiring)) + is-common-ratio-geometric-sequence-Commutative-Semiring = + is-common-ratio-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( u) + + initial-term-geometric-sequence-Commutative-Semiring : + type-Commutative-Semiring R + initial-term-geometric-sequence-Commutative-Semiring = + initial-term-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( u) +``` + +### The standard geometric sequences in a semiring + +The standard geometric sequence with initial term `a` and common factor `r` is +the sequence `u` defined by: + +- `u₀ = a` +- `uₙ₊₁ = uₙ * r` + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) (a r : type-Commutative-Semiring R) + where + + standard-geometric-sequence-Commutative-Semiring : + geometric-sequence-Commutative-Semiring R + standard-geometric-sequence-Commutative-Semiring = + standard-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( a) + ( r) + + seq-standard-geometric-sequence-Commutative-Semiring : + ℕ → type-Commutative-Semiring R + seq-standard-geometric-sequence-Commutative-Semiring = + seq-geometric-sequence-Commutative-Semiring R + standard-geometric-sequence-Commutative-Semiring + + is-geometric-standard-geometric-sequence-Commutative-Semiring : + is-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( seq-standard-geometric-sequence-Commutative-Semiring) + is-geometric-standard-geometric-sequence-Commutative-Semiring = + is-geometric-seq-geometric-sequence-Commutative-Semiring R + standard-geometric-sequence-Commutative-Semiring +``` + +### The geometric sequences `n ↦ a * rⁿ` + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) (a r : type-Commutative-Semiring R) + where + + mul-pow-nat-Commutative-Semiring : ℕ → type-Commutative-Semiring R + mul-pow-nat-Commutative-Semiring n = + mul-Commutative-Semiring R a (power-Commutative-Semiring R n r) + + geometric-mul-pow-nat-Commutative-Semiring : + geometric-sequence-Commutative-Semiring R + geometric-mul-pow-nat-Commutative-Semiring = + geometric-mul-pow-nat-Semiring (semiring-Commutative-Semiring R) a r + + initial-term-mul-pow-nat-Commutative-Semiring : type-Commutative-Semiring R + initial-term-mul-pow-nat-Commutative-Semiring = + initial-term-geometric-sequence-Commutative-Semiring + ( R) + ( geometric-mul-pow-nat-Commutative-Semiring) + + eq-initial-term-mul-pow-nat-Commutative-Semiring : + initial-term-mul-pow-nat-Commutative-Semiring = a + eq-initial-term-mul-pow-nat-Commutative-Semiring = + right-unit-law-mul-Commutative-Semiring R a +``` + +## Properties + +### Any geometric sequence in a semiring is homotopic to a standard geometric sequence + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + (u : geometric-sequence-Commutative-Semiring R) + where + + htpy-seq-standard-geometric-sequence-Commutative-Semiring : + ( seq-geometric-sequence-Commutative-Semiring R + ( standard-geometric-sequence-Commutative-Semiring R + ( initial-term-geometric-sequence-Commutative-Semiring R u) + ( common-ratio-geometric-sequence-Commutative-Semiring R u))) ~ + ( seq-geometric-sequence-Commutative-Semiring R u) + htpy-seq-standard-geometric-sequence-Commutative-Semiring = + htpy-seq-standard-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( u) +``` + +### The nth term of a geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) (a r : type-Commutative-Semiring R) + where + + htpy-mul-pow-standard-geometric-sequence-Commutative-Semiring : + mul-pow-nat-Commutative-Semiring R a r ~ + seq-standard-geometric-sequence-Commutative-Semiring R a r + htpy-mul-pow-standard-geometric-sequence-Commutative-Semiring = + htpy-mul-pow-standard-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( a) + ( r) + + initial-term-standard-geometric-sequence-Commutative-Semiring : + seq-standard-geometric-sequence-Commutative-Semiring R a r 0 = a + initial-term-standard-geometric-sequence-Commutative-Semiring = + ( inv (htpy-mul-pow-standard-geometric-sequence-Commutative-Semiring 0)) ∙ + ( eq-initial-term-mul-pow-nat-Commutative-Semiring R a r) +``` + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) + (u : geometric-sequence-Commutative-Semiring R) + where + + htpy-mul-pow-geometric-sequence-Commutative-Semiring : + mul-pow-nat-Commutative-Semiring + ( R) + ( initial-term-geometric-sequence-Commutative-Semiring R u) + ( common-ratio-geometric-sequence-Commutative-Semiring R u) ~ + seq-geometric-sequence-Commutative-Semiring R u + htpy-mul-pow-geometric-sequence-Commutative-Semiring n = + ( htpy-mul-pow-standard-geometric-sequence-Commutative-Semiring + ( R) + ( initial-term-geometric-sequence-Commutative-Semiring R u) + ( common-ratio-geometric-sequence-Commutative-Semiring R u) + ( n)) ∙ + ( htpy-seq-standard-geometric-sequence-Semiring + ( semiring-Commutative-Semiring R) + ( u) + ( n)) +``` + +### Constant sequences are geometric with common ratio one + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) (a : type-Commutative-Semiring R) + where + + geometric-const-sequence-Commutative-Semiring : + geometric-sequence-Commutative-Semiring R + geometric-const-sequence-Commutative-Semiring = + geometric-const-sequence-Semiring (semiring-Commutative-Semiring R) a +``` + +### Finite geometric sequences + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) (a r : type-Commutative-Semiring R) + where + + standard-geometric-fin-sequence-Commutative-Semiring : + (n : ℕ) → fin-sequence (type-Commutative-Semiring R) n + standard-geometric-fin-sequence-Commutative-Semiring = + fin-sequence-sequence + ( seq-standard-geometric-sequence-Commutative-Semiring R a r) + + sum-standard-geometric-fin-sequence-Commutative-Semiring : + (n : ℕ) → type-Commutative-Semiring R + sum-standard-geometric-fin-sequence-Commutative-Semiring n = + sum-fin-sequence-type-Commutative-Semiring R n + ( standard-geometric-fin-sequence-Commutative-Semiring n) +``` + +### The sum of a finite geometric sequence + +```agda +module _ + {l : Level} (R : Commutative-Semiring l) (a r : type-Commutative-Semiring R) + where + + abstract + compute-sum-standard-geometric-fin-sequence-succ-Commutative-Semiring : + (n : ℕ) → + sum-standard-geometric-fin-sequence-Commutative-Semiring R + ( a) + ( r) + ( succ-ℕ n) = + add-Commutative-Semiring R + ( a) + ( mul-Commutative-Semiring R + ( r) + ( sum-standard-geometric-fin-sequence-Commutative-Semiring R a r n)) + compute-sum-standard-geometric-fin-sequence-succ-Commutative-Semiring n = + equational-reasoning + sum-standard-geometric-fin-sequence-Commutative-Semiring R + ( a) + ( r) + ( succ-ℕ n) + = + add-Commutative-Semiring R + ( term-Fin a r (succ-ℕ n) (zero-Fin n)) + ( sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → term-Fin a r (succ-ℕ n) (inr-Fin n i))) + by + snoc-sum-fin-sequence-type-Commutative-Semiring R n + ( standard-geometric-fin-sequence-Commutative-Semiring R + ( a) + ( r) + ( succ-ℕ n)) + ( refl) + = + add-Commutative-Semiring R + ( term a r 0) + ( sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → term a r (succ-ℕ (nat-Fin n i)))) + by + ap-add-Commutative-Semiring R + ( ap + ( seq-standard-geometric-sequence-Commutative-Semiring R a r) + ( is-zero-nat-zero-Fin {n})) + ( htpy-sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → ap (term a r) (nat-inr-Fin n i))) + = + add-Commutative-Semiring R + ( a) + ( sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → + mul-Commutative-Semiring R + ( a) + ( power-Commutative-Semiring R (succ-ℕ (nat-Fin n i)) r))) + by + ap-add-Commutative-Semiring R + ( initial-term-standard-geometric-sequence-Commutative-Semiring + ( R) + ( a) + ( r)) + ( htpy-sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → + inv + ( htpy-mul-pow-standard-geometric-sequence-Commutative-Semiring + ( R) + ( a) + ( r) + ( succ-ℕ (nat-Fin n i))))) + = + add-Commutative-Semiring R + ( a) + ( sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → + mul-Commutative-Semiring R + ( a) + ( mul-Commutative-Semiring R + ( r) + ( power-Commutative-Semiring R (nat-Fin n i) r)))) + by + ap-add-Commutative-Semiring R + ( refl) + ( htpy-sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → + ap-mul-Commutative-Semiring R + ( refl) + ( power-succ-Commutative-Semiring' R (nat-Fin n i) r))) + = + add-Commutative-Semiring R + ( a) + ( sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → + mul-Commutative-Semiring R + ( r) + ( mul-Commutative-Semiring R + ( a) + ( power-Commutative-Semiring R (nat-Fin n i) r)))) + by + ap-add-Commutative-Semiring R + ( refl) + ( htpy-sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → left-swap-mul-Commutative-Semiring R _ _ _)) + = + add-Commutative-Semiring R + ( a) + ( mul-Commutative-Semiring R + ( r) + ( sum-fin-sequence-type-Commutative-Semiring R n + ( λ i → + mul-Commutative-Semiring R + ( a) + ( power-Commutative-Semiring R (nat-Fin n i) r)))) + by + ap-add-Commutative-Semiring R + ( refl) + ( inv + ( left-distributive-mul-sum-fin-sequence-type-Commutative-Semiring + ( R) + ( n) + ( r) + ( _))) + = + add-Commutative-Semiring R + ( a) + ( mul-Commutative-Semiring R + ( r) + ( sum-standard-geometric-fin-sequence-Commutative-Semiring R + ( a) + ( r) + ( n))) + by + ap-add-Commutative-Semiring R + ( refl) + ( ap-mul-Commutative-Semiring R + ( refl) + ( htpy-sum-fin-sequence-type-Commutative-Semiring R n + ( htpy-mul-pow-standard-geometric-sequence-Commutative-Semiring + ( R) + ( a) + ( r) ∘ + nat-Fin n))) + where + term : + type-Commutative-Semiring R → type-Commutative-Semiring R → + sequence (type-Commutative-Semiring R) + term a' r' = + seq-standard-geometric-sequence-Commutative-Semiring R a' r' + term-Fin : + type-Commutative-Semiring R → type-Commutative-Semiring R → + (n : ℕ) → fin-sequence (type-Commutative-Semiring R) n + term-Fin a' r' = + standard-geometric-fin-sequence-Commutative-Semiring R a' r' +``` diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 6655218d7ca..51a5fb4b31e 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -85,6 +85,7 @@ open import elementary-number-theory.finitary-natural-numbers public open import elementary-number-theory.finitely-cyclic-maps public open import elementary-number-theory.fundamental-theorem-of-arithmetic public open import elementary-number-theory.geometric-sequences-positive-rational-numbers public +open import elementary-number-theory.geometric-sequences-rational-numbers public open import elementary-number-theory.goldbach-conjecture public open import elementary-number-theory.greatest-common-divisor-integers public open import elementary-number-theory.greatest-common-divisor-natural-numbers public diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md new file mode 100644 index 00000000000..747150c04bb --- /dev/null +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -0,0 +1,203 @@ +# Geometric sequences of rational numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module elementary-number-theory.geometric-sequences-rational-numbers where +``` + +
Imports + +```agda +open import commutative-algebra.geometric-sequences-commutative-rings +open import commutative-algebra.sums-of-finite-sequences-of-elements-commutative-rings + +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.multiplication-rational-numbers +open import elementary-number-theory.multiplicative-group-of-rational-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.powers-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.ring-of-rational-numbers + +open import foundation.identity-types +open import foundation.negated-equality +open import foundation.universe-levels + +open import group-theory.groups + +open import lists.sequences + +open import order-theory.strictly-increasing-sequences-strictly-preordered-sets +``` + +
+ +## Idea + +A +{{#concept "geometric sequence" Disambiguation="of rational numbers" Agda=geometric-sequence-ℚ}} +of [rational numbers](elementary-number-theory.positive-rational-numbers.md) is +a +[geometric sequence](commutative-algebra.geometric-sequences-commutative-rings.md) +in the +[commutative ring of rational numbers](elementary-number-theory.ring-of-rational-numbers.md). + +## Definitions + +```agda +geometric-sequence-ℚ : UU lzero +geometric-sequence-ℚ = geometric-sequence-Commutative-Ring commutative-ring-ℚ + +seq-geometric-sequence-ℚ : geometric-sequence-ℚ → sequence ℚ +seq-geometric-sequence-ℚ = + seq-geometric-sequence-Commutative-Ring commutative-ring-ℚ + +standard-geometric-sequence-ℚ : ℚ → ℚ → geometric-sequence-ℚ +standard-geometric-sequence-ℚ = + standard-geometric-sequence-Commutative-Ring commutative-ring-ℚ + +seq-standard-geometric-sequence-ℚ : ℚ → ℚ → sequence ℚ +seq-standard-geometric-sequence-ℚ = + seq-standard-geometric-sequence-Commutative-Ring commutative-ring-ℚ +``` + +## Properties + +### The nth term of a geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` + +```agda +module _ + (a r : ℚ) + where + + compute-standard-geometric-sequence-ℚ : + (n : ℕ) → seq-standard-geometric-sequence-ℚ a r n = a *ℚ power-ℚ n r + compute-standard-geometric-sequence-ℚ n = + inv + ( htpy-mul-pow-standard-geometric-sequence-Commutative-Ring + ( commutative-ring-ℚ) + ( a) + ( r) + ( n)) +``` + +### If `r ≠ 1`, the sum of the first `n` elements of the standard geometric sequence `n ↦ arⁿ` is `a(1-rⁿ)/(1-r)` + +```agda +sum-standard-geometric-fin-sequence-ℚ : ℚ → ℚ → ℕ → ℚ +sum-standard-geometric-fin-sequence-ℚ = + sum-standard-geometric-fin-sequence-Commutative-Ring commutative-ring-ℚ + +module _ + (a r : ℚ) (r≠1 : r ≠ one-ℚ) + where + + abstract + compute-sum-standard-geometric-fin-sequence-ℚ : + (n : ℕ) → + sum-standard-geometric-fin-sequence-ℚ a r n = + ( a *ℚ + ( (one-ℚ -ℚ power-ℚ n r) *ℚ + rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1))) + compute-sum-standard-geometric-fin-sequence-ℚ 0 = + inv + ( equational-reasoning + a *ℚ ((one-ℚ -ℚ one-ℚ) *ℚ _) + = a *ℚ (zero-ℚ *ℚ _) + by + ap-mul-ℚ + ( refl) + ( ap-mul-ℚ (right-inverse-law-add-ℚ one-ℚ) refl) + = a *ℚ zero-ℚ + by ap-mul-ℚ refl (left-zero-law-mul-ℚ _) + = zero-ℚ + by right-zero-law-mul-ℚ a) + compute-sum-standard-geometric-fin-sequence-ℚ (succ-ℕ n) = + let + 1/1-r = rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) + in + equational-reasoning + sum-standard-geometric-fin-sequence-ℚ a r (succ-ℕ n) + = + sum-standard-geometric-fin-sequence-ℚ a r n +ℚ + seq-standard-geometric-sequence-ℚ a r n + by + cons-sum-fin-sequence-type-Commutative-Ring + ( commutative-ring-ℚ) + ( n) + ( _) + ( refl) + = + ( a *ℚ + ( (one-ℚ -ℚ power-ℚ n r) *ℚ 1/1-r)) +ℚ + ( a *ℚ power-ℚ n r) + by + ap-add-ℚ + ( compute-sum-standard-geometric-fin-sequence-ℚ n) + ( compute-standard-geometric-sequence-ℚ a r n) + = + a *ℚ + (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/1-r) +ℚ power-ℚ n r) + by inv (left-distributive-mul-add-ℚ a _ _) + = + a *ℚ + ( (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/1-r) +ℚ + (power-ℚ n r *ℚ (one-ℚ -ℚ r)) *ℚ 1/1-r)) + by + ap-mul-ℚ + ( refl) + ( ap-add-ℚ + ( refl) + ( inv + ( cancel-right-mul-div-ℚˣ _ + ( invertible-diff-neq-ℚ r one-ℚ r≠1)))) + = + a *ℚ + ( ( (one-ℚ -ℚ power-ℚ n r) +ℚ (power-ℚ n r *ℚ (one-ℚ -ℚ r))) *ℚ + 1/1-r) + by + ap-mul-ℚ + ( refl) + ( inv (right-distributive-mul-add-ℚ _ _ 1/1-r)) + = + a *ℚ + ( ( one-ℚ -ℚ power-ℚ n r +ℚ + ((power-ℚ n r *ℚ one-ℚ) -ℚ (power-ℚ n r *ℚ r))) *ℚ + 1/1-r) + by + ap-mul-ℚ + ( refl) + ( ap-mul-ℚ + ( ap-add-ℚ refl (left-distributive-mul-diff-ℚ _ _ _)) + ( refl)) + = + a *ℚ + ( ( one-ℚ -ℚ power-ℚ n r +ℚ + ((power-ℚ n r -ℚ power-ℚ (succ-ℕ n) r))) *ℚ + 1/1-r) + by + ap-mul-ℚ + ( refl) + ( ap-mul-ℚ + ( ap-add-ℚ + ( refl) + ( ap-diff-ℚ + ( right-unit-law-mul-ℚ _) + ( inv (power-succ-ℚ n r)))) + ( refl)) + = a *ℚ ((one-ℚ -ℚ power-ℚ (succ-ℕ n) r) *ℚ 1/1-r) + by + ap-mul-ℚ + ( refl) + ( ap-mul-ℚ + ( mul-right-div-Group group-add-ℚ _ _ _) + ( refl)) +``` + +## External links + +- [Geometric progressions](https://en.wikipedia.org/wiki/Geometric_progression) + at Wikipedia diff --git a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md index a35af131e80..3df03c15ddf 100644 --- a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md @@ -9,11 +9,11 @@ module elementary-number-theory.multiplicative-group-of-rational-numbers where
Imports ```agda -open import elementary-number-theory.multiplication-positive-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.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-monoid-of-rational-numbers -open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonzero-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers @@ -27,8 +27,8 @@ open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types open import foundation.function-types -open import foundation.negated-equality open import foundation.identity-types +open import foundation.negated-equality open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels @@ -190,3 +190,20 @@ abstract invertible-diff-neq-ℚ : (a b : ℚ) → a ≠ b → ℚˣ invertible-diff-neq-ℚ a b a≠b = (b -ℚ a , is-invertible-diff-neq-ℚ a b a≠b) ``` + +### Cancellation laws + +```agda +abstract + cancel-right-mul-div-ℚˣ : + (p : ℚ) (q : ℚˣ) → (p *ℚ rational-ℚˣ q) *ℚ rational-inv-ℚˣ q = p + cancel-right-mul-div-ℚˣ p q = + equational-reasoning + p *ℚ rational-ℚˣ q *ℚ rational-inv-ℚˣ q + = p *ℚ (rational-ℚˣ q *ℚ rational-inv-ℚˣ q) + by associative-mul-ℚ _ _ _ + = p *ℚ rational-ℚˣ one-ℚˣ + by ap-mul-ℚ refl (ap rational-ℚˣ (right-inverse-law-mul-ℚˣ q)) + = p + by right-unit-law-mul-ℚ p +``` diff --git a/src/ring-theory/geometric-sequences-rings.lagda.md b/src/ring-theory/geometric-sequences-rings.lagda.md index 90497c4db21..9458cf5a5fa 100644 --- a/src/ring-theory/geometric-sequences-rings.lagda.md +++ b/src/ring-theory/geometric-sequences-rings.lagda.md @@ -158,7 +158,7 @@ module _ ( u) ``` -### The nth term of an geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` +### The nth term of a geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` ```agda module _ diff --git a/src/ring-theory/geometric-sequences-semirings.lagda.md b/src/ring-theory/geometric-sequences-semirings.lagda.md index 3d7dff3e3ac..1e560ceabd0 100644 --- a/src/ring-theory/geometric-sequences-semirings.lagda.md +++ b/src/ring-theory/geometric-sequences-semirings.lagda.md @@ -211,7 +211,7 @@ module _ ( u) ``` -### The nth term of an geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` +### The nth term of a geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` ```agda module _ From c33f1fba7247a73527f59da257ecc60b7571777e Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 20 Oct 2025 16:04:41 -0700 Subject: [PATCH 023/134] Progress --- .../apartness-complex-numbers.lagda.md | 100 ++++++++++++++++++ .../nonzero-complex-numbers.lagda.md | 35 ++++++ 2 files changed, 135 insertions(+) create mode 100644 src/complex-numbers/apartness-complex-numbers.lagda.md create mode 100644 src/complex-numbers/nonzero-complex-numbers.lagda.md diff --git a/src/complex-numbers/apartness-complex-numbers.lagda.md b/src/complex-numbers/apartness-complex-numbers.lagda.md new file mode 100644 index 00000000000..762d6da4092 --- /dev/null +++ b/src/complex-numbers/apartness-complex-numbers.lagda.md @@ -0,0 +1,100 @@ +# Apartness of complex numbers + +```agda +module complex-numbers.apartness-complex-numbers where +``` + +
Imports + +```agda +open import foundation.negation +open import complex-numbers.complex-numbers +open import foundation.function-types +open import foundation.large-apartness-relations +open import foundation.dependent-pair-types +open import foundation.functoriality-disjunction +open import real-numbers.apartness-real-numbers +open import foundation.empty-types +open import foundation.disjunction +open import foundation.propositions +open import foundation.universe-levels +``` + +
+ +## Idea + +Two [complex numbers](complex-numbers.complex-numbers.md) are +{{#concept "apart" Agda=apart-ℂ}} if their +[real](real-numbers.dedekind-real-numbers.md) parts are +[apart](real-numbers.apartness-real-numbers.md) [or](foundation.disjunction.md) +their complex parts are [apart]. + +## Definition + +```agda +module _ + {l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) + where + + apart-prop-ℂ : Prop (l1 ⊔ l2) + apart-prop-ℂ = + apart-prop-ℝ (re-ℂ z) (re-ℂ w) ∨ apart-prop-ℝ (im-ℂ z) (im-ℂ w) + + apart-ℂ : UU (l1 ⊔ l2) + apart-ℂ = type-Prop apart-prop-ℂ +``` + +## Properties + +### Apartness is antireflexive + +```agda +abstract + antireflexive-apart-ℂ : {l : Level} (z : ℂ l) → ¬ (apart-ℂ z z) + antireflexive-apart-ℂ (a , b) = + elim-disjunction + ( empty-Prop) + ( antireflexive-apart-ℝ a) + ( antireflexive-apart-ℝ b) +``` + +### Apartness is symmetric + +```agda +abstract + symmetric-apart-ℂ : + {l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → apart-ℂ z w → apart-ℂ w z + symmetric-apart-ℂ (a , b) (c , d) = + map-disjunction (symmetric-apart-ℝ a c) (symmetric-apart-ℝ b d) +``` + +### Apartness is cotransitive + +```agda +abstract + cotransitive-apart-ℂ : + {l1 l2 l3 : Level} (x : ℂ l1) (y : ℂ l2) (z : ℂ l3) → + apart-ℂ x y → disjunction-type (apart-ℂ x z) (apart-ℂ z y) + cotransitive-apart-ℂ x@(a , b) y@(c , d) z@(e , f) = + elim-disjunction + ( (apart-prop-ℂ x z) ∨ (apart-prop-ℂ z y)) + ( map-disjunction inl-disjunction inl-disjunction ∘ + cotransitive-apart-ℝ a c e) + ( map-disjunction inr-disjunction inr-disjunction ∘ + cotransitive-apart-ℝ b d f) +``` + +### Apartness on the complex numbers is a large apartness relation + +```agda +large-apartness-relation-ℂ : Large-Apartness-Relation _⊔_ ℂ +apart-prop-Large-Apartness-Relation large-apartness-relation-ℂ = + apart-prop-ℂ +antirefl-Large-Apartness-Relation large-apartness-relation-ℂ = + antireflexive-apart-ℂ +symmetric-Large-Apartness-Relation large-apartness-relation-ℂ = + symmetric-apart-ℂ +cotransitive-Large-Apartness-Relation large-apartness-relation-ℂ = + cotransitive-apart-ℂ +``` diff --git a/src/complex-numbers/nonzero-complex-numbers.lagda.md b/src/complex-numbers/nonzero-complex-numbers.lagda.md new file mode 100644 index 00000000000..ac02560e7cb --- /dev/null +++ b/src/complex-numbers/nonzero-complex-numbers.lagda.md @@ -0,0 +1,35 @@ +# Nonzero complex numbers + +```agda +module complex-numbers.nonzero-complex-numbers where +``` + +
Imports + +```agda +open import complex-numbers.complex-numbers +open import foundation.universe-levels +open import foundation.propositions +open import complex-numbers.apartness-complex-numbers +``` + +
+ +## Idea + +A [complex number](complex-numbers.complex-numbers.md) is +{{#concept "nonzero" Agda=is-nonzero-ℂ}} if it is +[apart](complex-numbers.apartness-complex-numbers.md) from zero, that is, its +[real](real-numbers.dedekind-real-numbers.md) part +[or](foundation.disjunction.md) its imaginary part are +[nonzero](real-numbers.nonzero-real-numbers.md). + +## Definition + +```agda +is-nonzero-prop-ℂ : {l : Level} → ℂ l → Prop l +is-nonzero-prop-ℂ z = apart-prop-ℂ z zero-ℂ + +is-nonzero-ℂ : {l : Level} → ℂ l → UU l +is-nonzero-ℂ z = type-Prop (is-nonzero-prop-ℂ z) +``` From 3c95dda19908bcfd2d60f1adb48b23942da5b787 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 4 Nov 2025 20:06:48 -0800 Subject: [PATCH 024/134] Fix build --- .../powers-positive-rational-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index 03791d8ca4e..1f3932919c6 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -123,7 +123,7 @@ abstract ( power-ℚ⁺ n p *ℚ⁺ q) ( power-ℚ⁺ (succ-ℕ n) q) ( preserves-le-right-mul-ℚ⁺ q _ _ - ( preserves-le-power-ℚ⁺ n (is-nonzero-succ-ℕ _) p q p Date: Tue, 4 Nov 2025 20:09:40 -0800 Subject: [PATCH 025/134] Fix link --- src/ring-theory/geometric-sequences-rings.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ring-theory/geometric-sequences-rings.lagda.md b/src/ring-theory/geometric-sequences-rings.lagda.md index 9458cf5a5fa..68d24fa3921 100644 --- a/src/ring-theory/geometric-sequences-rings.lagda.md +++ b/src/ring-theory/geometric-sequences-rings.lagda.md @@ -34,8 +34,8 @@ open import ring-theory.rings A {{#concept "geometric sequence" Disambiguation="in a ring" Agda=geometric-sequence-Ring}} -in a [ring](ring-theory.semirings.md) is an -[arithmetic sequence](ring-theory.geometric-sequence-semirings.md) in the +in a [ring](ring-theory.semirings.md) is a +[geometric sequence](ring-theory.geometric-sequences-semirings.md) in the underlying [semiring](ring-theory.semirings.md). These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the From 764f62ee7057ae3180373f44a9e808b9b803146a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Nov 2025 10:37:07 -0800 Subject: [PATCH 026/134] If |q|<1 , q^n approaches 0 --- .../absolute-value-rational-numbers.lagda.md | 11 +++ ...metric-sequences-rational-numbers.lagda.md | 2 + ...quality-positive-rational-numbers.lagda.md | 9 ++ ...ication-positive-rational-numbers.lagda.md | 5 ++ .../powers-positive-rational-numbers.lagda.md | 86 +++++++++++++++++++ .../powers-rational-numbers.lagda.md | 72 ++++++++++++++++ ...limits-of-sequences-metric-spaces.lagda.md | 20 +++++ ...onal-sequences-approximating-zero.lagda.md | 11 +++ 8 files changed, 216 insertions(+) diff --git a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md index 4b0ad01d885..3a42ec9a40a 100644 --- a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md +++ b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md @@ -18,6 +18,7 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.multiplication-nonnegative-rational-numbers open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.nonpositive-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers @@ -142,6 +143,16 @@ abstract ap rational-ℚ⁰⁺ (abs-rational-ℚ⁰⁺ (nonnegative-ℚ⁺ q)) ``` +### The absolute value of a negative rational number is the negation of the number + +```agda +abstract + rational-abs-rational-ℚ⁻ : + (q : ℚ⁻) → rational-abs-ℚ (rational-ℚ⁻ q) = neg-ℚ (rational-ℚ⁻ q) + rational-abs-rational-ℚ⁻ q⁻@(q , _) = + inv (rational-abs-neg-ℚ q) ∙ rational-abs-rational-ℚ⁺ (neg-ℚ⁻ q⁻) +``` + ### `q` is less than or equal to `abs-ℚ q` ```agda diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 747150c04bb..68abba9e6e0 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -197,6 +197,8 @@ module _ ( refl)) ``` +### If `|r| < 1`, the sum of the standard geometric sequence `n ↦ arⁿ` is `a/(1-r)` + ## External links - [Geometric progressions](https://en.wikipedia.org/wiki/Geometric_progression) diff --git a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md index ef8913ec1d2..d967080b3a1 100644 --- a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md @@ -11,8 +11,10 @@ open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.positive-rational-numbers +open import foundation.action-on-identifications-functions open import foundation.binary-relations open import foundation.dependent-pair-types +open import foundation.identity-types open import foundation.propositions open import foundation.universe-levels @@ -90,3 +92,10 @@ transitive-leq-ℚ⁺ = transitive-leq-Poset poset-ℚ⁺ antisymmetric-leq-ℚ⁺ : is-antisymmetric leq-ℚ⁺ antisymmetric-leq-ℚ⁺ = antisymmetric-leq-Poset poset-ℚ⁺ ``` + +### If `x = y`, `x ≤ y` + +```agda +leq-eq-ℚ⁺ : {x y : ℚ⁺} → x = y → leq-ℚ⁺ x y +leq-eq-ℚ⁺ x=y = leq-eq-ℚ _ _ (ap rational-ℚ⁺ x=y) +``` diff --git a/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md index cda3184cdbc..c77be1001a5 100644 --- a/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md @@ -28,6 +28,7 @@ open import elementary-number-theory.strict-inequality-integers open import elementary-number-theory.strict-inequality-positive-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.empty-types @@ -107,6 +108,10 @@ mul-ℚ⁺ = mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ infixl 40 _*ℚ⁺_ _*ℚ⁺_ = mul-ℚ⁺ + +ap-mul-ℚ⁺ : + {x x' : ℚ⁺} → x = x' → {y y' : ℚ⁺} → y = y' → mul-ℚ⁺ x y = mul-ℚ⁺ x' y' +ap-mul-ℚ⁺ = ap-binary mul-ℚ⁺ ``` ## Properties diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index 1f3932919c6..fc414c812b1 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -7,20 +7,26 @@ module elementary-number-theory.powers-positive-rational-numbers where
Imports ```agda +open import elementary-number-theory.absolute-value-rational-numbers open import elementary-number-theory.addition-natural-numbers open import elementary-number-theory.addition-positive-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.arithmetic-sequences-positive-rational-numbers open import elementary-number-theory.bernoullis-inequality-positive-rational-numbers +open import elementary-number-theory.distance-rational-numbers open import elementary-number-theory.geometric-sequences-positive-rational-numbers +open import elementary-number-theory.inequality-natural-numbers open import elementary-number-theory.inequality-positive-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.multiplication-natural-numbers open import elementary-number-theory.multiplication-positive-rational-numbers +open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers open import elementary-number-theory.natural-numbers +open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.nonzero-natural-numbers +open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-positive-rational-numbers @@ -38,6 +44,12 @@ open import foundation.transport-along-identifications open import group-theory.multiples-of-elements-abelian-groups open import group-theory.powers-of-elements-groups + +open import metric-spaces.limits-of-sequences-metric-spaces +open import metric-spaces.metric-space-of-rational-numbers +open import metric-spaces.rational-sequences-approximating-zero + +open import order-theory.posets ```
@@ -58,6 +70,9 @@ times. This file covers the case where `n` is a ```agda power-ℚ⁺ : ℕ → ℚ⁺ → ℚ⁺ power-ℚ⁺ = power-Group group-mul-ℚ⁺ + +rational-power-ℚ⁺ : ℕ → ℚ⁺ → ℚ +rational-power-ℚ⁺ n q = rational-ℚ⁺ (power-ℚ⁺ n q) ``` ## Properties @@ -253,6 +268,77 @@ abstract unit-trunc-Prop (bound-arbitrarily-small-power-le-one-ℚ⁺ ε δ 1<ε) ``` +### If `ε` is a positive rational number less than or equal to 1 and `m ≤ n`, then `εⁿ ≤ εᵐ` + +```agda +abstract + leq-power-leq-one-ℚ⁺ : + (ε : ℚ⁺) → leq-ℚ⁺ ε one-ℚ⁺ → (m n : ℕ) → leq-ℕ m n → + leq-ℚ⁺ (power-ℚ⁺ n ε) (power-ℚ⁺ m ε) + leq-power-leq-one-ℚ⁺ ε ε≤1 m n m≤n = + let + (k , k+m=n) = subtraction-leq-ℕ m n m≤n + open inequality-reasoning-Poset ℚ-Poset + in + chain-of-inequalities + rational-power-ℚ⁺ n ε + ≤ rational-power-ℚ⁺ (k +ℕ m) ε + by leq-eq-ℚ⁺ (ap (λ x → power-ℚ⁺ x ε) (inv k+m=n)) + ≤ rational-power-ℚ⁺ k ε *ℚ rational-power-ℚ⁺ m ε + by leq-eq-ℚ⁺ (distributive-power-add-ℚ⁺ k m ε) + ≤ rational-power-ℚ⁺ k one-ℚ⁺ *ℚ rational-power-ℚ⁺ m ε + by + preserves-leq-right-mul-ℚ⁺ + ( power-ℚ⁺ m ε) + ( _) + ( _) + ( preserves-leq-power-ℚ⁺ k ε one-ℚ⁺ ε≤1) + ≤ one-ℚ *ℚ rational-power-ℚ⁺ m ε + by leq-eq-ℚ _ _ (ap-mul-ℚ (ap rational-ℚ⁺ (power-one-ℚ⁺ k)) refl) + ≤ rational-power-ℚ⁺ m ε + by leq-eq-ℚ _ _ (left-unit-law-mul-ℚ _) +``` + +### If `ε` is a positive rational number less than 1, `εⁿ` approaches 0 + +```agda +abstract + is-zero-limit-power-le-one-ℚ⁺ : + (ε : ℚ⁺) → le-ℚ⁺ ε one-ℚ⁺ → + is-zero-limit-sequence-ℚ (λ n → rational-ℚ⁺ (power-ℚ⁺ n ε)) + is-zero-limit-power-le-one-ℚ⁺ ε ε<1 = + is-limit-bound-modulus-sequence-Metric-Space + ( metric-space-ℚ) + ( _) + ( zero-ℚ) + ( λ δ → + let + (m , εᵐ<δ) = + bound-arbitrarily-small-power-le-one-ℚ⁺ ε δ ε<1 + open inequality-reasoning-Poset ℚ-Poset + in + ( m , + λ n m≤n → + neighborhood-leq-dist-ℚ + ( δ) + ( rational-power-ℚ⁺ n ε) + ( zero-ℚ) + ( chain-of-inequalities + rational-dist-ℚ (rational-ℚ⁺ (power-ℚ⁺ n ε)) zero-ℚ + ≤ rational-abs-ℚ (rational-ℚ⁺ (power-ℚ⁺ n ε)) + by + leq-eq-ℚ _ _ (ap rational-ℚ⁰⁺ (right-zero-law-dist-ℚ _)) + ≤ rational-ℚ⁺ (power-ℚ⁺ n ε) + by + leq-eq-ℚ _ _ + ( ap rational-ℚ⁰⁺ + ( abs-rational-ℚ⁰⁺ (nonnegative-ℚ⁺ (power-ℚ⁺ n ε)))) + ≤ rational-ℚ⁺ (power-ℚ⁺ m ε) + by leq-power-leq-one-ℚ⁺ ε (leq-le-ℚ ε<1) m n m≤n + ≤ rational-ℚ⁺ δ + by leq-le-ℚ εᵐ<δ))) +``` + ## See also - [Powers of elements of a group](group-theory.powers-of-elements-groups.md) diff --git a/src/elementary-number-theory/powers-rational-numbers.lagda.md b/src/elementary-number-theory/powers-rational-numbers.lagda.md index 898f71cee0e..ea1efba98d3 100644 --- a/src/elementary-number-theory/powers-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-rational-numbers.lagda.md @@ -10,6 +10,7 @@ module elementary-number-theory.powers-rational-numbers where open import elementary-number-theory.absolute-value-rational-numbers open import elementary-number-theory.addition-natural-numbers open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers +open import elementary-number-theory.inequality-natural-numbers open import elementary-number-theory.inequality-nonnegative-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.multiplication-natural-numbers @@ -34,11 +35,16 @@ open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.coproduct-types open import foundation.dependent-pair-types +open import foundation.function-extensionality open import foundation.identity-types open import foundation.transport-along-identifications open import group-theory.powers-of-elements-commutative-monoids open import group-theory.powers-of-elements-monoids + +open import metric-spaces.limits-of-sequences-metric-spaces +open import metric-spaces.metric-space-of-rational-numbers +open import metric-spaces.rational-sequences-approximating-zero ```
@@ -101,6 +107,14 @@ abstract power-succ-ℚ = power-succ-Monoid monoid-mul-ℚ ``` +### `0ⁿ = 0` when `1 ≤ n` + +```agda +abstract + power-zero-ℚ : (n : ℕ) → leq-ℕ 1 n → power-ℚ n zero-ℚ = zero-ℚ + power-zero-ℚ (succ-ℕ n) _ = power-succ-ℚ n _ ∙ right-zero-law-mul-ℚ _ +``` + ### `qⁿ⁺¹ = qqⁿ` ```agda @@ -392,6 +406,64 @@ abstract ( decide-is-negative-is-nonnegative-ℚ p) ``` +### If `|ε| < 1`, `εⁿ` approaches 0 + +```agda +abstract + is-zero-limit-power-le-one-abs-ℚ : + (ε : ℚ) → le-ℚ (rational-abs-ℚ ε) one-ℚ → + is-zero-limit-sequence-ℚ (λ n → power-ℚ n ε) + is-zero-limit-power-le-one-abs-ℚ ε |ε|<1 = + trichotomy-sign-ℚ ε + ( λ is-neg-ε → + let + ε⁻ = (ε , is-neg-ε) + in + is-zero-limit-is-zero-limit-abs-sequence-ℚ + ( _) + ( inv-tr + ( is-zero-limit-sequence-ℚ) + ( eq-htpy + ( λ n → + equational-reasoning + rational-abs-ℚ (power-ℚ n ε) + = power-ℚ n (rational-abs-ℚ ε) + by inv (power-rational-abs-ℚ n ε) + = power-ℚ n (neg-ℚ ε) + by + ap (power-ℚ n) (rational-abs-rational-ℚ⁻ ε⁻) + = rational-ℚ⁺ (power-ℚ⁺ n (neg-ℚ⁻ ε⁻)) + by power-rational-ℚ⁺ n (neg-ℚ⁻ ε⁻))) + ( is-zero-limit-power-le-one-ℚ⁺ + ( neg-ℚ⁻ ε⁻) + ( tr + ( λ q → le-ℚ q one-ℚ) + ( rational-abs-rational-ℚ⁻ ε⁻) + ( |ε|<1))))) + ( λ ε=0 → + is-limit-bound-modulus-sequence-Metric-Space + ( metric-space-ℚ) + ( λ n → power-ℚ n ε) + ( zero-ℚ) + ( λ δ → + ( 1 , + λ n 1≤n → + inv-tr + ( λ z → neighborhood-ℚ δ z zero-ℚ) + ( ap (power-ℚ n) ε=0 ∙ power-zero-ℚ n 1≤n) + ( is-reflexive-neighborhood-ℚ δ zero-ℚ)))) + ( λ is-pos-ε → + inv-tr + ( is-zero-limit-sequence-ℚ) + ( eq-htpy (λ n → power-rational-ℚ⁺ n (ε , is-pos-ε))) + ( is-zero-limit-power-le-one-ℚ⁺ + ( ε , is-pos-ε) + ( tr + ( λ q → le-ℚ q one-ℚ) + ( rational-abs-rational-ℚ⁺ (ε , is-pos-ε)) + ( |ε|<1)))) +``` + ## See also - [Powers of elements of a monoid](group-theory.powers-of-elements-monoids.md) diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md index 41bb75c87e7..219491a035a 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -15,6 +15,7 @@ open import elementary-number-theory.positive-rational-numbers open import foundation.cartesian-product-types open import foundation.dependent-pair-types +open import foundation.existential-quantification open import foundation.function-types open import foundation.functoriality-dependent-pair-types open import foundation.functoriality-propositional-truncation @@ -100,6 +101,25 @@ module _ ## Properties +### Proving the limit of a sequence in a metric space + +```agda +module _ + {l1 l2 : Level} (M : Metric-Space l1 l2) + (u : sequence-type-Metric-Space M) + (lim : type-Metric-Space M) + where + + is-limit-bound-modulus-sequence-Metric-Space : + ( (δ : ℚ⁺) → + Σ ( ℕ) + ( λ (N : ℕ) → + (n : ℕ) → leq-ℕ N n → neighborhood-Metric-Space M δ (u n) lim)) → + is-limit-sequence-Metric-Space M u lim + is-limit-bound-modulus-sequence-Metric-Space H = + intro-exists (pr1 ∘ H) (pr2 ∘ H) +``` + ### The limit of a sequence in a metric space is unique ```agda diff --git a/src/metric-spaces/rational-sequences-approximating-zero.lagda.md b/src/metric-spaces/rational-sequences-approximating-zero.lagda.md index 821404d222f..fd54c611598 100644 --- a/src/metric-spaces/rational-sequences-approximating-zero.lagda.md +++ b/src/metric-spaces/rational-sequences-approximating-zero.lagda.md @@ -215,6 +215,17 @@ module _ map-is-inhabited ( tot tr-is-modulus-leq-abs-zero-limit-sequence-ℚ) ( is-zero-limit-seq-zero-limit-sequence-ℚ v) + +abstract + is-zero-limit-is-zero-limit-abs-sequence-ℚ : + ( u : sequence ℚ) → + is-zero-limit-sequence-ℚ (rational-abs-ℚ ∘ u) → + is-zero-limit-sequence-ℚ u + is-zero-limit-is-zero-limit-abs-sequence-ℚ u H = + is-zero-limit-leq-abs-zero-limit-sequence-ℚ + ( u) + ( rational-abs-ℚ ∘ u , H) + ( λ n → refl-leq-ℚ (rational-abs-ℚ (u n))) ``` ### Any rational approximation of zero defines a sequence approximating zero From 3c8f1ad31502712382ef34d6235f2450c35e0803 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Nov 2025 11:33:45 -0800 Subject: [PATCH 027/134] The sum of geometric series of rational numbers --- ...gent-series-metric-abelian-groups.lagda.md | 4 +- ...metric-sequences-rational-numbers.lagda.md | 75 +++++++++++++++++++ ...icative-group-of-rational-numbers.lagda.md | 32 ++++++++ ...trict-inequality-rational-numbers.lagda.md | 5 ++ .../triangular-numbers.lagda.md | 1 - src/foundation/negated-equality.lagda.md | 14 +++- .../metric-space-of-rational-numbers.lagda.md | 17 +++++ 7 files changed, 143 insertions(+), 5 deletions(-) diff --git a/src/analysis/convergent-series-metric-abelian-groups.lagda.md b/src/analysis/convergent-series-metric-abelian-groups.lagda.md index 31a90a78358..6e5e9cfe3fd 100644 --- a/src/analysis/convergent-series-metric-abelian-groups.lagda.md +++ b/src/analysis/convergent-series-metric-abelian-groups.lagda.md @@ -36,7 +36,7 @@ associated [metric space](metric-spaces.metric-spaces.md). ```agda module _ - {l1 l2 : Level} (G : Metric-Ab l1 l2) (σ : series-Metric-Ab G) + {l1 l2 : Level} {G : Metric-Ab l1 l2} (σ : series-Metric-Ab G) where is-sum-prop-series-Metric-Ab : type-Metric-Ab G → Prop l2 @@ -61,7 +61,7 @@ module _ convergent-series-Metric-Ab : {l1 l2 : Level} (G : Metric-Ab l1 l2) → UU (l1 ⊔ l2) convergent-series-Metric-Ab G = - type-subtype (is-convergent-prop-series-Metric-Ab G) + type-subtype (is-convergent-prop-series-Metric-Ab {G = G}) ``` ## Properties diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 68abba9e6e0..03de59ab44e 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -9,27 +9,43 @@ module elementary-number-theory.geometric-sequences-rational-numbers where
Imports ```agda +open import analysis.convergent-series-metric-abelian-groups +open import analysis.series-metric-abelian-groups + open import commutative-algebra.geometric-sequences-commutative-rings open import commutative-algebra.sums-of-finite-sequences-of-elements-commutative-rings +open import elementary-number-theory.absolute-value-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.difference-rational-numbers +open import elementary-number-theory.metric-additive-group-of-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-group-of-rational-numbers open import elementary-number-theory.natural-numbers +open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.powers-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.ring-of-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.dependent-pair-types +open import foundation.function-extensionality open import foundation.identity-types open import foundation.negated-equality +open import foundation.transport-along-identifications open import foundation.universe-levels open import group-theory.groups open import lists.sequences +open import metric-spaces.limits-of-sequences-metric-spaces +open import metric-spaces.metric-space-of-rational-numbers +open import metric-spaces.uniformly-continuous-functions-metric-spaces + open import order-theory.strictly-increasing-sequences-strictly-preordered-sets ``` @@ -199,6 +215,65 @@ module _ ### If `|r| < 1`, the sum of the standard geometric sequence `n ↦ arⁿ` is `a/(1-r)` +```agda +module _ + (a r : ℚ) + where + + standard-geometric-series-ℚ : series-Metric-Ab metric-ab-add-ℚ + standard-geometric-series-ℚ = + series-terms-Metric-Ab (seq-standard-geometric-sequence-ℚ a r) + + abstract + sum-standard-geometric-sequence-ℚ : + (|r|<1 : le-ℚ (rational-abs-ℚ r) one-ℚ) → + is-sum-series-Metric-Ab + ( standard-geometric-series-ℚ) + ( a *ℚ rational-inv-ℚˣ (invertible-diff-le-abs-ℚ r one-ℚ⁺ |r|<1)) + sum-standard-geometric-sequence-ℚ |r|<1 = + let + r≠1 = + nonequal-map + ( rational-abs-ℚ) + ( inv-tr + ( rational-abs-ℚ r ≠_) + ( rational-abs-rational-ℚ⁺ one-ℚ⁺) + ( nonequal-le-ℚ |r|<1)) + in + binary-tr + ( is-limit-sequence-Metric-Space metric-space-ℚ) + ( inv + ( eq-htpy (compute-sum-standard-geometric-fin-sequence-ℚ a r r≠1))) + ( equational-reasoning + a *ℚ + ( (one-ℚ -ℚ zero-ℚ) *ℚ + rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)) + = + a *ℚ + ( one-ℚ *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)) + by ap-mul-ℚ refl (ap-mul-ℚ (right-zero-law-diff-ℚ one-ℚ) refl) + = a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) + by ap-mul-ℚ refl (left-unit-law-mul-ℚ _)) + ( uniformly-continuous-map-limit-sequence-Metric-Space + ( metric-space-ℚ) + ( metric-space-ℚ) + ( comp-uniformly-continuous-function-Metric-Space + ( metric-space-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) + ( uniformly-continuous-left-mul-ℚ a) + ( comp-uniformly-continuous-function-Metric-Space + ( metric-space-ℚ) + ( metric-space-ℚ) + ( metric-space-ℚ) + ( uniformly-continuous-right-mul-ℚ + ( rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1))) + ( uniformly-continuous-diff-ℚ one-ℚ))) + ( λ n → power-ℚ n r) + ( zero-ℚ) + ( is-zero-limit-power-le-one-abs-ℚ r |r|<1)) +``` + ## External links - [Geometric progressions](https://en.wikipedia.org/wiki/Geometric_progression) diff --git a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md index 1345443d5b1..b6fb3598c70 100644 --- a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md @@ -9,12 +9,14 @@ module elementary-number-theory.multiplicative-group-of-rational-numbers where
Imports ```agda +open import elementary-number-theory.absolute-value-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.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-monoid-of-rational-numbers open import elementary-number-theory.negative-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.nonzero-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers @@ -78,6 +80,13 @@ rational-ℚˣ : ℚˣ → ℚ rational-ℚˣ = pr1 ``` +### Equality of invertible rational numbers + +```agda +eq-ℚˣ : (x y : ℚˣ) → rational-ℚˣ x = rational-ℚˣ y → x = y +eq-ℚˣ _ _ = eq-type-subtype (subtype-group-of-units-Ring ring-ℚ) +``` + ### Operations of the multiplicative group of rational numbers ```agda @@ -191,6 +200,29 @@ invertible-diff-neq-ℚ : (a b : ℚ) → a ≠ b → ℚˣ invertible-diff-neq-ℚ a b a≠b = (b -ℚ a , is-invertible-diff-neq-ℚ a b a≠b) ``` +### If `|a| < b` for positive `b`, `b - a` is invertible + +```agda +is-invertible-diff-le-abs-ℚ : + (a : ℚ) (b : ℚ⁺) → le-ℚ (rational-abs-ℚ a) (rational-ℚ⁺ b) → + is-invertible-element-Ring ring-ℚ (rational-ℚ⁺ b -ℚ a) +is-invertible-diff-le-abs-ℚ a b⁺@(b , _) |a| Date: Thu, 6 Nov 2025 13:10:33 -0800 Subject: [PATCH 028/134] Define real powers --- src/commutative-algebra.lagda.md | 1 + .../large-commutative-rings.lagda.md | 26 +++ ...ers-of-elements-commutative-rings.lagda.md | 21 ++ ...-elements-large-commutative-rings.lagda.md | 190 ++++++++++++++++++ .../large-abelian-groups.lagda.md | 15 ++ .../powers-of-elements-monoids.lagda.md | 19 +- src/real-numbers.lagda.md | 1 + ...ge-additive-group-of-real-numbers.lagda.md | 21 ++ .../large-ring-of-real-numbers.lagda.md | 28 +++ src/real-numbers/powers-real-numbers.lagda.md | 121 +++++++++++ src/ring-theory.lagda.md | 1 + src/ring-theory/large-rings.lagda.md | 23 +++ .../powers-of-elements-large-rings.lagda.md | 154 ++++++++++++++ .../powers-of-elements-rings.lagda.md | 22 ++ 14 files changed, 634 insertions(+), 9 deletions(-) create mode 100644 src/commutative-algebra/powers-of-elements-large-commutative-rings.lagda.md create mode 100644 src/real-numbers/powers-real-numbers.lagda.md create mode 100644 src/ring-theory/powers-of-elements-large-rings.lagda.md diff --git a/src/commutative-algebra.lagda.md b/src/commutative-algebra.lagda.md index db76ba0076b..5b04abae124 100644 --- a/src/commutative-algebra.lagda.md +++ b/src/commutative-algebra.lagda.md @@ -48,6 +48,7 @@ open import commutative-algebra.poset-of-ideals-commutative-rings public open import commutative-algebra.poset-of-radical-ideals-commutative-rings public open import commutative-algebra.powers-of-elements-commutative-rings public open import commutative-algebra.powers-of-elements-commutative-semirings public +open import commutative-algebra.powers-of-elements-large-commutative-rings public open import commutative-algebra.precategory-of-commutative-rings public open import commutative-algebra.precategory-of-commutative-semirings public open import commutative-algebra.prime-ideals-commutative-rings public diff --git a/src/commutative-algebra/large-commutative-rings.lagda.md b/src/commutative-algebra/large-commutative-rings.lagda.md index aca65379013..8ec7e10fac0 100644 --- a/src/commutative-algebra/large-commutative-rings.lagda.md +++ b/src/commutative-algebra/large-commutative-rings.lagda.md @@ -8,6 +8,7 @@ module commutative-algebra.large-commutative-rings where ```agda open import commutative-algebra.commutative-rings +open import commutative-algebra.homomorphisms-commutative-rings open import foundation.dependent-pair-types open import foundation.identity-types @@ -121,4 +122,29 @@ module _ ( multiplicative-large-monoid-Large-Ring ( large-ring-Large-Commutative-Ring R)) ( commutative-mul-Large-Commutative-Ring R) + + raise-one-Large-Commutative-Ring : + (l : Level) → type-Large-Commutative-Ring R l + raise-one-Large-Commutative-Ring = + raise-one-Large-Ring (large-ring-Large-Commutative-Ring R) + + one-Large-Commutative-Ring : type-Large-Commutative-Ring R lzero + one-Large-Commutative-Ring = + one-Large-Ring (large-ring-Large-Commutative-Ring R) +``` + +### The raise operation is a commutative ring homomorphism + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) (l1 l2 : Level) + where + + hom-raise-Large-Commutative-Ring : + hom-Commutative-Ring + ( commutative-ring-Large-Commutative-Ring R l1) + ( commutative-ring-Large-Commutative-Ring R (l1 ⊔ l2)) + hom-raise-Large-Commutative-Ring = + hom-raise-Large-Ring (large-ring-Large-Commutative-Ring R) l1 l2 ``` diff --git a/src/commutative-algebra/powers-of-elements-commutative-rings.lagda.md b/src/commutative-algebra/powers-of-elements-commutative-rings.lagda.md index 9cd508163f8..9111fc02d2d 100644 --- a/src/commutative-algebra/powers-of-elements-commutative-rings.lagda.md +++ b/src/commutative-algebra/powers-of-elements-commutative-rings.lagda.md @@ -8,6 +8,7 @@ module commutative-algebra.powers-of-elements-commutative-rings where ```agda open import commutative-algebra.commutative-rings +open import commutative-algebra.homomorphisms-commutative-rings open import elementary-number-theory.addition-natural-numbers open import elementary-number-theory.multiplication-natural-numbers @@ -144,3 +145,23 @@ module _ odd-power-neg-Commutative-Ring = odd-power-neg-Ring (ring-Commutative-Ring A) ``` + +### Commutative ring homomorphisms preserve powers of elements + +```agda +module _ + {l1 l2 : Level} (R : Commutative-Ring l1) (S : Commutative-Ring l2) + (f : hom-Commutative-Ring R S) + where + + abstract + preserves-powers-hom-Commutative-Ring : + (n : ℕ) (x : type-Commutative-Ring R) → + map-hom-Commutative-Ring R S f (power-Commutative-Ring R n x) = + power-Commutative-Ring S n (map-hom-Commutative-Ring R S f x) + preserves-powers-hom-Commutative-Ring = + preserves-powers-hom-Ring + ( ring-Commutative-Ring R) + ( ring-Commutative-Ring S) + ( f) +``` diff --git a/src/commutative-algebra/powers-of-elements-large-commutative-rings.lagda.md b/src/commutative-algebra/powers-of-elements-large-commutative-rings.lagda.md new file mode 100644 index 00000000000..c4dfe1869c0 --- /dev/null +++ b/src/commutative-algebra/powers-of-elements-large-commutative-rings.lagda.md @@ -0,0 +1,190 @@ +# Powers of elements in large commutative rings + +```agda +module commutative-algebra.powers-of-elements-large-commutative-rings where +``` + +
Imports + +```agda +open import commutative-algebra.large-commutative-rings + +open import elementary-number-theory.addition-natural-numbers +open import elementary-number-theory.multiplication-natural-numbers +open import elementary-number-theory.natural-numbers + +open import foundation.identity-types +open import foundation.universe-levels + +open import group-theory.large-monoids +open import group-theory.powers-of-elements-large-commutative-monoids +open import group-theory.powers-of-elements-large-monoids + +open import ring-theory.large-rings +open import ring-theory.powers-of-elements-large-rings +``` + +
+ +## Idea + +The +{{#concept "power operation" Disambiguation="raising an element of a large commutative ring to a natural number power" Agda=power-Large-Commutative-Ring}} +on a [large commutative ring](ring-theory.large-rings.md) is the map `n x ↦ xⁿ`, +which is defined by [iteratively](foundation.iterating-functions.md) multiplying +`x` with itself `n` times. + +## Definition + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) + where + + power-Large-Commutative-Ring : + {l : Level} → + ℕ → type-Large-Commutative-Ring R l → type-Large-Commutative-Ring R l + power-Large-Commutative-Ring = + power-Large-Ring (large-ring-Large-Commutative-Ring R) +``` + +## Properties + +### The power operation preserves similarity + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) + where + + abstract + preserves-sim-power-Large-Commutative-Ring : + {l1 l2 : Level} (n : ℕ) → + (x : type-Large-Commutative-Ring R l1) → + (y : type-Large-Commutative-Ring R l2) → + sim-Large-Commutative-Ring R x y → + sim-Large-Commutative-Ring R + ( power-Large-Commutative-Ring R n x) + ( power-Large-Commutative-Ring R n y) + preserves-sim-power-Large-Commutative-Ring = + preserves-sim-power-Large-Ring + ( large-ring-Large-Commutative-Ring R) +``` + +### `1ⁿ = 1` + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) + where + + abstract + raise-power-one-Large-Commutative-Ring : + (l : Level) (n : ℕ) → + power-Large-Commutative-Ring R n (raise-one-Large-Commutative-Ring R l) = + raise-one-Large-Commutative-Ring R l + raise-power-one-Large-Commutative-Ring = + raise-power-one-Large-Ring (large-ring-Large-Commutative-Ring R) + + power-one-Large-Commutative-Ring : + (n : ℕ) → + power-Large-Commutative-Ring R n (one-Large-Commutative-Ring R) = + one-Large-Commutative-Ring R + power-one-Large-Commutative-Ring = + power-one-Large-Ring (large-ring-Large-Commutative-Ring R) +``` + +### `xⁿ⁺¹ = xⁿx` + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) + where + + abstract + power-succ-Large-Commutative-Ring : + {l : Level} (n : ℕ) (x : type-Large-Commutative-Ring R l) → + power-Large-Commutative-Ring R (succ-ℕ n) x = + mul-Large-Commutative-Ring R (power-Large-Commutative-Ring R n x) x + power-succ-Large-Commutative-Ring = + power-succ-Large-Ring (large-ring-Large-Commutative-Ring R) +``` + +### `xⁿ⁺¹ = xxⁿ` + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) + where + + abstract + power-succ-Large-Commutative-Ring' : + {l : Level} (n : ℕ) (x : type-Large-Commutative-Ring R l) → + power-Large-Commutative-Ring R (succ-ℕ n) x = + mul-Large-Commutative-Ring R x (power-Large-Commutative-Ring R n x) + power-succ-Large-Commutative-Ring' = + power-succ-Large-Ring' (large-ring-Large-Commutative-Ring R) +``` + +### Powers by sums of natural numbers are products of powers + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) + where + + abstract + distributive-power-add-Large-Commutative-Ring : + {l : Level} (m n : ℕ) {x : type-Large-Commutative-Ring R l} → + power-Large-Commutative-Ring R (m +ℕ n) x = + mul-Large-Commutative-Ring R + ( power-Large-Commutative-Ring R m x) + ( power-Large-Commutative-Ring R n x) + distributive-power-add-Large-Commutative-Ring = + distributive-power-add-Large-Ring (large-ring-Large-Commutative-Ring R) +``` + +### Powers by products of natural numbers are iterated powers + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) + where + + abstract + power-mul-Large-Commutative-Ring : + {l : Level} (m n : ℕ) {x : type-Large-Commutative-Ring R l} → + power-Large-Commutative-Ring R (m *ℕ n) x = + power-Large-Commutative-Ring R n (power-Large-Commutative-Ring R m x) + power-mul-Large-Commutative-Ring = + power-mul-Large-Ring (large-ring-Large-Commutative-Ring R) +``` + +### `(xy)ⁿ = xⁿyⁿ` + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (R : Large-Commutative-Ring α β) + where + + abstract + distributive-power-mul-Large-Commutative-Ring : + {l1 l2 : Level} (n : ℕ) → + {x : type-Large-Commutative-Ring R l1} → + {y : type-Large-Commutative-Ring R l2} → + power-Large-Commutative-Ring R n (mul-Large-Commutative-Ring R x y) = + mul-Large-Commutative-Ring R + ( power-Large-Commutative-Ring R n x) + ( power-Large-Commutative-Ring R n y) + distributive-power-mul-Large-Commutative-Ring = + distributive-power-mul-Large-Commutative-Monoid + ( multiplicative-large-commutative-monoid-Large-Commutative-Ring R) +``` diff --git a/src/group-theory/large-abelian-groups.lagda.md b/src/group-theory/large-abelian-groups.lagda.md index 24301001f9c..dfc6a5a6579 100644 --- a/src/group-theory/large-abelian-groups.lagda.md +++ b/src/group-theory/large-abelian-groups.lagda.md @@ -432,3 +432,18 @@ module _ emb-right-add-Large-Ab = emb-right-mul-Large-Group (large-group-Large-Ab G) l2 x ``` + +### The raise operation is an abelian group homomorphism + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (G : Large-Ab α β) + (l1 l2 : Level) + where + + hom-raise-Large-Ab : + hom-Ab + ( ab-Large-Ab G l1) + ( ab-Large-Ab G (l1 ⊔ l2)) + hom-raise-Large-Ab = hom-raise-Large-Group (large-group-Large-Ab G) l1 l2 +``` diff --git a/src/group-theory/powers-of-elements-monoids.lagda.md b/src/group-theory/powers-of-elements-monoids.lagda.md index 98992a85c57..aefcf398840 100644 --- a/src/group-theory/powers-of-elements-monoids.lagda.md +++ b/src/group-theory/powers-of-elements-monoids.lagda.md @@ -326,13 +326,14 @@ module _ {l1 l2 : Level} (M : Monoid l1) (N : Monoid l2) (f : hom-Monoid M N) where - preserves-powers-hom-Monoid : - (n : ℕ) (x : type-Monoid M) → - map-hom-Monoid M N f (power-Monoid M n x) = - power-Monoid N n (map-hom-Monoid M N f x) - preserves-powers-hom-Monoid zero-ℕ x = preserves-unit-hom-Monoid M N f - preserves-powers-hom-Monoid (succ-ℕ zero-ℕ) x = refl - preserves-powers-hom-Monoid (succ-ℕ (succ-ℕ n)) x = - ( preserves-mul-hom-Monoid M N f) ∙ - ( ap (mul-Monoid' N _) (preserves-powers-hom-Monoid (succ-ℕ n) x)) + abstract + preserves-powers-hom-Monoid : + (n : ℕ) (x : type-Monoid M) → + map-hom-Monoid M N f (power-Monoid M n x) = + power-Monoid N n (map-hom-Monoid M N f x) + preserves-powers-hom-Monoid zero-ℕ x = preserves-unit-hom-Monoid M N f + preserves-powers-hom-Monoid (succ-ℕ zero-ℕ) x = refl + preserves-powers-hom-Monoid (succ-ℕ (succ-ℕ n)) x = + ( preserves-mul-hom-Monoid M N f) ∙ + ( ap (mul-Monoid' N _) (preserves-powers-hom-Monoid (succ-ℕ n) x)) ``` diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index dec3db12f13..436312c0d49 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -61,6 +61,7 @@ open import real-numbers.nonnegative-real-numbers public open import real-numbers.nonzero-real-numbers public open import real-numbers.positive-and-negative-real-numbers public open import real-numbers.positive-real-numbers public +open import real-numbers.powers-real-numbers public open import real-numbers.raising-universe-levels-real-numbers public open import real-numbers.rational-lower-dedekind-real-numbers public open import real-numbers.rational-real-numbers public diff --git a/src/real-numbers/large-additive-group-of-real-numbers.lagda.md b/src/real-numbers/large-additive-group-of-real-numbers.lagda.md index 949d0372206..77808a473ab 100644 --- a/src/real-numbers/large-additive-group-of-real-numbers.lagda.md +++ b/src/real-numbers/large-additive-group-of-real-numbers.lagda.md @@ -9,9 +9,16 @@ module real-numbers.large-additive-group-of-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 foundation.action-on-identifications-functions +open import foundation.dependent-pair-types +open import foundation.identity-types open import foundation.universe-levels open import group-theory.abelian-groups +open import group-theory.homomorphisms-abelian-groups open import group-theory.large-abelian-groups open import group-theory.large-commutative-monoids open import group-theory.large-groups @@ -86,3 +93,17 @@ large-ab-add-ℝ = ab-add-ℝ : (l : Level) → Ab (lsuc l) ab-add-ℝ = ab-Large-Ab large-ab-add-ℝ ``` + +### The canonical embedding of rational numbers in the real numbers is an abelian group homomorphism + +```agda +hom-ab-add-real-ℚ : hom-Ab abelian-group-add-ℚ (ab-add-ℝ lzero) +hom-ab-add-real-ℚ = (real-ℚ , inv (add-real-ℚ _ _)) +``` + +### Raising the universe levels of real numbers is an abelian group homomorphism + +```agda +hom-ab-add-raise-ℝ : (l1 l2 : Level) → hom-Ab (ab-add-ℝ l1) (ab-add-ℝ (l1 ⊔ l2)) +hom-ab-add-raise-ℝ = hom-raise-Large-Ab large-ab-add-ℝ +``` diff --git a/src/real-numbers/large-ring-of-real-numbers.lagda.md b/src/real-numbers/large-ring-of-real-numbers.lagda.md index 5e171467b3b..5786d7c56cb 100644 --- a/src/real-numbers/large-ring-of-real-numbers.lagda.md +++ b/src/real-numbers/large-ring-of-real-numbers.lagda.md @@ -10,12 +10,22 @@ module real-numbers.large-ring-of-real-numbers where ```agda open import commutative-algebra.commutative-rings +open import commutative-algebra.homomorphisms-commutative-rings open import commutative-algebra.large-commutative-rings +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.ring-of-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 group-theory.large-monoids + open import real-numbers.large-additive-group-of-real-numbers open import real-numbers.multiplication-real-numbers +open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import ring-theory.large-rings @@ -62,3 +72,21 @@ commutative-ring-ℝ : (l : Level) → Commutative-Ring (lsuc l) commutative-ring-ℝ = commutative-ring-Large-Commutative-Ring large-commutative-ring-ℝ ``` + +### The canonical embedding of rational numbers in the real numbers is a ring homomorphism + +```agda +hom-ring-real-ℚ : + hom-Commutative-Ring commutative-ring-ℚ (commutative-ring-ℝ lzero) +hom-ring-real-ℚ = + ( hom-ab-add-real-ℚ , inv (mul-real-ℚ _ _) , eq-raise-ℝ _) +``` + +### Raising the universe level of real numbers is a ring homomorphism + +```agda +hom-ring-raise-ℝ : + (l1 l2 : Level) → + hom-Commutative-Ring (commutative-ring-ℝ l1) (commutative-ring-ℝ (l1 ⊔ l2)) +hom-ring-raise-ℝ = hom-raise-Large-Commutative-Ring large-commutative-ring-ℝ +``` diff --git a/src/real-numbers/powers-real-numbers.lagda.md b/src/real-numbers/powers-real-numbers.lagda.md new file mode 100644 index 00000000000..043a580d269 --- /dev/null +++ b/src/real-numbers/powers-real-numbers.lagda.md @@ -0,0 +1,121 @@ +# Powers of real numbers + +```agda +module real-numbers.powers-real-numbers where +``` + +
Imports + +```agda +open import commutative-algebra.powers-of-elements-commutative-rings +open import commutative-algebra.powers-of-elements-large-commutative-rings + +open import elementary-number-theory.addition-natural-numbers +open import elementary-number-theory.multiplication-natural-numbers +open import elementary-number-theory.natural-numbers +open import elementary-number-theory.powers-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.ring-of-rational-numbers + +open import foundation.identity-types +open import foundation.universe-levels + +open import real-numbers.dedekind-real-numbers +open import real-numbers.large-ring-of-real-numbers +open import real-numbers.multiplication-real-numbers +open import real-numbers.rational-real-numbers +``` + +
+ +## Idea + +The +{{#concept "power operation" Disambiguation="raising a real number to a natural number power" Agda=power-ℝ}} +on the [real numbers](real-numbers.dedekind-real-numbers.md) `n x ↦ xⁿ`, is +defined by [iteratively](foundation.iterating-functions.md) +[multiplying](real-numbers.multiplication-real-numbers.md) `x` with itself `n` +times. + +## Definition + +```agda +power-ℝ : {l : Level} → ℕ → ℝ l → ℝ l +power-ℝ = power-Large-Commutative-Ring large-commutative-ring-ℝ +``` + +## Properties + +### The canonical embedding of rational numbers preserves powers + +```agda +abstract + power-real-ℚ : (n : ℕ) (q : ℚ) → power-ℝ n (real-ℚ q) = real-ℚ (power-ℚ n q) + power-real-ℚ n q = + inv + ( preserves-powers-hom-Commutative-Ring + ( commutative-ring-ℚ) + ( commutative-ring-ℝ lzero) + ( hom-ring-real-ℚ) + ( n) + ( q)) +``` + +### `1ⁿ = 1` + +```agda +abstract + power-one-ℝ : (n : ℕ) → power-ℝ n one-ℝ = one-ℝ + power-one-ℝ = power-one-Large-Commutative-Ring large-commutative-ring-ℝ +``` + +### `xⁿ⁺¹ = xⁿx` + +```agda +abstract + power-succ-ℝ : + {l : Level} (n : ℕ) (x : ℝ l) → power-ℝ (succ-ℕ n) x = power-ℝ n x *ℝ x + power-succ-ℝ = power-succ-Large-Commutative-Ring large-commutative-ring-ℝ +``` + +### `xⁿ⁺¹ = xxⁿ` + +```agda +abstract + power-succ-ℝ' : + {l : Level} (n : ℕ) (x : ℝ l) → power-ℝ (succ-ℕ n) x = x *ℝ power-ℝ n x + power-succ-ℝ' = power-succ-Large-Commutative-Ring' large-commutative-ring-ℝ +``` + +### Powers by sums of natural numbers are products of powers + +```agda +abstract + distributive-power-add-ℝ : + {l : Level} (m n : ℕ) {x : ℝ l} → + power-ℝ (m +ℕ n) x = power-ℝ m x *ℝ power-ℝ n x + distributive-power-add-ℝ = + distributive-power-add-Large-Commutative-Ring large-commutative-ring-ℝ +``` + +### Powers by products of natural numbers are iterated powers + +```agda +abstract + power-mul-ℝ : + {l : Level} (m n : ℕ) {x : ℝ l} → + power-ℝ (m *ℕ n) x = power-ℝ n (power-ℝ m x) + power-mul-ℝ = + power-mul-Large-Commutative-Ring large-commutative-ring-ℝ +``` + +### `(xy)ⁿ = xⁿyⁿ` + +```agda +abstract + distributive-power-mul-ℝ : + {l1 l2 : Level} (n : ℕ) {x : ℝ l1} {y : ℝ l2} → + power-ℝ n (x *ℝ y) = power-ℝ n x *ℝ power-ℝ n y + distributive-power-mul-ℝ = + distributive-power-mul-Large-Commutative-Ring large-commutative-ring-ℝ +``` diff --git a/src/ring-theory.lagda.md b/src/ring-theory.lagda.md index 945dff35bf9..4c47fab0905 100644 --- a/src/ring-theory.lagda.md +++ b/src/ring-theory.lagda.md @@ -73,6 +73,7 @@ open import ring-theory.poset-of-cyclic-rings public open import ring-theory.poset-of-ideals-rings public open import ring-theory.poset-of-left-ideals-rings public open import ring-theory.poset-of-right-ideals-rings public +open import ring-theory.powers-of-elements-large-rings public open import ring-theory.powers-of-elements-rings public open import ring-theory.powers-of-elements-semirings public open import ring-theory.precategory-of-rings public diff --git a/src/ring-theory/large-rings.lagda.md b/src/ring-theory/large-rings.lagda.md index 488461591db..4189d3517de 100644 --- a/src/ring-theory/large-rings.lagda.md +++ b/src/ring-theory/large-rings.lagda.md @@ -19,6 +19,7 @@ open import group-theory.large-monoids open import group-theory.large-semigroups open import group-theory.monoids +open import ring-theory.homomorphisms-rings open import ring-theory.rings ``` @@ -289,3 +290,25 @@ module _ left-distributive-mul-add-Large-Ring R , right-distributive-mul-add-Large-Ring R) ``` + +### The raise operation is a ring homomorphism + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (R : Large-Ring α β) + (l1 l2 : Level) + where + + hom-raise-Large-Ring : + hom-Ring + ( ring-Large-Ring R l1) + ( ring-Large-Ring R (l1 ⊔ l2)) + hom-raise-Large-Ring = + ( hom-raise-Large-Ab (large-ab-Large-Ring R) l1 l2 , + inv + ( raise-mul-Large-Monoid + ( multiplicative-large-monoid-Large-Ring R) + ( _) + ( _)) , + raise-raise-Large-Ring R _) +``` diff --git a/src/ring-theory/powers-of-elements-large-rings.lagda.md b/src/ring-theory/powers-of-elements-large-rings.lagda.md new file mode 100644 index 00000000000..7552fe1a2a9 --- /dev/null +++ b/src/ring-theory/powers-of-elements-large-rings.lagda.md @@ -0,0 +1,154 @@ +# Powers of elements in large rings + +```agda +module ring-theory.powers-of-elements-large-rings where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-natural-numbers +open import elementary-number-theory.multiplication-natural-numbers +open import elementary-number-theory.natural-numbers + +open import foundation.identity-types +open import foundation.universe-levels + +open import group-theory.large-monoids +open import group-theory.powers-of-elements-large-monoids + +open import ring-theory.large-rings +``` + +
+ +## Idea + +The +{{#concept "power operation" Disambiguation="raising an element of a large ring to a natural number power" Agda=power-Large-Ring}} +on a [large ring](ring-theory.large-rings.md) is the map `n x ↦ xⁿ`, which is +defined by [iteratively](foundation.iterating-functions.md) multiplying `x` with +itself `n` times. + +## Definition + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (R : Large-Ring α β) + where + + power-Large-Ring : {l : Level} → ℕ → type-Large-Ring R l → type-Large-Ring R l + power-Large-Ring = + power-Large-Monoid (multiplicative-large-monoid-Large-Ring R) +``` + +## Properties + +### The power operation preserves similarity + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (R : Large-Ring α β) + where + + abstract + preserves-sim-power-Large-Ring : + {l1 l2 : Level} (n : ℕ) → + (x : type-Large-Ring R l1) (y : type-Large-Ring R l2) → + sim-Large-Ring R x y → + sim-Large-Ring R (power-Large-Ring R n x) (power-Large-Ring R n y) + preserves-sim-power-Large-Ring = + preserves-sim-power-Large-Monoid + ( multiplicative-large-monoid-Large-Ring R) +``` + +### `1ⁿ = 1` + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (R : Large-Ring α β) + where + + abstract + raise-power-one-Large-Ring : + (l : Level) (n : ℕ) → + power-Large-Ring R n (raise-one-Large-Ring R l) = + raise-one-Large-Ring R l + raise-power-one-Large-Ring = + raise-power-unit-Large-Monoid + ( multiplicative-large-monoid-Large-Ring R) + + power-one-Large-Ring : + (n : ℕ) → power-Large-Ring R n (one-Large-Ring R) = one-Large-Ring R + power-one-Large-Ring = + power-unit-Large-Monoid + ( multiplicative-large-monoid-Large-Ring R) +``` + +### `xⁿ⁺¹ = xⁿx` + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (R : Large-Ring α β) + where + + abstract + power-succ-Large-Ring : + {l : Level} (n : ℕ) (x : type-Large-Ring R l) → + power-Large-Ring R (succ-ℕ n) x = + mul-Large-Ring R (power-Large-Ring R n x) x + power-succ-Large-Ring = + power-succ-Large-Monoid + ( multiplicative-large-monoid-Large-Ring R) +``` + +### `xⁿ⁺¹ = xxⁿ` + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (R : Large-Ring α β) + where + + abstract + power-succ-Large-Ring' : + {l : Level} (n : ℕ) (x : type-Large-Ring R l) → + power-Large-Ring R (succ-ℕ n) x = + mul-Large-Ring R x (power-Large-Ring R n x) + power-succ-Large-Ring' = + power-succ-Large-Monoid' + ( multiplicative-large-monoid-Large-Ring R) +``` + +### Powers by sums of natural numbers are products of powers + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (R : Large-Ring α β) + where + + abstract + distributive-power-add-Large-Ring : + {l : Level} (m n : ℕ) {x : type-Large-Ring R l} → + power-Large-Ring R (m +ℕ n) x = + mul-Large-Ring R (power-Large-Ring R m x) (power-Large-Ring R n x) + distributive-power-add-Large-Ring = + distributive-power-add-Large-Monoid + ( multiplicative-large-monoid-Large-Ring R) +``` + +### Powers by products of natural numbers are iterated powers + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} (R : Large-Ring α β) + where + + abstract + power-mul-Large-Ring : + {l : Level} (m n : ℕ) {x : type-Large-Ring R l} → + power-Large-Ring R (m *ℕ n) x = + power-Large-Ring R n (power-Large-Ring R m x) + power-mul-Large-Ring = + power-mul-Large-Monoid + ( multiplicative-large-monoid-Large-Ring R) +``` diff --git a/src/ring-theory/powers-of-elements-rings.lagda.md b/src/ring-theory/powers-of-elements-rings.lagda.md index 3143f9edd75..4e431cf8260 100644 --- a/src/ring-theory/powers-of-elements-rings.lagda.md +++ b/src/ring-theory/powers-of-elements-rings.lagda.md @@ -18,7 +18,10 @@ open import foundation.function-types open import foundation.identity-types open import foundation.universe-levels +open import group-theory.powers-of-elements-monoids + open import ring-theory.central-elements-rings +open import ring-theory.homomorphisms-rings open import ring-theory.powers-of-elements-semirings open import ring-theory.rings ``` @@ -189,3 +192,22 @@ module _ ( ap (neg-Ring R) (inv (power-succ-Ring R n x)))))) ∙ ( neg-neg-Ring R (power-Ring R (succ-ℕ n) x)))))) ``` + +### Ring homomorphisms preserve powers of elements + +```agda +module _ + {l1 l2 : Level} (R : Ring l1) (S : Ring l2) (f : hom-Ring R S) + where + + abstract + preserves-powers-hom-Ring : + (n : ℕ) (x : type-Ring R) → + map-hom-Ring R S f (power-Ring R n x) = + power-Ring S n (map-hom-Ring R S f x) + preserves-powers-hom-Ring = + preserves-powers-hom-Monoid + ( multiplicative-monoid-Ring R) + ( multiplicative-monoid-Ring S) + ( hom-multiplicative-monoid-hom-Ring R S f) +``` From d2bfcb7560c704f8eb036a1fdf5bca86e51f9077 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Nov 2025 18:40:52 -0800 Subject: [PATCH 029/134] Powers of real numbers --- .../least-upper-bounds-large-posets.lagda.md | 27 +++ src/real-numbers.lagda.md | 1 + .../absolute-value-real-numbers.lagda.md | 23 ++ .../binary-maximum-real-numbers.lagda.md | 23 ++ ...ositive-and-negative-real-numbers.lagda.md | 53 +++++ .../positive-real-numbers.lagda.md | 20 ++ src/real-numbers/powers-real-numbers.lagda.md | 204 ++++++++++++++++++ .../squares-real-numbers.lagda.md | 30 +++ 8 files changed, 381 insertions(+) create mode 100644 src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md diff --git a/src/order-theory/least-upper-bounds-large-posets.lagda.md b/src/order-theory/least-upper-bounds-large-posets.lagda.md index be741937000..dfa918f385f 100644 --- a/src/order-theory/least-upper-bounds-large-posets.lagda.md +++ b/src/order-theory/least-upper-bounds-large-posets.lagda.md @@ -346,3 +346,30 @@ module _ is-least-upper-bound-family-of-elements-poset-Large-Poset y is-lub-y z = is-lub-y z ``` + +### If `x ≤ y`, `y` is a least upper bound of `x` and `y` + +```agda +module _ + {α : Level → Level} {β : Level → Level → Level} + (P : Large-Poset α β) + where + + abstract + left-leq-right-least-upper-bound-Large-Poset : + {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → + leq-Large-Poset P x y → + is-least-binary-upper-bound-Large-Poset P x y y + pr1 (left-leq-right-least-upper-bound-Large-Poset x y x≤y z) (x≤z , y≤z) = + y≤z + pr2 (left-leq-right-least-upper-bound-Large-Poset x y x≤y z) y≤z = + ( transitive-leq-Large-Poset P x y z y≤z x≤y , y≤z) + + right-leq-left-least-upper-bound-Large-Poset : + {l1 l2 : Level} (x : type-Large-Poset P l1) (y : type-Large-Poset P l2) → + leq-Large-Poset P y x → + is-least-binary-upper-bound-Large-Poset P x y x + right-leq-left-least-upper-bound-Large-Poset x y y≤x = + is-binary-least-upper-bound-swap-Large-Poset P y x x + ( left-leq-right-least-upper-bound-Large-Poset y x y≤x) +``` diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 436312c0d49..3e2872c1e15 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -49,6 +49,7 @@ open import real-numbers.minimum-lower-dedekind-real-numbers public open import real-numbers.minimum-upper-dedekind-real-numbers public open import real-numbers.multiplication-negative-real-numbers public open import real-numbers.multiplication-nonnegative-real-numbers public +open import real-numbers.multiplication-positive-and-negative-real-numbers public open import real-numbers.multiplication-positive-real-numbers public open import real-numbers.multiplication-real-numbers public open import real-numbers.multiplicative-inverses-negative-real-numbers public diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index 8695d96e159..b2b49882e2c 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -34,6 +34,8 @@ open import real-numbers.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.nonnegative-real-numbers +open import real-numbers.positive-and-negative-real-numbers +open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.saturation-inequality-real-numbers open import real-numbers.similarity-real-numbers @@ -113,6 +115,27 @@ opaque ap (max-ℝ (neg-ℝ x)) (neg-neg-ℝ x) ∙ commutative-max-ℝ _ _ ``` +### The absolute value of a nonnegative real number is itself + +```agda +abstract opaque + unfolding abs-ℝ + + abs-real-ℝ⁰⁺ : {l : Level} (x : ℝ⁰⁺ l) → abs-ℝ (real-ℝ⁰⁺ x) = real-ℝ⁰⁺ x + abs-real-ℝ⁰⁺ (x , 0≤x) = + eq-sim-ℝ + ( right-leq-left-max-ℝ + ( transitive-leq-ℝ + ( neg-ℝ x) + ( zero-ℝ) + ( x) + ( 0≤x) + ( tr (leq-ℝ (neg-ℝ x)) neg-zero-ℝ (neg-leq-ℝ _ _ 0≤x)))) + + abs-real-ℝ⁺ : {l : Level} (x : ℝ⁺ l) → abs-ℝ (real-ℝ⁺ x) = real-ℝ⁺ x + abs-real-ℝ⁺ x = abs-real-ℝ⁰⁺ (nonnegative-ℝ⁺ x) +``` + ### `x` is between `-|x|` and `|x|` ```agda diff --git a/src/real-numbers/binary-maximum-real-numbers.lagda.md b/src/real-numbers/binary-maximum-real-numbers.lagda.md index 7d521f85c1b..4a127ff1164 100644 --- a/src/real-numbers/binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/binary-maximum-real-numbers.lagda.md @@ -305,6 +305,29 @@ abstract preserves-sim-right-max-ℝ a = preserves-sim-max-ℝ a a (refl-sim-ℝ a) ``` +### If `x ≤ y`, the maximum of `x` and `y` is similar to `y` + +```agda +abstract + left-leq-right-max-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → leq-ℝ x y → + sim-ℝ (max-ℝ x y) y + left-leq-right-max-ℝ {x = x} {y = y} x≤y = + sim-sim-leq-ℝ + ( sim-is-least-binary-upper-bound-Large-Poset ℝ-Large-Poset x y + ( is-least-binary-upper-bound-max-ℝ x y) + ( left-leq-right-least-upper-bound-Large-Poset ℝ-Large-Poset x y x≤y)) + + right-leq-left-max-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → leq-ℝ y x → + sim-ℝ (max-ℝ x y) x + right-leq-left-max-ℝ {x = x} {y = y} y≤x = + sim-sim-leq-ℝ + ( sim-is-least-binary-upper-bound-Large-Poset ℝ-Large-Poset x y + ( is-least-binary-upper-bound-max-ℝ x y) + ( right-leq-left-least-upper-bound-Large-Poset ℝ-Large-Poset x y y≤x)) +``` + ### The binary maximum preserves lower neighborhoods ```agda diff --git a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md new file mode 100644 index 00000000000..7ecc0768e38 --- /dev/null +++ b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md @@ -0,0 +1,53 @@ +# Multiplication by positive, negative, and nonnegative real numbers + +```agda +module real-numbers.multiplication-positive-and-negative-real-numbers where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import real-numbers.dedekind-real-numbers +open import real-numbers.multiplication-positive-real-numbers +open import real-numbers.multiplication-real-numbers +open import real-numbers.negative-real-numbers +open import real-numbers.positive-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.strict-inequality-real-numbers +``` + +
+ +## Idea + +When we have information about the sign of the factors of a +[product](real-numbers.multiplication-real-numbers.md) of +[real numbers](real-numbers.dedekind-real-numbers.md), we can deduce the sign of +their product too. + +## Lemmas + +### The product of a positive and a negative rational number is negative + +```agda +abstract + is-negative-mul-positive-negative-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → is-positive-ℝ x → is-negative-ℝ y → + is-negative-ℝ (x *ℝ y) + is-negative-mul-positive-negative-ℝ {x = x} {y = y} is-pos-x is-neg-y = + preserves-le-right-sim-ℝ + ( x *ℝ y) + ( x *ℝ zero-ℝ) + ( zero-ℝ) + ( right-zero-law-mul-ℝ x) + ( preserves-le-left-mul-ℝ⁺ (x , is-pos-x) y zero-ℝ is-neg-y) + +mul-positive-negative-ℝ : + {l1 l2 : Level} → ℝ⁺ l1 → ℝ⁻ l2 → ℝ⁻ (l1 ⊔ l2) +mul-positive-negative-ℝ (x , is-pos-x) (y , is-neg-y) = + ( x *ℝ y , is-negative-mul-positive-negative-ℝ is-pos-x is-neg-y) +``` diff --git a/src/real-numbers/positive-real-numbers.lagda.md b/src/real-numbers/positive-real-numbers.lagda.md index 1891f071d65..004dbd53454 100644 --- a/src/real-numbers/positive-real-numbers.lagda.md +++ b/src/real-numbers/positive-real-numbers.lagda.md @@ -37,6 +37,7 @@ 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.negation-real-numbers +open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.strict-inequality-real-numbers @@ -80,6 +81,17 @@ is-positive-real-ℝ⁺ = pr2 ## Properties +### Positivity is preserved by similarity + +```agda +abstract + is-positive-sim-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → + is-positive-ℝ x → sim-ℝ x y → is-positive-ℝ y + is-positive-sim-ℝ {x = x} {y = y} 0 @@ -107,6 +128,17 @@ abstract power-ℝ (m *ℕ n) x = power-ℝ n (power-ℝ m x) power-mul-ℝ = power-mul-Large-Commutative-Ring large-commutative-ring-ℝ + + power-mul-ℝ' : + {l : Level} (m n : ℕ) {x : ℝ l} → + power-ℝ (m *ℕ n) x = power-ℝ m (power-ℝ n x) + power-mul-ℝ' m n {x = x} = + equational-reasoning + power-ℝ (m *ℕ n) x + = power-ℝ (n *ℕ m) x + by ap (λ k → power-ℝ k x) (commutative-mul-ℕ m n) + = power-ℝ m (power-ℝ n x) + by power-mul-ℝ n m ``` ### `(xy)ⁿ = xⁿyⁿ` @@ -119,3 +151,175 @@ abstract distributive-power-mul-ℝ = distributive-power-mul-Large-Commutative-Ring large-commutative-ring-ℝ ``` + +### Even powers of real numbers are nonnegative + +```agda +abstract + is-nonnegative-even-power-ℝ : + {l : Level} (n : ℕ) (x : ℝ l) → is-even-ℕ n → is-nonnegative-ℝ (power-ℝ n x) + is-nonnegative-even-power-ℝ _ x (k , refl) = + inv-tr + ( is-nonnegative-ℝ) + ( power-mul-ℝ k 2) + ( is-nonnegative-square-ℝ (power-ℝ k x)) + +nonnegative-even-power-ℝ : {l : Level} (n : ℕ) (x : ℝ l) → is-even-ℕ n → ℝ⁰⁺ l +nonnegative-even-power-ℝ n x even-n = + ( power-ℝ n x , is-nonnegative-even-power-ℝ n x even-n) +``` + +### Powers of positive real numbers are positive + +```agda +abstract + is-positive-power-ℝ⁺ : + {l : Level} (n : ℕ) (x : ℝ⁺ l) → is-positive-ℝ (power-ℝ n (real-ℝ⁺ x)) + is-positive-power-ℝ⁺ 0 _ = + is-positive-sim-ℝ (is-positive-real-ℝ⁺ one-ℝ⁺) (sim-raise-ℝ _ _) + is-positive-power-ℝ⁺ 1 (_ , is-pos-x) = is-pos-x + is-positive-power-ℝ⁺ (succ-ℕ n@(succ-ℕ _)) x⁺@(x , is-pos-x) = + is-positive-mul-ℝ (is-positive-power-ℝ⁺ n x⁺) is-pos-x +``` + +### Even powers of negative real numbers are positive + +```agda +abstract + is-positive-even-power-ℝ⁻ : + {l : Level} (n : ℕ) (x : ℝ⁻ l) → is-even-ℕ n → + is-positive-ℝ (power-ℝ n (real-ℝ⁻ x)) + is-positive-even-power-ℝ⁻ _ x (k , refl) = + inv-tr + ( is-positive-ℝ) + ( power-mul-ℝ' k 2) + ( is-positive-power-ℝ⁺ k (square-ℝ⁻ x)) +``` + +### Odd powers of negative real numbers are negative + +```agda +abstract + is-negative-odd-power-ℝ⁻ : + {l : Level} (n : ℕ) (x : ℝ⁻ l) → is-odd-ℕ n → + is-negative-ℝ (power-ℝ n (real-ℝ⁻ x)) + is-negative-odd-power-ℝ⁻ n x⁻@(x , is-neg-x) odd-n = + let (k , k2+1=n) = has-odd-expansion-is-odd n odd-n + in + tr + ( is-negative-ℝ) + ( equational-reasoning + power-ℝ (k *ℕ 2) x *ℝ x + = power-ℝ (succ-ℕ (k *ℕ 2)) x + by inv (power-succ-ℝ _ _) + = power-ℝ n x + by ap (λ m → power-ℝ m x) k2+1=n) + ( is-negative-mul-positive-negative-ℝ + ( is-positive-even-power-ℝ⁻ _ x⁻ (k , refl)) + ( is-neg-x)) +``` + +### For even `n`, `(-x)ⁿ = xⁿ` + +```agda +abstract + even-power-neg-ℝ : + {l : Level} (n : ℕ) (x : ℝ l) → is-even-ℕ n → + power-ℝ n (neg-ℝ x) = power-ℝ n x + even-power-neg-ℝ _ x (k , refl) = + equational-reasoning + power-ℝ (k *ℕ 2) (neg-ℝ x) + = power-ℝ k (square-ℝ (neg-ℝ x)) + by power-mul-ℝ' k 2 + = power-ℝ k (square-ℝ x) + by ap (power-ℝ k) (square-neg-ℝ x) + = power-ℝ (k *ℕ 2) x + by inv (power-mul-ℝ' k 2) +``` + +### For odd `n`, `(-x)ⁿ = -(xⁿ)` + +```agda +abstract + odd-power-neg-ℝ : + {l : Level} (n : ℕ) (x : ℝ l) → is-odd-ℕ n → + power-ℝ n (neg-ℝ x) = neg-ℝ (power-ℝ n x) + odd-power-neg-ℝ n x odd-n = + let (k , k2+1=n) = has-odd-expansion-is-odd n odd-n + in + equational-reasoning + power-ℝ n (neg-ℝ x) + = power-ℝ (succ-ℕ (k *ℕ 2)) (neg-ℝ x) + by ap (λ m → power-ℝ m (neg-ℝ x)) (inv k2+1=n) + = power-ℝ (k *ℕ 2) (neg-ℝ x) *ℝ neg-ℝ x + by power-succ-ℝ _ _ + = power-ℝ (k *ℕ 2) x *ℝ neg-ℝ x + by ap-mul-ℝ (even-power-neg-ℝ _ x (k , refl)) refl + = neg-ℝ (power-ℝ (k *ℕ 2) x *ℝ x) + by right-negative-law-mul-ℝ _ _ + = neg-ℝ (power-ℝ (succ-ℕ (k *ℕ 2)) x) + by ap neg-ℝ (inv (power-succ-ℝ _ _)) + = neg-ℝ (power-ℝ n x) + by ap neg-ℝ (ap (λ m → power-ℝ m x) k2+1=n) +``` + +### `|x|ⁿ=|xⁿ|` + +```agda +abstract + power-abs-ℝ : + {l : Level} (n : ℕ) (x : ℝ l) → power-ℝ n (abs-ℝ x) = abs-ℝ (power-ℝ n x) + power-abs-ℝ 0 x = inv (abs-real-ℝ⁺ (raise-ℝ⁺ _ one-ℝ⁺)) + power-abs-ℝ (succ-ℕ n) x = + equational-reasoning + power-ℝ (succ-ℕ n) (abs-ℝ x) + = power-ℝ n (abs-ℝ x) *ℝ abs-ℝ x + by power-succ-ℝ _ _ + = abs-ℝ (power-ℝ n x) *ℝ abs-ℝ x + by ap-mul-ℝ (power-abs-ℝ n x) refl + = abs-ℝ (power-ℝ n x *ℝ x) + by inv (abs-mul-ℝ _ _) + = abs-ℝ (power-ℝ (succ-ℕ n) x) + by ap abs-ℝ (inv (power-succ-ℝ n x)) +``` + +### If `|p| ≤ |q|`, `|pⁿ| ≤ |qⁿ|` + +```agda +abstract + preserves-leq-abs-power-ℝ : + {l1 l2 : Level} (n : ℕ) (x : ℝ l1) (y : ℝ l2) → leq-ℝ (abs-ℝ x) (abs-ℝ y) → + leq-ℝ (abs-ℝ (power-ℝ n x)) (abs-ℝ (power-ℝ n y)) + preserves-leq-abs-power-ℝ 0 _ _ _ = + preserves-leq-sim-ℝ _ _ _ _ + ( inv-tr + ( sim-ℝ one-ℝ) + ( abs-real-ℝ⁺ (raise-ℝ⁺ _ one-ℝ⁺)) + ( sim-raise-ℝ _ one-ℝ)) + ( inv-tr + ( sim-ℝ one-ℝ) + ( abs-real-ℝ⁺ (raise-ℝ⁺ _ one-ℝ⁺)) + ( sim-raise-ℝ _ one-ℝ)) + ( refl-leq-ℝ one-ℝ) + preserves-leq-abs-power-ℝ (succ-ℕ n) x y |x|≤|y| = + let open inequality-reasoning-Large-Poset ℝ-Large-Poset + in chain-of-inequalities + abs-ℝ (power-ℝ (succ-ℕ n) x) + ≤ abs-ℝ (power-ℝ n x *ℝ x) + by leq-eq-ℝ _ _ (ap abs-ℝ (power-succ-ℝ n x)) + ≤ abs-ℝ (power-ℝ n x) *ℝ abs-ℝ x + by leq-eq-ℝ _ _ (abs-mul-ℝ _ _) + ≤ abs-ℝ (power-ℝ n y) *ℝ abs-ℝ y + by + preserves-leq-mul-ℝ⁰⁺ + ( nonnegative-abs-ℝ (power-ℝ n x)) + ( nonnegative-abs-ℝ (power-ℝ n y)) + ( nonnegative-abs-ℝ x) + ( nonnegative-abs-ℝ y) + ( preserves-leq-abs-power-ℝ n x y |x|≤|y|) + ( |x|≤|y|) + ≤ abs-ℝ (power-ℝ n y *ℝ y) + by leq-eq-ℝ _ _ (inv (abs-mul-ℝ _ _)) + ≤ abs-ℝ (power-ℝ (succ-ℕ n) y) + by leq-eq-ℝ _ _ (ap abs-ℝ (inv (power-succ-ℝ n y))) +``` diff --git a/src/real-numbers/squares-real-numbers.lagda.md b/src/real-numbers/squares-real-numbers.lagda.md index 7c9c42cc2d9..992433dcb1c 100644 --- a/src/real-numbers/squares-real-numbers.lagda.md +++ b/src/real-numbers/squares-real-numbers.lagda.md @@ -1,6 +1,8 @@ # Squares of real numbers ```agda +{-# OPTIONS --lossy-unification #-} + module real-numbers.squares-real-numbers where ``` @@ -42,8 +44,10 @@ open import real-numbers.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-positive-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.negation-real-numbers +open import real-numbers.negative-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.positive-and-negative-real-numbers +open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.strict-inequality-nonnegative-real-numbers open import real-numbers.strict-inequality-real-numbers @@ -181,6 +185,32 @@ abstract distributive-square-mul-ℝ x y = interchange-law-mul-mul-ℝ x y x y ``` +### The square of a positive real number is positive + +```agda +abstract + is-positive-square-ℝ⁺ : + {l : Level} (x : ℝ⁺ l) → is-positive-ℝ (square-ℝ (real-ℝ⁺ x)) + is-positive-square-ℝ⁺ (x , is-pos-x) = + is-positive-mul-ℝ is-pos-x is-pos-x +``` + +### The square of a negative real number is positive + +```agda +abstract + is-positive-square-ℝ⁻ : + {l : Level} (x : ℝ⁻ l) → is-positive-ℝ (square-ℝ (real-ℝ⁻ x)) + is-positive-square-ℝ⁻ x⁻@(x , _) = + tr + ( is-positive-ℝ) + ( square-neg-ℝ x) + ( is-positive-square-ℝ⁺ (neg-ℝ⁻ x⁻)) + +square-ℝ⁻ : {l : Level} → ℝ⁻ l → ℝ⁺ l +square-ℝ⁻ x⁻@(x , _) = (square-ℝ x , is-positive-square-ℝ⁻ x⁻) +``` + ### For nonnegative real numbers, squaring preserves strict inequality ```agda From a0e010cc4b0cfb1be171f43ddd6db2366348f6ce Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Nov 2025 19:26:52 -0800 Subject: [PATCH 030/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../geometric-sequences-commutative-rings.lagda.md | 14 +++++++------- .../geometric-sequences-rational-numbers.lagda.md | 2 +- src/ring-theory/geometric-sequences-rings.lagda.md | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md index ee6b868c9e9..1c27ccb4a0b 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md @@ -37,17 +37,17 @@ open import lists.sequences ## Ideas A -{{#concept "geometric sequence" Disambiguation="in a commutative semiring" Agda=geometric-sequence-Commutative-Ring}} -in a [semiring](ring-theory.semirings.md) is an +{{#concept "geometric sequence" Disambiguation="in a commutative ring" Agda=geometric-sequence-Commutative-Ring}} +in a [commutative ring](ring-theory.commutative-rings.md) is an [geometric sequence](ring-theory.geometric-sequences-semirings.md) in the -semiring multiplicative [semigroup](group-theory.semigroups.md). +ring's multiplicative [semigroup](group-theory.semigroups.md). These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the -semiring. +ring. ## Definitions -### Geometric sequences in semirings +### Geometric sequences in commutative rings ```agda module _ @@ -112,7 +112,7 @@ module _ ( u) ``` -### The standard geometric sequences in a semiring +### The standard geometric sequences in a commutative ring The standard geometric sequence with initial term `a` and common factor `r` is the sequence `u` defined by: @@ -180,7 +180,7 @@ module _ ## Properties -### Any geometric sequence in a semiring is homotopic to a standard geometric sequence +### Any geometric sequence is homotopic to a standard geometric sequence ```agda module _ diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 747150c04bb..01a86c46296 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -117,7 +117,7 @@ module _ by right-zero-law-mul-ℚ a) compute-sum-standard-geometric-fin-sequence-ℚ (succ-ℕ n) = let - 1/1-r = rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) + 1/⟨1-r⟩ = rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) in equational-reasoning sum-standard-geometric-fin-sequence-ℚ a r (succ-ℕ n) diff --git a/src/ring-theory/geometric-sequences-rings.lagda.md b/src/ring-theory/geometric-sequences-rings.lagda.md index 68d24fa3921..700adbe9ee0 100644 --- a/src/ring-theory/geometric-sequences-rings.lagda.md +++ b/src/ring-theory/geometric-sequences-rings.lagda.md @@ -34,12 +34,12 @@ open import ring-theory.rings A {{#concept "geometric sequence" Disambiguation="in a ring" Agda=geometric-sequence-Ring}} -in a [ring](ring-theory.semirings.md) is a +in a [ring](ring-theory.rings.md) is a [geometric sequence](ring-theory.geometric-sequences-semirings.md) in the underlying [semiring](ring-theory.semirings.md). These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the -semiring. +ring. ## Definitions @@ -86,7 +86,7 @@ module _ ( u) ``` -### The standard geometric sequences in a semiring +### The standard geometric sequences in a ring The standard geometric sequence with initial term `a` and common factor `r` is the sequence `u` defined by: @@ -138,7 +138,7 @@ module _ ## Properties -### Any geometric sequence in a semiring is homotopic to a standard geometric sequence +### Any geometric sequence is homotopic to a standard geometric sequence ```agda module _ From dc3c1b3213598c4a6046c1426b1f06bc58233cce Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Nov 2025 19:29:02 -0800 Subject: [PATCH 031/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../geometric-sequences-commutative-semirings.lagda.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md index 821a30d43c3..5e011a77f93 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md @@ -43,16 +43,16 @@ open import univalent-combinatorics.standard-finite-types A {{#concept "geometric sequence" Disambiguation="in a commutative semiring" Agda=geometric-sequence-Commutative-Semiring}} -in a [semiring](ring-theory.semirings.md) is an +in a [commutative semiring](ring-theory.commutative-semirings.md) is an [geometric sequence](ring-theory.geometric-sequences-semirings.md) in the -semiring multiplicative [semigroup](group-theory.semigroups.md). +semiring's multiplicative [semigroup](group-theory.semigroups.md). These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the semiring. ## Definitions -### Geometric sequences in semirings +### Geometric sequences in commutative semirings ```agda module _ @@ -116,7 +116,7 @@ module _ ( u) ``` -### The standard geometric sequences in a semiring +### The standard geometric sequences in a commutative semiring The standard geometric sequence with initial term `a` and common factor `r` is the sequence `u` defined by: @@ -182,7 +182,7 @@ module _ ## Properties -### Any geometric sequence in a semiring is homotopic to a standard geometric sequence +### Any geometric sequence is homotopic to a standard geometric sequence ```agda module _ From b61e819a3da9a0031a0153675176b59e91441bb3 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Nov 2025 19:33:34 -0800 Subject: [PATCH 032/134] Update --- ...c-sequences-commutative-semirings.lagda.md | 39 +++++++++++-------- ...metric-sequences-rational-numbers.lagda.md | 18 ++++----- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md index 5e011a77f93..d1beb4c07ee 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md @@ -309,9 +309,18 @@ module _ ( succ-ℕ n) = add-Commutative-Semiring R - ( term-Fin a r (succ-ℕ n) (zero-Fin n)) + ( standard-geometric-fin-sequence-Commutative-Semiring R + ( a) + ( r) + ( succ-ℕ n) + ( zero-Fin n)) ( sum-fin-sequence-type-Commutative-Semiring R n - ( λ i → term-Fin a r (succ-ℕ n) (inr-Fin n i))) + ( λ i → + standard-geometric-fin-sequence-Commutative-Semiring R + ( a) + ( r) + ( succ-ℕ n) + ( inr-Fin n i))) by snoc-sum-fin-sequence-type-Commutative-Semiring R n ( standard-geometric-fin-sequence-Commutative-Semiring R @@ -321,16 +330,25 @@ module _ ( refl) = add-Commutative-Semiring R - ( term a r 0) + ( seq-standard-geometric-sequence-Commutative-Semiring R a r 0) ( sum-fin-sequence-type-Commutative-Semiring R n - ( λ i → term a r (succ-ℕ (nat-Fin n i)))) + ( λ i → + seq-standard-geometric-sequence-Commutative-Semiring R + ( a) + ( r) + ( succ-ℕ (nat-Fin n i)))) by ap-add-Commutative-Semiring R ( ap ( seq-standard-geometric-sequence-Commutative-Semiring R a r) ( is-zero-nat-zero-Fin {n})) ( htpy-sum-fin-sequence-type-Commutative-Semiring R n - ( λ i → ap (term a r) (nat-inr-Fin n i))) + ( λ i → + ap + ( seq-standard-geometric-sequence-Commutative-Semiring R + ( a) + ( r)) + ( nat-inr-Fin n i))) = add-Commutative-Semiring R ( a) @@ -425,15 +443,4 @@ module _ ( a) ( r) ∘ nat-Fin n))) - where - term : - type-Commutative-Semiring R → type-Commutative-Semiring R → - sequence (type-Commutative-Semiring R) - term a' r' = - seq-standard-geometric-sequence-Commutative-Semiring R a' r' - term-Fin : - type-Commutative-Semiring R → type-Commutative-Semiring R → - (n : ℕ) → fin-sequence (type-Commutative-Semiring R) n - term-Fin a' r' = - standard-geometric-fin-sequence-Commutative-Semiring R a' r' ``` diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 01a86c46296..d59c56016e8 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -132,7 +132,7 @@ module _ ( refl) = ( a *ℚ - ( (one-ℚ -ℚ power-ℚ n r) *ℚ 1/1-r)) +ℚ + ( (one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩)) +ℚ ( a *ℚ power-ℚ n r) by ap-add-ℚ @@ -140,12 +140,12 @@ module _ ( compute-standard-geometric-sequence-ℚ a r n) = a *ℚ - (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/1-r) +ℚ power-ℚ n r) + (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩) +ℚ power-ℚ n r) by inv (left-distributive-mul-add-ℚ a _ _) = a *ℚ - ( (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/1-r) +ℚ - (power-ℚ n r *ℚ (one-ℚ -ℚ r)) *ℚ 1/1-r)) + ( (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩) +ℚ + (power-ℚ n r *ℚ (one-ℚ -ℚ r)) *ℚ 1/⟨1-r⟩)) by ap-mul-ℚ ( refl) @@ -157,16 +157,16 @@ module _ = a *ℚ ( ( (one-ℚ -ℚ power-ℚ n r) +ℚ (power-ℚ n r *ℚ (one-ℚ -ℚ r))) *ℚ - 1/1-r) + 1/⟨1-r⟩) by ap-mul-ℚ ( refl) - ( inv (right-distributive-mul-add-ℚ _ _ 1/1-r)) + ( inv (right-distributive-mul-add-ℚ _ _ 1/⟨1-r⟩)) = a *ℚ ( ( one-ℚ -ℚ power-ℚ n r +ℚ ((power-ℚ n r *ℚ one-ℚ) -ℚ (power-ℚ n r *ℚ r))) *ℚ - 1/1-r) + 1/⟨1-r⟩) by ap-mul-ℚ ( refl) @@ -177,7 +177,7 @@ module _ a *ℚ ( ( one-ℚ -ℚ power-ℚ n r +ℚ ((power-ℚ n r -ℚ power-ℚ (succ-ℕ n) r))) *ℚ - 1/1-r) + 1/⟨1-r⟩) by ap-mul-ℚ ( refl) @@ -188,7 +188,7 @@ module _ ( right-unit-law-mul-ℚ _) ( inv (power-succ-ℚ n r)))) ( refl)) - = a *ℚ ((one-ℚ -ℚ power-ℚ (succ-ℕ n) r) *ℚ 1/1-r) + = a *ℚ ((one-ℚ -ℚ power-ℚ (succ-ℕ n) r) *ℚ 1/⟨1-r⟩) by ap-mul-ℚ ( refl) From 66ebb46ac80c481233d55a6ec5672ab28493e89b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 6 Nov 2025 20:04:22 -0800 Subject: [PATCH 033/134] Fixes --- .../geometric-sequences-commutative-rings.lagda.md | 9 ++++----- .../geometric-sequences-commutative-semirings.lagda.md | 2 +- src/ring-theory/geometric-sequences-rings.lagda.md | 3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md index 1c27ccb4a0b..9343e05ed82 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md @@ -38,12 +38,11 @@ open import lists.sequences A {{#concept "geometric sequence" Disambiguation="in a commutative ring" Agda=geometric-sequence-Commutative-Ring}} -in a [commutative ring](ring-theory.commutative-rings.md) is an -[geometric sequence](ring-theory.geometric-sequences-semirings.md) in the -ring's multiplicative [semigroup](group-theory.semigroups.md). +in a [commutative ring](commutative-algebra.commutative-rings.md) is an +[geometric sequence](ring-theory.geometric-sequences-semirings.md) in the ring's +multiplicative [semigroup](group-theory.semigroups.md). -These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the -ring. +These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the ring. ## Definitions diff --git a/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md index d1beb4c07ee..1e4b7ed9f99 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-semirings.lagda.md @@ -43,7 +43,7 @@ open import univalent-combinatorics.standard-finite-types A {{#concept "geometric sequence" Disambiguation="in a commutative semiring" Agda=geometric-sequence-Commutative-Semiring}} -in a [commutative semiring](ring-theory.commutative-semirings.md) is an +in a [commutative semiring](commutative-algebra.commutative-semirings.md) is an [geometric sequence](ring-theory.geometric-sequences-semirings.md) in the semiring's multiplicative [semigroup](group-theory.semigroups.md). diff --git a/src/ring-theory/geometric-sequences-rings.lagda.md b/src/ring-theory/geometric-sequences-rings.lagda.md index 700adbe9ee0..2d415a0512d 100644 --- a/src/ring-theory/geometric-sequences-rings.lagda.md +++ b/src/ring-theory/geometric-sequences-rings.lagda.md @@ -38,8 +38,7 @@ in a [ring](ring-theory.rings.md) is a [geometric sequence](ring-theory.geometric-sequences-semirings.md) in the underlying [semiring](ring-theory.semirings.md). -These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the -ring. +These are sequences of the form `n ↦ a * rⁿ`, for elements `a`, `r` in the ring. ## Definitions From 6969f98674aa2e427296f978d7c858711b42d924 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 09:59:22 -0800 Subject: [PATCH 034/134] Merge --- .../geometric-sequences-rational-numbers.lagda.md | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index c9d8cf9b621..21695e9d15a 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -36,21 +36,6 @@ open import foundation.function-extensionality open import foundation.identity-types open import foundation.negated-equality open import foundation.transport-along-identifications -open import commutative-algebra.geometric-sequences-commutative-rings -open import commutative-algebra.sums-of-finite-sequences-of-elements-commutative-rings - -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.multiplication-rational-numbers -open import elementary-number-theory.multiplicative-group-of-rational-numbers -open import elementary-number-theory.natural-numbers -open import elementary-number-theory.powers-rational-numbers -open import elementary-number-theory.rational-numbers -open import elementary-number-theory.ring-of-rational-numbers - -open import foundation.identity-types -open import foundation.negated-equality open import foundation.universe-levels open import group-theory.groups From 966d80dbef7f3f8ecd26614e9cfa0953ac136822 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 12:01:55 -0800 Subject: [PATCH 035/134] Progress --- .../distance-real-numbers.lagda.md | 38 +++++- .../nonnegative-real-numbers.lagda.md | 20 ++++ src/real-numbers/powers-real-numbers.lagda.md | 74 ++++++++++++ ...real-sequences-approximating-zero.lagda.md | 111 ++++++++++++++++++ 4 files changed, 242 insertions(+), 1 deletion(-) create mode 100644 src/real-numbers/real-sequences-approximating-zero.lagda.md diff --git a/src/real-numbers/distance-real-numbers.lagda.md b/src/real-numbers/distance-real-numbers.lagda.md index 446e7c220ae..6d6e4c05bd2 100644 --- a/src/real-numbers/distance-real-numbers.lagda.md +++ b/src/real-numbers/distance-real-numbers.lagda.md @@ -303,7 +303,7 @@ abstract by sim-eq-ℝ (ap abs-ℝ (right-unit-law-add-ℝ (x -ℝ y))) ``` -## Distributivity laws +### Distributivity laws ```agda module _ @@ -331,3 +331,39 @@ module _ = dist-ℝ (x *ℝ z) (y *ℝ z) by ap abs-ℝ (right-distributive-mul-diff-ℝ x y z) ``` + +### Zero laws + +```agda +abstract + right-zero-law-dist-ℝ : {l : Level} (x : ℝ l) → dist-ℝ x zero-ℝ = abs-ℝ x + right-zero-law-dist-ℝ x = ap abs-ℝ (right-unit-law-diff-ℝ x) + + left-zero-law-dist-ℝ : {l : Level} (x : ℝ l) → dist-ℝ zero-ℝ x = abs-ℝ x + left-zero-law-dist-ℝ x = commutative-dist-ℝ zero-ℝ x ∙ right-zero-law-dist-ℝ x +``` + +### Distance is preserved by similarity + +```agda +abstract + preserves-dist-left-sim-ℝ : + {l1 l2 l3 : Level} {z : ℝ l1} {x : ℝ l2} {y : ℝ l3} → sim-ℝ x y → + sim-ℝ (dist-ℝ x z) (dist-ℝ y z) + preserves-dist-left-sim-ℝ {z = z} {x = x} {y = y} x~y = + preserves-sim-abs-ℝ (preserves-sim-right-add-ℝ (neg-ℝ z) x y x~y) + + preserves-dist-right-sim-ℝ : + {l1 l2 l3 : Level} {z : ℝ l1} {x : ℝ l2} {y : ℝ l3} → sim-ℝ x y → + sim-ℝ (dist-ℝ z x) (dist-ℝ z y) + preserves-dist-right-sim-ℝ {z = z} x~y = + preserves-sim-abs-ℝ (preserves-sim-diff-ℝ (refl-sim-ℝ z) x~y) + + preserves-dist-sim-ℝ : + {l1 l2 l3 l4 : Level} {x : ℝ l1} {x' : ℝ l2} {y : ℝ l3} {y' : ℝ l4} → + sim-ℝ x x' → sim-ℝ y y' → sim-ℝ (dist-ℝ x y) (dist-ℝ x' y') + preserves-dist-sim-ℝ x~x' y~y' = + transitive-sim-ℝ _ _ _ + ( preserves-dist-right-sim-ℝ y~y') + ( preserves-dist-left-sim-ℝ x~x') +``` diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index bf51c3d32b5..1cf848c3742 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -41,6 +41,7 @@ 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-real-numbers +open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.saturation-inequality-real-numbers open import real-numbers.similarity-real-numbers @@ -577,3 +578,22 @@ abstract is-nonnegative-ℝ y is-nonnegative-leq-ℝ⁰⁺ (x , 0≤x) y x≤y = transitive-leq-ℝ zero-ℝ x y x≤y 0≤x ``` + +### Nonnegativity is preserved by similarity + +```agda +abstract + is-nonnegative-sim-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → is-nonnegative-ℝ x → sim-ℝ x y → + is-nonnegative-ℝ y + is-nonnegative-sim-ℝ {x = x} {y = y} 0≤x x~y = + preserves-leq-right-sim-ℝ zero-ℝ x y x~y 0≤x +``` + +### Raising the universe levels of nonnegative real numbers + +```agda +raise-ℝ⁰⁺ : {l1 : Level} (l : Level) → ℝ⁰⁺ l1 → ℝ⁰⁺ (l ⊔ l1) +raise-ℝ⁰⁺ l (x , is-nonneg-x) = + (raise-ℝ l x , is-nonnegative-sim-ℝ is-nonneg-x (sim-raise-ℝ l x)) +``` diff --git a/src/real-numbers/powers-real-numbers.lagda.md b/src/real-numbers/powers-real-numbers.lagda.md index aee3f51d45b..97d316963b8 100644 --- a/src/real-numbers/powers-real-numbers.lagda.md +++ b/src/real-numbers/powers-real-numbers.lagda.md @@ -26,6 +26,7 @@ open import foundation.disjunction open import foundation.identity-types open import foundation.transport-along-identifications open import foundation.universe-levels +open import foundation.propositional-truncations open import order-theory.large-posets @@ -43,8 +44,10 @@ open import real-numbers.nonnegative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers +open import real-numbers.strict-inequality-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.squares-real-numbers +open import real-numbers.real-sequences-approximating-zero ```
@@ -182,6 +185,24 @@ abstract is-positive-mul-ℝ (is-positive-power-ℝ⁺ n x⁺) is-pos-x ``` +### Powers of nonnegative real numbers are nonnegative + +```agda +abstract + is-nonnegative-power-ℝ⁰⁺ : + {l : Level} (n : ℕ) (x : ℝ⁰⁺ l) → is-nonnegative-ℝ (power-ℝ n (real-ℝ⁰⁺ x)) + is-nonnegative-power-ℝ⁰⁺ {l} 0 _ = + is-nonnegative-real-ℝ⁰⁺ (raise-ℝ⁰⁺ l one-ℝ⁰⁺) + is-nonnegative-power-ℝ⁰⁺ 1 (x , is-nonneg-x) = is-nonneg-x + is-nonnegative-power-ℝ⁰⁺ (succ-ℕ n@(succ-ℕ _)) x⁰⁺@(x , is-nonneg-x) = + is-nonnegative-mul-ℝ + ( is-nonnegative-power-ℝ⁰⁺ n x⁰⁺) + ( is-nonneg-x) + +power-ℝ⁰⁺ : {l : Level} → ℕ → ℝ⁰⁺ l → ℝ⁰⁺ l +power-ℝ⁰⁺ n x⁰⁺@(x , _) = (power-ℝ n x , is-nonnegative-power-ℝ⁰⁺ n x⁰⁺) +``` + ### Even powers of negative real numbers are positive ```agda @@ -323,3 +344,56 @@ abstract ≤ abs-ℝ (power-ℝ (succ-ℕ n) y) by leq-eq-ℝ _ _ (ap abs-ℝ (inv (power-succ-ℝ n y))) ``` + +### If `x` and `y` are nonnegative, and `x ≤ y`, `xⁿ ≤ yⁿ` + +```agda +abstract + preserves-leq-power-real-ℝ⁰⁺ : + {l1 l2 : Level} (n : ℕ) (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) → leq-ℝ⁰⁺ x y → + leq-ℝ (power-ℝ n (real-ℝ⁰⁺ x)) (power-ℝ n (real-ℝ⁰⁺ y)) + preserves-leq-power-real-ℝ⁰⁺ {l1} {l2} 0 _ _ _ = + leq-sim-ℝ _ _ + ( transitive-sim-ℝ _ one-ℝ _ + ( sim-raise-ℝ l2 one-ℝ) + ( symmetric-sim-ℝ (sim-raise-ℝ l1 one-ℝ))) + preserves-leq-power-real-ℝ⁰⁺ (succ-ℕ n) x⁰⁺@(x , _) y⁰⁺@(y , _) x≤y = + let + open inequality-reasoning-Large-Poset ℝ-Large-Poset + in + chain-of-inequalities + power-ℝ (succ-ℕ n) x + ≤ power-ℝ n x *ℝ x + by leq-eq-ℝ _ _ (power-succ-ℝ n x) + ≤ power-ℝ n y *ℝ y + by + preserves-leq-mul-ℝ⁰⁺ + ( power-ℝ⁰⁺ n x⁰⁺) + ( power-ℝ⁰⁺ n y⁰⁺) + ( x⁰⁺) + ( y⁰⁺) + ( preserves-leq-power-real-ℝ⁰⁺ n x⁰⁺ y⁰⁺ x≤y) + ( x≤y) + ≤ power-ℝ (succ-ℕ n) y + by leq-eq-ℝ _ _ (inv (power-succ-ℝ n y)) +``` + +### If `|r| < 1`, `|r|ⁿ` approaches 0 + +```agda +abstract + is-zero-lim-power-le-one-abs-ℝ : + {l : Level} (r : ℝ l) → le-ℝ (abs-ℝ r) one-ℝ → + is-zero-limit-sequence-ℝ (λ n → power-ℝ n r) + is-zero-lim-power-le-one-abs-ℝ r |r|<1 = + let + open + do-syntax-trunc-Prop (is-zero-limit-prop-sequence-ℝ (λ n → power-ℝ n r)) + in do + (ε , |r|<ε , ε<1ℝ) ← dense-rational-le-ℝ _ _ |r|<1 + let ε<1 = reflects-le-real-ℚ ε one-ℚ ε<1ℝ + is-zero-limit-sequence-leq-abs-rational-zero-limit-sequence-ℝ + ( λ n → power-ℝ n r) + ( {! λ n → power-ℚ n ε !} , {! !}) + {! !} +``` diff --git a/src/real-numbers/real-sequences-approximating-zero.lagda.md b/src/real-numbers/real-sequences-approximating-zero.lagda.md new file mode 100644 index 00000000000..8ca717450f9 --- /dev/null +++ b/src/real-numbers/real-sequences-approximating-zero.lagda.md @@ -0,0 +1,111 @@ +# Real sequences approximating zero + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.real-sequences-approximating-zero where +``` + +
Imports + +```agda +open import metric-spaces.limits-of-sequences-metric-spaces +open import lists.sequences +open import foundation.identity-types +open import real-numbers.absolute-value-real-numbers +open import elementary-number-theory.nonnegative-rational-numbers +open import foundation.action-on-identifications-functions +open import metric-spaces.metric-space-of-rational-numbers +open import elementary-number-theory.absolute-value-rational-numbers +open import real-numbers.inequality-real-numbers +open import real-numbers.similarity-real-numbers +open import foundation.function-types +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.distance-rational-numbers +open import elementary-number-theory.natural-numbers +open import logic.functoriality-existential-quantification +open import order-theory.large-posets +open import foundation.existential-quantification +open import real-numbers.rational-real-numbers +open import real-numbers.distance-real-numbers +open import foundation.dependent-pair-types +open import foundation.universe-levels +open import real-numbers.distance-real-numbers +open import real-numbers.raising-universe-levels-real-numbers +open import real-numbers.dedekind-real-numbers +open import foundation.propositions +open import metric-spaces.rational-sequences-approximating-zero +open import real-numbers.metric-space-of-real-numbers +``` + +
+ +## Idea + +A [sequence](lists.sequences.md) of +[real numbers](real-numbers.dedekind-real-numbers.md) is an +{{#concept "approximation of zero" Disambiguation="sequence of real numbers" Agda=zero-limit-sequence-ℝ}} +if it [converges](metric-spaces.limits-of-sequences-metric-spaces.md) to 0 in +the +[standard metric space of real numbers](real-numbers.metric-space-of-real-numbers.md). + +## Definition + +```agda +is-zero-limit-prop-sequence-ℝ : {l : Level} → sequence (ℝ l) → Prop l +is-zero-limit-prop-sequence-ℝ {l} σ = + is-limit-prop-sequence-Metric-Space + ( metric-space-ℝ l) + ( σ) + ( raise-ℝ l zero-ℝ) + +is-zero-limit-sequence-ℝ : {l : Level} → sequence (ℝ l) → UU l +is-zero-limit-sequence-ℝ σ = type-Prop (is-zero-limit-prop-sequence-ℝ σ) +``` + +## Properties + +### If the absolute value of a sequence of reals is bounded by a rational approximation of zero, the sequence of reals is an approximation of zero + +```agda +abstract + is-zero-limit-sequence-leq-abs-rational-zero-limit-sequence-ℝ : + {l : Level} (a : sequence (ℝ l)) (b : zero-limit-sequence-ℚ) → + ((n : ℕ) → leq-ℝ (abs-ℝ (a n)) (real-ℚ (seq-zero-limit-sequence-ℚ b n))) → + is-zero-limit-sequence-ℝ a + is-zero-limit-sequence-leq-abs-rational-zero-limit-sequence-ℝ + {l} a (b , lim-b=0) H = + let + open inequality-reasoning-Large-Poset ℝ-Large-Poset + in + map-tot-exists + ( λ μ is-mod-μ ε n με≤n → + neighborhood-dist-ℝ + ( ε) + ( a n) + ( raise-ℝ l zero-ℝ) + ( chain-of-inequalities + dist-ℝ (a n) (raise-ℝ l zero-ℝ) + ≤ dist-ℝ (a n) zero-ℝ + by + leq-sim-ℝ _ _ + ( preserves-dist-right-sim-ℝ + ( symmetric-sim-ℝ (sim-raise-ℝ l zero-ℝ))) + ≤ abs-ℝ (a n) + by leq-eq-ℝ _ _ (right-zero-law-dist-ℝ (a n)) + ≤ real-ℚ (b n) + by H n + ≤ real-ℚ (rational-abs-ℚ (b n)) + by preserves-leq-real-ℚ _ _ (leq-abs-ℚ (b n)) + ≤ real-ℚ (rational-dist-ℚ (b n) zero-ℚ) + by + leq-eq-ℝ _ _ + ( ap + ( real-ℚ ∘ rational-ℚ⁰⁺) + ( inv (right-zero-law-dist-ℚ (b n)))) + ≤ real-ℚ⁺ ε + by + preserves-leq-real-ℚ _ _ + ( leq-dist-neighborhood-ℚ ε _ _ (is-mod-μ ε n με≤n)))) + ( lim-b=0) +``` From 2882532a1cda04c5e4bfa60840fe2634d891bdd7 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 12:25:07 -0800 Subject: [PATCH 036/134] Progress --- src/real-numbers.lagda.md | 1 + .../nonnegative-real-numbers.lagda.md | 11 +++++ ...ositive-and-negative-real-numbers.lagda.md | 6 --- .../positive-real-numbers.lagda.md | 14 ++++-- src/real-numbers/powers-real-numbers.lagda.md | 45 ++++++++++++++++--- ...real-sequences-approximating-zero.lagda.md | 45 ++++++++++--------- 6 files changed, 85 insertions(+), 37 deletions(-) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 3e2872c1e15..ec376e07eff 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -69,6 +69,7 @@ open import real-numbers.rational-real-numbers public open import real-numbers.rational-upper-dedekind-real-numbers public open import real-numbers.real-numbers-from-lower-dedekind-real-numbers public open import real-numbers.real-numbers-from-upper-dedekind-real-numbers public +open import real-numbers.real-sequences-approximating-zero public open import real-numbers.saturation-inequality-real-numbers public open import real-numbers.similarity-real-numbers public open import real-numbers.square-roots-nonnegative-real-numbers public diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index 1cf848c3742..96d515c30c5 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -130,6 +130,11 @@ abstract is-nonnegative-real-ℚ⁰⁺ (q , nonneg-q) = preserves-leq-real-ℚ zero-ℚ q (leq-zero-is-nonnegative-ℚ nonneg-q) + reflects-is-nonnegative-real-ℚ : + (q : ℚ) → is-nonnegative-ℝ (real-ℚ q) → is-nonnegative-ℚ q + reflects-is-nonnegative-real-ℚ q 0≤qℝ = + is-nonnegative-leq-zero-ℚ (reflects-leq-real-ℚ zero-ℚ q 0≤qℝ) + nonnegative-real-ℚ⁰⁺ : ℚ⁰⁺ → ℝ⁰⁺ lzero nonnegative-real-ℚ⁰⁺ q = (real-ℚ⁰⁺ q , is-nonnegative-real-ℚ⁰⁺ q) @@ -577,6 +582,12 @@ abstract {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ l2) → leq-ℝ (real-ℝ⁰⁺ x) y → is-nonnegative-ℝ y is-nonnegative-leq-ℝ⁰⁺ (x , 0≤x) y x≤y = transitive-leq-ℝ zero-ℝ x y x≤y 0≤x + + is-nonnegative-le-ℝ⁰⁺ : + {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ l2) → le-ℝ (real-ℝ⁰⁺ x) y → + is-nonnegative-ℝ y + is-nonnegative-le-ℝ⁰⁺ x y x @@ -183,6 +186,9 @@ abstract is-positive-power-ℝ⁺ 1 (_ , is-pos-x) = is-pos-x is-positive-power-ℝ⁺ (succ-ℕ n@(succ-ℕ _)) x⁺@(x , is-pos-x) = is-positive-mul-ℝ (is-positive-power-ℝ⁺ n x⁺) is-pos-x + +power-ℝ⁺ : {l : Level} → ℕ → ℝ⁺ l → ℝ⁺ l +power-ℝ⁺ n x⁺@(x , _) = (power-ℝ n x , is-positive-power-ℝ⁺ n x⁺) ``` ### Powers of nonnegative real numbers are nonnegative @@ -378,7 +384,7 @@ abstract by leq-eq-ℝ _ _ (inv (power-succ-ℝ n y)) ``` -### If `|r| < 1`, `|r|ⁿ` approaches 0 +### If `|r| < 1`, `rⁿ` approaches 0 ```agda abstract @@ -389,11 +395,36 @@ abstract let open do-syntax-trunc-Prop (is-zero-limit-prop-sequence-ℝ (λ n → power-ℝ n r)) + open inequality-reasoning-Large-Poset ℝ-Large-Poset in do (ε , |r|<ε , ε<1ℝ) ← dense-rational-le-ℝ _ _ |r|<1 - let ε<1 = reflects-le-real-ℚ ε one-ℚ ε<1ℝ + let + is-pos-ε = + reflects-is-positive-real-ℚ + ( ε) + ( is-positive-le-ℝ⁰⁺ (nonnegative-abs-ℝ r) (real-ℚ ε) |r|<ε) + ε⁺ = (ε , is-pos-ε) is-zero-limit-sequence-leq-abs-rational-zero-limit-sequence-ℝ ( λ n → power-ℝ n r) - ( {! λ n → power-ℚ n ε !} , {! !}) - {! !} + ( (λ n → rational-ℚ⁺ (power-ℚ⁺ n ε⁺)) , + is-zero-limit-power-le-one-ℚ⁺ ε⁺ (reflects-le-real-ℚ ε one-ℚ ε<1ℝ)) + ( λ n → + chain-of-inequalities + abs-ℝ (power-ℝ n r) + ≤ abs-ℝ (power-ℝ n (real-ℚ ε)) + by + preserves-leq-abs-power-ℝ + ( n) + ( r) + ( real-ℚ ε) + ( inv-tr + ( leq-ℝ (abs-ℝ r)) + ( abs-real-ℝ⁺ (positive-real-ℚ⁺ ε⁺)) + ( leq-le-ℝ _ _ |r|<ε)) + ≤ power-ℝ n (real-ℚ ε) + by leq-eq-ℝ _ _ (abs-real-ℝ⁺ (power-ℝ⁺ n (positive-real-ℚ⁺ ε⁺))) + ≤ real-ℚ (power-ℚ n ε) + by leq-eq-ℝ _ _ (power-real-ℚ n ε) + ≤ real-ℚ⁺ (power-ℚ⁺ n ε⁺) + by leq-eq-ℝ _ _ (ap real-ℚ (power-rational-ℚ⁺ n ε⁺))) ``` diff --git a/src/real-numbers/real-sequences-approximating-zero.lagda.md b/src/real-numbers/real-sequences-approximating-zero.lagda.md index 8ca717450f9..4f50b606de9 100644 --- a/src/real-numbers/real-sequences-approximating-zero.lagda.md +++ b/src/real-numbers/real-sequences-approximating-zero.lagda.md @@ -9,33 +9,38 @@ module real-numbers.real-sequences-approximating-zero where
Imports ```agda -open import metric-spaces.limits-of-sequences-metric-spaces -open import lists.sequences -open import foundation.identity-types -open import real-numbers.absolute-value-real-numbers -open import elementary-number-theory.nonnegative-rational-numbers -open import foundation.action-on-identifications-functions -open import metric-spaces.metric-space-of-rational-numbers open import elementary-number-theory.absolute-value-rational-numbers -open import real-numbers.inequality-real-numbers -open import real-numbers.similarity-real-numbers -open import foundation.function-types -open import elementary-number-theory.rational-numbers open import elementary-number-theory.distance-rational-numbers open import elementary-number-theory.natural-numbers -open import logic.functoriality-existential-quantification -open import order-theory.large-posets -open import foundation.existential-quantification -open import real-numbers.rational-real-numbers -open import real-numbers.distance-real-numbers +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.rational-numbers + +open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types -open import foundation.universe-levels -open import real-numbers.distance-real-numbers -open import real-numbers.raising-universe-levels-real-numbers -open import real-numbers.dedekind-real-numbers +open import foundation.existential-quantification +open import foundation.function-types +open import foundation.identity-types open import foundation.propositions +open import foundation.universe-levels + +open import lists.sequences + +open import logic.functoriality-existential-quantification + +open import metric-spaces.limits-of-sequences-metric-spaces +open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.rational-sequences-approximating-zero + +open import order-theory.large-posets + +open import real-numbers.absolute-value-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.distance-real-numbers +open import real-numbers.inequality-real-numbers open import real-numbers.metric-space-of-real-numbers +open import real-numbers.raising-universe-levels-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers ```
From 380382bfd9c357f6017d92126b8533f7b2065606 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 14:41:01 -0800 Subject: [PATCH 037/134] Progress --- .../absolute-value-rational-numbers.lagda.md | 2 +- ...ddition-positive-rational-numbers.lagda.md | 13 +- .../distance-rational-numbers.lagda.md | 5 +- .../inequality-rational-numbers.lagda.md | 15 +- ...closed-intervals-rational-numbers.lagda.md | 16 +- ...ication-positive-rational-numbers.lagda.md | 2 +- .../negative-rational-numbers.lagda.md | 4 +- .../positive-rational-numbers.lagda.md | 2 +- ...e-roots-positive-rational-numbers.lagda.md | 22 +- ...trict-inequality-rational-numbers.lagda.md | 33 +- .../metrics-of-metric-spaces.lagda.md | 8 +- src/metric-spaces/metrics.lagda.md | 12 +- src/real-numbers.lagda.md | 7 + ...lue-closed-intervals-real-numbers.lagda.md | 2 +- .../absolute-value-real-numbers.lagda.md | 26 +- ...ition-lower-dedekind-real-numbers.lagda.md | 2 +- ...addition-nonnegative-real-numbers.lagda.md | 136 ++++++++ ...ition-upper-dedekind-real-numbers.lagda.md | 2 +- ...thmetically-located-dedekind-cuts.lagda.md | 20 +- .../binary-maximum-real-numbers.lagda.md | 23 +- .../binary-minimum-real-numbers.lagda.md | 13 +- ...ompleteness-dedekind-real-numbers.lagda.md | 13 +- .../closed-intervals-real-numbers.lagda.md | 6 +- .../dedekind-real-numbers.lagda.md | 8 +- .../distance-real-numbers.lagda.md | 6 +- ...nequalities-addition-real-numbers.lagda.md | 234 +++++++++++++ ...equality-nonnegative-real-numbers.lagda.md | 159 +++++++++ .../inequality-real-numbers.lagda.md | 267 ++------------- .../infima-families-real-numbers.lagda.md | 17 +- ...ally-bounded-subsets-real-numbers.lagda.md | 11 +- .../isometry-addition-real-numbers.lagda.md | 1 + .../isometry-negation-real-numbers.lagda.md | 29 ++ ...nuity-multiplication-real-numbers.lagda.md | 27 +- ...imum-finite-families-real-numbers.lagda.md | 1 + ...space-of-nonnegative-real-numbers.lagda.md | 34 ++ .../metric-space-of-real-numbers.lagda.md | 21 +- ...tiplication-negative-real-numbers.lagda.md | 4 +- ...lication-nonnegative-real-numbers.lagda.md | 5 +- .../multiplication-real-numbers.lagda.md | 12 +- ...ve-inverses-positive-real-numbers.lagda.md | 3 +- .../negation-real-numbers.lagda.md | 2 +- .../nonnegative-real-numbers.lagda.md | 319 +---------------- ...ositive-and-negative-real-numbers.lagda.md | 6 +- .../positive-real-numbers.lagda.md | 39 +-- ...sing-universe-levels-real-numbers.lagda.md | 2 +- .../rational-real-numbers.lagda.md | 14 +- ...equality-nonnegative-real-numbers.lagda.md | 71 ++++ ...aturation-inequality-real-numbers.lagda.md | 29 +- ...milarity-nonnegative-real-numbers.lagda.md | 70 ++++ ...re-roots-nonnegative-real-numbers.lagda.md | 9 +- .../squares-real-numbers.lagda.md | 10 +- ...nequalities-addition-real-numbers.lagda.md | 289 ++++++++++++++++ ...equality-nonnegative-real-numbers.lagda.md | 42 ++- .../strict-inequality-real-numbers.lagda.md | 323 ++---------------- .../suprema-families-real-numbers.lagda.md | 5 +- ...action-cuts-dedekind-real-numbers.lagda.md | 13 +- 56 files changed, 1340 insertions(+), 1126 deletions(-) create mode 100644 src/real-numbers/addition-nonnegative-real-numbers.lagda.md create mode 100644 src/real-numbers/inequalities-addition-real-numbers.lagda.md create mode 100644 src/real-numbers/inequality-nonnegative-real-numbers.lagda.md create mode 100644 src/real-numbers/metric-space-of-nonnegative-real-numbers.lagda.md create mode 100644 src/real-numbers/saturation-inequality-nonnegative-real-numbers.lagda.md create mode 100644 src/real-numbers/similarity-nonnegative-real-numbers.lagda.md create mode 100644 src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md diff --git a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md index 4b0ad01d885..031a23160f4 100644 --- a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md +++ b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md @@ -166,7 +166,7 @@ abstract ( q) ( rational-abs-ℚ q) ( zero-ℚ) - ( leq-eq-ℚ _ _ (ap rational-ℚ⁰⁺ abs=0)) + ( leq-eq-ℚ (ap rational-ℚ⁰⁺ abs=0)) ( leq-abs-ℚ q)) ( binary-tr ( leq-ℚ) diff --git a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md index 85668704afe..7e1cf13e5b6 100644 --- a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md @@ -169,7 +169,7 @@ module _ where le-diff-ℚ⁺ : ℚ⁺ - le-diff-ℚ⁺ = positive-diff-le-ℚ (rational-ℚ⁺ x) (rational-ℚ⁺ y) H + le-diff-ℚ⁺ = positive-diff-le-ℚ H left-diff-law-add-ℚ⁺ : le-diff-ℚ⁺ +ℚ⁺ x = y left-diff-law-add-ℚ⁺ = @@ -342,15 +342,8 @@ module _ ( le-right-mediant-ℚ y x I) ( tr ( leq-ℚ x) - ( right-law-positive-diff-le-ℚ - ( y) - ( mediant-ℚ y x) - ( le-left-mediant-ℚ y x I)) - ( H - ( positive-diff-le-ℚ - ( y) - ( mediant-ℚ y x) - ( le-left-mediant-ℚ y x I)))))) + ( right-law-positive-diff-le-ℚ (le-left-mediant-ℚ y x I)) + ( H (positive-diff-le-ℚ (le-left-mediant-ℚ y x I)))))) ( id) ( decide-le-leq-ℚ y x) diff --git a/src/elementary-number-theory/distance-rational-numbers.lagda.md b/src/elementary-number-theory/distance-rational-numbers.lagda.md index 6a9bcc3d5d9..3926d248dc4 100644 --- a/src/elementary-number-theory/distance-rational-numbers.lagda.md +++ b/src/elementary-number-theory/distance-rational-numbers.lagda.md @@ -191,10 +191,7 @@ abstract ( rational-dist-ℚ p q) ( (rational-abs-ℚ p) +ℚ (rational-abs-ℚ (neg-ℚ q))) ( rational-abs-ℚ p +ℚ rational-abs-ℚ q) - ( leq-eq-ℚ - ( (rational-abs-ℚ p) +ℚ (rational-abs-ℚ (neg-ℚ q))) - ( rational-abs-ℚ p +ℚ rational-abs-ℚ q) - ( ap (add-ℚ (rational-abs-ℚ p) ∘ rational-ℚ⁰⁺) (abs-neg-ℚ q))) + ( leq-eq-ℚ (ap (add-ℚ (rational-abs-ℚ p) ∘ rational-ℚ⁰⁺) (abs-neg-ℚ q))) ( triangle-inequality-abs-ℚ p (neg-ℚ q)) ``` diff --git a/src/elementary-number-theory/inequality-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-rational-numbers.lagda.md index 14d1a9398e4..29d6fb57a98 100644 --- a/src/elementary-number-theory/inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-rational-numbers.lagda.md @@ -126,8 +126,8 @@ opaque refl-leq-ℤ (numerator-ℚ x *ℤ denominator-ℚ x) abstract - leq-eq-ℚ : (x y : ℚ) → x = y → leq-ℚ x y - leq-eq-ℚ x y x=y = tr (leq-ℚ x) x=y (refl-leq-ℚ x) + leq-eq-ℚ : {x y : ℚ} → x = y → leq-ℚ x y + leq-eq-ℚ {x} refl = refl-leq-ℚ x ``` ### Inequality on the rational numbers is antisymmetric @@ -294,8 +294,8 @@ opaque unfolding leq-ℚ-Prop preserves-leq-rational-ℤ : - (x y : ℤ) → leq-ℤ x y → leq-ℚ (rational-ℤ x) (rational-ℤ y) - preserves-leq-rational-ℤ x y = + {x y : ℤ} → leq-ℤ x y → leq-ℚ (rational-ℤ x) (rational-ℤ y) + preserves-leq-rational-ℤ {x} {y} = binary-tr leq-ℤ ( inv (right-unit-law-mul-ℤ x)) ( inv (right-unit-law-mul-ℤ y)) @@ -309,7 +309,7 @@ opaque iff-leq-rational-ℤ : (x y : ℤ) → leq-ℤ x y ↔ leq-ℚ (rational-ℤ x) (rational-ℤ y) - pr1 (iff-leq-rational-ℤ x y) = preserves-leq-rational-ℤ x y + pr1 (iff-leq-rational-ℤ x y) = preserves-leq-rational-ℤ pr2 (iff-leq-rational-ℤ x y) = reflects-leq-rational-ℤ x y ``` @@ -324,8 +324,9 @@ abstract iff-leq-int-ℕ x y preserves-leq-rational-ℕ : - (x y : ℕ) → leq-ℕ x y → leq-ℚ (rational-ℕ x) (rational-ℕ y) - preserves-leq-rational-ℕ x y = forward-implication (iff-leq-rational-ℕ x y) + {x y : ℕ} → leq-ℕ x y → leq-ℚ (rational-ℕ x) (rational-ℕ y) + preserves-leq-rational-ℕ {x} {y} = + forward-implication (iff-leq-rational-ℕ x y) reflects-leq-rational-ℕ : (x y : ℕ) → leq-ℚ (rational-ℕ x) (rational-ℕ y) → leq-ℕ x y diff --git a/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md index 8ec9ae546c5..698a8adb827 100644 --- a/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md @@ -924,7 +924,7 @@ abstract rational-dist-ℚ (a *ℚ q) (b *ℚ q) ≤ rational-dist-ℚ a b *ℚ rational-abs-ℚ q by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ( ap ( rational-abs-ℚ) ( inv (right-distributive-mul-diff-ℚ _ _ _))) ∙ @@ -939,7 +939,7 @@ abstract ≤ width-closed-interval-ℚ [a,b] *ℚ rational-max-abs-closed-interval-ℚ [c,d] by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ap-mul-ℚ ( eq-width-dist-lower-upper-bounds-closed-interval-ℚ [a,b]) ( refl)) @@ -951,7 +951,7 @@ abstract rational-dist-ℚ (p *ℚ c) (p *ℚ d) ≤ rational-dist-ℚ c d *ℚ rational-abs-ℚ p by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ( ap ( rational-abs-ℚ) ( inv (left-distributive-mul-diff-ℚ _ _ _))) ∙ @@ -966,7 +966,7 @@ abstract ( leq-max-abs-is-in-closed-interval-ℚ [a,b] p p∈[a,b]) ≤ _ by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ap-mul-ℚ ( eq-width-dist-lower-upper-bounds-closed-interval-ℚ [c,d]) ( refl)) @@ -983,7 +983,7 @@ abstract rational-dist-ℚ (a *ℚ c) (b *ℚ d) ≤ rational-abs-ℚ ((a *ℚ c -ℚ b *ℚ c) +ℚ (b *ℚ c -ℚ b *ℚ d)) by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ap ( rational-abs-ℚ) ( inv ( mul-right-div-Group group-add-ℚ _ _ _))) @@ -996,7 +996,7 @@ abstract rational-dist-ℚ (a *ℚ d) (b *ℚ c) ≤ rational-abs-ℚ ((a *ℚ d -ℚ b *ℚ d) +ℚ (b *ℚ d -ℚ b *ℚ c)) by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ap ( rational-abs-ℚ) ( inv ( mul-right-div-Group group-add-ℚ _ _ _))) @@ -1006,7 +1006,7 @@ abstract ≤ rational-dist-ℚ (a *ℚ d) (b *ℚ d) +ℚ rational-dist-ℚ (b *ℚ c) (b *ℚ d) by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ap-add-ℚ refl (ap rational-ℚ⁰⁺ (commutative-dist-ℚ _ _))) ≤ +ℚ by preserves-leq-add-ℚ |ad-bd|≤max|c||d| |bc-bd|≤max|a||b| @@ -1042,7 +1042,7 @@ abstract chain-of-inequalities rational-dist-ℚ q q ≤ zero-ℚ - by leq-eq-ℚ _ _ (rational-dist-self-ℚ q) + by leq-eq-ℚ (rational-dist-self-ℚ q) ≤ +ℚ by leq-zero-rational-ℚ⁰⁺ (⁰⁺ +ℚ⁰⁺ ⁰⁺) diff --git a/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md index e0fb4cbbe41..492703832cb 100644 --- a/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md @@ -357,6 +357,6 @@ abstract leq-left-mul-leq-one-ℚ⁺ p⁺@(p , _) p≤1 q⁺@(q , _) = trichotomy-le-ℚ p one-ℚ ( λ p<1 → leq-le-ℚ (le-left-mul-less-than-one-ℚ⁺ p⁺ p<1 q⁺)) - ( λ p=1 → leq-eq-ℚ _ _ (ap-mul-ℚ p=1 refl ∙ left-unit-law-mul-ℚ q)) + ( λ p=1 → leq-eq-ℚ (ap-mul-ℚ p=1 refl ∙ left-unit-law-mul-ℚ q)) ( λ 1

Imports + +```agda +open import elementary-number-theory.addition-nonnegative-rational-numbers +open import elementary-number-theory.addition-positive-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import real-numbers.addition-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequality-nonnegative-real-numbers +open import real-numbers.inequality-real-numbers +open import real-numbers.nonnegative-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequality-nonnegative-real-numbers +open import real-numbers.strict-inequality-real-numbers +``` + +
+ +## Idea + +The [nonnegative](real-numbers.nonnegative-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md) are closed under +[addition](real-numbers.addition-real-numbers.md). + +## Definition + +```agda +module _ + {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) + where + + real-add-ℝ⁰⁺ : ℝ (l1 ⊔ l2) + real-add-ℝ⁰⁺ = real-ℝ⁰⁺ x +ℝ real-ℝ⁰⁺ y + + abstract + is-nonnegative-real-add-ℝ⁰⁺ : is-nonnegative-ℝ real-add-ℝ⁰⁺ + is-nonnegative-real-add-ℝ⁰⁺ = + tr + ( λ z → leq-ℝ z (real-ℝ⁰⁺ x +ℝ real-ℝ⁰⁺ y)) + ( left-unit-law-add-ℝ zero-ℝ) + ( preserves-leq-add-ℝ + ( is-nonnegative-real-ℝ⁰⁺ x) + ( is-nonnegative-real-ℝ⁰⁺ y)) + + add-ℝ⁰⁺ : ℝ⁰⁺ (l1 ⊔ l2) + add-ℝ⁰⁺ = (real-add-ℝ⁰⁺ , is-nonnegative-real-add-ℝ⁰⁺) + +infixl 35 _+ℝ⁰⁺_ + +_+ℝ⁰⁺_ : {l1 l2 : Level} → ℝ⁰⁺ l1 → ℝ⁰⁺ l2 → ℝ⁰⁺ (l1 ⊔ l2) +_+ℝ⁰⁺_ = add-ℝ⁰⁺ +``` + +## Properties + +### Unit laws for addition + +```agda +module _ + {l : Level} (x : ℝ⁰⁺ l) + where + + abstract + left-unit-law-add-ℝ⁰⁺ : zero-ℝ⁰⁺ +ℝ⁰⁺ x = x + left-unit-law-add-ℝ⁰⁺ = eq-ℝ⁰⁺ _ _ (left-unit-law-add-ℝ _) + + right-unit-law-add-ℝ⁰⁺ : x +ℝ⁰⁺ zero-ℝ⁰⁺ = x + right-unit-law-add-ℝ⁰⁺ = eq-ℝ⁰⁺ _ _ (right-unit-law-add-ℝ _) +``` + +### Addition preserves inequality + +```agda +module _ + {l1 l2 l3 l4 : Level} (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) (z : ℝ⁰⁺ l3) (w : ℝ⁰⁺ l4) + where + + abstract + preserves-leq-add-ℝ⁰⁺ : + leq-ℝ⁰⁺ x y → leq-ℝ⁰⁺ z w → leq-ℝ⁰⁺ (x +ℝ⁰⁺ z) (y +ℝ⁰⁺ w) + preserves-leq-add-ℝ⁰⁺ = preserves-leq-add-ℝ +``` + +### The canonical embedding of nonnegative rational numbers to nonnegative real numbers preserves addition + +```agda +abstract + add-nonnegative-real-ℚ⁰⁺ : + (p q : ℚ⁰⁺) → + nonnegative-real-ℚ⁰⁺ p +ℝ⁰⁺ nonnegative-real-ℚ⁰⁺ q = + nonnegative-real-ℚ⁰⁺ (p +ℚ⁰⁺ q) + add-nonnegative-real-ℚ⁰⁺ p q = + eq-ℝ⁰⁺ _ _ (add-real-ℚ (rational-ℚ⁰⁺ p) (rational-ℚ⁰⁺ q)) +``` + +### The canonical embedding of positive rational numbers to nonnegative real numbers preserves addition + +```agda +abstract + add-nonnegative-real-ℚ⁺ : + (p q : ℚ⁺) → + nonnegative-real-ℚ⁺ p +ℝ⁰⁺ nonnegative-real-ℚ⁺ q = + nonnegative-real-ℚ⁺ (p +ℚ⁺ q) + add-nonnegative-real-ℚ⁺ p q = + eq-ℝ⁰⁺ _ _ (add-real-ℚ (rational-ℚ⁺ p) (rational-ℚ⁺ q)) +``` + +### Addition preserves strict inequality + +```agda +module _ + {l1 l2 l3 l4 : Level} (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) (z : ℝ⁰⁺ l3) (w : ℝ⁰⁺ l4) + where + + abstract + preserves-le-add-ℝ⁰⁺ : + le-ℝ⁰⁺ x y → le-ℝ⁰⁺ z w → le-ℝ⁰⁺ (x +ℝ⁰⁺ z) (y +ℝ⁰⁺ w) + preserves-le-add-ℝ⁰⁺ = preserves-le-add-ℝ +``` 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 44bd7f51aee..616124b9515 100644 --- a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md @@ -111,7 +111,7 @@ module _ (p , pImports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-transport +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.functoriality-cartesian-product-types +open import foundation.logical-equivalences +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import logic.functoriality-existential-quantification + +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-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.rational-real-numbers +``` + +
+ +## Idea + +This file describes lemmas about +[inequalities](real-numbers.inequality-real-numbers.md) of +[real numbers](real-numbers.dedekind-real-numbers.md) related to +[addition](real-numbers.addition-real-numbers.md) and +[subtraction](real-numbers.difference-real-numbers.md). + +## Lemmas + +### Inequality on the real numbers is translation invariant + +```agda +module _ + {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + opaque + unfolding add-ℝ leq-ℝ + + preserves-leq-right-add-ℝ : leq-ℝ x y → leq-ℝ (x +ℝ z) (y +ℝ z) + preserves-leq-right-add-ℝ x≤y _ = + map-tot-exists (λ (qx , _) → map-product (x≤y qx) id) + + preserves-leq-left-add-ℝ : leq-ℝ x y → leq-ℝ (z +ℝ x) (z +ℝ y) + preserves-leq-left-add-ℝ x≤y _ = + map-tot-exists (λ (_ , qx) → map-product id (map-product (x≤y qx) id)) + +abstract + preserves-leq-diff-ℝ : + {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) → + leq-ℝ x y → leq-ℝ (x -ℝ z) (y -ℝ z) + preserves-leq-diff-ℝ z = preserves-leq-right-add-ℝ (neg-ℝ z) + +module _ + {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + abstract + reflects-leq-right-add-ℝ : leq-ℝ (x +ℝ z) (y +ℝ z) → leq-ℝ x y + reflects-leq-right-add-ℝ x+z≤y+z = + preserves-leq-sim-ℝ + ( (x +ℝ z) -ℝ z) + ( x) + ( (y +ℝ z) -ℝ z) + ( y) + ( cancel-right-add-diff-ℝ x z) + ( cancel-right-add-diff-ℝ 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 + reflects-leq-left-add-ℝ z+x≤z+y = + reflects-leq-right-add-ℝ + ( binary-tr + ( leq-ℝ) + ( 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-leq-ℝ : leq-ℝ x y ↔ leq-ℝ (x +ℝ z) (y +ℝ z) + pr1 iff-translate-right-leq-ℝ = preserves-leq-right-add-ℝ z x y + pr2 iff-translate-right-leq-ℝ = reflects-leq-right-add-ℝ z x y + + iff-translate-left-leq-ℝ : leq-ℝ x y ↔ leq-ℝ (z +ℝ x) (z +ℝ y) + pr1 iff-translate-left-leq-ℝ = preserves-leq-left-add-ℝ z x y + pr2 iff-translate-left-leq-ℝ = reflects-leq-left-add-ℝ z x y + +abstract + preserves-leq-add-ℝ : + {l1 l2 l3 l4 : Level} {a : ℝ l1} {b : ℝ l2} {c : ℝ l3} {d : ℝ l4} → + leq-ℝ a b → leq-ℝ c d → leq-ℝ (a +ℝ c) (b +ℝ d) + preserves-leq-add-ℝ {a = a} {b = b} {c = c} {d = d} a≤b c≤d = + transitive-leq-ℝ + ( a +ℝ c) + ( a +ℝ d) + ( b +ℝ d) + ( preserves-leq-right-add-ℝ d a b a≤b) + ( preserves-leq-left-add-ℝ a c d c≤d) +``` + +### Transposition laws + +```agda +module _ + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) + where + + abstract + leq-transpose-left-diff-ℝ : leq-ℝ (x -ℝ y) z → leq-ℝ x (z +ℝ y) + leq-transpose-left-diff-ℝ x-y≤z = + preserves-leq-left-sim-ℝ + ( cancel-right-diff-add-ℝ x y) + ( preserves-leq-right-add-ℝ y (x -ℝ y) z x-y≤z) + + leq-transpose-left-add-ℝ : leq-ℝ (x +ℝ y) z → leq-ℝ x (z -ℝ y) + leq-transpose-left-add-ℝ x+y≤z = + preserves-leq-left-sim-ℝ + ( cancel-right-add-diff-ℝ x y) + ( preserves-leq-right-add-ℝ (neg-ℝ y) (x +ℝ y) z x+y≤z) + + leq-transpose-right-add-ℝ : leq-ℝ x (y +ℝ z) → leq-ℝ (x -ℝ z) y + leq-transpose-right-add-ℝ x≤y+z = + preserves-leq-right-sim-ℝ + ( cancel-right-add-diff-ℝ y z) + ( preserves-leq-right-add-ℝ (neg-ℝ z) x (y +ℝ z) x≤y+z) + + leq-transpose-right-diff-ℝ : leq-ℝ x (y -ℝ z) → leq-ℝ (x +ℝ z) y + leq-transpose-right-diff-ℝ x≤y-z = + preserves-leq-right-sim-ℝ + ( cancel-right-diff-add-ℝ y z) + ( preserves-leq-right-add-ℝ z x (y -ℝ z) x≤y-z) +``` + +### Swapping laws + +```agda +abstract + swap-right-diff-leq-ℝ : + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → + leq-ℝ (x -ℝ y) z → leq-ℝ (x -ℝ z) y + swap-right-diff-leq-ℝ x y z x-y≤z = + leq-transpose-right-add-ℝ + ( x) + ( y) + ( z) + ( tr + ( leq-ℝ x) + ( commutative-add-ℝ _ _) + ( leq-transpose-left-diff-ℝ x y z x-y≤z)) +``` + +### Addition of real numbers preserves lower neighborhoods + +```agda +module _ + {l1 l2 l3 : Level} (d : ℚ⁺) + (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) + where + + abstract + preserves-lower-neighborhood-leq-left-add-ℝ : + leq-ℝ y (z +ℝ real-ℚ⁺ d) → + leq-ℝ (x +ℝ y) ((x +ℝ z) +ℝ real-ℚ⁺ d) + preserves-lower-neighborhood-leq-left-add-ℝ z≤y+d = + inv-tr + ( leq-ℝ (x +ℝ y)) + ( associative-add-ℝ x z (real-ℚ⁺ d)) + ( preserves-leq-left-add-ℝ + ( x) + ( y) + ( z +ℝ real-ℚ⁺ d) + ( z≤y+d)) + + preserves-lower-neighborhood-leq-right-add-ℝ : + leq-ℝ y (z +ℝ real-ℚ⁺ d) → + leq-ℝ (y +ℝ x) ((z +ℝ x) +ℝ real-ℚ⁺ d) + preserves-lower-neighborhood-leq-right-add-ℝ z≤y+d = + binary-tr + ( λ u v → leq-ℝ u (v +ℝ real-ℚ⁺ d)) + ( commutative-add-ℝ x y) + ( commutative-add-ℝ x z) + ( preserves-lower-neighborhood-leq-left-add-ℝ z≤y+d) +``` + +### Addition of real numbers reflects lower neighborhoods + +```agda +module _ + {l1 l2 l3 : Level} (d : ℚ⁺) + (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) + where + + abstract + reflects-lower-neighborhood-leq-left-add-ℝ : + leq-ℝ (x +ℝ y) ((x +ℝ z) +ℝ real-ℚ⁺ d) → + leq-ℝ y (z +ℝ real-ℚ⁺ d) + reflects-lower-neighborhood-leq-left-add-ℝ x+y≤x+z+d = + reflects-leq-left-add-ℝ + ( x) + ( y) + ( z +ℝ real-ℚ⁺ d) + ( tr + ( leq-ℝ (x +ℝ y)) + ( associative-add-ℝ x z (real-ℚ⁺ d)) + ( x+y≤x+z+d)) + + reflects-lower-neighborhood-leq-right-add-ℝ : + leq-ℝ (y +ℝ x) ((z +ℝ x) +ℝ real-ℚ⁺ d) → + leq-ℝ y (z +ℝ real-ℚ⁺ d) + reflects-lower-neighborhood-leq-right-add-ℝ y+x≤z+y+d = + reflects-lower-neighborhood-leq-left-add-ℝ + ( binary-tr + ( λ u v → leq-ℝ u (v +ℝ real-ℚ⁺ d)) + ( commutative-add-ℝ y x) + ( commutative-add-ℝ z x) + ( y+x≤z+y+d)) +``` diff --git a/src/real-numbers/inequality-nonnegative-real-numbers.lagda.md b/src/real-numbers/inequality-nonnegative-real-numbers.lagda.md new file mode 100644 index 00000000000..fa71aea44a1 --- /dev/null +++ b/src/real-numbers/inequality-nonnegative-real-numbers.lagda.md @@ -0,0 +1,159 @@ +# Inequality of nonnegative real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.inequality-nonnegative-real-numbers where +``` + +
Imports + +```agda +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.coproduct-types +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.function-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.universe-levels + +open import real-numbers.dedekind-real-numbers +open import real-numbers.inequality-real-numbers +open import real-numbers.nonnegative-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-nonnegative-real-numbers +open import real-numbers.strict-inequality-real-numbers +``` + +
+ +## Idea + +The +{{#concept "standard ordering" Disambiguation="on the nonnegative real numbers" Agda=leq-ℝ⁰⁺}} +on the [nonnegative real numbers](real-numbers.nonnegative-real-numbers.md) is +inherited from the [standard ordering](real-numbers.inequality-real-numbers.md) +on [real numbers](real-numbers.dedekind-real-numbers.md). + +## Definition + +```agda +module _ + {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) + where + + leq-prop-ℝ⁰⁺ : Prop (l1 ⊔ l2) + leq-prop-ℝ⁰⁺ = leq-prop-ℝ (real-ℝ⁰⁺ x) (real-ℝ⁰⁺ y) + + leq-ℝ⁰⁺ : UU (l1 ⊔ l2) + leq-ℝ⁰⁺ = type-Prop leq-prop-ℝ⁰⁺ +``` + +## Properties + +### Zero is less than or equal to every nonnegative real number + +```agda +leq-zero-ℝ⁰⁺ : {l : Level} (x : ℝ⁰⁺ l) → leq-ℝ⁰⁺ zero-ℝ⁰⁺ x +leq-zero-ℝ⁰⁺ = is-nonnegative-real-ℝ⁰⁺ +``` + +### Similarity preserves inequality + +```agda +module _ + {l1 l2 l3 : Level} (z : ℝ⁰⁺ l1) (x : ℝ⁰⁺ l2) (y : ℝ⁰⁺ l3) (x~y : sim-ℝ⁰⁺ x y) + where + + abstract + preserves-leq-left-sim-ℝ⁰⁺ : leq-ℝ⁰⁺ x z → leq-ℝ⁰⁺ y z + preserves-leq-left-sim-ℝ⁰⁺ = preserves-leq-left-sim-ℝ x~y +``` + +### Inequality is transitive + +```agda +module _ + {l1 l2 l3 : Level} (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) (z : ℝ⁰⁺ l3) + where + + transitive-leq-ℝ⁰⁺ : leq-ℝ⁰⁺ y z → leq-ℝ⁰⁺ x y → leq-ℝ⁰⁺ x z + transitive-leq-ℝ⁰⁺ = transitive-leq-ℝ (real-ℝ⁰⁺ x) (real-ℝ⁰⁺ y) (real-ℝ⁰⁺ z) +``` + +### If `x` is less than all the positive rational numbers `y` is less than, then `x ≤ y` + +```agda +module _ + {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) + where + + abstract + leq-le-positive-rational-ℝ⁰⁺ : + ( (q : ℚ⁺) → le-ℝ (real-ℝ⁰⁺ y) (real-ℚ⁺ q) → + le-ℝ (real-ℝ⁰⁺ x) (real-ℚ⁺ q)) → + leq-ℝ⁰⁺ x y + leq-le-positive-rational-ℝ⁰⁺ H = + leq-le-rational-ℝ (real-ℝ⁰⁺ x) (real-ℝ⁰⁺ y) + ( λ q y @@ -36,6 +41,30 @@ open import real-numbers.negation-real-numbers ## Definitions +### Negation of real numbers reverses lower neighborhoods + +```agda +module _ + {l1 l2 : Level} (d : ℚ⁺) + (x : ℝ l1) (y : ℝ l2) + where + + reverses-lower-neighborhood-neg-ℝ : + leq-ℝ x (y +ℝ real-ℚ⁺ d) → + leq-ℝ (neg-ℝ y) (neg-ℝ x +ℝ real-ℚ⁺ d) + reverses-lower-neighborhood-neg-ℝ x≤y+d = + tr + ( leq-ℝ (neg-ℝ y)) + ( ( distributive-neg-add-ℝ x ((neg-ℝ ∘ real-ℚ ∘ rational-ℚ⁺) d)) ∙ + ( ap (add-ℝ (neg-ℝ x)) (neg-neg-ℝ (real-ℚ⁺ d)))) + ( neg-leq-ℝ + ( leq-transpose-right-add-ℝ + ( x) + ( y) + ( real-ℚ⁺ d) + ( x≤y+d))) +``` + ### Negation of a real number preserves neighborhoods ```agda diff --git a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md index 9e1a1f4786a..7b3d8f8c669 100644 --- a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md +++ b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md @@ -30,11 +30,13 @@ open import order-theory.large-posets open import real-numbers.absolute-value-closed-intervals-real-numbers open import real-numbers.absolute-value-real-numbers +open import real-numbers.addition-nonnegative-real-numbers 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.distance-real-numbers open import real-numbers.enclosing-closed-rational-intervals-real-numbers +open import real-numbers.inequalities-addition-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.inhabited-totally-bounded-subsets-real-numbers open import real-numbers.metric-space-of-real-numbers @@ -90,7 +92,7 @@ module _ ( chain-of-inequalities dist-ℝ (c *ℝ x) (c *ℝ y) ≤ abs-ℝ c *ℝ dist-ℝ x y - by leq-eq-ℝ _ _ (inv (left-distributive-abs-mul-dist-ℝ _ _ _)) + by leq-eq-ℝ (inv (left-distributive-abs-mul-dist-ℝ _ _ _)) ≤ real-ℚ⁺ q *ℝ real-ℚ⁺ ε by preserves-leq-mul-ℝ⁰⁺ @@ -98,14 +100,10 @@ module _ ( nonnegative-real-ℚ⁺ q) ( nonnegative-dist-ℝ x y) ( nonnegative-real-ℚ⁺ ε) - ( leq-le-ℝ _ _ - ( le-real-is-in-upper-cut-ℚ - ( rational-ℚ⁺ q) - ( abs-ℝ c) - ( |c|Imports + +```agda +open import foundation.universe-levels + +open import metric-spaces.metric-spaces + +open import real-numbers.nonnegative-real-numbers +open import real-numbers.subsets-real-numbers +``` + +
+ +## Idea + +The [nonnegative](real-numbers.nonnegative-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md) form a +[subspace](metric-spaces.subspaces-metric-spaces.md) of the +[metric space of real numbers](real-numbers.metric-space-of-real-numbers.md). + +## Definition + +```agda +metric-space-ℝ⁰⁺ : (l : Level) → Metric-Space (lsuc l) l +metric-space-ℝ⁰⁺ l = metric-space-subset-ℝ (is-nonnegative-prop-ℝ {l}) +``` diff --git a/src/real-numbers/metric-space-of-real-numbers.lagda.md b/src/real-numbers/metric-space-of-real-numbers.lagda.md index 9c80701de01..5afe6b7b568 100644 --- a/src/real-numbers/metric-space-of-real-numbers.lagda.md +++ b/src/real-numbers/metric-space-of-real-numbers.lagda.md @@ -44,10 +44,12 @@ open import metric-spaces.triangular-rational-neighborhood-relations 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.inequalities-addition-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.strict-inequalities-addition-real-numbers open import real-numbers.strict-inequality-real-numbers open import real-numbers.transposition-addition-subtraction-cuts-dedekind-real-numbers ``` @@ -170,15 +172,11 @@ module _ elim-exists ( lower-cut-ℝ x r) ( λ r' (K , I') → - H ( positive-diff-le-ℚ (r +ℚ rational-ℚ⁺ ε) r' K) + H ( positive-diff-le-ℚ K) ( r) ( tr ( is-in-lower-cut-ℝ y) - ( ( inv - ( right-law-positive-diff-le-ℚ - ( r +ℚ rational-ℚ⁺ ε) - ( r') - ( K))) ∙ + ( ( inv (right-law-positive-diff-le-ℚ K)) ∙ ( associative-add-ℚ ( r) ( rational-ℚ⁺ ε) @@ -221,11 +219,11 @@ module _ ( lower-cut-ℝ y r) ( λ s (rImports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import real-numbers.addition-nonnegative-real-numbers +open import real-numbers.inequality-nonnegative-real-numbers +open import real-numbers.inequality-real-numbers +open import real-numbers.nonnegative-real-numbers +open import real-numbers.saturation-inequality-real-numbers +open import real-numbers.similarity-nonnegative-real-numbers +``` + + + +## Idea + +If `x ≤ y + ε` for [nonnegative](real-numbers.nonnegative-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md) `x` and `y` and every +[positive rational](elementary-number-theory.positive-rational-numbers.md) `ε`, +then `x ≤ y`. + +Despite being a property of +[inequality of nonnegative real numbers](real-numbers.inequality-nonnegative-real-numbers.md), +this is much easier to prove via +[strict inequality](real-numbers.strict-inequality-nonnegative-real-numbers.md), +so it is moved to its own file to prevent circular dependency. + +## Definition + +```agda +module _ + {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) + where + + abstract + saturated-leq-ℝ⁰⁺ : + ((ε : ℚ⁺) → leq-ℝ⁰⁺ x (y +ℝ⁰⁺ nonnegative-real-ℚ⁺ ε)) → + leq-ℝ⁰⁺ x y + saturated-leq-ℝ⁰⁺ = saturated-leq-ℝ (real-ℝ⁰⁺ x) (real-ℝ⁰⁺ y) +``` + +## Corollaries + +### If a nonnegative real number is less than or equal to all positive rational numbers, it is similar to zero + +```agda +sim-zero-le-positive-rational-ℝ⁰⁺ : + {l : Level} (x : ℝ⁰⁺ l) → + ((ε : ℚ⁺) → leq-ℝ⁰⁺ x (nonnegative-real-ℚ⁺ ε)) → + sim-zero-ℝ⁰⁺ x +sim-zero-le-positive-rational-ℝ⁰⁺ x H = + sim-sim-leq-ℝ + ( leq-zero-ℝ⁰⁺ x , + saturated-leq-ℝ⁰⁺ + ( x) + ( zero-ℝ⁰⁺) + ( λ ε → inv-tr (leq-ℝ⁰⁺ x) (left-unit-law-add-ℝ⁰⁺ _) (H ε))) +``` diff --git a/src/real-numbers/saturation-inequality-real-numbers.lagda.md b/src/real-numbers/saturation-inequality-real-numbers.lagda.md index 6657f97f72c..437a1a7a324 100644 --- a/src/real-numbers/saturation-inequality-real-numbers.lagda.md +++ b/src/real-numbers/saturation-inequality-real-numbers.lagda.md @@ -12,12 +12,16 @@ module real-numbers.saturation-inequality-real-numbers where open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.strict-inequality-positive-rational-numbers +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.propositional-truncations open import foundation.universe-levels 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.rational-real-numbers +open import real-numbers.strict-inequalities-addition-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -38,6 +42,29 @@ moved to its own file to prevent circular dependency. ## Proof +### If `x < y + ε` for every positive rational `ε`, then `x ≤ y` + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + abstract + saturated-le-ℝ : ((ε : ℚ⁺) → le-ℝ x (y +ℝ real-ℚ⁺ ε)) → leq-ℝ x y + saturated-le-ℝ H = + leq-not-le-ℝ y x + ( λ yImports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositions +open import foundation.universe-levels + +open import real-numbers.dedekind-real-numbers +open import real-numbers.inequality-real-numbers +open import real-numbers.nonnegative-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers +open import real-numbers.strict-inequality-real-numbers +``` + + + +## Idea + +Two [nonnegative](real-numbers.nonnegative-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md) are +{{#concept "similar" Disambiguation="nonnegative real numbers" Agda=sim-ℝ⁰⁺}} if +they are [similar](real-numbers.similarity-real-numbers.md) as real numbers. + +## Definition + +### Similarity of nonnegative real numbers + +```agda +module _ + {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) + where + + sim-prop-ℝ⁰⁺ : Prop (l1 ⊔ l2) + sim-prop-ℝ⁰⁺ = sim-prop-ℝ (real-ℝ⁰⁺ x) (real-ℝ⁰⁺ y) + + sim-ℝ⁰⁺ : UU (l1 ⊔ l2) + sim-ℝ⁰⁺ = sim-ℝ (real-ℝ⁰⁺ x) (real-ℝ⁰⁺ y) + +infix 6 _~ℝ⁰⁺_ +_~ℝ⁰⁺_ : {l1 l2 : Level} → ℝ⁰⁺ l1 → ℝ⁰⁺ l2 → UU (l1 ⊔ l2) +_~ℝ⁰⁺_ = sim-ℝ⁰⁺ + +sim-zero-prop-ℝ⁰⁺ : {l : Level} → ℝ⁰⁺ l → Prop l +sim-zero-prop-ℝ⁰⁺ = sim-prop-ℝ⁰⁺ zero-ℝ⁰⁺ + +sim-zero-ℝ⁰⁺ : {l : Level} → ℝ⁰⁺ l → UU l +sim-zero-ℝ⁰⁺ = sim-ℝ⁰⁺ zero-ℝ⁰⁺ + +eq-sim-ℝ⁰⁺ : {l : Level} (x y : ℝ⁰⁺ l) → sim-ℝ⁰⁺ x y → x = y +eq-sim-ℝ⁰⁺ x y x~y = eq-ℝ⁰⁺ x y (eq-sim-ℝ {x = real-ℝ⁰⁺ x} {y = real-ℝ⁰⁺ y} x~y) +``` + +#### Similarity is symmetric + +```agda +abstract + symmetric-sim-ℝ⁰⁺ : + {l1 l2 : Level} → (x : ℝ⁰⁺ l1) (y : ℝ⁰⁺ l2) → x ~ℝ⁰⁺ y → y ~ℝ⁰⁺ x + symmetric-sim-ℝ⁰⁺ _ _ = symmetric-sim-ℝ +``` diff --git a/src/real-numbers/square-roots-nonnegative-real-numbers.lagda.md b/src/real-numbers/square-roots-nonnegative-real-numbers.lagda.md index a9576b242d4..154237168d1 100644 --- a/src/real-numbers/square-roots-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/square-roots-nonnegative-real-numbers.lagda.md @@ -54,6 +54,7 @@ open import real-numbers.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.rational-real-numbers +open import real-numbers.similarity-nonnegative-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.squares-real-numbers ``` @@ -184,7 +185,7 @@ module _ (p , pImports + +```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.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.logical-equivalences +open import foundation.propositional-truncations +open import foundation.transport-along-identifications +open import foundation.universe-levels + +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.strict-inequality-real-numbers +``` + + + +## Idea + +This file describes lemmas about +[strict inequalities](real-numbers.strict-inequality-real-numbers.md) of +[real numbers](real-numbers.dedekind-real-numbers.md) related to +[addition](real-numbers.addition-real-numbers.md) and +[subtraction](real-numbers.difference-real-numbers.md). + +## Lemmas + +### Strict inequality on the real numbers is translation invariant + +```agda +module _ + {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) + where + + opaque + unfolding add-ℝ le-ℝ + + preserves-le-right-add-ℝ : le-ℝ x y → le-ℝ (x +ℝ z) (y +ℝ z) + preserves-le-right-add-ℝ x Date: Fri, 7 Nov 2025 15:01:52 -0800 Subject: [PATCH 038/134] Progress --- ...lue-closed-intervals-real-numbers.lagda.md | 2 -- .../absolute-value-real-numbers.lagda.md | 16 +++------ .../distance-real-numbers.lagda.md | 16 ++++----- ...nequalities-addition-real-numbers.lagda.md | 4 --- .../inequality-real-numbers.lagda.md | 2 +- .../metric-space-of-real-numbers.lagda.md | 8 ----- ...tiplication-positive-real-numbers.lagda.md | 4 +-- .../nonnegative-real-numbers.lagda.md | 27 ++++++++------- .../positive-real-numbers.lagda.md | 4 +-- .../similarity-positive-real-numbers.lagda.md | 34 +++++++++++++++++++ ...nequalities-addition-real-numbers.lagda.md | 4 --- .../strict-inequality-real-numbers.lagda.md | 2 +- 12 files changed, 67 insertions(+), 56 deletions(-) create mode 100644 src/real-numbers/similarity-positive-real-numbers.lagda.md diff --git a/src/real-numbers/absolute-value-closed-intervals-real-numbers.lagda.md b/src/real-numbers/absolute-value-closed-intervals-real-numbers.lagda.md index f040689b7c2..634f6c90343 100644 --- a/src/real-numbers/absolute-value-closed-intervals-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-closed-intervals-real-numbers.lagda.md @@ -49,8 +49,6 @@ abstract leq-ℝ (abs-ℝ z) (max-abs-closed-interval-ℝ [x,y]) leq-max-abs-is-in-closed-interval-ℝ ((x , y) , x≤y) z (x≤z , z≤y) = leq-abs-leq-leq-neg-ℝ - ( z) - ( max-ℝ (neg-ℝ x) y) ( transitive-leq-ℝ _ _ _ (leq-right-max-ℝ _ _) z≤y) ( transitive-leq-ℝ _ _ _ (leq-left-max-ℝ _ _) (neg-leq-ℝ x≤z)) ``` diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index d31b66d8b89..8d3c38266f8 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -66,7 +66,7 @@ opaque ### The absolute value of zero is zero ```agda -opaque +abstract opaque unfolding abs-ℝ abs-zero-ℝ : abs-ℝ zero-ℝ = zero-ℝ @@ -76,7 +76,7 @@ opaque ### The absolute value preserves similarity ```agda -opaque +abstract opaque unfolding abs-ℝ preserves-sim-abs-ℝ : @@ -89,7 +89,7 @@ opaque ### The absolute value of a real number is nonnegative ```agda -opaque +abstract opaque unfolding abs-ℝ leq-ℝ max-ℝ neg-ℚ neg-ℝ real-ℚ is-nonnegative-abs-ℝ : {l : Level} → (x : ℝ l) → is-nonnegative-ℝ (abs-ℝ x) @@ -210,10 +210,10 @@ module _ ```agda module _ - {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} where - opaque + abstract opaque unfolding abs-ℝ leq-abs-leq-leq-neg-ℝ : leq-ℝ x y → leq-ℝ (neg-ℝ x) y → leq-ℝ (abs-ℝ x) y @@ -231,8 +231,6 @@ module _ triangle-inequality-abs-ℝ : leq-ℝ (abs-ℝ (x +ℝ y)) (abs-ℝ x +ℝ abs-ℝ y) triangle-inequality-abs-ℝ = leq-abs-leq-leq-neg-ℝ - ( x +ℝ y) - ( abs-ℝ x +ℝ abs-ℝ y) ( preserves-leq-add-ℝ (leq-abs-ℝ x) (leq-abs-ℝ y)) ( inv-tr ( λ z → leq-ℝ z (abs-ℝ x +ℝ abs-ℝ y)) @@ -259,8 +257,6 @@ module _ ( abs-ℝ x) ( abs-ℝ y) ( leq-abs-leq-leq-neg-ℝ - ( x) - ( abs-ℝ y +ℝ real-ℚ⁺ d) ( transitive-leq-ℝ ( x) ( y +ℝ real-ℚ⁺ d) @@ -286,8 +282,6 @@ module _ ( x) ( right-leq-real-bound-neighborhood-ℝ d x y I)))) ( leq-abs-leq-leq-neg-ℝ - ( y) - ( abs-ℝ x +ℝ real-ℚ⁺ d) ( transitive-leq-ℝ ( y) ( x +ℝ real-ℚ⁺ d) diff --git a/src/real-numbers/distance-real-numbers.lagda.md b/src/real-numbers/distance-real-numbers.lagda.md index df3a005ee36..1f779167f02 100644 --- a/src/real-numbers/distance-real-numbers.lagda.md +++ b/src/real-numbers/distance-real-numbers.lagda.md @@ -83,11 +83,13 @@ nonnegative-dist-ℝ x y = (dist-ℝ x y , is-nonnegative-dist-ℝ x y) ### Relationship to the metric space of real numbers -Two real numbers `x` and `y` are in an `ε`-neighborhood of each other if and -only if their distance is at most `ε`. +Two real numbers `x` and `y` are in an `ε`-neighborhood of each other in the +[metric space of real numbers](real-numbers.metric-space-of-real-numbers.md) +[if and only if](foundation.logical-equivalences.md) their distance is +[at most](real-numbers.inequality-real-numbers.md) `ε`. ```agda -opaque +abstract opaque unfolding leq-ℝ neighborhood-ℝ diff-bound-neighborhood-ℝ : @@ -125,8 +127,6 @@ abstract dist-ℝ x y ≤-ℝ real-ℚ⁺ d leq-dist-neighborhood-ℝ d⁺@(d , _) x y H = leq-abs-leq-leq-neg-ℝ - ( x -ℝ y) - ( real-ℚ d) ( diff-bound-neighborhood-ℝ d⁺ x y H) ( inv-tr ( λ z → leq-ℝ z (real-ℚ d)) @@ -236,8 +236,6 @@ abstract dist-ℝ x y ≤-ℝ z leq-dist-leq-diff-ℝ x y z x-y≤z y-x≤z = leq-abs-leq-leq-neg-ℝ - ( _) - ( z) ( x-y≤z) ( inv-tr (λ w → leq-ℝ w z) (distributive-neg-diff-ℝ _ _) y-x≤z) @@ -259,7 +257,7 @@ abstract preserves-dist-left-add-ℝ : {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → sim-ℝ - ( dist-ℝ (add-ℝ x y) (add-ℝ x z)) + ( dist-ℝ (x +ℝ y) (x +ℝ z)) ( dist-ℝ y z) preserves-dist-left-add-ℝ x y z = similarity-reasoning-ℝ @@ -280,7 +278,7 @@ abstract preserves-dist-right-add-ℝ : {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) → sim-ℝ - ( dist-ℝ (add-ℝ x z) (add-ℝ y z)) + ( dist-ℝ (x +ℝ z) (y +ℝ z)) ( dist-ℝ x y) preserves-dist-right-add-ℝ z x y = similarity-reasoning-ℝ diff --git a/src/real-numbers/inequalities-addition-real-numbers.lagda.md b/src/real-numbers/inequalities-addition-real-numbers.lagda.md index 654f922bc10..aa5f3ad62ec 100644 --- a/src/real-numbers/inequalities-addition-real-numbers.lagda.md +++ b/src/real-numbers/inequalities-addition-real-numbers.lagda.md @@ -73,10 +73,6 @@ module _ reflects-leq-right-add-ℝ : leq-ℝ (x +ℝ z) (y +ℝ z) → leq-ℝ x y reflects-leq-right-add-ℝ x+z≤y+z = preserves-leq-sim-ℝ - ( (x +ℝ z) -ℝ z) - ( x) - ( (y +ℝ z) -ℝ z) - ( y) ( cancel-right-add-diff-ℝ x z) ( cancel-right-add-diff-ℝ y z) ( preserves-leq-right-add-ℝ (neg-ℝ z) (x +ℝ z) (y +ℝ z) x+z≤y+z) diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index d9b18435f16..d0a0cd049c4 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -337,7 +337,7 @@ module _ module _ {l1 l2 l3 l4 : Level} - (x1 : ℝ l1) (x2 : ℝ l2) (y1 : ℝ l3) (y2 : ℝ l4) + {x1 : ℝ l1} {x2 : ℝ l2} {y1 : ℝ l3} {y2 : ℝ l4} (x1~x2 : sim-ℝ x1 x2) (y1~y2 : sim-ℝ y1 y2) where diff --git a/src/real-numbers/metric-space-of-real-numbers.lagda.md b/src/real-numbers/metric-space-of-real-numbers.lagda.md index 5afe6b7b568..7a648355720 100644 --- a/src/real-numbers/metric-space-of-real-numbers.lagda.md +++ b/src/real-numbers/metric-space-of-real-numbers.lagda.md @@ -355,10 +355,6 @@ module _ ( x') ( y') ( preserves-leq-sim-ℝ - ( x) - ( x') - ( y +ℝ real-ℚ⁺ d) - ( y' +ℝ real-ℚ⁺ d) ( x~x') ( preserves-sim-right-add-ℝ ( real-ℚ⁺ d) @@ -367,10 +363,6 @@ module _ ( y~y')) ( left-leq-real-bound-neighborhood-ℝ d x y H)) ( preserves-leq-sim-ℝ - ( y) - ( y') - ( x +ℝ real-ℚ⁺ d) - ( x' +ℝ real-ℚ⁺ d) ( y~y') ( preserves-sim-right-add-ℝ ( real-ℚ⁺ d) diff --git a/src/real-numbers/multiplication-positive-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-real-numbers.lagda.md index 0c7aeb53076..ab63080b992 100644 --- a/src/real-numbers/multiplication-positive-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-real-numbers.lagda.md @@ -123,7 +123,7 @@ abstract {l1 l2 l3 : Level} (x : ℝ⁺ l1) (y : ℝ l2) (z : ℝ l3) → le-ℝ (real-ℝ⁺ x *ℝ y) (real-ℝ⁺ x *ℝ z) → le-ℝ y z reflects-le-left-mul-ℝ⁺ x y z xy @@ -102,8 +102,12 @@ upper-cut-ℝ⁰⁺ (x , _) = upper-cut-ℝ x is-in-upper-cut-ℝ⁰⁺ : {l : Level} → ℝ⁰⁺ l → ℚ → UU l is-in-upper-cut-ℝ⁰⁺ (x , _) = is-in-upper-cut-ℝ x +is-inhabited-upper-cut-ℝ⁰⁺ : + {l : Level} (x : ℝ⁰⁺ l) → is-inhabited-subtype (upper-cut-ℝ⁰⁺ x) +is-inhabited-upper-cut-ℝ⁰⁺ (x , _) = is-inhabited-upper-cut-ℝ x + is-rounded-upper-cut-ℝ⁰⁺ : - {l : Level} → (x : ℝ⁰⁺ l) (r : ℚ) → + {l : Level} (x : ℝ⁰⁺ l) (r : ℚ) → (is-in-upper-cut-ℝ⁰⁺ x r ↔ exists ℚ (λ q → le-ℚ-Prop q r ∧ upper-cut-ℝ⁰⁺ x q)) is-rounded-upper-cut-ℝ⁰⁺ (x , _) = is-rounded-upper-cut-ℝ x ``` @@ -163,8 +167,8 @@ abstract ( 0≤x) ( le-real-is-in-upper-cut-ℚ x xImports + +```agda +open import foundation.universe-levels +open import foundation.propositions +open import real-numbers.positive-real-numbers +open import real-numbers.similarity-real-numbers +open import foundation.dependent-pair-types +``` + + + +## Idea + +Two [positive](real-numbers.positive-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md) are +{{#concept "similar" Disambiguation="positive real numbers" Agda=sim-ℝ⁺}} if +they are [similar](real-numbers.similarity-real-numbers.md) as real numbers. + +## Definition + +```agda +sim-prop-ℝ⁺ : {l1 l2 : Level} → ℝ⁺ l1 → ℝ⁺ l2 → Prop (l1 ⊔ l2) +sim-prop-ℝ⁺ (x , _) (y , _) = sim-prop-ℝ x y + +sim-ℝ⁺ : {l1 l2 : Level} → ℝ⁺ l1 → ℝ⁺ l2 → UU (l1 ⊔ l2) +sim-ℝ⁺ (x , _) (y , _) = sim-ℝ x y +``` diff --git a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md b/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md index 978356cd75b..e28ec7bda1b 100644 --- a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md @@ -131,10 +131,6 @@ module _ reflects-le-right-add-ℝ : le-ℝ (x +ℝ z) (y +ℝ z) → le-ℝ x y reflects-le-right-add-ℝ x+z Date: Fri, 7 Nov 2025 15:07:38 -0800 Subject: [PATCH 039/134] Progress --- .../powers-positive-rational-numbers.lagda.md | 4 ++-- ...ic-spaces-are-uniformly-continuous.lagda.md | 18 ++++++++++-------- src/real-numbers.lagda.md | 1 + .../nonnegative-real-numbers.lagda.md | 4 ++-- .../similarity-positive-real-numbers.lagda.md | 5 +++-- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index 1f3932919c6..08a63343eba 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -197,8 +197,8 @@ abstract Σ ℕ (λ n → le-ℚ b (rational-ℚ⁺ (power-ℚ⁺ n q))) bound-unbounded-power-greater-than-one-ℚ⁺ q⁺@(q , _) b 1Imports ```agda -open import foundation.universe-levels +open import foundation.dependent-pair-types open import foundation.propositions +open import foundation.universe-levels + open import real-numbers.positive-real-numbers open import real-numbers.similarity-real-numbers -open import foundation.dependent-pair-types ``` From 007d5876181591352e3536ca324d4fc69dcb13e1 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 15:59:13 -0800 Subject: [PATCH 040/134] Progress --- ...ddition-positive-rational-numbers.lagda.md | 8 +- ...ive-and-negative-rational-numbers.lagda.md | 8 +- ...closed-intervals-rational-numbers.lagda.md | 44 ++--- .../negative-rational-numbers.lagda.md | 18 +- ...ive-and-negative-rational-numbers.lagda.md | 12 +- .../positive-rational-numbers.lagda.md | 9 +- ...wers-nonnegative-rational-numbers.lagda.md | 2 +- .../squares-rational-numbers.lagda.md | 2 +- ...quality-positive-rational-numbers.lagda.md | 6 +- ...trict-inequality-rational-numbers.lagda.md | 11 +- .../located-metric-spaces.lagda.md | 5 +- src/real-numbers.lagda.md | 1 + .../addition-real-numbers.lagda.md | 104 +++-------- .../binary-maximum-real-numbers.lagda.md | 161 ++--------------- ...lication-nonnegative-real-numbers.lagda.md | 3 +- ...tiplication-positive-real-numbers.lagda.md | 6 +- .../multiplication-real-numbers.lagda.md | 32 ++-- ...ve-inverses-positive-real-numbers.lagda.md | 17 +- .../negation-real-numbers.lagda.md | 13 -- .../nonnegative-real-numbers.lagda.md | 7 - ...ional-lower-dedekind-real-numbers.lagda.md | 2 +- ...ional-upper-dedekind-real-numbers.lagda.md | 2 +- ...-from-lower-dedekind-real-numbers.lagda.md | 8 +- ...-from-upper-dedekind-real-numbers.lagda.md | 11 +- ...short-binary-maximum-real-numbers.lagda.md | 166 ++++++++++++++++++ ...re-roots-nonnegative-real-numbers.lagda.md | 8 +- .../squares-real-numbers.lagda.md | 2 - .../strict-inequality-real-numbers.lagda.md | 5 +- 28 files changed, 303 insertions(+), 370 deletions(-) create mode 100644 src/real-numbers/short-binary-maximum-real-numbers.lagda.md diff --git a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md index 7e1cf13e5b6..78b872ffe94 100644 --- a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md @@ -334,16 +334,16 @@ module _ ((d : ℚ⁺) → leq-ℚ x (y +ℚ (rational-ℚ⁺ d))) → leq-ℚ x y leq-leq-add-positive-ℚ H = rec-coproduct - ( λ I → + ( λ yImports ```agda -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 open import foundation.dependent-pair-types open import foundation.disjoint-subtypes open import foundation.disjunction -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.negation -open import foundation.propositional-truncations -open import foundation.propositions 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.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.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.similarity-real-numbers open import real-numbers.upper-dedekind-real-numbers ``` diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index c2f3447dd1e..fcb7e126e0e 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -9,8 +9,6 @@ module real-numbers.nonnegative-real-numbers where
Imports ```agda -open import elementary-number-theory.addition-nonnegative-rational-numbers -open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers @@ -20,17 +18,13 @@ 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.empty-types open import foundation.existential-quantification -open import foundation.function-types open import foundation.functoriality-propositional-truncation open import foundation.identity-types open import foundation.inhabited-subtypes 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 @@ -45,7 +39,6 @@ open import real-numbers.difference-real-numbers open import real-numbers.inequalities-addition-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.similarity-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers/rational-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/rational-lower-dedekind-real-numbers.lagda.md index 5176279b294..3dbae48f3b7 100644 --- a/src/real-numbers/rational-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/rational-lower-dedekind-real-numbers.lagda.md @@ -50,7 +50,7 @@ module _ pr1 (is-rounded-cut-lower-real-ℚ p) pImports + +```agda +open import elementary-number-theory.positive-rational-numbers + +open import foundation.binary-transport +open import foundation.dependent-pair-types +open import foundation.universe-levels + +open import metric-spaces.metric-space-of-short-functions-metric-spaces +open import metric-spaces.short-functions-metric-spaces + +open import order-theory.least-upper-bounds-large-posets + +open import real-numbers.addition-real-numbers +open import real-numbers.binary-maximum-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequality-real-numbers +open import real-numbers.metric-space-of-real-numbers +open import real-numbers.positive-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.strict-inequality-real-numbers +``` + +
+ +## Idea + +For any `a : ℝ`, the +[binary maximum](real-numbers.binary-maximum-real-numbers.md) with `a` is a +[short function](metric-spaces.short-functions-metric-spaces.md) `ℝ → ℝ` for the +[standard real metric structure](real-numbers.metric-space-of-real-numbers.md). +Moreover, the map `x ↦ max-ℝ x` is a short function from `ℝ` into the +[metric space of short functions](metric-spaces.metric-space-of-short-functions-metric-spaces.md) +of `ℝ`. + +## Proof + +### The binary maximum preserves lower neighborhoods + +```agda +module _ + {l1 l2 l3 : Level} (d : ℚ⁺) + (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) + where + + abstract + preserves-lower-neighborhood-leq-left-max-ℝ : + leq-ℝ y (z +ℝ real-ℚ⁺ d) → + leq-ℝ + ( max-ℝ x y) + ( (max-ℝ x z) +ℝ real-ℚ⁺ d) + preserves-lower-neighborhood-leq-left-max-ℝ z≤y+d = + leq-is-least-binary-upper-bound-Large-Poset + ( ℝ-Large-Poset) + ( x) + ( y) + ( is-least-binary-upper-bound-max-ℝ x y) + ( (max-ℝ x z) +ℝ real-ℚ⁺ d) + ( ( transitive-leq-ℝ + ( x) + ( max-ℝ x z) + ( max-ℝ x z +ℝ real-ℚ⁺ d) + ( leq-le-ℝ + ( le-left-add-real-ℝ⁺ + ( max-ℝ x z) + ( positive-real-ℚ⁺ d))) + ( leq-left-max-ℝ x z)) , + ( transitive-leq-ℝ + ( y) + ( z +ℝ real-ℚ⁺ d) + ( max-ℝ x z +ℝ real-ℚ⁺ d) + ( preserves-leq-right-add-ℝ + ( real-ℚ⁺ d) + ( z) + ( max-ℝ x z) + ( leq-right-max-ℝ x z)) + ( z≤y+d))) + + preserves-lower-neighborhood-leq-right-max-ℝ : + leq-ℝ y (z +ℝ real-ℚ⁺ d) → + leq-ℝ + ( max-ℝ y x) + ( (max-ℝ z x) +ℝ real-ℚ⁺ d) + preserves-lower-neighborhood-leq-right-max-ℝ z≤y+d = + binary-tr + ( λ u v → leq-ℝ u (v +ℝ real-ℚ⁺ d)) + ( commutative-max-ℝ x y) + ( commutative-max-ℝ x z) + ( preserves-lower-neighborhood-leq-left-max-ℝ z≤y+d) +``` + +### The maximum with a real number is a short function `ℝ → ℝ` + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) + where + + abstract + is-short-function-left-max-ℝ : + is-short-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( max-ℝ x) + is-short-function-left-max-ℝ d y z Nyz = + neighborhood-real-bound-each-leq-ℝ + ( d) + ( max-ℝ x y) + ( max-ℝ x z) + ( preserves-lower-neighborhood-leq-left-max-ℝ d x y z + ( left-leq-real-bound-neighborhood-ℝ d y z Nyz)) + ( preserves-lower-neighborhood-leq-left-max-ℝ d x z y + ( right-leq-real-bound-neighborhood-ℝ d y z Nyz)) + + short-left-max-ℝ : + short-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + short-left-max-ℝ = + (max-ℝ x , is-short-function-left-max-ℝ) +``` + +### The binary maximum is a short function from `ℝ` to the metric space of short functions `ℝ → ℝ` + +```agda +module _ + {l1 l2 : Level} + where + + abstract + is-short-function-short-left-max-ℝ : + is-short-function-Metric-Space + ( metric-space-ℝ l1) + ( metric-space-of-short-functions-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2))) + ( short-left-max-ℝ) + is-short-function-short-left-max-ℝ d x y Nxy z = + neighborhood-real-bound-each-leq-ℝ + ( d) + ( max-ℝ x z) + ( max-ℝ y z) + ( preserves-lower-neighborhood-leq-right-max-ℝ d z x y + ( left-leq-real-bound-neighborhood-ℝ d x y Nxy)) + ( preserves-lower-neighborhood-leq-right-max-ℝ d z y x + ( right-leq-real-bound-neighborhood-ℝ d x y Nxy)) + + short-max-ℝ : + short-function-Metric-Space + ( metric-space-ℝ l1) + ( metric-space-of-short-functions-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2))) + short-max-ℝ = + (short-left-max-ℝ , is-short-function-short-left-max-ℝ) +``` diff --git a/src/real-numbers/square-roots-nonnegative-real-numbers.lagda.md b/src/real-numbers/square-roots-nonnegative-real-numbers.lagda.md index 154237168d1..dce82321dee 100644 --- a/src/real-numbers/square-roots-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/square-roots-nonnegative-real-numbers.lagda.md @@ -164,7 +164,6 @@ module _ is-pos-p = is-positive-le-ℚ⁺ ( q *ℚ q , is-positive-mul-ℚ is-pos-q is-pos-q) - ( p) ( q² Date: Fri, 7 Nov 2025 17:01:54 -0800 Subject: [PATCH 041/134] Progress --- .../metrics-of-metric-spaces.lagda.md | 1 + .../absolute-value-real-numbers.lagda.md | 2 +- .../addition-real-numbers.lagda.md | 4 +- ...thmetically-located-dedekind-cuts.lagda.md | 6 +- ...ompleteness-dedekind-real-numbers.lagda.md | 8 -- .../dedekind-real-numbers.lagda.md | 9 +- .../distance-real-numbers.lagda.md | 2 +- ...d-rational-intervals-real-numbers.lagda.md | 13 +- ...nequalities-addition-real-numbers.lagda.md | 2 +- ...ality-lower-dedekind-real-numbers.lagda.md | 2 - .../inequality-real-numbers.lagda.md | 14 +- ...nuity-multiplication-real-numbers.lagda.md | 2 - .../metric-space-of-real-numbers.lagda.md | 5 +- ...tiplication-negative-real-numbers.lagda.md | 12 +- ...lication-nonnegative-real-numbers.lagda.md | 14 +- ...tiplication-positive-real-numbers.lagda.md | 32 ++--- .../multiplication-real-numbers.lagda.md | 24 ++-- ...ve-inverses-positive-real-numbers.lagda.md | 31 ++-- ...lower-upper-dedekind-real-numbers.lagda.md | 21 ++- .../negation-real-numbers.lagda.md | 4 +- .../positive-real-numbers.lagda.md | 8 +- .../rational-real-numbers.lagda.md | 2 +- .../similarity-real-numbers.lagda.md | 14 +- ...re-roots-nonnegative-real-numbers.lagda.md | 34 ++--- .../squares-real-numbers.lagda.md | 10 +- ...nequalities-addition-real-numbers.lagda.md | 33 ++++- .../strict-inequality-real-numbers.lagda.md | 135 +++++------------- 27 files changed, 180 insertions(+), 264 deletions(-) diff --git a/src/metric-spaces/metrics-of-metric-spaces.lagda.md b/src/metric-spaces/metrics-of-metric-spaces.lagda.md index 7a8cea0f775..d113ff5bac4 100644 --- a/src/metric-spaces/metrics-of-metric-spaces.lagda.md +++ b/src/metric-spaces/metrics-of-metric-spaces.lagda.md @@ -28,6 +28,7 @@ open import real-numbers.inequality-nonnegative-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.saturation-inequality-nonnegative-real-numbers open import real-numbers.similarity-nonnegative-real-numbers +open import real-numbers.strict-inequalities-addition-real-numbers open import real-numbers.strict-inequality-nonnegative-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index 8d3c38266f8..0ebbeb29d43 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -107,7 +107,7 @@ nonnegative-abs-ℝ x = (abs-ℝ x , is-nonnegative-abs-ℝ x) ### The absolute value of the negation of a real number is its absolute value ```agda -opaque +abstract opaque unfolding abs-ℝ abs-neg-ℝ : {l : Level} → (x : ℝ l) → abs-ℝ (neg-ℝ x) = abs-ℝ x diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index fa74b6a4c7d..fef1ddfc687 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -88,8 +88,8 @@ module _ { qx} { py} { qy} - ( le-lower-upper-cut-ℝ x px qx px @@ -62,7 +50,7 @@ The {{#concept "standard ordering" Disambiguation="real numbers" Agda=leq-ℝ}} the [real numbers](real-numbers.dedekind-real-numbers.md) is defined as the [lower cut](real-numbers.lower-dedekind-real-numbers.md) of one being a [subset](foundation-core.subtypes.md) of the lower cut of the other. I.e., -`x ≤ y` if `lower-cut x ⊆ lower-cut y `. This is the definition used in +`x ≤ y` if `lower-cut-ℝ x ⊆ lower-cut-ℝ y `. This is the definition used in {{#cite UF13}}, section 11.2.1. Inequality of the real numbers is equivalently described by the _upper_ cut of diff --git a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md index 7b3d8f8c669..ed960956fe8 100644 --- a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md +++ b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md @@ -258,8 +258,6 @@ module _ by preserves-leq-right-mul-ℝ⁰⁺ ( nonnegative-real-ℚ⁺ ε) - ( my +ℝ mx) - ( real-ℚ q) ( leq-le-ℝ (le-real-is-in-upper-cut-ℚ (my +ℝ mx) my+mxImports ```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 open import foundation.dependent-pair-types @@ -28,26 +21,19 @@ open import foundation.existential-quantification open import foundation.function-types open import foundation.functoriality-cartesian-product-types open import foundation.functoriality-disjunction -open import foundation.identity-types open import foundation.large-binary-relations 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 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 - 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 @@ -81,34 +67,28 @@ le-prop-ℝ x y = (le-ℝ x y , is-prop-le-ℝ x y) ### Strict inequality on the reals implies inequality ```agda -opaque +abstract opaque unfolding le-ℝ leq-ℝ leq-le-ℝ : {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ x y → leq-ℝ x y leq-le-ℝ {x = x} {y = y} x Date: Fri, 7 Nov 2025 17:07:50 -0800 Subject: [PATCH 042/134] Mark more things abstract opaque --- .../binary-minimum-real-numbers.lagda.md | 4 ++-- ...ompleteness-dedekind-real-numbers.lagda.md | 4 ++-- .../closed-intervals-real-numbers.lagda.md | 2 +- .../inequality-real-numbers.lagda.md | 22 +++++++++---------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/real-numbers/binary-minimum-real-numbers.lagda.md b/src/real-numbers/binary-minimum-real-numbers.lagda.md index 121bf5d42b9..b0ae4c06407 100644 --- a/src/real-numbers/binary-minimum-real-numbers.lagda.md +++ b/src/real-numbers/binary-minimum-real-numbers.lagda.md @@ -66,7 +66,7 @@ module _ (x : ℝ l1) (y : ℝ l2) where - opaque + abstract opaque unfolding leq-ℝ min-ℝ is-greatest-binary-lower-bound-min-ℝ : @@ -155,7 +155,7 @@ module _ {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) where - opaque + abstract opaque unfolding min-ℝ approximate-above-min-ℝ : diff --git a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md index 57f47ac4dda..ab073ba3c24 100644 --- a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md @@ -299,7 +299,7 @@ module _ is-inhabited-upper-cut-lim-cauchy-approximation-ℝ , is-rounded-upper-cut-lim-cauchy-approximation-ℝ - opaque + abstract opaque unfolding neighborhood-ℝ is-disjoint-cut-lim-cauchy-approximation-ℝ : @@ -411,7 +411,7 @@ module _ {l : Level} (x : cauchy-approximation-ℝ l) where - opaque + abstract opaque unfolding le-ℝ lim-cauchy-approximation-ℝ is-limit-lim-cauchy-approximation-ℝ : diff --git a/src/real-numbers/closed-intervals-real-numbers.lagda.md b/src/real-numbers/closed-intervals-real-numbers.lagda.md index 846087aa483..d8460f5bdc8 100644 --- a/src/real-numbers/closed-intervals-real-numbers.lagda.md +++ b/src/real-numbers/closed-intervals-real-numbers.lagda.md @@ -90,7 +90,7 @@ unit-closed-interval-ℝ = ### Closed intervals in the real numbers are closed in the metric space of real numbers ```agda -opaque +abstract opaque unfolding leq-ℝ neighborhood-ℝ is-closed-subset-closed-interval-ℝ : diff --git a/src/real-numbers/inequality-real-numbers.lagda.md b/src/real-numbers/inequality-real-numbers.lagda.md index 89c0fbbb574..4ece5ae59ad 100644 --- a/src/real-numbers/inequality-real-numbers.lagda.md +++ b/src/real-numbers/inequality-real-numbers.lagda.md @@ -127,7 +127,7 @@ module _ {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) where - opaque + abstract opaque unfolding leq-ℝ leq-ℝ' leq'-leq-ℝ : leq-ℝ x y → leq-ℝ' x y @@ -175,7 +175,7 @@ module _ ### Inequality on the real numbers is reflexive ```agda -opaque +abstract opaque unfolding leq-ℝ refl-leq-ℝ : {l : Level} (x : ℝ l) → leq-ℝ x x @@ -184,7 +184,7 @@ opaque leq-eq-ℝ : {l : Level} {x y : ℝ l} → x = y → leq-ℝ x y leq-eq-ℝ {x = x} refl = refl-leq-ℝ x -opaque +abstract opaque unfolding leq-ℝ sim-ℝ leq-sim-ℝ : {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → sim-ℝ x y → leq-ℝ x y @@ -194,7 +194,7 @@ opaque ### Inequality on the real numbers is antisymmetric ```agda -opaque +abstract opaque unfolding leq-ℝ sim-ℝ sim-antisymmetric-leq-ℝ : @@ -215,7 +215,7 @@ module _ (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) where - opaque + abstract opaque unfolding leq-ℝ transitive-leq-ℝ : leq-ℝ y z → leq-ℝ x y → leq-ℝ x z @@ -244,7 +244,7 @@ antisymmetric-leq-Large-Poset ℝ-Large-Poset = antisymmetric-leq-ℝ ### Similarity in the large poset of real numbers is equivalent to similarity ```agda -opaque +abstract opaque unfolding leq-ℝ sim-ℝ sim-sim-leq-ℝ : @@ -280,7 +280,7 @@ module _ {x y : ℚ} where - opaque + abstract opaque unfolding leq-ℝ real-ℚ preserves-leq-real-ℚ : leq-ℚ x y → leq-ℝ (real-ℚ x) (real-ℚ y) @@ -300,7 +300,7 @@ module _ {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} where - opaque + abstract opaque unfolding leq-ℝ leq-ℝ' neg-ℝ neg-leq-ℝ : leq-ℝ x y → leq-ℝ (neg-ℝ y) (neg-ℝ x) @@ -314,7 +314,7 @@ module _ {l1 l2 l3 : Level} {z : ℝ l1} {x : ℝ l2} {y : ℝ l3} (x~y : sim-ℝ x y) where - opaque + abstract opaque unfolding leq-ℝ sim-ℝ preserves-leq-left-sim-ℝ : leq-ℝ x z → leq-ℝ y z @@ -343,7 +343,7 @@ module _ {l : Level} (x : ℝ l) (q : ℚ) where - opaque + abstract opaque unfolding leq-ℝ leq-ℝ' real-ℚ not-in-lower-cut-leq-ℝ : leq-ℝ x (real-ℚ q) → ¬ (is-in-lower-cut-ℝ x q) @@ -376,7 +376,7 @@ module _ {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) where - opaque + abstract opaque unfolding leq-ℝ' leq-leq-rational-ℝ : From 04ccb85e348ae65c7afe3dd091e99585f0a20d4a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 17:09:00 -0800 Subject: [PATCH 043/134] Fix indent --- src/real-numbers/addition-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index fef1ddfc687..356d51654fd 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -97,7 +97,7 @@ module _ let open do-syntax-trunc-Prop - (∃ + ( ∃ ( ℚ × ℚ) ( close-bounds-lower-upper-ℝ ( lower-real-add-ℝ) From 1d65b0a47540f785cc9142871450b6018706fbcb Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 17:13:56 -0800 Subject: [PATCH 044/134] Fix title --- src/real-numbers/short-binary-maximum-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/short-binary-maximum-real-numbers.lagda.md b/src/real-numbers/short-binary-maximum-real-numbers.lagda.md index 2ac42192c9c..5dd32621e15 100644 --- a/src/real-numbers/short-binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/short-binary-maximum-real-numbers.lagda.md @@ -1,4 +1,4 @@ -## The binary maximum of real numbers is a short function +# The binary maximum of real numbers is a short function ```agda {-# OPTIONS --lossy-unification #-} From 84dec2a5fc910c14f47edcb4457754f5cbe8d797 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 17:14:54 -0800 Subject: [PATCH 045/134] Fix --- src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md | 2 -- 1 file changed, 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 f70d4ca8b46..1592876b213 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -298,8 +298,6 @@ module _ ( p Date: Fri, 7 Nov 2025 17:20:11 -0800 Subject: [PATCH 046/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- ...equality-positive-rational-numbers.lagda.md | 2 +- ...licative-group-of-rational-numbers.lagda.md | 2 +- .../powers-positive-rational-numbers.lagda.md | 18 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md index d967080b3a1..5b51936f6a6 100644 --- a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md @@ -93,7 +93,7 @@ antisymmetric-leq-ℚ⁺ : is-antisymmetric leq-ℚ⁺ antisymmetric-leq-ℚ⁺ = antisymmetric-leq-Poset poset-ℚ⁺ ``` -### If `x = y`, `x ≤ y` +### If `x = y` then `x ≤ y` ```agda leq-eq-ℚ⁺ : {x y : ℚ⁺} → x = y → leq-ℚ⁺ x y diff --git a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md index b6fb3598c70..30f54cea5a3 100644 --- a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md @@ -200,7 +200,7 @@ invertible-diff-neq-ℚ : (a b : ℚ) → a ≠ b → ℚˣ invertible-diff-neq-ℚ a b a≠b = (b -ℚ a , is-invertible-diff-neq-ℚ a b a≠b) ``` -### If `|a| < b` for positive `b`, `b - a` is invertible +### If `|a| < b` and `b` is positive then `b - a` is invertible ```agda is-invertible-diff-le-abs-ℚ : diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index fc414c812b1..9e8992215fb 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -288,11 +288,11 @@ abstract by leq-eq-ℚ⁺ (distributive-power-add-ℚ⁺ k m ε) ≤ rational-power-ℚ⁺ k one-ℚ⁺ *ℚ rational-power-ℚ⁺ m ε by - preserves-leq-right-mul-ℚ⁺ - ( power-ℚ⁺ m ε) - ( _) - ( _) - ( preserves-leq-power-ℚ⁺ k ε one-ℚ⁺ ε≤1) + preserves-leq-right-mul-ℚ⁺ + ( power-ℚ⁺ m ε) + ( _) + ( _) + ( preserves-leq-power-ℚ⁺ k ε one-ℚ⁺ ε≤1) ≤ one-ℚ *ℚ rational-power-ℚ⁺ m ε by leq-eq-ℚ _ _ (ap-mul-ℚ (ap rational-ℚ⁺ (power-one-ℚ⁺ k)) refl) ≤ rational-power-ℚ⁺ m ε @@ -327,12 +327,12 @@ abstract rational-dist-ℚ (rational-ℚ⁺ (power-ℚ⁺ n ε)) zero-ℚ ≤ rational-abs-ℚ (rational-ℚ⁺ (power-ℚ⁺ n ε)) by - leq-eq-ℚ _ _ (ap rational-ℚ⁰⁺ (right-zero-law-dist-ℚ _)) + leq-eq-ℚ _ _ (ap rational-ℚ⁰⁺ (right-zero-law-dist-ℚ _)) ≤ rational-ℚ⁺ (power-ℚ⁺ n ε) by - leq-eq-ℚ _ _ - ( ap rational-ℚ⁰⁺ - ( abs-rational-ℚ⁰⁺ (nonnegative-ℚ⁺ (power-ℚ⁺ n ε)))) + leq-eq-ℚ _ _ + ( ap rational-ℚ⁰⁺ + ( abs-rational-ℚ⁰⁺ (nonnegative-ℚ⁺ (power-ℚ⁺ n ε)))) ≤ rational-ℚ⁺ (power-ℚ⁺ m ε) by leq-power-leq-one-ℚ⁺ ε (leq-le-ℚ ε<1) m n m≤n ≤ rational-ℚ⁺ δ From ed77ccd5cfae98e22e3ade4d3eee10bfe6fe00e4 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 17:27:11 -0800 Subject: [PATCH 047/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- src/real-numbers/powers-real-numbers.lagda.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/powers-real-numbers.lagda.md b/src/real-numbers/powers-real-numbers.lagda.md index aee3f51d45b..d7812a9177e 100644 --- a/src/real-numbers/powers-real-numbers.lagda.md +++ b/src/real-numbers/powers-real-numbers.lagda.md @@ -263,7 +263,7 @@ abstract by ap neg-ℝ (ap (λ m → power-ℝ m x) k2+1=n) ``` -### `|x|ⁿ=|xⁿ|` +### `|x|ⁿ = |xⁿ|` ```agda abstract @@ -302,8 +302,10 @@ abstract ( sim-raise-ℝ _ one-ℝ)) ( refl-leq-ℝ one-ℝ) preserves-leq-abs-power-ℝ (succ-ℕ n) x y |x|≤|y| = - let open inequality-reasoning-Large-Poset ℝ-Large-Poset - in chain-of-inequalities + let + open inequality-reasoning-Large-Poset ℝ-Large-Poset + in + chain-of-inequalities abs-ℝ (power-ℝ (succ-ℕ n) x) ≤ abs-ℝ (power-ℝ n x *ℝ x) by leq-eq-ℝ _ _ (ap abs-ℝ (power-succ-ℝ n x)) From cbda75f92ba888c60df9751b2215442dacff2542 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 20:55:17 -0800 Subject: [PATCH 048/134] Geometric series in the reals --- .../commutative-rings.lagda.md | 24 ++ ...etric-sequences-commutative-rings.lagda.md | 145 ++++++++++ ...metric-sequences-rational-numbers.lagda.md | 130 ++------- ...quality-positive-rational-numbers.lagda.md | 2 +- .../powers-positive-rational-numbers.lagda.md | 8 +- src/literature/100-theorems.lagda.md | 9 + src/real-numbers.lagda.md | 5 + .../absolute-value-real-numbers.lagda.md | 2 +- .../apartness-real-numbers.lagda.md | 90 ++++++- .../convergent-series-real-numbers.lagda.md | 40 +++ .../geometric-sequences-real-numbers.lagda.md | 252 ++++++++++++++++++ .../isometry-difference-real-numbers.lagda.md | 73 +++++ .../large-ring-of-real-numbers.lagda.md | 2 +- .../limits-sequences-real-numbers.lagda.md | 5 + ...ric-abelian-group-of-real-numbers.lagda.md | 44 +++ ...ositive-and-negative-real-numbers.lagda.md | 2 +- .../multiplication-real-numbers.lagda.md | 6 +- ...ive-inverses-nonzero-real-numbers.lagda.md | 43 ++- .../nonnegative-real-numbers.lagda.md | 11 +- .../nonzero-real-numbers.lagda.md | 52 ++++ src/real-numbers/powers-real-numbers.lagda.md | 28 +- ...real-sequences-approximating-zero.lagda.md | 16 +- src/real-numbers/series-real-numbers.lagda.md | 42 +++ 23 files changed, 875 insertions(+), 156 deletions(-) create mode 100644 src/real-numbers/convergent-series-real-numbers.lagda.md create mode 100644 src/real-numbers/geometric-sequences-real-numbers.lagda.md create mode 100644 src/real-numbers/isometry-difference-real-numbers.lagda.md create mode 100644 src/real-numbers/metric-abelian-group-of-real-numbers.lagda.md create mode 100644 src/real-numbers/series-real-numbers.lagda.md diff --git a/src/commutative-algebra/commutative-rings.lagda.md b/src/commutative-algebra/commutative-rings.lagda.md index a12e07d1feb..2fd1976b3d9 100644 --- a/src/commutative-algebra/commutative-rings.lagda.md +++ b/src/commutative-algebra/commutative-rings.lagda.md @@ -200,6 +200,13 @@ module _ right-subtraction-Commutative-Ring = right-subtraction-Ring ring-Commutative-Ring + ap-right-subtraction-Commutative-Ring : + {x x' y y' : type-Commutative-Ring} → x = x' → y = y' → + right-subtraction-Commutative-Ring x y = + right-subtraction-Commutative-Ring x' y' + ap-right-subtraction-Commutative-Ring = + ap-right-subtraction-Ring ring-Commutative-Ring + is-section-right-subtraction-Commutative-Ring : (x : type-Commutative-Ring) → ( add-Commutative-Ring' x ∘ @@ -659,3 +666,20 @@ module _ preserves-concat-add-list-Commutative-Ring = preserves-concat-add-list-Ring ring-Commutative-Ring ``` + +### The sum of `x - y` and `y - z` is `x - z` + +```agda +module _ + {l : Level} (R : Commutative-Ring l) + where + + add-right-subtraction-Commutative-Ring : + (x y z : type-Commutative-Ring R) → + add-Commutative-Ring R + ( right-subtraction-Commutative-Ring R x y) + ( right-subtraction-Commutative-Ring R y z) = + right-subtraction-Commutative-Ring R x z + add-right-subtraction-Commutative-Ring = + add-right-subtraction-Ab (ab-Commutative-Ring R) +``` diff --git a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md index 9343e05ed82..70d3a210a8f 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md @@ -10,7 +10,10 @@ module commutative-algebra.geometric-sequences-commutative-rings where open import commutative-algebra.commutative-rings open import commutative-algebra.commutative-semirings open import commutative-algebra.geometric-sequences-commutative-semirings +open import commutative-algebra.groups-of-units-commutative-rings +open import commutative-algebra.invertible-elements-commutative-rings open import commutative-algebra.powers-of-elements-commutative-rings +open import commutative-algebra.sums-of-finite-sequences-of-elements-commutative-rings open import elementary-number-theory.natural-numbers @@ -288,6 +291,11 @@ module _ ```agda module _ {l : Level} (R : Commutative-Ring l) (a r : type-Commutative-Ring R) + (let _*_ = mul-Commutative-Ring R) + (let _+_ = add-Commutative-Ring R) + (let _-_ = right-subtraction-Commutative-Ring R) + (let zero-R = zero-Commutative-Ring R) + (let one-R = one-Commutative-Ring R) where abstract @@ -307,4 +315,141 @@ module _ ( commutative-semiring-Commutative-Ring R) ( a) ( r) + + abstract + compute-sum-standard-geometric-fin-sequence-Commutative-Ring : + (H : + is-invertible-element-Commutative-Ring R + ( right-subtraction-Commutative-Ring R (one-Commutative-Ring R) r)) → + (n : ℕ) → + sum-standard-geometric-fin-sequence-Commutative-Ring R a r n = + mul-Commutative-Ring R + ( mul-Commutative-Ring R + ( a) + ( inv-is-invertible-element-Commutative-Ring R H)) + ( right-subtraction-Commutative-Ring R + ( one-Commutative-Ring R) + ( power-Commutative-Ring R n r)) + compute-sum-standard-geometric-fin-sequence-Commutative-Ring + (1/⟨1-r⟩ , H) 0 = + inv + ( equational-reasoning + (a * 1/⟨1-r⟩) * (one-R - one-R) + = (a * 1/⟨1-r⟩) * zero-R + by + ap-mul-Commutative-Ring R + ( refl) + ( right-inverse-law-add-Commutative-Ring R one-R) + = zero-R + by right-zero-law-mul-Commutative-Ring R _) + compute-sum-standard-geometric-fin-sequence-Commutative-Ring + (1/⟨1-r⟩ , H) (succ-ℕ n) = + equational-reasoning + sum-standard-geometric-fin-sequence-Commutative-Ring R a r (succ-ℕ n) + = + sum-standard-geometric-fin-sequence-Commutative-Ring R a r n + + seq-standard-geometric-sequence-Commutative-Ring R a r n + by + cons-sum-fin-sequence-type-Commutative-Ring R + ( n) + ( standard-geometric-fin-sequence-Commutative-Ring R + ( a) + ( r) + ( succ-ℕ n)) + ( refl) + = + ( (a * 1/⟨1-r⟩) * (one-R - power-Commutative-Ring R n r)) + + ( a * power-Commutative-Ring R n r) + by + ap-add-Commutative-Ring R + ( compute-sum-standard-geometric-fin-sequence-Commutative-Ring + ( 1/⟨1-r⟩ , H) + ( n)) + ( inv + ( htpy-mul-pow-standard-geometric-sequence-Commutative-Ring R + ( a) + ( r) + ( n))) + = + ( a * (1/⟨1-r⟩ * (one-R - power-Commutative-Ring R n r))) + + ( a * (one-R * power-Commutative-Ring R n r)) + by + ap-add-Commutative-Ring R + ( associative-mul-Commutative-Ring R _ _ _) + ( ap-mul-Commutative-Ring R + ( refl) + ( inv (left-unit-law-mul-Commutative-Ring R _))) + = + a * + ( (1/⟨1-r⟩ * (one-R - power-Commutative-Ring R n r)) + + (one-R * power-Commutative-Ring R n r)) + by inv (left-distributive-mul-add-Commutative-Ring R a _ _) + = + a * + ( ( 1/⟨1-r⟩ * (one-R - power-Commutative-Ring R n r)) + + ( (1/⟨1-r⟩ * (one-R - r)) * power-Commutative-Ring R n r)) + by + ap-mul-Commutative-Ring R + ( refl) + ( ap-add-Commutative-Ring R + ( refl) + ( ap-mul-Commutative-Ring R (inv (pr2 H)) refl)) + = + a * + ( ( 1/⟨1-r⟩ * (one-R - power-Commutative-Ring R n r)) + + ( 1/⟨1-r⟩ * ((one-R - r) * power-Commutative-Ring R n r))) + by + ap-mul-Commutative-Ring R + ( refl) + ( ap-add-Commutative-Ring R + ( refl) + ( associative-mul-Commutative-Ring R _ _ _)) + = + a * + ( 1/⟨1-r⟩ * + ( ( one-R - power-Commutative-Ring R n r) + + ( (one-R - r) * power-Commutative-Ring R n r))) + by + ap-mul-Commutative-Ring R + ( refl) + ( inv (left-distributive-mul-add-Commutative-Ring R _ _ _)) + = + ( a * 1/⟨1-r⟩) * + ( ( one-R - power-Commutative-Ring R n r) + + ( (one-R - r) * power-Commutative-Ring R n r)) + by inv (associative-mul-Commutative-Ring R _ _ _) + = + ( a * 1/⟨1-r⟩) * + ( ( one-R - power-Commutative-Ring R n r) + + ( (one-R * power-Commutative-Ring R n r) - + (r * power-Commutative-Ring R n r))) + by + ap-mul-Commutative-Ring R + ( refl) + ( ap-add-Commutative-Ring R + ( refl) + ( right-distributive-mul-right-subtraction-Commutative-Ring R + ( _) + ( _) + ( _))) + = + ( a * 1/⟨1-r⟩) * + ( ( one-R - power-Commutative-Ring R n r) + + ( power-Commutative-Ring R n r - + power-Commutative-Ring R (succ-ℕ n) r)) + by + ap-mul-Commutative-Ring R + ( refl) + ( ap-add-Commutative-Ring R + ( refl) + ( ap-right-subtraction-Commutative-Ring R + ( left-unit-law-mul-Commutative-Ring R _) + ( inv (power-succ-Commutative-Ring' R n r)))) + = + ( a * 1/⟨1-r⟩) * + ( one-R - power-Commutative-Ring R (succ-ℕ n) r) + by + ap-mul-Commutative-Ring R + ( refl) + ( add-right-subtraction-Commutative-Ring R _ _ _) ``` diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 21695e9d15a..87e5c0a29c7 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -115,102 +115,14 @@ module _ compute-sum-standard-geometric-fin-sequence-ℚ : (n : ℕ) → sum-standard-geometric-fin-sequence-ℚ a r n = - ( a *ℚ - ( (one-ℚ -ℚ power-ℚ n r) *ℚ - rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1))) - compute-sum-standard-geometric-fin-sequence-ℚ 0 = - inv - ( equational-reasoning - a *ℚ ((one-ℚ -ℚ one-ℚ) *ℚ _) - = a *ℚ (zero-ℚ *ℚ _) - by - ap-mul-ℚ - ( refl) - ( ap-mul-ℚ (right-inverse-law-add-ℚ one-ℚ) refl) - = a *ℚ zero-ℚ - by ap-mul-ℚ refl (left-zero-law-mul-ℚ _) - = zero-ℚ - by right-zero-law-mul-ℚ a) - compute-sum-standard-geometric-fin-sequence-ℚ (succ-ℕ n) = - let - 1/⟨1-r⟩ = rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) - in - equational-reasoning - sum-standard-geometric-fin-sequence-ℚ a r (succ-ℕ n) - = - sum-standard-geometric-fin-sequence-ℚ a r n +ℚ - seq-standard-geometric-sequence-ℚ a r n - by - cons-sum-fin-sequence-type-Commutative-Ring - ( commutative-ring-ℚ) - ( n) - ( _) - ( refl) - = - ( a *ℚ - ( (one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩)) +ℚ - ( a *ℚ power-ℚ n r) - by - ap-add-ℚ - ( compute-sum-standard-geometric-fin-sequence-ℚ n) - ( compute-standard-geometric-sequence-ℚ a r n) - = - a *ℚ - (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩) +ℚ power-ℚ n r) - by inv (left-distributive-mul-add-ℚ a _ _) - = - a *ℚ - ( (((one-ℚ -ℚ power-ℚ n r) *ℚ 1/⟨1-r⟩) +ℚ - (power-ℚ n r *ℚ (one-ℚ -ℚ r)) *ℚ 1/⟨1-r⟩)) - by - ap-mul-ℚ - ( refl) - ( ap-add-ℚ - ( refl) - ( inv - ( cancel-right-mul-div-ℚˣ _ - ( invertible-diff-neq-ℚ r one-ℚ r≠1)))) - = - a *ℚ - ( ( (one-ℚ -ℚ power-ℚ n r) +ℚ (power-ℚ n r *ℚ (one-ℚ -ℚ r))) *ℚ - 1/⟨1-r⟩) - by - ap-mul-ℚ - ( refl) - ( inv (right-distributive-mul-add-ℚ _ _ 1/⟨1-r⟩)) - = - a *ℚ - ( ( one-ℚ -ℚ power-ℚ n r +ℚ - ((power-ℚ n r *ℚ one-ℚ) -ℚ (power-ℚ n r *ℚ r))) *ℚ - 1/⟨1-r⟩) - by - ap-mul-ℚ - ( refl) - ( ap-mul-ℚ - ( ap-add-ℚ refl (left-distributive-mul-diff-ℚ _ _ _)) - ( refl)) - = - a *ℚ - ( ( one-ℚ -ℚ power-ℚ n r +ℚ - ((power-ℚ n r -ℚ power-ℚ (succ-ℕ n) r))) *ℚ - 1/⟨1-r⟩) - by - ap-mul-ℚ - ( refl) - ( ap-mul-ℚ - ( ap-add-ℚ - ( refl) - ( ap-diff-ℚ - ( right-unit-law-mul-ℚ _) - ( inv (power-succ-ℚ n r)))) - ( refl)) - = a *ℚ ((one-ℚ -ℚ power-ℚ (succ-ℕ n) r) *ℚ 1/⟨1-r⟩) - by - ap-mul-ℚ - ( refl) - ( ap-mul-ℚ - ( mul-right-div-Group group-add-ℚ _ _ _) - ( refl)) + ( (a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)) *ℚ + (one-ℚ -ℚ power-ℚ n r)) + compute-sum-standard-geometric-fin-sequence-ℚ = + compute-sum-standard-geometric-fin-sequence-Commutative-Ring + ( commutative-ring-ℚ) + ( a) + ( r) + ( pr2 (invertible-diff-neq-ℚ r one-ℚ r≠1)) ``` ### If `|r| < 1`, the sum of the standard geometric sequence `n ↦ arⁿ` is `a/(1-r)` @@ -245,15 +157,14 @@ module _ ( inv ( eq-htpy (compute-sum-standard-geometric-fin-sequence-ℚ a r r≠1))) ( equational-reasoning - a *ℚ - ( (one-ℚ -ℚ zero-ℚ) *ℚ - rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)) + a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) *ℚ + (one-ℚ -ℚ zero-ℚ) + = + a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) *ℚ one-ℚ + by ap-mul-ℚ refl (right-zero-law-diff-ℚ _) = - a *ℚ - ( one-ℚ *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)) - by ap-mul-ℚ refl (ap-mul-ℚ (right-zero-law-diff-ℚ one-ℚ) refl) - = a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) - by ap-mul-ℚ refl (left-unit-law-mul-ℚ _)) + a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) + by right-unit-law-mul-ℚ _) ( uniformly-continuous-map-limit-sequence-Metric-Space ( metric-space-ℚ) ( metric-space-ℚ) @@ -261,14 +172,9 @@ module _ ( metric-space-ℚ) ( metric-space-ℚ) ( metric-space-ℚ) - ( uniformly-continuous-left-mul-ℚ a) - ( comp-uniformly-continuous-function-Metric-Space - ( metric-space-ℚ) - ( metric-space-ℚ) - ( metric-space-ℚ) - ( uniformly-continuous-right-mul-ℚ - ( rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1))) - ( uniformly-continuous-diff-ℚ one-ℚ))) + ( uniformly-continuous-left-mul-ℚ + ( a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1))) + ( uniformly-continuous-diff-ℚ one-ℚ)) ( λ n → power-ℚ n r) ( zero-ℚ) ( is-zero-limit-power-le-one-abs-ℚ r |r|<1)) diff --git a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md index d967080b3a1..97787b4d3bb 100644 --- a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md @@ -97,5 +97,5 @@ antisymmetric-leq-ℚ⁺ = antisymmetric-leq-Poset poset-ℚ⁺ ```agda leq-eq-ℚ⁺ : {x y : ℚ⁺} → x = y → leq-ℚ⁺ x y -leq-eq-ℚ⁺ x=y = leq-eq-ℚ _ _ (ap rational-ℚ⁺ x=y) +leq-eq-ℚ⁺ x=y = leq-eq-ℚ (ap rational-ℚ⁺ x=y) ``` diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index c43c4d3a7ce..aca25ee3b65 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -294,9 +294,9 @@ abstract ( _) ( preserves-leq-power-ℚ⁺ k ε one-ℚ⁺ ε≤1) ≤ one-ℚ *ℚ rational-power-ℚ⁺ m ε - by leq-eq-ℚ _ _ (ap-mul-ℚ (ap rational-ℚ⁺ (power-one-ℚ⁺ k)) refl) + by leq-eq-ℚ (ap-mul-ℚ (ap rational-ℚ⁺ (power-one-ℚ⁺ k)) refl) ≤ rational-power-ℚ⁺ m ε - by leq-eq-ℚ _ _ (left-unit-law-mul-ℚ _) + by leq-eq-ℚ (left-unit-law-mul-ℚ _) ``` ### If `ε` is a positive rational number less than 1, `εⁿ` approaches 0 @@ -327,10 +327,10 @@ abstract rational-dist-ℚ (rational-ℚ⁺ (power-ℚ⁺ n ε)) zero-ℚ ≤ rational-abs-ℚ (rational-ℚ⁺ (power-ℚ⁺ n ε)) by - leq-eq-ℚ _ _ (ap rational-ℚ⁰⁺ (right-zero-law-dist-ℚ _)) + leq-eq-ℚ (ap rational-ℚ⁰⁺ (right-zero-law-dist-ℚ _)) ≤ rational-ℚ⁺ (power-ℚ⁺ n ε) by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ap rational-ℚ⁰⁺ ( abs-rational-ℚ⁰⁺ (nonnegative-ℚ⁺ (power-ℚ⁺ n ε)))) ≤ rational-ℚ⁺ (power-ℚ⁺ m ε) diff --git a/src/literature/100-theorems.lagda.md b/src/literature/100-theorems.lagda.md index a17c9a0db8f..d9ea4bf83ad 100644 --- a/src/literature/100-theorems.lagda.md +++ b/src/literature/100-theorems.lagda.md @@ -116,6 +116,15 @@ open import foundation.cantors-theorem using ( theorem-Cantor) ``` +### 66. Sum of a Geometric Series {#66} + +**Author:** [Louis Wasserman](https://github.com/lowasser) + +```agda +open import real-numbers.geometric-sequences-real-numbers using + ( compute-sum-standard-geometric-series-ℝ) +``` + ### 68. Sum of an arithmetic series {#68} **Author:** [malarbol](http://www.github.com/malarbol) diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 419351f5c8b..a33ee5156c3 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -18,11 +18,13 @@ open import real-numbers.binary-minimum-real-numbers public open import real-numbers.cauchy-completeness-dedekind-real-numbers public open import real-numbers.cauchy-sequences-real-numbers public open import real-numbers.closed-intervals-real-numbers public +open import real-numbers.convergent-series-real-numbers public open import real-numbers.dedekind-real-numbers public open import real-numbers.difference-real-numbers public open import real-numbers.distance-real-numbers public open import real-numbers.enclosing-closed-rational-intervals-real-numbers public open import real-numbers.finitely-enumerable-subsets-real-numbers public +open import real-numbers.geometric-sequences-real-numbers public open import real-numbers.inequalities-addition-real-numbers public open import real-numbers.inequality-lower-dedekind-real-numbers public open import real-numbers.inequality-nonnegative-real-numbers public @@ -34,6 +36,7 @@ open import real-numbers.infima-families-real-numbers public open import real-numbers.inhabited-finitely-enumerable-subsets-real-numbers public open import real-numbers.inhabited-totally-bounded-subsets-real-numbers public open import real-numbers.isometry-addition-real-numbers public +open import real-numbers.isometry-difference-real-numbers public open import real-numbers.isometry-negation-real-numbers public open import real-numbers.large-additive-group-of-real-numbers public open import real-numbers.large-multiplicative-monoid-of-real-numbers public @@ -45,6 +48,7 @@ open import real-numbers.maximum-finite-families-real-numbers public open import real-numbers.maximum-inhabited-finitely-enumerable-subsets-real-numbers public open import real-numbers.maximum-lower-dedekind-real-numbers public open import real-numbers.maximum-upper-dedekind-real-numbers public +open import real-numbers.metric-abelian-group-of-real-numbers public open import real-numbers.metric-space-of-nonnegative-real-numbers public open import real-numbers.metric-space-of-real-numbers public open import real-numbers.minimum-finite-families-real-numbers public @@ -76,6 +80,7 @@ open import real-numbers.real-numbers-from-upper-dedekind-real-numbers public open import real-numbers.real-sequences-approximating-zero public open import real-numbers.saturation-inequality-nonnegative-real-numbers public open import real-numbers.saturation-inequality-real-numbers public +open import real-numbers.series-real-numbers public open import real-numbers.short-binary-maximum-real-numbers public open import real-numbers.similarity-nonnegative-real-numbers public open import real-numbers.similarity-positive-real-numbers public diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index ba2031c0029..b8b64174495 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -132,7 +132,7 @@ abstract opaque ( zero-ℝ) ( x) ( 0≤x) - ( tr (leq-ℝ (neg-ℝ x)) neg-zero-ℝ (neg-leq-ℝ _ _ 0≤x)))) + ( tr (leq-ℝ (neg-ℝ x)) neg-zero-ℝ (neg-leq-ℝ 0≤x)))) abs-real-ℝ⁺ : {l : Level} (x : ℝ⁺ l) → abs-ℝ (real-ℝ⁺ x) = real-ℝ⁺ x abs-real-ℝ⁺ x = abs-real-ℝ⁰⁺ (nonnegative-ℝ⁺ x) diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index 023123e63ef..31770cd4ac0 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -8,6 +8,7 @@ module real-numbers.apartness-real-numbers where ```agda open import foundation.apartness-relations +open import foundation.binary-transport open import foundation.disjunction open import foundation.empty-types open import foundation.function-types @@ -21,7 +22,12 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels +open import real-numbers.absolute-value-real-numbers +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.similarity-real-numbers +open import real-numbers.strict-inequalities-addition-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -45,6 +51,10 @@ module _ apart-ℝ : UU (l1 ⊔ l2) apart-ℝ = type-Prop apart-prop-ℝ + +apart-le-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ x y → apart-ℝ x y +apart-le-ℝ = inl-disjunction ``` ## Properties @@ -61,8 +71,8 @@ antireflexive-apart-ℝ x = ```agda symmetric-apart-ℝ : - {l1 l2 : Level} → (x : ℝ l1) (y : ℝ l2) → apart-ℝ x y → apart-ℝ y x -symmetric-apart-ℝ x y = + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → apart-ℝ x y → apart-ℝ y x +symmetric-apart-ℝ {x = x} {y = y} = elim-disjunction (apart-prop-ℝ y x) inr-disjunction inl-disjunction ``` @@ -94,7 +104,7 @@ apart-prop-Large-Apartness-Relation large-apartness-relation-ℝ = apart-prop-ℝ antirefl-Large-Apartness-Relation large-apartness-relation-ℝ = antireflexive-apart-ℝ -symmetric-Large-Apartness-Relation large-apartness-relation-ℝ = +symmetric-Large-Apartness-Relation large-apartness-relation-ℝ _ _ = symmetric-apart-ℝ cotransitive-Large-Apartness-Relation large-apartness-relation-ℝ = cotransitive-apart-ℝ @@ -107,3 +117,77 @@ nonequal-apart-ℝ : {l : Level} (x y : ℝ l) → apart-ℝ x y → x ≠ y nonequal-apart-ℝ x y = nonequal-apart-Large-Apartness-Relation large-apartness-relation-ℝ ``` + +### Apartness is preserved by translation + +```agda +abstract + preserves-apart-left-add-ℝ : + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → + apart-ℝ y z → apart-ℝ (x +ℝ y) (x +ℝ z) + preserves-apart-left-add-ℝ x y z = + map-disjunction + ( preserves-le-left-add-ℝ x y z) + ( preserves-le-left-add-ℝ x z y) + + preserves-apart-right-add-ℝ : + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → + apart-ℝ y z → apart-ℝ (y +ℝ x) (z +ℝ x) + preserves-apart-right-add-ℝ x y z y#z = + binary-tr + ( apart-ℝ) + ( commutative-add-ℝ x y) + ( commutative-add-ℝ x z) + ( preserves-apart-left-add-ℝ x y z y#z) +``` + +### Apartness is preserved by negation + +```agda +abstract + preserves-apart-neg-ℝ : + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → apart-ℝ x y → + apart-ℝ (neg-ℝ x) (neg-ℝ y) + preserves-apart-neg-ℝ x y = + elim-disjunction + ( apart-prop-ℝ _ _) + ( inr-disjunction ∘ neg-le-ℝ) + ( inl-disjunction ∘ neg-le-ℝ) +``` + +### Apartness is preserved by similarity + +```agda +abstract + apart-right-sim-ℝ : + {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) → + sim-ℝ x y → apart-ℝ z x → apart-ℝ z y + apart-right-sim-ℝ z x y x~y = + map-disjunction + ( preserves-le-right-sim-ℝ z x y x~y) + ( preserves-le-left-sim-ℝ z x y x~y) + + apart-left-sim-ℝ : + {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) → + sim-ℝ x y → apart-ℝ x z → apart-ℝ y z + apart-left-sim-ℝ z x y x~y = + map-disjunction + ( preserves-le-left-sim-ℝ z x y x~y) + ( preserves-le-right-sim-ℝ z x y x~y) + + apart-sim-ℝ : + {l1 l2 l3 l4 : Level} {x : ℝ l1} {x' : ℝ l2} {y : ℝ l3} {y' : ℝ l4} → + sim-ℝ x x' → sim-ℝ y y' → apart-ℝ x y → apart-ℝ x' y' + apart-sim-ℝ {x = x} {x' = x'} {y = y} {y' = y'} x~x' y~y' x#y = + apart-left-sim-ℝ + ( y') + ( x) + ( x') + ( x~x') + ( apart-right-sim-ℝ + ( x) + ( y) + ( y') + ( y~y') + ( x#y)) +``` diff --git a/src/real-numbers/convergent-series-real-numbers.lagda.md b/src/real-numbers/convergent-series-real-numbers.lagda.md new file mode 100644 index 00000000000..5b3446be744 --- /dev/null +++ b/src/real-numbers/convergent-series-real-numbers.lagda.md @@ -0,0 +1,40 @@ +# Convergent series of real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.convergent-series-real-numbers where +``` + +
Imports + +```agda +open import analysis.convergent-series-metric-abelian-groups + +open import foundation.propositions +open import foundation.universe-levels + +open import real-numbers.dedekind-real-numbers +open import real-numbers.series-real-numbers +``` + +
+ +## Idea + +A [series](real-numbers.series-real-numbers.md) of +[real numbers](real-numbers.dedekind-real-numbers.md) +{{#concepts "converges" Disambiguation="series of real numbers" Agda=is-convergent-series-ℝ}} +to `x` if the sequence of its partial sums +[converges](metric-spaces.limits-of-sequences-metric-spaces.md) to `x` in the +[standard metric space of real numbers](real-numbers.metric-space-of-real-numbers.md). + +## Definition + +```agda +is-sum-prop-series-ℝ : {l : Level} → series-ℝ l → ℝ l → Prop l +is-sum-prop-series-ℝ = is-sum-prop-series-Metric-Ab + +is-sum-series-ℝ : {l : Level} → series-ℝ l → ℝ l → UU l +is-sum-series-ℝ = is-sum-series-Metric-Ab +``` diff --git a/src/real-numbers/geometric-sequences-real-numbers.lagda.md b/src/real-numbers/geometric-sequences-real-numbers.lagda.md new file mode 100644 index 00000000000..c70f545f881 --- /dev/null +++ b/src/real-numbers/geometric-sequences-real-numbers.lagda.md @@ -0,0 +1,252 @@ +# Geometric sequences of real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.geometric-sequences-real-numbers where +``` + +
Imports + +```agda +open import commutative-algebra.geometric-sequences-commutative-rings + +open import elementary-number-theory.natural-numbers + +open import foundation.action-on-identifications-functions +open import foundation.binary-transport +open import foundation.function-extensionality +open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import lists.sequences + +open import metric-spaces.limits-of-sequences-metric-spaces +open import metric-spaces.uniformly-continuous-functions-metric-spaces + +open import real-numbers.absolute-value-real-numbers +open import real-numbers.apartness-real-numbers +open import real-numbers.convergent-series-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.difference-real-numbers +open import real-numbers.isometry-difference-real-numbers +open import real-numbers.large-ring-of-real-numbers +open import real-numbers.limits-sequences-real-numbers +open import real-numbers.lipschitz-continuity-multiplication-real-numbers +open import real-numbers.metric-space-of-real-numbers +open import real-numbers.multiplication-real-numbers +open import real-numbers.multiplicative-inverses-nonzero-real-numbers +open import real-numbers.nonzero-real-numbers +open import real-numbers.powers-real-numbers +open import real-numbers.raising-universe-levels-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.series-real-numbers +open import real-numbers.similarity-real-numbers +open import real-numbers.strict-inequality-real-numbers +``` + +
+ +## Idea + +A +{{#concept "geometric sequence" Disambiguation="of real numbers" Agda=geometric-sequence-ℝ}} +of [real numbers](real-numbers.dedekind-real-numbers.md) is a +[geometric sequence](commutative-algebra.geometric-sequences-commutative-rings.md) +in the +[commutative ring of real numbers](real-numbers.large-ring-of-real-numbers.md). + +## Definitions + +```agda +geometric-sequence-ℝ : (l : Level) → UU (lsuc l) +geometric-sequence-ℝ l = + geometric-sequence-Commutative-Ring (commutative-ring-ℝ l) + +seq-geometric-sequence-ℝ : {l : Level} → geometric-sequence-ℝ l → sequence (ℝ l) +seq-geometric-sequence-ℝ {l} = + seq-geometric-sequence-Commutative-Ring (commutative-ring-ℝ l) + +standard-geometric-sequence-ℝ : + {l : Level} → ℝ l → ℝ l → geometric-sequence-ℝ l +standard-geometric-sequence-ℝ {l} = + standard-geometric-sequence-Commutative-Ring (commutative-ring-ℝ l) + +seq-standard-geometric-sequence-ℝ : + {l : Level} → ℝ l → ℝ l → sequence (ℝ l) +seq-standard-geometric-sequence-ℝ {l} = + seq-standard-geometric-sequence-Commutative-Ring (commutative-ring-ℝ l) +``` + +## Properties + +### The nth term of a geometric sequence with initial term `a` and common ratio `r` is `a * rⁿ` + +```agda +module _ + {l : Level} (a r : ℝ l) + where + + compute-standard-geometric-sequence-ℝ : + (n : ℕ) → seq-standard-geometric-sequence-ℝ a r n = a *ℝ power-ℝ n r + compute-standard-geometric-sequence-ℝ n = + inv + ( htpy-mul-pow-standard-geometric-sequence-Commutative-Ring + ( commutative-ring-ℝ l) + ( a) + ( r) + ( n)) +``` + +### If `r` is apart from `1`, the sum of the first `n` elements of the standard geometric sequence `n ↦ arⁿ` is `a(1-rⁿ)/(1-r)` + +```agda +sum-standard-geometric-fin-sequence-ℝ : {l : Level} → ℝ l → ℝ l → ℕ → ℝ l +sum-standard-geometric-fin-sequence-ℝ {l} = + sum-standard-geometric-fin-sequence-Commutative-Ring (commutative-ring-ℝ l) + +module _ + {l : Level} (a r : ℝ l) (r≠1 : apart-ℝ r one-ℝ) + where + + abstract + compute-sum-standard-geometric-fin-sequence-ℝ : + (n : ℕ) → + sum-standard-geometric-fin-sequence-ℝ a r n = + ( ( a *ℝ + real-inv-nonzero-ℝ + ( nonzero-diff-apart-ℝ one-ℝ r (symmetric-apart-ℝ r≠1))) *ℝ + (one-ℝ -ℝ power-ℝ n r)) + compute-sum-standard-geometric-fin-sequence-ℝ n = + let + 1#r = symmetric-apart-ℝ r≠1 + 1l#r = + apart-left-sim-ℝ + ( r) + ( one-ℝ) + ( raise-ℝ l one-ℝ) + ( sim-raise-ℝ l one-ℝ) + ( 1#r) + in + equational-reasoning + sum-standard-geometric-fin-sequence-ℝ a r n + = + ( a *ℝ + real-inv-nonzero-ℝ + ( nonzero-diff-apart-ℝ (raise-ℝ l one-ℝ) r 1l#r)) *ℝ + ( raise-ℝ l one-ℝ -ℝ power-ℝ n r) + by + compute-sum-standard-geometric-fin-sequence-Commutative-Ring + ( commutative-ring-ℝ l) + ( a) + ( r) + ( is-invertible-is-nonzero-ℝ _ + ( is-nonzero-diff-is-apart-ℝ _ _ 1l#r)) + ( n) + = + ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-apart-ℝ one-ℝ r 1#r)) *ℝ + ( one-ℝ -ℝ power-ℝ n r) + by + ap-mul-ℝ + ( ap-mul-ℝ + ( refl) + ( ap + ( real-inv-nonzero-ℝ) + ( eq-nonzero-ℝ _ _ + ( eq-sim-ℝ + ( preserves-sim-diff-ℝ + ( symmetric-sim-ℝ (sim-raise-ℝ l one-ℝ)) + ( refl-sim-ℝ r)))))) + ( eq-sim-ℝ + ( preserves-sim-diff-ℝ + ( symmetric-sim-ℝ (sim-raise-ℝ l one-ℝ)) + ( refl-sim-ℝ (power-ℝ n r)))) +``` + +### If `|r| < 1`, then the geometric series `Σₙ arⁿ` converges to `a/(1-r)` + +This is the [66th](literature.100-theorems.md#66) theorem on +[Freek Wiedijk](http://www.cs.ru.nl/F.Wiedijk/)'s list of +[100 theorems](literature.100-theorems.md) {{#cite 100theorems}}. + +```agda +module _ + {l : Level} (a r : ℝ l) + where + + standard-geometric-series-ℝ : series-ℝ l + standard-geometric-series-ℝ = + series-terms-ℝ (seq-standard-geometric-sequence-ℝ a r) + + abstract + compute-sum-standard-geometric-series-ℝ : + (|r|<1 : le-ℝ (abs-ℝ r) one-ℝ) → + is-sum-series-ℝ + ( standard-geometric-series-ℝ) + ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) + compute-sum-standard-geometric-series-ℝ |r|<1 = + let + r#1 = apart-le-ℝ (concatenate-leq-le-ℝ _ _ _ (leq-abs-ℝ r) |r|<1) + in + binary-tr + ( is-limit-sequence-ℝ) + ( inv + ( eq-htpy + ( λ n → + equational-reasoning + sum-standard-geometric-fin-sequence-ℝ a r n + = + ( a *ℝ real-inv-nonzero-ℝ _) *ℝ + ( one-ℝ -ℝ power-ℝ n r) + by compute-sum-standard-geometric-fin-sequence-ℝ a r r#1 n + = + ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) *ℝ + ( one-ℝ -ℝ power-ℝ n r) + by + ap + ( λ z → + (a *ℝ real-inv-nonzero-ℝ z) *ℝ (one-ℝ -ℝ power-ℝ n r)) + ( eq-nonzero-ℝ + ( nonzero-diff-apart-ℝ + ( one-ℝ) + ( r) + ( symmetric-apart-ℝ r#1)) + ( nonzero-diff-le-abs-ℝ |r|<1) + ( refl))))) + ( equational-reasoning + ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) *ℝ + ( one-ℝ -ℝ raise-ℝ l zero-ℝ) + = + ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) *ℝ + ( one-ℝ -ℝ zero-ℝ) + by + eq-sim-ℝ + ( preserves-sim-left-mul-ℝ _ _ _ + ( preserves-sim-diff-ℝ + ( refl-sim-ℝ one-ℝ) + ( symmetric-sim-ℝ (sim-raise-ℝ l zero-ℝ)))) + = + ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1)) *ℝ one-ℝ + by ap-mul-ℝ refl (right-unit-law-diff-ℝ one-ℝ) + = a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1) + by right-unit-law-mul-ℝ _) + ( uniformly-continuous-map-limit-sequence-Metric-Space + ( metric-space-ℝ l) + ( metric-space-ℝ l) + ( comp-uniformly-continuous-function-Metric-Space + ( metric-space-ℝ l) + ( metric-space-ℝ l) + ( metric-space-ℝ l) + ( uniformly-continuous-right-mul-ℝ + ( l) + ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1))) + ( uniformly-continuous-diff-ℝ one-ℝ)) + ( λ n → power-ℝ n r) + ( raise-ℝ l zero-ℝ) + ( is-zero-lim-power-le-one-abs-ℝ r |r|<1)) +``` + +## References + +{{#bibliography}} diff --git a/src/real-numbers/isometry-difference-real-numbers.lagda.md b/src/real-numbers/isometry-difference-real-numbers.lagda.md new file mode 100644 index 00000000000..73b411df6a4 --- /dev/null +++ b/src/real-numbers/isometry-difference-real-numbers.lagda.md @@ -0,0 +1,73 @@ +# The difference isometry on real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.isometry-difference-real-numbers where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.universe-levels + +open import metric-spaces.isometries-metric-spaces +open import metric-spaces.uniformly-continuous-functions-metric-spaces + +open import real-numbers.addition-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.difference-real-numbers +open import real-numbers.isometry-addition-real-numbers +open import real-numbers.isometry-negation-real-numbers +open import real-numbers.metric-space-of-real-numbers +open import real-numbers.negation-real-numbers +``` + +
+ +## Idea + +[Subtracting](real-numbers.difference-real-numbers.md) from a fixed +[real number](real-numbers.dedekind-real-numbers.md) is an +[isometry](metric-spaces.isometries-metric-spaces.md) from the +[metric space of real numbers](real-numbers.metric-space-of-real-numbers.md) to +itself. + +## Definition + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) + where + + abstract + is-isometry-diff-ℝ : + is-isometry-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( diff-ℝ x) + is-isometry-diff-ℝ = + is-isometry-comp-is-isometry-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( add-ℝ x) + ( neg-ℝ) + ( is-isometry-left-add-ℝ x) + ( is-isometry-neg-ℝ) + + isometry-diff-ℝ : + isometry-Metric-Space (metric-space-ℝ l2) (metric-space-ℝ (l1 ⊔ l2)) + isometry-diff-ℝ = (diff-ℝ x , is-isometry-diff-ℝ) + + uniformly-continuous-diff-ℝ : + uniformly-continuous-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + uniformly-continuous-diff-ℝ = + uniformly-continuous-isometry-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( isometry-diff-ℝ) +``` diff --git a/src/real-numbers/large-ring-of-real-numbers.lagda.md b/src/real-numbers/large-ring-of-real-numbers.lagda.md index 5786d7c56cb..6743c00b131 100644 --- a/src/real-numbers/large-ring-of-real-numbers.lagda.md +++ b/src/real-numbers/large-ring-of-real-numbers.lagda.md @@ -48,7 +48,7 @@ large-ring-ℝ = make-Large-Ring ( large-ab-add-ℝ) ( mul-ℝ) - ( preserves-sim-mul-ℝ) + ( λ _ _ a~a' _ _ → preserves-sim-mul-ℝ a~a') ( one-ℝ) ( associative-mul-ℝ) ( left-unit-law-mul-ℝ) diff --git a/src/real-numbers/limits-sequences-real-numbers.lagda.md b/src/real-numbers/limits-sequences-real-numbers.lagda.md index f40aab460f5..664e9e49cca 100644 --- a/src/real-numbers/limits-sequences-real-numbers.lagda.md +++ b/src/real-numbers/limits-sequences-real-numbers.lagda.md @@ -11,6 +11,7 @@ module real-numbers.limits-sequences-real-numbers where ```agda open import foundation.dependent-pair-types open import foundation.propositional-truncations +open import foundation.propositions open import foundation.universe-levels open import lists.sequences @@ -36,6 +37,10 @@ On this page, we describe properties of ## Definition ```agda +is-limit-prop-sequence-ℝ : {l : Level} → sequence (ℝ l) → ℝ l → Prop l +is-limit-prop-sequence-ℝ {l} = + is-limit-prop-sequence-Metric-Space (metric-space-ℝ l) + is-limit-sequence-ℝ : {l : Level} → sequence (ℝ l) → ℝ l → UU l is-limit-sequence-ℝ {l} = is-limit-sequence-Metric-Space (metric-space-ℝ l) ``` diff --git a/src/real-numbers/metric-abelian-group-of-real-numbers.lagda.md b/src/real-numbers/metric-abelian-group-of-real-numbers.lagda.md new file mode 100644 index 00000000000..34024894955 --- /dev/null +++ b/src/real-numbers/metric-abelian-group-of-real-numbers.lagda.md @@ -0,0 +1,44 @@ +# The metric abelian group of real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.metric-abelian-group-of-real-numbers where +``` + +
Imports + +```agda +open import analysis.metric-abelian-groups + +open import foundation.dependent-pair-types +open import foundation.universe-levels + +open import metric-spaces.pseudometric-spaces + +open import real-numbers.isometry-addition-real-numbers +open import real-numbers.isometry-negation-real-numbers +open import real-numbers.large-additive-group-of-real-numbers +open import real-numbers.metric-space-of-real-numbers +``` + +
+ +## Idea + +The [Dedekind real numbers](real-numbers.dedekind-real-numbers.md) form a +[metric abelian group](analysis.metric-abelian-groups.md) under +[addition](real-numbers.addition-real-numbers.md) with regards to their +[standard metric space](real-numbers.metric-space-of-real-numbers.md). + +## Definition + +```agda +metric-ab-ℝ : (l : Level) → Metric-Ab (lsuc l) l +metric-ab-ℝ l = + ( ab-add-ℝ l , + structure-Pseudometric-Space (pseudometric-space-ℝ l) , + is-extensional-pseudometric-space-ℝ , + is-isometry-neg-ℝ , + is-isometry-left-add-ℝ) +``` diff --git a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md index 7ecc0768e38..c0fea896952 100644 --- a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md @@ -44,7 +44,7 @@ abstract ( x *ℝ zero-ℝ) ( zero-ℝ) ( right-zero-law-mul-ℝ x) - ( preserves-le-left-mul-ℝ⁺ (x , is-pos-x) y zero-ℝ is-neg-y) + ( preserves-le-left-mul-ℝ⁺ (x , is-pos-x) is-neg-y) mul-positive-negative-ℝ : {l1 l2 : Level} → ℝ⁺ l1 → ℝ⁻ l2 → ℝ⁻ (l1 ⊔ l2) diff --git a/src/real-numbers/multiplication-real-numbers.lagda.md b/src/real-numbers/multiplication-real-numbers.lagda.md index b389211c2d2..3b5d39d0f64 100644 --- a/src/real-numbers/multiplication-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-real-numbers.lagda.md @@ -1189,10 +1189,10 @@ module _ abstract preserves-sim-mul-ℝ : {l1 l2 l3 l4 : Level} → - (a : ℝ l1) (a' : ℝ l2) → sim-ℝ a a' → - (b : ℝ l3) (b' : ℝ l4) → sim-ℝ b b' → + {a : ℝ l1} {a' : ℝ l2} → sim-ℝ a a' → + {b : ℝ l3} {b' : ℝ l4} → sim-ℝ b b' → sim-ℝ (a *ℝ b) (a' *ℝ b') - preserves-sim-mul-ℝ a a' a~a' b b' b~b' = + preserves-sim-mul-ℝ {a = a} {a' = a'} a~a' {b = b} {b' = b'} b~b' = transitive-sim-ℝ ( a *ℝ b) ( a *ℝ b') diff --git a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md index f91c1d2bfcf..6b8f350f16e 100644 --- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md @@ -9,6 +9,8 @@ module real-numbers.multiplicative-inverses-nonzero-real-numbers where
Imports ```agda +open import commutative-algebra.invertible-elements-commutative-rings + open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-closed-intervals-rational-numbers @@ -36,12 +38,14 @@ open import foundation.universe-levels open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-real-numbers +open import real-numbers.large-ring-of-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.multiplicative-inverses-negative-real-numbers open import real-numbers.multiplicative-inverses-positive-real-numbers open import real-numbers.negative-real-numbers open import real-numbers.nonzero-real-numbers open import real-numbers.positive-real-numbers +open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers ``` @@ -124,13 +128,27 @@ module _ right-inverse-law-mul-nonzero-ℝ = pr2 has-nonzero-inv-nonzero-ℝ abstract - left-inverse-law-nonzero-ℝ : + left-inverse-law-mul-nonzero-ℝ : sim-ℝ (real-inv-nonzero-ℝ *ℝ real-nonzero-ℝ x) one-ℝ - left-inverse-law-nonzero-ℝ = + left-inverse-law-mul-nonzero-ℝ = tr ( λ y → sim-ℝ y one-ℝ) ( commutative-mul-ℝ _ _) ( right-inverse-law-mul-nonzero-ℝ) + +is-invertible-is-nonzero-ℝ : + {l : Level} (x : ℝ l) → is-nonzero-ℝ x → + is-invertible-element-Commutative-Ring (commutative-ring-ℝ l) x +is-invertible-is-nonzero-ℝ x x≠0 = + ( real-inv-nonzero-ℝ (x , x≠0) , + eq-sim-ℝ + ( transitive-sim-ℝ _ _ _ + ( sim-raise-ℝ _ _) + ( right-inverse-law-mul-nonzero-ℝ (x , x≠0))) , + eq-sim-ℝ + ( transitive-sim-ℝ _ _ _ + ( sim-raise-ℝ _ _) + ( left-inverse-law-mul-nonzero-ℝ (x , x≠0)))) ``` ### If a real number has a multiplicative inverse, it is nonzero @@ -229,3 +247,24 @@ abstract unique-right-inv-nonzero-ℝ y x ( tr (λ z → sim-ℝ z one-ℝ) (commutative-mul-ℝ _ _) xy=1) ``` + +### If two nonzero real numbers are similar, so are their inverses + +```agda +abstract + preserves-sim-inv-nonzero-ℝ : + {l1 l2 : Level} (x : nonzero-ℝ l1) (y : nonzero-ℝ l2) → + sim-ℝ (real-nonzero-ℝ x) (real-nonzero-ℝ y) → + sim-ℝ (real-inv-nonzero-ℝ x) (real-inv-nonzero-ℝ y) + preserves-sim-inv-nonzero-ℝ (x , x≠0) (y , y≠0) x~y = + symmetric-sim-ℝ + ( unique-right-inv-nonzero-ℝ + ( x , x≠0) + ( inv-nonzero-ℝ (y , y≠0)) + ( similarity-reasoning-ℝ + x *ℝ real-inv-nonzero-ℝ (y , y≠0) + ~ℝ y *ℝ real-inv-nonzero-ℝ (y , y≠0) + by preserves-sim-right-mul-ℝ _ _ _ x~y + ~ℝ one-ℝ + by right-inverse-law-mul-nonzero-ℝ (y , y≠0))) +``` diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index 1f2bd04d059..8d0ea479a28 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -40,6 +40,7 @@ open import real-numbers.inequalities-addition-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -130,9 +131,9 @@ abstract preserves-leq-real-ℚ (leq-zero-is-nonnegative-ℚ is-nonneg-q) reflects-is-nonnegative-real-ℚ : - (q : ℚ) → is-nonnegative-ℝ (real-ℚ q) → is-nonnegative-ℚ q - reflects-is-nonnegative-real-ℚ q 0≤qℝ = - is-nonnegative-leq-zero-ℚ (reflects-leq-real-ℚ zero-ℚ q 0≤qℝ) + {q : ℚ} → is-nonnegative-ℝ (real-ℚ q) → is-nonnegative-ℚ q + reflects-is-nonnegative-real-ℚ 0≤qℝ = + is-nonnegative-leq-zero-ℚ (reflects-leq-real-ℚ 0≤qℝ) nonnegative-real-ℚ⁰⁺ : ℚ⁰⁺ → ℝ⁰⁺ lzero nonnegative-real-ℚ⁰⁺ (q , is-nonneg-q) = @@ -290,7 +291,7 @@ abstract {l1 l2 : Level} (x : ℝ⁰⁺ l1) (y : ℝ l2) → le-ℝ (real-ℝ⁰⁺ x) y → is-nonnegative-ℝ y is-nonnegative-le-ℝ⁰⁺ x y x @@ -86,3 +93,48 @@ eq-nonzero-ℝ : x = y eq-nonzero-ℝ _ _ = eq-type-subtype is-nonzero-prop-ℝ ``` + +### Two real numbers are apart if and only if their difference is nonzero + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + abstract + is-nonzero-diff-is-apart-ℝ : apart-ℝ x y → is-nonzero-ℝ (x -ℝ y) + is-nonzero-diff-is-apart-ℝ x#y = + apart-right-sim-ℝ + ( x -ℝ y) + ( y -ℝ y) + ( zero-ℝ) + ( right-inverse-law-add-ℝ y) + ( preserves-apart-right-add-ℝ (neg-ℝ y) x y x#y) + + is-apart-is-nonzero-diff-ℝ : is-nonzero-ℝ (x -ℝ y) → apart-ℝ x y + is-apart-is-nonzero-diff-ℝ x-y#0 = + apart-sim-ℝ + ( cancel-right-diff-add-ℝ x y) + ( sim-eq-ℝ (left-unit-law-add-ℝ y)) + ( preserves-apart-right-add-ℝ y _ _ x-y#0) + + nonzero-diff-apart-ℝ : apart-ℝ x y → nonzero-ℝ (l1 ⊔ l2) + nonzero-diff-apart-ℝ x#y = (x -ℝ y , is-nonzero-diff-is-apart-ℝ x#y) +``` + +### If `x < y`, then `y - x` is nonzero + +```agda +nonzero-diff-le-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ x y → nonzero-ℝ (l1 ⊔ l2) +nonzero-diff-le-ℝ {x = x} {y = y} xImports + +```agda +open import analysis.series-metric-abelian-groups + +open import foundation.universe-levels + +open import lists.sequences + +open import real-numbers.dedekind-real-numbers +open import real-numbers.metric-abelian-group-of-real-numbers +``` + +
+ +## Idea + +A {{#concept "series" Disambiguation="of real numbers" Agda=series-ℝ}} of +[real numbers](real-numbers.dedekind-real-numbers.md) is an infinite sum +$$\Sigma_{n=0}^∞ a_n$$, which is evaluated for convergence in the +[metric abelian group of real numbers](real-numbers.metric-abelian-group-of-real-numbers.md). + +## Definition + +```agda +series-ℝ : (l : Level) → UU (lsuc l) +series-ℝ l = series-Metric-Ab (metric-ab-ℝ l) + +series-terms-ℝ : {l : Level} → sequence (ℝ l) → series-ℝ l +series-terms-ℝ = series-terms-Metric-Ab + +terms-series-ℝ : {l : Level} → series-ℝ l → sequence (ℝ l) +terms-series-ℝ = term-series-Metric-Ab +``` From eac6aa2768ec150a56dfe0eee64fc72e70c36118 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 21:01:59 -0800 Subject: [PATCH 049/134] Fix link --- src/real-numbers/convergent-series-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/convergent-series-real-numbers.lagda.md b/src/real-numbers/convergent-series-real-numbers.lagda.md index 5b3446be744..0813cae301b 100644 --- a/src/real-numbers/convergent-series-real-numbers.lagda.md +++ b/src/real-numbers/convergent-series-real-numbers.lagda.md @@ -24,7 +24,7 @@ open import real-numbers.series-real-numbers A [series](real-numbers.series-real-numbers.md) of [real numbers](real-numbers.dedekind-real-numbers.md) -{{#concepts "converges" Disambiguation="series of real numbers" Agda=is-convergent-series-ℝ}} +{{#concepts "converges" Disambiguation="series of real numbers" Agda=is-sum-series-ℝ}} to `x` if the sequence of its partial sums [converges](metric-spaces.limits-of-sequences-metric-spaces.md) to `x` in the [standard metric space of real numbers](real-numbers.metric-space-of-real-numbers.md). From 6fd2d52adcc6c59e54ad1971521f3e9d46dcb18d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 7 Nov 2025 21:02:54 -0800 Subject: [PATCH 050/134] Correct spelling --- src/real-numbers/convergent-series-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/convergent-series-real-numbers.lagda.md b/src/real-numbers/convergent-series-real-numbers.lagda.md index 0813cae301b..9c8b3bd2db6 100644 --- a/src/real-numbers/convergent-series-real-numbers.lagda.md +++ b/src/real-numbers/convergent-series-real-numbers.lagda.md @@ -24,7 +24,7 @@ open import real-numbers.series-real-numbers A [series](real-numbers.series-real-numbers.md) of [real numbers](real-numbers.dedekind-real-numbers.md) -{{#concepts "converges" Disambiguation="series of real numbers" Agda=is-sum-series-ℝ}} +{{#concept "converges" Disambiguation="series of real numbers" Agda=is-sum-series-ℝ}} to `x` if the sequence of its partial sums [converges](metric-spaces.limits-of-sequences-metric-spaces.md) to `x` in the [standard metric space of real numbers](real-numbers.metric-space-of-real-numbers.md). From 7d10f9c1057d00072c6ba163c924996c54b50f27 Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sat, 8 Nov 2025 10:53:12 +0100 Subject: [PATCH 051/134] Update src/real-numbers/powers-real-numbers.lagda.md --- src/real-numbers/powers-real-numbers.lagda.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/real-numbers/powers-real-numbers.lagda.md b/src/real-numbers/powers-real-numbers.lagda.md index d7812a9177e..497f3b7c043 100644 --- a/src/real-numbers/powers-real-numbers.lagda.md +++ b/src/real-numbers/powers-real-numbers.lagda.md @@ -58,6 +58,8 @@ defined by [iteratively](foundation.iterating-functions.md) [multiplying](real-numbers.multiplication-real-numbers.md) `x` with itself `n` times. +Note that this operation defines`0⁰` to be the empty product, `1`. + ## Definition ```agda From 43ad5594a49f02b2dbf8093af81c32fa78099290 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 08:34:23 -0800 Subject: [PATCH 052/134] Fix --- src/real-numbers.lagda.md | 1 + .../geometric-sequences-real-numbers.lagda.md | 10 +--- ...iplicative-monoid-of-real-numbers.lagda.md | 2 +- .../limits-sequences-real-numbers.lagda.md | 28 +++++++++ ...nuity-multiplication-real-numbers.lagda.md | 9 +-- ...continuous-functions-real-numbers.lagda.md | 59 +++++++++++++++++++ 6 files changed, 95 insertions(+), 14 deletions(-) create mode 100644 src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index a33ee5156c3..3b92a04dd4e 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -95,5 +95,6 @@ open import real-numbers.subsets-real-numbers public open import real-numbers.suprema-families-real-numbers public open import real-numbers.totally-bounded-subsets-real-numbers public open import real-numbers.transposition-addition-subtraction-cuts-dedekind-real-numbers public +open import real-numbers.uniformly-continuous-functions-real-numbers public open import real-numbers.upper-dedekind-real-numbers public ``` diff --git a/src/real-numbers/geometric-sequences-real-numbers.lagda.md b/src/real-numbers/geometric-sequences-real-numbers.lagda.md index c70f545f881..2db218fddaf 100644 --- a/src/real-numbers/geometric-sequences-real-numbers.lagda.md +++ b/src/real-numbers/geometric-sequences-real-numbers.lagda.md @@ -44,6 +44,7 @@ open import real-numbers.rational-real-numbers open import real-numbers.series-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.strict-inequality-real-numbers +open import real-numbers.uniformly-continuous-functions-real-numbers ``` @@ -231,13 +232,8 @@ module _ by ap-mul-ℝ refl (right-unit-law-diff-ℝ one-ℝ) = a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1) by right-unit-law-mul-ℝ _) - ( uniformly-continuous-map-limit-sequence-Metric-Space - ( metric-space-ℝ l) - ( metric-space-ℝ l) - ( comp-uniformly-continuous-function-Metric-Space - ( metric-space-ℝ l) - ( metric-space-ℝ l) - ( metric-space-ℝ l) + ( uniformly-continuous-map-limit-sequence-ℝ + ( comp-uniformly-continuous-function-ℝ ( uniformly-continuous-right-mul-ℝ ( l) ( a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1))) diff --git a/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md b/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md index 87f9524dc39..8b3e790aaf7 100644 --- a/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md +++ b/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md @@ -50,7 +50,7 @@ large-monoid-mul-ℝ = ( large-similarity-relation-sim-ℝ) ( raise-ℝ) ( sim-raise-ℝ) - ( preserves-sim-mul-ℝ) + ( λ _ _ x~x' _ _ y~y' → preserves-sim-mul-ℝ x~x' y~y') ( one-ℝ) ( left-unit-law-mul-ℝ) ( right-unit-law-mul-ℝ) diff --git a/src/real-numbers/limits-sequences-real-numbers.lagda.md b/src/real-numbers/limits-sequences-real-numbers.lagda.md index 664e9e49cca..340bba67d8e 100644 --- a/src/real-numbers/limits-sequences-real-numbers.lagda.md +++ b/src/real-numbers/limits-sequences-real-numbers.lagda.md @@ -24,6 +24,7 @@ open import real-numbers.cauchy-sequences-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.isometry-addition-real-numbers open import real-numbers.metric-space-of-real-numbers +open import real-numbers.uniformly-continuous-functions-real-numbers ``` @@ -79,3 +80,30 @@ module _ ( Hu) ( Hv)) ``` + +### Uniformly continuous functions from `ℝ` to `ℝ` preserve limits + +```agda +module _ + {l1 l2 : Level} + (f : uniformly-continuous-function-ℝ l1 l2) + (u : sequence (ℝ l1)) + (lim : ℝ l1) + where + + abstract + uniformly-continuous-map-limit-sequence-ℝ : + is-limit-sequence-ℝ u lim → + is-limit-sequence-ℝ + ( map-sequence + ( map-uniformly-continuous-function-ℝ f) + ( u)) + ( map-uniformly-continuous-function-ℝ f lim) + uniformly-continuous-map-limit-sequence-ℝ = + uniformly-continuous-map-limit-sequence-Metric-Space + ( metric-space-ℝ l1) + ( metric-space-ℝ l2) + ( f) + ( u) + ( lim) +``` diff --git a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md index ed960956fe8..f8c377f7ce5 100644 --- a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md +++ b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md @@ -45,6 +45,7 @@ open import real-numbers.multiplication-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.strict-inequality-real-numbers +open import real-numbers.uniformly-continuous-functions-real-numbers ``` @@ -155,16 +156,12 @@ module _ ( is-lipschitz-left-mul-ℝ l2 c) uniformly-continuous-right-mul-ℝ : - uniformly-continuous-function-Metric-Space - ( metric-space-ℝ l2) - ( metric-space-ℝ (l1 ⊔ l2)) + uniformly-continuous-function-ℝ l2 (l1 ⊔ l2) uniformly-continuous-right-mul-ℝ = ( mul-ℝ c , is-uniformly-continuous-right-mul-ℝ) uniformly-continuous-left-mul-ℝ : - uniformly-continuous-function-Metric-Space - ( metric-space-ℝ l2) - ( metric-space-ℝ (l1 ⊔ l2)) + uniformly-continuous-function-ℝ l2 (l1 ⊔ l2) uniformly-continuous-left-mul-ℝ = ( mul-ℝ' c , is-uniformly-continuous-left-mul-ℝ) ``` diff --git a/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md b/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md new file mode 100644 index 00000000000..c77135801b7 --- /dev/null +++ b/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md @@ -0,0 +1,59 @@ +# Uniformly continuous functions of real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.uniformly-continuous-functions-real-numbers where +``` + +
Imports + +```agda +open import foundation.universe-levels + +open import metric-spaces.uniformly-continuous-functions-metric-spaces + +open import real-numbers.dedekind-real-numbers +open import real-numbers.metric-space-of-real-numbers +``` + +
+ +## Idea + +A +{{#concept "uniformly continuous function" Disambiguation="from ℝ to ℝ" Agda=uniformly-continuous-function-ℝ}} +from the [real numbers](real-numbers.dedekind-real-numbers.md) to the real +numbers is a function `f : ℝ → ℝ` such that there +[exists](foundation.existential-quantification.md) a modulus `μ : ℚ⁺ → ℚ⁺` such +that for all `x y : ℝ` within a `μ ε` +[neighborhood](real-numbers.metric-space-of-real-numbers.md) of each other, +`f x` and `f y` are within an `ε` neighborhood. + +## Definition + +```agda +uniformly-continuous-function-ℝ : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +uniformly-continuous-function-ℝ l1 l2 = + uniformly-continuous-function-Metric-Space + ( metric-space-ℝ l1) + ( metric-space-ℝ l2) + +comp-uniformly-continuous-function-ℝ : + {l1 l2 l3 : Level} → + uniformly-continuous-function-ℝ l2 l3 → + uniformly-continuous-function-ℝ l1 l2 → + uniformly-continuous-function-ℝ l1 l3 +comp-uniformly-continuous-function-ℝ {l1} {l2} {l3} = + comp-uniformly-continuous-function-Metric-Space + ( metric-space-ℝ l1) + ( metric-space-ℝ l2) + ( metric-space-ℝ l3) + +map-uniformly-continuous-function-ℝ : + {l1 l2 : Level} → uniformly-continuous-function-ℝ l1 l2 → ℝ l1 → ℝ l2 +map-uniformly-continuous-function-ℝ {l1} {l2} = + map-uniformly-continuous-function-Metric-Space + ( metric-space-ℝ l1) + ( metric-space-ℝ l2) +``` From 76b2d963ebfa5efc5d31378305c24180a6442a62 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 08:47:32 -0800 Subject: [PATCH 053/134] Fix --- .../binary-maximum-real-numbers.lagda.md | 23 ------------------- .../positive-real-numbers.lagda.md | 8 ------- src/real-numbers/powers-real-numbers.lagda.md | 5 ---- 3 files changed, 36 deletions(-) diff --git a/src/real-numbers/binary-maximum-real-numbers.lagda.md b/src/real-numbers/binary-maximum-real-numbers.lagda.md index 43e78e69113..69b9224d864 100644 --- a/src/real-numbers/binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/binary-maximum-real-numbers.lagda.md @@ -320,29 +320,6 @@ abstract ( right-leq-left-least-upper-bound-Large-Poset ℝ-Large-Poset x y y≤x)) ``` -### The binary maximum preserves lower neighborhoods - -```agda -abstract - left-leq-right-max-ℝ : - {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → leq-ℝ x y → - sim-ℝ (max-ℝ x y) y - left-leq-right-max-ℝ {x = x} {y = y} x≤y = - sim-sim-leq-ℝ - ( sim-is-least-binary-upper-bound-Large-Poset ℝ-Large-Poset x y - ( is-least-binary-upper-bound-max-ℝ x y) - ( left-leq-right-least-upper-bound-Large-Poset ℝ-Large-Poset x y x≤y)) - - right-leq-left-max-ℝ : - {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → leq-ℝ y x → - sim-ℝ (max-ℝ x y) x - right-leq-left-max-ℝ {x = x} {y = y} y≤x = - sim-sim-leq-ℝ - ( sim-is-least-binary-upper-bound-Large-Poset ℝ-Large-Poset x y - ( is-least-binary-upper-bound-max-ℝ x y) - ( right-leq-left-least-upper-bound-Large-Poset ℝ-Large-Poset x y y≤x)) -``` - ### For any `ε : ℚ⁺`, `(max-ℝ x y - ε < x) ∨ (max-ℝ x y - ε < y)` ```agda diff --git a/src/real-numbers/positive-real-numbers.lagda.md b/src/real-numbers/positive-real-numbers.lagda.md index 05d059e1013..668e1644d95 100644 --- a/src/real-numbers/positive-real-numbers.lagda.md +++ b/src/real-numbers/positive-real-numbers.lagda.md @@ -302,11 +302,3 @@ raise-ℝ⁺ : {l1 : Level} (l : Level) → ℝ⁺ l1 → ℝ⁺ (l ⊔ l1) raise-ℝ⁺ l (x , 0 From 76bec78f97bfc3c140229c75e9945e01ac3b8ed5 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 09:16:38 -0800 Subject: [PATCH 054/134] Progress --- ...per-closed-intervals-real-numbers.lagda.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/real-numbers/proper-closed-intervals-real-numbers.lagda.md diff --git a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md new file mode 100644 index 00000000000..6c8f97ed6e4 --- /dev/null +++ b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md @@ -0,0 +1,36 @@ +# Proper closed intervals in the real numbers + +```agda +module real-numbers.proper-closed-intervals-real-numbers where +``` + +
Imports + +```agda +open import real-numbers.dedekind-real-numbers +open import real-numbers.strict-inequality-real-numbers +open import real-numbers.inequality-real-numbers +open import real-numbers.closed-intervals-real-numbers +open import foundation.universe-levels +open import foundation.dependent-pair-types +``` + +
+ +## Idea + +A +{{#concept "proper closed interval" Disambiguation="in ℝ" Agda=proper-closed-interval-ℝ}} +in the [real numbers](real-numbers.dedekind-real-numbers.md) is a +[closed interval](real-numbers.closed-intervals-real-numbers.md) in which the +lower bound is +[strictly less than](real-numbers.strict-inequality-real-numbers.md) the upper +bound. + +## Definition + +```agda +proper-closed-interval-ℝ : (l1 l2 : Level) → UU ? +proper-closed-interval-ℝ = + Σ (ℝ l1) (λ x → Σ (ℝ l2) (λ y → le-ℝ x y)) +``` From 507c7fa3302d4e87eb6792772311f10f28145b71 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 09:40:53 -0800 Subject: [PATCH 055/134] Progress --- ...per-closed-intervals-real-numbers.lagda.md | 86 ++++++++++++++++++- 1 file changed, 83 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md index 6c8f97ed6e4..999b3a89adc 100644 --- a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md +++ b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md @@ -9,10 +9,18 @@ module real-numbers.proper-closed-intervals-real-numbers where ```agda open import real-numbers.dedekind-real-numbers open import real-numbers.strict-inequality-real-numbers +open import real-numbers.subsets-real-numbers open import real-numbers.inequality-real-numbers +open import real-numbers.metric-space-of-real-numbers open import real-numbers.closed-intervals-real-numbers + +open import metric-spaces.metric-spaces +open import foundation.subtypes +open import foundation.conjunction open import foundation.universe-levels +open import metric-spaces.complete-metric-spaces open import foundation.dependent-pair-types +open import metric-spaces.closed-subsets-metric-spaces ``` @@ -30,7 +38,79 @@ bound. ## Definition ```agda -proper-closed-interval-ℝ : (l1 l2 : Level) → UU ? -proper-closed-interval-ℝ = - Σ (ℝ l1) (λ x → Σ (ℝ l2) (λ y → le-ℝ x y)) +proper-closed-interval-ℝ : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +proper-closed-interval-ℝ l1 l2 = Σ (ℝ l1) (λ x → Σ (ℝ l2) (λ y → le-ℝ x y)) + +closed-interval-proper-closed-interval-ℝ : + {l1 l2 : Level} → proper-closed-interval-ℝ l1 l2 → closed-interval-ℝ l1 l2 +closed-interval-proper-closed-interval-ℝ (a , b , a Date: Sat, 8 Nov 2025 10:59:20 -0800 Subject: [PATCH 056/134] Pull changes --- .../apartness-real-numbers.lagda.md | 90 ++++++++++++++++++- 1 file changed, 87 insertions(+), 3 deletions(-) diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index 023123e63ef..31770cd4ac0 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -8,6 +8,7 @@ module real-numbers.apartness-real-numbers where ```agda open import foundation.apartness-relations +open import foundation.binary-transport open import foundation.disjunction open import foundation.empty-types open import foundation.function-types @@ -21,7 +22,12 @@ open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels +open import real-numbers.absolute-value-real-numbers +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.similarity-real-numbers +open import real-numbers.strict-inequalities-addition-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -45,6 +51,10 @@ module _ apart-ℝ : UU (l1 ⊔ l2) apart-ℝ = type-Prop apart-prop-ℝ + +apart-le-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ x y → apart-ℝ x y +apart-le-ℝ = inl-disjunction ``` ## Properties @@ -61,8 +71,8 @@ antireflexive-apart-ℝ x = ```agda symmetric-apart-ℝ : - {l1 l2 : Level} → (x : ℝ l1) (y : ℝ l2) → apart-ℝ x y → apart-ℝ y x -symmetric-apart-ℝ x y = + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → apart-ℝ x y → apart-ℝ y x +symmetric-apart-ℝ {x = x} {y = y} = elim-disjunction (apart-prop-ℝ y x) inr-disjunction inl-disjunction ``` @@ -94,7 +104,7 @@ apart-prop-Large-Apartness-Relation large-apartness-relation-ℝ = apart-prop-ℝ antirefl-Large-Apartness-Relation large-apartness-relation-ℝ = antireflexive-apart-ℝ -symmetric-Large-Apartness-Relation large-apartness-relation-ℝ = +symmetric-Large-Apartness-Relation large-apartness-relation-ℝ _ _ = symmetric-apart-ℝ cotransitive-Large-Apartness-Relation large-apartness-relation-ℝ = cotransitive-apart-ℝ @@ -107,3 +117,77 @@ nonequal-apart-ℝ : {l : Level} (x y : ℝ l) → apart-ℝ x y → x ≠ y nonequal-apart-ℝ x y = nonequal-apart-Large-Apartness-Relation large-apartness-relation-ℝ ``` + +### Apartness is preserved by translation + +```agda +abstract + preserves-apart-left-add-ℝ : + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → + apart-ℝ y z → apart-ℝ (x +ℝ y) (x +ℝ z) + preserves-apart-left-add-ℝ x y z = + map-disjunction + ( preserves-le-left-add-ℝ x y z) + ( preserves-le-left-add-ℝ x z y) + + preserves-apart-right-add-ℝ : + {l1 l2 l3 : Level} (x : ℝ l1) (y : ℝ l2) (z : ℝ l3) → + apart-ℝ y z → apart-ℝ (y +ℝ x) (z +ℝ x) + preserves-apart-right-add-ℝ x y z y#z = + binary-tr + ( apart-ℝ) + ( commutative-add-ℝ x y) + ( commutative-add-ℝ x z) + ( preserves-apart-left-add-ℝ x y z y#z) +``` + +### Apartness is preserved by negation + +```agda +abstract + preserves-apart-neg-ℝ : + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → apart-ℝ x y → + apart-ℝ (neg-ℝ x) (neg-ℝ y) + preserves-apart-neg-ℝ x y = + elim-disjunction + ( apart-prop-ℝ _ _) + ( inr-disjunction ∘ neg-le-ℝ) + ( inl-disjunction ∘ neg-le-ℝ) +``` + +### Apartness is preserved by similarity + +```agda +abstract + apart-right-sim-ℝ : + {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) → + sim-ℝ x y → apart-ℝ z x → apart-ℝ z y + apart-right-sim-ℝ z x y x~y = + map-disjunction + ( preserves-le-right-sim-ℝ z x y x~y) + ( preserves-le-left-sim-ℝ z x y x~y) + + apart-left-sim-ℝ : + {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) → + sim-ℝ x y → apart-ℝ x z → apart-ℝ y z + apart-left-sim-ℝ z x y x~y = + map-disjunction + ( preserves-le-left-sim-ℝ z x y x~y) + ( preserves-le-right-sim-ℝ z x y x~y) + + apart-sim-ℝ : + {l1 l2 l3 l4 : Level} {x : ℝ l1} {x' : ℝ l2} {y : ℝ l3} {y' : ℝ l4} → + sim-ℝ x x' → sim-ℝ y y' → apart-ℝ x y → apart-ℝ x' y' + apart-sim-ℝ {x = x} {x' = x'} {y = y} {y' = y'} x~x' y~y' x#y = + apart-left-sim-ℝ + ( y') + ( x) + ( x') + ( x~x') + ( apart-right-sim-ℝ + ( x) + ( y) + ( y') + ( y~y') + ( x#y)) +``` From 80ae32beeb18b45d67d18be83cf78b54a800f8b2 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 10:59:56 -0800 Subject: [PATCH 057/134] Progress --- ...ddition-positive-rational-numbers.lagda.md | 10 ++ src/metric-spaces.lagda.md | 1 + .../apartness-located-metric-spaces.lagda.md | 170 ++++++++++++++++++ .../located-metric-spaces.lagda.md | 36 +++- .../metrics-of-metric-spaces.lagda.md | 41 +++++ src/real-numbers.lagda.md | 1 + .../apartness-real-numbers.lagda.md | 64 +++++++ ...ated-metric-space-of-real-numbers.lagda.md | 39 ++++ 8 files changed, 360 insertions(+), 2 deletions(-) create mode 100644 src/metric-spaces/apartness-located-metric-spaces.lagda.md create mode 100644 src/real-numbers/located-metric-space-of-real-numbers.lagda.md diff --git a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md index 85668704afe..fde4689bf76 100644 --- a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md @@ -226,6 +226,16 @@ module _ eq-add-split-ℚ⁺ abstract + le-left-summand-split-ℚ⁺ : le-ℚ⁺ left-summand-split-ℚ⁺ x + le-left-summand-split-ℚ⁺ = le-mediant-zero-ℚ⁺ x + + le-right-summand-split-ℚ⁺ : le-ℚ⁺ right-summand-split-ℚ⁺ x + le-right-summand-split-ℚ⁺ = + tr + ( le-ℚ⁺ right-summand-split-ℚ⁺) + ( eq-add-split-ℚ⁺) + ( le-right-add-ℚ⁺ left-summand-split-ℚ⁺ right-summand-split-ℚ⁺) + le-add-split-ℚ⁺ : (p q r s : ℚ) → le-ℚ p (q +ℚ rational-ℚ⁺ left-summand-split-ℚ⁺) → diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 4dd23a4e057..d08a6ffd1f1 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -56,6 +56,7 @@ metric space, `N d₂ x y` [or](foundation.disjunction.md) ```agda module metric-spaces where +open import metric-spaces.apartness-located-metric-spaces public open import metric-spaces.approximations-located-metric-spaces public open import metric-spaces.approximations-metric-spaces public open import metric-spaces.bounded-distance-decompositions-of-metric-spaces public diff --git a/src/metric-spaces/apartness-located-metric-spaces.lagda.md b/src/metric-spaces/apartness-located-metric-spaces.lagda.md new file mode 100644 index 00000000000..4aeb3403b34 --- /dev/null +++ b/src/metric-spaces/apartness-located-metric-spaces.lagda.md @@ -0,0 +1,170 @@ +# Apartness in located metric spaces + +```agda +module metric-spaces.apartness-located-metric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-positive-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.strict-inequality-positive-rational-numbers + +open import foundation.apartness-relations +open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.empty-types +open import foundation.existential-quantification +open import foundation.negation +open import foundation.propositional-truncations +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import logic.functoriality-existential-quantification + +open import metric-spaces.located-metric-spaces +``` + +
+ +## Idea + +A [located metric space](metric-spaces.located-metric-spaces.md) `M` induces an +[apartness relation](foundation.apartness-relations.md) `#` such that `x # y` if +there [exists](foundation.existential-quantification.md) an `ε : ℚ⁺` such that +`x` and `y` are [not](foundation.negation.md) in an `ε`-neighborhood of each +other. + +## Definition + +```agda +module _ + {l1 l2 : Level} (M : Located-Metric-Space l1 l2) + where + + apart-prop-Located-Metric-Space : + Relation-Prop l2 (type-Located-Metric-Space M) + apart-prop-Located-Metric-Space x y = + ∃ ℚ⁺ (λ ε → ¬' (neighborhood-prop-Located-Metric-Space M ε x y)) + + apart-Located-Metric-Space : Relation l2 (type-Located-Metric-Space M) + apart-Located-Metric-Space = + type-Relation-Prop apart-prop-Located-Metric-Space +``` + +## Properties + +### The apartness relation of a located metric space is antireflexive + +```agda +module _ + {l1 l2 : Level} (M : Located-Metric-Space l1 l2) + where + + abstract + is-antireflexive-apart-Located-Metric-Space : + is-antireflexive (apart-prop-Located-Metric-Space M) + is-antireflexive-apart-Located-Metric-Space x = + elim-exists + ( empty-Prop) + ( λ ε ¬Nεxx → ¬Nεxx (refl-neighborhood-Located-Metric-Space M ε x)) +``` + +### The apartness relation of a located metric space is symmetric + +```agda +module _ + {l1 l2 : Level} (M : Located-Metric-Space l1 l2) + where + + abstract + is-symmetric-apart-Located-Metric-Space : + is-symmetric (apart-Located-Metric-Space M) + is-symmetric-apart-Located-Metric-Space x y = + map-tot-exists + ( λ ε ¬Nεxy Nεyx → + ¬Nεxy (symmetric-neighborhood-Located-Metric-Space M ε y x Nεyx)) +``` + +### The apartness relation of a located metric space is cotransitive + +```agda +module _ + {l1 l2 : Level} (M : Located-Metric-Space l1 l2) + where + + abstract + is-cotransitive-apart-Located-Metric-Space : + is-cotransitive (apart-prop-Located-Metric-Space M) + is-cotransitive-apart-Located-Metric-Space x y z x#y = + let + motive = + apart-prop-Located-Metric-Space M x z ∨ + apart-prop-Located-Metric-Space M y z + open do-syntax-trunc-Prop motive + in do + (dxy , ¬Ndxy) ← x#y + let (δ , ε , δ+ε=dxy) = split-ℚ⁺ dxy + elim-disjunction + ( motive) + ( λ ¬Nδ'xz → + inl-disjunction (intro-exists (mediant-zero-ℚ⁺ δ) ¬Nδ'xz)) + ( λ Nδxz → + elim-disjunction + ( motive) + ( λ ¬Nε'yz → + inr-disjunction (intro-exists (mediant-zero-ℚ⁺ ε) ¬Nε'yz)) + ( λ Nεyz → + ex-falso + ( ¬Ndxy + ( tr + ( λ d → neighborhood-Located-Metric-Space M d x y) + ( δ+ε=dxy) + ( triangular-neighborhood-Located-Metric-Space M + ( x) + ( z) + ( y) + ( δ) + ( ε) + ( symmetric-neighborhood-Located-Metric-Space M + ( ε) + ( y) + ( z) + ( Nεyz)) + ( Nδxz))))) + ( is-located-Located-Metric-Space M + ( y) + ( z) + ( mediant-zero-ℚ⁺ ε) + ( ε) + ( le-mediant-zero-ℚ⁺ ε))) + ( is-located-Located-Metric-Space M + ( x) + ( z) + ( mediant-zero-ℚ⁺ δ) + ( δ) + ( le-mediant-zero-ℚ⁺ δ)) +``` + +### The apartness relation on located metric spaces is an apartness relation + +```agda +module _ + {l1 l2 : Level} (M : Located-Metric-Space l1 l2) + where + + is-apartness-relation-apart-Located-Metric-Space : + is-apartness-relation (apart-prop-Located-Metric-Space M) + is-apartness-relation-apart-Located-Metric-Space = + ( is-antireflexive-apart-Located-Metric-Space M , + is-symmetric-apart-Located-Metric-Space M , + is-cotransitive-apart-Located-Metric-Space M) + + apartness-relation-Located-Metric-Space : + Apartness-Relation l2 (type-Located-Metric-Space M) + apartness-relation-Located-Metric-Space = + ( apart-prop-Located-Metric-Space M , + is-apartness-relation-apart-Located-Metric-Space) +``` diff --git a/src/metric-spaces/located-metric-spaces.lagda.md b/src/metric-spaces/located-metric-spaces.lagda.md index 1fef763229a..60354eb0195 100644 --- a/src/metric-spaces/located-metric-spaces.lagda.md +++ b/src/metric-spaces/located-metric-spaces.lagda.md @@ -7,12 +7,14 @@ module metric-spaces.located-metric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-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-positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.binary-relations open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.disjunction @@ -101,9 +103,39 @@ module _ type-Located-Metric-Space = type-Metric-Space metric-space-Located-Metric-Space - is-located-metric-space-Located-Metric-Space : + neighborhood-prop-Located-Metric-Space : + ℚ⁺ → Relation-Prop l2 type-Located-Metric-Space + neighborhood-prop-Located-Metric-Space = + neighborhood-prop-Metric-Space metric-space-Located-Metric-Space + + neighborhood-Located-Metric-Space : ℚ⁺ → Relation l2 type-Located-Metric-Space + neighborhood-Located-Metric-Space = + neighborhood-Metric-Space metric-space-Located-Metric-Space + + refl-neighborhood-Located-Metric-Space : + (d : ℚ⁺) (x : type-Located-Metric-Space) → + neighborhood-Located-Metric-Space d x x + refl-neighborhood-Located-Metric-Space = + refl-neighborhood-Metric-Space metric-space-Located-Metric-Space + + symmetric-neighborhood-Located-Metric-Space : + (d : ℚ⁺) (x y : type-Located-Metric-Space) → + neighborhood-Located-Metric-Space d x y → + neighborhood-Located-Metric-Space d y x + symmetric-neighborhood-Located-Metric-Space = + symmetric-neighborhood-Metric-Space metric-space-Located-Metric-Space + + triangular-neighborhood-Located-Metric-Space : + (x y z : type-Located-Metric-Space) (d₁ d₂ : ℚ⁺) → + neighborhood-Located-Metric-Space d₂ y z → + neighborhood-Located-Metric-Space d₁ x y → + neighborhood-Located-Metric-Space (d₁ +ℚ⁺ d₂) x z + triangular-neighborhood-Located-Metric-Space = + triangular-neighborhood-Metric-Space metric-space-Located-Metric-Space + + is-located-Located-Metric-Space : is-located-Metric-Space metric-space-Located-Metric-Space - is-located-metric-space-Located-Metric-Space = pr2 X + is-located-Located-Metric-Space = pr2 X set-Located-Metric-Space : Set l1 set-Located-Metric-Space = set-Metric-Space metric-space-Located-Metric-Space diff --git a/src/metric-spaces/metrics-of-metric-spaces.lagda.md b/src/metric-spaces/metrics-of-metric-spaces.lagda.md index 641b00f2ba4..c87bef666af 100644 --- a/src/metric-spaces/metrics-of-metric-spaces.lagda.md +++ b/src/metric-spaces/metrics-of-metric-spaces.lagda.md @@ -11,6 +11,7 @@ open import elementary-number-theory.positive-rational-numbers open import foundation.dependent-pair-types open import foundation.equivalences +open import foundation.functoriality-disjunction open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositional-truncations @@ -20,10 +21,13 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.equality-of-metric-spaces +open import metric-spaces.located-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.metrics +open import real-numbers.dedekind-real-numbers open import real-numbers.nonnegative-real-numbers +open import real-numbers.rational-real-numbers open import real-numbers.strict-inequality-nonnegative-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -206,6 +210,43 @@ module _ isometric-equiv-metric-is-metric-of-Metric-Space = (id-equiv , is-metric-M-ρ) ``` +### If `ρ` is a metric for a metric space `M`, then `M` is located + +```agda +module _ + {l1 l2 : Level} (M : Metric-Space l1 l2) + (ρ : distance-function l2 (set-Metric-Space M)) + (is-metric-M-ρ : is-metric-of-Metric-Space M ρ) + where + + abstract + is-located-is-metric-of-Metric-Space : is-located-Metric-Space M + is-located-is-metric-of-Metric-Space x y δ ε δ<ε = + map-disjunction + ( λ δ<ρxy Nδxy → + not-le-leq-ℝ + ( real-ℝ⁰⁺ (ρ x y)) + ( real-ℚ⁺ δ) + ( forward-implication (is-metric-M-ρ δ x y) Nδxy) + ( le-real-is-in-lower-cut-ℚ + ( rational-ℚ⁺ δ) + ( real-ℝ⁰⁺ (ρ x y)) + ( δ<ρxy))) + ( λ ρxy<ε → + backward-implication + ( is-metric-M-ρ ε x y) + ( leq-le-ℝ _ _ + ( le-real-is-in-upper-cut-ℚ + ( rational-ℚ⁺ ε) + ( real-ℝ⁰⁺ (ρ x y)) + ( ρxy<ε)))) + ( is-located-lower-upper-cut-ℝ + ( real-ℝ⁰⁺ (ρ x y)) + ( rational-ℚ⁺ δ) + ( rational-ℚ⁺ ε) + ( δ<ε)) +``` + ### If `ρ` is a metric for a metric space `M` at the appropriate universe level, then `M` is equal to the metric space induced by `ρ` ```agda diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 3e2872c1e15..51c2d072482 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -37,6 +37,7 @@ open import real-numbers.large-multiplicative-monoid-of-real-numbers public open import real-numbers.large-ring-of-real-numbers public open import real-numbers.limits-sequences-real-numbers public open import real-numbers.lipschitz-continuity-multiplication-real-numbers public +open import real-numbers.located-metric-space-of-real-numbers public open import real-numbers.lower-dedekind-real-numbers public open import real-numbers.maximum-finite-families-real-numbers public open import real-numbers.maximum-inhabited-finitely-enumerable-subsets-real-numbers public diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index 31770cd4ac0..209984acc3d 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -13,8 +13,12 @@ open import foundation.disjunction open import foundation.empty-types open import foundation.function-types open import foundation.functoriality-disjunction +open import foundation.dependent-pair-types +open import foundation.binary-relations open import foundation.identity-types +open import foundation.existential-quantification open import foundation.large-apartness-relations +open import foundation.propositional-truncations open import foundation.large-binary-relations open import foundation.negated-equality open import foundation.negation @@ -28,7 +32,15 @@ open import real-numbers.dedekind-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.strict-inequalities-addition-real-numbers +open import logic.functoriality-existential-quantification +open import metric-spaces.apartness-located-metric-spaces + +open import real-numbers.addition-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.located-metric-space-of-real-numbers open import real-numbers.strict-inequality-real-numbers +open import real-numbers.metric-space-of-real-numbers ```
@@ -191,3 +203,55 @@ abstract ( y~y') ( x#y)) ``` + +### Apartness on the real numbers is equivalent to apartness in the located metric space of real numbers + +```agda +apart-prop-located-metric-space-ℝ : {l : Level} → Relation-Prop l (ℝ l) +apart-prop-located-metric-space-ℝ {l} = + apart-prop-Located-Metric-Space (located-metric-space-ℝ l) + +apart-located-metric-space-ℝ : {l : Level} → Relation l (ℝ l) +apart-located-metric-space-ℝ {l} = + apart-Located-Metric-Space (located-metric-space-ℝ l) + +module _ + {l : Level} (x y : ℝ l) + where + + abstract opaque + apart-located-metric-space-apart-ℝ : + apart-ℝ x y → apart-located-metric-space-ℝ x y + apart-located-metric-space-apart-ℝ = + elim-disjunction + ( apart-prop-located-metric-space-ℝ x y) + ( λ xImports + +```agda +open import metric-spaces.located-metric-spaces +open import metric-spaces.metrics-of-metric-spaces +open import real-numbers.distance-real-numbers +open import real-numbers.metric-space-of-real-numbers +open import foundation.universe-levels +open import foundation.dependent-pair-types +``` + +## Idea + +The [metric space of real numbers](real-numbers.metric-space-of-real-numbers.md) +is [located](metric-spaces.located-metric-spaces.md). + +## Definition + +```agda +abstract + is-located-metric-space-ℝ : + (l : Level) → is-located-Metric-Space (metric-space-ℝ l) + is-located-metric-space-ℝ l = + is-located-is-metric-of-Metric-Space + ( metric-space-ℝ l) + ( nonnegative-dist-ℝ) + ( dist-is-metric-of-metric-space-ℝ l) + +located-metric-space-ℝ : (l : Level) → Located-Metric-Space (lsuc l) l +located-metric-space-ℝ l = (metric-space-ℝ l , is-located-metric-space-ℝ l) +``` From b0404c0d9896a76c738fe066ff86532dac326b6a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 11:02:07 -0800 Subject: [PATCH 058/134] Progress --- src/real-numbers/absolute-value-real-numbers.lagda.md | 1 + src/real-numbers/apartness-real-numbers.lagda.md | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index b2b49882e2c..42441789952 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -34,6 +34,7 @@ open import real-numbers.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.nonnegative-real-numbers +open import real-numbers.nonzero-real-numbers open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index 209984acc3d..12c3d58a6ca 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -31,7 +31,6 @@ 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.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers open import logic.functoriality-existential-quantification open import metric-spaces.apartness-located-metric-spaces @@ -163,8 +162,8 @@ abstract preserves-apart-neg-ℝ x y = elim-disjunction ( apart-prop-ℝ _ _) - ( inr-disjunction ∘ neg-le-ℝ) - ( inl-disjunction ∘ neg-le-ℝ) + ( inr-disjunction ∘ neg-le-ℝ _ _) + ( inl-disjunction ∘ neg-le-ℝ _ _) ``` ### Apartness is preserved by similarity @@ -246,12 +245,12 @@ module _ apart-apart-located-metric-space-ℝ : apart-located-metric-space-ℝ x y → apart-ℝ x y - apart-apart-located-metric-space-ℝ = + apart-apart-located-metric-space-ℝ x#y = let motive = apart-prop-ℝ x y open do-syntax-trunc-Prop motive in do - ( ε , ¬Nεxy) ← ? + ( ε , ¬Nεxy) ← x#y {! !} ``` From 53d3a169bc1da5aed5d303866030de86273f9007 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 11:52:36 -0800 Subject: [PATCH 059/134] Progress --- .../metrics-of-metric-spaces.lagda.md | 15 +-- .../absolute-value-real-numbers.lagda.md | 31 ++++- .../apartness-real-numbers.lagda.md | 109 ++++++++++++++---- ...ated-metric-space-of-real-numbers.lagda.md | 8 +- .../nonzero-real-numbers.lagda.md | 84 +++++++++----- .../positive-real-numbers.lagda.md | 49 ++++++++ 6 files changed, 229 insertions(+), 67 deletions(-) diff --git a/src/metric-spaces/metrics-of-metric-spaces.lagda.md b/src/metric-spaces/metrics-of-metric-spaces.lagda.md index d61d43e03f8..49b8a73e747 100644 --- a/src/metric-spaces/metrics-of-metric-spaces.lagda.md +++ b/src/metric-spaces/metrics-of-metric-spaces.lagda.md @@ -25,12 +25,11 @@ open import metric-spaces.located-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.metrics -open import real-numbers.dedekind-real-numbers -open import real-numbers.nonnegative-real-numbers -open import real-numbers.rational-real-numbers open import real-numbers.addition-nonnegative-real-numbers +open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-nonnegative-real-numbers open import real-numbers.nonnegative-real-numbers +open import real-numbers.rational-real-numbers open import real-numbers.saturation-inequality-nonnegative-real-numbers open import real-numbers.similarity-nonnegative-real-numbers open import real-numbers.strict-inequalities-addition-real-numbers @@ -235,22 +234,16 @@ module _ ( real-ℚ⁺ δ) ( forward-implication (is-metric-M-ρ δ x y) Nδxy) ( le-real-is-in-lower-cut-ℚ - ( rational-ℚ⁺ δ) ( real-ℝ⁰⁺ (ρ x y)) ( δ<ρxy))) ( λ ρxy<ε → backward-implication ( is-metric-M-ρ ε x y) - ( leq-le-ℝ _ _ + ( leq-le-ℝ ( le-real-is-in-upper-cut-ℚ - ( rational-ℚ⁺ ε) ( real-ℝ⁰⁺ (ρ x y)) ( ρxy<ε)))) - ( is-located-lower-upper-cut-ℝ - ( real-ℝ⁰⁺ (ρ x y)) - ( rational-ℚ⁺ δ) - ( rational-ℚ⁺ ε) - ( δ<ε)) + ( is-located-lower-upper-cut-ℝ (real-ℝ⁰⁺ (ρ x y)) δ<ε) ``` ### If `ρ` is a metric for a metric space `M` at the appropriate universe level, then `M` is equal to the metric space induced by `ρ` diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index cb70eb81914..c3fa5795e3d 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -28,6 +28,7 @@ open import metric-spaces.short-functions-metric-spaces open import real-numbers.addition-real-numbers open import real-numbers.binary-maximum-real-numbers open import real-numbers.dedekind-real-numbers +open import real-numbers.difference-real-numbers open import real-numbers.inequalities-addition-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.isometry-negation-real-numbers @@ -35,8 +36,8 @@ open import real-numbers.metric-space-of-real-numbers open import real-numbers.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.negation-real-numbers +open import real-numbers.negative-real-numbers open import real-numbers.nonnegative-real-numbers -open import real-numbers.nonzero-real-numbers open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers @@ -44,6 +45,7 @@ open import real-numbers.saturation-inequality-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.square-roots-nonnegative-real-numbers open import real-numbers.squares-real-numbers +open import real-numbers.strict-inequality-real-numbers ``` @@ -134,11 +136,24 @@ abstract opaque ( x) ( 0≤x) ( tr (leq-ℝ (neg-ℝ x)) neg-zero-ℝ (neg-leq-ℝ 0≤x)))) +``` + +### The absolute value of a positive real number is itself +```agda +abstract abs-real-ℝ⁺ : {l : Level} (x : ℝ⁺ l) → abs-ℝ (real-ℝ⁺ x) = real-ℝ⁺ x abs-real-ℝ⁺ x = abs-real-ℝ⁰⁺ (nonnegative-ℝ⁺ x) ``` +### The absolute value of a negative real number is its negation + +```agda +abstract + abs-real-ℝ⁻ : {l : Level} (x : ℝ⁻ l) → abs-ℝ (real-ℝ⁻ x) = neg-ℝ (real-ℝ⁻ x) + abs-real-ℝ⁻ x⁻@(x , _) = inv (abs-neg-ℝ x) ∙ abs-real-ℝ⁺ (neg-ℝ⁻ x⁻) +``` + ### `x` is between `-|x|` and `|x|` ```agda @@ -404,3 +419,17 @@ abstract = abs-ℝ x *ℝ abs-ℝ y by inv (ap-mul-ℝ (eq-abs-sqrt-square-ℝ x) (eq-abs-sqrt-square-ℝ y)) ``` + +### For any `ε : ℚ⁺`, `(abs-ℝ x - ε < x) ∨ (abs-ℝ x - ε < -x)` + +```agda +abstract opaque + unfolding abs-ℝ + + approximate-below-abs-ℝ : + {l : Level} (x : ℝ l) (ε : ℚ⁺) → + disjunction-type + ( le-ℝ (abs-ℝ x -ℝ real-ℚ⁺ ε) x) + ( le-ℝ (abs-ℝ x -ℝ real-ℚ⁺ ε) (neg-ℝ x)) + approximate-below-abs-ℝ x = approximate-below-max-ℝ x (neg-ℝ x) +``` diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index f7d84a46a63..75d5f030b22 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -7,40 +7,39 @@ module real-numbers.apartness-real-numbers where
Imports ```agda -open import foundation.apartness-relations +open import foundation.binary-relations open import foundation.binary-transport +open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.empty-types open import foundation.function-types open import foundation.functoriality-disjunction -open import foundation.dependent-pair-types -open import foundation.binary-relations -open import foundation.identity-types -open import foundation.existential-quantification open import foundation.large-apartness-relations -open import foundation.propositional-truncations open import foundation.large-binary-relations +open import foundation.logical-equivalences open import foundation.negated-equality open import foundation.negation open import foundation.propositions -open import foundation.transport-along-identifications open import foundation.universe-levels -open import real-numbers.absolute-value-real-numbers -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.similarity-real-numbers open import logic.functoriality-existential-quantification + open import metric-spaces.apartness-located-metric-spaces +open import real-numbers.absolute-value-real-numbers open import real-numbers.addition-real-numbers -open import real-numbers.rational-real-numbers open import real-numbers.dedekind-real-numbers +open import real-numbers.difference-real-numbers +open import real-numbers.distance-real-numbers open import real-numbers.located-metric-space-of-real-numbers +open import real-numbers.metric-space-of-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.nonzero-real-numbers +open import real-numbers.positive-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers open import real-numbers.strict-inequalities-addition-real-numbers open import real-numbers.strict-inequality-real-numbers -open import real-numbers.metric-space-of-real-numbers ```
@@ -204,6 +203,63 @@ abstract ( x#y)) ``` +### Two real numbers are apart if and only if their difference is nonzero + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) + where + + abstract + is-nonzero-diff-is-apart-ℝ : apart-ℝ x y → is-nonzero-ℝ (x -ℝ y) + is-nonzero-diff-is-apart-ℝ x#y = + apart-right-sim-ℝ + ( x -ℝ y) + ( y -ℝ y) + ( zero-ℝ) + ( right-inverse-law-add-ℝ y) + ( preserves-apart-right-add-ℝ (neg-ℝ y) x y x#y) + + apart-is-nonzero-diff-ℝ : is-nonzero-ℝ (x -ℝ y) → apart-ℝ x y + apart-is-nonzero-diff-ℝ x-y#0 = + apart-sim-ℝ + ( cancel-right-diff-add-ℝ x y) + ( sim-eq-ℝ (left-unit-law-add-ℝ y)) + ( preserves-apart-right-add-ℝ y _ _ x-y#0) + + nonzero-diff-apart-ℝ : apart-ℝ x y → nonzero-ℝ (l1 ⊔ l2) + nonzero-diff-apart-ℝ x#y = (x -ℝ y , is-nonzero-diff-is-apart-ℝ x#y) +``` + +### Apartness on the real numbers is equivalent to having a positive distance + +```agda +module _ + {l1 l2 : Level} + (x : ℝ l1) + (y : ℝ l2) + where + + abstract + apart-is-positive-dist-ℝ : is-positive-ℝ (dist-ℝ x y) → apart-ℝ x y + apart-is-positive-dist-ℝ 0<|x-y| = + apart-is-nonzero-diff-ℝ + ( x) + ( y) + ( is-nonzero-is-positive-abs-ℝ (x -ℝ y) 0<|x-y|) + + is-positive-dist-apart-ℝ : apart-ℝ x y → is-positive-ℝ (dist-ℝ x y) + is-positive-dist-apart-ℝ x#y = + is-positive-abs-is-nonzero-ℝ + ( x -ℝ y) + ( is-nonzero-diff-is-apart-ℝ x y x#y) + + apart-iff-is-positive-dist-ℝ : + apart-ℝ x y ↔ is-positive-ℝ (dist-ℝ x y) + apart-iff-is-positive-dist-ℝ = + ( is-positive-dist-apart-ℝ , apart-is-positive-dist-ℝ) +``` + ### Apartness on the real numbers is equivalent to apartness in the located metric space of real numbers ```agda @@ -216,10 +272,11 @@ apart-located-metric-space-ℝ {l} = apart-Located-Metric-Space (located-metric-space-ℝ l) module _ - {l : Level} (x y : ℝ l) + {l : Level} + (x y : ℝ l) where - abstract opaque + abstract apart-located-metric-space-apart-ℝ : apart-ℝ x y → apart-located-metric-space-ℝ x y apart-located-metric-space-apart-ℝ = @@ -247,11 +304,17 @@ module _ apart-apart-located-metric-space-ℝ : apart-located-metric-space-ℝ x y → apart-ℝ x y apart-apart-located-metric-space-ℝ x#y = - let - motive = apart-prop-ℝ x y - open do-syntax-trunc-Prop motive - in do - ( ε , ¬Nεxy) ← x#y - {! !} - + apart-is-positive-dist-ℝ + ( x) + ( y) + ( is-positive-exists-not-le-positive-rational-ℝ + ( dist-ℝ x y) + ( map-tot-exists + ( λ ε ¬Nεxy |x-y|≤ε → ¬Nεxy (neighborhood-dist-ℝ ε x y |x-y|≤ε)) + ( x#y))) + + apart-iff-apart-located-metric-space-ℝ : + apart-ℝ x y ↔ apart-located-metric-space-ℝ x y + apart-iff-apart-located-metric-space-ℝ = + ( apart-located-metric-space-apart-ℝ , apart-apart-located-metric-space-ℝ) ``` diff --git a/src/real-numbers/located-metric-space-of-real-numbers.lagda.md b/src/real-numbers/located-metric-space-of-real-numbers.lagda.md index 27314945626..92ca8636c54 100644 --- a/src/real-numbers/located-metric-space-of-real-numbers.lagda.md +++ b/src/real-numbers/located-metric-space-of-real-numbers.lagda.md @@ -9,14 +9,18 @@ module real-numbers.located-metric-space-of-real-numbers where
Imports ```agda +open import foundation.dependent-pair-types +open import foundation.universe-levels + open import metric-spaces.located-metric-spaces open import metric-spaces.metrics-of-metric-spaces + open import real-numbers.distance-real-numbers open import real-numbers.metric-space-of-real-numbers -open import foundation.universe-levels -open import foundation.dependent-pair-types ``` +
+ ## Idea The [metric space of real numbers](real-numbers.metric-space-of-real-numbers.md) diff --git a/src/real-numbers/nonzero-real-numbers.lagda.md b/src/real-numbers/nonzero-real-numbers.lagda.md index 3a8df09cc9c..f2d2fe8590e 100644 --- a/src/real-numbers/nonzero-real-numbers.lagda.md +++ b/src/real-numbers/nonzero-real-numbers.lagda.md @@ -9,9 +9,11 @@ module real-numbers.nonzero-real-numbers where
Imports ```agda +open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.identity-types +open import foundation.propositional-truncations open import foundation.propositions open import foundation.subtypes open import foundation.transport-along-identifications @@ -19,14 +21,15 @@ open import foundation.universe-levels open import real-numbers.absolute-value-real-numbers open import real-numbers.addition-real-numbers -open import real-numbers.apartness-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.difference-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.negative-real-numbers +open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.strict-inequalities-addition-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -45,7 +48,7 @@ equivalently if it is [negative](real-numbers.negative-real-numbers.md) ```agda is-nonzero-prop-ℝ : {l : Level} → ℝ l → Prop l -is-nonzero-prop-ℝ x = apart-prop-ℝ x zero-ℝ +is-nonzero-prop-ℝ x = is-negative-prop-ℝ x ∨ is-positive-prop-ℝ x is-nonzero-ℝ : {l : Level} → ℝ l → UU l is-nonzero-ℝ x = type-Prop (is-nonzero-prop-ℝ x) @@ -94,34 +97,6 @@ eq-nonzero-ℝ : eq-nonzero-ℝ _ _ = eq-type-subtype is-nonzero-prop-ℝ ``` -### Two real numbers are apart if and only if their difference is nonzero - -```agda -module _ - {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) - where - - abstract - is-nonzero-diff-is-apart-ℝ : apart-ℝ x y → is-nonzero-ℝ (x -ℝ y) - is-nonzero-diff-is-apart-ℝ x#y = - apart-right-sim-ℝ - ( x -ℝ y) - ( y -ℝ y) - ( zero-ℝ) - ( right-inverse-law-add-ℝ y) - ( preserves-apart-right-add-ℝ (neg-ℝ y) x y x#y) - - is-apart-is-nonzero-diff-ℝ : is-nonzero-ℝ (x -ℝ y) → apart-ℝ x y - is-apart-is-nonzero-diff-ℝ x-y#0 = - apart-sim-ℝ - ( cancel-right-diff-add-ℝ x y) - ( sim-eq-ℝ (left-unit-law-add-ℝ y)) - ( preserves-apart-right-add-ℝ y _ _ x-y#0) - - nonzero-diff-apart-ℝ : apart-ℝ x y → nonzero-ℝ (l1 ⊔ l2) - nonzero-diff-apart-ℝ x#y = (x -ℝ y , is-nonzero-diff-is-apart-ℝ x#y) -``` - ### If `x < y`, then `y - x` is nonzero ```agda @@ -138,3 +113,52 @@ nonzero-diff-le-abs-ℝ : nonzero-diff-le-abs-ℝ {x = x} {y = y} |x| Date: Sat, 8 Nov 2025 11:53:39 -0800 Subject: [PATCH 060/134] Update src/real-numbers/dedekind-real-numbers.lagda.md Co-authored-by: Fredrik Bakke --- src/real-numbers/dedekind-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index 0c1531e91fc..d846a3556de 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -312,7 +312,7 @@ module _ ( lower-cut-ℝ x p) ( upper-cut-ℝ x q) ( pr2 I) - ( is-located-lower-upper-cut-ℝ x ( pr1 I))) + ( is-located-lower-upper-cut-ℝ x (pr1 I))) subset-lower-complement-upper-cut-lower-cut-ℝ : lower-cut-ℝ x ⊆ lower-complement-upper-cut-ℝ x From d9aeb7fda4ea62f8502e4183945b386f770f1137 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 11:55:14 -0800 Subject: [PATCH 061/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../strict-inequalities-addition-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md b/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md index 6db92caf63a..1c8789dd676 100644 --- a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md @@ -293,7 +293,7 @@ module _ {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) (p : ℚ) where - opaque + abstract opaque unfolding add-ℝ le-split-add-rational-ℝ : From defa2134d99b91f3aaf396f1200f6e6c47458ecd Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 11:55:32 -0800 Subject: [PATCH 062/134] Update src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md Co-authored-by: Fredrik Bakke --- .../strict-inequalities-addition-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md b/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md index 1c8789dd676..9403114e3a4 100644 --- a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md @@ -59,7 +59,7 @@ module _ {l1 l2 l3 : Level} (z : ℝ l1) (x : ℝ l2) (y : ℝ l3) where - opaque + abstract opaque unfolding add-ℝ le-ℝ preserves-le-right-add-ℝ : le-ℝ x y → le-ℝ (x +ℝ z) (y +ℝ z) From fa31c521b7092f0e46eea6d3cf8904418d952271 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 11:55:52 -0800 Subject: [PATCH 063/134] Update src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md Co-authored-by: Fredrik Bakke --- .../strict-inequalities-addition-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md b/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md index 9403114e3a4..24417dab873 100644 --- a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md @@ -44,7 +44,7 @@ open import real-numbers.strict-inequality-real-numbers ## Idea -This file describes lemmas about +On this page we describe lemmas about [strict inequalities](real-numbers.strict-inequality-real-numbers.md) of [real numbers](real-numbers.dedekind-real-numbers.md) related to [addition](real-numbers.addition-real-numbers.md) and From 45757e8f51bf8fccacfd913a0fed7853b7eb9726 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 11:57:09 -0800 Subject: [PATCH 064/134] Update src/real-numbers/saturation-inequality-nonnegative-real-numbers.lagda.md Co-authored-by: Fredrik Bakke --- .../saturation-inequality-nonnegative-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/saturation-inequality-nonnegative-real-numbers.lagda.md b/src/real-numbers/saturation-inequality-nonnegative-real-numbers.lagda.md index 037e54c2f2c..69f3a5fb114 100644 --- a/src/real-numbers/saturation-inequality-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/saturation-inequality-nonnegative-real-numbers.lagda.md @@ -36,7 +36,7 @@ Despite being a property of [inequality of nonnegative real numbers](real-numbers.inequality-nonnegative-real-numbers.md), this is much easier to prove via [strict inequality](real-numbers.strict-inequality-nonnegative-real-numbers.md), -so it is moved to its own file to prevent circular dependency. +so this page is dedicated to just this property to prevent circular dependency. ## Definition From 70cef9b710f6564e4559bff99dae0a07f25883ca Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 11:59:33 -0800 Subject: [PATCH 065/134] Rename files --- ...trics-of-metric-spaces-are-uniformly-continuous.lagda.md | 2 +- src/metric-spaces/metrics-of-metric-spaces.lagda.md | 2 +- src/real-numbers.lagda.md | 6 +++--- src/real-numbers/absolute-value-real-numbers.lagda.md | 2 +- src/real-numbers/addition-nonnegative-real-numbers.lagda.md | 4 ++-- src/real-numbers/binary-maximum-real-numbers.lagda.md | 2 +- .../cauchy-completeness-dedekind-real-numbers.lagda.md | 2 +- src/real-numbers/distance-real-numbers.lagda.md | 2 +- ...ualities-addition-and-subtraction-real-numbers.lagda.md} | 2 +- src/real-numbers/infima-families-real-numbers.lagda.md | 2 +- .../inhabited-totally-bounded-subsets-real-numbers.lagda.md | 4 ++-- src/real-numbers/isometry-addition-real-numbers.lagda.md | 2 +- src/real-numbers/isometry-negation-real-numbers.lagda.md | 2 +- ...ipschitz-continuity-multiplication-real-numbers.lagda.md | 2 +- .../maximum-finite-families-real-numbers.lagda.md | 2 +- src/real-numbers/metric-space-of-real-numbers.lagda.md | 4 ++-- src/real-numbers/nonnegative-real-numbers.lagda.md | 2 +- src/real-numbers/positive-real-numbers.lagda.md | 2 +- .../saturation-inequality-real-numbers.lagda.md | 2 +- ... => short-function-binary-maximum-real-numbers.lagda.md} | 4 ++-- ...ualities-addition-and-subtraction-real-numbers.lagda.md} | 2 +- src/real-numbers/suprema-families-real-numbers.lagda.md | 2 +- ...addition-subtraction-cuts-dedekind-real-numbers.lagda.md | 2 +- 23 files changed, 29 insertions(+), 29 deletions(-) rename src/real-numbers/{inequalities-addition-real-numbers.lagda.md => inequalities-addition-and-subtraction-real-numbers.lagda.md} (98%) rename src/real-numbers/{short-binary-maximum-real-numbers.lagda.md => short-function-binary-maximum-real-numbers.lagda.md} (97%) rename src/real-numbers/{strict-inequalities-addition-real-numbers.lagda.md => strict-inequalities-addition-and-subtraction-real-numbers.lagda.md} (99%) diff --git a/src/metric-spaces/metrics-of-metric-spaces-are-uniformly-continuous.lagda.md b/src/metric-spaces/metrics-of-metric-spaces-are-uniformly-continuous.lagda.md index c33453db283..0eed19b1799 100644 --- a/src/metric-spaces/metrics-of-metric-spaces-are-uniformly-continuous.lagda.md +++ b/src/metric-spaces/metrics-of-metric-spaces-are-uniformly-continuous.lagda.md @@ -32,7 +32,7 @@ open import order-theory.large-posets open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.distance-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.metric-space-of-nonnegative-real-numbers open import real-numbers.nonnegative-real-numbers diff --git a/src/metric-spaces/metrics-of-metric-spaces.lagda.md b/src/metric-spaces/metrics-of-metric-spaces.lagda.md index d113ff5bac4..271f974d53d 100644 --- a/src/metric-spaces/metrics-of-metric-spaces.lagda.md +++ b/src/metric-spaces/metrics-of-metric-spaces.lagda.md @@ -28,7 +28,7 @@ open import real-numbers.inequality-nonnegative-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.saturation-inequality-nonnegative-real-numbers open import real-numbers.similarity-nonnegative-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-nonnegative-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 876511f445d..3b84f6c0b0a 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -23,7 +23,7 @@ open import real-numbers.difference-real-numbers public open import real-numbers.distance-real-numbers public open import real-numbers.enclosing-closed-rational-intervals-real-numbers public open import real-numbers.finitely-enumerable-subsets-real-numbers public -open import real-numbers.inequalities-addition-real-numbers public +open import real-numbers.inequalities-addition-and-subtraction-real-numbers public open import real-numbers.inequality-lower-dedekind-real-numbers public open import real-numbers.inequality-nonnegative-real-numbers public open import real-numbers.inequality-positive-real-numbers public @@ -75,13 +75,13 @@ open import real-numbers.real-numbers-from-lower-dedekind-real-numbers public open import real-numbers.real-numbers-from-upper-dedekind-real-numbers public open import real-numbers.saturation-inequality-nonnegative-real-numbers public open import real-numbers.saturation-inequality-real-numbers public -open import real-numbers.short-binary-maximum-real-numbers public +open import real-numbers.short-function-binary-maximum-real-numbers public open import real-numbers.similarity-nonnegative-real-numbers public open import real-numbers.similarity-positive-real-numbers public open import real-numbers.similarity-real-numbers public open import real-numbers.square-roots-nonnegative-real-numbers public open import real-numbers.squares-real-numbers public -open import real-numbers.strict-inequalities-addition-real-numbers public +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers public open import real-numbers.strict-inequality-nonnegative-real-numbers public open import real-numbers.strict-inequality-positive-real-numbers public open import real-numbers.strict-inequality-real-numbers public diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index ba2031c0029..4f77b3aad2d 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -28,7 +28,7 @@ open import metric-spaces.short-functions-metric-spaces open import real-numbers.addition-real-numbers open import real-numbers.binary-maximum-real-numbers open import real-numbers.dedekind-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.isometry-negation-real-numbers open import real-numbers.metric-space-of-real-numbers diff --git a/src/real-numbers/addition-nonnegative-real-numbers.lagda.md b/src/real-numbers/addition-nonnegative-real-numbers.lagda.md index 0735a723925..5298362a872 100644 --- a/src/real-numbers/addition-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/addition-nonnegative-real-numbers.lagda.md @@ -21,12 +21,12 @@ open import foundation.universe-levels open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-nonnegative-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-nonnegative-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers/binary-maximum-real-numbers.lagda.md b/src/real-numbers/binary-maximum-real-numbers.lagda.md index 69b9224d864..a321c823561 100644 --- a/src/real-numbers/binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/binary-maximum-real-numbers.lagda.md @@ -28,7 +28,7 @@ open import order-theory.least-upper-bounds-large-posets 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.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.lower-dedekind-real-numbers open import real-numbers.maximum-lower-dedekind-real-numbers diff --git a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md index ab073ba3c24..9d4f3567a1d 100644 --- a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md @@ -45,7 +45,7 @@ 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.distance-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.lower-dedekind-real-numbers open import real-numbers.metric-space-of-real-numbers diff --git a/src/real-numbers/distance-real-numbers.lagda.md b/src/real-numbers/distance-real-numbers.lagda.md index eff38740f50..8e430fb8b0a 100644 --- a/src/real-numbers/distance-real-numbers.lagda.md +++ b/src/real-numbers/distance-real-numbers.lagda.md @@ -28,7 +28,7 @@ open import real-numbers.absolute-value-real-numbers 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.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.multiplication-real-numbers diff --git a/src/real-numbers/inequalities-addition-real-numbers.lagda.md b/src/real-numbers/inequalities-addition-and-subtraction-real-numbers.lagda.md similarity index 98% rename from src/real-numbers/inequalities-addition-real-numbers.lagda.md rename to src/real-numbers/inequalities-addition-and-subtraction-real-numbers.lagda.md index b5af4c0787f..61de6c5cfbf 100644 --- a/src/real-numbers/inequalities-addition-real-numbers.lagda.md +++ b/src/real-numbers/inequalities-addition-and-subtraction-real-numbers.lagda.md @@ -3,7 +3,7 @@ ```agda {-# OPTIONS --lossy-unification #-} -module real-numbers.inequalities-addition-real-numbers where +module real-numbers.inequalities-addition-and-subtraction-real-numbers where ```
Imports diff --git a/src/real-numbers/infima-families-real-numbers.lagda.md b/src/real-numbers/infima-families-real-numbers.lagda.md index add144950d6..0b338cbe370 100644 --- a/src/real-numbers/infima-families-real-numbers.lagda.md +++ b/src/real-numbers/infima-families-real-numbers.lagda.md @@ -41,7 +41,7 @@ open import real-numbers.negation-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers open import real-numbers.subsets-real-numbers open import real-numbers.suprema-families-real-numbers diff --git a/src/real-numbers/inhabited-totally-bounded-subsets-real-numbers.lagda.md b/src/real-numbers/inhabited-totally-bounded-subsets-real-numbers.lagda.md index 21124540b7c..8a3677def8c 100644 --- a/src/real-numbers/inhabited-totally-bounded-subsets-real-numbers.lagda.md +++ b/src/real-numbers/inhabited-totally-bounded-subsets-real-numbers.lagda.md @@ -44,7 +44,7 @@ open import real-numbers.cauchy-completeness-dedekind-real-numbers open import real-numbers.closed-intervals-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.difference-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-nonnegative-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.infima-and-suprema-families-real-numbers @@ -55,7 +55,7 @@ open import real-numbers.metric-space-of-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers open import real-numbers.subsets-real-numbers open import real-numbers.suprema-families-real-numbers diff --git a/src/real-numbers/isometry-addition-real-numbers.lagda.md b/src/real-numbers/isometry-addition-real-numbers.lagda.md index a7d3686d03b..c42c49edba3 100644 --- a/src/real-numbers/isometry-addition-real-numbers.lagda.md +++ b/src/real-numbers/isometry-addition-real-numbers.lagda.md @@ -24,7 +24,7 @@ open import metric-spaces.uniformly-continuous-functions-metric-spaces open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.raising-universe-levels-real-numbers diff --git a/src/real-numbers/isometry-negation-real-numbers.lagda.md b/src/real-numbers/isometry-negation-real-numbers.lagda.md index 7e5f7562a20..e36974427a6 100644 --- a/src/real-numbers/isometry-negation-real-numbers.lagda.md +++ b/src/real-numbers/isometry-negation-real-numbers.lagda.md @@ -24,7 +24,7 @@ open import metric-spaces.metric-spaces open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.negation-real-numbers diff --git a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md index ed960956fe8..1b56e2c2444 100644 --- a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md +++ b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md @@ -36,7 +36,7 @@ open import real-numbers.arithmetically-located-dedekind-cuts open import real-numbers.dedekind-real-numbers open import real-numbers.distance-real-numbers open import real-numbers.enclosing-closed-rational-intervals-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.inhabited-totally-bounded-subsets-real-numbers open import real-numbers.metric-space-of-real-numbers diff --git a/src/real-numbers/maximum-finite-families-real-numbers.lagda.md b/src/real-numbers/maximum-finite-families-real-numbers.lagda.md index 5e757a72e78..34e2ed1f446 100644 --- a/src/real-numbers/maximum-finite-families-real-numbers.lagda.md +++ b/src/real-numbers/maximum-finite-families-real-numbers.lagda.md @@ -43,7 +43,7 @@ open import real-numbers.inequality-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers open import real-numbers.suprema-families-real-numbers diff --git a/src/real-numbers/metric-space-of-real-numbers.lagda.md b/src/real-numbers/metric-space-of-real-numbers.lagda.md index d199e3ef54d..7d78c3c4379 100644 --- a/src/real-numbers/metric-space-of-real-numbers.lagda.md +++ b/src/real-numbers/metric-space-of-real-numbers.lagda.md @@ -44,12 +44,12 @@ open import metric-spaces.triangular-rational-neighborhood-relations 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.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers open import real-numbers.transposition-addition-subtraction-cuts-dedekind-real-numbers ``` diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index fcb7e126e0e..d8219df9e7f 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -36,7 +36,7 @@ open import metric-spaces.metric-spaces 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.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.strict-inequality-real-numbers diff --git a/src/real-numbers/positive-real-numbers.lagda.md b/src/real-numbers/positive-real-numbers.lagda.md index 668e1644d95..e32729d0f77 100644 --- a/src/real-numbers/positive-real-numbers.lagda.md +++ b/src/real-numbers/positive-real-numbers.lagda.md @@ -40,7 +40,7 @@ open import real-numbers.negation-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers/saturation-inequality-real-numbers.lagda.md b/src/real-numbers/saturation-inequality-real-numbers.lagda.md index 437a1a7a324..fad1d8e16c4 100644 --- a/src/real-numbers/saturation-inequality-real-numbers.lagda.md +++ b/src/real-numbers/saturation-inequality-real-numbers.lagda.md @@ -21,7 +21,7 @@ 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.rational-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers/short-binary-maximum-real-numbers.lagda.md b/src/real-numbers/short-function-binary-maximum-real-numbers.lagda.md similarity index 97% rename from src/real-numbers/short-binary-maximum-real-numbers.lagda.md rename to src/real-numbers/short-function-binary-maximum-real-numbers.lagda.md index 5dd32621e15..9cca40873ec 100644 --- a/src/real-numbers/short-binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/short-function-binary-maximum-real-numbers.lagda.md @@ -3,7 +3,7 @@ ```agda {-# OPTIONS --lossy-unification #-} -module real-numbers.short-binary-maximum-real-numbers where +module real-numbers.short-function-binary-maximum-real-numbers where ```
Imports @@ -23,7 +23,7 @@ open import order-theory.least-upper-bounds-large-posets open import real-numbers.addition-real-numbers open import real-numbers.binary-maximum-real-numbers open import real-numbers.dedekind-real-numbers -open import real-numbers.inequalities-addition-real-numbers +open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.positive-real-numbers diff --git a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md b/src/real-numbers/strict-inequalities-addition-and-subtraction-real-numbers.lagda.md similarity index 99% rename from src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md rename to src/real-numbers/strict-inequalities-addition-and-subtraction-real-numbers.lagda.md index 24417dab873..26b7ac1b7da 100644 --- a/src/real-numbers/strict-inequalities-addition-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequalities-addition-and-subtraction-real-numbers.lagda.md @@ -3,7 +3,7 @@ ```agda {-# OPTIONS --lossy-unification #-} -module real-numbers.strict-inequalities-addition-real-numbers where +module real-numbers.strict-inequalities-addition-and-subtraction-real-numbers where ```
Imports diff --git a/src/real-numbers/suprema-families-real-numbers.lagda.md b/src/real-numbers/suprema-families-real-numbers.lagda.md index f730c054982..d51a2e2a299 100644 --- a/src/real-numbers/suprema-families-real-numbers.lagda.md +++ b/src/real-numbers/suprema-families-real-numbers.lagda.md @@ -42,7 +42,7 @@ open import real-numbers.negation-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers open import real-numbers.subsets-real-numbers ``` diff --git a/src/real-numbers/transposition-addition-subtraction-cuts-dedekind-real-numbers.lagda.md b/src/real-numbers/transposition-addition-subtraction-cuts-dedekind-real-numbers.lagda.md index 91e5c9c0bef..82a733d1392 100644 --- a/src/real-numbers/transposition-addition-subtraction-cuts-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/transposition-addition-subtraction-cuts-dedekind-real-numbers.lagda.md @@ -24,7 +24,7 @@ open import real-numbers.difference-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.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` From a85cdcbaa33e6a6f4c989c05584e592e304701de Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 12:04:12 -0800 Subject: [PATCH 066/134] Fix --- .../inequality-positive-rational-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md index 5b51936f6a6..1398ef233b7 100644 --- a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md @@ -97,5 +97,5 @@ antisymmetric-leq-ℚ⁺ = antisymmetric-leq-Poset poset-ℚ⁺ ```agda leq-eq-ℚ⁺ : {x y : ℚ⁺} → x = y → leq-ℚ⁺ x y -leq-eq-ℚ⁺ x=y = leq-eq-ℚ _ _ (ap rational-ℚ⁺ x=y) +leq-eq-ℚ⁺ x=y = leq-eq-ℚ (ap rational-ℚ⁺ x=y) ``` From 1d5f0a217083dd72cdb145026a765ae94b94b38a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 12:25:44 -0800 Subject: [PATCH 067/134] Fix --- src/real-numbers/absolute-value-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index 4f77b3aad2d..fc75c7ed59d 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -132,7 +132,7 @@ abstract opaque ( zero-ℝ) ( x) ( 0≤x) - ( tr (leq-ℝ (neg-ℝ x)) neg-zero-ℝ (neg-leq-ℝ _ _ 0≤x)))) + ( tr (leq-ℝ (neg-ℝ x)) neg-zero-ℝ (neg-leq-ℝ 0≤x)))) abs-real-ℝ⁺ : {l : Level} (x : ℝ⁺ l) → abs-ℝ (real-ℝ⁺ x) = real-ℝ⁺ x abs-real-ℝ⁺ x = abs-real-ℝ⁰⁺ (nonnegative-ℝ⁺ x) From 399e3c37bb884b897b35304ec9133218680f5b6f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 12:35:18 -0800 Subject: [PATCH 068/134] Fix build --- .../powers-positive-rational-numbers.lagda.md | 8 ++++---- ...ication-positive-and-negative-real-numbers.lagda.md | 2 +- src/real-numbers/powers-real-numbers.lagda.md | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index 847d6dbbbaa..05641432b4b 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -294,9 +294,9 @@ abstract ( _) ( preserves-leq-power-ℚ⁺ k ε one-ℚ⁺ ε≤1) ≤ one-ℚ *ℚ rational-power-ℚ⁺ m ε - by leq-eq-ℚ _ _ (ap-mul-ℚ (ap rational-ℚ⁺ (power-one-ℚ⁺ k)) refl) + by leq-eq-ℚ (ap-mul-ℚ (ap rational-ℚ⁺ (power-one-ℚ⁺ k)) refl) ≤ rational-power-ℚ⁺ m ε - by leq-eq-ℚ _ _ (left-unit-law-mul-ℚ _) + by leq-eq-ℚ (left-unit-law-mul-ℚ _) ``` ### If `ε` is a positive rational number less than 1, `εⁿ` approaches 0 @@ -327,10 +327,10 @@ abstract rational-dist-ℚ (rational-ℚ⁺ (power-ℚ⁺ n ε)) zero-ℚ ≤ rational-abs-ℚ (rational-ℚ⁺ (power-ℚ⁺ n ε)) by - leq-eq-ℚ _ _ (ap rational-ℚ⁰⁺ (right-zero-law-dist-ℚ _)) + leq-eq-ℚ (ap rational-ℚ⁰⁺ (right-zero-law-dist-ℚ _)) ≤ rational-ℚ⁺ (power-ℚ⁺ n ε) by - leq-eq-ℚ _ _ + leq-eq-ℚ ( ap rational-ℚ⁰⁺ ( abs-rational-ℚ⁰⁺ (nonnegative-ℚ⁺ (power-ℚ⁺ n ε)))) ≤ rational-ℚ⁺ (power-ℚ⁺ m ε) diff --git a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md index 7ecc0768e38..c0fea896952 100644 --- a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md @@ -44,7 +44,7 @@ abstract ( x *ℝ zero-ℝ) ( zero-ℝ) ( right-zero-law-mul-ℝ x) - ( preserves-le-left-mul-ℝ⁺ (x , is-pos-x) y zero-ℝ is-neg-y) + ( preserves-le-left-mul-ℝ⁺ (x , is-pos-x) is-neg-y) mul-positive-negative-ℝ : {l1 l2 : Level} → ℝ⁺ l1 → ℝ⁻ l2 → ℝ⁻ (l1 ⊔ l2) diff --git a/src/real-numbers/powers-real-numbers.lagda.md b/src/real-numbers/powers-real-numbers.lagda.md index 497f3b7c043..8038140ac09 100644 --- a/src/real-numbers/powers-real-numbers.lagda.md +++ b/src/real-numbers/powers-real-numbers.lagda.md @@ -293,7 +293,7 @@ abstract {l1 l2 : Level} (n : ℕ) (x : ℝ l1) (y : ℝ l2) → leq-ℝ (abs-ℝ x) (abs-ℝ y) → leq-ℝ (abs-ℝ (power-ℝ n x)) (abs-ℝ (power-ℝ n y)) preserves-leq-abs-power-ℝ 0 _ _ _ = - preserves-leq-sim-ℝ _ _ _ _ + preserves-leq-sim-ℝ ( inv-tr ( sim-ℝ one-ℝ) ( abs-real-ℝ⁺ (raise-ℝ⁺ _ one-ℝ⁺)) @@ -310,9 +310,9 @@ abstract chain-of-inequalities abs-ℝ (power-ℝ (succ-ℕ n) x) ≤ abs-ℝ (power-ℝ n x *ℝ x) - by leq-eq-ℝ _ _ (ap abs-ℝ (power-succ-ℝ n x)) + by leq-eq-ℝ (ap abs-ℝ (power-succ-ℝ n x)) ≤ abs-ℝ (power-ℝ n x) *ℝ abs-ℝ x - by leq-eq-ℝ _ _ (abs-mul-ℝ _ _) + by leq-eq-ℝ (abs-mul-ℝ _ _) ≤ abs-ℝ (power-ℝ n y) *ℝ abs-ℝ y by preserves-leq-mul-ℝ⁰⁺ @@ -323,7 +323,7 @@ abstract ( preserves-leq-abs-power-ℝ n x y |x|≤|y|) ( |x|≤|y|) ≤ abs-ℝ (power-ℝ n y *ℝ y) - by leq-eq-ℝ _ _ (inv (abs-mul-ℝ _ _)) + by leq-eq-ℝ (inv (abs-mul-ℝ _ _)) ≤ abs-ℝ (power-ℝ (succ-ℕ n) y) - by leq-eq-ℝ _ _ (ap abs-ℝ (inv (power-succ-ℝ n y))) + by leq-eq-ℝ (ap abs-ℝ (inv (power-succ-ℝ n y))) ``` From 0d47a8a24a42f254dee82ad4a061735969bbc8ed Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 14:04:24 -0800 Subject: [PATCH 069/134] Progress --- src/metric-spaces.lagda.md | 1 + ...tion-points-located-metric-spaces.lagda.md | 120 ++++++++++++++++++ ...sed-subsets-located-metric-spaces.lagda.md | 22 ++++ 3 files changed, 143 insertions(+) create mode 100644 src/metric-spaces/accumulation-points-located-metric-spaces.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index 4dd23a4e057..a4299c33414 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -56,6 +56,7 @@ metric space, `N d₂ x y` [or](foundation.disjunction.md) ```agda module metric-spaces where +open import metric-spaces.accumulation-points-located-metric-spaces public open import metric-spaces.approximations-located-metric-spaces public open import metric-spaces.approximations-metric-spaces public open import metric-spaces.bounded-distance-decompositions-of-metric-spaces public diff --git a/src/metric-spaces/accumulation-points-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-located-metric-spaces.lagda.md new file mode 100644 index 00000000000..dddb7ba6d1c --- /dev/null +++ b/src/metric-spaces/accumulation-points-located-metric-spaces.lagda.md @@ -0,0 +1,120 @@ +# Accumulation points in located metric spaces + +```agda +module metric-spaces.accumulation-points-located-metric-spaces where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-natural-numbers +open import elementary-number-theory.natural-numbers + +open import foundation.conjunction +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.function-types +open import foundation.intersections-subtypes +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import lists.sequences + +open import metric-spaces.apartness-located-metric-spaces +open import metric-spaces.closed-subsets-located-metric-spaces +open import metric-spaces.limits-of-sequences-metric-spaces +open import metric-spaces.located-metric-spaces +open import metric-spaces.subspaces-metric-spaces +``` + +
+ +## Idea + +An +{{#concept "accumulation point" WDID=Q858223 WD="limit point" Disambiguation="of a metric space" Agda=accumulation-point-Metric-Space}} +of a subset `S` of a +[located metric space](metric-spaces.located-metric-spaces.md) `X` is a point +`x : X` such that there exists a [sequence](lists.sequences.md) `aₙ` of points +in `S` such that `x` is the +[limit](metric-spaces.limits-of-sequences-metric-spaces.md) of `aₙ`, and for +every `n`, `aₙ` is [apart](metric-spaces.apartness-located-metric-spaces.md) +from `x`. + +## Definition + +```agda +module _ + {l1 l2 l3 : Level} + (X : Located-Metric-Space l1 l2) + (S : subset-Located-Metric-Space l3 X) + where + + is-accumulation-point-prop-subset-Located-Metric-Space : + subset-Metric-Space (l1 ⊔ l2 ⊔ l3) (metric-space-Located-Metric-Space X) + is-accumulation-point-prop-subset-Located-Metric-Space x = + ∃ ( sequence (type-subtype S)) + ( λ a → + Π-Prop ℕ (λ n → apart-prop-Located-Metric-Space X (pr1 (a n)) x) ∧ + is-limit-prop-sequence-Metric-Space + ( metric-space-Located-Metric-Space X) + ( pr1 ∘ a) + ( x)) + + is-accumulation-point-subset-Located-Metric-Space : + type-Located-Metric-Space X → UU (l1 ⊔ l2 ⊔ l3) + is-accumulation-point-subset-Located-Metric-Space x = + type-Prop (is-accumulation-point-prop-subset-Located-Metric-Space x) + + accumulation-point-subset-Located-Metric-Space : UU (l1 ⊔ l2 ⊔ l3) + accumulation-point-subset-Located-Metric-Space = + type-subtype is-accumulation-point-prop-subset-Located-Metric-Space +``` + +## Properties + +### A closed subset of a metric space contains all its accumulation points + +```agda +module _ + {l1 l2 l3 : Level} + (X : Located-Metric-Space l1 l2) + (S : closed-subset-Located-Metric-Space l3 X) + where + + is-in-closed-subset-is-accumulation-point-Located-Metric-Space : + (x : type-Located-Metric-Space X) → + is-accumulation-point-subset-Located-Metric-Space + ( X) + ( subset-closed-subset-Located-Metric-Space X S) + ( x) → + is-in-closed-subset-Located-Metric-Space X S x + is-in-closed-subset-is-accumulation-point-Located-Metric-Space x is-acc-x = + is-closed-subset-closed-subset-Located-Metric-Space + ( X) + ( S) + ( x) + ( λ ε → + let + open + do-syntax-trunc-Prop + ( ∃ + ( type-Located-Metric-Space X) + ( λ y → + neighborhood-prop-Located-Metric-Space X ε x y ∧ + subset-closed-subset-Located-Metric-Space X S y)) + in do + (a , a#x , lim-a=x) ← is-acc-x + (μ , is-mod-μ) ← lim-a=x + let (y , y∈S) = a (μ ε) + intro-exists + ( y) + ( symmetric-neighborhood-Located-Metric-Space X + ( ε) + ( y) + ( x) + ( is-mod-μ ε (μ ε) (refl-leq-ℕ (μ ε))) , + y∈S)) +``` diff --git a/src/metric-spaces/closed-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/closed-subsets-located-metric-spaces.lagda.md index 59906ef2094..887300e2f4d 100644 --- a/src/metric-spaces/closed-subsets-located-metric-spaces.lagda.md +++ b/src/metric-spaces/closed-subsets-located-metric-spaces.lagda.md @@ -7,7 +7,9 @@ module metric-spaces.closed-subsets-located-metric-spaces where
Imports ```agda +open import foundation.dependent-pair-types open import foundation.propositions +open import foundation.subtypes open import foundation.universe-levels open import metric-spaces.closed-subsets-metric-spaces @@ -48,4 +50,24 @@ closed-subset-Located-Metric-Space : (X : Located-Metric-Space l1 l2) → UU (l1 ⊔ l2 ⊔ lsuc l3) closed-subset-Located-Metric-Space l3 X = closed-subset-Metric-Space l3 (metric-space-Located-Metric-Space X) + +subset-closed-subset-Located-Metric-Space : + {l1 l2 l3 : Level} (X : Located-Metric-Space l1 l2) → + (S : closed-subset-Located-Metric-Space l3 X) → + subset-Located-Metric-Space l3 X +subset-closed-subset-Located-Metric-Space X = pr1 + +is-closed-subset-closed-subset-Located-Metric-Space : + {l1 l2 l3 : Level} (X : Located-Metric-Space l1 l2) → + (S : closed-subset-Located-Metric-Space l3 X) → + is-closed-subset-Located-Metric-Space + ( X) + ( subset-closed-subset-Located-Metric-Space X S) +is-closed-subset-closed-subset-Located-Metric-Space X = pr2 + +is-in-closed-subset-Located-Metric-Space : + {l1 l2 l3 : Level} (X : Located-Metric-Space l1 l2) → + (S : closed-subset-Located-Metric-Space l3 X) → + type-Located-Metric-Space X → UU l3 +is-in-closed-subset-Located-Metric-Space X S = is-in-subtype (pr1 S) ``` From 6a0ce50d94566c78c87e7645115115c2c3c67041 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 16:51:02 -0800 Subject: [PATCH 070/134] Every point in a proper closed interval is an accumulation point --- src/metric-spaces.lagda.md | 2 +- ...ts-subsets-located-metric-spaces.lagda.md} | 89 +++++-- ...uchy-approximations-metric-spaces.lagda.md | 29 +++ .../located-metric-spaces.lagda.md | 19 ++ src/real-numbers.lagda.md | 3 + ...ation-points-subsets-real-numbers.lagda.md | 54 ++++ .../apartness-real-numbers.lagda.md | 6 +- .../binary-maximum-real-numbers.lagda.md | 58 +++++ .../binary-minimum-real-numbers.lagda.md | 60 +++++ .../closed-intervals-real-numbers.lagda.md | 51 ++++ .../isometry-addition-real-numbers.lagda.md | 11 + .../isometry-difference-real-numbers.lagda.md | 9 + .../isometry-negation-real-numbers.lagda.md | 19 ++ .../nonzero-real-numbers.lagda.md | 2 +- ...per-closed-intervals-real-numbers.lagda.md | 241 +++++++++++++++++- ...ction-binary-maximum-real-numbers.lagda.md | 9 + ...ction-binary-minimum-real-numbers.lagda.md | 72 ++++++ 17 files changed, 701 insertions(+), 33 deletions(-) rename src/metric-spaces/{accumulation-points-located-metric-spaces.lagda.md => accumulation-points-subsets-located-metric-spaces.lagda.md} (50%) create mode 100644 src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md create mode 100644 src/real-numbers/short-function-binary-minimum-real-numbers.lagda.md diff --git a/src/metric-spaces.lagda.md b/src/metric-spaces.lagda.md index e11c6551c9e..bc48c2ee7e7 100644 --- a/src/metric-spaces.lagda.md +++ b/src/metric-spaces.lagda.md @@ -56,7 +56,7 @@ metric space, `N d₂ x y` [or](foundation.disjunction.md) ```agda module metric-spaces where -open import metric-spaces.accumulation-points-located-metric-spaces public +open import metric-spaces.accumulation-points-subsets-located-metric-spaces public open import metric-spaces.apartness-located-metric-spaces public open import metric-spaces.approximations-located-metric-spaces public open import metric-spaces.approximations-metric-spaces public diff --git a/src/metric-spaces/accumulation-points-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md similarity index 50% rename from src/metric-spaces/accumulation-points-located-metric-spaces.lagda.md rename to src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md index dddb7ba6d1c..052d283d8ac 100644 --- a/src/metric-spaces/accumulation-points-located-metric-spaces.lagda.md +++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md @@ -1,7 +1,7 @@ -# Accumulation points in located metric spaces +# Accumulation points of subsets of located metric spaces ```agda -module metric-spaces.accumulation-points-located-metric-spaces where +module metric-spaces.accumulation-points-subsets-located-metric-spaces where ```
Imports @@ -9,6 +9,7 @@ module metric-spaces.accumulation-points-located-metric-spaces where ```agda open import elementary-number-theory.inequality-natural-numbers open import elementary-number-theory.natural-numbers +open import elementary-number-theory.positive-rational-numbers open import foundation.conjunction open import foundation.dependent-pair-types @@ -23,7 +24,10 @@ open import foundation.universe-levels open import lists.sequences open import metric-spaces.apartness-located-metric-spaces +open import metric-spaces.cauchy-approximations-metric-spaces +open import metric-spaces.cauchy-sequences-metric-spaces open import metric-spaces.closed-subsets-located-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.limits-of-sequences-metric-spaces open import metric-spaces.located-metric-spaces open import metric-spaces.subspaces-metric-spaces @@ -37,11 +41,11 @@ An {{#concept "accumulation point" WDID=Q858223 WD="limit point" Disambiguation="of a metric space" Agda=accumulation-point-Metric-Space}} of a subset `S` of a [located metric space](metric-spaces.located-metric-spaces.md) `X` is a point -`x : X` such that there exists a [sequence](lists.sequences.md) `aₙ` of points -in `S` such that `x` is the -[limit](metric-spaces.limits-of-sequences-metric-spaces.md) of `aₙ`, and for -every `n`, `aₙ` is [apart](metric-spaces.apartness-located-metric-spaces.md) -from `x`. +`x : X` such that there exists a +[Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) `a` +with [limit](metric-spaces.limits-of-cauchy-approximations-metric-spaces.md) `x` +such that for every `ε : ℚ⁺`, `a ε` is in `S` and is +[apart](metric-spaces.apartness-located-metric-spaces.md) from `x`. ## Definition @@ -52,16 +56,45 @@ module _ (S : subset-Located-Metric-Space l3 X) where + is-accumulation-to-point-prop-subset-Located-Metric-Space : + type-Located-Metric-Space X → + subtype + ( l2) + ( cauchy-approximation-Metric-Space (subspace-Located-Metric-Space X S)) + is-accumulation-to-point-prop-subset-Located-Metric-Space x a = + Π-Prop + ( ℚ⁺) + ( λ ε → + apart-prop-Located-Metric-Space X + ( pr1 + ( map-cauchy-approximation-Metric-Space + ( subspace-Located-Metric-Space X S) + ( a) + ( ε))) + ( x)) ∧ + is-limit-cauchy-approximation-prop-Metric-Space + ( metric-space-Located-Metric-Space X) + ( map-short-function-cauchy-approximation-Metric-Space + ( subspace-Located-Metric-Space X S) + ( metric-space-Located-Metric-Space X) + ( short-inclusion-subspace-Metric-Space + ( metric-space-Located-Metric-Space X) + ( S)) + ( a)) + ( x) + + is-accumulation-to-point-subset-Located-Metric-Space : + type-Located-Metric-Space X → + cauchy-approximation-Metric-Space (subspace-Located-Metric-Space X S) → + UU l2 + is-accumulation-to-point-subset-Located-Metric-Space x a = + type-Prop (is-accumulation-to-point-prop-subset-Located-Metric-Space x a) + is-accumulation-point-prop-subset-Located-Metric-Space : subset-Metric-Space (l1 ⊔ l2 ⊔ l3) (metric-space-Located-Metric-Space X) is-accumulation-point-prop-subset-Located-Metric-Space x = - ∃ ( sequence (type-subtype S)) - ( λ a → - Π-Prop ℕ (λ n → apart-prop-Located-Metric-Space X (pr1 (a n)) x) ∧ - is-limit-prop-sequence-Metric-Space - ( metric-space-Located-Metric-Space X) - ( pr1 ∘ a) - ( x)) + ∃ ( cauchy-approximation-Metric-Space (subspace-Located-Metric-Space X S)) + ( is-accumulation-to-point-prop-subset-Located-Metric-Space x) is-accumulation-point-subset-Located-Metric-Space : type-Located-Metric-Space X → UU (l1 ⊔ l2 ⊔ l3) @@ -106,15 +139,31 @@ module _ neighborhood-prop-Located-Metric-Space X ε x y ∧ subset-closed-subset-Located-Metric-Space X S y)) in do - (a , a#x , lim-a=x) ← is-acc-x - (μ , is-mod-μ) ← lim-a=x - let (y , y∈S) = a (μ ε) + (approx@(a , _) , a#x , lim-a=x) ← is-acc-x + let (y , y∈S) = a ε intro-exists ( y) ( symmetric-neighborhood-Located-Metric-Space X - ( ε) - ( y) + ( ε) + ( y) + ( x) + ( saturated-is-limit-cauchy-approximation-Metric-Space + ( metric-space-Located-Metric-Space X) + ( map-short-function-cauchy-approximation-Metric-Space + ( subspace-Located-Metric-Space + ( X) + ( subset-closed-subset-Located-Metric-Space X S)) + ( metric-space-Located-Metric-Space X) + ( short-inclusion-subspace-Metric-Space + ( metric-space-Located-Metric-Space X) + ( subset-closed-subset-Located-Metric-Space X S)) + ( approx)) ( x) - ( is-mod-μ ε (μ ε) (refl-leq-ℕ (μ ε))) , + ( lim-a=x) + ( ε)) , y∈S)) ``` + +### To show `x` is an accumulation point of a subset `S` of a located metric space, it suffices to exhibit a sequence in `S` apart from `x` with limit `x` + +This remains to be shown. diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index 4ba16ab30ae..6757f63e605 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.limits-of-cauchy-approximations-metric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.positive-rational-numbers open import foundation.dependent-pair-types @@ -20,6 +21,7 @@ open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces open import metric-spaces.metric-spaces +open import metric-spaces.short-functions-metric-spaces ```
@@ -142,6 +144,33 @@ module _ ( x) ``` +### The action of short maps on Cauchy approximations preserves limits + +```agda +module _ + {l1 l2 l1' l2' : Level} + (A : Metric-Space l1 l2) (B : Metric-Space l1' l2') + (f : short-function-Metric-Space A B) + (a : cauchy-approximation-Metric-Space A) + (lim : type-Metric-Space A) + where + + abstract + map-short-function-is-limit-cauchy-approximation-Metric-Space : + is-limit-cauchy-approximation-Metric-Space A a lim → + is-limit-cauchy-approximation-Metric-Space + ( B) + ( map-short-function-cauchy-approximation-Metric-Space A B f a) + ( map-short-function-Metric-Space A B f lim) + map-short-function-is-limit-cauchy-approximation-Metric-Space is-lim-a ε δ = + is-short-map-short-function-Metric-Space A B + ( f) + ( ε +ℚ⁺ δ) + ( map-cauchy-approximation-Metric-Space A a ε) + ( lim) + ( is-lim-a ε δ) +``` + ## See also - [Convergent cauchy approximations](metric-spaces.convergent-cauchy-approximations-metric-spaces.md) diff --git a/src/metric-spaces/located-metric-spaces.lagda.md b/src/metric-spaces/located-metric-spaces.lagda.md index 0da99bc7346..273acf8c4bb 100644 --- a/src/metric-spaces/located-metric-spaces.lagda.md +++ b/src/metric-spaces/located-metric-spaces.lagda.md @@ -223,3 +223,22 @@ module _ ( real-dist-located-Metric-Space , is-nonnegative-real-dist-located-Metric-Space) ``` + +### Located metric subspaces + +```agda +module _ + {l1 l2 l3 : Level} + (X : Located-Metric-Space l1 l2) + (S : subset-Located-Metric-Space l3 X) + where + + subspace-Located-Metric-Space : Metric-Space (l1 ⊔ l3) l2 + subspace-Located-Metric-Space = + subspace-Metric-Space (metric-space-Located-Metric-Space X) S + + located-subspace-Located-Metric-Space : Located-Metric-Space (l1 ⊔ l3) l2 + located-subspace-Located-Metric-Space = + ( subspace-Located-Metric-Space , + λ (x , _) (y , _) → is-located-Located-Metric-Space X x y) +``` diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 0eaee0fa71e..0d22541afac 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -7,6 +7,7 @@ module real-numbers where open import real-numbers.absolute-value-closed-intervals-real-numbers public open import real-numbers.absolute-value-real-numbers public +open import real-numbers.accumulation-points-subsets-real-numbers public open import real-numbers.addition-lower-dedekind-real-numbers public open import real-numbers.addition-nonnegative-real-numbers public open import real-numbers.addition-real-numbers public @@ -72,6 +73,7 @@ open import real-numbers.nonzero-real-numbers public open import real-numbers.positive-and-negative-real-numbers public open import real-numbers.positive-real-numbers public open import real-numbers.powers-real-numbers public +open import real-numbers.proper-closed-intervals-real-numbers public open import real-numbers.raising-universe-levels-real-numbers public open import real-numbers.rational-lower-dedekind-real-numbers public open import real-numbers.rational-real-numbers public @@ -83,6 +85,7 @@ open import real-numbers.saturation-inequality-nonnegative-real-numbers public open import real-numbers.saturation-inequality-real-numbers public open import real-numbers.series-real-numbers public open import real-numbers.short-function-binary-maximum-real-numbers public +open import real-numbers.short-function-binary-minimum-real-numbers public open import real-numbers.similarity-nonnegative-real-numbers public open import real-numbers.similarity-positive-real-numbers public open import real-numbers.similarity-real-numbers public diff --git a/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md b/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md new file mode 100644 index 00000000000..9cae91b49d2 --- /dev/null +++ b/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md @@ -0,0 +1,54 @@ +# Accumulation points of subsets of the real numbers + +```agda +module real-numbers.accumulation-points-subsets-real-numbers where +``` + +
Imports + +```agda +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import lists.sequences + +open import metric-spaces.accumulation-points-subsets-located-metric-spaces + +open import real-numbers.dedekind-real-numbers +open import real-numbers.located-metric-space-of-real-numbers +open import real-numbers.subsets-real-numbers +``` + +
+ +## Idea + +An +{{#concept "accumulation point" Disambiguation="of a subset of ℝ" Agda=accumulation-point-subset-ℝ}} +of a [subset](real-numbers.subsets-real-numbers.md) `S` of the +[real numbers](real-numbers.dedekind-real-numbers.md) is an +[accumulation point](metric-spaces.accumulation-points-located-metric-spaces.md) +of `S` in the +[located metric space of the real numbers](real-numbers.located-metric-space-of-real-numbers.md). + +### Accumulation points of subsets of ℝ + +```agda +module _ + {l1 l2 : Level} (S : subset-ℝ l1 l2) + where + + is-accumulation-point-prop-subset-ℝ : subset-ℝ (l1 ⊔ lsuc l2) l2 + is-accumulation-point-prop-subset-ℝ = + is-accumulation-point-prop-subset-Located-Metric-Space + ( located-metric-space-ℝ l2) + ( S) + + is-accumulation-point-subset-ℝ : ℝ l2 → UU (l1 ⊔ lsuc l2) + is-accumulation-point-subset-ℝ x = + type-Prop (is-accumulation-point-prop-subset-ℝ x) + + accumulation-point-subset-ℝ : UU (l1 ⊔ lsuc l2) + accumulation-point-subset-ℝ = type-subtype is-accumulation-point-prop-subset-ℝ +``` diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index 75d5f030b22..a6a3f19daaf 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -38,7 +38,7 @@ open import real-numbers.nonzero-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -66,6 +66,10 @@ module _ apart-le-ℝ : {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ x y → apart-ℝ x y apart-le-ℝ = inl-disjunction + +apart-le-ℝ' : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → le-ℝ y x → apart-ℝ x y +apart-le-ℝ' = inr-disjunction ``` ## Properties diff --git a/src/real-numbers/binary-maximum-real-numbers.lagda.md b/src/real-numbers/binary-maximum-real-numbers.lagda.md index a321c823561..eda3d58f579 100644 --- a/src/real-numbers/binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/binary-maximum-real-numbers.lagda.md @@ -9,8 +9,11 @@ module real-numbers.binary-maximum-real-numbers where
Imports ```agda +open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.positive-rational-numbers +open import foundation.action-on-identifications-binary-functions +open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.empty-types @@ -108,6 +111,11 @@ module _ ( upper-real-max-ℝ) ( is-disjoint-lower-upper-max-ℝ) ( is-located-lower-upper-max-ℝ) + +ap-max-ℝ : + {l1 l2 : Level} → {x x' : ℝ l1} → x = x' → + {y y' : ℝ l2} → y = y' → max-ℝ x y = max-ℝ x' y' +ap-max-ℝ = ap-binary max-ℝ ``` ## Properties @@ -377,3 +385,53 @@ module _ ( is-located-lower-upper-cut-ℝ y q @@ -68,6 +73,11 @@ subtype-closed-interval-ℝ : subtype (l1 ⊔ l2 ⊔ l) (ℝ l) subtype-closed-interval-ℝ = subtype-closed-interval-Large-Poset ℝ-Large-Poset +type-closed-interval-ℝ : + {l1 l2 : Level} (l : Level) → closed-interval-ℝ l1 l2 → UU (l1 ⊔ l2 ⊔ lsuc l) +type-closed-interval-ℝ l [a,b] = + type-subtype (subtype-closed-interval-ℝ l [a,b]) + lower-bound-closed-interval-ℝ : {l1 l2 : Level} → closed-interval-ℝ l1 l2 → ℝ l1 lower-bound-closed-interval-ℝ = lower-bound-closed-interval-Large-Poset ℝ-Large-Poset @@ -165,3 +175,44 @@ complete-metric-space-unit-interval-ℝ : complete-metric-space-unit-interval-ℝ l = complete-metric-space-closed-interval-ℝ l unit-closed-interval-ℝ ``` + +### The clamping function + +```agda +clamp-closed-interval-ℝ : + {l1 l2 l3 : Level} ([a,b] : closed-interval-ℝ l1 l2) → ℝ l3 → + type-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b] +clamp-closed-interval-ℝ ((a , b) , a≤b) x = + ( max-ℝ a (min-ℝ b x) , + leq-left-max-ℝ _ _ , + leq-max-leq-leq-ℝ _ _ _ a≤b (leq-left-min-ℝ b x)) +``` + +### The clamping function is a short function + +```agda +abstract + is-short-clamp-closed-interval-ℝ : + {l1 l2 l3 : Level} ([a,b] : closed-interval-ℝ l1 l2) → + is-short-function-Metric-Space + ( metric-space-ℝ l3) + ( metric-space-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b]) + ( clamp-closed-interval-ℝ [a,b]) + is-short-clamp-closed-interval-ℝ [a,b]@((a , b) , a≤b) = + is-short-comp-is-short-function-Metric-Space + ( metric-space-ℝ _) + ( metric-space-ℝ _) + ( metric-space-ℝ _) + ( max-ℝ a) + ( min-ℝ b) + ( is-short-function-left-max-ℝ a) + ( is-short-function-left-min-ℝ b) + +short-clamp-closed-interval-ℝ : + {l1 l2 l3 : Level} ([a,b] : closed-interval-ℝ l1 l2) → + short-function-Metric-Space + ( metric-space-ℝ l3) + ( metric-space-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b]) +short-clamp-closed-interval-ℝ [a,b] = + ( clamp-closed-interval-ℝ [a,b] , is-short-clamp-closed-interval-ℝ [a,b]) +``` diff --git a/src/real-numbers/isometry-addition-real-numbers.lagda.md b/src/real-numbers/isometry-addition-real-numbers.lagda.md index c42c49edba3..1107315e4d4 100644 --- a/src/real-numbers/isometry-addition-real-numbers.lagda.md +++ b/src/real-numbers/isometry-addition-real-numbers.lagda.md @@ -20,6 +20,7 @@ open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-space-of-isometries-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.modulated-uniformly-continuous-functions-metric-spaces +open import metric-spaces.short-functions-metric-spaces open import metric-spaces.uniformly-continuous-functions-metric-spaces open import real-numbers.addition-real-numbers @@ -99,6 +100,16 @@ module _ ( metric-space-ℝ l2) ( metric-space-ℝ (l1 ⊔ l2)) isometry-right-add-ℝ = ( (λ y → add-ℝ y x) , is-isometry-right-add-ℝ) + + short-left-add-ℝ : + short-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + short-left-add-ℝ = + short-isometry-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( isometry-left-add-ℝ) ``` ### Addition is an isometry from `ℝ` to the metric space of isometries `ℝ → ℝ` diff --git a/src/real-numbers/isometry-difference-real-numbers.lagda.md b/src/real-numbers/isometry-difference-real-numbers.lagda.md index 73b411df6a4..6b909afc88f 100644 --- a/src/real-numbers/isometry-difference-real-numbers.lagda.md +++ b/src/real-numbers/isometry-difference-real-numbers.lagda.md @@ -13,6 +13,7 @@ open import foundation.dependent-pair-types open import foundation.universe-levels open import metric-spaces.isometries-metric-spaces +open import metric-spaces.short-functions-metric-spaces open import metric-spaces.uniformly-continuous-functions-metric-spaces open import real-numbers.addition-real-numbers @@ -61,6 +62,14 @@ module _ isometry-Metric-Space (metric-space-ℝ l2) (metric-space-ℝ (l1 ⊔ l2)) isometry-diff-ℝ = (diff-ℝ x , is-isometry-diff-ℝ) + short-diff-ℝ : + short-function-Metric-Space (metric-space-ℝ l2) (metric-space-ℝ (l1 ⊔ l2)) + short-diff-ℝ = + short-isometry-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( isometry-diff-ℝ) + uniformly-continuous-diff-ℝ : uniformly-continuous-function-Metric-Space ( metric-space-ℝ l2) diff --git a/src/real-numbers/isometry-negation-real-numbers.lagda.md b/src/real-numbers/isometry-negation-real-numbers.lagda.md index e36974427a6..05c832b67fc 100644 --- a/src/real-numbers/isometry-negation-real-numbers.lagda.md +++ b/src/real-numbers/isometry-negation-real-numbers.lagda.md @@ -21,6 +21,7 @@ open import foundation.universe-levels open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-spaces +open import metric-spaces.short-functions-metric-spaces open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers @@ -123,3 +124,21 @@ module _ ( metric-space-ℝ l1) isometry-neg-ℝ = (neg-ℝ , is-isometry-neg-ℝ) ``` + +### Negation on the real numbers is short + +```agda +abstract + is-short-neg-ℝ : + {l : Level} → + is-short-function-Metric-Space + ( metric-space-ℝ l) + ( metric-space-ℝ l) + ( neg-ℝ) + is-short-neg-ℝ = + is-short-is-isometry-Metric-Space + ( metric-space-ℝ _) + ( metric-space-ℝ _) + ( neg-ℝ) + ( is-isometry-neg-ℝ) +``` diff --git a/src/real-numbers/nonzero-real-numbers.lagda.md b/src/real-numbers/nonzero-real-numbers.lagda.md index f2d2fe8590e..d9ae44bf9b0 100644 --- a/src/real-numbers/nonzero-real-numbers.lagda.md +++ b/src/real-numbers/nonzero-real-numbers.lagda.md @@ -29,7 +29,7 @@ open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md index 999b3a89adc..51360ec483c 100644 --- a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md +++ b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md @@ -7,20 +7,47 @@ module real-numbers.proper-closed-intervals-real-numbers where
Imports ```agda -open import real-numbers.dedekind-real-numbers -open import real-numbers.strict-inequality-real-numbers -open import real-numbers.subsets-real-numbers -open import real-numbers.inequality-real-numbers -open import real-numbers.metric-space-of-real-numbers -open import real-numbers.closed-intervals-real-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.unit-fractions-rational-numbers -open import metric-spaces.metric-spaces -open import foundation.subtypes +open import foundation.cartesian-product-types open import foundation.conjunction -open import foundation.universe-levels -open import metric-spaces.complete-metric-spaces open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.closed-subsets-metric-spaces +open import metric-spaces.complete-metric-spaces +open import metric-spaces.limits-of-cauchy-approximations-metric-spaces +open import metric-spaces.metric-space-of-rational-numbers +open import metric-spaces.metric-spaces +open import metric-spaces.short-functions-metric-spaces +open import metric-spaces.subspaces-metric-spaces + +open import order-theory.large-posets + +open import real-numbers.accumulation-points-subsets-real-numbers +open import real-numbers.addition-real-numbers +open import real-numbers.apartness-real-numbers +open import real-numbers.binary-maximum-real-numbers +open import real-numbers.binary-minimum-real-numbers +open import real-numbers.closed-intervals-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.difference-real-numbers +open import real-numbers.inequality-real-numbers +open import real-numbers.isometry-addition-real-numbers +open import real-numbers.isometry-difference-real-numbers +open import real-numbers.metric-space-of-real-numbers +open import real-numbers.positive-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers +open import real-numbers.strict-inequality-real-numbers +open import real-numbers.subsets-real-numbers ```
@@ -60,6 +87,10 @@ subtype-proper-closed-interval-ℝ : subtype-proper-closed-interval-ℝ l (a , b , _) x = leq-prop-ℝ a x ∧ leq-prop-ℝ x b +is-in-proper-closed-interval-ℝ : + {l1 l2 l3 : Level} → proper-closed-interval-ℝ l1 l2 → ℝ l3 → UU (l1 ⊔ l2 ⊔ l3) +is-in-proper-closed-interval-ℝ (a , b , _) x = leq-ℝ a x × leq-ℝ x b + type-proper-closed-interval-ℝ : {l1 l2 : Level} (l : Level) → proper-closed-interval-ℝ l1 l2 → UU (l1 ⊔ l2 ⊔ lsuc l) @@ -114,3 +145,193 @@ complete-metric-space-proper-closed-interval-ℝ l [a,b] = ( l) ( closed-interval-proper-closed-interval-ℝ [a,b]) ``` + +### The clamp function + +```agda +clamp-proper-closed-interval-ℝ : + {l1 l2 l3 : Level} ([a,b] : proper-closed-interval-ℝ l1 l2) → ℝ l3 → + type-proper-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b] +clamp-proper-closed-interval-ℝ [a,b] = + clamp-closed-interval-ℝ (closed-interval-proper-closed-interval-ℝ [a,b]) +``` + +### The clamp function is a short function + +```agda +abstract + is-short-clamp-proper-closed-interval-ℝ : + {l1 l2 l3 : Level} ([a,b] : proper-closed-interval-ℝ l1 l2) → + is-short-function-Metric-Space + ( metric-space-ℝ l3) + ( metric-space-proper-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b]) + ( clamp-proper-closed-interval-ℝ [a,b]) + is-short-clamp-proper-closed-interval-ℝ [a,b] = + is-short-clamp-closed-interval-ℝ + ( closed-interval-proper-closed-interval-ℝ [a,b]) + +short-clamp-proper-closed-interval-ℝ : + {l1 l2 l3 : Level} ([a,b] : proper-closed-interval-ℝ l1 l2) → + short-function-Metric-Space + ( metric-space-ℝ l3) + ( metric-space-proper-closed-interval-ℝ (l1 ⊔ l2 ⊔ l3) [a,b]) +short-clamp-proper-closed-interval-ℝ [a,b] = + short-clamp-closed-interval-ℝ (closed-interval-proper-closed-interval-ℝ [a,b]) +``` + +### Every real number in a proper closed interval is an accumulation point in that proper closed interval + +Note that this cannot be made more universe-polymorphic. + +```agda +abstract + is-accumulation-point-is-in-proper-closed-interval-ℝ : + {l : Level} ([a,b] : proper-closed-interval-ℝ l l) → + (x : ℝ l) → is-in-proper-closed-interval-ℝ [a,b] x → + is-accumulation-point-subset-ℝ + ( subtype-proper-closed-interval-ℝ l [a,b]) + ( x) + is-accumulation-point-is-in-proper-closed-interval-ℝ + {l} [a,b]@(a , b , a @@ -128,6 +130,13 @@ module _ ( metric-space-ℝ (l1 ⊔ l2)) short-left-max-ℝ = (max-ℝ x , is-short-function-left-max-ℝ) + + uniformly-continuous-left-max-ℝ : uniformly-continuous-function-ℝ l2 (l1 ⊔ l2) + uniformly-continuous-left-max-ℝ = + uniformly-continuous-short-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( short-left-max-ℝ) ``` ### The binary maximum is a short function from `ℝ` to the metric space of short functions `ℝ → ℝ` diff --git a/src/real-numbers/short-function-binary-minimum-real-numbers.lagda.md b/src/real-numbers/short-function-binary-minimum-real-numbers.lagda.md new file mode 100644 index 00000000000..5ad24658411 --- /dev/null +++ b/src/real-numbers/short-function-binary-minimum-real-numbers.lagda.md @@ -0,0 +1,72 @@ +# The binary minimum of real numbers is a short function + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.short-function-binary-minimum-real-numbers where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.universe-levels + +open import metric-spaces.short-functions-metric-spaces + +open import real-numbers.binary-maximum-real-numbers +open import real-numbers.binary-minimum-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.isometry-negation-real-numbers +open import real-numbers.metric-space-of-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.short-function-binary-maximum-real-numbers +``` + +
+ +## Idea + +For any `a : ℝ`, the +[binary minimum](real-numbers.binary-minimum-real-numbers.md) with `a` is a +[short function](metric-spaces.short-functions-metric-spaces.md) `ℝ → ℝ` for the +[standard real metric structure](real-numbers.metric-space-of-real-numbers.md). + +## Proof + +```agda +module _ + {l1 l2 : Level} (x : ℝ l1) + where + + abstract opaque + unfolding min-ℝ + + is-short-function-left-min-ℝ : + is-short-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( min-ℝ x) + is-short-function-left-min-ℝ = + is-short-comp-is-short-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( metric-space-ℝ (l1 ⊔ l2)) + ( neg-ℝ) + ( λ y → max-ℝ (neg-ℝ x) (neg-ℝ y)) + ( is-short-neg-ℝ) + ( is-short-comp-is-short-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + ( max-ℝ (neg-ℝ x)) + ( neg-ℝ) + ( is-short-function-left-max-ℝ (neg-ℝ x)) + ( is-short-neg-ℝ)) + + short-left-min-ℝ : + short-function-Metric-Space + ( metric-space-ℝ l2) + ( metric-space-ℝ (l1 ⊔ l2)) + short-left-min-ℝ = (min-ℝ x , is-short-function-left-min-ℝ) +``` From 3ed6bf1e9481dac7b218a72e8a22729756437859 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 17:38:19 -0800 Subject: [PATCH 071/134] Sequential accumulation points --- ...nts-subsets-located-metric-spaces.lagda.md | 67 ++++++++++++++++++- .../cauchy-sequences-metric-spaces.lagda.md | 48 ++++++++++++- 2 files changed, 111 insertions(+), 4 deletions(-) diff --git a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md index 052d283d8ac..4e7ac4d9973 100644 --- a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md +++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md @@ -23,6 +23,8 @@ open import foundation.universe-levels open import lists.sequences +open import logic.functoriality-existential-quantification + open import metric-spaces.apartness-located-metric-spaces open import metric-spaces.cauchy-approximations-metric-spaces open import metric-spaces.cauchy-sequences-metric-spaces @@ -38,7 +40,7 @@ open import metric-spaces.subspaces-metric-spaces ## Idea An -{{#concept "accumulation point" WDID=Q858223 WD="limit point" Disambiguation="of a metric space" Agda=accumulation-point-Metric-Space}} +{{#concept "accumulation point" WDID=Q858223 WD="limit point" Disambiguation="of a metric space" Agda=accumulation-point-subset-Located-Metric-Space}} of a subset `S` of a [located metric space](metric-spaces.located-metric-spaces.md) `X` is a point `x : X` such that there exists a @@ -164,6 +166,65 @@ module _ y∈S)) ``` -### To show `x` is an accumulation point of a subset `S` of a located metric space, it suffices to exhibit a sequence in `S` apart from `x` with limit `x` +### The property of being a sequential accumulation point + +```agda +module _ + {l1 l2 l3 : Level} + (X : Located-Metric-Space l1 l2) + (S : subset-Located-Metric-Space l3 X) + (x : type-Located-Metric-Space X) + where + + is-sequential-accumulation-point-prop-subset-Located-Metric-Space : + Prop (l1 ⊔ l2 ⊔ l3) + is-sequential-accumulation-point-prop-subset-Located-Metric-Space = + ∃ ( sequence (type-subtype S)) + ( λ a → + Π-Prop ℕ (λ n → apart-prop-Located-Metric-Space X (pr1 (a n)) x) ∧ + is-limit-prop-sequence-Metric-Space + ( metric-space-Located-Metric-Space X) + ( pr1 ∘ a) + ( x)) + + is-sequential-accumulation-point-subset-Located-Metric-Space : + UU (l1 ⊔ l2 ⊔ l3) + is-sequential-accumulation-point-subset-Located-Metric-Space = + type-Prop is-sequential-accumulation-point-prop-subset-Located-Metric-Space +``` + +### If `x` is an accumulation point of `S`, it is a sequential accumulation point of `S` -This remains to be shown. +The converse has yet to be proved. + +```agda +module _ + {l1 l2 l3 : Level} + (X : Located-Metric-Space l1 l2) + (S : subset-Located-Metric-Space l3 X) + (x : type-Located-Metric-Space X) + where + + abstract + is-sequential-accumulation-point-is-accumulation-point-subset-Located-Metric-Space : + is-accumulation-point-subset-Located-Metric-Space X S x → + is-sequential-accumulation-point-subset-Located-Metric-Space X S x + is-sequential-accumulation-point-is-accumulation-point-subset-Located-Metric-Space = + map-exists + ( _) + ( map-cauchy-sequence-cauchy-approximation-Metric-Space + ( subspace-Located-Metric-Space X S)) + ( λ a (a#x , lim-a=x) → + ( ( λ n → a#x _) , + is-limit-cauchy-sequence-cauchy-approximation-Metric-Space + ( metric-space-Located-Metric-Space X) + ( map-short-function-cauchy-approximation-Metric-Space + ( subspace-Located-Metric-Space X S) + ( metric-space-Located-Metric-Space X) + ( short-inclusion-subspace-Metric-Space + ( metric-space-Located-Metric-Space X) + ( S)) + ( a)) + ( x) + ( lim-a=x))) +``` diff --git a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md index 932310526dc..4fe9086ee64 100644 --- a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md @@ -19,6 +19,7 @@ open import elementary-number-theory.multiplicative-group-of-positive-rational-n open import elementary-number-theory.natural-numbers open import elementary-number-theory.nonzero-natural-numbers open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.strict-inequality-natural-numbers open import elementary-number-theory.strict-inequality-positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import elementary-number-theory.unit-fractions-rational-numbers @@ -27,6 +28,8 @@ open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.coproduct-types open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.function-types open import foundation.functoriality-dependent-pair-types open import foundation.identity-types open import foundation.propositional-truncations @@ -399,7 +402,7 @@ module _ map-cauchy-approximation-Metric-Space ( M) ( x) - ( positive-reciprocal-rational-ℕ⁺ (succ-nonzero-ℕ' n)) + ( positive-reciprocal-rational-succ-ℕ n) modulus-of-convergence-cauchy-sequence-cauchy-approximation-Metric-Space : ℚ⁺ → ℕ @@ -484,6 +487,49 @@ module _ is-cauchy-sequence-cauchy-sequence-cauchy-approximation-Metric-Space ``` +### If a Cauchy approximation has a limit, its corresponding Cauchy sequence has the same limit + +```agda +module _ + {l1 l2 : Level} (M : Metric-Space l1 l2) + (x : cauchy-approximation-Metric-Space M) + (lim : type-Metric-Space M) + (is-lim : is-limit-cauchy-approximation-Metric-Space M x lim) + where + + abstract + is-limit-cauchy-sequence-cauchy-approximation-Metric-Space : + is-limit-cauchy-sequence-Metric-Space + ( M) + ( cauchy-sequence-cauchy-approximation-Metric-Space M x) + ( lim) + is-limit-cauchy-sequence-cauchy-approximation-Metric-Space = + is-limit-bound-modulus-sequence-Metric-Space M _ _ + ( λ ε → + let + (n⁺ , 1/n⁺<ε) = smaller-reciprocal-ℚ⁺ ε + in + ( nat-nonzero-ℕ n⁺ , + λ m n≤m → + monotonic-neighborhood-Metric-Space M + ( map-cauchy-sequence-cauchy-approximation-Metric-Space M x m) + ( lim) + ( positive-reciprocal-rational-succ-ℕ m) + ( ε) + ( transitive-le-ℚ _ (reciprocal-rational-ℕ⁺ n⁺) _ + ( 1/n⁺<ε) + ( inv-le-ℚ⁺ + ( positive-rational-ℕ⁺ n⁺) + ( positive-rational-ℕ⁺ (succ-nonzero-ℕ' m)) + ( preserves-le-rational-ℕ + ( le-succ-leq-ℕ _ _ n≤m)))) + ( saturated-is-limit-cauchy-approximation-Metric-Space M + ( x) + ( lim) + ( is-lim) + ( positive-reciprocal-rational-succ-ℕ m)))) +``` + ### If the Cauchy sequence associated with a Cauchy approximation has a limit modulus at `l`, its associated approximation converges to `l` ```agda From 74b1601180a4c93e913be91295b381d08434bfac Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 17:56:46 -0800 Subject: [PATCH 072/134] Prove equivalence between sequential and approximation versions --- ...ddition-positive-rational-numbers.lagda.md | 9 ++- ...nts-subsets-located-metric-spaces.lagda.md | 75 +++++++++++++++++++ .../located-metric-spaces.lagda.md | 8 ++ 3 files changed, 88 insertions(+), 4 deletions(-) diff --git a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md index e4961479540..fd1909ddece 100644 --- a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md @@ -453,11 +453,12 @@ module _ ( left-summand-split-ℚ⁺ p) ( right-summand-split-ℚ⁺ p)) - bound-double-le-ℚ⁺ : - Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) - bound-double-le-ℚ⁺ = - ( modulus-le-double-le-ℚ⁺ , le-double-le-modulus-le-double-le-ℚ⁺) + bound-double-le-ℚ⁺ : + Σ ℚ⁺ (λ q → le-ℚ⁺ (q +ℚ⁺ q) p) + bound-double-le-ℚ⁺ = + ( modulus-le-double-le-ℚ⁺ , le-double-le-modulus-le-double-le-ℚ⁺) + abstract double-le-ℚ⁺ : exists ℚ⁺ (λ q → le-prop-ℚ⁺ (q +ℚ⁺ q) p) double-le-ℚ⁺ = unit-trunc-Prop bound-double-le-ℚ⁺ ``` diff --git a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md index 4e7ac4d9973..ea018b42ca2 100644 --- a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md +++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md @@ -7,15 +7,18 @@ module metric-spaces.accumulation-points-subsets-located-metric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.inequality-natural-numbers open import elementary-number-theory.natural-numbers open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.function-types open import foundation.intersections-subtypes +open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.propositions open import foundation.subtypes @@ -228,3 +231,75 @@ module _ ( x) ( lim-a=x))) ``` + +### If `x` is a sequential accumulation point of `S`, it is an accumulation point of `S` + +```agda +module _ + {l1 l2 l3 : Level} + (X : Located-Metric-Space l1 l2) + (S : subset-Located-Metric-Space l3 X) + (x : type-Located-Metric-Space X) + where + + abstract + is-accumulation-point-is-sequential-accumulation-point-subset-Located-Metric-Space : + is-sequential-accumulation-point-subset-Located-Metric-Space X S x → + is-accumulation-point-subset-Located-Metric-Space X S x + is-accumulation-point-is-sequential-accumulation-point-subset-Located-Metric-Space + is-seq-acc-x = + let + open + do-syntax-trunc-Prop + ( is-accumulation-point-prop-subset-Located-Metric-Space X S x) + in do + (σ , σ#x , lim-σ=x) ← is-seq-acc-x + μ@(mod-μ , is-mod-μ) ← lim-σ=x + intro-exists + ( cauchy-approximation-cauchy-sequence-Metric-Space + ( subspace-Located-Metric-Space X S) + ( σ , + is-cauchy-has-limit-modulus-sequence-Metric-Space + ( metric-space-Located-Metric-Space X) + ( pr1 ∘ σ) + ( x) + ( μ))) + ( ( λ ε → σ#x _) , + ( λ ε δ → + let ε' = modulus-le-double-le-ℚ⁺ ε + in + monotonic-neighborhood-Located-Metric-Space + ( X) + ( pr1 (σ (mod-μ ε'))) + ( x) + ( ε') + ( ε +ℚ⁺ δ) + ( transitive-le-ℚ _ _ _ + ( le-left-add-ℚ⁺ ε δ) + ( le-modulus-le-double-le-ℚ⁺ ε)) + ( is-mod-μ ε' (mod-μ ε') (refl-leq-ℕ (mod-μ ε'))))) +``` + +### Being an accumulation point is equivalent to being a sequential accumulation point + +```agda +module _ + {l1 l2 l3 : Level} + (X : Located-Metric-Space l1 l2) + (S : subset-Located-Metric-Space l3 X) + (x : type-Located-Metric-Space X) + where + + is-accumulation-point-iff-is-sequential-accumulation-point-subset-Located-Metric-Space : + is-accumulation-point-subset-Located-Metric-Space X S x ↔ + is-sequential-accumulation-point-subset-Located-Metric-Space X S x + is-accumulation-point-iff-is-sequential-accumulation-point-subset-Located-Metric-Space = + ( is-sequential-accumulation-point-is-accumulation-point-subset-Located-Metric-Space + ( X) + ( S) + ( x) , + is-accumulation-point-is-sequential-accumulation-point-subset-Located-Metric-Space + ( X) + ( S) + ( x)) +``` diff --git a/src/metric-spaces/located-metric-spaces.lagda.md b/src/metric-spaces/located-metric-spaces.lagda.md index 273acf8c4bb..5c1f581c70e 100644 --- a/src/metric-spaces/located-metric-spaces.lagda.md +++ b/src/metric-spaces/located-metric-spaces.lagda.md @@ -133,6 +133,14 @@ module _ triangular-neighborhood-Located-Metric-Space = triangular-neighborhood-Metric-Space metric-space-Located-Metric-Space + monotonic-neighborhood-Located-Metric-Space : + (x y : type-Located-Metric-Space) (d₁ d₂ : ℚ⁺) → + le-ℚ⁺ d₁ d₂ → + neighborhood-Located-Metric-Space d₁ x y → + neighborhood-Located-Metric-Space d₂ x y + monotonic-neighborhood-Located-Metric-Space = + monotonic-neighborhood-Metric-Space metric-space-Located-Metric-Space + is-located-Located-Metric-Space : is-located-Metric-Space metric-space-Located-Metric-Space is-located-Located-Metric-Space = pr2 X From 2bda7c6c76ac7a3214a22235e452e99200e55154 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 17:59:26 -0800 Subject: [PATCH 073/134] Prove equivalence between sequential and approximation versions --- ...nts-subsets-located-metric-spaces.lagda.md | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md index ea018b42ca2..475db6744c7 100644 --- a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md +++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md @@ -179,16 +179,26 @@ module _ (x : type-Located-Metric-Space X) where + is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space : + subtype l2 (sequence (type-subtype S)) + is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space a = + Π-Prop ℕ (λ n → apart-prop-Located-Metric-Space X (pr1 (a n)) x) ∧ + is-limit-prop-sequence-Metric-Space + ( metric-space-Located-Metric-Space X) + ( pr1 ∘ a) + ( x) + + is-sequence-accumulating-to-point-subset-Located-Metric-Space : + sequence (type-subtype S) → UU l2 + is-sequence-accumulating-to-point-subset-Located-Metric-Space = + is-in-subtype + ( is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space) + is-sequential-accumulation-point-prop-subset-Located-Metric-Space : Prop (l1 ⊔ l2 ⊔ l3) is-sequential-accumulation-point-prop-subset-Located-Metric-Space = ∃ ( sequence (type-subtype S)) - ( λ a → - Π-Prop ℕ (λ n → apart-prop-Located-Metric-Space X (pr1 (a n)) x) ∧ - is-limit-prop-sequence-Metric-Space - ( metric-space-Located-Metric-Space X) - ( pr1 ∘ a) - ( x)) + ( is-sequence-accumulating-to-point-prop-subset-Located-Metric-Space) is-sequential-accumulation-point-subset-Located-Metric-Space : UU (l1 ⊔ l2 ⊔ l3) From 719aff360c9abc37468500052dd79f8611dff7ea Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 8 Nov 2025 19:40:53 -0800 Subject: [PATCH 074/134] Fix link --- .../accumulation-points-subsets-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md b/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md index 9cae91b49d2..31cee9ca467 100644 --- a/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md +++ b/src/real-numbers/accumulation-points-subsets-real-numbers.lagda.md @@ -28,7 +28,7 @@ An {{#concept "accumulation point" Disambiguation="of a subset of ℝ" Agda=accumulation-point-subset-ℝ}} of a [subset](real-numbers.subsets-real-numbers.md) `S` of the [real numbers](real-numbers.dedekind-real-numbers.md) is an -[accumulation point](metric-spaces.accumulation-points-located-metric-spaces.md) +[accumulation point](metric-spaces.accumulation-points-subsets-located-metric-spaces.md) of `S` in the [located metric space of the real numbers](real-numbers.located-metric-space-of-real-numbers.md). From 8569df8582c3d35496e39a140b7ed34d00d965cd Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sun, 9 Nov 2025 13:06:21 +0100 Subject: [PATCH 075/134] chore: optimize imports `real-numbers` --- src/real-numbers/absolute-value-real-numbers.lagda.md | 1 - .../addition-lower-dedekind-real-numbers.lagda.md | 5 ----- .../addition-nonnegative-real-numbers.lagda.md | 1 - src/real-numbers/addition-real-numbers.lagda.md | 1 - .../addition-upper-dedekind-real-numbers.lagda.md | 2 -- src/real-numbers/apartness-real-numbers.lagda.md | 3 --- .../arithmetically-located-dedekind-cuts.lagda.md | 2 -- src/real-numbers/binary-maximum-real-numbers.lagda.md | 2 -- ...cauchy-completeness-dedekind-real-numbers.lagda.md | 4 ---- .../cauchy-sequences-real-numbers.lagda.md | 4 ---- .../closed-intervals-real-numbers.lagda.md | 4 ---- src/real-numbers/dedekind-real-numbers.lagda.md | 9 --------- src/real-numbers/difference-real-numbers.lagda.md | 1 - src/real-numbers/distance-real-numbers.lagda.md | 2 -- ...ng-closed-rational-intervals-real-numbers.lagda.md | 1 - .../inequality-nonnegative-real-numbers.lagda.md | 1 - .../inequality-positive-real-numbers.lagda.md | 1 - .../inequality-upper-dedekind-real-numbers.lagda.md | 1 - .../infima-and-suprema-families-real-numbers.lagda.md | 2 -- ...-finitely-enumerable-subsets-real-numbers.lagda.md | 1 - ...ited-totally-bounded-subsets-real-numbers.lagda.md | 1 - .../isometry-addition-real-numbers.lagda.md | 5 ----- .../isometry-negation-real-numbers.lagda.md | 1 - .../large-additive-group-of-real-numbers.lagda.md | 2 -- ...rge-multiplicative-monoid-of-real-numbers.lagda.md | 2 -- src/real-numbers/large-ring-of-real-numbers.lagda.md | 4 ---- .../limits-sequences-real-numbers.lagda.md | 2 -- ...tz-continuity-multiplication-real-numbers.lagda.md | 7 ------- src/real-numbers/lower-dedekind-real-numbers.lagda.md | 1 - .../maximum-finite-families-real-numbers.lagda.md | 3 --- .../maximum-upper-dedekind-real-numbers.lagda.md | 6 ------ ...-finitely-enumerable-subsets-real-numbers.lagda.md | 3 --- .../minimum-lower-dedekind-real-numbers.lagda.md | 1 - .../minimum-upper-dedekind-real-numbers.lagda.md | 2 -- .../multiplication-nonnegative-real-numbers.lagda.md | 1 - ...cation-positive-and-negative-real-numbers.lagda.md | 1 - .../multiplication-positive-real-numbers.lagda.md | 1 - ...iplicative-inverses-negative-real-numbers.lagda.md | 1 - ...tiplicative-inverses-nonzero-real-numbers.lagda.md | 4 ---- ...iplicative-inverses-positive-real-numbers.lagda.md | 3 --- src/real-numbers/negative-real-numbers.lagda.md | 1 - src/real-numbers/nonnegative-real-numbers.lagda.md | 2 -- .../positive-and-negative-real-numbers.lagda.md | 3 --- src/real-numbers/positive-real-numbers.lagda.md | 9 --------- src/real-numbers/powers-real-numbers.lagda.md | 1 - .../raising-universe-levels-real-numbers.lagda.md | 3 --- src/real-numbers/rational-real-numbers.lagda.md | 11 ----------- ...-numbers-from-lower-dedekind-real-numbers.lagda.md | 3 --- ...-numbers-from-upper-dedekind-real-numbers.lagda.md | 3 --- .../similarity-nonnegative-real-numbers.lagda.md | 7 ------- src/real-numbers/similarity-real-numbers.lagda.md | 9 --------- src/real-numbers/squares-real-numbers.lagda.md | 7 ------- ...ies-addition-and-subtraction-real-numbers.lagda.md | 2 -- ...trict-inequality-nonnegative-real-numbers.lagda.md | 1 - .../strict-inequality-positive-real-numbers.lagda.md | 1 - .../strict-inequality-real-numbers.lagda.md | 1 - src/real-numbers/subsets-real-numbers.lagda.md | 3 --- .../totally-bounded-subsets-real-numbers.lagda.md | 3 --- ...on-subtraction-cuts-dedekind-real-numbers.lagda.md | 1 - src/real-numbers/upper-dedekind-real-numbers.lagda.md | 1 - 60 files changed, 171 deletions(-) diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index fc75c7ed59d..1956f141160 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -19,7 +19,6 @@ open import foundation.disjunction open import foundation.empty-types open import foundation.function-types open import foundation.identity-types -open import foundation.logical-equivalences open import foundation.transport-along-identifications open import foundation.universe-levels 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 bd1e58abfe1..6b2493249ea 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -21,27 +21,22 @@ 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.sets 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.commutative-monoids open import group-theory.groups open import group-theory.minkowski-multiplication-commutative-monoids open import group-theory.monoids open import group-theory.semigroups -open import logic.functoriality-existential-quantification - open import real-numbers.lower-dedekind-real-numbers open import real-numbers.rational-lower-dedekind-real-numbers ``` diff --git a/src/real-numbers/addition-nonnegative-real-numbers.lagda.md b/src/real-numbers/addition-nonnegative-real-numbers.lagda.md index 5298362a872..6c29699df8a 100644 --- a/src/real-numbers/addition-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/addition-nonnegative-real-numbers.lagda.md @@ -28,7 +28,6 @@ open import real-numbers.nonnegative-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-nonnegative-real-numbers -open import real-numbers.strict-inequality-real-numbers ```
diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 356d51654fd..8f67041ac9a 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -11,7 +11,6 @@ module real-numbers.addition-real-numbers where ```agda open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-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 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 616124b9515..7ada6a30a27 100644 --- a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md @@ -19,7 +19,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.cartesian-product-types open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.existential-quantification @@ -30,7 +29,6 @@ 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.commutative-monoids open import group-theory.groups open import group-theory.minkowski-multiplication-commutative-monoids diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index 023123e63ef..242133133ba 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -7,18 +7,15 @@ module real-numbers.apartness-real-numbers where
Imports ```agda -open import foundation.apartness-relations open import foundation.disjunction open import foundation.empty-types open import foundation.function-types open import foundation.functoriality-disjunction -open import foundation.identity-types open import foundation.large-apartness-relations open import foundation.large-binary-relations open import foundation.negated-equality open import foundation.negation open import foundation.propositions -open import foundation.transport-along-identifications open import foundation.universe-levels open import real-numbers.dedekind-real-numbers diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index 1592876b213..d2abf4e12a8 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -27,7 +27,6 @@ open import elementary-number-theory.strict-inequality-positive-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 @@ -37,7 +36,6 @@ 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.propositional-truncations open import foundation.propositions open import foundation.subtypes diff --git a/src/real-numbers/binary-maximum-real-numbers.lagda.md b/src/real-numbers/binary-maximum-real-numbers.lagda.md index a321c823561..d4da7d69c05 100644 --- a/src/real-numbers/binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/binary-maximum-real-numbers.lagda.md @@ -25,10 +25,8 @@ open import order-theory.join-semilattices open import order-theory.large-join-semilattices open import order-theory.least-upper-bounds-large-posets -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.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.lower-dedekind-real-numbers open import real-numbers.maximum-lower-dedekind-real-numbers diff --git a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md index 9d4f3567a1d..6e102ad464b 100644 --- a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md @@ -21,7 +21,6 @@ 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.disjunction open import foundation.empty-types open import foundation.existential-quantification open import foundation.functoriality-disjunction @@ -34,19 +33,16 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.cauchy-approximations-metric-spaces -open import metric-spaces.cauchy-sequences-complete-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.convergent-cauchy-approximations-metric-spaces open import metric-spaces.limits-of-cauchy-approximations-metric-spaces open import metric-spaces.metric-spaces -open import real-numbers.absolute-value-real-numbers 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.distance-real-numbers open import real-numbers.inequalities-addition-and-subtraction-real-numbers -open import real-numbers.inequality-real-numbers open import real-numbers.lower-dedekind-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.negation-real-numbers diff --git a/src/real-numbers/cauchy-sequences-real-numbers.lagda.md b/src/real-numbers/cauchy-sequences-real-numbers.lagda.md index cac5f34c62a..68762013862 100644 --- a/src/real-numbers/cauchy-sequences-real-numbers.lagda.md +++ b/src/real-numbers/cauchy-sequences-real-numbers.lagda.md @@ -11,14 +11,10 @@ module real-numbers.cauchy-sequences-real-numbers where ```agda open import foundation.universe-levels -open import lists.sequences - open import metric-spaces.cartesian-products-metric-spaces open import metric-spaces.cauchy-sequences-complete-metric-spaces open import metric-spaces.cauchy-sequences-metric-spaces -open import metric-spaces.convergent-sequences-metric-spaces -open import real-numbers.addition-real-numbers open import real-numbers.cauchy-completeness-dedekind-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.isometry-addition-real-numbers diff --git a/src/real-numbers/closed-intervals-real-numbers.lagda.md b/src/real-numbers/closed-intervals-real-numbers.lagda.md index d8460f5bdc8..09d4fada9e8 100644 --- a/src/real-numbers/closed-intervals-real-numbers.lagda.md +++ b/src/real-numbers/closed-intervals-real-numbers.lagda.md @@ -11,9 +11,6 @@ open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.additive-group-of-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-positive-rational-numbers -open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.dependent-pair-types open import foundation.logical-equivalences @@ -26,7 +23,6 @@ open import foundation.universe-levels open import metric-spaces.closed-subsets-metric-spaces open import metric-spaces.complete-metric-spaces open import metric-spaces.metric-spaces -open import metric-spaces.subspaces-metric-spaces open import order-theory.closed-intervals-large-posets diff --git a/src/real-numbers/dedekind-real-numbers.lagda.md b/src/real-numbers/dedekind-real-numbers.lagda.md index d846a3556de..22ece701910 100644 --- a/src/real-numbers/dedekind-real-numbers.lagda.md +++ b/src/real-numbers/dedekind-real-numbers.lagda.md @@ -15,8 +15,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.cartesian-product-types -open import foundation.complements-subtypes open import foundation.conjunction open import foundation.coproduct-types open import foundation.dependent-pair-types @@ -24,28 +22,21 @@ open import foundation.disjoint-subtypes 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 open import foundation.functoriality-dependent-pair-types open import foundation.identity-types -open import foundation.inhabited-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 open import foundation.similarity-subtypes open import foundation.subtypes open import foundation.transport-along-identifications -open import foundation.truncated-types open import foundation.universal-quantification 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 diff --git a/src/real-numbers/difference-real-numbers.lagda.md b/src/real-numbers/difference-real-numbers.lagda.md index e3a1cd036e7..0d13f8b33f0 100644 --- a/src/real-numbers/difference-real-numbers.lagda.md +++ b/src/real-numbers/difference-real-numbers.lagda.md @@ -14,7 +14,6 @@ open import elementary-number-theory.rational-numbers open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions -open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels diff --git a/src/real-numbers/distance-real-numbers.lagda.md b/src/real-numbers/distance-real-numbers.lagda.md index 8e430fb8b0a..4bc37c1536a 100644 --- a/src/real-numbers/distance-real-numbers.lagda.md +++ b/src/real-numbers/distance-real-numbers.lagda.md @@ -9,11 +9,9 @@ module real-numbers.distance-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 foundation.action-on-identifications-functions open import foundation.dependent-pair-types diff --git a/src/real-numbers/enclosing-closed-rational-intervals-real-numbers.lagda.md b/src/real-numbers/enclosing-closed-rational-intervals-real-numbers.lagda.md index 77d3ab8c6b5..977e33b2245 100644 --- a/src/real-numbers/enclosing-closed-rational-intervals-real-numbers.lagda.md +++ b/src/real-numbers/enclosing-closed-rational-intervals-real-numbers.lagda.md @@ -10,7 +10,6 @@ module real-numbers.enclosing-closed-rational-intervals-real-numbers where open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.interior-closed-intervals-rational-numbers open import elementary-number-theory.intersections-closed-intervals-rational-numbers -open import elementary-number-theory.rational-numbers open import foundation.conjunction open import foundation.dependent-pair-types diff --git a/src/real-numbers/inequality-nonnegative-real-numbers.lagda.md b/src/real-numbers/inequality-nonnegative-real-numbers.lagda.md index fa71aea44a1..dc71c190c0a 100644 --- a/src/real-numbers/inequality-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/inequality-nonnegative-real-numbers.lagda.md @@ -22,7 +22,6 @@ open import foundation.propositional-truncations open import foundation.propositions open import foundation.universe-levels -open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.rational-real-numbers diff --git a/src/real-numbers/inequality-positive-real-numbers.lagda.md b/src/real-numbers/inequality-positive-real-numbers.lagda.md index 2ef1d3a686c..15343cc094b 100644 --- a/src/real-numbers/inequality-positive-real-numbers.lagda.md +++ b/src/real-numbers/inequality-positive-real-numbers.lagda.md @@ -12,7 +12,6 @@ module real-numbers.inequality-positive-real-numbers where open import foundation.propositions open import foundation.universe-levels -open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.positive-real-numbers ``` diff --git a/src/real-numbers/inequality-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/inequality-upper-dedekind-real-numbers.lagda.md index 2b8a3de8896..48dc2d04d4d 100644 --- a/src/real-numbers/inequality-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/inequality-upper-dedekind-real-numbers.lagda.md @@ -18,7 +18,6 @@ open import foundation.dependent-pair-types open import foundation.empty-types open import foundation.existential-quantification open import foundation.logical-equivalences -open import foundation.powersets open import foundation.propositions open import foundation.subtypes open import foundation.unit-type diff --git a/src/real-numbers/infima-and-suprema-families-real-numbers.lagda.md b/src/real-numbers/infima-and-suprema-families-real-numbers.lagda.md index f889ec1a311..6a0b26fdf4d 100644 --- a/src/real-numbers/infima-and-suprema-families-real-numbers.lagda.md +++ b/src/real-numbers/infima-and-suprema-families-real-numbers.lagda.md @@ -8,7 +8,6 @@ module real-numbers.infima-and-suprema-families-real-numbers where ```agda open import foundation.dependent-pair-types -open import foundation.existential-quantification open import foundation.propositional-truncations open import foundation.subtypes open import foundation.universe-levels @@ -17,7 +16,6 @@ open import real-numbers.closed-intervals-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.infima-families-real-numbers -open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.subsets-real-numbers open import real-numbers.suprema-families-real-numbers ``` diff --git a/src/real-numbers/inhabited-finitely-enumerable-subsets-real-numbers.lagda.md b/src/real-numbers/inhabited-finitely-enumerable-subsets-real-numbers.lagda.md index 945abdb69cb..a5eb36703a0 100644 --- a/src/real-numbers/inhabited-finitely-enumerable-subsets-real-numbers.lagda.md +++ b/src/real-numbers/inhabited-finitely-enumerable-subsets-real-numbers.lagda.md @@ -20,7 +20,6 @@ open import real-numbers.negation-real-numbers open import real-numbers.subsets-real-numbers open import univalent-combinatorics.finitely-enumerable-subtypes -open import univalent-combinatorics.finitely-enumerable-types open import univalent-combinatorics.inhabited-finitely-enumerable-subtypes ``` diff --git a/src/real-numbers/inhabited-totally-bounded-subsets-real-numbers.lagda.md b/src/real-numbers/inhabited-totally-bounded-subsets-real-numbers.lagda.md index 8a3677def8c..3b65a9823d9 100644 --- a/src/real-numbers/inhabited-totally-bounded-subsets-real-numbers.lagda.md +++ b/src/real-numbers/inhabited-totally-bounded-subsets-real-numbers.lagda.md @@ -32,7 +32,6 @@ open import metric-spaces.approximations-metric-spaces open import metric-spaces.inhabited-totally-bounded-subspaces-metric-spaces open import metric-spaces.metric-spaces open import metric-spaces.nets-metric-spaces -open import metric-spaces.subspaces-metric-spaces open import metric-spaces.totally-bounded-metric-spaces open import order-theory.upper-bounds-large-posets diff --git a/src/real-numbers/isometry-addition-real-numbers.lagda.md b/src/real-numbers/isometry-addition-real-numbers.lagda.md index c42c49edba3..3b1ca989435 100644 --- a/src/real-numbers/isometry-addition-real-numbers.lagda.md +++ b/src/real-numbers/isometry-addition-real-numbers.lagda.md @@ -11,25 +11,20 @@ module real-numbers.isometry-addition-real-numbers where ```agda open import foundation.dependent-pair-types open import foundation.function-extensionality -open import foundation.function-types open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.cartesian-products-metric-spaces open import metric-spaces.isometries-metric-spaces open import metric-spaces.metric-space-of-isometries-metric-spaces -open import metric-spaces.metric-spaces open import metric-spaces.modulated-uniformly-continuous-functions-metric-spaces -open import metric-spaces.uniformly-continuous-functions-metric-spaces open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.inequalities-addition-and-subtraction-real-numbers -open import real-numbers.inequality-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.strict-inequality-real-numbers ```
diff --git a/src/real-numbers/isometry-negation-real-numbers.lagda.md b/src/real-numbers/isometry-negation-real-numbers.lagda.md index e36974427a6..3c2b4494329 100644 --- a/src/real-numbers/isometry-negation-real-numbers.lagda.md +++ b/src/real-numbers/isometry-negation-real-numbers.lagda.md @@ -20,7 +20,6 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import metric-spaces.isometries-metric-spaces -open import metric-spaces.metric-spaces open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers diff --git a/src/real-numbers/large-additive-group-of-real-numbers.lagda.md b/src/real-numbers/large-additive-group-of-real-numbers.lagda.md index 77808a473ab..8e876af34b7 100644 --- a/src/real-numbers/large-additive-group-of-real-numbers.lagda.md +++ b/src/real-numbers/large-additive-group-of-real-numbers.lagda.md @@ -9,10 +9,8 @@ module real-numbers.large-additive-group-of-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 foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.universe-levels diff --git a/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md b/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md index 87f9524dc39..b5d2a73c59d 100644 --- a/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md +++ b/src/real-numbers/large-multiplicative-monoid-of-real-numbers.lagda.md @@ -11,9 +11,7 @@ module real-numbers.large-multiplicative-monoid-of-real-numbers where ```agda open import foundation.universe-levels -open import group-theory.abelian-groups open import group-theory.commutative-monoids -open import group-theory.large-abelian-groups open import group-theory.large-commutative-monoids open import group-theory.large-monoids open import group-theory.large-semigroups diff --git a/src/real-numbers/large-ring-of-real-numbers.lagda.md b/src/real-numbers/large-ring-of-real-numbers.lagda.md index 5786d7c56cb..98fd1e8782a 100644 --- a/src/real-numbers/large-ring-of-real-numbers.lagda.md +++ b/src/real-numbers/large-ring-of-real-numbers.lagda.md @@ -13,16 +13,12 @@ open import commutative-algebra.commutative-rings open import commutative-algebra.homomorphisms-commutative-rings open import commutative-algebra.large-commutative-rings -open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.ring-of-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 group-theory.large-monoids - open import real-numbers.large-additive-group-of-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.raising-universe-levels-real-numbers diff --git a/src/real-numbers/limits-sequences-real-numbers.lagda.md b/src/real-numbers/limits-sequences-real-numbers.lagda.md index f40aab460f5..f7ab6051833 100644 --- a/src/real-numbers/limits-sequences-real-numbers.lagda.md +++ b/src/real-numbers/limits-sequences-real-numbers.lagda.md @@ -10,7 +10,6 @@ module real-numbers.limits-sequences-real-numbers where ```agda open import foundation.dependent-pair-types -open import foundation.propositional-truncations open import foundation.universe-levels open import lists.sequences @@ -19,7 +18,6 @@ open import metric-spaces.cartesian-products-metric-spaces open import metric-spaces.limits-of-sequences-metric-spaces open import real-numbers.addition-real-numbers -open import real-numbers.cauchy-sequences-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.isometry-addition-real-numbers open import real-numbers.metric-space-of-real-numbers diff --git a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md index 1b56e2c2444..b44914841b4 100644 --- a/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md +++ b/src/real-numbers/lipschitz-continuity-multiplication-real-numbers.lagda.md @@ -12,14 +12,10 @@ module real-numbers.lipschitz-continuity-multiplication-real-numbers where open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.positive-rational-numbers -open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.existential-quantification -open import foundation.function-extensionality 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 metric-spaces.cartesian-products-metric-spaces @@ -28,14 +24,11 @@ open import metric-spaces.uniformly-continuous-functions-metric-spaces open import order-theory.large-posets -open import real-numbers.absolute-value-closed-intervals-real-numbers open import real-numbers.absolute-value-real-numbers open import real-numbers.addition-nonnegative-real-numbers 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.distance-real-numbers -open import real-numbers.enclosing-closed-rational-intervals-real-numbers open import real-numbers.inequalities-addition-and-subtraction-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.inhabited-totally-bounded-subsets-real-numbers diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index 6cfa5efab42..0372e6da377 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -24,7 +24,6 @@ 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.similarity-subtypes diff --git a/src/real-numbers/maximum-finite-families-real-numbers.lagda.md b/src/real-numbers/maximum-finite-families-real-numbers.lagda.md index 34e2ed1f446..543950300ed 100644 --- a/src/real-numbers/maximum-finite-families-real-numbers.lagda.md +++ b/src/real-numbers/maximum-finite-families-real-numbers.lagda.md @@ -9,7 +9,6 @@ module real-numbers.maximum-finite-families-real-numbers where ```agda open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.natural-numbers -open import elementary-number-theory.positive-rational-numbers open import foundation.action-on-identifications-functions open import foundation.coproduct-types @@ -30,7 +29,6 @@ open import lists.finite-sequences open import logic.functoriality-existential-quantification -open import order-theory.join-semilattices open import order-theory.joins-finite-families-join-semilattices open import order-theory.least-upper-bounds-large-posets open import order-theory.upper-bounds-large-posets @@ -40,7 +38,6 @@ open import real-numbers.binary-maximum-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.difference-real-numbers open import real-numbers.inequality-real-numbers -open import real-numbers.negation-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers diff --git a/src/real-numbers/maximum-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/maximum-upper-dedekind-real-numbers.lagda.md index b4eb768f8bd..8819476f7c8 100644 --- a/src/real-numbers/maximum-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/maximum-upper-dedekind-real-numbers.lagda.md @@ -16,15 +16,9 @@ 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.disjunction open import foundation.existential-quantification -open import foundation.function-types -open import foundation.functoriality-cartesian-product-types -open import foundation.inhabited-types open import foundation.intersections-subtypes open import foundation.logical-equivalences -open import foundation.powersets -open import foundation.propositional-truncations open import foundation.subtypes open import foundation.universe-levels diff --git a/src/real-numbers/minimum-inhabited-finitely-enumerable-subsets-real-numbers.lagda.md b/src/real-numbers/minimum-inhabited-finitely-enumerable-subsets-real-numbers.lagda.md index 5909da62ca6..57f9d1bf809 100644 --- a/src/real-numbers/minimum-inhabited-finitely-enumerable-subsets-real-numbers.lagda.md +++ b/src/real-numbers/minimum-inhabited-finitely-enumerable-subsets-real-numbers.lagda.md @@ -21,9 +21,6 @@ open import real-numbers.infima-families-real-numbers open import real-numbers.inhabited-finitely-enumerable-subsets-real-numbers open import real-numbers.maximum-inhabited-finitely-enumerable-subsets-real-numbers open import real-numbers.negation-real-numbers -open import real-numbers.subsets-real-numbers - -open import univalent-combinatorics.finitely-enumerable-subtypes ```
diff --git a/src/real-numbers/minimum-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/minimum-lower-dedekind-real-numbers.lagda.md index 860e3cee2ad..e0c6900799d 100644 --- a/src/real-numbers/minimum-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/minimum-lower-dedekind-real-numbers.lagda.md @@ -26,7 +26,6 @@ open import logic.functoriality-existential-quantification open import order-theory.greatest-lower-bounds-large-posets open import order-theory.large-meet-semilattices -open import order-theory.lower-bounds-large-posets open import real-numbers.inequality-lower-dedekind-real-numbers open import real-numbers.lower-dedekind-real-numbers diff --git a/src/real-numbers/minimum-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/minimum-upper-dedekind-real-numbers.lagda.md index 590cb5a2e97..6ea8a8c76e7 100644 --- a/src/real-numbers/minimum-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/minimum-upper-dedekind-real-numbers.lagda.md @@ -21,7 +21,6 @@ open import foundation.functoriality-cartesian-product-types open import foundation.functoriality-disjunction open import foundation.inhabited-types open import foundation.logical-equivalences -open import foundation.powersets open import foundation.propositional-truncations open import foundation.subtypes open import foundation.unions-subtypes @@ -30,7 +29,6 @@ open import foundation.universe-levels open import logic.functoriality-existential-quantification open import order-theory.greatest-lower-bounds-large-posets -open import order-theory.large-inflattices open import order-theory.lower-bounds-large-posets open import real-numbers.inequality-upper-dedekind-real-numbers diff --git a/src/real-numbers/multiplication-nonnegative-real-numbers.lagda.md b/src/real-numbers/multiplication-nonnegative-real-numbers.lagda.md index a1bb60ef8e5..b4af60d1c53 100644 --- a/src/real-numbers/multiplication-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-nonnegative-real-numbers.lagda.md @@ -26,7 +26,6 @@ open import foundation.transport-along-identifications open import foundation.universe-levels open import real-numbers.dedekind-real-numbers -open import real-numbers.difference-real-numbers open import real-numbers.inequality-nonnegative-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.multiplication-real-numbers diff --git a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md index c0fea896952..9e9e66cc377 100644 --- a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md @@ -8,7 +8,6 @@ module real-numbers.multiplication-positive-and-negative-real-numbers where ```agda open import foundation.dependent-pair-types -open import foundation.transport-along-identifications open import foundation.universe-levels open import real-numbers.dedekind-real-numbers diff --git a/src/real-numbers/multiplication-positive-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-real-numbers.lagda.md index 7972741f76c..c151f0ecd28 100644 --- a/src/real-numbers/multiplication-positive-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-real-numbers.lagda.md @@ -9,7 +9,6 @@ module real-numbers.multiplication-positive-real-numbers where
Imports ```agda -open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.minimum-positive-rational-numbers open import elementary-number-theory.multiplication-closed-intervals-rational-numbers diff --git a/src/real-numbers/multiplicative-inverses-negative-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-negative-real-numbers.lagda.md index 8acc9d09e71..564230fd9b5 100644 --- a/src/real-numbers/multiplicative-inverses-negative-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-negative-real-numbers.lagda.md @@ -17,7 +17,6 @@ open import foundation.universe-levels open import real-numbers.dedekind-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.multiplicative-inverses-positive-real-numbers -open import real-numbers.negation-real-numbers open import real-numbers.negative-real-numbers open import real-numbers.positive-and-negative-real-numbers open import real-numbers.rational-real-numbers diff --git a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md index f91c1d2bfcf..ad287640f8b 100644 --- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md @@ -19,23 +19,19 @@ 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.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.propositional-truncations open import foundation.propositions open import foundation.subtypes open import foundation.transport-along-identifications -open import foundation.unit-type open import foundation.universe-levels open import real-numbers.dedekind-real-numbers -open import real-numbers.inequality-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.multiplicative-inverses-negative-real-numbers open import real-numbers.multiplicative-inverses-positive-real-numbers diff --git a/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md index 490dd190442..47b08b6c2a9 100644 --- a/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-positive-real-numbers.lagda.md @@ -12,9 +12,7 @@ module real-numbers.multiplicative-inverses-positive-real-numbers where open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.maximum-positive-rational-numbers open import elementary-number-theory.maximum-rational-numbers -open import elementary-number-theory.minimum-positive-rational-numbers open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-closed-intervals-rational-numbers open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers @@ -39,7 +37,6 @@ 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.inhabited-subtypes open import foundation.logical-equivalences diff --git a/src/real-numbers/negative-real-numbers.lagda.md b/src/real-numbers/negative-real-numbers.lagda.md index fd87ef7b8c7..75b3944778a 100644 --- a/src/real-numbers/negative-real-numbers.lagda.md +++ b/src/real-numbers/negative-real-numbers.lagda.md @@ -10,7 +10,6 @@ module real-numbers.negative-real-numbers where ```agda open import elementary-number-theory.negative-rational-numbers -open import elementary-number-theory.rational-numbers open import foundation.dependent-pair-types open import foundation.existential-quantification diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index d8219df9e7f..c7b56ff0af2 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -31,8 +31,6 @@ open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels -open import metric-spaces.metric-spaces - open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.difference-real-numbers diff --git a/src/real-numbers/positive-and-negative-real-numbers.lagda.md b/src/real-numbers/positive-and-negative-real-numbers.lagda.md index 850496dd467..d1d0920e34d 100644 --- a/src/real-numbers/positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/positive-and-negative-real-numbers.lagda.md @@ -10,13 +10,10 @@ module real-numbers.positive-and-negative-real-numbers where ```agda open import foundation.dependent-pair-types -open import foundation.identity-types -open import foundation.propositions open import foundation.transport-along-identifications open import foundation.universe-levels 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.negative-real-numbers open import real-numbers.nonnegative-real-numbers diff --git a/src/real-numbers/positive-real-numbers.lagda.md b/src/real-numbers/positive-real-numbers.lagda.md index e32729d0f77..9b8c6101ca9 100644 --- a/src/real-numbers/positive-real-numbers.lagda.md +++ b/src/real-numbers/positive-real-numbers.lagda.md @@ -9,31 +9,22 @@ module real-numbers.positive-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.binary-transport 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.logical-equivalences -open import foundation.propositional-truncations open import foundation.propositions 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 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.negation-real-numbers diff --git a/src/real-numbers/powers-real-numbers.lagda.md b/src/real-numbers/powers-real-numbers.lagda.md index 8038140ac09..55ff07d63df 100644 --- a/src/real-numbers/powers-real-numbers.lagda.md +++ b/src/real-numbers/powers-real-numbers.lagda.md @@ -22,7 +22,6 @@ open import elementary-number-theory.ring-of-rational-numbers open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types -open import foundation.disjunction open import foundation.identity-types open import foundation.transport-along-identifications open import foundation.universe-levels diff --git a/src/real-numbers/raising-universe-levels-real-numbers.lagda.md b/src/real-numbers/raising-universe-levels-real-numbers.lagda.md index 2782e63dab5..c3f1b1d4179 100644 --- a/src/real-numbers/raising-universe-levels-real-numbers.lagda.md +++ b/src/real-numbers/raising-universe-levels-real-numbers.lagda.md @@ -28,9 +28,6 @@ open import foundation.universe-levels open import logic.functoriality-existential-quantification -open import metric-spaces.isometries-metric-spaces -open import metric-spaces.metric-space-of-rational-numbers - open import real-numbers.dedekind-real-numbers open import real-numbers.lower-dedekind-real-numbers open import real-numbers.similarity-real-numbers diff --git a/src/real-numbers/rational-real-numbers.lagda.md b/src/real-numbers/rational-real-numbers.lagda.md index df01919a624..285729c4a4d 100644 --- a/src/real-numbers/rational-real-numbers.lagda.md +++ b/src/real-numbers/rational-real-numbers.lagda.md @@ -9,7 +9,6 @@ module real-numbers.rational-real-numbers where
Imports ```agda -open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.integers open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.positive-rational-numbers @@ -17,20 +16,14 @@ 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.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.homotopies 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.retractions open import foundation.sections @@ -38,15 +31,11 @@ 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.dedekind-real-numbers -open import real-numbers.lower-dedekind-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-lower-dedekind-real-numbers open import real-numbers.rational-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/real-numbers-from-lower-dedekind-real-numbers.lagda.md b/src/real-numbers/real-numbers-from-lower-dedekind-real-numbers.lagda.md index 227fa5c7afc..1f1c549e9a1 100644 --- a/src/real-numbers/real-numbers-from-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/real-numbers-from-lower-dedekind-real-numbers.lagda.md @@ -9,8 +9,6 @@ module real-numbers.real-numbers-from-lower-dedekind-real-numbers where
Imports ```agda -open import elementary-number-theory.addition-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 @@ -27,7 +25,6 @@ open import foundation.inhabited-subtypes 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.universe-levels diff --git a/src/real-numbers/real-numbers-from-upper-dedekind-real-numbers.lagda.md b/src/real-numbers/real-numbers-from-upper-dedekind-real-numbers.lagda.md index 80c6cacfa97..d1d478c1a34 100644 --- a/src/real-numbers/real-numbers-from-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/real-numbers-from-upper-dedekind-real-numbers.lagda.md @@ -9,8 +9,6 @@ module real-numbers.real-numbers-from-upper-dedekind-real-numbers where
Imports ```agda -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 @@ -25,7 +23,6 @@ open import foundation.inhabited-subtypes 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.universe-levels diff --git a/src/real-numbers/similarity-nonnegative-real-numbers.lagda.md b/src/real-numbers/similarity-nonnegative-real-numbers.lagda.md index 3686eb0a01d..6b03b09e6f9 100644 --- a/src/real-numbers/similarity-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/similarity-nonnegative-real-numbers.lagda.md @@ -7,19 +7,12 @@ module real-numbers.similarity-nonnegative-real-numbers where
Imports ```agda -open import elementary-number-theory.positive-rational-numbers - open import foundation.identity-types -open import foundation.logical-equivalences open import foundation.propositions open import foundation.universe-levels -open import real-numbers.dedekind-real-numbers -open import real-numbers.inequality-real-numbers open import real-numbers.nonnegative-real-numbers -open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.strict-inequality-real-numbers ```
diff --git a/src/real-numbers/similarity-real-numbers.lagda.md b/src/real-numbers/similarity-real-numbers.lagda.md index 5664b3a49bc..2c959f7d469 100644 --- a/src/real-numbers/similarity-real-numbers.lagda.md +++ b/src/real-numbers/similarity-real-numbers.lagda.md @@ -7,26 +7,17 @@ module real-numbers.similarity-real-numbers where
Imports ```agda -open import elementary-number-theory.strict-inequality-rational-numbers - -open import foundation.complements-subtypes open import foundation.dependent-pair-types -open import foundation.disjunction -open import foundation.empty-types -open import foundation.function-types open import foundation.identity-types open import foundation.large-equivalence-relations open import foundation.large-similarity-relations open import foundation.logical-equivalences -open import foundation.powersets open import foundation.propositions open import foundation.similarity-subtypes open import foundation.transport-along-identifications open import foundation.universe-levels -open import order-theory.large-posets open import order-theory.large-preorders -open import order-theory.similarity-of-elements-large-posets open import real-numbers.dedekind-real-numbers ``` diff --git a/src/real-numbers/squares-real-numbers.lagda.md b/src/real-numbers/squares-real-numbers.lagda.md index e9995706b55..86d106d8c6a 100644 --- a/src/real-numbers/squares-real-numbers.lagda.md +++ b/src/real-numbers/squares-real-numbers.lagda.md @@ -9,30 +9,23 @@ module real-numbers.squares-real-numbers where
Imports ```agda -open import elementary-number-theory.inequalities-positive-and-negative-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.intersections-closed-intervals-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.multiplication-closed-intervals-rational-numbers open import elementary-number-theory.multiplication-negative-rational-numbers -open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers -open import elementary-number-theory.nonpositive-rational-numbers -open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.squares-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.disjunction -open import foundation.empty-types open import foundation.existential-quantification -open import foundation.function-types open import foundation.identity-types open import foundation.propositional-truncations open import foundation.transport-along-identifications diff --git a/src/real-numbers/strict-inequalities-addition-and-subtraction-real-numbers.lagda.md b/src/real-numbers/strict-inequalities-addition-and-subtraction-real-numbers.lagda.md index 26b7ac1b7da..20fe2fbe234 100644 --- a/src/real-numbers/strict-inequalities-addition-and-subtraction-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequalities-addition-and-subtraction-real-numbers.lagda.md @@ -21,7 +21,6 @@ open import foundation.binary-transport open import foundation.cartesian-product-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.logical-equivalences @@ -34,7 +33,6 @@ 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.strict-inequality-real-numbers diff --git a/src/real-numbers/strict-inequality-nonnegative-real-numbers.lagda.md b/src/real-numbers/strict-inequality-nonnegative-real-numbers.lagda.md index 07f144ab5d9..af7f51e4931 100644 --- a/src/real-numbers/strict-inequality-nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-nonnegative-real-numbers.lagda.md @@ -22,7 +22,6 @@ open import foundation.universe-levels open import logic.functoriality-existential-quantification -open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-nonnegative-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.nonnegative-real-numbers diff --git a/src/real-numbers/strict-inequality-positive-real-numbers.lagda.md b/src/real-numbers/strict-inequality-positive-real-numbers.lagda.md index a0b7199f32b..e24b886aea1 100644 --- a/src/real-numbers/strict-inequality-positive-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-positive-real-numbers.lagda.md @@ -12,7 +12,6 @@ module real-numbers.strict-inequality-positive-real-numbers where open import foundation.propositions open import foundation.universe-levels -open import real-numbers.dedekind-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.strict-inequality-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 96296b0ca74..d632b09a547 100644 --- a/src/real-numbers/strict-inequality-real-numbers.lagda.md +++ b/src/real-numbers/strict-inequality-real-numbers.lagda.md @@ -26,7 +26,6 @@ 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 open import foundation.type-arithmetic-cartesian-product-types open import foundation.universe-levels diff --git a/src/real-numbers/subsets-real-numbers.lagda.md b/src/real-numbers/subsets-real-numbers.lagda.md index b83bc66f442..c42f82f45eb 100644 --- a/src/real-numbers/subsets-real-numbers.lagda.md +++ b/src/real-numbers/subsets-real-numbers.lagda.md @@ -20,11 +20,8 @@ open import foundation.involutions open import foundation.logical-equivalences open import foundation.sets open import foundation.subtypes -open import foundation.transport-along-identifications open import foundation.universe-levels -open import logic.functoriality-existential-quantification - open import metric-spaces.equality-of-metric-spaces open import metric-spaces.images-isometries-metric-spaces open import metric-spaces.isometries-metric-spaces diff --git a/src/real-numbers/totally-bounded-subsets-real-numbers.lagda.md b/src/real-numbers/totally-bounded-subsets-real-numbers.lagda.md index 3f060650bf2..02cfcd06dbb 100644 --- a/src/real-numbers/totally-bounded-subsets-real-numbers.lagda.md +++ b/src/real-numbers/totally-bounded-subsets-real-numbers.lagda.md @@ -9,8 +9,6 @@ module real-numbers.totally-bounded-subsets-real-numbers where
Imports ```agda -open import elementary-number-theory.positive-rational-numbers - open import foundation.dependent-pair-types open import foundation.propositions open import foundation.subtypes @@ -21,7 +19,6 @@ open import metric-spaces.metric-spaces open import metric-spaces.subspaces-metric-spaces open import metric-spaces.totally-bounded-metric-spaces -open import real-numbers.dedekind-real-numbers open import real-numbers.isometry-negation-real-numbers open import real-numbers.metric-space-of-real-numbers open import real-numbers.subsets-real-numbers diff --git a/src/real-numbers/transposition-addition-subtraction-cuts-dedekind-real-numbers.lagda.md b/src/real-numbers/transposition-addition-subtraction-cuts-dedekind-real-numbers.lagda.md index 82a733d1392..7c96ab1c56e 100644 --- a/src/real-numbers/transposition-addition-subtraction-cuts-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/transposition-addition-subtraction-cuts-dedekind-real-numbers.lagda.md @@ -23,7 +23,6 @@ open import real-numbers.dedekind-real-numbers open import real-numbers.difference-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.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers/upper-dedekind-real-numbers.lagda.md b/src/real-numbers/upper-dedekind-real-numbers.lagda.md index 133ba99ea07..b9ed0136c8e 100644 --- a/src/real-numbers/upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/upper-dedekind-real-numbers.lagda.md @@ -24,7 +24,6 @@ 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.similarity-subtypes From f11b6e2ecc5abdd4eae20346a460807ea293f811 Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sun, 9 Nov 2025 13:09:19 +0100 Subject: [PATCH 076/134] fix --- .../multiplicative-inverses-nonzero-real-numbers.lagda.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md index ad287640f8b..51ab87da430 100644 --- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md @@ -132,8 +132,8 @@ module _ ### If a real number has a multiplicative inverse, it is nonzero ```agda -opaque - unfolding leq-ℝ mul-ℝ real-ℚ sim-ℝ +abstract opaque + unfolding mul-ℝ real-ℚ sim-ℝ is-nonzero-has-right-inverse-mul-ℝ : {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → sim-ℝ (x *ℝ y) one-ℝ → From 2c0bdbcfc81c2e2f20941257b3fbfdec7d3dbdac Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sun, 9 Nov 2025 13:30:32 +0100 Subject: [PATCH 077/134] chore: optimize imports rational numbers --- .../addition-rational-numbers.lagda.md | 1 - .../difference-rational-numbers.lagda.md | 1 - .../distance-rational-numbers.lagda.md | 2 -- .../geometric-sequences-rational-numbers.lagda.md | 4 ---- .../inequality-positive-rational-numbers.lagda.md | 1 - .../metric-additive-group-of-rational-numbers.lagda.md | 2 -- .../multiplicative-group-of-rational-numbers.lagda.md | 2 -- .../negative-rational-numbers.lagda.md | 2 -- .../positive-and-negative-rational-numbers.lagda.md | 2 -- .../positive-rational-numbers.lagda.md | 4 ---- .../powers-nonnegative-rational-numbers.lagda.md | 2 -- .../powers-positive-rational-numbers.lagda.md | 1 - .../powers-rational-numbers.lagda.md | 2 -- .../square-roots-positive-rational-numbers.lagda.md | 1 - .../squares-rational-numbers.lagda.md | 2 -- .../strict-inequality-rational-numbers.lagda.md | 5 ----- src/elementary-number-theory/triangular-numbers.lagda.md | 4 ---- 17 files changed, 38 deletions(-) diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index 4e3854dddfc..72024841c02 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -23,7 +23,6 @@ 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 diff --git a/src/elementary-number-theory/difference-rational-numbers.lagda.md b/src/elementary-number-theory/difference-rational-numbers.lagda.md index e4830f7cff5..cc782a4c7cd 100644 --- a/src/elementary-number-theory/difference-rational-numbers.lagda.md +++ b/src/elementary-number-theory/difference-rational-numbers.lagda.md @@ -17,7 +17,6 @@ open import elementary-number-theory.rational-numbers open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.identity-types -open import foundation.interchange-law ```
diff --git a/src/elementary-number-theory/distance-rational-numbers.lagda.md b/src/elementary-number-theory/distance-rational-numbers.lagda.md index 3926d248dc4..ccc7b5f8b30 100644 --- a/src/elementary-number-theory/distance-rational-numbers.lagda.md +++ b/src/elementary-number-theory/distance-rational-numbers.lagda.md @@ -21,13 +21,11 @@ open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-nonnegative-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.nonnegative-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-binary-functions open import foundation.action-on-identifications-functions -open import foundation.binary-transport open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.function-types diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 21695e9d15a..07004973a88 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -29,9 +29,7 @@ open import elementary-number-theory.rational-numbers open import elementary-number-theory.ring-of-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.dependent-pair-types open import foundation.function-extensionality open import foundation.identity-types open import foundation.negated-equality @@ -45,8 +43,6 @@ open import lists.sequences open import metric-spaces.limits-of-sequences-metric-spaces open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.uniformly-continuous-functions-metric-spaces - -open import order-theory.strictly-increasing-sequences-strictly-preordered-sets ```
diff --git a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md index 1398ef233b7..bd42b31bd9b 100644 --- a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md @@ -13,7 +13,6 @@ open import elementary-number-theory.positive-rational-numbers open import foundation.action-on-identifications-functions open import foundation.binary-relations -open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.propositions open import foundation.universe-levels diff --git a/src/elementary-number-theory/metric-additive-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/metric-additive-group-of-rational-numbers.lagda.md index ba29b988788..c692847c8c8 100644 --- a/src/elementary-number-theory/metric-additive-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/metric-additive-group-of-rational-numbers.lagda.md @@ -9,9 +9,7 @@ module elementary-number-theory.metric-additive-group-of-rational-numbers where ```agda open import analysis.metric-abelian-groups -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 foundation.dependent-pair-types open import foundation.universe-levels diff --git a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md index 30f54cea5a3..9b527c5f536 100644 --- a/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplicative-group-of-rational-numbers.lagda.md @@ -16,7 +16,6 @@ open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-monoid-of-rational-numbers open import elementary-number-theory.negative-rational-numbers -open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.nonzero-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers @@ -27,7 +26,6 @@ open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-functions open import foundation.coproduct-types open import foundation.dependent-pair-types -open import foundation.empty-types open import foundation.function-types open import foundation.identity-types open import foundation.negated-equality diff --git a/src/elementary-number-theory/negative-rational-numbers.lagda.md b/src/elementary-number-theory/negative-rational-numbers.lagda.md index 7a41b1a752e..15c00ecac48 100644 --- a/src/elementary-number-theory/negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/negative-rational-numbers.lagda.md @@ -17,13 +17,11 @@ open import elementary-number-theory.negative-integer-fractions open import elementary-number-theory.negative-integers open import elementary-number-theory.nonzero-rational-numbers open import elementary-number-theory.positive-and-negative-integers -open import elementary-number-theory.positive-integer-fractions open import elementary-number-theory.positive-integers 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-relations open import foundation.binary-transport open import foundation.dependent-pair-types diff --git a/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md index 021ef28f500..09a711a99e7 100644 --- a/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-and-negative-rational-numbers.lagda.md @@ -11,13 +11,11 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.nonpositive-rational-numbers -open import elementary-number-theory.nonzero-rational-numbers open import elementary-number-theory.positive-and-negative-integers 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.coproduct-types open import foundation.dependent-pair-types diff --git a/src/elementary-number-theory/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index f146b5f15f9..eda656f8218 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -15,17 +15,13 @@ open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.integer-fractions open import elementary-number-theory.integers -open import elementary-number-theory.negative-integers open import elementary-number-theory.nonzero-natural-numbers open import elementary-number-theory.nonzero-rational-numbers -open import elementary-number-theory.positive-and-negative-integers open import elementary-number-theory.positive-integer-fractions open import elementary-number-theory.positive-integers 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.coproduct-types open import foundation.decidable-propositions open import foundation.decidable-subtypes open import foundation.dependent-pair-types diff --git a/src/elementary-number-theory/powers-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/powers-nonnegative-rational-numbers.lagda.md index 535de721529..b07d9baf6df 100644 --- a/src/elementary-number-theory/powers-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-nonnegative-rational-numbers.lagda.md @@ -17,7 +17,6 @@ open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplicative-monoid-of-nonnegative-rational-numbers open import elementary-number-theory.natural-numbers open import elementary-number-theory.nonnegative-rational-numbers -open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-nonnegative-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -27,7 +26,6 @@ open import foundation.empty-types open import foundation.identity-types open import group-theory.powers-of-elements-commutative-monoids -open import group-theory.powers-of-elements-monoids ```
diff --git a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md index 05641432b4b..1e1dbbcd56b 100644 --- a/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-positive-rational-numbers.lagda.md @@ -25,7 +25,6 @@ open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers open import elementary-number-theory.natural-numbers open import elementary-number-theory.nonnegative-rational-numbers -open import elementary-number-theory.nonzero-natural-numbers open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers diff --git a/src/elementary-number-theory/powers-rational-numbers.lagda.md b/src/elementary-number-theory/powers-rational-numbers.lagda.md index ea1efba98d3..51e308477d0 100644 --- a/src/elementary-number-theory/powers-rational-numbers.lagda.md +++ b/src/elementary-number-theory/powers-rational-numbers.lagda.md @@ -14,9 +14,7 @@ open import elementary-number-theory.inequality-natural-numbers open import elementary-number-theory.inequality-nonnegative-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.multiplication-natural-numbers -open import elementary-number-theory.multiplication-nonnegative-rational-numbers open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers -open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-monoid-of-rational-numbers open import elementary-number-theory.natural-numbers diff --git a/src/elementary-number-theory/square-roots-positive-rational-numbers.lagda.md b/src/elementary-number-theory/square-roots-positive-rational-numbers.lagda.md index 7687c6d3d4b..c6621bc79b1 100644 --- a/src/elementary-number-theory/square-roots-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/square-roots-positive-rational-numbers.lagda.md @@ -14,7 +14,6 @@ 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.maximum-rational-numbers open import elementary-number-theory.minimum-positive-rational-numbers open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers diff --git a/src/elementary-number-theory/squares-rational-numbers.lagda.md b/src/elementary-number-theory/squares-rational-numbers.lagda.md index ada7062ba55..41b169790a3 100644 --- a/src/elementary-number-theory/squares-rational-numbers.lagda.md +++ b/src/elementary-number-theory/squares-rational-numbers.lagda.md @@ -18,7 +18,6 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.multiplication-negative-rational-numbers open import elementary-number-theory.multiplication-nonnegative-rational-numbers -open import elementary-number-theory.multiplication-nonpositive-rational-numbers open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.negative-rational-numbers @@ -31,7 +30,6 @@ open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-functions open import foundation.coproduct-types -open import foundation.decidable-types open import foundation.dependent-pair-types open import foundation.empty-types open import foundation.function-types 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 ddaa7ba6166..e237a00ca06 100644 --- a/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-rational-numbers.lagda.md @@ -13,10 +13,7 @@ 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 -open import elementary-number-theory.inequality-integer-fractions -open import elementary-number-theory.inequality-integers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.integer-fractions open import elementary-number-theory.integers @@ -26,7 +23,6 @@ open import elementary-number-theory.natural-numbers open import elementary-number-theory.nonnegative-integers open import elementary-number-theory.nonpositive-integers open import elementary-number-theory.positive-and-negative-integers -open import elementary-number-theory.positive-integers open import elementary-number-theory.rational-numbers open import elementary-number-theory.reduced-integer-fractions open import elementary-number-theory.strict-inequality-integer-fractions @@ -36,7 +32,6 @@ open import elementary-number-theory.strict-inequality-natural-numbers open import foundation.action-on-identifications-functions open import foundation.binary-relations open import foundation.binary-transport -open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.coproduct-types open import foundation.decidable-propositions diff --git a/src/elementary-number-theory/triangular-numbers.lagda.md b/src/elementary-number-theory/triangular-numbers.lagda.md index 451206ca038..23ae32125c6 100644 --- a/src/elementary-number-theory/triangular-numbers.lagda.md +++ b/src/elementary-number-theory/triangular-numbers.lagda.md @@ -35,20 +35,16 @@ open import foundation.dependent-pair-types open import foundation.function-extensionality open import foundation.homotopies open import foundation.identity-types -open import foundation.transport-along-identifications open import group-theory.abelian-groups open import group-theory.groups -open import lists.sequences - open import metric-spaces.limits-of-sequences-metric-spaces open import metric-spaces.metric-space-of-rational-numbers open import metric-spaces.rational-sequences-approximating-zero open import metric-spaces.uniformly-continuous-functions-metric-spaces open import ring-theory.partial-sums-sequences-semirings -open import ring-theory.sums-of-finite-sequences-of-elements-semirings ```
From 908914f81d8a73278c3fec0517560c245dd7ffc9 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Nov 2025 11:38:01 -0800 Subject: [PATCH 078/134] Fixes --- ...metric-sequences-rational-numbers.lagda.md | 62 +------------------ .../apartness-real-numbers.lagda.md | 2 +- 2 files changed, 2 insertions(+), 62 deletions(-) diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index e93c63c655b..3773379808f 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -30,6 +30,7 @@ open import elementary-number-theory.ring-of-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.function-extensionality open import foundation.identity-types open import foundation.negated-equality @@ -176,67 +177,6 @@ module _ ( is-zero-limit-power-le-one-abs-ℚ r |r|<1)) ``` -### If `|r| < 1`, the sum of the standard geometric sequence `n ↦ arⁿ` is `a/(1-r)` - -```agda -module _ - (a r : ℚ) - where - - standard-geometric-series-ℚ : series-Metric-Ab metric-ab-add-ℚ - standard-geometric-series-ℚ = - series-terms-Metric-Ab (seq-standard-geometric-sequence-ℚ a r) - - abstract - sum-standard-geometric-sequence-ℚ : - (|r|<1 : le-ℚ (rational-abs-ℚ r) one-ℚ) → - is-sum-series-Metric-Ab - ( standard-geometric-series-ℚ) - ( a *ℚ rational-inv-ℚˣ (invertible-diff-le-abs-ℚ r one-ℚ⁺ |r|<1)) - sum-standard-geometric-sequence-ℚ |r|<1 = - let - r≠1 = - nonequal-map - ( rational-abs-ℚ) - ( inv-tr - ( rational-abs-ℚ r ≠_) - ( rational-abs-rational-ℚ⁺ one-ℚ⁺) - ( nonequal-le-ℚ |r|<1)) - in - binary-tr - ( is-limit-sequence-Metric-Space metric-space-ℚ) - ( inv - ( eq-htpy (compute-sum-standard-geometric-fin-sequence-ℚ a r r≠1))) - ( equational-reasoning - a *ℚ - ( (one-ℚ -ℚ zero-ℚ) *ℚ - rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)) - = - a *ℚ - ( one-ℚ *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1)) - by ap-mul-ℚ refl (ap-mul-ℚ (right-zero-law-diff-ℚ one-ℚ) refl) - = a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) - by ap-mul-ℚ refl (left-unit-law-mul-ℚ _)) - ( uniformly-continuous-map-limit-sequence-Metric-Space - ( metric-space-ℚ) - ( metric-space-ℚ) - ( comp-uniformly-continuous-function-Metric-Space - ( metric-space-ℚ) - ( metric-space-ℚ) - ( metric-space-ℚ) - ( uniformly-continuous-left-mul-ℚ a) - ( comp-uniformly-continuous-function-Metric-Space - ( metric-space-ℚ) - ( metric-space-ℚ) - ( metric-space-ℚ) - ( uniformly-continuous-right-mul-ℚ - ( rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1))) - ( uniformly-continuous-diff-ℚ one-ℚ))) - ( λ n → power-ℚ n r) - ( zero-ℚ) - ( is-zero-limit-power-le-one-abs-ℚ r |r|<1)) -``` - ## External links - [Geometric progressions](https://en.wikipedia.org/wiki/Geometric_progression) diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index 5067df3652d..a362297a3d6 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -25,7 +25,7 @@ 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.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` From 7542dd2ea7af8204392bd8c7259fc6fdf5924b81 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Nov 2025 11:46:34 -0800 Subject: [PATCH 079/134] Fix build --- .../geometric-sequences-rational-numbers.lagda.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 45d0873b490..3773379808f 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -30,6 +30,7 @@ open import elementary-number-theory.ring-of-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.function-extensionality open import foundation.identity-types open import foundation.negated-equality From fc7be890e196e7b67b097ac6b485f97162ccf4a8 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 9 Nov 2025 15:43:37 -0800 Subject: [PATCH 080/134] Multiplicative inverses of nonzero complex numbers --- src/complex-numbers.lagda.md | 5 + .../apartness-complex-numbers.lagda.md | 16 +- src/complex-numbers/complex-numbers.lagda.md | 17 ++- .../conjugation-complex-numbers.lagda.md | 42 ++++++ .../magnitude-complex-numbers.lagda.md | 95 ++++++++++++ .../multiplication-complex-numbers.lagda.md | 50 +++++++ ...-inverses-nonzero-complex-numbers.lagda.md | 85 +++++++++++ .../nonzero-complex-numbers.lagda.md | 68 ++++++++- .../similarity-complex-numbers.lagda.md | 51 +++++++ .../addition-rational-numbers.lagda.md | 7 + src/real-numbers.lagda.md | 1 + ...addition-nonnegative-real-numbers.lagda.md | 21 +++ .../addition-positive-real-numbers.lagda.md | 141 ++++++++++++++++++ .../binary-maximum-real-numbers.lagda.md | 1 + ...ompleteness-dedekind-real-numbers.lagda.md | 1 + .../nonzero-real-numbers.lagda.md | 41 +++++ .../positive-real-numbers.lagda.md | 38 ----- ...re-roots-nonnegative-real-numbers.lagda.md | 22 +++ .../squares-real-numbers.lagda.md | 21 +++ 19 files changed, 669 insertions(+), 54 deletions(-) create mode 100644 src/complex-numbers/conjugation-complex-numbers.lagda.md create mode 100644 src/complex-numbers/magnitude-complex-numbers.lagda.md create mode 100644 src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md create mode 100644 src/real-numbers/addition-positive-real-numbers.lagda.md diff --git a/src/complex-numbers.lagda.md b/src/complex-numbers.lagda.md index 70b0af5ab4d..694c4263882 100644 --- a/src/complex-numbers.lagda.md +++ b/src/complex-numbers.lagda.md @@ -5,10 +5,15 @@ module complex-numbers where open import complex-numbers.addition-complex-numbers public open import complex-numbers.additive-group-of-complex-numbers public +open import complex-numbers.apartness-complex-numbers public open import complex-numbers.complex-numbers public +open import complex-numbers.conjugation-complex-numbers public open import complex-numbers.eisenstein-integers public open import complex-numbers.gaussian-integers public +open import complex-numbers.magnitude-complex-numbers public open import complex-numbers.multiplication-complex-numbers public +open import complex-numbers.multiplicative-inverses-nonzero-complex-numbers public +open import complex-numbers.nonzero-complex-numbers public open import complex-numbers.ring-of-complex-numbers public open import complex-numbers.similarity-complex-numbers public ``` diff --git a/src/complex-numbers/apartness-complex-numbers.lagda.md b/src/complex-numbers/apartness-complex-numbers.lagda.md index 762d6da4092..9a0aac2539b 100644 --- a/src/complex-numbers/apartness-complex-numbers.lagda.md +++ b/src/complex-numbers/apartness-complex-numbers.lagda.md @@ -7,17 +7,19 @@ module complex-numbers.apartness-complex-numbers where
Imports ```agda -open import foundation.negation open import complex-numbers.complex-numbers -open import foundation.function-types -open import foundation.large-apartness-relations + open import foundation.dependent-pair-types -open import foundation.functoriality-disjunction -open import real-numbers.apartness-real-numbers -open import foundation.empty-types open import foundation.disjunction +open import foundation.empty-types +open import foundation.function-types +open import foundation.functoriality-disjunction +open import foundation.large-apartness-relations +open import foundation.negation open import foundation.propositions open import foundation.universe-levels + +open import real-numbers.apartness-real-numbers ```
@@ -66,7 +68,7 @@ abstract symmetric-apart-ℂ : {l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → apart-ℂ z w → apart-ℂ w z symmetric-apart-ℂ (a , b) (c , d) = - map-disjunction (symmetric-apart-ℝ a c) (symmetric-apart-ℝ b d) + map-disjunction symmetric-apart-ℝ symmetric-apart-ℝ ``` ### Apartness is cotransitive diff --git a/src/complex-numbers/complex-numbers.lagda.md b/src/complex-numbers/complex-numbers.lagda.md index ec8571f0de9..7465731aca5 100644 --- a/src/complex-numbers/complex-numbers.lagda.md +++ b/src/complex-numbers/complex-numbers.lagda.md @@ -38,6 +38,8 @@ are numbers of the form `a + bi`, where `a` and `b` are ℂ : (l : Level) → UU (lsuc l) ℂ l = ℝ l × ℝ l +pattern _+iℂ_ x y = (x , y) + re-ℂ : {l : Level} → ℂ l → ℝ l re-ℂ = pr1 @@ -79,13 +81,6 @@ complex-ℤ[i] : ℤ[i] → ℂ lzero complex-ℤ[i] (a , b) = (real-ℤ a , real-ℤ b) ``` -### The conjugate of a complex number - -```agda -conjugate-ℂ : {l : Level} → ℂ l → ℂ l -conjugate-ℂ (a , b) = (a , neg-ℝ b) -``` - ### Important complex numbers ```agda @@ -108,3 +103,11 @@ i-ℂ = (zero-ℝ , one-ℝ) neg-ℂ : {l : Level} → ℂ l → ℂ l neg-ℂ (a , b) = (neg-ℝ a , neg-ℝ b) ``` + +### `complex-ℝ one-ℝ` is equal to `one-ℂ` + +```agda +abstract + eq-complex-one-ℝ : complex-ℝ one-ℝ = one-ℂ + eq-complex-one-ℝ = eq-ℂ refl (inv (eq-raise-ℝ zero-ℝ)) +``` diff --git a/src/complex-numbers/conjugation-complex-numbers.lagda.md b/src/complex-numbers/conjugation-complex-numbers.lagda.md new file mode 100644 index 00000000000..8f3eb54ba19 --- /dev/null +++ b/src/complex-numbers/conjugation-complex-numbers.lagda.md @@ -0,0 +1,42 @@ +# Conjugation of complex numbers + +```agda +module complex-numbers.conjugation-complex-numbers where +``` + +
Imports + +```agda +open import complex-numbers.complex-numbers + +open import foundation.identity-types +open import foundation.universe-levels + +open import real-numbers.negation-real-numbers +``` + +
+ +## Idea + +The +{{#concept "conjugate" WDID=Q381040 WD="complex conjugate" Disambiguation="of a complex number" Agda=conjugate-ℂ}} +of a [complex number](complex-numbers.complex-numbers.md) `a + bi` is `a - bi`. + +## Definition + +```agda +conjugate-ℂ : {l : Level} → ℂ l → ℂ l +conjugate-ℂ (a +iℂ b) = a +iℂ neg-ℝ b +``` + +## Properties + +### Conjugation is an involution + +```agda +abstract + is-involution-conjugate-ℂ : + {l : Level} (z : ℂ l) → conjugate-ℂ (conjugate-ℂ z) = z + is-involution-conjugate-ℂ (a +iℂ b) = eq-ℂ refl (neg-neg-ℝ b) +``` diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md new file mode 100644 index 00000000000..d46272ba5de --- /dev/null +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -0,0 +1,95 @@ +# Magnitude of complex numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module complex-numbers.magnitude-complex-numbers where +``` + +
Imports + +```agda +open import complex-numbers.complex-numbers +open import complex-numbers.conjugation-complex-numbers +open import complex-numbers.multiplication-complex-numbers + +open import foundation.identity-types +open import foundation.universe-levels + +open import real-numbers.addition-nonnegative-real-numbers +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.multiplication-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.nonnegative-real-numbers +open import real-numbers.raising-universe-levels-real-numbers +open import real-numbers.rational-real-numbers +-- sopen import real-numbers.similarity-real-numbers +open import real-numbers.square-roots-nonnegative-real-numbers +open import real-numbers.squares-real-numbers +``` + +
+ +## Idea + +The +{{#concept "magnitude" WD="magnitude of a complex number" WDID=Q3317982 Agda=magnitude-ℂ}} +of a [complex number](complex-numbers.complex-numbers.md) `a + bi` is defined as +$$\sqrt{a^2 + b^2}}$$. + +## Definition + +```agda +nonnegative-squared-magnitude-ℂ : {l : Level} → ℂ l → ℝ⁰⁺ l +nonnegative-squared-magnitude-ℂ (a +iℂ b) = + nonnegative-square-ℝ a +ℝ⁰⁺ nonnegative-square-ℝ b + +squared-magnitude-ℂ : {l : Level} → ℂ l → ℝ l +squared-magnitude-ℂ z = real-ℝ⁰⁺ (nonnegative-squared-magnitude-ℂ z) + +∥_∥²ℂ : {l : Level} → ℂ l → ℝ l +∥ z ∥²ℂ = squared-magnitude-ℂ z + +nonnegative-magnitude-ℂ : {l : Level} → ℂ l → ℝ⁰⁺ l +nonnegative-magnitude-ℂ z = sqrt-ℝ⁰⁺ (nonnegative-squared-magnitude-ℂ z) + +magnitude-ℂ : {l : Level} → ℂ l → ℝ l +magnitude-ℂ z = real-ℝ⁰⁺ (nonnegative-magnitude-ℂ z) + +∥_∥ℂ : {l : Level} → ℂ l → ℝ l +∥ z ∥ℂ = magnitude-ℂ z +``` + +## Properties + +### The square of the magnitude of `z` is the product of `z` and the conjugate of `z` + +```agda +abstract + eq-squared-magnitude-mul-conjugate-ℂ : + {l : Level} (z : ℂ l) → + z *ℂ conjugate-ℂ z = complex-ℝ (squared-magnitude-ℂ z) + eq-squared-magnitude-mul-conjugate-ℂ (a +iℂ b) = + eq-ℂ + ( equational-reasoning + square-ℝ a -ℝ (b *ℝ neg-ℝ b) + = square-ℝ a -ℝ (neg-ℝ (square-ℝ b)) + by ap-diff-ℝ refl (right-negative-law-mul-ℝ _ _) + = square-ℝ a +ℝ square-ℝ b + by ap-add-ℝ refl (neg-neg-ℝ _)) + ( eq-sim-ℝ + ( similarity-reasoning-ℝ + a *ℝ neg-ℝ b +ℝ b *ℝ a + ~ℝ neg-ℝ (a *ℝ b) +ℝ a *ℝ b + by + sim-eq-ℝ + ( ap-add-ℝ + ( right-negative-law-mul-ℝ a b) + ( commutative-mul-ℝ b a)) + ~ℝ zero-ℝ + by left-inverse-law-add-ℝ (a *ℝ b) + ~ℝ raise-ℝ _ zero-ℝ + by sim-raise-ℝ _ _)) +``` diff --git a/src/complex-numbers/multiplication-complex-numbers.lagda.md b/src/complex-numbers/multiplication-complex-numbers.lagda.md index 12598cc434b..7e33daf3dc5 100644 --- a/src/complex-numbers/multiplication-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplication-complex-numbers.lagda.md @@ -13,6 +13,7 @@ open import complex-numbers.similarity-complex-numbers open import elementary-number-theory.rational-numbers +open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types open import foundation.identity-types @@ -20,9 +21,11 @@ open import foundation.transport-along-identifications open import foundation.universe-levels 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.multiplication-real-numbers open import real-numbers.negation-real-numbers +open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers ``` @@ -45,6 +48,11 @@ mul-ℂ (a , b) (c , d) = (a *ℝ c -ℝ b *ℝ d , a *ℝ d +ℝ b *ℝ c) infixl 40 _*ℂ_ _*ℂ_ : {l1 l2 : Level} → ℂ l1 → ℂ l2 → ℂ (l1 ⊔ l2) _*ℂ_ = mul-ℂ + +ap-mul-ℂ : + {l1 l2 : Level} {z z' : ℂ l1} → z = z' → {w w' : ℂ l2} → w = w' → + mul-ℂ z w = mul-ℂ z' w' +ap-mul-ℂ = ap-binary mul-ℂ ``` ## Properties @@ -255,3 +263,45 @@ opaque = zero-ℝ by left-unit-law-add-ℝ zero-ℝ) ``` + +### The canonical embedding of real numbers in the complex numbers preserves multiplication + +```agda +abstract + mul-complex-ℝ : + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → + complex-ℝ x *ℂ complex-ℝ y = complex-ℝ (x *ℝ y) + mul-complex-ℝ {l1} {l2} x y = + eq-ℂ + ( equational-reasoning + x *ℝ y -ℝ raise-ℝ l1 zero-ℝ *ℝ raise-ℝ l2 zero-ℝ + = x *ℝ y -ℝ zero-ℝ *ℝ zero-ℝ + by + eq-sim-ℝ + ( preserves-sim-diff-ℝ + ( refl-sim-ℝ (x *ℝ y)) + ( symmetric-sim-ℝ + ( preserves-sim-mul-ℝ (sim-raise-ℝ _ _) (sim-raise-ℝ _ _)))) + = x *ℝ y -ℝ zero-ℝ + by ap-diff-ℝ refl (eq-sim-ℝ (right-zero-law-mul-ℝ _)) + = x *ℝ y + by right-unit-law-diff-ℝ (x *ℝ y)) + ( eq-sim-ℝ + ( similarity-reasoning-ℝ + x *ℝ raise-ℝ l2 zero-ℝ +ℝ raise-ℝ l1 zero-ℝ *ℝ y + ~ℝ x *ℝ zero-ℝ +ℝ zero-ℝ *ℝ y + by + symmetric-sim-ℝ + ( preserves-sim-add-ℝ + ( preserves-sim-left-mul-ℝ _ _ _ (sim-raise-ℝ l2 zero-ℝ)) + ( preserves-sim-right-mul-ℝ _ _ _ (sim-raise-ℝ l1 zero-ℝ))) + ~ℝ zero-ℝ +ℝ zero-ℝ + by + preserves-sim-add-ℝ + ( right-zero-law-mul-ℝ x) + ( left-zero-law-mul-ℝ y) + ~ℝ zero-ℝ + by sim-eq-ℝ (left-unit-law-add-ℝ zero-ℝ) + ~ℝ raise-ℝ (l1 ⊔ l2) zero-ℝ + by sim-raise-ℝ (l1 ⊔ l2) zero-ℝ)) +``` diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md new file mode 100644 index 00000000000..320c7b26cdf --- /dev/null +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -0,0 +1,85 @@ +# Multiplicative inverses of complex numbers + +```agda +module complex-numbers.multiplicative-inverses-nonzero-complex-numbers where +``` + +
Imports + +```agda +open import complex-numbers.complex-numbers +-- open import complex-numbers.conjugation-complex-numbers +open import complex-numbers.magnitude-complex-numbers +open import complex-numbers.multiplication-complex-numbers +open import complex-numbers.nonzero-complex-numbers +open import complex-numbers.similarity-complex-numbers + +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import real-numbers.multiplication-real-numbers +open import real-numbers.multiplicative-inverses-positive-real-numbers +open import real-numbers.rational-real-numbers +``` + +
+ +## Idea + +[Nonzero](complex-numbers.nonzero-complex-numbers.md) +[complex numbers](complex-numbers.complex-numbers.md) have inverses under +[multiplication](complex-numbers.multiplication-complex-numbers.md). + +## Definition + +```agda +complex-inv-nonzero-ℂ : {l : Level} (z : nonzero-ℂ l) → ℂ l +complex-inv-nonzero-ℂ (z , z≠0) = + conjugate-ℂ z *ℂ + complex-ℝ (real-inv-ℝ⁺ (positive-squared-magnitude-nonzero-ℂ (z , z≠0))) +``` + +## Properties + +### Inverse laws of multiplication + +```agda +abstract + left-inverse-law-mul-ℂ : {l : Level} (z : nonzero-ℂ l) → + sim-ℂ (complex-nonzero-ℂ z *ℂ complex-inv-nonzero-ℂ z) one-ℂ + left-inverse-law-mul-ℂ (z@(a +iℂ b) , z≠0) = + similarity-reasoning-ℂ + z *ℂ + ( conjugate-ℂ z *ℂ + complex-ℝ + ( real-inv-ℝ⁺ (positive-squared-magnitude-nonzero-ℂ (z , z≠0)))) + ~ℂ + ( z *ℂ conjugate-ℂ z) *ℂ + ( complex-ℝ + ( real-inv-ℝ⁺ (positive-squared-magnitude-nonzero-ℂ (z , z≠0)))) + by sim-eq-ℂ (inv (associative-mul-ℂ _ _ _)) + ~ℂ + complex-ℝ (squared-magnitude-ℂ z) *ℂ + complex-ℝ + ( real-inv-ℝ⁺ (positive-squared-magnitude-nonzero-ℂ (z , z≠0))) + by sim-eq-ℂ (ap-mul-ℂ (eq-squared-magnitude-mul-conjugate-ℂ z) refl) + ~ℂ + complex-ℝ + ( squared-magnitude-ℂ z *ℝ + real-inv-ℝ⁺ (positive-squared-magnitude-nonzero-ℂ (z , z≠0))) + by sim-eq-ℂ (mul-complex-ℝ _ _) + ~ℂ complex-ℝ one-ℝ + by + preserves-sim-complex-ℝ + ( right-inverse-law-mul-ℝ⁺ + ( positive-squared-magnitude-nonzero-ℂ (z , z≠0))) + ~ℂ one-ℂ + by sim-eq-ℂ eq-complex-one-ℝ + + right-inverse-law-mul-ℂ : {l : Level} (z : nonzero-ℂ l) → + sim-ℂ (complex-inv-nonzero-ℂ z *ℂ complex-nonzero-ℂ z) one-ℂ + right-inverse-law-mul-ℂ z = + tr (λ w → sim-ℂ w one-ℂ) (commutative-mul-ℂ _ _) (left-inverse-law-mul-ℂ z) +``` diff --git a/src/complex-numbers/nonzero-complex-numbers.lagda.md b/src/complex-numbers/nonzero-complex-numbers.lagda.md index ac02560e7cb..a10fec58972 100644 --- a/src/complex-numbers/nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/nonzero-complex-numbers.lagda.md @@ -7,10 +7,27 @@ module complex-numbers.nonzero-complex-numbers where
Imports ```agda +open import complex-numbers.apartness-complex-numbers open import complex-numbers.complex-numbers -open import foundation.universe-levels +open import complex-numbers.magnitude-complex-numbers + +open import foundation.dependent-pair-types +open import foundation.disjunction open import foundation.propositions -open import complex-numbers.apartness-complex-numbers +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import real-numbers.addition-nonnegative-real-numbers +open import real-numbers.addition-positive-real-numbers +open import real-numbers.addition-real-numbers +open import real-numbers.nonzero-real-numbers +open import real-numbers.positive-and-negative-real-numbers +open import real-numbers.positive-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers +open import real-numbers.squares-real-numbers +open import real-numbers.strict-inequality-real-numbers ```
@@ -32,4 +49,51 @@ is-nonzero-prop-ℂ z = apart-prop-ℂ z zero-ℂ is-nonzero-ℂ : {l : Level} → ℂ l → UU l is-nonzero-ℂ z = type-Prop (is-nonzero-prop-ℂ z) + +nonzero-ℂ : (l : Level) → UU (lsuc l) +nonzero-ℂ l = type-subtype (is-nonzero-prop-ℂ {l}) + +complex-nonzero-ℂ : {l : Level} → nonzero-ℂ l → ℂ l +complex-nonzero-ℂ = pr1 +``` + +## Properties + +### A complex number is nonzero if and only if its squared magnitude is positive + +```agda +abstract + is-positive-squared-magnitude-is-nonzero-ℂ : + {l : Level} (z : ℂ l) → is-nonzero-ℂ z → is-positive-ℝ ∥ z ∥²ℂ + is-positive-squared-magnitude-is-nonzero-ℂ (a +iℂ b) = + elim-disjunction + ( is-positive-prop-ℝ ∥ a +iℂ b ∥²ℂ) + ( λ a≠0 → + concatenate-le-leq-ℝ + ( zero-ℝ) + ( square-ℝ a) + ( square-ℝ a +ℝ square-ℝ b) + ( is-positive-square-is-nonzero-ℝ a a≠0) + ( leq-left-add-real-ℝ⁰⁺ _ (nonnegative-square-ℝ b))) + ( λ b≠0 → + concatenate-le-leq-ℝ + ( zero-ℝ) + ( square-ℝ b) + ( square-ℝ a +ℝ square-ℝ b) + ( is-positive-square-is-nonzero-ℝ b b≠0) + ( leq-right-add-real-ℝ⁰⁺ _ (nonnegative-square-ℝ a))) + + is-nonzero-is-positive-squared-magnitude-ℂ : + {l : Level} (z : ℂ l) → is-positive-ℝ ∥ z ∥²ℂ → is-nonzero-ℂ z + is-nonzero-is-positive-squared-magnitude-ℂ (a +iℂ b) 0Imports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.positive-and-negative-rational-numbers + +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.propositional-truncations +open import foundation.transport-along-identifications +open import foundation.universe-levels + +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.negation-real-numbers +open import real-numbers.positive-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers +open import real-numbers.strict-inequality-real-numbers +``` + +
+ +## Idea + +The [positive](real-numbers.positive-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md) are closed under +[addition](real-numbers.addition-real-numbers.md). + +## Definition + +```agda +abstract + is-positive-add-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → is-positive-ℝ x → is-positive-ℝ y → + is-positive-ℝ (x +ℝ y) + is-positive-add-ℝ {x = x} {y = y} 0Imports ```agda +open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.disjunction @@ -25,10 +26,13 @@ open import real-numbers.dedekind-real-numbers open import real-numbers.difference-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.negative-real-numbers +open import real-numbers.nonnegative-real-numbers open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.square-roots-nonnegative-real-numbers +open import real-numbers.squares-real-numbers open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -162,3 +166,40 @@ module _ ( neg-le-ℝ |x|-ε<-x)))) ( approximate-below-abs-ℝ x ε) ``` + +### `x` is nonzero if and only if `x²` is positive + +```agda +module _ + {l : Level} (x : ℝ l) + where + + abstract + is-positive-square-is-nonzero-ℝ : + is-nonzero-ℝ x → is-positive-ℝ (square-ℝ x) + is-positive-square-is-nonzero-ℝ = + elim-disjunction + ( is-positive-prop-ℝ (square-ℝ x)) + ( λ is-neg-x → is-positive-square-ℝ⁻ (x , is-neg-x)) + ( λ is-pos-x → is-positive-square-ℝ⁺ (x , is-pos-x)) + + is-nonzero-square-is-positive-ℝ : + is-positive-ℝ (square-ℝ x) → is-nonzero-ℝ x + is-nonzero-square-is-positive-ℝ 0 @@ -646,3 +650,21 @@ abstract ( is-section-square-ℝ⁰⁺ x) ( is-section-square-ℝ⁰⁺ y))))))) ``` + +### The square root of a positive real number is positive + +```agda +abstract opaque + unfolding real-sqrt-ℝ⁰⁺ + + is-positive-sqrt-ℝ⁺ : + {l : Level} (x : ℝ⁺ l) → is-positive-ℝ (real-sqrt-ℝ⁰⁺ (nonnegative-ℝ⁺ x)) + is-positive-sqrt-ℝ⁺ x⁺@(x , _) = + is-positive-zero-in-lower-cut-ℝ + ( real-sqrt-ℝ⁰⁺ (nonnegative-ℝ⁺ x⁺)) + ( λ _ → + inv-tr + ( is-in-lower-cut-ℝ x) + ( left-zero-law-mul-ℚ zero-ℚ) + ( zero-in-lower-cut-ℝ⁺ x⁺)) +``` diff --git a/src/real-numbers/squares-real-numbers.lagda.md b/src/real-numbers/squares-real-numbers.lagda.md index 86d106d8c6a..4f195703e9e 100644 --- a/src/real-numbers/squares-real-numbers.lagda.md +++ b/src/real-numbers/squares-real-numbers.lagda.md @@ -20,6 +20,7 @@ open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers +open import elementary-number-theory.square-roots-positive-rational-numbers open import elementary-number-theory.squares-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -33,6 +34,7 @@ open import foundation.universe-levels open import real-numbers.dedekind-real-numbers open import real-numbers.enclosing-closed-rational-intervals-real-numbers +open import real-numbers.inequality-nonnegative-real-numbers open import real-numbers.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-positive-real-numbers open import real-numbers.multiplication-real-numbers @@ -218,6 +220,25 @@ abstract ( preserves-le-right-mul-ℝ⁺ (y , is-positive-le-ℝ⁰⁺ x⁰⁺ y x Date: Sun, 9 Nov 2025 17:32:43 -0800 Subject: [PATCH 081/134] Magnitudes multiply --- .../magnitude-complex-numbers.lagda.md | 140 +++++++++++++++++- ...-inverses-nonzero-complex-numbers.lagda.md | 2 +- src/real-numbers.lagda.md | 1 + ...ltiplication-nonzero-real-numbers.lagda.md | 68 +++++++++ ...ositive-and-negative-real-numbers.lagda.md | 22 ++- .../multiplication-real-numbers.lagda.md | 30 ++++ .../rational-real-numbers.lagda.md | 8 + .../squares-real-numbers.lagda.md | 50 +++++++ 8 files changed, 318 insertions(+), 3 deletions(-) create mode 100644 src/real-numbers/multiplication-nonzero-real-numbers.lagda.md diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index d46272ba5de..22a709c6efb 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -13,6 +13,7 @@ open import complex-numbers.complex-numbers open import complex-numbers.conjugation-complex-numbers open import complex-numbers.multiplication-complex-numbers +open import foundation.action-on-identifications-functions open import foundation.identity-types open import foundation.universe-levels @@ -20,12 +21,13 @@ open import real-numbers.addition-nonnegative-real-numbers 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.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.nonnegative-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers --- sopen import real-numbers.similarity-real-numbers +open import real-numbers.similarity-real-numbers open import real-numbers.square-roots-nonnegative-real-numbers open import real-numbers.squares-real-numbers ``` @@ -93,3 +95,139 @@ abstract ~ℝ raise-ℝ _ zero-ℝ by sim-raise-ℝ _ _)) ``` + +### The square of the magnitude of `zw` is the product of the squares of the magnitudes of `z` and `w` + +```agda +abstract + distributive-squared-magnitude-mul-ℂ : + {l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → + squared-magnitude-ℂ (z *ℂ w) = + squared-magnitude-ℂ z *ℝ squared-magnitude-ℂ w + distributive-squared-magnitude-mul-ℂ (a +iℂ b) (c +iℂ d) = + equational-reasoning + square-ℝ (a *ℝ c -ℝ b *ℝ d) +ℝ square-ℝ (a *ℝ d +ℝ b *ℝ c) + = + ( square-ℝ (a *ℝ c) +ℝ + neg-ℝ (real-ℕ 2 *ℝ ((a *ℝ c) *ℝ (b *ℝ d))) +ℝ + square-ℝ (b *ℝ d)) +ℝ + ( square-ℝ (a *ℝ d) +ℝ + real-ℕ 2 *ℝ ((a *ℝ d) *ℝ (b *ℝ c)) +ℝ + square-ℝ (b *ℝ c)) + by + ap-add-ℝ + ( square-diff-ℝ _ _) + ( square-add-ℝ _ _) + = + ( square-ℝ (a *ℝ c) +ℝ square-ℝ (b *ℝ d) +ℝ + neg-ℝ (real-ℕ 2 *ℝ (a *ℝ c *ℝ (b *ℝ d)))) +ℝ + ( square-ℝ (a *ℝ d) +ℝ square-ℝ (b *ℝ c) +ℝ + real-ℕ 2 *ℝ ((a *ℝ d) *ℝ (b *ℝ c))) + by + ap-add-ℝ + ( right-swap-add-ℝ _ _ _) + ( right-swap-add-ℝ _ _ _) + = + ( ( square-ℝ (a *ℝ c) +ℝ square-ℝ (b *ℝ d)) +ℝ + ( square-ℝ (a *ℝ d) +ℝ square-ℝ (b *ℝ c))) +ℝ + ( neg-ℝ (real-ℕ 2 *ℝ ((a *ℝ c) *ℝ (b *ℝ d))) +ℝ + real-ℕ 2 *ℝ ((a *ℝ d) *ℝ (b *ℝ c))) + by interchange-law-add-add-ℝ _ _ _ _ + = + ( ( square-ℝ (a *ℝ c) +ℝ square-ℝ (b *ℝ d)) +ℝ + ( square-ℝ (a *ℝ d) +ℝ square-ℝ (b *ℝ c))) +ℝ + ( neg-ℝ (real-ℕ 2 *ℝ (a *ℝ c *ℝ (b *ℝ d))) +ℝ + real-ℕ 2 *ℝ (a *ℝ d *ℝ (c *ℝ b))) + by + ap-add-ℝ + ( refl) + ( ap-add-ℝ + ( refl) + ( ap-mul-ℝ refl (ap-mul-ℝ refl (commutative-mul-ℝ b c)))) + = + ( ( square-ℝ (a *ℝ c) +ℝ square-ℝ (b *ℝ d)) +ℝ + ( square-ℝ (a *ℝ d) +ℝ square-ℝ (b *ℝ c))) +ℝ + ( neg-ℝ (real-ℕ 2 *ℝ (a *ℝ c *ℝ (b *ℝ d))) +ℝ + real-ℕ 2 *ℝ (a *ℝ c *ℝ (d *ℝ b))) + by + ap-add-ℝ + ( refl) + ( ap-add-ℝ refl (ap-mul-ℝ refl (interchange-law-mul-mul-ℝ _ _ _ _))) + = + ( ( square-ℝ (a *ℝ c) +ℝ square-ℝ (b *ℝ d)) +ℝ + ( square-ℝ (a *ℝ d) +ℝ square-ℝ (b *ℝ c))) +ℝ + ( neg-ℝ (real-ℕ 2 *ℝ (a *ℝ c *ℝ (b *ℝ d))) +ℝ + real-ℕ 2 *ℝ (a *ℝ c *ℝ (b *ℝ d))) + by + ap-add-ℝ + ( refl) + ( ap-add-ℝ + ( refl) + ( ap-mul-ℝ refl (ap-mul-ℝ refl (commutative-mul-ℝ d b)))) + = + ( ( square-ℝ (a *ℝ c) +ℝ square-ℝ (b *ℝ d)) +ℝ + ( square-ℝ (a *ℝ d) +ℝ square-ℝ (b *ℝ c))) +ℝ + zero-ℝ + by eq-sim-ℝ (preserves-sim-left-add-ℝ _ _ _ (left-inverse-law-add-ℝ _)) + = + ( square-ℝ (a *ℝ c) +ℝ square-ℝ (b *ℝ d)) +ℝ + ( square-ℝ (a *ℝ d) +ℝ square-ℝ (b *ℝ c)) + by right-unit-law-add-ℝ _ + = + ( square-ℝ (a *ℝ c) +ℝ square-ℝ (a *ℝ d)) +ℝ + ( square-ℝ (b *ℝ d) +ℝ square-ℝ (b *ℝ c)) + by interchange-law-add-add-ℝ _ _ _ _ + = + ( square-ℝ a *ℝ square-ℝ c +ℝ square-ℝ a *ℝ square-ℝ d) +ℝ + ( square-ℝ b *ℝ square-ℝ d +ℝ square-ℝ b *ℝ square-ℝ c) + by + ap-add-ℝ + ( ap-add-ℝ + ( distributive-square-mul-ℝ a c) + ( distributive-square-mul-ℝ a d)) + ( ap-add-ℝ + ( distributive-square-mul-ℝ b d) + ( distributive-square-mul-ℝ b c)) + = + square-ℝ a *ℝ (square-ℝ c +ℝ square-ℝ d) +ℝ + square-ℝ b *ℝ (square-ℝ d +ℝ square-ℝ c) + by + inv + ( ap-add-ℝ + ( left-distributive-mul-add-ℝ _ _ _) + ( left-distributive-mul-add-ℝ _ _ _)) + = + square-ℝ a *ℝ (square-ℝ c +ℝ square-ℝ d) +ℝ + square-ℝ b *ℝ (square-ℝ c +ℝ square-ℝ d) + by ap-add-ℝ refl (ap-mul-ℝ refl (commutative-add-ℝ _ _)) + = + (square-ℝ a +ℝ square-ℝ b) *ℝ (square-ℝ c +ℝ square-ℝ d) + by + inv + ( right-distributive-mul-add-ℝ + ( square-ℝ a) + ( square-ℝ b) + ( square-ℝ c +ℝ square-ℝ d)) +``` + +### The magnitude of `zw` is the product of the magnitudes of `z` and `w` + +```agda +abstract + distributive-magnitude-mul-ℂ : + {l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → + magnitude-ℂ (z *ℂ w) = magnitude-ℂ z *ℝ magnitude-ℂ w + distributive-magnitude-mul-ℂ z w = + equational-reasoning + real-sqrt-ℝ⁰⁺ (nonnegative-squared-magnitude-ℂ (z *ℂ w)) + = + real-sqrt-ℝ⁰⁺ + ( nonnegative-squared-magnitude-ℂ z *ℝ⁰⁺ + nonnegative-squared-magnitude-ℂ w) + by + ap + ( real-sqrt-ℝ⁰⁺) + ( eq-ℝ⁰⁺ _ _ (distributive-squared-magnitude-mul-ℂ z w)) + = magnitude-ℂ z *ℝ magnitude-ℂ w + by ap real-ℝ⁰⁺ (distributive-sqrt-mul-ℝ⁰⁺ _ _) +``` diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md index 320c7b26cdf..71dd292ad7f 100644 --- a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -8,7 +8,7 @@ module complex-numbers.multiplicative-inverses-nonzero-complex-numbers where ```agda open import complex-numbers.complex-numbers --- open import complex-numbers.conjugation-complex-numbers +open import complex-numbers.conjugation-complex-numbers open import complex-numbers.magnitude-complex-numbers open import complex-numbers.multiplication-complex-numbers open import complex-numbers.nonzero-complex-numbers diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index 783ef57c830..a3ef18a8455 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -60,6 +60,7 @@ open import real-numbers.minimum-lower-dedekind-real-numbers public open import real-numbers.minimum-upper-dedekind-real-numbers public open import real-numbers.multiplication-negative-real-numbers public open import real-numbers.multiplication-nonnegative-real-numbers public +open import real-numbers.multiplication-nonzero-real-numbers public open import real-numbers.multiplication-positive-and-negative-real-numbers public open import real-numbers.multiplication-positive-real-numbers public open import real-numbers.multiplication-real-numbers public diff --git a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md new file mode 100644 index 00000000000..5f6c8696300 --- /dev/null +++ b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md @@ -0,0 +1,68 @@ +# Multiplication of nonzero real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.multiplication-nonzero-real-numbers where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.function-types +open import foundation.universe-levels + +open import real-numbers.dedekind-real-numbers +open import real-numbers.multiplication-negative-real-numbers +open import real-numbers.multiplication-positive-and-negative-real-numbers +open import real-numbers.multiplication-positive-real-numbers +open import real-numbers.multiplication-real-numbers +open import real-numbers.multiplicative-inverses-nonzero-real-numbers +open import real-numbers.nonzero-real-numbers +``` + +
+ +## Idea + +The +{{#concept "product" Disambiguation="of pairs of nonzero real numbers" Agda=mul-nonzero-ℝ}} +of two [nonzero](real-numbers.nonzero-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md) is their +[product](real-numbers.multiplication-real-numbers.md) as real numbers, and is +itself nonzero. + +## Definition + +```agda +abstract + is-nonzero-mul-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → is-nonzero-ℝ x → is-nonzero-ℝ y → + is-nonzero-ℝ (x *ℝ y) + is-nonzero-mul-ℝ {x = x} {y = y} x#0 y#0 = + let + motive = is-nonzero-prop-ℝ (x *ℝ y) + in + elim-disjunction + ( motive) + ( λ x<0 → + elim-disjunction + ( motive) + ( inr-disjunction ∘ is-positive-mul-is-negative-ℝ x<0) + ( inl-disjunction ∘ is-negative-mul-negative-positive-ℝ x<0) + ( y#0)) + ( λ 0 Date: Mon, 10 Nov 2025 14:01:18 -0800 Subject: [PATCH 082/134] Progress --- ...ive-and-negative-rational-numbers.lagda.md | 30 +++++++++ ...ositive-and-negative-real-numbers.lagda.md | 64 +++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md index 4cbe0a91112..fd865252b7f 100644 --- a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md @@ -18,6 +18,7 @@ open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import foundation.cartesian-product-types +open import foundation.functoriality-coproduct-types open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types @@ -169,3 +170,32 @@ abstract ( y≠0) ( λ is-pos-y → inr (is-pos-x , is-pos-y))) ``` + +### If `xy` is negative, one of `x` and `y` is positive and the other negative + +```agda +abstract + different-signs-is-negative-mul-ℚ : + {x y : ℚ} → is-negative-ℚ (x *ℚ y) → + ( ( is-positive-ℚ x × is-negative-ℚ y) + + ( is-negative-ℚ x × is-positive-ℚ y)) + different-signs-is-negative-mul-ℚ {x} {y} is-neg-xy = + map-coproduct + ( λ (is-neg-neg-x , is-neg-y) → + ( tr + ( is-positive-ℚ) + ( neg-neg-ℚ x) + ( is-positive-neg-is-negative-ℚ is-neg-neg-x) , + is-neg-y)) + ( λ (is-pos-neg-x , is-pos-y) → + ( tr + ( is-negative-ℚ) + ( neg-neg-ℚ x) + ( is-negative-neg-is-positive-ℚ is-pos-neg-x) , + is-pos-y)) + ( same-sign-is-positive-mul-ℚ + ( inv-tr + ( is-positive-ℚ) + ( left-negative-law-mul-ℚ x y) + ( is-positive-neg-is-negative-ℚ is-neg-xy))) +``` diff --git a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md index 353a564925a..12ada068a8c 100644 --- a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md @@ -9,7 +9,18 @@ module real-numbers.multiplication-positive-and-negative-real-numbers where ```agda open import foundation.dependent-pair-types open import foundation.transport-along-identifications +open import foundation.disjunction +open import foundation.coproduct-types +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.minimum-rational-numbers +open import foundation.conjunction +open import order-theory.posets +open import elementary-number-theory.inequality-rational-numbers +open import foundation.propositional-truncations +open import elementary-number-theory.multiplication-closed-intervals-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.universe-levels +open import elementary-number-theory.positive-rational-numbers open import real-numbers.dedekind-real-numbers open import real-numbers.multiplication-positive-real-numbers @@ -70,3 +81,56 @@ mul-negative-positive-ℝ : mul-negative-positive-ℝ (x , is-neg-x) (y , is-pos-y) = ( x *ℝ y , is-negative-mul-negative-positive-ℝ is-neg-x is-pos-y) ``` + +### If the product of two real numbers is positive, both are negative or both are positive + +```agda +abstract opaque + unfolding mul-ℝ + + same-sign-is-positive-mul-ℝ : + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → is-positive-ℝ (x *ℝ y) → + type-disjunction-Prop + ( is-negative-prop-ℝ x ∧ is-negative-prop-ℝ y) + ( is-positive-prop-ℝ x ∧ is-positive-prop-ℝ y) + same-sign-is-positive-mul-ℝ x y 0 Date: Mon, 10 Nov 2025 14:02:00 -0800 Subject: [PATCH 083/134] Update src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md Co-authored-by: Fredrik Bakke --- .../geometric-sequences-commutative-rings.lagda.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md index 70d3a210a8f..87f0c35680b 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md @@ -291,9 +291,9 @@ module _ ```agda module _ {l : Level} (R : Commutative-Ring l) (a r : type-Commutative-Ring R) - (let _*_ = mul-Commutative-Ring R) - (let _+_ = add-Commutative-Ring R) - (let _-_ = right-subtraction-Commutative-Ring R) + (let _*R_ = mul-Commutative-Ring R) + (let _+R_ = add-Commutative-Ring R) + (let _-R_ = right-subtraction-Commutative-Ring R) (let zero-R = zero-Commutative-Ring R) (let one-R = one-Commutative-Ring R) where From 62bf2b63642dd1a2d8f987a0abeba4fcb516370a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 14:04:00 -0800 Subject: [PATCH 084/134] Respond to review comment --- src/literature/100-theorems.lagda.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/literature/100-theorems.lagda.md b/src/literature/100-theorems.lagda.md index d9ea4bf83ad..862d0a1cea8 100644 --- a/src/literature/100-theorems.lagda.md +++ b/src/literature/100-theorems.lagda.md @@ -122,7 +122,8 @@ open import foundation.cantors-theorem using ```agda open import real-numbers.geometric-sequences-real-numbers using - ( compute-sum-standard-geometric-series-ℝ) + ( compute-sum-standard-geometric-fin-sequence-ℝ ; + compute-sum-standard-geometric-series-ℝ) ``` ### 68. Sum of an arithmetic series {#68} From 855c5bb2ecaa61ff8ba7803f8046cd3d1210d042 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 14:08:04 -0800 Subject: [PATCH 085/134] Fix arithmetic op names --- ...etric-sequences-commutative-rings.lagda.md | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md index 87f0c35680b..b965ee88379 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md @@ -334,8 +334,8 @@ module _ (1/⟨1-r⟩ , H) 0 = inv ( equational-reasoning - (a * 1/⟨1-r⟩) * (one-R - one-R) - = (a * 1/⟨1-r⟩) * zero-R + (a *R 1/⟨1-r⟩) *R (one-R -R one-R) + = (a *R 1/⟨1-r⟩) *R zero-R by ap-mul-Commutative-Ring R ( refl) @@ -347,7 +347,7 @@ module _ equational-reasoning sum-standard-geometric-fin-sequence-Commutative-Ring R a r (succ-ℕ n) = - sum-standard-geometric-fin-sequence-Commutative-Ring R a r n + + sum-standard-geometric-fin-sequence-Commutative-Ring R a r n +R seq-standard-geometric-sequence-Commutative-Ring R a r n by cons-sum-fin-sequence-type-Commutative-Ring R @@ -358,8 +358,8 @@ module _ ( succ-ℕ n)) ( refl) = - ( (a * 1/⟨1-r⟩) * (one-R - power-Commutative-Ring R n r)) + - ( a * power-Commutative-Ring R n r) + ( (a *R 1/⟨1-r⟩) *R (one-R -R power-Commutative-Ring R n r)) +R + ( a *R power-Commutative-Ring R n r) by ap-add-Commutative-Ring R ( compute-sum-standard-geometric-fin-sequence-Commutative-Ring @@ -371,8 +371,8 @@ module _ ( r) ( n))) = - ( a * (1/⟨1-r⟩ * (one-R - power-Commutative-Ring R n r))) + - ( a * (one-R * power-Commutative-Ring R n r)) + ( a *R (1/⟨1-r⟩ *R (one-R -R power-Commutative-Ring R n r))) +R + ( a *R (one-R *R power-Commutative-Ring R n r)) by ap-add-Commutative-Ring R ( associative-mul-Commutative-Ring R _ _ _) @@ -380,14 +380,14 @@ module _ ( refl) ( inv (left-unit-law-mul-Commutative-Ring R _))) = - a * - ( (1/⟨1-r⟩ * (one-R - power-Commutative-Ring R n r)) + - (one-R * power-Commutative-Ring R n r)) + a *R + ( (1/⟨1-r⟩ *R (one-R -R power-Commutative-Ring R n r)) +R + (one-R *R power-Commutative-Ring R n r)) by inv (left-distributive-mul-add-Commutative-Ring R a _ _) = - a * - ( ( 1/⟨1-r⟩ * (one-R - power-Commutative-Ring R n r)) + - ( (1/⟨1-r⟩ * (one-R - r)) * power-Commutative-Ring R n r)) + a *R + ( ( 1/⟨1-r⟩ *R (one-R -R power-Commutative-Ring R n r)) +R + ( (1/⟨1-r⟩ *R (one-R -R r)) *R power-Commutative-Ring R n r)) by ap-mul-Commutative-Ring R ( refl) @@ -395,9 +395,9 @@ module _ ( refl) ( ap-mul-Commutative-Ring R (inv (pr2 H)) refl)) = - a * - ( ( 1/⟨1-r⟩ * (one-R - power-Commutative-Ring R n r)) + - ( 1/⟨1-r⟩ * ((one-R - r) * power-Commutative-Ring R n r))) + a *R + ( ( 1/⟨1-r⟩ *R (one-R -R power-Commutative-Ring R n r)) +R + ( 1/⟨1-r⟩ *R ((one-R -R r) *R power-Commutative-Ring R n r))) by ap-mul-Commutative-Ring R ( refl) @@ -405,24 +405,24 @@ module _ ( refl) ( associative-mul-Commutative-Ring R _ _ _)) = - a * - ( 1/⟨1-r⟩ * - ( ( one-R - power-Commutative-Ring R n r) + - ( (one-R - r) * power-Commutative-Ring R n r))) + a *R + ( 1/⟨1-r⟩ *R + ( ( one-R -R power-Commutative-Ring R n r) +R + ( (one-R -R r) *R power-Commutative-Ring R n r))) by ap-mul-Commutative-Ring R ( refl) ( inv (left-distributive-mul-add-Commutative-Ring R _ _ _)) = - ( a * 1/⟨1-r⟩) * - ( ( one-R - power-Commutative-Ring R n r) + - ( (one-R - r) * power-Commutative-Ring R n r)) + ( a *R 1/⟨1-r⟩) *R + ( ( one-R -R power-Commutative-Ring R n r) +R + ( (one-R -R r) *R power-Commutative-Ring R n r)) by inv (associative-mul-Commutative-Ring R _ _ _) = - ( a * 1/⟨1-r⟩) * - ( ( one-R - power-Commutative-Ring R n r) + - ( (one-R * power-Commutative-Ring R n r) - - (r * power-Commutative-Ring R n r))) + ( a *R 1/⟨1-r⟩) *R + ( ( one-R -R power-Commutative-Ring R n r) +R + ( (one-R *R power-Commutative-Ring R n r) -R + (r *R power-Commutative-Ring R n r))) by ap-mul-Commutative-Ring R ( refl) @@ -433,9 +433,9 @@ module _ ( _) ( _))) = - ( a * 1/⟨1-r⟩) * - ( ( one-R - power-Commutative-Ring R n r) + - ( power-Commutative-Ring R n r - + ( a *R 1/⟨1-r⟩) *R + ( ( one-R -R power-Commutative-Ring R n r) +R + ( power-Commutative-Ring R n r -R power-Commutative-Ring R (succ-ℕ n) r)) by ap-mul-Commutative-Ring R @@ -446,8 +446,8 @@ module _ ( left-unit-law-mul-Commutative-Ring R _) ( inv (power-succ-Commutative-Ring' R n r)))) = - ( a * 1/⟨1-r⟩) * - ( one-R - power-Commutative-Ring R (succ-ℕ n) r) + ( a *R 1/⟨1-r⟩) *R + ( one-R -R power-Commutative-Ring R (succ-ℕ n) r) by ap-mul-Commutative-Ring R ( refl) From 9309668c0274c021f806a3ae94552e45d2acab3a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 15:18:39 -0800 Subject: [PATCH 086/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../geometric-sequences-commutative-rings.lagda.md | 6 +++--- src/real-numbers/nonzero-real-numbers.lagda.md | 2 +- src/real-numbers/powers-real-numbers.lagda.md | 4 ++-- src/real-numbers/real-sequences-approximating-zero.lagda.md | 2 +- src/real-numbers/series-real-numbers.lagda.md | 2 +- .../uniformly-continuous-functions-real-numbers.lagda.md | 5 ++--- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md index b965ee88379..5af1cfd3a26 100644 --- a/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md +++ b/src/commutative-algebra/geometric-sequences-commutative-rings.lagda.md @@ -406,9 +406,9 @@ module _ ( associative-mul-Commutative-Ring R _ _ _)) = a *R - ( 1/⟨1-r⟩ *R - ( ( one-R -R power-Commutative-Ring R n r) +R - ( (one-R -R r) *R power-Commutative-Ring R n r))) + ( 1/⟨1-r⟩ *R + ( ( one-R -R power-Commutative-Ring R n r) +R + ( (one-R -R r) *R power-Commutative-Ring R n r))) by ap-mul-Commutative-Ring R ( refl) diff --git a/src/real-numbers/nonzero-real-numbers.lagda.md b/src/real-numbers/nonzero-real-numbers.lagda.md index 3a8df09cc9c..50a1218db66 100644 --- a/src/real-numbers/nonzero-real-numbers.lagda.md +++ b/src/real-numbers/nonzero-real-numbers.lagda.md @@ -122,7 +122,7 @@ module _ nonzero-diff-apart-ℝ x#y = (x -ℝ y , is-nonzero-diff-is-apart-ℝ x#y) ``` -### If `x < y`, then `y - x` is nonzero +### The nonzero difference of a pair of real numbers `x` and `y` such that `x < y` ```agda nonzero-diff-le-ℝ : diff --git a/src/real-numbers/powers-real-numbers.lagda.md b/src/real-numbers/powers-real-numbers.lagda.md index 2f879cfc4ca..67caeae578b 100644 --- a/src/real-numbers/powers-real-numbers.lagda.md +++ b/src/real-numbers/powers-real-numbers.lagda.md @@ -355,7 +355,7 @@ abstract by leq-eq-ℝ (ap abs-ℝ (inv (power-succ-ℝ n y))) ``` -### If `x` and `y` are nonnegative, and `x ≤ y`, `xⁿ ≤ yⁿ` +### If `x` and `y` are nonnegative such that `x ≤ y`, then `xⁿ ≤ yⁿ` ```agda abstract @@ -388,7 +388,7 @@ abstract by leq-eq-ℝ (inv (power-succ-ℝ n y)) ``` -### If `|r| < 1`, `rⁿ` approaches 0 +### If `|r| < 1`, then `rⁿ` approaches 0 ```agda abstract diff --git a/src/real-numbers/real-sequences-approximating-zero.lagda.md b/src/real-numbers/real-sequences-approximating-zero.lagda.md index e36d1f6603c..4cf4a469c7e 100644 --- a/src/real-numbers/real-sequences-approximating-zero.lagda.md +++ b/src/real-numbers/real-sequences-approximating-zero.lagda.md @@ -110,5 +110,5 @@ abstract by preserves-leq-real-ℚ ( leq-dist-neighborhood-ℚ ε _ _ (is-mod-μ ε n με≤n)))) - ( lim-b=0) + ( lim-b=0) ``` diff --git a/src/real-numbers/series-real-numbers.lagda.md b/src/real-numbers/series-real-numbers.lagda.md index c123f129447..f3d0ecf21e3 100644 --- a/src/real-numbers/series-real-numbers.lagda.md +++ b/src/real-numbers/series-real-numbers.lagda.md @@ -25,7 +25,7 @@ open import real-numbers.metric-abelian-group-of-real-numbers A {{#concept "series" Disambiguation="of real numbers" Agda=series-ℝ}} of [real numbers](real-numbers.dedekind-real-numbers.md) is an infinite sum -$$\Sigma_{n=0}^∞ a_n$$, which is evaluated for convergence in the +$$∑_{n=0}^∞ a_n$$, which is evaluated for convergence in the [metric abelian group of real numbers](real-numbers.metric-abelian-group-of-real-numbers.md). ## Definition diff --git a/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md b/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md index c77135801b7..408e41e86f7 100644 --- a/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md +++ b/src/real-numbers/uniformly-continuous-functions-real-numbers.lagda.md @@ -26,9 +26,8 @@ A from the [real numbers](real-numbers.dedekind-real-numbers.md) to the real numbers is a function `f : ℝ → ℝ` such that there [exists](foundation.existential-quantification.md) a modulus `μ : ℚ⁺ → ℚ⁺` such -that for all `x y : ℝ` within a `μ ε` -[neighborhood](real-numbers.metric-space-of-real-numbers.md) of each other, -`f x` and `f y` are within an `ε` neighborhood. +that for all `x y : ℝ` within a `μ ε`-[neighborhood](real-numbers.metric-space-of-real-numbers.md) of each other, +`f x` and `f y` are within an `ε`-neighborhood. ## Definition From d1447a82c3c24d6ca7c388ca643a17f886786621 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 15:22:27 -0800 Subject: [PATCH 087/134] Respond to comments --- .../geometric-sequences-rational-numbers.lagda.md | 2 +- .../triangular-numbers.lagda.md | 2 +- .../convergent-sequences-metric-spaces.lagda.md | 6 +++--- .../limits-of-sequences-metric-spaces.lagda.md | 15 ++++++++------- .../geometric-sequences-real-numbers.lagda.md | 2 +- .../limits-sequences-real-numbers.lagda.md | 12 ++++++------ src/real-numbers/nonzero-real-numbers.lagda.md | 2 +- ...mly-continuous-functions-real-numbers.lagda.md | 5 +++-- 8 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 3773379808f..39b04e63dd4 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -162,7 +162,7 @@ module _ = a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) by right-unit-law-mul-ℚ _) - ( uniformly-continuous-map-limit-sequence-Metric-Space + ( preserves-limit-sequence-uniformly-continuous-function-Metric-Space ( metric-space-ℚ) ( metric-space-ℚ) ( comp-uniformly-continuous-function-Metric-Space diff --git a/src/elementary-number-theory/triangular-numbers.lagda.md b/src/elementary-number-theory/triangular-numbers.lagda.md index 23ae32125c6..2b5b9fdf3a9 100644 --- a/src/elementary-number-theory/triangular-numbers.lagda.md +++ b/src/elementary-number-theory/triangular-numbers.lagda.md @@ -284,7 +284,7 @@ abstract by ap-mul-ℚ refl (right-zero-law-diff-ℚ one-ℚ) = rational-ℕ 2 by right-unit-law-mul-ℚ _) - ( uniformly-continuous-map-limit-sequence-Metric-Space + ( preserves-limit-sequence-uniformly-continuous-function-Metric-Space ( metric-space-ℚ) ( metric-space-ℚ) ( comp-uniformly-continuous-function-Metric-Space diff --git a/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md b/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md index 073ef2f615b..7020270424b 100644 --- a/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md @@ -111,7 +111,7 @@ module _ ( seq-modulated-ucont-map-convergent-sequence-Metric-Space) ( limit-seq-modulated-ucont-map-convergent-sequence-Metric-Space) is-limit-seq-modulated-ucont-map-convergent-sequence-Metric-Space = - modulated-ucont-map-limit-sequence-Metric-Space + preserves-limit-sequence-modulated-ucont-map-Metric-Space ( A) ( B) ( f) @@ -162,7 +162,7 @@ module _ ( seq-uniformly-continuous-map-convergent-sequence-Metric-Space) ( limit-seq-uniformly-continuous-map-convergent-sequence-Metric-Space) is-limit-seq-uniformly-continuous-map-convergent-sequence-Metric-Space = - uniformly-continuous-map-limit-sequence-Metric-Space + preserves-limit-sequence-uniformly-continuous-function-Metric-Space ( A) ( B) ( f) @@ -206,7 +206,7 @@ module _ has-limit-seq-short-map-convergent-sequence-Metric-Space = ( map-short-function-Metric-Space A B f ( limit-convergent-sequence-Metric-Space A u)) , - ( short-map-limit-sequence-Metric-Space + ( preserves-limit-sequence-short-function-Metric-Space ( A) ( B) ( f) diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md index 219491a035a..61be4c7f1d9 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -292,7 +292,7 @@ module _ ( n) ( N≤n))) - modulated-ucont-map-limit-sequence-Metric-Space : + preserves-limit-sequence-modulated-ucont-map-Metric-Space : is-limit-sequence-Metric-Space A u lim → is-limit-sequence-Metric-Space ( B) @@ -300,7 +300,7 @@ module _ ( map-modulated-ucont-map-Metric-Space A B f) ( u)) ( map-modulated-ucont-map-Metric-Space A B f lim) - modulated-ucont-map-limit-sequence-Metric-Space = + preserves-limit-sequence-modulated-ucont-map-Metric-Space = map-is-inhabited modulated-ucont-map-limit-modulus-sequence-Metric-Space ``` @@ -317,7 +317,7 @@ module _ where abstract - uniformly-continuous-map-limit-sequence-Metric-Space : + preserves-limit-sequence-uniformly-continuous-function-Metric-Space : is-limit-sequence-Metric-Space A u lim → is-limit-sequence-Metric-Space ( B) @@ -325,11 +325,12 @@ module _ ( map-uniformly-continuous-function-Metric-Space A B f) ( u)) ( map-uniformly-continuous-function-Metric-Space A B f lim) - uniformly-continuous-map-limit-sequence-Metric-Space is-limit-lim = + preserves-limit-sequence-uniformly-continuous-function-Metric-Space + is-limit-lim = rec-trunc-Prop ( is-limit-prop-sequence-Metric-Space B _ _) ( λ m → - modulated-ucont-map-limit-sequence-Metric-Space + preserves-limit-sequence-modulated-ucont-map-Metric-Space ( A) ( B) ( map-uniformly-continuous-function-Metric-Space A B f , m) @@ -370,7 +371,7 @@ module _ ( u) ( lim) - short-map-limit-sequence-Metric-Space : + preserves-limit-sequence-short-function-Metric-Space : is-limit-sequence-Metric-Space A u lim → is-limit-sequence-Metric-Space ( B) @@ -378,7 +379,7 @@ module _ ( map-short-function-Metric-Space A B f) ( u)) ( map-short-function-Metric-Space A B f lim) - short-map-limit-sequence-Metric-Space = + preserves-limit-sequence-short-function-Metric-Space = map-is-inhabited short-map-limit-modulus-sequence-Metric-Space ``` diff --git a/src/real-numbers/geometric-sequences-real-numbers.lagda.md b/src/real-numbers/geometric-sequences-real-numbers.lagda.md index 2db218fddaf..ed7444ffafe 100644 --- a/src/real-numbers/geometric-sequences-real-numbers.lagda.md +++ b/src/real-numbers/geometric-sequences-real-numbers.lagda.md @@ -232,7 +232,7 @@ module _ by ap-mul-ℝ refl (right-unit-law-diff-ℝ one-ℝ) = a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1) by right-unit-law-mul-ℝ _) - ( uniformly-continuous-map-limit-sequence-ℝ + ( preserves-limit-sequence-uniformly-continuous-function-ℝ ( comp-uniformly-continuous-function-ℝ ( uniformly-continuous-right-mul-ℝ ( l) diff --git a/src/real-numbers/limits-sequences-real-numbers.lagda.md b/src/real-numbers/limits-sequences-real-numbers.lagda.md index b5d5af537b4..874278d681f 100644 --- a/src/real-numbers/limits-sequences-real-numbers.lagda.md +++ b/src/real-numbers/limits-sequences-real-numbers.lagda.md @@ -61,13 +61,13 @@ module _ where abstract - is-limit-add-sequence-ℝ : + preserves-limit-add-sequence-ℝ : is-limit-sequence-Metric-Space ( metric-space-ℝ (l1 ⊔ l2)) ( binary-map-sequence add-ℝ u v) ( lim-u +ℝ lim-v) - is-limit-add-sequence-ℝ = - modulated-ucont-map-limit-sequence-Metric-Space + preserves-limit-add-sequence-ℝ = + preserves-limit-sequence-modulated-ucont-map-Metric-Space ( product-Metric-Space (metric-space-ℝ l1) (metric-space-ℝ l2)) ( metric-space-ℝ (l1 ⊔ l2)) ( modulated-ucont-add-pair-ℝ l1 l2) @@ -91,15 +91,15 @@ module _ where abstract - uniformly-continuous-map-limit-sequence-ℝ : + preserves-limit-sequence-uniformly-continuous-function-ℝ : is-limit-sequence-ℝ u lim → is-limit-sequence-ℝ ( map-sequence ( map-uniformly-continuous-function-ℝ f) ( u)) ( map-uniformly-continuous-function-ℝ f lim) - uniformly-continuous-map-limit-sequence-ℝ = - uniformly-continuous-map-limit-sequence-Metric-Space + preserves-limit-sequence-uniformly-continuous-function-ℝ = + preserves-limit-sequence-uniformly-continuous-function-Metric-Space ( metric-space-ℝ l1) ( metric-space-ℝ l2) ( f) diff --git a/src/real-numbers/nonzero-real-numbers.lagda.md b/src/real-numbers/nonzero-real-numbers.lagda.md index 50a1218db66..c628c950a6b 100644 --- a/src/real-numbers/nonzero-real-numbers.lagda.md +++ b/src/real-numbers/nonzero-real-numbers.lagda.md @@ -130,7 +130,7 @@ nonzero-diff-le-ℝ : nonzero-diff-le-ℝ {x = x} {y = y} x Date: Tue, 11 Nov 2025 00:33:30 +0100 Subject: [PATCH 088/134] plural `preserves-limits` --- .../geometric-sequences-rational-numbers.lagda.md | 2 +- .../triangular-numbers.lagda.md | 2 +- ...etric-quotients-of-pseudometric-spaces.lagda.md | 4 ++-- .../convergent-sequences-metric-spaces.lagda.md | 6 +++--- .../limits-of-sequences-metric-spaces.lagda.md | 14 +++++++------- .../geometric-sequences-real-numbers.lagda.md | 2 +- .../limits-sequences-real-numbers.lagda.md | 12 ++++++------ 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md index 39b04e63dd4..5e81a68f072 100644 --- a/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-rational-numbers.lagda.md @@ -162,7 +162,7 @@ module _ = a *ℚ rational-inv-ℚˣ (invertible-diff-neq-ℚ r one-ℚ r≠1) by right-unit-law-mul-ℚ _) - ( preserves-limit-sequence-uniformly-continuous-function-Metric-Space + ( preserves-limits-sequence-uniformly-continuous-function-Metric-Space ( metric-space-ℚ) ( metric-space-ℚ) ( comp-uniformly-continuous-function-Metric-Space diff --git a/src/elementary-number-theory/triangular-numbers.lagda.md b/src/elementary-number-theory/triangular-numbers.lagda.md index 2b5b9fdf3a9..0a3f74aae18 100644 --- a/src/elementary-number-theory/triangular-numbers.lagda.md +++ b/src/elementary-number-theory/triangular-numbers.lagda.md @@ -284,7 +284,7 @@ abstract by ap-mul-ℚ refl (right-zero-law-diff-ℚ one-ℚ) = rational-ℕ 2 by right-unit-law-mul-ℚ _) - ( preserves-limit-sequence-uniformly-continuous-function-Metric-Space + ( preserves-limits-sequence-uniformly-continuous-function-Metric-Space ( metric-space-ℚ) ( metric-space-ℚ) ( comp-uniformly-continuous-function-Metric-Space diff --git a/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md index 13705b93b6c..9184f29af6a 100644 --- a/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-quotients-of-pseudometric-spaces.lagda.md @@ -206,12 +206,12 @@ module _ is-limit-cauchy-approximation-Pseudometric-Space M u lim) where - preserves-limit-map-metric-quotient-cauchy-approximation-Pseudometric-Space : + preserves-limits-map-metric-quotient-cauchy-approximation-Pseudometric-Space : is-limit-cauchy-approximation-Metric-Space ( metric-quotient-Pseudometric-Space M) ( map-metric-quotient-cauchy-approximation-Pseudometric-Space M u) ( map-metric-quotient-Pseudometric-Space M lim) - preserves-limit-map-metric-quotient-cauchy-approximation-Pseudometric-Space + preserves-limits-map-metric-quotient-cauchy-approximation-Pseudometric-Space ε δ (x , x∈uε) (y , y∈lim) = let lim~y : sim-Pseudometric-Space M lim y diff --git a/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md b/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md index 7020270424b..b2dc8712acd 100644 --- a/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/convergent-sequences-metric-spaces.lagda.md @@ -111,7 +111,7 @@ module _ ( seq-modulated-ucont-map-convergent-sequence-Metric-Space) ( limit-seq-modulated-ucont-map-convergent-sequence-Metric-Space) is-limit-seq-modulated-ucont-map-convergent-sequence-Metric-Space = - preserves-limit-sequence-modulated-ucont-map-Metric-Space + preserves-limits-sequence-modulated-ucont-map-Metric-Space ( A) ( B) ( f) @@ -162,7 +162,7 @@ module _ ( seq-uniformly-continuous-map-convergent-sequence-Metric-Space) ( limit-seq-uniformly-continuous-map-convergent-sequence-Metric-Space) is-limit-seq-uniformly-continuous-map-convergent-sequence-Metric-Space = - preserves-limit-sequence-uniformly-continuous-function-Metric-Space + preserves-limits-sequence-uniformly-continuous-function-Metric-Space ( A) ( B) ( f) @@ -206,7 +206,7 @@ module _ has-limit-seq-short-map-convergent-sequence-Metric-Space = ( map-short-function-Metric-Space A B f ( limit-convergent-sequence-Metric-Space A u)) , - ( preserves-limit-sequence-short-function-Metric-Space + ( preserves-limits-sequence-short-function-Metric-Space ( A) ( B) ( f) diff --git a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md index 61be4c7f1d9..2cfda0f25e0 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -292,7 +292,7 @@ module _ ( n) ( N≤n))) - preserves-limit-sequence-modulated-ucont-map-Metric-Space : + preserves-limits-sequence-modulated-ucont-map-Metric-Space : is-limit-sequence-Metric-Space A u lim → is-limit-sequence-Metric-Space ( B) @@ -300,7 +300,7 @@ module _ ( map-modulated-ucont-map-Metric-Space A B f) ( u)) ( map-modulated-ucont-map-Metric-Space A B f lim) - preserves-limit-sequence-modulated-ucont-map-Metric-Space = + preserves-limits-sequence-modulated-ucont-map-Metric-Space = map-is-inhabited modulated-ucont-map-limit-modulus-sequence-Metric-Space ``` @@ -317,7 +317,7 @@ module _ where abstract - preserves-limit-sequence-uniformly-continuous-function-Metric-Space : + preserves-limits-sequence-uniformly-continuous-function-Metric-Space : is-limit-sequence-Metric-Space A u lim → is-limit-sequence-Metric-Space ( B) @@ -325,12 +325,12 @@ module _ ( map-uniformly-continuous-function-Metric-Space A B f) ( u)) ( map-uniformly-continuous-function-Metric-Space A B f lim) - preserves-limit-sequence-uniformly-continuous-function-Metric-Space + preserves-limits-sequence-uniformly-continuous-function-Metric-Space is-limit-lim = rec-trunc-Prop ( is-limit-prop-sequence-Metric-Space B _ _) ( λ m → - preserves-limit-sequence-modulated-ucont-map-Metric-Space + preserves-limits-sequence-modulated-ucont-map-Metric-Space ( A) ( B) ( map-uniformly-continuous-function-Metric-Space A B f , m) @@ -371,7 +371,7 @@ module _ ( u) ( lim) - preserves-limit-sequence-short-function-Metric-Space : + preserves-limits-sequence-short-function-Metric-Space : is-limit-sequence-Metric-Space A u lim → is-limit-sequence-Metric-Space ( B) @@ -379,7 +379,7 @@ module _ ( map-short-function-Metric-Space A B f) ( u)) ( map-short-function-Metric-Space A B f lim) - preserves-limit-sequence-short-function-Metric-Space = + preserves-limits-sequence-short-function-Metric-Space = map-is-inhabited short-map-limit-modulus-sequence-Metric-Space ``` diff --git a/src/real-numbers/geometric-sequences-real-numbers.lagda.md b/src/real-numbers/geometric-sequences-real-numbers.lagda.md index ed7444ffafe..a8688366577 100644 --- a/src/real-numbers/geometric-sequences-real-numbers.lagda.md +++ b/src/real-numbers/geometric-sequences-real-numbers.lagda.md @@ -232,7 +232,7 @@ module _ by ap-mul-ℝ refl (right-unit-law-diff-ℝ one-ℝ) = a *ℝ real-inv-nonzero-ℝ (nonzero-diff-le-abs-ℝ |r|<1) by right-unit-law-mul-ℝ _) - ( preserves-limit-sequence-uniformly-continuous-function-ℝ + ( preserves-limits-sequence-uniformly-continuous-function-ℝ ( comp-uniformly-continuous-function-ℝ ( uniformly-continuous-right-mul-ℝ ( l) diff --git a/src/real-numbers/limits-sequences-real-numbers.lagda.md b/src/real-numbers/limits-sequences-real-numbers.lagda.md index 874278d681f..4636b60dcda 100644 --- a/src/real-numbers/limits-sequences-real-numbers.lagda.md +++ b/src/real-numbers/limits-sequences-real-numbers.lagda.md @@ -61,13 +61,13 @@ module _ where abstract - preserves-limit-add-sequence-ℝ : + preserves-limits-add-sequence-ℝ : is-limit-sequence-Metric-Space ( metric-space-ℝ (l1 ⊔ l2)) ( binary-map-sequence add-ℝ u v) ( lim-u +ℝ lim-v) - preserves-limit-add-sequence-ℝ = - preserves-limit-sequence-modulated-ucont-map-Metric-Space + preserves-limits-add-sequence-ℝ = + preserves-limits-sequence-modulated-ucont-map-Metric-Space ( product-Metric-Space (metric-space-ℝ l1) (metric-space-ℝ l2)) ( metric-space-ℝ (l1 ⊔ l2)) ( modulated-ucont-add-pair-ℝ l1 l2) @@ -91,15 +91,15 @@ module _ where abstract - preserves-limit-sequence-uniformly-continuous-function-ℝ : + preserves-limits-sequence-uniformly-continuous-function-ℝ : is-limit-sequence-ℝ u lim → is-limit-sequence-ℝ ( map-sequence ( map-uniformly-continuous-function-ℝ f) ( u)) ( map-uniformly-continuous-function-ℝ f lim) - preserves-limit-sequence-uniformly-continuous-function-ℝ = - preserves-limit-sequence-uniformly-continuous-function-Metric-Space + preserves-limits-sequence-uniformly-continuous-function-ℝ = + preserves-limits-sequence-uniformly-continuous-function-Metric-Space ( metric-space-ℝ l1) ( metric-space-ℝ l2) ( f) From b016840603269a603114e0919a64983132f06b6e Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 16:35:09 -0800 Subject: [PATCH 089/134] Vector spaces --- src/linear-algebra/vector-spaces.lagda.md | 55 ++++++++++++ .../addition-negative-real-numbers.lagda.md | 84 +++++++++++++++++++ .../addition-nonzero-real-numbers.lagda.md | 55 ++++++++++++ .../local-ring-of-real-numbers.lagda.md | 50 +++++++++++ ...ive-inverses-nonzero-real-numbers.lagda.md | 14 ++++ ...ositive-and-negative-real-numbers.lagda.md | 33 ++++++++ 6 files changed, 291 insertions(+) create mode 100644 src/linear-algebra/vector-spaces.lagda.md create mode 100644 src/real-numbers/addition-negative-real-numbers.lagda.md create mode 100644 src/real-numbers/addition-nonzero-real-numbers.lagda.md create mode 100644 src/real-numbers/local-ring-of-real-numbers.lagda.md diff --git a/src/linear-algebra/vector-spaces.lagda.md b/src/linear-algebra/vector-spaces.lagda.md new file mode 100644 index 00000000000..d9e39a8ed7c --- /dev/null +++ b/src/linear-algebra/vector-spaces.lagda.md @@ -0,0 +1,55 @@ +# Vector spaces + +```agda +module linear-algebra.vector-spaces where +``` + +
Imports + +```agda +open import foundation.sets +open import foundation.universe-levels +open import group-theory.abelian-groups +open import commutative-algebra.local-commutative-rings +open import linear-algebra.left-modules-commutative-rings +``` + +
+ +## Idea + +A {{#concept "vector space" WD="vector space" WDID=Q125977}} is a +[left module](linear-algebra.left-modules-rings.md) over a +[local commutative ring](commutative-algebra.local-commutative-rings.md). + +## Definition + +```agda +Vector-Space : + {l1 : Level} (l2 : Level) → Local-Commutative-Ring l1 → UU (l1 ⊔ lsuc l2) +Vector-Space l2 R = + left-module-Commutative-Ring l2 (commutative-ring-Local-Commutative-Ring R) +``` + +## Properties + +```agda +module _ + {l1 l2 : Level} (R : Local-Commutative-Ring l1) (V : Vector-Space l2 R) + where + + ab-Vector-Space : Ab l2 + ab-Vector-Space = + ab-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + set-Vector-Space : Set l2 + set-Vector-Space = set-Ab ab-Vector-Space + + type-Vector-Space : UU l2 + type-Vector-Space = type-Ab ab-Vector-Space + + add-Vector-Space : type-Vector-Space → type-Vector-Space → type-Vector-Space + add-Vector-Space = add-Ab ab-Vector-Space +``` diff --git a/src/real-numbers/addition-negative-real-numbers.lagda.md b/src/real-numbers/addition-negative-real-numbers.lagda.md new file mode 100644 index 00000000000..66f7d5e1e54 --- /dev/null +++ b/src/real-numbers/addition-negative-real-numbers.lagda.md @@ -0,0 +1,84 @@ +# Addition of negative real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.addition-negative-real-numbers where +``` + +
Imports + +```agda +open import real-numbers.negative-real-numbers +open import real-numbers.dedekind-real-numbers +open import foundation.transport-along-identifications +open import real-numbers.rational-real-numbers +open import real-numbers.negation-real-numbers +open import foundation.functoriality-disjunction +open import real-numbers.addition-positive-real-numbers +open import foundation.disjunction +open import real-numbers.addition-real-numbers +open import real-numbers.strict-inequality-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers +open import real-numbers.positive-real-numbers +open import real-numbers.positive-and-negative-real-numbers +open import foundation.universe-levels +open import foundation.dependent-pair-types +``` + +
+ +## Idea + +The [negative](real-numbers.negative-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md) are closed under +[addition](real-numbers.addition-real-numbers.md). + +## Definition + +```agda +abstract + is-negative-add-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → is-negative-ℝ x → is-negative-ℝ y → + is-negative-ℝ (x +ℝ y) + is-negative-add-ℝ {x = x} {y = y} x<0 y<0 = + transitive-le-ℝ + ( x +ℝ y) + ( x) + ( zero-ℝ) + ( x<0) + ( tr + ( le-ℝ (x +ℝ y)) + ( right-unit-law-add-ℝ x) + ( preserves-le-left-add-ℝ x y zero-ℝ y<0)) + +add-ℝ⁻ : {l1 l2 : Level} → ℝ⁻ l1 → ℝ⁻ l2 → ℝ⁻ (l1 ⊔ l2) +add-ℝ⁻ (x , x<0) (y , y<0) = (add-ℝ x y , is-negative-add-ℝ x<0 y<0) + +infixl 35 _+ℝ⁻_ + +_+ℝ⁻_ : {l1 l2 : Level} → ℝ⁻ l1 → ℝ⁻ l2 → ℝ⁻ (l1 ⊔ l2) +_+ℝ⁻_ = add-ℝ⁻ +``` + +## Properties + +### If `x + y` is negative, `x` or `y` is negative + +```agda +abstract + is-negative-either-is-negative-add-ℝ : + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → is-negative-ℝ (x +ℝ y) → + disjunction-type (is-negative-ℝ x) (is-negative-ℝ y) + is-negative-either-is-negative-add-ℝ x y x+y<0 = + map-disjunction + ( is-negative-is-positive-neg-ℝ x) + ( is-negative-is-positive-neg-ℝ y) + ( is-positive-either-is-positive-add-ℝ + ( neg-ℝ x) + ( neg-ℝ y) + ( tr + ( is-positive-ℝ) + ( distributive-neg-add-ℝ x y) + ( neg-is-negative-ℝ (x +ℝ y) x+y<0))) +``` diff --git a/src/real-numbers/addition-nonzero-real-numbers.lagda.md b/src/real-numbers/addition-nonzero-real-numbers.lagda.md new file mode 100644 index 00000000000..3ab16e4f8b7 --- /dev/null +++ b/src/real-numbers/addition-nonzero-real-numbers.lagda.md @@ -0,0 +1,55 @@ +# Addition of nonzero real numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module real-numbers.addition-nonzero-real-numbers where +``` + +
Imports + +```agda +open import real-numbers.nonzero-real-numbers +open import real-numbers.addition-positive-real-numbers +open import real-numbers.addition-negative-real-numbers +open import real-numbers.addition-real-numbers +open import real-numbers.dedekind-real-numbers +open import foundation.functoriality-disjunction +open import foundation.disjunction +open import foundation.dependent-pair-types +open import foundation.universe-levels +``` + +
+ +## Idea + +On this page we describe properties of +[addition](real-numbers.addition-real-numbers.md) of +[nonzero](real-numbers.nonzero-real-numbers.md) +[real numbers](real-numbers.dedekind-real-numbers.md). + +## Properties + +### If `x + y` is nonzero, `x` is nonzero or `y` is nonzero + +```agda +abstract + is-nonzero-either-is-nonzero-add-ℝ : + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → + is-nonzero-ℝ (x +ℝ y) → + disjunction-type (is-nonzero-ℝ x) (is-nonzero-ℝ y) + is-nonzero-either-is-nonzero-add-ℝ x y = + elim-disjunction + ( is-nonzero-prop-ℝ x ∨ is-nonzero-prop-ℝ y) + ( λ x+y<0 → + map-disjunction + ( inl-disjunction) + ( inl-disjunction) + ( is-negative-either-is-negative-add-ℝ x y x+y<0)) + ( λ 0Imports + +```agda +open import commutative-algebra.local-commutative-rings +open import real-numbers.addition-real-numbers +open import real-numbers.nonzero-real-numbers +open import foundation.dependent-pair-types +open import foundation.functoriality-disjunction +open import real-numbers.addition-nonzero-real-numbers +open import real-numbers.large-ring-of-real-numbers +open import real-numbers.multiplicative-inverses-nonzero-real-numbers +open import foundation.universe-levels +``` + +
+ +## Idea + +The [ring of real numbers](real-numbers.large-ring-of-real-numbers.md) is a +[local](commutative-algebra.local-commutative-rings.md) +[commutative ring](commutative-algebra.commutative-rings.md). Notably, this is +one of the strongest alternatives for the concept of field that applies to the +[Dedekind real numbers](real-numbers.dedekind-real-numbers.md) constructively. + +## Definition + +```agda +is-local-commutative-ring-ℝ : + (l : Level) → is-local-Commutative-Ring (commutative-ring-ℝ l) +is-local-commutative-ring-ℝ l x y is-invertible-x+y = + map-disjunction + ( is-invertible-is-nonzero-ℝ x) + ( is-invertible-is-nonzero-ℝ y) + ( is-nonzero-either-is-nonzero-add-ℝ + ( x) + ( y) + ( is-nonzero-is-invertible-ℝ (x +ℝ y) is-invertible-x+y)) + +local-commutative-ring-ℝ : (l : Level) → Local-Commutative-Ring (lsuc l) +local-commutative-ring-ℝ l = + ( commutative-ring-ℝ l , is-local-commutative-ring-ℝ l) +``` diff --git a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md index aedb75f632c..bd117101ec5 100644 --- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md @@ -210,6 +210,20 @@ abstract opaque is-nonzero-has-left-inverse-mul-ℝ x y xy=1 = is-nonzero-has-right-inverse-mul-ℝ y x ( tr (λ z → sim-ℝ z one-ℝ) (commutative-mul-ℝ _ _) xy=1) + + is-nonzero-is-invertible-ℝ : + {l : Level} (x : ℝ l) → + is-invertible-element-Commutative-Ring (commutative-ring-ℝ l) x → + is-nonzero-ℝ x + is-nonzero-is-invertible-ℝ {l} x (y , xy=1 , _) = + is-nonzero-has-right-inverse-mul-ℝ x y + ( inv-tr + ( λ z → sim-ℝ z one-ℝ) + ( xy=1) + ( symmetric-sim-ℝ + { x = one-ℝ} + { y = raise-ℝ l one-ℝ} + ( sim-raise-ℝ l one-ℝ))) ``` ### The multiplicative inverse is unique diff --git a/src/real-numbers/positive-and-negative-real-numbers.lagda.md b/src/real-numbers/positive-and-negative-real-numbers.lagda.md index 18f7f33b894..b30852d3524 100644 --- a/src/real-numbers/positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/positive-and-negative-real-numbers.lagda.md @@ -11,6 +11,7 @@ module real-numbers.positive-and-negative-real-numbers where ```agda open import foundation.dependent-pair-types open import foundation.transport-along-identifications +open import foundation.logical-equivalences open import foundation.universe-levels open import real-numbers.dedekind-real-numbers @@ -78,6 +79,38 @@ neg-ℝ⁻ : {l : Level} → ℝ⁻ l → ℝ⁺ l neg-ℝ⁻ (x , is-neg-x) = (neg-ℝ x , neg-is-negative-ℝ x is-neg-x) ``` +### A real number is negative if and only if its negation is positive + +```agda +abstract + is-negative-is-positive-neg-ℝ : + {l : Level} (x : ℝ l) → is-positive-ℝ (neg-ℝ x) → is-negative-ℝ x + is-negative-is-positive-neg-ℝ x 0<-x = + tr is-negative-ℝ (neg-neg-ℝ x) (neg-is-positive-ℝ (neg-ℝ x) 0<-x) + +is-negative-iff-neg-is-positive-ℝ : + {l : Level} (x : ℝ l) → is-negative-ℝ x ↔ is-positive-ℝ (neg-ℝ x) +is-negative-iff-neg-is-positive-ℝ x = + ( neg-is-negative-ℝ x , + is-negative-is-positive-neg-ℝ x) +``` + +### A real number is positive if and only if its negation is negative + +```agda +abstract + is-positive-is-negative-neg-ℝ : + {l : Level} (x : ℝ l) → is-negative-ℝ (neg-ℝ x) → is-positive-ℝ x + is-positive-is-negative-neg-ℝ x -x<0 = + tr is-positive-ℝ (neg-neg-ℝ x) (neg-is-negative-ℝ (neg-ℝ x) -x<0) + +is-positive-iff-neg-is-negative-ℝ : + {l : Level} (x : ℝ l) → is-positive-ℝ x ↔ is-negative-ℝ (neg-ℝ x) +is-positive-iff-neg-is-negative-ℝ x = + ( neg-is-positive-ℝ x , + is-positive-is-negative-neg-ℝ x) +``` + ### If a nonnegative real number `x` is less than a real number `y`, `y` is positive ```agda From 3eaaa4620e0c17592c293ddec431901c66e82f74 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 16:42:52 -0800 Subject: [PATCH 090/134] The large ring of complex numbers --- .../addition-complex-numbers.lagda.md | 13 +++ ...additive-group-of-complex-numbers.lagda.md | 54 ----------- ...additive-group-of-complex-numbers.lagda.md | 90 +++++++++++++++++++ .../large-ring-of-complex-numbers.lagda.md | 48 ++++++++++ .../multiplication-complex-numbers.lagda.md | 61 +++++++++++++ ...g-universe-levels-complex-numbers.lagda.md | 44 +++++++++ .../similarity-complex-numbers.lagda.md | 90 +++++++++++++++++++ 7 files changed, 346 insertions(+), 54 deletions(-) delete mode 100644 src/complex-numbers/additive-group-of-complex-numbers.lagda.md create mode 100644 src/complex-numbers/large-additive-group-of-complex-numbers.lagda.md create mode 100644 src/complex-numbers/large-ring-of-complex-numbers.lagda.md create mode 100644 src/complex-numbers/raising-universe-levels-complex-numbers.lagda.md diff --git a/src/complex-numbers/addition-complex-numbers.lagda.md b/src/complex-numbers/addition-complex-numbers.lagda.md index 8b5dbbadd8f..63a33629054 100644 --- a/src/complex-numbers/addition-complex-numbers.lagda.md +++ b/src/complex-numbers/addition-complex-numbers.lagda.md @@ -91,3 +91,16 @@ abstract right-inverse-law-add-ℂ (a , b) = ( right-inverse-law-add-ℝ a , right-inverse-law-add-ℝ b) ``` + +### Similarity is preserved by addition + +```agda +abstract + preserves-sim-add-ℂ : + {l1 l2 l3 l4 : Level} {x : ℂ l1} {x' : ℂ l2} {y : ℂ l3} {y' : ℂ l4} → + sim-ℂ x x' → sim-ℂ y y' → sim-ℂ (x +ℂ y) (x' +ℂ y') + preserves-sim-add-ℂ + { x = a +iℂ b} {x' = a' +iℂ b'} {y = c +iℂ d} {y' = c' +iℂ d'} + ( a~a' , b~b') (c~c' , d~d') = + ( preserves-sim-add-ℝ a~a' c~c' , preserves-sim-add-ℝ b~b' d~d') +``` diff --git a/src/complex-numbers/additive-group-of-complex-numbers.lagda.md b/src/complex-numbers/additive-group-of-complex-numbers.lagda.md deleted file mode 100644 index 8c4dea6fd7e..00000000000 --- a/src/complex-numbers/additive-group-of-complex-numbers.lagda.md +++ /dev/null @@ -1,54 +0,0 @@ -# The additive group of complex numbers - -```agda -module complex-numbers.additive-group-of-complex-numbers where -``` - -
Imports - -```agda -open import complex-numbers.addition-complex-numbers -open import complex-numbers.complex-numbers -open import complex-numbers.similarity-complex-numbers - -open import foundation.dependent-pair-types -open import foundation.function-types -open import foundation.universe-levels - -open import group-theory.abelian-groups -open import group-theory.groups -open import group-theory.monoids -open import group-theory.semigroups -``` - -
- -## Idea - -The type of [complex numbers](complex-numbers.complex-numbers.md) equipped with -[addition](complex-numbers.addition-complex-numbers.md) is a -[commutative group](group-theory.abelian-groups.md) with unit `zero-ℂ` and -inverse given by `neg-ℂ`. - -## Definition - -```agda -semigroup-add-ℂ-lzero : Semigroup (lsuc lzero) -semigroup-add-ℂ-lzero = - ( ℂ-Set lzero , - add-ℂ , - associative-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-ℂ) - -ab-add-ℂ-lzero : Ab (lsuc lzero) -ab-add-ℂ-lzero = - ( group-add-ℂ-lzero , - commutative-add-ℂ) -``` diff --git a/src/complex-numbers/large-additive-group-of-complex-numbers.lagda.md b/src/complex-numbers/large-additive-group-of-complex-numbers.lagda.md new file mode 100644 index 00000000000..c2385a5e253 --- /dev/null +++ b/src/complex-numbers/large-additive-group-of-complex-numbers.lagda.md @@ -0,0 +1,90 @@ +# The large additive group of complex numbers + +```agda +module complex-numbers.large-additive-group-of-complex-numbers where +``` + +
Imports + +```agda +open import complex-numbers.addition-complex-numbers +open import complex-numbers.complex-numbers +open import complex-numbers.similarity-complex-numbers + +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.universe-levels +open import complex-numbers.raising-universe-levels-complex-numbers + +open import group-theory.large-semigroups +open import group-theory.large-monoids +open import group-theory.large-commutative-monoids +open import group-theory.large-groups +open import group-theory.large-abelian-groups +``` + +
+ +## Idea + +The type of [complex numbers](complex-numbers.complex-numbers.md) equipped with +[addition](complex-numbers.addition-complex-numbers.md) is a +[large abelian group](group-theory.large-abelian-groups.md). + +## Definition + +```agda +large-semigroup-add-ℂ : Large-Semigroup lsuc +large-semigroup-add-ℂ = + make-Large-Semigroup + ( ℂ-Set) + ( add-ℂ) + ( associative-add-ℂ) + +large-monoid-add-ℂ : Large-Monoid lsuc (_⊔_) +large-monoid-add-ℂ = + make-Large-Monoid + ( large-semigroup-add-ℂ) + ( large-similarity-relation-ℂ) + ( raise-ℂ) + ( sim-raise-ℂ) + ( λ _ _ z~z' _ _ → preserves-sim-add-ℂ z~z') + ( zero-ℂ) + ( left-unit-law-add-ℂ) + ( right-unit-law-add-ℂ) + +large-commutative-monoid-add-ℂ : Large-Commutative-Monoid lsuc (_⊔_) +large-commutative-monoid-add-ℂ = + make-Large-Commutative-Monoid + ( large-monoid-add-ℂ) + ( commutative-add-ℂ) + +large-group-add-ℂ : Large-Group lsuc (_⊔_) +large-group-add-ℂ = + make-Large-Group + ( large-monoid-add-ℂ) + ( neg-ℂ) + ( λ _ _ → preserves-sim-neg-ℂ) + ( λ x → + eq-sim-ℂ + ( transitive-sim-ℂ + ( neg-ℂ x +ℂ x) + ( zero-ℂ) + ( raise-ℂ _ zero-ℂ) + ( sim-raise-ℂ _ zero-ℂ) + ( left-inverse-law-add-ℂ x))) + ( λ x → + eq-sim-ℂ + ( transitive-sim-ℂ + ( x +ℂ neg-ℂ x) + ( zero-ℂ) + ( raise-ℂ _ zero-ℂ) + ( sim-raise-ℂ _ zero-ℂ) + ( right-inverse-law-add-ℂ x))) + +large-ab-add-ℂ : Large-Ab lsuc (_⊔_) +large-ab-add-ℂ = + make-Large-Ab + ( large-group-add-ℂ) + ( commutative-add-ℂ) +``` diff --git a/src/complex-numbers/large-ring-of-complex-numbers.lagda.md b/src/complex-numbers/large-ring-of-complex-numbers.lagda.md new file mode 100644 index 00000000000..4c38a6ec892 --- /dev/null +++ b/src/complex-numbers/large-ring-of-complex-numbers.lagda.md @@ -0,0 +1,48 @@ +# The large ring of complex numbers + +```agda +module complex-numbers.large-ring-of-complex-numbers where +``` + +
Imports + +```agda +open import ring-theory.large-rings +open import commutative-algebra.large-commutative-rings +open import complex-numbers.large-additive-group-of-complex-numbers +open import complex-numbers.complex-numbers +open import foundation.universe-levels +open import complex-numbers.multiplication-complex-numbers +``` + +
+ +## Idea + +The [complex numbers](complex-numbers.complex-numbers.md) form a +[large commutative ring](commutative-algebra.large-commutative-rings.md) under +[addition](complex-numbers.addition-complex-numbers.md) and +[multiplication](complex-numbers.multiplication-complex-numbers.md). + +## Definition + +```agda +large-ring-ℂ : Large-Ring lsuc (_⊔_) +large-ring-ℂ = + make-Large-Ring + ( large-ab-add-ℂ) + ( mul-ℂ) + ( λ _ _ z~z' _ _ → preserves-sim-mul-ℂ z~z') + ( one-ℂ) + ( associative-mul-ℂ) + ( left-unit-law-mul-ℂ) + ( right-unit-law-mul-ℂ) + ( left-distributive-mul-add-ℂ) + ( right-distributive-mul-add-ℂ) + +large-commutative-ring-ℂ : Large-Commutative-Ring lsuc (_⊔_) +large-commutative-ring-ℂ = + make-Large-Commutative-Ring + ( large-ring-ℂ) + ( commutative-mul-ℂ) +``` diff --git a/src/complex-numbers/multiplication-complex-numbers.lagda.md b/src/complex-numbers/multiplication-complex-numbers.lagda.md index 12598cc434b..098ba6f3280 100644 --- a/src/complex-numbers/multiplication-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplication-complex-numbers.lagda.md @@ -255,3 +255,64 @@ opaque = zero-ℝ by left-unit-law-add-ℝ zero-ℝ) ``` +<<<<<<< Updated upstream +======= + +### The canonical embedding of real numbers in the complex numbers preserves multiplication + +```agda +abstract + mul-complex-ℝ : + {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → + complex-ℝ x *ℂ complex-ℝ y = complex-ℝ (x *ℝ y) + mul-complex-ℝ {l1} {l2} x y = + eq-ℂ + ( equational-reasoning + x *ℝ y -ℝ raise-ℝ l1 zero-ℝ *ℝ raise-ℝ l2 zero-ℝ + = x *ℝ y -ℝ zero-ℝ *ℝ zero-ℝ + by + eq-sim-ℝ + ( preserves-sim-diff-ℝ + ( refl-sim-ℝ (x *ℝ y)) + ( symmetric-sim-ℝ + ( preserves-sim-mul-ℝ (sim-raise-ℝ _ _) (sim-raise-ℝ _ _)))) + = x *ℝ y -ℝ zero-ℝ + by ap-diff-ℝ refl (eq-sim-ℝ (right-zero-law-mul-ℝ _)) + = x *ℝ y + by right-unit-law-diff-ℝ (x *ℝ y)) + ( eq-sim-ℝ + ( similarity-reasoning-ℝ + x *ℝ raise-ℝ l2 zero-ℝ +ℝ raise-ℝ l1 zero-ℝ *ℝ y + ~ℝ x *ℝ zero-ℝ +ℝ zero-ℝ *ℝ y + by + symmetric-sim-ℝ + ( preserves-sim-add-ℝ + ( preserves-sim-left-mul-ℝ _ _ _ (sim-raise-ℝ l2 zero-ℝ)) + ( preserves-sim-right-mul-ℝ _ _ _ (sim-raise-ℝ l1 zero-ℝ))) + ~ℝ zero-ℝ +ℝ zero-ℝ + by + preserves-sim-add-ℝ + ( right-zero-law-mul-ℝ x) + ( left-zero-law-mul-ℝ y) + ~ℝ zero-ℝ + by sim-eq-ℝ (left-unit-law-add-ℝ zero-ℝ) + ~ℝ raise-ℝ (l1 ⊔ l2) zero-ℝ + by sim-raise-ℝ (l1 ⊔ l2) zero-ℝ)) +``` + +### Similarity is preserved by multiplication + +```agda +abstract + preserves-sim-mul-ℂ : + {l1 l2 l3 l4 : Level} {x : ℂ l1} {x' : ℂ l2} {y : ℂ l3} {y' : ℂ l4} → + sim-ℂ x x' → sim-ℂ y y' → sim-ℂ (x *ℂ y) (x' *ℂ y') + preserves-sim-mul-ℂ (a~a' , b~b') (c~c' , d~d') = + ( preserves-sim-diff-ℝ + ( preserves-sim-mul-ℝ a~a' c~c') + ( preserves-sim-mul-ℝ b~b' d~d') , + preserves-sim-add-ℝ + ( preserves-sim-mul-ℝ a~a' d~d') + ( preserves-sim-mul-ℝ b~b' c~c')) +``` +>>>>>>> Stashed changes diff --git a/src/complex-numbers/raising-universe-levels-complex-numbers.lagda.md b/src/complex-numbers/raising-universe-levels-complex-numbers.lagda.md new file mode 100644 index 00000000000..2ad31cb0190 --- /dev/null +++ b/src/complex-numbers/raising-universe-levels-complex-numbers.lagda.md @@ -0,0 +1,44 @@ +# Raising the universe level of complex numbers + +```agda +module complex-numbers.raising-universe-levels-complex-numbers where +``` + +
Imports + +```agda +open import complex-numbers.complex-numbers +open import real-numbers.raising-universe-levels-real-numbers +open import foundation.dependent-pair-types +open import complex-numbers.similarity-complex-numbers +open import foundation.universe-levels +``` + +
+ +## Idea + +For every [universe](foundation.universe-levels.md) `𝒰` there is a type of +[complex numbers](complex-numbers.complex-numbers.md) `ℂ` relative to `𝒰`, +`ℂ 𝒰`. Given a larger universe `𝒱`, then we may +{{#concept "raise" Disambiguation="a complex number" Agda=raise-ℂ}} a complex +number `z` from the universe `𝒰` to a +[similar](complex-numbers.similarity-complex-numbers.md) complex number in the +universe `𝒱`. + +## Definition + +```agda +raise-ℂ : {l1 : Level} (l2 : Level) → ℂ l1 → ℂ (l1 ⊔ l2) +raise-ℂ l (a +iℂ b) = raise-ℝ l a +iℂ raise-ℝ l b +``` + +## Properties + +### Complex numbers are similar to their raised-universe equivalents + +```agda +abstract + sim-raise-ℂ : {l1 : Level} (l2 : Level) (z : ℂ l1) → sim-ℂ z (raise-ℂ l2 z) + sim-raise-ℂ l (a +iℂ b) = ( sim-raise-ℝ l a , sim-raise-ℝ l b) +``` diff --git a/src/complex-numbers/similarity-complex-numbers.lagda.md b/src/complex-numbers/similarity-complex-numbers.lagda.md index 2874755ca84..84294023d61 100644 --- a/src/complex-numbers/similarity-complex-numbers.lagda.md +++ b/src/complex-numbers/similarity-complex-numbers.lagda.md @@ -11,10 +11,19 @@ open import complex-numbers.complex-numbers open import foundation.conjunction open import foundation.dependent-pair-types +open import foundation.large-equivalence-relations +open import foundation.large-similarity-relations open import foundation.identity-types open import foundation.propositions open import foundation.universe-levels +<<<<<<< Updated upstream +======= +open import real-numbers.dedekind-real-numbers +open import real-numbers.raising-universe-levels-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.rational-real-numbers +>>>>>>> Stashed changes open import real-numbers.similarity-real-numbers ``` @@ -74,3 +83,84 @@ abstract eq-sim-ℂ : {l : Level} {x y : ℂ l} → sim-ℂ x y → x = y eq-sim-ℂ (a~c , b~d) = eq-ℂ (eq-sim-ℝ a~c) (eq-sim-ℝ b~d) ``` +<<<<<<< Updated upstream +======= + +### Similarity is a large equivalence relation + +```agda +large-equivalence-relation-sim-ℂ : Large-Equivalence-Relation (_⊔_) ℂ +large-equivalence-relation-sim-ℂ = + make-Large-Equivalence-Relation + ( sim-prop-ℂ) + ( refl-sim-ℂ) + ( λ _ _ → symmetric-sim-ℂ) + ( transitive-sim-ℂ) +``` + +### Similarity is a large similarity relation + +```agda +large-similarity-relation-ℂ : Large-Similarity-Relation (_⊔_) ℂ +large-similarity-relation-ℂ = + make-Large-Similarity-Relation + ( large-equivalence-relation-sim-ℂ) + ( λ _ _ → eq-sim-ℂ) +``` + +### The canonical embedding of real numbers in the complex numbers preserves similarity + +```agda +abstract + preserves-sim-complex-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → sim-ℝ x y → + sim-ℂ (complex-ℝ x) (complex-ℝ y) + preserves-sim-complex-ℝ {l1} {l2} x~y = + ( x~y , + transitive-sim-ℝ + ( raise-ℝ l1 zero-ℝ) + ( zero-ℝ) + ( raise-ℝ l2 zero-ℝ) + ( sim-raise-ℝ l2 zero-ℝ) + ( symmetric-sim-ℝ (sim-raise-ℝ l1 zero-ℝ))) +``` + +### Similarity is preserved by negation + +```agda +abstract + preserves-sim-neg-ℂ : + {l1 l2 : Level} {x : ℂ l1} {y : ℂ l2} → + sim-ℂ x y → sim-ℂ (neg-ℂ x) (neg-ℂ y) + preserves-sim-neg-ℂ (a~c , b~d) = + ( preserves-sim-neg-ℝ a~c , preserves-sim-neg-ℝ b~d) +``` + +### Similarity reasoning + +Similarities between complex numbers can be constructed by similarity reasoning +in the following way: + +```text +similarity-reasoning-ℂ + x ~ℂ y by sim-1 + ~ℂ z by sim-2 +``` + +```agda +infixl 1 similarity-reasoning-ℂ_ +infixl 0 step-similarity-reasoning-ℂ + +abstract + similarity-reasoning-ℂ_ : + {l : Level} → (x : ℂ l) → sim-ℂ x x + 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 q p + + syntax step-similarity-reasoning-ℂ p u q = p ~ℂ u by q +``` +>>>>>>> Stashed changes From 53c47f3b41fafa3d0e40899fb0ef36e0e1f3a2c6 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 16:49:55 -0800 Subject: [PATCH 091/134] Large ring of complex numbers --- src/complex-numbers.lagda.md | 4 +- .../addition-complex-numbers.lagda.md | 4 +- src/complex-numbers/complex-numbers.lagda.md | 2 + ...additive-group-of-complex-numbers.lagda.md | 18 +++++-- .../large-ring-of-complex-numbers.lagda.md | 20 +++++-- .../multiplication-complex-numbers.lagda.md | 53 ++----------------- ...g-universe-levels-complex-numbers.lagda.md | 6 ++- .../similarity-complex-numbers.lagda.md | 12 ++--- 8 files changed, 49 insertions(+), 70 deletions(-) diff --git a/src/complex-numbers.lagda.md b/src/complex-numbers.lagda.md index 70b0af5ab4d..56fb233cc1d 100644 --- a/src/complex-numbers.lagda.md +++ b/src/complex-numbers.lagda.md @@ -4,11 +4,13 @@ module complex-numbers where open import complex-numbers.addition-complex-numbers public -open import complex-numbers.additive-group-of-complex-numbers public open import complex-numbers.complex-numbers public open import complex-numbers.eisenstein-integers public open import complex-numbers.gaussian-integers public +open import complex-numbers.large-additive-group-of-complex-numbers public +open import complex-numbers.large-ring-of-complex-numbers public open import complex-numbers.multiplication-complex-numbers public +open import complex-numbers.raising-universe-levels-complex-numbers public open import complex-numbers.ring-of-complex-numbers public open import complex-numbers.similarity-complex-numbers public ``` diff --git a/src/complex-numbers/addition-complex-numbers.lagda.md b/src/complex-numbers/addition-complex-numbers.lagda.md index 63a33629054..904501938cf 100644 --- a/src/complex-numbers/addition-complex-numbers.lagda.md +++ b/src/complex-numbers/addition-complex-numbers.lagda.md @@ -99,8 +99,6 @@ abstract preserves-sim-add-ℂ : {l1 l2 l3 l4 : Level} {x : ℂ l1} {x' : ℂ l2} {y : ℂ l3} {y' : ℂ l4} → sim-ℂ x x' → sim-ℂ y y' → sim-ℂ (x +ℂ y) (x' +ℂ y') - preserves-sim-add-ℂ - { x = a +iℂ b} {x' = a' +iℂ b'} {y = c +iℂ d} {y' = c' +iℂ d'} - ( a~a' , b~b') (c~c' , d~d') = + preserves-sim-add-ℂ (a~a' , b~b') (c~c' , d~d') = ( preserves-sim-add-ℝ a~a' c~c' , preserves-sim-add-ℝ b~b' d~d') ``` diff --git a/src/complex-numbers/complex-numbers.lagda.md b/src/complex-numbers/complex-numbers.lagda.md index ec8571f0de9..450fdc6bc9e 100644 --- a/src/complex-numbers/complex-numbers.lagda.md +++ b/src/complex-numbers/complex-numbers.lagda.md @@ -43,6 +43,8 @@ re-ℂ = pr1 im-ℂ : {l : Level} → ℂ l → ℝ l im-ℂ = pr2 + +pattern _+iℂ_ a b = (a , b) ``` ## Properties diff --git a/src/complex-numbers/large-additive-group-of-complex-numbers.lagda.md b/src/complex-numbers/large-additive-group-of-complex-numbers.lagda.md index c2385a5e253..a356e7a35a9 100644 --- a/src/complex-numbers/large-additive-group-of-complex-numbers.lagda.md +++ b/src/complex-numbers/large-additive-group-of-complex-numbers.lagda.md @@ -9,18 +9,19 @@ module complex-numbers.large-additive-group-of-complex-numbers where ```agda open import complex-numbers.addition-complex-numbers open import complex-numbers.complex-numbers +open import complex-numbers.raising-universe-levels-complex-numbers open import complex-numbers.similarity-complex-numbers open import foundation.dependent-pair-types open import foundation.function-types open import foundation.universe-levels -open import complex-numbers.raising-universe-levels-complex-numbers -open import group-theory.large-semigroups -open import group-theory.large-monoids +open import group-theory.abelian-groups +open import group-theory.large-abelian-groups open import group-theory.large-commutative-monoids open import group-theory.large-groups -open import group-theory.large-abelian-groups +open import group-theory.large-monoids +open import group-theory.large-semigroups ```
@@ -88,3 +89,12 @@ large-ab-add-ℂ = ( large-group-add-ℂ) ( commutative-add-ℂ) ``` + +## Properties + +### The small abelian group of complex numbers at a universe level + +```agda +ab-add-ℂ : (l : Level) → Ab (lsuc l) +ab-add-ℂ = ab-Large-Ab large-ab-add-ℂ +``` diff --git a/src/complex-numbers/large-ring-of-complex-numbers.lagda.md b/src/complex-numbers/large-ring-of-complex-numbers.lagda.md index 4c38a6ec892..f2d23c8f889 100644 --- a/src/complex-numbers/large-ring-of-complex-numbers.lagda.md +++ b/src/complex-numbers/large-ring-of-complex-numbers.lagda.md @@ -7,12 +7,16 @@ module complex-numbers.large-ring-of-complex-numbers where
Imports ```agda -open import ring-theory.large-rings +open import commutative-algebra.commutative-rings open import commutative-algebra.large-commutative-rings -open import complex-numbers.large-additive-group-of-complex-numbers + open import complex-numbers.complex-numbers -open import foundation.universe-levels +open import complex-numbers.large-additive-group-of-complex-numbers open import complex-numbers.multiplication-complex-numbers + +open import foundation.universe-levels + +open import ring-theory.large-rings ```
@@ -46,3 +50,13 @@ large-commutative-ring-ℂ = ( large-ring-ℂ) ( commutative-mul-ℂ) ``` + +## Properties + +### The small commutative ring of complex numbers at a universe level + +```agda +commutative-ring-ℂ : (l : Level) → Commutative-Ring (lsuc l) +commutative-ring-ℂ = + commutative-ring-Large-Commutative-Ring large-commutative-ring-ℂ +``` diff --git a/src/complex-numbers/multiplication-complex-numbers.lagda.md b/src/complex-numbers/multiplication-complex-numbers.lagda.md index 098ba6f3280..0617bb9d9bf 100644 --- a/src/complex-numbers/multiplication-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplication-complex-numbers.lagda.md @@ -255,50 +255,6 @@ opaque = zero-ℝ by left-unit-law-add-ℝ zero-ℝ) ``` -<<<<<<< Updated upstream -======= - -### The canonical embedding of real numbers in the complex numbers preserves multiplication - -```agda -abstract - mul-complex-ℝ : - {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) → - complex-ℝ x *ℂ complex-ℝ y = complex-ℝ (x *ℝ y) - mul-complex-ℝ {l1} {l2} x y = - eq-ℂ - ( equational-reasoning - x *ℝ y -ℝ raise-ℝ l1 zero-ℝ *ℝ raise-ℝ l2 zero-ℝ - = x *ℝ y -ℝ zero-ℝ *ℝ zero-ℝ - by - eq-sim-ℝ - ( preserves-sim-diff-ℝ - ( refl-sim-ℝ (x *ℝ y)) - ( symmetric-sim-ℝ - ( preserves-sim-mul-ℝ (sim-raise-ℝ _ _) (sim-raise-ℝ _ _)))) - = x *ℝ y -ℝ zero-ℝ - by ap-diff-ℝ refl (eq-sim-ℝ (right-zero-law-mul-ℝ _)) - = x *ℝ y - by right-unit-law-diff-ℝ (x *ℝ y)) - ( eq-sim-ℝ - ( similarity-reasoning-ℝ - x *ℝ raise-ℝ l2 zero-ℝ +ℝ raise-ℝ l1 zero-ℝ *ℝ y - ~ℝ x *ℝ zero-ℝ +ℝ zero-ℝ *ℝ y - by - symmetric-sim-ℝ - ( preserves-sim-add-ℝ - ( preserves-sim-left-mul-ℝ _ _ _ (sim-raise-ℝ l2 zero-ℝ)) - ( preserves-sim-right-mul-ℝ _ _ _ (sim-raise-ℝ l1 zero-ℝ))) - ~ℝ zero-ℝ +ℝ zero-ℝ - by - preserves-sim-add-ℝ - ( right-zero-law-mul-ℝ x) - ( left-zero-law-mul-ℝ y) - ~ℝ zero-ℝ - by sim-eq-ℝ (left-unit-law-add-ℝ zero-ℝ) - ~ℝ raise-ℝ (l1 ⊔ l2) zero-ℝ - by sim-raise-ℝ (l1 ⊔ l2) zero-ℝ)) -``` ### Similarity is preserved by multiplication @@ -309,10 +265,9 @@ abstract sim-ℂ x x' → sim-ℂ y y' → sim-ℂ (x *ℂ y) (x' *ℂ y') preserves-sim-mul-ℂ (a~a' , b~b') (c~c' , d~d') = ( preserves-sim-diff-ℝ - ( preserves-sim-mul-ℝ a~a' c~c') - ( preserves-sim-mul-ℝ b~b' d~d') , + ( preserves-sim-mul-ℝ _ _ a~a' _ _ c~c') + ( preserves-sim-mul-ℝ _ _ b~b' _ _ d~d') , preserves-sim-add-ℝ - ( preserves-sim-mul-ℝ a~a' d~d') - ( preserves-sim-mul-ℝ b~b' c~c')) + ( preserves-sim-mul-ℝ _ _ a~a' _ _ d~d') + ( preserves-sim-mul-ℝ _ _ b~b' _ _ c~c')) ``` ->>>>>>> Stashed changes diff --git a/src/complex-numbers/raising-universe-levels-complex-numbers.lagda.md b/src/complex-numbers/raising-universe-levels-complex-numbers.lagda.md index 2ad31cb0190..7f1a217b26a 100644 --- a/src/complex-numbers/raising-universe-levels-complex-numbers.lagda.md +++ b/src/complex-numbers/raising-universe-levels-complex-numbers.lagda.md @@ -8,10 +8,12 @@ module complex-numbers.raising-universe-levels-complex-numbers where ```agda open import complex-numbers.complex-numbers -open import real-numbers.raising-universe-levels-real-numbers -open import foundation.dependent-pair-types open import complex-numbers.similarity-complex-numbers + +open import foundation.dependent-pair-types open import foundation.universe-levels + +open import real-numbers.raising-universe-levels-real-numbers ```
diff --git a/src/complex-numbers/similarity-complex-numbers.lagda.md b/src/complex-numbers/similarity-complex-numbers.lagda.md index 84294023d61..868b61570ff 100644 --- a/src/complex-numbers/similarity-complex-numbers.lagda.md +++ b/src/complex-numbers/similarity-complex-numbers.lagda.md @@ -11,19 +11,16 @@ open import complex-numbers.complex-numbers open import foundation.conjunction open import foundation.dependent-pair-types +open import foundation.identity-types open import foundation.large-equivalence-relations open import foundation.large-similarity-relations -open import foundation.identity-types open import foundation.propositions open import foundation.universe-levels -<<<<<<< Updated upstream -======= open import real-numbers.dedekind-real-numbers -open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.negation-real-numbers +open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers ->>>>>>> Stashed changes open import real-numbers.similarity-real-numbers ``` @@ -83,8 +80,6 @@ abstract eq-sim-ℂ : {l : Level} {x y : ℂ l} → sim-ℂ x y → x = y eq-sim-ℂ (a~c , b~d) = eq-ℂ (eq-sim-ℝ a~c) (eq-sim-ℝ b~d) ``` -<<<<<<< Updated upstream -======= ### Similarity is a large equivalence relation @@ -163,4 +158,5 @@ abstract syntax step-similarity-reasoning-ℂ p u q = p ~ℂ u by q ``` ->>>>>>> Stashed changes + +> > > > > > > Stashed changes From 6b6689aa074ed678251d3afa6f76352d64e77326 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 16:55:07 -0800 Subject: [PATCH 092/134] Correct merge --- src/real-numbers/apartness-real-numbers.lagda.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index 5e22dd53385..47a55ed6a55 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -7,11 +7,10 @@ module real-numbers.apartness-real-numbers where
Imports ```agda +open import foundation.apartness-relations open import foundation.binary-relations open import foundation.binary-transport open import foundation.dependent-pair-types -open import foundation.apartness-relations -open import foundation.binary-transport open import foundation.disjunction open import foundation.empty-types open import foundation.function-types @@ -39,10 +38,6 @@ open import real-numbers.negation-real-numbers open import real-numbers.nonzero-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.absolute-value-real-numbers -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.similarity-real-numbers open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers From 99a530bedf8292c702dbb2033d48c47e6e73ea48 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 16:57:50 -0800 Subject: [PATCH 093/134] Fix --- .../multiplication-complex-numbers.lagda.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/complex-numbers/multiplication-complex-numbers.lagda.md b/src/complex-numbers/multiplication-complex-numbers.lagda.md index 0617bb9d9bf..fcef6b3b346 100644 --- a/src/complex-numbers/multiplication-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplication-complex-numbers.lagda.md @@ -265,9 +265,9 @@ abstract sim-ℂ x x' → sim-ℂ y y' → sim-ℂ (x *ℂ y) (x' *ℂ y') preserves-sim-mul-ℂ (a~a' , b~b') (c~c' , d~d') = ( preserves-sim-diff-ℝ - ( preserves-sim-mul-ℝ _ _ a~a' _ _ c~c') - ( preserves-sim-mul-ℝ _ _ b~b' _ _ d~d') , + ( preserves-sim-mul-ℝ a~a' c~c') + ( preserves-sim-mul-ℝ b~b' d~d') , preserves-sim-add-ℝ - ( preserves-sim-mul-ℝ _ _ a~a' _ _ d~d') - ( preserves-sim-mul-ℝ _ _ b~b' _ _ c~c')) + ( preserves-sim-mul-ℝ a~a' d~d') + ( preserves-sim-mul-ℝ b~b' c~c')) ``` From 1d02a41575c0da6681c41ab3c7934e6dfe7bd267 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 17:02:04 -0800 Subject: [PATCH 094/134] Progress --- .../real-vector-spaces.lagda.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/linear-algebra/real-vector-spaces.lagda.md diff --git a/src/linear-algebra/real-vector-spaces.lagda.md b/src/linear-algebra/real-vector-spaces.lagda.md new file mode 100644 index 00000000000..ab72ab74bd5 --- /dev/null +++ b/src/linear-algebra/real-vector-spaces.lagda.md @@ -0,0 +1,22 @@ +# Real vector spaces + +```agda +module linear-algebra.real-vector-spaces where +``` + +
Imports + +```agda +open import real-numbers.local-ring-of-real-numbers +open import linear-algebra.vector-spaces +open import foundation.universe-levels +``` + +
+ +## Idea + +```agda +ℝ-Vector-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +ℝ-Vector-Space l1 l2 = Vector-Space l2 (local-commutative-ring-ℝ l1) +``` From b9dc6daacc24df48827683d387cc5d8674dccb5c Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 17:03:37 -0800 Subject: [PATCH 095/134] Delete small ring of complex numbers from separate file --- src/complex-numbers.lagda.md | 1 - .../ring-of-complex-numbers.lagda.md | 47 ------------------- 2 files changed, 48 deletions(-) delete mode 100644 src/complex-numbers/ring-of-complex-numbers.lagda.md diff --git a/src/complex-numbers.lagda.md b/src/complex-numbers.lagda.md index 56fb233cc1d..647fd88a7dd 100644 --- a/src/complex-numbers.lagda.md +++ b/src/complex-numbers.lagda.md @@ -11,6 +11,5 @@ open import complex-numbers.large-additive-group-of-complex-numbers public open import complex-numbers.large-ring-of-complex-numbers public open import complex-numbers.multiplication-complex-numbers public open import complex-numbers.raising-universe-levels-complex-numbers public -open import complex-numbers.ring-of-complex-numbers public open import complex-numbers.similarity-complex-numbers public ``` diff --git a/src/complex-numbers/ring-of-complex-numbers.lagda.md b/src/complex-numbers/ring-of-complex-numbers.lagda.md deleted file mode 100644 index 6b319d6c776..00000000000 --- a/src/complex-numbers/ring-of-complex-numbers.lagda.md +++ /dev/null @@ -1,47 +0,0 @@ -# The ring of complex numbers - -```agda -module complex-numbers.ring-of-complex-numbers where -``` - -
Imports - -```agda -open import commutative-algebra.commutative-rings - -open import complex-numbers.additive-group-of-complex-numbers -open import complex-numbers.complex-numbers -open import complex-numbers.multiplication-complex-numbers - -open import foundation.dependent-pair-types -open import foundation.function-types -open import foundation.universe-levels - -open import ring-theory.rings -``` - -
- -## Idea - -The type of [complex numbers](complex-numbers.complex-numbers.md) equipped with -[multiplication](complex-numbers.multiplication-complex-numbers.md) and -[addition](complex-numbers.addition-complex-numbers.md) is a -[commutative ring](commutative-algebra.commutative-rings.md). - -## Definition - -```agda -ring-ℂ-lzero : Ring (lsuc lzero) -ring-ℂ-lzero = - ( ab-add-ℂ-lzero , - ( mul-ℂ , associative-mul-ℂ) , - ( one-ℂ , left-unit-law-mul-ℂ , right-unit-law-mul-ℂ) , - left-distributive-mul-add-ℂ , - right-distributive-mul-add-ℂ) - -commutative-ring-ℂ-lzero : Commutative-Ring (lsuc lzero) -commutative-ring-ℂ-lzero = - ( ring-ℂ-lzero , - commutative-mul-ℂ) -``` From cac562e7e3e3bad1474e90e09faa57993cea33e1 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 17:06:38 -0800 Subject: [PATCH 096/134] Fix merge --- .../nonzero-real-numbers.lagda.md | 30 +------------------ 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/src/real-numbers/nonzero-real-numbers.lagda.md b/src/real-numbers/nonzero-real-numbers.lagda.md index 63f9fa0272a..6c785656b35 100644 --- a/src/real-numbers/nonzero-real-numbers.lagda.md +++ b/src/real-numbers/nonzero-real-numbers.lagda.md @@ -29,7 +29,7 @@ open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.strict-inequalities-addition-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -97,34 +97,6 @@ eq-nonzero-ℝ : eq-nonzero-ℝ _ _ = eq-type-subtype is-nonzero-prop-ℝ ``` -### Two real numbers are apart if and only if their difference is nonzero - -```agda -module _ - {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) - where - - abstract - is-nonzero-diff-is-apart-ℝ : apart-ℝ x y → is-nonzero-ℝ (x -ℝ y) - is-nonzero-diff-is-apart-ℝ x#y = - apart-right-sim-ℝ - ( x -ℝ y) - ( y -ℝ y) - ( zero-ℝ) - ( right-inverse-law-add-ℝ y) - ( preserves-apart-right-add-ℝ (neg-ℝ y) x y x#y) - - is-apart-is-nonzero-diff-ℝ : is-nonzero-ℝ (x -ℝ y) → apart-ℝ x y - is-apart-is-nonzero-diff-ℝ x-y#0 = - apart-sim-ℝ - ( cancel-right-diff-add-ℝ x y) - ( sim-eq-ℝ (left-unit-law-add-ℝ y)) - ( preserves-apart-right-add-ℝ y _ _ x-y#0) - - nonzero-diff-apart-ℝ : apart-ℝ x y → nonzero-ℝ (l1 ⊔ l2) - nonzero-diff-apart-ℝ x#y = (x -ℝ y , is-nonzero-diff-is-apart-ℝ x#y) -``` - ### The nonzero difference of a pair of real numbers `x` and `y` such that `x < y` ```agda From ed80b13e86774c930b14956c05f70ebb7bd21662 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 17:09:28 -0800 Subject: [PATCH 097/134] Fix table --- docs/tables/rings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tables/rings.md b/docs/tables/rings.md index f9721cae161..4de30be6964 100644 --- a/docs/tables/rings.md +++ b/docs/tables/rings.md @@ -1,6 +1,6 @@ | Ring | File | | ------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| Complex numbers | [`complex-numbers.ring-of-complex-numbers`](complex-numbers.ring-of-complex-numbers.md) | +| Complex numbers | [`complex-numbers.large-ring-of-complex-numbers`](complex-numbers.large-ring-of-complex-numbers.md) | | Eisenstein integers | [`complex-numbers.eisenstein-integers`](complex-numbers.eisenstein-integers.md) | | Endomorphism ring of an abelian group | [`group-theory.endomorphism-rings-abelian-groups`](group-theory.endomorphism-rings-abelian-groups.md) | | Gaussian integers | [`complex-numbers.gaussian-integers`](complex-numbers.gaussian-integers.md) | From 15cab2640bc639e1160c20d25f16c4fe0c9456b5 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 17:12:51 -0800 Subject: [PATCH 098/134] make pre-commit --- ...ive-and-negative-rational-numbers.lagda.md | 2 +- .../apartness-real-numbers.lagda.md | 7 +----- ...ositive-and-negative-real-numbers.lagda.md | 22 ++++++++++--------- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md index fd865252b7f..1c3ee2661d6 100644 --- a/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md @@ -18,10 +18,10 @@ open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import foundation.cartesian-product-types -open import foundation.functoriality-coproduct-types open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.empty-types +open import foundation.functoriality-coproduct-types open import foundation.identity-types open import foundation.transport-along-identifications ``` diff --git a/src/real-numbers/apartness-real-numbers.lagda.md b/src/real-numbers/apartness-real-numbers.lagda.md index b7a7e0ec2db..5529df3497e 100644 --- a/src/real-numbers/apartness-real-numbers.lagda.md +++ b/src/real-numbers/apartness-real-numbers.lagda.md @@ -7,11 +7,10 @@ module real-numbers.apartness-real-numbers where
Imports ```agda +open import foundation.apartness-relations open import foundation.binary-relations open import foundation.binary-transport open import foundation.dependent-pair-types -open import foundation.apartness-relations -open import foundation.binary-transport open import foundation.disjunction open import foundation.empty-types open import foundation.function-types @@ -39,10 +38,6 @@ open import real-numbers.negation-real-numbers open import real-numbers.nonzero-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.absolute-value-real-numbers -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.similarity-real-numbers open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers open import real-numbers.strict-inequality-real-numbers diff --git a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md index 12ada068a8c..0e27864d68e 100644 --- a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md @@ -7,20 +7,22 @@ module real-numbers.multiplication-positive-and-negative-real-numbers where
Imports ```agda -open import foundation.dependent-pair-types -open import foundation.transport-along-identifications -open import foundation.disjunction -open import foundation.coproduct-types -open import elementary-number-theory.multiplication-rational-numbers -open import elementary-number-theory.minimum-rational-numbers -open import foundation.conjunction -open import order-theory.posets open import elementary-number-theory.inequality-rational-numbers -open import foundation.propositional-truncations +open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-closed-intervals-rational-numbers +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.conjunction +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.propositional-truncations +open import foundation.transport-along-identifications open import foundation.universe-levels -open import elementary-number-theory.positive-rational-numbers + +open import order-theory.posets open import real-numbers.dedekind-real-numbers open import real-numbers.multiplication-positive-real-numbers From 46e57a4bb902a69133befa02d26621fdd3080aee Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 17:33:27 -0800 Subject: [PATCH 099/134] Progress --- ...closed-intervals-rational-numbers.lagda.md | 79 +++++++++++++++++++ ...ositive-and-negative-real-numbers.lagda.md | 73 +++++++++++------ 2 files changed, 126 insertions(+), 26 deletions(-) diff --git a/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md index 698a8adb827..7b985554ddd 100644 --- a/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md @@ -34,12 +34,14 @@ open import elementary-number-theory.multiplicative-monoid-of-rational-numbers open import elementary-number-theory.negation-closed-intervals-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers open import elementary-number-theory.poset-closed-intervals-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.proper-closed-intervals-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.squares-rational-numbers +open import foundation.functoriality-coproduct-types open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-binary-functions @@ -54,6 +56,7 @@ open import foundation.function-extensionality open import foundation.function-types open import foundation.identity-types open import foundation.images-subtypes +open import foundation.coproduct-types open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.propositions @@ -1287,3 +1290,79 @@ abstract ( neg-ℚ⁰⁺ (nonnegative-square-ℚ q)) ( nonnegative-square-ℚ q)) ``` + +### If the lower bound of the product of `[a, b]` and `[c, d]` is positive, then `a`, `b`, `c`, and `d` are all positive or all negative + +```agda +abstract + same-sign-bounds-is-positive-lower-bound-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + is-positive-ℚ (lower-bound-mul-closed-interval-ℚ [a,b] [c,d]) → + ( ( is-negative-ℚ (lower-bound-closed-interval-ℚ [a,b]) × + is-negative-ℚ (upper-bound-closed-interval-ℚ [a,b]) × + is-negative-ℚ (lower-bound-closed-interval-ℚ [c,d]) × + is-negative-ℚ (upper-bound-closed-interval-ℚ [c,d])) + + ( is-positive-ℚ (lower-bound-closed-interval-ℚ [a,b]) × + is-positive-ℚ (upper-bound-closed-interval-ℚ [a,b]) × + is-positive-ℚ (lower-bound-closed-interval-ℚ [c,d]) × + is-positive-ℚ (upper-bound-closed-interval-ℚ [c,d]))) + same-sign-bounds-is-positive-lower-bound-mul-closed-interval-ℚ + [a,b]@((a , b) , _) [c,d]@((c , d) , _) is-pos-lb = + let + same-sign-a-c = + same-sign-is-positive-mul-ℚ + ( is-positive-leq-ℚ⁺ + ( _ , is-pos-lb) + ( transitive-leq-ℚ _ _ _ (leq-left-min-ℚ _ _) (leq-left-min-ℚ _ _))) + same-sign-a-d = + same-sign-is-positive-mul-ℚ + ( is-positive-leq-ℚ⁺ + ( _ , is-pos-lb) + ( transitive-leq-ℚ _ _ _ + ( leq-right-min-ℚ _ _) + ( leq-left-min-ℚ _ _))) + same-sign-b-d = + same-sign-is-positive-mul-ℚ + ( is-positive-leq-ℚ⁺ + ( _ , is-pos-lb) + ( transitive-leq-ℚ _ _ _ + ( leq-right-min-ℚ _ _) + ( leq-right-min-ℚ _ _))) + in + map-coproduct + ( λ (is-neg-a , is-neg-c) → + let + is-neg-d = + rec-coproduct + ( pr2) + ( λ (is-pos-a , _) → + ex-falso + ( is-not-negative-and-positive-ℚ (is-neg-a , is-pos-a))) + ( same-sign-a-d) + is-neg-b = + rec-coproduct + ( pr1) + ( λ (_ , is-pos-d) → + ex-falso + ( is-not-negative-and-positive-ℚ (is-neg-d , is-pos-d))) + ( same-sign-b-d) + in (is-neg-a , is-neg-b , is-neg-c , is-neg-d)) + ( λ (is-pos-a , is-pos-c) → + let + is-pos-d = + rec-coproduct + ( λ (is-neg-a , _) → + ex-falso + ( is-not-negative-and-positive-ℚ (is-neg-a , is-pos-a))) + ( pr2) + ( same-sign-a-d) + is-pos-b = + rec-coproduct + ( λ (_ , is-neg-d) → + ex-falso + ( is-not-negative-and-positive-ℚ (is-neg-d , is-pos-d))) + ( pr1) + ( same-sign-b-d) + in (is-pos-a , is-pos-b , is-pos-c , is-pos-d)) + ( same-sign-a-c) +``` diff --git a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md index 0e27864d68e..f1b15142b40 100644 --- a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md @@ -1,6 +1,8 @@ # Multiplication by positive, negative, and nonnegative real numbers ```agda +{-# OPTIONS --lossy-unification #-} + module real-numbers.multiplication-positive-and-negative-real-numbers where ``` @@ -18,9 +20,11 @@ open import foundation.conjunction open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.disjunction +open import foundation.functoriality-disjunction open import foundation.propositional-truncations open import foundation.transport-along-identifications open import foundation.universe-levels +open import foundation.existential-quantification open import order-theory.posets @@ -29,6 +33,7 @@ open import real-numbers.multiplication-positive-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.negative-real-numbers open import real-numbers.positive-real-numbers +open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.strict-inequality-real-numbers ``` @@ -108,31 +113,47 @@ abstract opaque ( ( ax Date: Mon, 10 Nov 2025 17:33:58 -0800 Subject: [PATCH 100/134] Progress --- ...ositive-and-negative-real-numbers.lagda.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/real-numbers/positive-and-negative-real-numbers.lagda.md b/src/real-numbers/positive-and-negative-real-numbers.lagda.md index 18f7f33b894..b30852d3524 100644 --- a/src/real-numbers/positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/positive-and-negative-real-numbers.lagda.md @@ -11,6 +11,7 @@ module real-numbers.positive-and-negative-real-numbers where ```agda open import foundation.dependent-pair-types open import foundation.transport-along-identifications +open import foundation.logical-equivalences open import foundation.universe-levels open import real-numbers.dedekind-real-numbers @@ -78,6 +79,38 @@ neg-ℝ⁻ : {l : Level} → ℝ⁻ l → ℝ⁺ l neg-ℝ⁻ (x , is-neg-x) = (neg-ℝ x , neg-is-negative-ℝ x is-neg-x) ``` +### A real number is negative if and only if its negation is positive + +```agda +abstract + is-negative-is-positive-neg-ℝ : + {l : Level} (x : ℝ l) → is-positive-ℝ (neg-ℝ x) → is-negative-ℝ x + is-negative-is-positive-neg-ℝ x 0<-x = + tr is-negative-ℝ (neg-neg-ℝ x) (neg-is-positive-ℝ (neg-ℝ x) 0<-x) + +is-negative-iff-neg-is-positive-ℝ : + {l : Level} (x : ℝ l) → is-negative-ℝ x ↔ is-positive-ℝ (neg-ℝ x) +is-negative-iff-neg-is-positive-ℝ x = + ( neg-is-negative-ℝ x , + is-negative-is-positive-neg-ℝ x) +``` + +### A real number is positive if and only if its negation is negative + +```agda +abstract + is-positive-is-negative-neg-ℝ : + {l : Level} (x : ℝ l) → is-negative-ℝ (neg-ℝ x) → is-positive-ℝ x + is-positive-is-negative-neg-ℝ x -x<0 = + tr is-positive-ℝ (neg-neg-ℝ x) (neg-is-negative-ℝ (neg-ℝ x) -x<0) + +is-positive-iff-neg-is-negative-ℝ : + {l : Level} (x : ℝ l) → is-positive-ℝ x ↔ is-negative-ℝ (neg-ℝ x) +is-positive-iff-neg-is-negative-ℝ x = + ( neg-is-positive-ℝ x , + is-positive-is-negative-neg-ℝ x) +``` + ### If a nonnegative real number `x` is less than a real number `y`, `y` is positive ```agda From 453322e74496db065c214455fd2afb7308f1ba68 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 17:34:18 -0800 Subject: [PATCH 101/134] Revert accident --- ...ositive-and-negative-real-numbers.lagda.md | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/src/real-numbers/positive-and-negative-real-numbers.lagda.md b/src/real-numbers/positive-and-negative-real-numbers.lagda.md index b30852d3524..18f7f33b894 100644 --- a/src/real-numbers/positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/positive-and-negative-real-numbers.lagda.md @@ -11,7 +11,6 @@ module real-numbers.positive-and-negative-real-numbers where ```agda open import foundation.dependent-pair-types open import foundation.transport-along-identifications -open import foundation.logical-equivalences open import foundation.universe-levels open import real-numbers.dedekind-real-numbers @@ -79,38 +78,6 @@ neg-ℝ⁻ : {l : Level} → ℝ⁻ l → ℝ⁺ l neg-ℝ⁻ (x , is-neg-x) = (neg-ℝ x , neg-is-negative-ℝ x is-neg-x) ``` -### A real number is negative if and only if its negation is positive - -```agda -abstract - is-negative-is-positive-neg-ℝ : - {l : Level} (x : ℝ l) → is-positive-ℝ (neg-ℝ x) → is-negative-ℝ x - is-negative-is-positive-neg-ℝ x 0<-x = - tr is-negative-ℝ (neg-neg-ℝ x) (neg-is-positive-ℝ (neg-ℝ x) 0<-x) - -is-negative-iff-neg-is-positive-ℝ : - {l : Level} (x : ℝ l) → is-negative-ℝ x ↔ is-positive-ℝ (neg-ℝ x) -is-negative-iff-neg-is-positive-ℝ x = - ( neg-is-negative-ℝ x , - is-negative-is-positive-neg-ℝ x) -``` - -### A real number is positive if and only if its negation is negative - -```agda -abstract - is-positive-is-negative-neg-ℝ : - {l : Level} (x : ℝ l) → is-negative-ℝ (neg-ℝ x) → is-positive-ℝ x - is-positive-is-negative-neg-ℝ x -x<0 = - tr is-positive-ℝ (neg-neg-ℝ x) (neg-is-negative-ℝ (neg-ℝ x) -x<0) - -is-positive-iff-neg-is-negative-ℝ : - {l : Level} (x : ℝ l) → is-positive-ℝ x ↔ is-negative-ℝ (neg-ℝ x) -is-positive-iff-neg-is-negative-ℝ x = - ( neg-is-positive-ℝ x , - is-positive-is-negative-neg-ℝ x) -``` - ### If a nonnegative real number `x` is less than a real number `y`, `y` is positive ```agda From b8e2f5f07fa0c382b37c7b41df67bfc60bcc1f43 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 18:36:54 -0800 Subject: [PATCH 102/134] Progress --- src/complex-numbers/complex-numbers.lagda.md | 2 + .../magnitude-complex-numbers.lagda.md | 68 +++++++++++++++++++ ...-inverses-nonzero-complex-numbers.lagda.md | 68 +++++++++++++++++++ .../nonzero-complex-numbers.lagda.md | 22 ++++++ ...ltiplication-nonzero-real-numbers.lagda.md | 38 ++++++++++- ...ositive-and-negative-real-numbers.lagda.md | 11 +-- ...ive-inverses-nonzero-real-numbers.lagda.md | 62 ++++------------- .../negative-real-numbers.lagda.md | 11 +++ .../nonzero-real-numbers.lagda.md | 42 ++++-------- ...ositive-and-negative-real-numbers.lagda.md | 12 ++++ .../positive-real-numbers.lagda.md | 9 ++- ...re-roots-nonnegative-real-numbers.lagda.md | 30 ++++++-- .../squares-real-numbers.lagda.md | 19 ++++++ 13 files changed, 301 insertions(+), 93 deletions(-) diff --git a/src/complex-numbers/complex-numbers.lagda.md b/src/complex-numbers/complex-numbers.lagda.md index 7465731aca5..0b7cc5fcf8a 100644 --- a/src/complex-numbers/complex-numbers.lagda.md +++ b/src/complex-numbers/complex-numbers.lagda.md @@ -45,6 +45,8 @@ re-ℂ = pr1 im-ℂ : {l : Level} → ℂ l → ℝ l im-ℂ = pr2 + +pattern _+iℂ_ a b = (a , b) ``` ## Properties diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index 22a709c6efb..4a81647b463 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -12,14 +12,18 @@ module complex-numbers.magnitude-complex-numbers where open import complex-numbers.complex-numbers open import complex-numbers.conjugation-complex-numbers open import complex-numbers.multiplication-complex-numbers +open import complex-numbers.similarity-complex-numbers open import foundation.action-on-identifications-functions open import foundation.identity-types +open import foundation.dependent-pair-types open import foundation.universe-levels +open import real-numbers.absolute-value-real-numbers open import real-numbers.addition-nonnegative-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers +open import real-numbers.positive-real-numbers open import real-numbers.difference-real-numbers open import real-numbers.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-real-numbers @@ -231,3 +235,67 @@ abstract = magnitude-ℂ z *ℝ magnitude-ℂ w by ap real-ℝ⁰⁺ (distributive-sqrt-mul-ℝ⁰⁺ _ _) ``` + +### The magnitude of a real number as a complex number is its absolute value + +```agda +abstract + magnitude-complex-ℝ : + {l : Level} (x : ℝ l) → magnitude-ℂ (complex-ℝ x) = abs-ℝ x + magnitude-complex-ℝ {l} x = + equational-reasoning + real-sqrt-ℝ⁰⁺ + ( nonnegative-square-ℝ x +ℝ⁰⁺ nonnegative-square-ℝ (raise-ℝ l zero-ℝ)) + = + real-sqrt-ℝ⁰⁺ + ( nonnegative-square-ℝ x +ℝ⁰⁺ nonnegative-square-ℝ zero-ℝ) + by + ap + ( real-sqrt-ℝ⁰⁺) + ( eq-ℝ⁰⁺ _ _ + ( eq-sim-ℝ + ( preserves-sim-left-add-ℝ _ _ _ + ( preserves-sim-square-ℝ + ( symmetric-sim-ℝ (sim-raise-ℝ l zero-ℝ)))))) + = real-sqrt-ℝ⁰⁺ (nonnegative-square-ℝ x +ℝ⁰⁺ zero-ℝ⁰⁺) + by ap real-sqrt-ℝ⁰⁺ (eq-ℝ⁰⁺ _ _ (ap-add-ℝ refl square-zero-ℝ)) + = real-sqrt-ℝ⁰⁺ (nonnegative-square-ℝ x) + by ap real-sqrt-ℝ⁰⁺ (eq-ℝ⁰⁺ _ _ (right-unit-law-add-ℝ _)) + = abs-ℝ x + by inv (eq-abs-sqrt-square-ℝ x) +``` + +### Similar complex numbers have similar magnitudes + +```agda +abstract + preserves-sim-squared-magnitude-ℂ : + {l1 l2 : Level} {z : ℂ l1} {w : ℂ l2} → + sim-ℂ z w → sim-ℝ (squared-magnitude-ℂ z) (squared-magnitude-ℂ w) + preserves-sim-squared-magnitude-ℂ (a~c , b~d) = + preserves-sim-add-ℝ + ( preserves-sim-square-ℝ a~c) + ( preserves-sim-square-ℝ b~d) + + preserves-sim-magnitude-ℂ : + {l1 l2 : Level} {z : ℂ l1} {w : ℂ l2} → + sim-ℂ z w → sim-ℝ (magnitude-ℂ z) (magnitude-ℂ w) + preserves-sim-magnitude-ℂ z~w = + preserves-sim-sqrt-ℝ⁰⁺ _ _ (preserves-sim-squared-magnitude-ℂ z~w) +``` + +### The magnitude of `one-ℂ` is `one-ℝ` + +```agda +abstract + magnitude-one-ℂ : magnitude-ℂ one-ℂ = one-ℝ + magnitude-one-ℂ = + equational-reasoning + magnitude-ℂ one-ℂ + = magnitude-ℂ (complex-ℝ one-ℝ) + by ap magnitude-ℂ (inv eq-complex-one-ℝ) + = abs-ℝ one-ℝ + by magnitude-complex-ℝ one-ℝ + = one-ℝ + by abs-real-ℝ⁺ one-ℝ⁺ +``` diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md index 71dd292ad7f..7278fe13552 100644 --- a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -14,9 +14,18 @@ open import complex-numbers.multiplication-complex-numbers open import complex-numbers.nonzero-complex-numbers open import complex-numbers.similarity-complex-numbers +open import real-numbers.nonzero-real-numbers +open import real-numbers.nonnegative-real-numbers open import foundation.dependent-pair-types +open import real-numbers.positive-and-negative-real-numbers +open import foundation.function-types +open import foundation.disjunction +open import real-numbers.similarity-real-numbers +open import real-numbers.positive-real-numbers +open import foundation.empty-types open import foundation.identity-types open import foundation.transport-along-identifications +open import real-numbers.multiplication-nonzero-real-numbers open import foundation.universe-levels open import real-numbers.multiplication-real-numbers @@ -83,3 +92,62 @@ abstract right-inverse-law-mul-ℂ z = tr (λ w → sim-ℂ w one-ℂ) (commutative-mul-ℂ _ _) (left-inverse-law-mul-ℂ z) ``` + +### If a complex number has a multiplicative inverse, it is nonzero + +```agda +abstract + is-nonzero-has-right-inverse-mul-ℂ : + {l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → sim-ℂ (z *ℂ w) one-ℂ → + is-nonzero-ℂ z + is-nonzero-has-right-inverse-mul-ℂ z w zw=1 = + is-nonzero-is-positive-magnitude-ℂ + ( z) + ( elim-disjunction + ( is-positive-prop-ℝ ∥ z ∥ℂ) + ( λ |z|<0 → + ex-falso + ( is-not-negative-and-nonnegative-ℝ + ( |z|<0 , is-nonnegative-real-ℝ⁰⁺ (nonnegative-magnitude-ℂ z)))) + ( id) + ( pr1 + ( is-nonzero-factors-is-nonzero-mul-ℝ + ( ∥ z ∥ℂ) + ( ∥ w ∥ℂ) + ( is-nonzero-sim-ℝ + ( symmetric-sim-ℝ + ( similarity-reasoning-ℝ + ∥ z ∥ℂ *ℝ ∥ w ∥ℂ + ~ℝ ∥ z *ℂ w ∥ℂ + by sim-eq-ℝ (inv (distributive-magnitude-mul-ℂ z w)) + ~ℝ ∥ one-ℂ ∥ℂ + by preserves-sim-magnitude-ℂ zw=1 + ~ℝ one-ℝ + by sim-eq-ℝ magnitude-one-ℂ)) + ( is-nonzero-is-positive-ℝ is-positive-one-ℝ))))) + + is-nonzero-has-left-inverse-mul-ℂ : + {l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → sim-ℂ (z *ℂ w) one-ℂ → + is-nonzero-ℂ w + is-nonzero-has-left-inverse-mul-ℂ z w zw=1 = + is-nonzero-has-right-inverse-mul-ℂ + ( w) + ( z) + ( tr (λ x → sim-ℂ x one-ℂ) (commutative-mul-ℂ z w) zw=1) +``` + +### The multiplicative inverse of a nonzero complex number is nonzero + +```agda +abstract + is-nonzero-complex-inv-nonzero-ℂ : + {l : Level} (z : nonzero-ℂ l) → is-nonzero-ℂ (complex-inv-nonzero-ℂ z) + is-nonzero-complex-inv-nonzero-ℂ z = + is-nonzero-has-right-inverse-mul-ℂ + ( _) + ( _) + ( right-inverse-law-mul-ℂ z) + +inv-nonzero-ℂ : {l : Level} → nonzero-ℂ l → nonzero-ℂ l +inv-nonzero-ℂ z = (complex-inv-nonzero-ℂ z , is-nonzero-complex-inv-nonzero-ℂ z) +``` diff --git a/src/complex-numbers/nonzero-complex-numbers.lagda.md b/src/complex-numbers/nonzero-complex-numbers.lagda.md index a10fec58972..a4cf4129b04 100644 --- a/src/complex-numbers/nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/nonzero-complex-numbers.lagda.md @@ -25,6 +25,7 @@ open import real-numbers.nonzero-real-numbers open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers +open import real-numbers.square-roots-nonnegative-real-numbers open import real-numbers.similarity-real-numbers open import real-numbers.squares-real-numbers open import real-numbers.strict-inequality-real-numbers @@ -97,3 +98,24 @@ positive-squared-magnitude-nonzero-ℂ : positive-squared-magnitude-nonzero-ℂ (z , z≠0) = ( squared-magnitude-ℂ z , is-positive-squared-magnitude-is-nonzero-ℂ z z≠0) ``` + +### A complex number is nonzero if and only if its magnitude is positive + +```agda +abstract + is-nonzero-is-positive-magnitude-ℂ : + {l : Level} (z : ℂ l) → is-positive-ℝ ∥ z ∥ℂ → is-nonzero-ℂ z + is-nonzero-is-positive-magnitude-ℂ z 0<|z| = + is-nonzero-is-positive-squared-magnitude-ℂ + ( z) + ( is-positive-is-positive-sqrt-ℝ⁰⁺ + ( nonnegative-squared-magnitude-ℂ z) + ( 0<|z|)) + + is-positive-magnitude-is-nonzero-ℂ : + {l : Level} (z : ℂ l) → is-nonzero-ℂ z → is-positive-ℝ ∥ z ∥ℂ + is-positive-magnitude-is-nonzero-ℂ z z≠0 = + is-positive-sqrt-is-positive-ℝ⁰⁺ + ( nonnegative-squared-magnitude-ℂ z) + ( is-positive-squared-magnitude-is-nonzero-ℂ z z≠0) +``` diff --git a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md index 5f6c8696300..e6a3c231ad5 100644 --- a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md @@ -10,6 +10,9 @@ module real-numbers.multiplication-nonzero-real-numbers where ```agda open import foundation.dependent-pair-types +open import foundation.cartesian-product-types +open import foundation.conjunction +open import foundation.functoriality-cartesian-product-types open import foundation.disjunction open import foundation.function-types open import foundation.universe-levels @@ -19,7 +22,6 @@ open import real-numbers.multiplication-negative-real-numbers open import real-numbers.multiplication-positive-and-negative-real-numbers open import real-numbers.multiplication-positive-real-numbers open import real-numbers.multiplication-real-numbers -open import real-numbers.multiplicative-inverses-nonzero-real-numbers open import real-numbers.nonzero-real-numbers ``` @@ -66,3 +68,37 @@ mul-nonzero-ℝ : mul-nonzero-ℝ (x , x#0) (y , y#0) = ( x *ℝ y , is-nonzero-mul-ℝ x#0 y#0) ``` + +## Properties + +### If the product of two real numbers is nonzero, they are both nonzero + +```agda +module _ + {l1 l2 : Level} + (x : ℝ l1) + (y : ℝ l2) + where + + abstract + is-nonzero-factors-is-nonzero-mul-ℝ : + is-nonzero-ℝ (x *ℝ y) → is-nonzero-ℝ x × is-nonzero-ℝ y + is-nonzero-factors-is-nonzero-mul-ℝ = + let + motive = is-nonzero-prop-ℝ x ∧ is-nonzero-prop-ℝ y + in + elim-disjunction + ( motive) + ( λ xy<0 → + elim-disjunction + ( motive) + ( map-product inr-disjunction inl-disjunction) + ( map-product inl-disjunction inr-disjunction) + ( different-signs-is-negative-mul-ℝ x y xy<0)) + ( λ 0 @@ -92,3 +93,13 @@ module _ ( exists-ℚ⁻-in-upper-cut-is-negative-ℝ , is-negative-exists-ℚ⁻-in-upper-cut-ℝ) ``` + +### Being nonnegative is preserved by similarity + +```agda +abstract + is-negative-sim-ℝ : + {l1 l2 : Level} {x : ℝ l1} {y : ℝ l2} → + sim-ℝ x y → is-negative-ℝ x → is-negative-ℝ y + is-negative-sim-ℝ = preserves-le-left-sim-ℝ _ _ _ +``` diff --git a/src/real-numbers/nonzero-real-numbers.lagda.md b/src/real-numbers/nonzero-real-numbers.lagda.md index 6b0e6074cd7..fcb261fb251 100644 --- a/src/real-numbers/nonzero-real-numbers.lagda.md +++ b/src/real-numbers/nonzero-real-numbers.lagda.md @@ -19,6 +19,7 @@ open import foundation.propositions open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels +open import foundation.functoriality-disjunction open import real-numbers.absolute-value-real-numbers open import real-numbers.addition-real-numbers @@ -101,34 +102,6 @@ eq-nonzero-ℝ : eq-nonzero-ℝ _ _ = eq-type-subtype is-nonzero-prop-ℝ ``` -### Two real numbers are apart if and only if their difference is nonzero - -```agda -module _ - {l1 l2 : Level} (x : ℝ l1) (y : ℝ l2) - where - - abstract - is-nonzero-diff-is-apart-ℝ : apart-ℝ x y → is-nonzero-ℝ (x -ℝ y) - is-nonzero-diff-is-apart-ℝ x#y = - apart-right-sim-ℝ - ( x -ℝ y) - ( y -ℝ y) - ( zero-ℝ) - ( right-inverse-law-add-ℝ y) - ( preserves-apart-right-add-ℝ (neg-ℝ y) x y x#y) - - is-apart-is-nonzero-diff-ℝ : is-nonzero-ℝ (x -ℝ y) → apart-ℝ x y - is-apart-is-nonzero-diff-ℝ x-y#0 = - apart-sim-ℝ - ( cancel-right-diff-add-ℝ x y) - ( sim-eq-ℝ (left-unit-law-add-ℝ y)) - ( preserves-apart-right-add-ℝ y _ _ x-y#0) - - nonzero-diff-apart-ℝ : apart-ℝ x y → nonzero-ℝ (l1 ⊔ l2) - nonzero-diff-apart-ℝ x#y = (x -ℝ y , is-nonzero-diff-is-apart-ℝ x#y) -``` - ### The nonzero difference of a pair of real numbers `x` and `y` such that `x < y` ```agda @@ -229,5 +202,16 @@ module _ ( nonnegative-square-ℝ x) ( refl)) = abs-ℝ x by inv (eq-abs-sqrt-square-ℝ x)) - ( is-positive-sqrt-ℝ⁺ (square-ℝ x , 0 Date: Mon, 10 Nov 2025 18:38:21 -0800 Subject: [PATCH 103/134] Merge --- .../magnitude-complex-numbers.lagda.md | 4 ++-- ...ative-inverses-nonzero-complex-numbers.lagda.md | 14 +++++++------- .../nonzero-complex-numbers.lagda.md | 2 +- .../similarity-complex-numbers.lagda.md | 4 ---- ...tion-closed-intervals-rational-numbers.lagda.md | 6 +++--- .../multiplication-nonzero-real-numbers.lagda.md | 4 ++-- ...ion-positive-and-negative-real-numbers.lagda.md | 8 ++++---- ...licative-inverses-nonzero-real-numbers.lagda.md | 2 +- src/real-numbers/negative-real-numbers.lagda.md | 2 +- src/real-numbers/nonzero-real-numbers.lagda.md | 2 +- .../positive-and-negative-real-numbers.lagda.md | 4 ++-- 11 files changed, 24 insertions(+), 28 deletions(-) diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index 4a81647b463..87e2fcde0de 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -15,20 +15,20 @@ open import complex-numbers.multiplication-complex-numbers open import complex-numbers.similarity-complex-numbers open import foundation.action-on-identifications-functions -open import foundation.identity-types open import foundation.dependent-pair-types +open import foundation.identity-types open import foundation.universe-levels open import real-numbers.absolute-value-real-numbers open import real-numbers.addition-nonnegative-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers -open import real-numbers.positive-real-numbers open import real-numbers.difference-real-numbers open import real-numbers.multiplication-nonnegative-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.negation-real-numbers open import real-numbers.nonnegative-real-numbers +open import real-numbers.positive-real-numbers open import real-numbers.raising-universe-levels-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md index 7278fe13552..32a5a481247 100644 --- a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -14,23 +14,23 @@ open import complex-numbers.multiplication-complex-numbers open import complex-numbers.nonzero-complex-numbers open import complex-numbers.similarity-complex-numbers -open import real-numbers.nonzero-real-numbers -open import real-numbers.nonnegative-real-numbers open import foundation.dependent-pair-types -open import real-numbers.positive-and-negative-real-numbers -open import foundation.function-types open import foundation.disjunction -open import real-numbers.similarity-real-numbers -open import real-numbers.positive-real-numbers open import foundation.empty-types +open import foundation.function-types open import foundation.identity-types open import foundation.transport-along-identifications -open import real-numbers.multiplication-nonzero-real-numbers open import foundation.universe-levels +open import real-numbers.multiplication-nonzero-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.multiplicative-inverses-positive-real-numbers +open import real-numbers.nonnegative-real-numbers +open import real-numbers.nonzero-real-numbers +open import real-numbers.positive-and-negative-real-numbers +open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers ```
diff --git a/src/complex-numbers/nonzero-complex-numbers.lagda.md b/src/complex-numbers/nonzero-complex-numbers.lagda.md index a4cf4129b04..6a2af2cf3d1 100644 --- a/src/complex-numbers/nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/nonzero-complex-numbers.lagda.md @@ -25,8 +25,8 @@ open import real-numbers.nonzero-real-numbers open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.square-roots-nonnegative-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.square-roots-nonnegative-real-numbers open import real-numbers.squares-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/complex-numbers/similarity-complex-numbers.lagda.md b/src/complex-numbers/similarity-complex-numbers.lagda.md index 2da181a6090..15331bf67fd 100644 --- a/src/complex-numbers/similarity-complex-numbers.lagda.md +++ b/src/complex-numbers/similarity-complex-numbers.lagda.md @@ -161,7 +161,3 @@ abstract syntax step-similarity-reasoning-ℂ p u q = p ~ℂ u by q ``` - -# <<<<<<< HEAD - -> > > > > > > Stashed changes complex-ring diff --git a/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md index 7b985554ddd..3c44fa5f0ce 100644 --- a/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md @@ -26,6 +26,7 @@ open import elementary-number-theory.minima-and-maxima-rational-numbers open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-negative-rational-numbers open import elementary-number-theory.multiplication-nonnegative-rational-numbers +open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers open import elementary-number-theory.multiplication-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers @@ -34,29 +35,28 @@ open import elementary-number-theory.multiplicative-monoid-of-rational-numbers open import elementary-number-theory.negation-closed-intervals-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers -open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers open import elementary-number-theory.poset-closed-intervals-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.proper-closed-intervals-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.squares-rational-numbers -open import foundation.functoriality-coproduct-types open import elementary-number-theory.strict-inequality-rational-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.dependent-pair-types open import foundation.disjunction open import foundation.empty-types open import foundation.existential-quantification open import foundation.function-extensionality open import foundation.function-types +open import foundation.functoriality-coproduct-types open import foundation.identity-types open import foundation.images-subtypes -open import foundation.coproduct-types open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.propositions diff --git a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md index e6a3c231ad5..fe9285555ba 100644 --- a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md @@ -9,12 +9,12 @@ module real-numbers.multiplication-nonzero-real-numbers where
Imports ```agda -open import foundation.dependent-pair-types open import foundation.cartesian-product-types open import foundation.conjunction -open import foundation.functoriality-cartesian-product-types +open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.function-types +open import foundation.functoriality-cartesian-product-types open import foundation.universe-levels open import real-numbers.dedekind-real-numbers diff --git a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md index 2cf6bd648d9..72de9d1ce9c 100644 --- a/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-positive-and-negative-real-numbers.lagda.md @@ -19,25 +19,25 @@ 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.disjunction +open import foundation.existential-quantification open import foundation.function-types open import foundation.functoriality-cartesian-product-types -open import foundation.disjunction open import foundation.functoriality-disjunction open import foundation.propositional-truncations open import foundation.transport-along-identifications open import foundation.universe-levels -open import foundation.existential-quantification open import order-theory.posets open import real-numbers.dedekind-real-numbers open import real-numbers.multiplication-positive-real-numbers open import real-numbers.multiplication-real-numbers +open import real-numbers.negation-real-numbers open import real-numbers.negative-real-numbers +open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers -open import real-numbers.negation-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.positive-and-negative-real-numbers open import real-numbers.strict-inequality-real-numbers ``` diff --git a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md index 7ca1640e44d..798999e3303 100644 --- a/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplicative-inverses-nonzero-real-numbers.lagda.md @@ -36,11 +36,11 @@ open import foundation.universe-levels open import real-numbers.dedekind-real-numbers open import real-numbers.inequality-real-numbers open import real-numbers.large-ring-of-real-numbers +open import real-numbers.multiplication-nonzero-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.multiplicative-inverses-negative-real-numbers open import real-numbers.multiplicative-inverses-positive-real-numbers open import real-numbers.negative-real-numbers -open import real-numbers.multiplication-nonzero-real-numbers open import real-numbers.nonzero-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.raising-universe-levels-real-numbers diff --git a/src/real-numbers/negative-real-numbers.lagda.md b/src/real-numbers/negative-real-numbers.lagda.md index b92bcee1aa7..ced2c41ca1b 100644 --- a/src/real-numbers/negative-real-numbers.lagda.md +++ b/src/real-numbers/negative-real-numbers.lagda.md @@ -21,8 +21,8 @@ open import foundation.universe-levels open import real-numbers.dedekind-real-numbers open import real-numbers.rational-real-numbers -open import real-numbers.strict-inequality-real-numbers open import real-numbers.similarity-real-numbers +open import real-numbers.strict-inequality-real-numbers ```
diff --git a/src/real-numbers/nonzero-real-numbers.lagda.md b/src/real-numbers/nonzero-real-numbers.lagda.md index fcb261fb251..e28693637e9 100644 --- a/src/real-numbers/nonzero-real-numbers.lagda.md +++ b/src/real-numbers/nonzero-real-numbers.lagda.md @@ -13,13 +13,13 @@ open import foundation.action-on-identifications-functions open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.disjunction +open import foundation.functoriality-disjunction open import foundation.identity-types open import foundation.propositional-truncations open import foundation.propositions open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels -open import foundation.functoriality-disjunction open import real-numbers.absolute-value-real-numbers open import real-numbers.addition-real-numbers diff --git a/src/real-numbers/positive-and-negative-real-numbers.lagda.md b/src/real-numbers/positive-and-negative-real-numbers.lagda.md index 17305bae625..e5964a4b3d2 100644 --- a/src/real-numbers/positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/positive-and-negative-real-numbers.lagda.md @@ -9,11 +9,11 @@ module real-numbers.positive-and-negative-real-numbers where
Imports ```agda +open import foundation.cartesian-product-types open import foundation.dependent-pair-types -open import foundation.transport-along-identifications open import foundation.logical-equivalences -open import foundation.cartesian-product-types open import foundation.negation +open import foundation.transport-along-identifications open import foundation.universe-levels open import real-numbers.dedekind-real-numbers From 83be7907c570625850e2380e929b14b84d52149d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 18:51:32 -0800 Subject: [PATCH 104/134] Progress --- .../addition-nonzero-complex-numbers.lagda.md | 51 +++++++++++++++++++ .../local-ring-of-complex-numbers.lagda.md | 18 +++++++ ...-inverses-nonzero-complex-numbers.lagda.md | 33 ++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 src/complex-numbers/addition-nonzero-complex-numbers.lagda.md create mode 100644 src/complex-numbers/local-ring-of-complex-numbers.lagda.md diff --git a/src/complex-numbers/addition-nonzero-complex-numbers.lagda.md b/src/complex-numbers/addition-nonzero-complex-numbers.lagda.md new file mode 100644 index 00000000000..272db134c60 --- /dev/null +++ b/src/complex-numbers/addition-nonzero-complex-numbers.lagda.md @@ -0,0 +1,51 @@ +# Addition of nonzero complex numbers + +```agda +module complex-numbers.addition-nonzero-complex-numbers where +``` + +
Imports + +```agda +open import complex-numbers.nonzero-complex-numbers +open import complex-numbers.addition-complex-numbers +open import foundation.functoriality-disjunction +open import complex-numbers.complex-numbers +open import real-numbers.addition-nonzero-real-numbers +open import foundation.disjunction +open import foundation.universe-levels +open import real-numbers.nonzero-real-numbers +``` + +
+ +## Idea + +This file describes properties of +[addition](complex-numbers.addition-complex-numbers.md) of +[nonzero](complex-numbers.nonzero-complex-numbers.md) +[complex numbers](complex-numbers.complex-numbers.md). + +## Properties + +### If the sum of two complex numbers is nonzero, one of them is nonzero + +```agda +abstract + is-nonzero-either-is-nonzero-add-ℂ : + {l1 l2 : Level} (z : ℂ l1) (w : ℂ l2) → is-nonzero-ℂ (z +ℂ w) → + disjunction-type (is-nonzero-ℂ z) (is-nonzero-ℂ w) + is-nonzero-either-is-nonzero-add-ℂ z@(a +iℂ b) w@(c +iℂ d) = + elim-disjunction + ( is-nonzero-prop-ℂ z ∨ is-nonzero-prop-ℂ w) + ( λ a+c≠0 → + map-disjunction + ( inl-disjunction) + ( inl-disjunction) + ( is-nonzero-either-is-nonzero-add-ℝ a c a+c≠0)) + ( λ b+d≠0 → + map-disjunction + ( inr-disjunction) + ( inr-disjunction) + ( is-nonzero-either-is-nonzero-add-ℝ b d b+d≠0)) +``` diff --git a/src/complex-numbers/local-ring-of-complex-numbers.lagda.md b/src/complex-numbers/local-ring-of-complex-numbers.lagda.md new file mode 100644 index 00000000000..836919bbd0d --- /dev/null +++ b/src/complex-numbers/local-ring-of-complex-numbers.lagda.md @@ -0,0 +1,18 @@ +# The local ring of complex numbers + +```agda +module complex-numbers.local-ring-of-complex-numbers where +``` + +
Imports + +```agda +open import commutative-algebra.local-commutative-rings +open import complex-numbers.large-ring-of-complex-numbers +open import foundation.universe-levels +open import complex-numbers.nonzero-complex-numbers +``` + +
+ +## Idea diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md index 32a5a481247..627ca231ef4 100644 --- a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -10,12 +10,16 @@ module complex-numbers.multiplicative-inverses-nonzero-complex-numbers where open import complex-numbers.complex-numbers open import complex-numbers.conjugation-complex-numbers open import complex-numbers.magnitude-complex-numbers +open import commutative-algebra.invertible-elements-commutative-rings open import complex-numbers.multiplication-complex-numbers +open import complex-numbers.raising-universe-levels-complex-numbers open import complex-numbers.nonzero-complex-numbers open import complex-numbers.similarity-complex-numbers +open import complex-numbers.large-ring-of-complex-numbers open import foundation.dependent-pair-types open import foundation.disjunction +open import foundation.logical-equivalences open import foundation.empty-types open import foundation.function-types open import foundation.identity-types @@ -151,3 +155,32 @@ abstract inv-nonzero-ℂ : {l : Level} → nonzero-ℂ l → nonzero-ℂ l inv-nonzero-ℂ z = (complex-inv-nonzero-ℂ z , is-nonzero-complex-inv-nonzero-ℂ z) ``` + +### A complex number is invertible if and only if it is nonzero + +```agda +abstract + is-invertible-iff-is-nonzero-ℂ : + {l : Level} (z : ℂ l) → + ( is-invertible-element-Commutative-Ring + ( commutative-ring-ℂ l) + ( z)) ↔ + ( is-nonzero-ℂ z) + is-invertible-iff-is-nonzero-ℂ z = + ( ( λ (w , zw=1 , _) → + is-nonzero-has-right-inverse-mul-ℂ + ( z) + ( w) + ( transitive-sim-ℂ _ _ _ + ( symmetric-sim-ℂ (sim-raise-ℂ _ one-ℂ)) + ( sim-eq-ℂ zw=1))) , + ( λ z≠0 → + ( complex-inv-nonzero-ℂ (z , z≠0) , + eq-sim-ℂ + ( similarity-reasoning-ℂ + z *ℂ complex-inv-nonzero-ℂ (z , z≠0) + ~ℂ one-ℂ + by left-inverse-law-mul-ℂ (z , z≠0) + ~ℂ {! !} by {! !}) , + {! !}))) +``` From 23e4eab9ec094c41668e9b8356f7f28eda83d42e Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 18:52:15 -0800 Subject: [PATCH 105/134] Fix lefts and rights --- ...cative-inverses-nonzero-complex-numbers.lagda.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md index 71dd292ad7f..183fbec3b2b 100644 --- a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -47,9 +47,9 @@ complex-inv-nonzero-ℂ (z , z≠0) = ```agda abstract - left-inverse-law-mul-ℂ : {l : Level} (z : nonzero-ℂ l) → + right-inverse-law-mul-nonzero-ℂ : {l : Level} (z : nonzero-ℂ l) → sim-ℂ (complex-nonzero-ℂ z *ℂ complex-inv-nonzero-ℂ z) one-ℂ - left-inverse-law-mul-ℂ (z@(a +iℂ b) , z≠0) = + right-inverse-law-mul-nonzero-ℂ (z@(a +iℂ b) , z≠0) = similarity-reasoning-ℂ z *ℂ ( conjugate-ℂ z *ℂ @@ -78,8 +78,11 @@ abstract ~ℂ one-ℂ by sim-eq-ℂ eq-complex-one-ℝ - right-inverse-law-mul-ℂ : {l : Level} (z : nonzero-ℂ l) → + left-inverse-law-mul-nonzero-ℂ : {l : Level} (z : nonzero-ℂ l) → sim-ℂ (complex-inv-nonzero-ℂ z *ℂ complex-nonzero-ℂ z) one-ℂ - right-inverse-law-mul-ℂ z = - tr (λ w → sim-ℂ w one-ℂ) (commutative-mul-ℂ _ _) (left-inverse-law-mul-ℂ z) + left-inverse-law-mul-nonzero-ℂ z = + tr + ( λ w → sim-ℂ w one-ℂ) + ( commutative-mul-ℂ _ _) + ( right-inverse-law-mul-nonzero-ℂ z) ``` From 4114c71cbcadd367535d4c48a54792b3b8331197 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 19:00:19 -0800 Subject: [PATCH 106/134] The local ring of complex numbers --- src/complex-numbers.lagda.md | 9 ++- .../addition-nonzero-complex-numbers.lagda.md | 8 ++- .../local-ring-of-complex-numbers.lagda.md | 34 +++++++++- ...-inverses-nonzero-complex-numbers.lagda.md | 64 +++++++++++-------- src/linear-algebra.lagda.md | 2 + .../real-vector-spaces.lagda.md | 6 +- src/linear-algebra/vector-spaces.lagda.md | 5 +- src/real-numbers.lagda.md | 3 + .../addition-negative-real-numbers.lagda.md | 23 +++---- .../addition-nonzero-real-numbers.lagda.md | 13 ++-- .../local-ring-of-real-numbers.lagda.md | 8 ++- 11 files changed, 115 insertions(+), 60 deletions(-) diff --git a/src/complex-numbers.lagda.md b/src/complex-numbers.lagda.md index b1c16d18866..14b808adef3 100644 --- a/src/complex-numbers.lagda.md +++ b/src/complex-numbers.lagda.md @@ -4,20 +4,19 @@ module complex-numbers where open import complex-numbers.addition-complex-numbers public -open import complex-numbers.additive-group-of-complex-numbers public +open import complex-numbers.addition-nonzero-complex-numbers public open import complex-numbers.apartness-complex-numbers public open import complex-numbers.complex-numbers public open import complex-numbers.conjugation-complex-numbers public open import complex-numbers.eisenstein-integers public open import complex-numbers.gaussian-integers public +open import complex-numbers.large-additive-group-of-complex-numbers public +open import complex-numbers.large-ring-of-complex-numbers public +open import complex-numbers.local-ring-of-complex-numbers public open import complex-numbers.magnitude-complex-numbers public open import complex-numbers.multiplication-complex-numbers public open import complex-numbers.multiplicative-inverses-nonzero-complex-numbers public open import complex-numbers.nonzero-complex-numbers public -open import complex-numbers.ring-of-complex-numbers public -open import complex-numbers.large-additive-group-of-complex-numbers public -open import complex-numbers.large-ring-of-complex-numbers public -open import complex-numbers.multiplication-complex-numbers public open import complex-numbers.raising-universe-levels-complex-numbers public open import complex-numbers.similarity-complex-numbers public ``` diff --git a/src/complex-numbers/addition-nonzero-complex-numbers.lagda.md b/src/complex-numbers/addition-nonzero-complex-numbers.lagda.md index 272db134c60..c74857b7bf9 100644 --- a/src/complex-numbers/addition-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/addition-nonzero-complex-numbers.lagda.md @@ -7,13 +7,15 @@ module complex-numbers.addition-nonzero-complex-numbers where
Imports ```agda -open import complex-numbers.nonzero-complex-numbers open import complex-numbers.addition-complex-numbers -open import foundation.functoriality-disjunction open import complex-numbers.complex-numbers -open import real-numbers.addition-nonzero-real-numbers +open import complex-numbers.nonzero-complex-numbers + open import foundation.disjunction +open import foundation.functoriality-disjunction open import foundation.universe-levels + +open import real-numbers.addition-nonzero-real-numbers open import real-numbers.nonzero-real-numbers ``` diff --git a/src/complex-numbers/local-ring-of-complex-numbers.lagda.md b/src/complex-numbers/local-ring-of-complex-numbers.lagda.md index 836919bbd0d..6f96731b109 100644 --- a/src/complex-numbers/local-ring-of-complex-numbers.lagda.md +++ b/src/complex-numbers/local-ring-of-complex-numbers.lagda.md @@ -8,11 +8,43 @@ module complex-numbers.local-ring-of-complex-numbers where ```agda open import commutative-algebra.local-commutative-rings + +open import complex-numbers.addition-complex-numbers +open import complex-numbers.addition-nonzero-complex-numbers open import complex-numbers.large-ring-of-complex-numbers -open import foundation.universe-levels +open import complex-numbers.multiplicative-inverses-nonzero-complex-numbers open import complex-numbers.nonzero-complex-numbers + +open import foundation.dependent-pair-types +open import foundation.functoriality-disjunction +open import foundation.universe-levels ```
## Idea + +The +[commutative ring of complex numbers](complex-numbers.large-ring-of-complex-numbers.md) +is [local](commutative-algebra.local-commutative-rings.md). + +## Definition + +```agda +is-local-commutative-ring-ℂ : + (l : Level) → is-local-Commutative-Ring (commutative-ring-ℂ l) +is-local-commutative-ring-ℂ l z w is-invertible-z+w = + map-disjunction + ( is-invertible-is-nonzero-ℂ z) + ( is-invertible-is-nonzero-ℂ w) + ( is-nonzero-either-is-nonzero-add-ℂ + ( z) + ( w) + ( is-nonzero-is-invertible-ℂ + ( z +ℂ w) + ( is-invertible-z+w))) + +local-commutative-ring-ℂ : (l : Level) → Local-Commutative-Ring (lsuc l) +local-commutative-ring-ℂ l = + ( commutative-ring-ℂ l , is-local-commutative-ring-ℂ l) +``` diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md index 6f79ee601e7..10db59823f9 100644 --- a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -7,19 +7,19 @@ module complex-numbers.multiplicative-inverses-nonzero-complex-numbers where
Imports ```agda +open import commutative-algebra.invertible-elements-commutative-rings + open import complex-numbers.complex-numbers open import complex-numbers.conjugation-complex-numbers +open import complex-numbers.large-ring-of-complex-numbers open import complex-numbers.magnitude-complex-numbers -open import commutative-algebra.invertible-elements-commutative-rings open import complex-numbers.multiplication-complex-numbers -open import complex-numbers.raising-universe-levels-complex-numbers open import complex-numbers.nonzero-complex-numbers +open import complex-numbers.raising-universe-levels-complex-numbers open import complex-numbers.similarity-complex-numbers -open import complex-numbers.large-ring-of-complex-numbers open import foundation.dependent-pair-types open import foundation.disjunction -open import foundation.logical-equivalences open import foundation.empty-types open import foundation.function-types open import foundation.identity-types @@ -150,10 +150,10 @@ abstract is-nonzero-complex-inv-nonzero-ℂ : {l : Level} (z : nonzero-ℂ l) → is-nonzero-ℂ (complex-inv-nonzero-ℂ z) is-nonzero-complex-inv-nonzero-ℂ z = - is-nonzero-has-right-inverse-mul-ℂ + is-nonzero-has-left-inverse-mul-ℂ ( _) ( _) - ( right-inverse-law-mul-ℂ z) + ( right-inverse-law-mul-nonzero-ℂ z) inv-nonzero-ℂ : {l : Level} → nonzero-ℂ l → nonzero-ℂ l inv-nonzero-ℂ z = (complex-inv-nonzero-ℂ z , is-nonzero-complex-inv-nonzero-ℂ z) @@ -163,27 +163,35 @@ inv-nonzero-ℂ z = (complex-inv-nonzero-ℂ z , is-nonzero-complex-inv-nonzero- ```agda abstract - is-invertible-iff-is-nonzero-ℂ : + is-nonzero-is-invertible-ℂ : {l : Level} (z : ℂ l) → - ( is-invertible-element-Commutative-Ring - ( commutative-ring-ℂ l) - ( z)) ↔ - ( is-nonzero-ℂ z) - is-invertible-iff-is-nonzero-ℂ z = - ( ( λ (w , zw=1 , _) → - is-nonzero-has-right-inverse-mul-ℂ - ( z) - ( w) - ( transitive-sim-ℂ _ _ _ - ( symmetric-sim-ℂ (sim-raise-ℂ _ one-ℂ)) - ( sim-eq-ℂ zw=1))) , - ( λ z≠0 → - ( complex-inv-nonzero-ℂ (z , z≠0) , - eq-sim-ℂ - ( similarity-reasoning-ℂ - z *ℂ complex-inv-nonzero-ℂ (z , z≠0) - ~ℂ one-ℂ - by left-inverse-law-mul-ℂ (z , z≠0) - ~ℂ {! !} by {! !}) , - {! !}))) + is-invertible-element-Commutative-Ring (commutative-ring-ℂ l) z → + is-nonzero-ℂ z + is-nonzero-is-invertible-ℂ z (w , zw=1 , _) = + is-nonzero-has-right-inverse-mul-ℂ + ( z) + ( w) + ( transitive-sim-ℂ _ _ _ + ( symmetric-sim-ℂ (sim-raise-ℂ _ one-ℂ)) + ( sim-eq-ℂ zw=1)) + + is-invertible-is-nonzero-ℂ : + {l : Level} (z : ℂ l) → is-nonzero-ℂ z → + is-invertible-element-Commutative-Ring (commutative-ring-ℂ l) z + is-invertible-is-nonzero-ℂ z z≠0 = + ( complex-inv-nonzero-ℂ (z , z≠0) , + eq-sim-ℂ + ( similarity-reasoning-ℂ + z *ℂ complex-inv-nonzero-ℂ (z , z≠0) + ~ℂ one-ℂ + by right-inverse-law-mul-nonzero-ℂ (z , z≠0) + ~ℂ raise-ℂ _ one-ℂ + by sim-raise-ℂ _ one-ℂ) , + eq-sim-ℂ + ( similarity-reasoning-ℂ + complex-inv-nonzero-ℂ (z , z≠0) *ℂ z + ~ℂ one-ℂ + by left-inverse-law-mul-nonzero-ℂ (z , z≠0) + ~ℂ raise-ℂ _ one-ℂ + by sim-raise-ℂ _ one-ℂ)) ``` diff --git a/src/linear-algebra.lagda.md b/src/linear-algebra.lagda.md index ba50e0c42c0..ba723c1a899 100644 --- a/src/linear-algebra.lagda.md +++ b/src/linear-algebra.lagda.md @@ -33,6 +33,7 @@ open import linear-algebra.matrices-on-rings public open import linear-algebra.multiplication-matrices public open import linear-algebra.preimages-of-left-module-structures-along-homomorphisms-of-rings public open import linear-algebra.rational-modules public +open import linear-algebra.real-vector-spaces public open import linear-algebra.right-modules-rings public open import linear-algebra.scalar-multiplication-matrices public open import linear-algebra.scalar-multiplication-tuples public @@ -46,4 +47,5 @@ open import linear-algebra.tuples-on-euclidean-domains public open import linear-algebra.tuples-on-monoids public open import linear-algebra.tuples-on-rings public open import linear-algebra.tuples-on-semirings public +open import linear-algebra.vector-spaces public ``` diff --git a/src/linear-algebra/real-vector-spaces.lagda.md b/src/linear-algebra/real-vector-spaces.lagda.md index ab72ab74bd5..869ad40d319 100644 --- a/src/linear-algebra/real-vector-spaces.lagda.md +++ b/src/linear-algebra/real-vector-spaces.lagda.md @@ -7,9 +7,11 @@ module linear-algebra.real-vector-spaces where
Imports ```agda -open import real-numbers.local-ring-of-real-numbers -open import linear-algebra.vector-spaces open import foundation.universe-levels + +open import linear-algebra.vector-spaces + +open import real-numbers.local-ring-of-real-numbers ```
diff --git a/src/linear-algebra/vector-spaces.lagda.md b/src/linear-algebra/vector-spaces.lagda.md index d9e39a8ed7c..aa4caa42c75 100644 --- a/src/linear-algebra/vector-spaces.lagda.md +++ b/src/linear-algebra/vector-spaces.lagda.md @@ -7,10 +7,13 @@ module linear-algebra.vector-spaces where
Imports ```agda +open import commutative-algebra.local-commutative-rings + open import foundation.sets open import foundation.universe-levels + open import group-theory.abelian-groups -open import commutative-algebra.local-commutative-rings + open import linear-algebra.left-modules-commutative-rings ``` diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index a3ef18a8455..fd03949811f 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -9,7 +9,9 @@ open import real-numbers.absolute-value-closed-intervals-real-numbers public open import real-numbers.absolute-value-real-numbers public open import real-numbers.accumulation-points-subsets-real-numbers public open import real-numbers.addition-lower-dedekind-real-numbers public +open import real-numbers.addition-negative-real-numbers public open import real-numbers.addition-nonnegative-real-numbers public +open import real-numbers.addition-nonzero-real-numbers public open import real-numbers.addition-positive-real-numbers public open import real-numbers.addition-real-numbers public open import real-numbers.addition-upper-dedekind-real-numbers public @@ -45,6 +47,7 @@ open import real-numbers.large-multiplicative-monoid-of-real-numbers public open import real-numbers.large-ring-of-real-numbers public open import real-numbers.limits-sequences-real-numbers public open import real-numbers.lipschitz-continuity-multiplication-real-numbers public +open import real-numbers.local-ring-of-real-numbers public open import real-numbers.located-metric-space-of-real-numbers public open import real-numbers.lower-dedekind-real-numbers public open import real-numbers.maximum-finite-families-real-numbers public diff --git a/src/real-numbers/addition-negative-real-numbers.lagda.md b/src/real-numbers/addition-negative-real-numbers.lagda.md index 66f7d5e1e54..c3e3cef113d 100644 --- a/src/real-numbers/addition-negative-real-numbers.lagda.md +++ b/src/real-numbers/addition-negative-real-numbers.lagda.md @@ -9,21 +9,22 @@ module real-numbers.addition-negative-real-numbers where
Imports ```agda -open import real-numbers.negative-real-numbers -open import real-numbers.dedekind-real-numbers -open import foundation.transport-along-identifications -open import real-numbers.rational-real-numbers -open import real-numbers.negation-real-numbers +open import foundation.dependent-pair-types +open import foundation.disjunction open import foundation.functoriality-disjunction +open import foundation.transport-along-identifications +open import foundation.universe-levels + open import real-numbers.addition-positive-real-numbers -open import foundation.disjunction open import real-numbers.addition-real-numbers -open import real-numbers.strict-inequality-real-numbers -open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers -open import real-numbers.positive-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.negative-real-numbers open import real-numbers.positive-and-negative-real-numbers -open import foundation.universe-levels -open import foundation.dependent-pair-types +open import real-numbers.positive-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers +open import real-numbers.strict-inequality-real-numbers ```
diff --git a/src/real-numbers/addition-nonzero-real-numbers.lagda.md b/src/real-numbers/addition-nonzero-real-numbers.lagda.md index 3ab16e4f8b7..e59f5b96f1c 100644 --- a/src/real-numbers/addition-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/addition-nonzero-real-numbers.lagda.md @@ -9,15 +9,16 @@ module real-numbers.addition-nonzero-real-numbers where
Imports ```agda -open import real-numbers.nonzero-real-numbers -open import real-numbers.addition-positive-real-numbers +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.functoriality-disjunction +open import foundation.universe-levels + open import real-numbers.addition-negative-real-numbers +open import real-numbers.addition-positive-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers -open import foundation.functoriality-disjunction -open import foundation.disjunction -open import foundation.dependent-pair-types -open import foundation.universe-levels +open import real-numbers.nonzero-real-numbers ```
diff --git a/src/real-numbers/local-ring-of-real-numbers.lagda.md b/src/real-numbers/local-ring-of-real-numbers.lagda.md index 282f1dc2237..030a5b42de4 100644 --- a/src/real-numbers/local-ring-of-real-numbers.lagda.md +++ b/src/real-numbers/local-ring-of-real-numbers.lagda.md @@ -10,14 +10,16 @@ module real-numbers.local-ring-of-real-numbers where ```agda open import commutative-algebra.local-commutative-rings -open import real-numbers.addition-real-numbers -open import real-numbers.nonzero-real-numbers + open import foundation.dependent-pair-types open import foundation.functoriality-disjunction +open import foundation.universe-levels + open import real-numbers.addition-nonzero-real-numbers +open import real-numbers.addition-real-numbers open import real-numbers.large-ring-of-real-numbers open import real-numbers.multiplicative-inverses-nonzero-real-numbers -open import foundation.universe-levels +open import real-numbers.nonzero-real-numbers ```
From ddf1a70559a0c355574eac761f5a6b57f4c4f68a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 19:23:47 -0800 Subject: [PATCH 107/134] Complex vector spaces --- src/linear-algebra.lagda.md | 1 + .../complex-vector-spaces.lagda.md | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/linear-algebra/complex-vector-spaces.lagda.md diff --git a/src/linear-algebra.lagda.md b/src/linear-algebra.lagda.md index ba723c1a899..474d03f52e1 100644 --- a/src/linear-algebra.lagda.md +++ b/src/linear-algebra.lagda.md @@ -5,6 +5,7 @@ ```agda module linear-algebra where +open import linear-algebra.complex-vector-spaces public open import linear-algebra.constant-matrices public open import linear-algebra.constant-tuples public open import linear-algebra.dependent-products-left-modules-commutative-rings public diff --git a/src/linear-algebra/complex-vector-spaces.lagda.md b/src/linear-algebra/complex-vector-spaces.lagda.md new file mode 100644 index 00000000000..fcff11674ad --- /dev/null +++ b/src/linear-algebra/complex-vector-spaces.lagda.md @@ -0,0 +1,24 @@ +# Complex vector spaces + +```agda +module linear-algebra.complex-vector-spaces where +``` + +
Imports + +```agda +open import complex-numbers.local-ring-of-complex-numbers + +open import foundation.universe-levels + +open import linear-algebra.vector-spaces +``` + +
+ +## Idea + +```agda +ℂ-Vector-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) +ℂ-Vector-Space l1 l2 = Vector-Space l2 (local-commutative-ring-ℂ l1) +``` From 16e5f5cee9b9c39726e5cf7d092368689781c81f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 19:53:57 -0800 Subject: [PATCH 108/134] Progress --- .../local-commutative-rings.lagda.md | 20 +++ src/linear-algebra.lagda.md | 2 + .../real-vector-spaces.lagda.md | 143 +++++++++++++++++- src/linear-algebra/vector-spaces.lagda.md | 127 +++++++++++++++- src/real-numbers.lagda.md | 3 + .../addition-negative-real-numbers.lagda.md | 23 +-- .../addition-nonzero-real-numbers.lagda.md | 13 +- .../local-ring-of-real-numbers.lagda.md | 8 +- ...ositive-and-negative-real-numbers.lagda.md | 45 ++++++ 9 files changed, 361 insertions(+), 23 deletions(-) diff --git a/src/commutative-algebra/local-commutative-rings.lagda.md b/src/commutative-algebra/local-commutative-rings.lagda.md index 9de71b60fc1..717095eaa53 100644 --- a/src/commutative-algebra/local-commutative-rings.lagda.md +++ b/src/commutative-algebra/local-commutative-rings.lagda.md @@ -66,4 +66,24 @@ module _ is-local-commutative-ring-Local-Commutative-Ring : is-local-Commutative-Ring commutative-ring-Local-Commutative-Ring is-local-commutative-ring-Local-Commutative-Ring = pr2 A + + zero-Local-Commutative-Ring : type-Local-Commutative-Ring + zero-Local-Commutative-Ring = zero-Ring ring-Local-Commutative-Ring + + one-Local-Commutative-Ring : type-Local-Commutative-Ring + one-Local-Commutative-Ring = one-Ring ring-Local-Commutative-Ring + + add-Local-Commutative-Ring : + type-Local-Commutative-Ring → type-Local-Commutative-Ring → + type-Local-Commutative-Ring + add-Local-Commutative-Ring = add-Ring ring-Local-Commutative-Ring + + mul-Local-Commutative-Ring : + type-Local-Commutative-Ring → type-Local-Commutative-Ring → + type-Local-Commutative-Ring + mul-Local-Commutative-Ring = mul-Ring ring-Local-Commutative-Ring + + neg-Local-Commutative-Ring : + type-Local-Commutative-Ring → type-Local-Commutative-Ring + neg-Local-Commutative-Ring = neg-Ring ring-Local-Commutative-Ring ``` diff --git a/src/linear-algebra.lagda.md b/src/linear-algebra.lagda.md index ba50e0c42c0..ba723c1a899 100644 --- a/src/linear-algebra.lagda.md +++ b/src/linear-algebra.lagda.md @@ -33,6 +33,7 @@ open import linear-algebra.matrices-on-rings public open import linear-algebra.multiplication-matrices public open import linear-algebra.preimages-of-left-module-structures-along-homomorphisms-of-rings public open import linear-algebra.rational-modules public +open import linear-algebra.real-vector-spaces public open import linear-algebra.right-modules-rings public open import linear-algebra.scalar-multiplication-matrices public open import linear-algebra.scalar-multiplication-tuples public @@ -46,4 +47,5 @@ open import linear-algebra.tuples-on-euclidean-domains public open import linear-algebra.tuples-on-monoids public open import linear-algebra.tuples-on-rings public open import linear-algebra.tuples-on-semirings public +open import linear-algebra.vector-spaces public ``` diff --git a/src/linear-algebra/real-vector-spaces.lagda.md b/src/linear-algebra/real-vector-spaces.lagda.md index ab72ab74bd5..1ee4b2f6451 100644 --- a/src/linear-algebra/real-vector-spaces.lagda.md +++ b/src/linear-algebra/real-vector-spaces.lagda.md @@ -7,16 +7,155 @@ module linear-algebra.real-vector-spaces where
Imports ```agda -open import real-numbers.local-ring-of-real-numbers -open import linear-algebra.vector-spaces +open import foundation.identity-types +open import foundation.sets open import foundation.universe-levels + +open import group-theory.abelian-groups + +open import linear-algebra.vector-spaces + +open import real-numbers.addition-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.local-ring-of-real-numbers +open import real-numbers.multiplication-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.raising-universe-levels-real-numbers +open import real-numbers.rational-real-numbers ```
## Idea +A +{{#concept "real vector space" WD="real vector space" WDID=Q46996054 Agda=ℝ-Vector-Space}} +is a [vector space](linear-algebra.vector-spaces.md) over the +[local commutative ring of real numbers](real-numbers.local-ring-of-real-numbers.md). + +## Definition + ```agda ℝ-Vector-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) ℝ-Vector-Space l1 l2 = Vector-Space l2 (local-commutative-ring-ℝ l1) ``` + +## Properties + +```agda +module _ + {l1 l2 : Level} (V : ℝ-Vector-Space l1 l2) + where + + ab-ℝ-Vector-Space : Ab l2 + ab-ℝ-Vector-Space = ab-Vector-Space (local-commutative-ring-ℝ l1) V + + set-ℝ-Vector-Space : Set l2 + set-ℝ-Vector-Space = set-Ab ab-ℝ-Vector-Space + + type-ℝ-Vector-Space : UU l2 + type-ℝ-Vector-Space = type-Ab ab-ℝ-Vector-Space + + add-ℝ-Vector-Space : + type-ℝ-Vector-Space → type-ℝ-Vector-Space → type-ℝ-Vector-Space + add-ℝ-Vector-Space = add-Ab ab-ℝ-Vector-Space + + zero-ℝ-Vector-Space : type-ℝ-Vector-Space + zero-ℝ-Vector-Space = zero-Ab ab-ℝ-Vector-Space + + neg-ℝ-Vector-Space : type-ℝ-Vector-Space → type-ℝ-Vector-Space + neg-ℝ-Vector-Space = neg-Ab ab-ℝ-Vector-Space + + mul-ℝ-Vector-Space : ℝ l1 → type-ℝ-Vector-Space → type-ℝ-Vector-Space + mul-ℝ-Vector-Space = mul-Vector-Space (local-commutative-ring-ℝ l1) V + + associative-add-ℝ-Vector-Space : + (v w x : type-ℝ-Vector-Space) → + add-ℝ-Vector-Space (add-ℝ-Vector-Space v w) x = + add-ℝ-Vector-Space v (add-ℝ-Vector-Space w x) + associative-add-ℝ-Vector-Space = associative-add-Ab ab-ℝ-Vector-Space + + left-unit-law-add-ℝ-Vector-Space : + (v : type-ℝ-Vector-Space) → add-ℝ-Vector-Space zero-ℝ-Vector-Space v = v + left-unit-law-add-ℝ-Vector-Space = left-unit-law-add-Ab ab-ℝ-Vector-Space + + right-unit-law-add-ℝ-Vector-Space : + (v : type-ℝ-Vector-Space) → add-ℝ-Vector-Space v zero-ℝ-Vector-Space = v + right-unit-law-add-ℝ-Vector-Space = right-unit-law-add-Ab ab-ℝ-Vector-Space + + left-inverse-law-add-ℝ-Vector-Space : + (v : type-ℝ-Vector-Space) → + add-ℝ-Vector-Space (neg-ℝ-Vector-Space v) v = zero-ℝ-Vector-Space + left-inverse-law-add-ℝ-Vector-Space = + left-inverse-law-add-Ab ab-ℝ-Vector-Space + + right-inverse-law-add-ℝ-Vector-Space : + (v : type-ℝ-Vector-Space) → + add-ℝ-Vector-Space v (neg-ℝ-Vector-Space v) = zero-ℝ-Vector-Space + right-inverse-law-add-ℝ-Vector-Space = + right-inverse-law-add-Ab ab-ℝ-Vector-Space + + commutative-add-ℝ-Vector-Space : + (v w : type-ℝ-Vector-Space) → + add-ℝ-Vector-Space v w = add-ℝ-Vector-Space w v + commutative-add-ℝ-Vector-Space = commutative-add-Ab ab-ℝ-Vector-Space + + left-unit-law-mul-ℝ-Vector-Space : + (v : type-ℝ-Vector-Space) → + mul-ℝ-Vector-Space (raise-ℝ l1 one-ℝ) v = v + left-unit-law-mul-ℝ-Vector-Space = + left-unit-law-mul-Vector-Space (local-commutative-ring-ℝ l1) V + + left-distributive-mul-add-ℝ-Vector-Space : + (r : ℝ l1) (v w : type-ℝ-Vector-Space) → + mul-ℝ-Vector-Space r (add-ℝ-Vector-Space v w) = + add-ℝ-Vector-Space (mul-ℝ-Vector-Space r v) (mul-ℝ-Vector-Space r w) + left-distributive-mul-add-ℝ-Vector-Space = + left-distributive-mul-add-Vector-Space (local-commutative-ring-ℝ l1) V + + right-distributive-mul-add-ℝ-Vector-Space : + (r s : ℝ l1) (v : type-ℝ-Vector-Space) → + mul-ℝ-Vector-Space (r +ℝ s) v = + add-ℝ-Vector-Space (mul-ℝ-Vector-Space r v) (mul-ℝ-Vector-Space s v) + right-distributive-mul-add-ℝ-Vector-Space = + right-distributive-mul-add-Vector-Space (local-commutative-ring-ℝ l1) V + + associative-mul-ℝ-Vector-Space : + (r s : ℝ l1) (v : type-ℝ-Vector-Space) → + mul-ℝ-Vector-Space (r *ℝ s) v = + mul-ℝ-Vector-Space r (mul-ℝ-Vector-Space s v) + associative-mul-ℝ-Vector-Space = + associative-mul-Vector-Space (local-commutative-ring-ℝ l1) V + + left-zero-law-mul-ℝ-Vector-Space : + (v : type-ℝ-Vector-Space) → + mul-ℝ-Vector-Space (raise-ℝ l1 zero-ℝ) v = zero-ℝ-Vector-Space + left-zero-law-mul-ℝ-Vector-Space = + left-zero-law-mul-Vector-Space (local-commutative-ring-ℝ l1) V + + right-zero-law-mul-ℝ-Vector-Space : + (r : ℝ l1) → + mul-ℝ-Vector-Space r zero-ℝ-Vector-Space = zero-ℝ-Vector-Space + right-zero-law-mul-ℝ-Vector-Space = + right-zero-law-mul-Vector-Space (local-commutative-ring-ℝ l1) V + + left-negative-law-mul-ℝ-Vector-Space : + (r : ℝ l1) (v : type-ℝ-Vector-Space) → + mul-ℝ-Vector-Space (neg-ℝ r) v = + neg-ℝ-Vector-Space (mul-ℝ-Vector-Space r v) + left-negative-law-mul-ℝ-Vector-Space = + left-negative-law-mul-Vector-Space (local-commutative-ring-ℝ l1) V + + right-negative-law-mul-ℝ-Vector-Space : + (r : ℝ l1) (v : type-ℝ-Vector-Space) → + mul-ℝ-Vector-Space r (neg-ℝ-Vector-Space v) = + neg-ℝ-Vector-Space (mul-ℝ-Vector-Space r v) + right-negative-law-mul-ℝ-Vector-Space = + right-negative-law-mul-Vector-Space (local-commutative-ring-ℝ l1) V + + mul-neg-one-ℝ-Vector-Space : + (v : type-ℝ-Vector-Space) → + mul-ℝ-Vector-Space (neg-ℝ (raise-ℝ l1 one-ℝ)) v = neg-ℝ-Vector-Space v + mul-neg-one-ℝ-Vector-Space = + mul-neg-one-Vector-Space (local-commutative-ring-ℝ l1) V +``` diff --git a/src/linear-algebra/vector-spaces.lagda.md b/src/linear-algebra/vector-spaces.lagda.md index d9e39a8ed7c..9d253a8aba8 100644 --- a/src/linear-algebra/vector-spaces.lagda.md +++ b/src/linear-algebra/vector-spaces.lagda.md @@ -7,10 +7,14 @@ module linear-algebra.vector-spaces where
Imports ```agda +open import commutative-algebra.local-commutative-rings + +open import foundation.identity-types open import foundation.sets open import foundation.universe-levels + open import group-theory.abelian-groups -open import commutative-algebra.local-commutative-rings + open import linear-algebra.left-modules-commutative-rings ``` @@ -52,4 +56,125 @@ module _ add-Vector-Space : type-Vector-Space → type-Vector-Space → type-Vector-Space add-Vector-Space = add-Ab ab-Vector-Space + + zero-Vector-Space : type-Vector-Space + zero-Vector-Space = zero-Ab ab-Vector-Space + + neg-Vector-Space : type-Vector-Space → type-Vector-Space + neg-Vector-Space = neg-Ab ab-Vector-Space + + mul-Vector-Space : + type-Local-Commutative-Ring R → type-Vector-Space → type-Vector-Space + mul-Vector-Space = + mul-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + associative-add-Vector-Space : + (v w x : type-Vector-Space) → + add-Vector-Space (add-Vector-Space v w) x = + add-Vector-Space v (add-Vector-Space w x) + associative-add-Vector-Space = associative-add-Ab ab-Vector-Space + + left-unit-law-add-Vector-Space : + (v : type-Vector-Space) → add-Vector-Space zero-Vector-Space v = v + left-unit-law-add-Vector-Space = left-unit-law-add-Ab ab-Vector-Space + + right-unit-law-add-Vector-Space : + (v : type-Vector-Space) → add-Vector-Space v zero-Vector-Space = v + right-unit-law-add-Vector-Space = right-unit-law-add-Ab ab-Vector-Space + + left-inverse-law-add-Vector-Space : + (v : type-Vector-Space) → + add-Vector-Space (neg-Vector-Space v) v = zero-Vector-Space + left-inverse-law-add-Vector-Space = left-inverse-law-add-Ab ab-Vector-Space + + right-inverse-law-add-Vector-Space : + (v : type-Vector-Space) → + add-Vector-Space v (neg-Vector-Space v) = zero-Vector-Space + right-inverse-law-add-Vector-Space = right-inverse-law-add-Ab ab-Vector-Space + + commutative-add-Vector-Space : + (v w : type-Vector-Space) → add-Vector-Space v w = add-Vector-Space w v + commutative-add-Vector-Space = commutative-add-Ab ab-Vector-Space + + left-unit-law-mul-Vector-Space : + (v : type-Vector-Space) → + mul-Vector-Space (one-Local-Commutative-Ring R) v = v + left-unit-law-mul-Vector-Space = + left-unit-law-mul-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + left-distributive-mul-add-Vector-Space : + (r : type-Local-Commutative-Ring R) (v w : type-Vector-Space) → + mul-Vector-Space r (add-Vector-Space v w) = + add-Vector-Space (mul-Vector-Space r v) (mul-Vector-Space r w) + left-distributive-mul-add-Vector-Space = + left-distributive-mul-add-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + right-distributive-mul-add-Vector-Space : + (r s : type-Local-Commutative-Ring R) (v : type-Vector-Space) → + mul-Vector-Space (add-Local-Commutative-Ring R r s) v = + add-Vector-Space (mul-Vector-Space r v) (mul-Vector-Space s v) + right-distributive-mul-add-Vector-Space = + right-distributive-mul-add-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + associative-mul-Vector-Space : + (r s : type-Local-Commutative-Ring R) (v : type-Vector-Space) → + mul-Vector-Space (mul-Local-Commutative-Ring R r s) v = + mul-Vector-Space r (mul-Vector-Space s v) + associative-mul-Vector-Space = + associative-mul-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + left-zero-law-mul-Vector-Space : + (v : type-Vector-Space) → + mul-Vector-Space (zero-Local-Commutative-Ring R) v = zero-Vector-Space + left-zero-law-mul-Vector-Space = + left-zero-law-mul-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + right-zero-law-mul-Vector-Space : + (r : type-Local-Commutative-Ring R) → + mul-Vector-Space r zero-Vector-Space = zero-Vector-Space + right-zero-law-mul-Vector-Space = + right-zero-law-mul-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + left-negative-law-mul-Vector-Space : + (r : type-Local-Commutative-Ring R) (v : type-Vector-Space) → + mul-Vector-Space (neg-Local-Commutative-Ring R r) v = + neg-Vector-Space (mul-Vector-Space r v) + left-negative-law-mul-Vector-Space = + left-negative-law-mul-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + right-negative-law-mul-Vector-Space : + (r : type-Local-Commutative-Ring R) (v : type-Vector-Space) → + mul-Vector-Space r (neg-Vector-Space v) = + neg-Vector-Space (mul-Vector-Space r v) + right-negative-law-mul-Vector-Space = + right-negative-law-mul-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) + + mul-neg-one-Vector-Space : + (v : type-Vector-Space) → + mul-Vector-Space + ( neg-Local-Commutative-Ring R (one-Local-Commutative-Ring R)) + ( v) = + neg-Vector-Space v + mul-neg-one-Vector-Space = + mul-neg-one-left-module-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) + ( V) ``` diff --git a/src/real-numbers.lagda.md b/src/real-numbers.lagda.md index a3ef18a8455..fd03949811f 100644 --- a/src/real-numbers.lagda.md +++ b/src/real-numbers.lagda.md @@ -9,7 +9,9 @@ open import real-numbers.absolute-value-closed-intervals-real-numbers public open import real-numbers.absolute-value-real-numbers public open import real-numbers.accumulation-points-subsets-real-numbers public open import real-numbers.addition-lower-dedekind-real-numbers public +open import real-numbers.addition-negative-real-numbers public open import real-numbers.addition-nonnegative-real-numbers public +open import real-numbers.addition-nonzero-real-numbers public open import real-numbers.addition-positive-real-numbers public open import real-numbers.addition-real-numbers public open import real-numbers.addition-upper-dedekind-real-numbers public @@ -45,6 +47,7 @@ open import real-numbers.large-multiplicative-monoid-of-real-numbers public open import real-numbers.large-ring-of-real-numbers public open import real-numbers.limits-sequences-real-numbers public open import real-numbers.lipschitz-continuity-multiplication-real-numbers public +open import real-numbers.local-ring-of-real-numbers public open import real-numbers.located-metric-space-of-real-numbers public open import real-numbers.lower-dedekind-real-numbers public open import real-numbers.maximum-finite-families-real-numbers public diff --git a/src/real-numbers/addition-negative-real-numbers.lagda.md b/src/real-numbers/addition-negative-real-numbers.lagda.md index 66f7d5e1e54..c3e3cef113d 100644 --- a/src/real-numbers/addition-negative-real-numbers.lagda.md +++ b/src/real-numbers/addition-negative-real-numbers.lagda.md @@ -9,21 +9,22 @@ module real-numbers.addition-negative-real-numbers where
Imports ```agda -open import real-numbers.negative-real-numbers -open import real-numbers.dedekind-real-numbers -open import foundation.transport-along-identifications -open import real-numbers.rational-real-numbers -open import real-numbers.negation-real-numbers +open import foundation.dependent-pair-types +open import foundation.disjunction open import foundation.functoriality-disjunction +open import foundation.transport-along-identifications +open import foundation.universe-levels + open import real-numbers.addition-positive-real-numbers -open import foundation.disjunction open import real-numbers.addition-real-numbers -open import real-numbers.strict-inequality-real-numbers -open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers -open import real-numbers.positive-real-numbers +open import real-numbers.dedekind-real-numbers +open import real-numbers.negation-real-numbers +open import real-numbers.negative-real-numbers open import real-numbers.positive-and-negative-real-numbers -open import foundation.universe-levels -open import foundation.dependent-pair-types +open import real-numbers.positive-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.strict-inequalities-addition-and-subtraction-real-numbers +open import real-numbers.strict-inequality-real-numbers ```
diff --git a/src/real-numbers/addition-nonzero-real-numbers.lagda.md b/src/real-numbers/addition-nonzero-real-numbers.lagda.md index 3ab16e4f8b7..e59f5b96f1c 100644 --- a/src/real-numbers/addition-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/addition-nonzero-real-numbers.lagda.md @@ -9,15 +9,16 @@ module real-numbers.addition-nonzero-real-numbers where
Imports ```agda -open import real-numbers.nonzero-real-numbers -open import real-numbers.addition-positive-real-numbers +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.functoriality-disjunction +open import foundation.universe-levels + open import real-numbers.addition-negative-real-numbers +open import real-numbers.addition-positive-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers -open import foundation.functoriality-disjunction -open import foundation.disjunction -open import foundation.dependent-pair-types -open import foundation.universe-levels +open import real-numbers.nonzero-real-numbers ```
diff --git a/src/real-numbers/local-ring-of-real-numbers.lagda.md b/src/real-numbers/local-ring-of-real-numbers.lagda.md index 282f1dc2237..030a5b42de4 100644 --- a/src/real-numbers/local-ring-of-real-numbers.lagda.md +++ b/src/real-numbers/local-ring-of-real-numbers.lagda.md @@ -10,14 +10,16 @@ module real-numbers.local-ring-of-real-numbers where ```agda open import commutative-algebra.local-commutative-rings -open import real-numbers.addition-real-numbers -open import real-numbers.nonzero-real-numbers + open import foundation.dependent-pair-types open import foundation.functoriality-disjunction +open import foundation.universe-levels + open import real-numbers.addition-nonzero-real-numbers +open import real-numbers.addition-real-numbers open import real-numbers.large-ring-of-real-numbers open import real-numbers.multiplicative-inverses-nonzero-real-numbers -open import foundation.universe-levels +open import real-numbers.nonzero-real-numbers ```
diff --git a/src/real-numbers/positive-and-negative-real-numbers.lagda.md b/src/real-numbers/positive-and-negative-real-numbers.lagda.md index 18f7f33b894..e5964a4b3d2 100644 --- a/src/real-numbers/positive-and-negative-real-numbers.lagda.md +++ b/src/real-numbers/positive-and-negative-real-numbers.lagda.md @@ -9,7 +9,10 @@ module real-numbers.positive-and-negative-real-numbers where
Imports ```agda +open import foundation.cartesian-product-types open import foundation.dependent-pair-types +open import foundation.logical-equivalences +open import foundation.negation open import foundation.transport-along-identifications open import foundation.universe-levels @@ -78,6 +81,38 @@ neg-ℝ⁻ : {l : Level} → ℝ⁻ l → ℝ⁺ l neg-ℝ⁻ (x , is-neg-x) = (neg-ℝ x , neg-is-negative-ℝ x is-neg-x) ``` +### A real number is negative if and only if its negation is positive + +```agda +abstract + is-negative-is-positive-neg-ℝ : + {l : Level} (x : ℝ l) → is-positive-ℝ (neg-ℝ x) → is-negative-ℝ x + is-negative-is-positive-neg-ℝ x 0<-x = + tr is-negative-ℝ (neg-neg-ℝ x) (neg-is-positive-ℝ (neg-ℝ x) 0<-x) + +is-negative-iff-neg-is-positive-ℝ : + {l : Level} (x : ℝ l) → is-negative-ℝ x ↔ is-positive-ℝ (neg-ℝ x) +is-negative-iff-neg-is-positive-ℝ x = + ( neg-is-negative-ℝ x , + is-negative-is-positive-neg-ℝ x) +``` + +### A real number is positive if and only if its negation is negative + +```agda +abstract + is-positive-is-negative-neg-ℝ : + {l : Level} (x : ℝ l) → is-negative-ℝ (neg-ℝ x) → is-positive-ℝ x + is-positive-is-negative-neg-ℝ x -x<0 = + tr is-positive-ℝ (neg-neg-ℝ x) (neg-is-negative-ℝ (neg-ℝ x) -x<0) + +is-positive-iff-neg-is-negative-ℝ : + {l : Level} (x : ℝ l) → is-positive-ℝ x ↔ is-negative-ℝ (neg-ℝ x) +is-positive-iff-neg-is-negative-ℝ x = + ( neg-is-positive-ℝ x , + is-positive-is-negative-neg-ℝ x) +``` + ### If a nonnegative real number `x` is less than a real number `y`, `y` is positive ```agda @@ -87,3 +122,13 @@ abstract is-positive-ℝ y is-positive-le-ℝ⁰⁺ (x , 0≤x) y = concatenate-leq-le-ℝ zero-ℝ x y 0≤x ``` + +### Real numbers are not both negative and nonnegative + +```agda +abstract + is-not-negative-and-nonnegative-ℝ : + {l : Level} {x : ℝ l} → ¬ (is-negative-ℝ x × is-nonnegative-ℝ x) + is-not-negative-and-nonnegative-ℝ {x = x} (x<0 , 0≤x) = + not-leq-le-ℝ x zero-ℝ x<0 0≤x +``` From 71b83ece629c4dc99ca62884730939ebb125f81f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 10 Nov 2025 20:10:28 -0800 Subject: [PATCH 109/134] Add properties for complex vector spaces --- .../complex-vector-spaces.lagda.md | 120 ++++++++++++++++++ .../real-vector-spaces.lagda.md | 5 - 2 files changed, 120 insertions(+), 5 deletions(-) diff --git a/src/linear-algebra/complex-vector-spaces.lagda.md b/src/linear-algebra/complex-vector-spaces.lagda.md index fcff11674ad..23c97e5303b 100644 --- a/src/linear-algebra/complex-vector-spaces.lagda.md +++ b/src/linear-algebra/complex-vector-spaces.lagda.md @@ -22,3 +22,123 @@ open import linear-algebra.vector-spaces ℂ-Vector-Space : (l1 l2 : Level) → UU (lsuc l1 ⊔ lsuc l2) ℂ-Vector-Space l1 l2 = Vector-Space l2 (local-commutative-ring-ℂ l1) ``` + +## Properties + +```agda +module _ + {l1 l2 : Level} (V : ℂ-Vector-Space l1 l2) + where + + ab-ℂ-Vector-Space : Ab l2 + ab-ℂ-Vector-Space = ab-Vector-Space (local-commutative-ring-ℂ l1) V + + set-ℂ-Vector-Space : Set l2 + set-ℂ-Vector-Space = set-Ab ab-ℂ-Vector-Space + + type-ℂ-Vector-Space : UU l2 + type-ℂ-Vector-Space = type-Ab ab-ℂ-Vector-Space + + add-ℂ-Vector-Space : + type-ℂ-Vector-Space → type-ℂ-Vector-Space → type-ℂ-Vector-Space + add-ℂ-Vector-Space = add-Ab ab-ℂ-Vector-Space + + zero-ℂ-Vector-Space : type-ℂ-Vector-Space + zero-ℂ-Vector-Space = zero-Ab ab-ℂ-Vector-Space + + neg-ℂ-Vector-Space : type-ℂ-Vector-Space → type-ℂ-Vector-Space + neg-ℂ-Vector-Space = neg-Ab ab-ℂ-Vector-Space + + mul-ℂ-Vector-Space : ℂ l1 → type-ℂ-Vector-Space → type-ℂ-Vector-Space + mul-ℂ-Vector-Space = mul-Vector-Space (local-commutative-ring-ℂ l1) V + + associative-add-ℂ-Vector-Space : + (v w x : type-ℂ-Vector-Space) → + add-ℂ-Vector-Space (add-ℂ-Vector-Space v w) x = + add-ℂ-Vector-Space v (add-ℂ-Vector-Space w x) + associative-add-ℂ-Vector-Space = associative-add-Ab ab-ℂ-Vector-Space + + left-unit-law-add-ℂ-Vector-Space : + (v : type-ℂ-Vector-Space) → add-ℂ-Vector-Space zero-ℂ-Vector-Space v = v + left-unit-law-add-ℂ-Vector-Space = left-unit-law-add-Ab ab-ℂ-Vector-Space + + right-unit-law-add-ℂ-Vector-Space : + (v : type-ℂ-Vector-Space) → add-ℂ-Vector-Space v zero-ℂ-Vector-Space = v + right-unit-law-add-ℂ-Vector-Space = right-unit-law-add-Ab ab-ℂ-Vector-Space + + left-inverse-law-add-ℂ-Vector-Space : + (v : type-ℂ-Vector-Space) → + add-ℂ-Vector-Space (neg-ℂ-Vector-Space v) v = zero-ℂ-Vector-Space + left-inverse-law-add-ℂ-Vector-Space = + left-inverse-law-add-Ab ab-ℂ-Vector-Space + + right-inverse-law-add-ℂ-Vector-Space : + (v : type-ℂ-Vector-Space) → + add-ℂ-Vector-Space v (neg-ℂ-Vector-Space v) = zero-ℂ-Vector-Space + right-inverse-law-add-ℂ-Vector-Space = + right-inverse-law-add-Ab ab-ℂ-Vector-Space + + commutative-add-ℂ-Vector-Space : + (v w : type-ℂ-Vector-Space) → + add-ℂ-Vector-Space v w = add-ℂ-Vector-Space w v + commutative-add-ℂ-Vector-Space = commutative-add-Ab ab-ℂ-Vector-Space + + left-unit-law-mul-ℂ-Vector-Space : + (v : type-ℂ-Vector-Space) → + mul-ℂ-Vector-Space (raise-ℂ l1 one-ℂ) v = v + left-unit-law-mul-ℂ-Vector-Space = + left-unit-law-mul-Vector-Space (local-commutative-ring-ℂ l1) V + + left-distributive-mul-add-ℂ-Vector-Space : + (r : ℂ l1) (v w : type-ℂ-Vector-Space) → + mul-ℂ-Vector-Space r (add-ℂ-Vector-Space v w) = + add-ℂ-Vector-Space (mul-ℂ-Vector-Space r v) (mul-ℂ-Vector-Space r w) + left-distributive-mul-add-ℂ-Vector-Space = + left-distributive-mul-add-Vector-Space (local-commutative-ring-ℂ l1) V + + right-distributive-mul-add-ℂ-Vector-Space : + (r s : ℂ l1) (v : type-ℂ-Vector-Space) → + mul-ℂ-Vector-Space (r +ℂ s) v = + add-ℂ-Vector-Space (mul-ℂ-Vector-Space r v) (mul-ℂ-Vector-Space s v) + right-distributive-mul-add-ℂ-Vector-Space = + right-distributive-mul-add-Vector-Space (local-commutative-ring-ℂ l1) V + + associative-mul-ℂ-Vector-Space : + (r s : ℂ l1) (v : type-ℂ-Vector-Space) → + mul-ℂ-Vector-Space (r *ℂ s) v = + mul-ℂ-Vector-Space r (mul-ℂ-Vector-Space s v) + associative-mul-ℂ-Vector-Space = + associative-mul-Vector-Space (local-commutative-ring-ℂ l1) V + + left-zero-law-mul-ℂ-Vector-Space : + (v : type-ℂ-Vector-Space) → + mul-ℂ-Vector-Space (raise-ℂ l1 zero-ℂ) v = zero-ℂ-Vector-Space + left-zero-law-mul-ℂ-Vector-Space = + left-zero-law-mul-Vector-Space (local-commutative-ring-ℂ l1) V + + right-zero-law-mul-ℂ-Vector-Space : + (r : ℂ l1) → + mul-ℂ-Vector-Space r zero-ℂ-Vector-Space = zero-ℂ-Vector-Space + right-zero-law-mul-ℂ-Vector-Space = + right-zero-law-mul-Vector-Space (local-commutative-ring-ℂ l1) V + + left-negative-law-mul-ℂ-Vector-Space : + (r : ℂ l1) (v : type-ℂ-Vector-Space) → + mul-ℂ-Vector-Space (neg-ℂ r) v = + neg-ℂ-Vector-Space (mul-ℂ-Vector-Space r v) + left-negative-law-mul-ℂ-Vector-Space = + left-negative-law-mul-Vector-Space (local-commutative-ring-ℂ l1) V + + right-negative-law-mul-ℂ-Vector-Space : + (r : ℂ l1) (v : type-ℂ-Vector-Space) → + mul-ℂ-Vector-Space r (neg-ℂ-Vector-Space v) = + neg-ℂ-Vector-Space (mul-ℂ-Vector-Space r v) + right-negative-law-mul-ℂ-Vector-Space = + right-negative-law-mul-Vector-Space (local-commutative-ring-ℂ l1) V + + mul-neg-one-ℂ-Vector-Space : + (v : type-ℂ-Vector-Space) → + mul-ℂ-Vector-Space (neg-ℂ (raise-ℂ l1 one-ℂ)) v = neg-ℂ-Vector-Space v + mul-neg-one-ℂ-Vector-Space = + mul-neg-one-Vector-Space (local-commutative-ring-ℂ l1) V +``` diff --git a/src/linear-algebra/real-vector-spaces.lagda.md b/src/linear-algebra/real-vector-spaces.lagda.md index 98fb181caa8..1ee4b2f6451 100644 --- a/src/linear-algebra/real-vector-spaces.lagda.md +++ b/src/linear-algebra/real-vector-spaces.lagda.md @@ -7,11 +7,6 @@ module linear-algebra.real-vector-spaces where
Imports ```agda -open import foundation.universe-levels - -open import linear-algebra.vector-spaces - -open import real-numbers.local-ring-of-real-numbers open import foundation.identity-types open import foundation.sets open import foundation.universe-levels From 8ac326cf123b89fb2244d50f53fbfa7f43a6967e Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 11 Nov 2025 07:55:28 -0800 Subject: [PATCH 110/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- src/metric-spaces/apartness-located-metric-spaces.lagda.md | 6 +++--- src/real-numbers/absolute-value-real-numbers.lagda.md | 2 +- src/real-numbers/nonzero-real-numbers.lagda.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/metric-spaces/apartness-located-metric-spaces.lagda.md b/src/metric-spaces/apartness-located-metric-spaces.lagda.md index 4aeb3403b34..2dc671eb847 100644 --- a/src/metric-spaces/apartness-located-metric-spaces.lagda.md +++ b/src/metric-spaces/apartness-located-metric-spaces.lagda.md @@ -47,7 +47,7 @@ module _ apart-prop-Located-Metric-Space : Relation-Prop l2 (type-Located-Metric-Space M) apart-prop-Located-Metric-Space x y = - ∃ ℚ⁺ (λ ε → ¬' (neighborhood-prop-Located-Metric-Space M ε x y)) + ∃ ℚ⁺ (λ ε → ¬' neighborhood-prop-Located-Metric-Space M ε x y) apart-Located-Metric-Space : Relation l2 (type-Located-Metric-Space M) apart-Located-Metric-Space = @@ -101,8 +101,8 @@ module _ is-cotransitive-apart-Located-Metric-Space x y z x#y = let motive = - apart-prop-Located-Metric-Space M x z ∨ - apart-prop-Located-Metric-Space M y z + ( apart-prop-Located-Metric-Space M x z) ∨ + ( apart-prop-Located-Metric-Space M y z) open do-syntax-trunc-Prop motive in do (dxy , ¬Ndxy) ← x#y diff --git a/src/real-numbers/absolute-value-real-numbers.lagda.md b/src/real-numbers/absolute-value-real-numbers.lagda.md index b5ba7ee7b01..6e56c70a08e 100644 --- a/src/real-numbers/absolute-value-real-numbers.lagda.md +++ b/src/real-numbers/absolute-value-real-numbers.lagda.md @@ -419,7 +419,7 @@ abstract by inv (ap-mul-ℝ (eq-abs-sqrt-square-ℝ x) (eq-abs-sqrt-square-ℝ y)) ``` -### For any `ε : ℚ⁺`, `(abs-ℝ x - ε < x) ∨ (abs-ℝ x - ε < -x)` +### For any `ε : ℚ⁺`, `|x| - ε < x` or `|x| - ε < -x` ```agda abstract opaque diff --git a/src/real-numbers/nonzero-real-numbers.lagda.md b/src/real-numbers/nonzero-real-numbers.lagda.md index 6c785656b35..5512d93592e 100644 --- a/src/real-numbers/nonzero-real-numbers.lagda.md +++ b/src/real-numbers/nonzero-real-numbers.lagda.md @@ -48,7 +48,7 @@ equivalently if it is [negative](real-numbers.negative-real-numbers.md) ```agda is-nonzero-prop-ℝ : {l : Level} → ℝ l → Prop l -is-nonzero-prop-ℝ x = is-negative-prop-ℝ x ∨ is-positive-prop-ℝ x +is-nonzero-prop-ℝ x = (is-negative-prop-ℝ x) ∨ (is-positive-prop-ℝ x) is-nonzero-ℝ : {l : Level} → ℝ l → UU l is-nonzero-ℝ x = type-Prop (is-nonzero-prop-ℝ x) From 98a567d06bea89ca0a051cf3966c5baef29d284f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 11 Nov 2025 08:05:11 -0800 Subject: [PATCH 111/134] Fix --- src/complex-numbers/apartness-complex-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/complex-numbers/apartness-complex-numbers.lagda.md b/src/complex-numbers/apartness-complex-numbers.lagda.md index 9a0aac2539b..e58a5ee7283 100644 --- a/src/complex-numbers/apartness-complex-numbers.lagda.md +++ b/src/complex-numbers/apartness-complex-numbers.lagda.md @@ -30,7 +30,7 @@ Two [complex numbers](complex-numbers.complex-numbers.md) are {{#concept "apart" Agda=apart-ℂ}} if their [real](real-numbers.dedekind-real-numbers.md) parts are [apart](real-numbers.apartness-real-numbers.md) [or](foundation.disjunction.md) -their complex parts are [apart]. +their imaginary parts are [apart]. ## Definition From 53e7aeb755e2d6c043d1726da48771f1d455bb23 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 12 Nov 2025 09:45:57 -0800 Subject: [PATCH 112/134] make pre-commit --- src/complex-numbers.lagda.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/complex-numbers.lagda.md b/src/complex-numbers.lagda.md index b1c16d18866..bb5ba406cb7 100644 --- a/src/complex-numbers.lagda.md +++ b/src/complex-numbers.lagda.md @@ -4,20 +4,17 @@ module complex-numbers where open import complex-numbers.addition-complex-numbers public -open import complex-numbers.additive-group-of-complex-numbers public open import complex-numbers.apartness-complex-numbers public open import complex-numbers.complex-numbers public open import complex-numbers.conjugation-complex-numbers public open import complex-numbers.eisenstein-integers public open import complex-numbers.gaussian-integers public +open import complex-numbers.large-additive-group-of-complex-numbers public +open import complex-numbers.large-ring-of-complex-numbers public open import complex-numbers.magnitude-complex-numbers public open import complex-numbers.multiplication-complex-numbers public open import complex-numbers.multiplicative-inverses-nonzero-complex-numbers public open import complex-numbers.nonzero-complex-numbers public -open import complex-numbers.ring-of-complex-numbers public -open import complex-numbers.large-additive-group-of-complex-numbers public -open import complex-numbers.large-ring-of-complex-numbers public -open import complex-numbers.multiplication-complex-numbers public open import complex-numbers.raising-universe-levels-complex-numbers public open import complex-numbers.similarity-complex-numbers public ``` From e32bd414a1abb0914672bb24c1bbf2a7d201ae62 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 12 Nov 2025 09:47:38 -0800 Subject: [PATCH 113/134] make pre-commit --- src/complex-numbers.lagda.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/complex-numbers.lagda.md b/src/complex-numbers.lagda.md index b1c16d18866..bb5ba406cb7 100644 --- a/src/complex-numbers.lagda.md +++ b/src/complex-numbers.lagda.md @@ -4,20 +4,17 @@ module complex-numbers where open import complex-numbers.addition-complex-numbers public -open import complex-numbers.additive-group-of-complex-numbers public open import complex-numbers.apartness-complex-numbers public open import complex-numbers.complex-numbers public open import complex-numbers.conjugation-complex-numbers public open import complex-numbers.eisenstein-integers public open import complex-numbers.gaussian-integers public +open import complex-numbers.large-additive-group-of-complex-numbers public +open import complex-numbers.large-ring-of-complex-numbers public open import complex-numbers.magnitude-complex-numbers public open import complex-numbers.multiplication-complex-numbers public open import complex-numbers.multiplicative-inverses-nonzero-complex-numbers public open import complex-numbers.nonzero-complex-numbers public -open import complex-numbers.ring-of-complex-numbers public -open import complex-numbers.large-additive-group-of-complex-numbers public -open import complex-numbers.large-ring-of-complex-numbers public -open import complex-numbers.multiplication-complex-numbers public open import complex-numbers.raising-universe-levels-complex-numbers public open import complex-numbers.similarity-complex-numbers public ``` From a1a6a8c03680c8d79fc93a51c01fbdbe03de2ce4 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Nov 2025 08:30:00 -0800 Subject: [PATCH 114/134] Update src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../cauchy-sequences-metric-spaces.lagda.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md index 4fe9086ee64..71c916ccf96 100644 --- a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md @@ -511,23 +511,23 @@ module _ in ( nat-nonzero-ℕ n⁺ , λ m n≤m → - monotonic-neighborhood-Metric-Space M - ( map-cauchy-sequence-cauchy-approximation-Metric-Space M x m) + monotonic-neighborhood-Metric-Space M + ( map-cauchy-sequence-cauchy-approximation-Metric-Space M x m) + ( lim) + ( positive-reciprocal-rational-succ-ℕ m) + ( ε) + ( transitive-le-ℚ _ (reciprocal-rational-ℕ⁺ n⁺) _ + ( 1/n⁺<ε) + ( inv-le-ℚ⁺ + ( positive-rational-ℕ⁺ n⁺) + ( positive-rational-ℕ⁺ (succ-nonzero-ℕ' m)) + ( preserves-le-rational-ℕ + ( le-succ-leq-ℕ _ _ n≤m)))) + ( saturated-is-limit-cauchy-approximation-Metric-Space M + ( x) ( lim) - ( positive-reciprocal-rational-succ-ℕ m) - ( ε) - ( transitive-le-ℚ _ (reciprocal-rational-ℕ⁺ n⁺) _ - ( 1/n⁺<ε) - ( inv-le-ℚ⁺ - ( positive-rational-ℕ⁺ n⁺) - ( positive-rational-ℕ⁺ (succ-nonzero-ℕ' m)) - ( preserves-le-rational-ℕ - ( le-succ-leq-ℕ _ _ n≤m)))) - ( saturated-is-limit-cauchy-approximation-Metric-Space M - ( x) - ( lim) - ( is-lim) - ( positive-reciprocal-rational-succ-ℕ m)))) + ( is-lim) + ( positive-reciprocal-rational-succ-ℕ m)))) ``` ### If the Cauchy sequence associated with a Cauchy approximation has a limit modulus at `l`, its associated approximation converges to `l` From 1bcb06aebe1a3a39abbcf29c11c8655b52f02f00 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Nov 2025 08:30:09 -0800 Subject: [PATCH 115/134] Update src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../accumulation-points-subsets-located-metric-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md index 475db6744c7..4a1a8ba60fd 100644 --- a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md +++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md @@ -43,7 +43,7 @@ open import metric-spaces.subspaces-metric-spaces ## Idea An -{{#concept "accumulation point" WDID=Q858223 WD="limit point" Disambiguation="of a metric space" Agda=accumulation-point-subset-Located-Metric-Space}} +{{#concept "accumulation point" WDID=Q858223 WD="limit point" Disambiguation="of a subset of a located metric space" Agda=accumulation-point-subset-Located-Metric-Space}} of a subset `S` of a [located metric space](metric-spaces.located-metric-spaces.md) `X` is a point `x : X` such that there exists a From a9bacddd1db6792e51213ec46b51f20ee460e020 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Nov 2025 08:30:20 -0800 Subject: [PATCH 116/134] Update src/real-numbers/binary-maximum-real-numbers.lagda.md Co-authored-by: Fredrik Bakke --- src/real-numbers/binary-maximum-real-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/real-numbers/binary-maximum-real-numbers.lagda.md b/src/real-numbers/binary-maximum-real-numbers.lagda.md index 17dfd98f51b..b225ca78909 100644 --- a/src/real-numbers/binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/binary-maximum-real-numbers.lagda.md @@ -384,7 +384,7 @@ module _ ( is-located-lower-upper-cut-ℝ x q Date: Thu, 13 Nov 2025 08:53:31 -0800 Subject: [PATCH 117/134] Progress --- ...mulation-points-subsets-located-metric-spaces.lagda.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md index 475db6744c7..4c1b343680c 100644 --- a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md +++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md @@ -50,7 +50,8 @@ of a subset `S` of a [Cauchy approximation](metric-spaces.cauchy-approximations-metric-spaces.md) `a` with [limit](metric-spaces.limits-of-cauchy-approximations-metric-spaces.md) `x` such that for every `ε : ℚ⁺`, `a ε` is in `S` and is -[apart](metric-spaces.apartness-located-metric-spaces.md) from `x`. +[apart](metric-spaces.apartness-located-metric-spaces.md) from `x`. In +particular, this implies an accumulation point is not isolated. ## Definition @@ -313,3 +314,8 @@ module _ ( S) ( x)) ``` + +## External links + +- [Accumulation point](https://en.wikipedia.org/wiki/Accumulation_point) on + Wikipedia From 08bb7e36150e407b449c46ca27195c99b471cc5f Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 13 Nov 2025 15:09:52 -0800 Subject: [PATCH 118/134] Fixes --- ...uchy-approximations-metric-spaces.lagda.md | 5 +- ...per-closed-intervals-real-numbers.lagda.md | 171 +++++++++++++++++- 2 files changed, 172 insertions(+), 4 deletions(-) diff --git a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md index 6757f63e605..d9a5fe6ea14 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-metric-spaces.lagda.md @@ -156,13 +156,14 @@ module _ where abstract - map-short-function-is-limit-cauchy-approximation-Metric-Space : + preserves-limit-cauchy-approximation-map-short-function-Metric-Space : is-limit-cauchy-approximation-Metric-Space A a lim → is-limit-cauchy-approximation-Metric-Space ( B) ( map-short-function-cauchy-approximation-Metric-Space A B f a) ( map-short-function-Metric-Space A B f lim) - map-short-function-is-limit-cauchy-approximation-Metric-Space is-lim-a ε δ = + preserves-limit-cauchy-approximation-map-short-function-Metric-Space + is-lim-a ε δ = is-short-map-short-function-Metric-Space A B ( f) ( ε +ℚ⁺ δ) diff --git a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md index 51360ec483c..d52fd8ef171 100644 --- a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md +++ b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md @@ -185,6 +185,173 @@ Note that this cannot be made more universe-polymorphic. ```agda abstract + is-accumulation-point-le-upper-bound-proper-closed-interval-ℝ : + {l : Level} ([a,b] : proper-closed-interval-ℝ l l) → + (x : ℝ l) → is-in-proper-closed-interval-ℝ [a,b] x → + le-ℝ x (upper-bound-proper-closed-interval-ℝ [a,b]) → + is-accumulation-point-subset-ℝ + ( subtype-proper-closed-interval-ℝ l [a,b]) + ( x) + is-accumulation-point-le-upper-bound-proper-closed-interval-ℝ + {l} [a,b]@(a , b , a Date: Thu, 13 Nov 2025 15:12:23 -0800 Subject: [PATCH 119/134] Simplify --- ...per-closed-intervals-real-numbers.lagda.md | 156 ++---------------- 1 file changed, 14 insertions(+), 142 deletions(-) diff --git a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md index d52fd8ef171..fa15226a2a3 100644 --- a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md +++ b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md @@ -359,146 +359,18 @@ abstract ( subtype-proper-closed-interval-ℝ l [a,b]) ( x) is-accumulation-point-is-in-proper-closed-interval-ℝ - {l} [a,b]@(a , b , a Date: Fri, 14 Nov 2025 16:53:27 -0800 Subject: [PATCH 120/134] Fix braces --- src/complex-numbers/magnitude-complex-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index 22a709c6efb..ee2b26b10c4 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -39,7 +39,7 @@ open import real-numbers.squares-real-numbers The {{#concept "magnitude" WD="magnitude of a complex number" WDID=Q3317982 Agda=magnitude-ℂ}} of a [complex number](complex-numbers.complex-numbers.md) `a + bi` is defined as -$$\sqrt{a^2 + b^2}}$$. +$$\sqrt{a^2 + b^2}$$. ## Definition From ecfd72dae26027ec681f5dccb5b4de183f7c8f39 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 15 Nov 2025 09:16:15 -0800 Subject: [PATCH 121/134] Update src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md Co-authored-by: Fredrik Bakke --- .../accumulation-points-subsets-located-metric-spaces.lagda.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md index ebf9d7fa5eb..8f84ddb5099 100644 --- a/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md +++ b/src/metric-spaces/accumulation-points-subsets-located-metric-spaces.lagda.md @@ -209,8 +209,6 @@ module _ ### If `x` is an accumulation point of `S`, it is a sequential accumulation point of `S` -The converse has yet to be proved. - ```agda module _ {l1 l2 l3 : Level} From 1c592429b69c08410c7ad71f37414c6df2a7ce27 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 15 Nov 2025 09:29:18 -0800 Subject: [PATCH 122/134] Fix imports --- src/real-numbers/maximum-finite-families-real-numbers.lagda.md | 1 + src/real-numbers/proper-closed-intervals-real-numbers.lagda.md | 1 + .../short-function-binary-maximum-real-numbers.lagda.md | 1 + src/real-numbers/suprema-families-real-numbers.lagda.md | 1 + 4 files changed, 4 insertions(+) diff --git a/src/real-numbers/maximum-finite-families-real-numbers.lagda.md b/src/real-numbers/maximum-finite-families-real-numbers.lagda.md index 543950300ed..62fe4c3cebf 100644 --- a/src/real-numbers/maximum-finite-families-real-numbers.lagda.md +++ b/src/real-numbers/maximum-finite-families-real-numbers.lagda.md @@ -33,6 +33,7 @@ open import order-theory.joins-finite-families-join-semilattices open import order-theory.least-upper-bounds-large-posets open import order-theory.upper-bounds-large-posets +open import real-numbers.addition-positive-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.binary-maximum-real-numbers open import real-numbers.dedekind-real-numbers diff --git a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md index fa15226a2a3..21f5ab7e363 100644 --- a/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md +++ b/src/real-numbers/proper-closed-intervals-real-numbers.lagda.md @@ -32,6 +32,7 @@ open import metric-spaces.subspaces-metric-spaces open import order-theory.large-posets open import real-numbers.accumulation-points-subsets-real-numbers +open import real-numbers.addition-positive-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.apartness-real-numbers open import real-numbers.binary-maximum-real-numbers diff --git a/src/real-numbers/short-function-binary-maximum-real-numbers.lagda.md b/src/real-numbers/short-function-binary-maximum-real-numbers.lagda.md index d0716d0b192..70621782e2b 100644 --- a/src/real-numbers/short-function-binary-maximum-real-numbers.lagda.md +++ b/src/real-numbers/short-function-binary-maximum-real-numbers.lagda.md @@ -21,6 +21,7 @@ open import metric-spaces.uniformly-continuous-functions-metric-spaces open import order-theory.least-upper-bounds-large-posets +open import real-numbers.addition-positive-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.binary-maximum-real-numbers open import real-numbers.dedekind-real-numbers diff --git a/src/real-numbers/suprema-families-real-numbers.lagda.md b/src/real-numbers/suprema-families-real-numbers.lagda.md index d51a2e2a299..ca69a732052 100644 --- a/src/real-numbers/suprema-families-real-numbers.lagda.md +++ b/src/real-numbers/suprema-families-real-numbers.lagda.md @@ -33,6 +33,7 @@ open import foundation.universe-levels open import order-theory.least-upper-bounds-large-posets open import order-theory.upper-bounds-large-posets +open import real-numbers.addition-positive-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.binary-maximum-real-numbers open import real-numbers.dedekind-real-numbers From f09fd5f32347306e2ef6cd86a495f733f0403421 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 15 Nov 2025 09:35:18 -0800 Subject: [PATCH 123/134] The reals are a vector space over themselves --- src/linear-algebra/real-vector-spaces.lagda.md | 9 +++++++++ src/linear-algebra/vector-spaces.lagda.md | 12 +++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/linear-algebra/real-vector-spaces.lagda.md b/src/linear-algebra/real-vector-spaces.lagda.md index 1ee4b2f6451..8a536fde9e7 100644 --- a/src/linear-algebra/real-vector-spaces.lagda.md +++ b/src/linear-algebra/real-vector-spaces.lagda.md @@ -159,3 +159,12 @@ module _ mul-neg-one-ℝ-Vector-Space = mul-neg-one-Vector-Space (local-commutative-ring-ℝ l1) V ``` + +### The real numbers are a real vector space + +```agda +real-vector-space-ℝ : (l : Level) → ℝ-Vector-Space l (lsuc l) +real-vector-space-ℝ l = + vector-space-local-commutative-ring-Local-Commutative-Ring + ( local-commutative-ring-ℝ l) +``` diff --git a/src/linear-algebra/vector-spaces.lagda.md b/src/linear-algebra/vector-spaces.lagda.md index 9d253a8aba8..dba90b457b5 100644 --- a/src/linear-algebra/vector-spaces.lagda.md +++ b/src/linear-algebra/vector-spaces.lagda.md @@ -1,4 +1,4 @@ -# Vector spaces +m# Vector spaces ```agda module linear-algebra.vector-spaces where @@ -178,3 +178,13 @@ module _ ( commutative-ring-Local-Commutative-Ring R) ( V) ``` + +### Any local commutative ring is a vector space over itself + +```agda +vector-space-local-commutative-ring-Local-Commutative-Ring : + {l : Level} (R : Local-Commutative-Ring l) → Vector-Space l R +vector-space-local-commutative-ring-Local-Commutative-Ring R = + left-module-commutative-ring-Commutative-Ring + ( commutative-ring-Local-Commutative-Ring R) +``` From 5ef21f217a7811ecfcadf312709ad0412bdf5c0d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 15 Nov 2025 10:08:42 -0800 Subject: [PATCH 124/134] Fix title in vector-spaces --- src/linear-algebra/vector-spaces.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/linear-algebra/vector-spaces.lagda.md b/src/linear-algebra/vector-spaces.lagda.md index dba90b457b5..55c407c4c5b 100644 --- a/src/linear-algebra/vector-spaces.lagda.md +++ b/src/linear-algebra/vector-spaces.lagda.md @@ -1,4 +1,4 @@ -m# Vector spaces +# Vector spaces ```agda module linear-algebra.vector-spaces where From de71c712bcb74768dfb0237dd30565ba98c5c06a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 15 Nov 2025 19:29:03 -0800 Subject: [PATCH 125/134] Add more cross links --- src/linear-algebra/real-vector-spaces.lagda.md | 4 ++++ src/linear-algebra/vector-spaces.lagda.md | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/linear-algebra/real-vector-spaces.lagda.md b/src/linear-algebra/real-vector-spaces.lagda.md index 8a536fde9e7..21ac77abb4d 100644 --- a/src/linear-algebra/real-vector-spaces.lagda.md +++ b/src/linear-algebra/real-vector-spaces.lagda.md @@ -168,3 +168,7 @@ real-vector-space-ℝ l = vector-space-local-commutative-ring-Local-Commutative-Ring ( local-commutative-ring-ℝ l) ``` + +## See also + +- [Vector spaces](linear-algebra.vector-spaces.md) diff --git a/src/linear-algebra/vector-spaces.lagda.md b/src/linear-algebra/vector-spaces.lagda.md index 55c407c4c5b..c7c658f41f8 100644 --- a/src/linear-algebra/vector-spaces.lagda.md +++ b/src/linear-algebra/vector-spaces.lagda.md @@ -188,3 +188,11 @@ vector-space-local-commutative-ring-Local-Commutative-Ring R = left-module-commutative-ring-Commutative-Ring ( commutative-ring-Local-Commutative-Ring R) ``` + +## See also + +- [Real vector spaces](linear-algebra.real-vector-spaces.md) + +## External links + +- [Vector space](https://en.wikipedia.org/wiki/Vector_space) on Wikipedia From ef5fb9d35c9b1b57cd1252e4b1d0a5710e106d99 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 16 Nov 2025 09:23:38 -0800 Subject: [PATCH 126/134] Update src/complex-numbers/apartness-complex-numbers.lagda.md Co-authored-by: Fredrik Bakke --- src/complex-numbers/apartness-complex-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/complex-numbers/apartness-complex-numbers.lagda.md b/src/complex-numbers/apartness-complex-numbers.lagda.md index e58a5ee7283..4b1cddfa5d9 100644 --- a/src/complex-numbers/apartness-complex-numbers.lagda.md +++ b/src/complex-numbers/apartness-complex-numbers.lagda.md @@ -41,7 +41,7 @@ module _ apart-prop-ℂ : Prop (l1 ⊔ l2) apart-prop-ℂ = - apart-prop-ℝ (re-ℂ z) (re-ℂ w) ∨ apart-prop-ℝ (im-ℂ z) (im-ℂ w) + (apart-prop-ℝ (re-ℂ z) (re-ℂ w)) ∨ (apart-prop-ℝ (im-ℂ z) (im-ℂ w)) apart-ℂ : UU (l1 ⊔ l2) apart-ℂ = type-Prop apart-prop-ℂ From f734c77ce6295fd995ac7eec523d337d0646dfd1 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 16 Nov 2025 09:23:45 -0800 Subject: [PATCH 127/134] Update src/complex-numbers/magnitude-complex-numbers.lagda.md Co-authored-by: Fredrik Bakke --- src/complex-numbers/magnitude-complex-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index ee2b26b10c4..e35f0098103 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -39,7 +39,7 @@ open import real-numbers.squares-real-numbers The {{#concept "magnitude" WD="magnitude of a complex number" WDID=Q3317982 Agda=magnitude-ℂ}} of a [complex number](complex-numbers.complex-numbers.md) `a + bi` is defined as -$$\sqrt{a^2 + b^2}$$. +$\sqrt{a^2 + b^2}$. ## Definition From b069ea8b432e1b8c50a27cff7f5ceef073c61db2 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 16 Nov 2025 09:23:52 -0800 Subject: [PATCH 128/134] Update src/complex-numbers/magnitude-complex-numbers.lagda.md Co-authored-by: Fredrik Bakke --- src/complex-numbers/magnitude-complex-numbers.lagda.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index e35f0098103..ea3a19a6a40 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -51,9 +51,6 @@ nonnegative-squared-magnitude-ℂ (a +iℂ b) = squared-magnitude-ℂ : {l : Level} → ℂ l → ℝ l squared-magnitude-ℂ z = real-ℝ⁰⁺ (nonnegative-squared-magnitude-ℂ z) -∥_∥²ℂ : {l : Level} → ℂ l → ℝ l -∥ z ∥²ℂ = squared-magnitude-ℂ z - nonnegative-magnitude-ℂ : {l : Level} → ℂ l → ℝ⁰⁺ l nonnegative-magnitude-ℂ z = sqrt-ℝ⁰⁺ (nonnegative-squared-magnitude-ℂ z) From e090719216820858666635b223f53449d240df5d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 16 Nov 2025 09:24:09 -0800 Subject: [PATCH 129/134] Update src/complex-numbers/magnitude-complex-numbers.lagda.md Co-authored-by: Fredrik Bakke --- src/complex-numbers/magnitude-complex-numbers.lagda.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index ea3a19a6a40..3f1410f24d2 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -56,9 +56,6 @@ nonnegative-magnitude-ℂ z = sqrt-ℝ⁰⁺ (nonnegative-squared-magnitude-ℂ magnitude-ℂ : {l : Level} → ℂ l → ℝ l magnitude-ℂ z = real-ℝ⁰⁺ (nonnegative-magnitude-ℂ z) - -∥_∥ℂ : {l : Level} → ℂ l → ℝ l -∥ z ∥ℂ = magnitude-ℂ z ``` ## Properties From 6783b3d1295cabd15fdea1f8fc810d8f2c03027e Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 16 Nov 2025 09:24:32 -0800 Subject: [PATCH 130/134] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- src/complex-numbers/apartness-complex-numbers.lagda.md | 2 +- src/complex-numbers/magnitude-complex-numbers.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/complex-numbers/apartness-complex-numbers.lagda.md b/src/complex-numbers/apartness-complex-numbers.lagda.md index 4b1cddfa5d9..03c9a2a2512 100644 --- a/src/complex-numbers/apartness-complex-numbers.lagda.md +++ b/src/complex-numbers/apartness-complex-numbers.lagda.md @@ -27,7 +27,7 @@ open import real-numbers.apartness-real-numbers ## Idea Two [complex numbers](complex-numbers.complex-numbers.md) are -{{#concept "apart" Agda=apart-ℂ}} if their +{{#concept "apart" Disambiguation="complex numbers" Agda=apart-ℂ}} if their [real](real-numbers.dedekind-real-numbers.md) parts are [apart](real-numbers.apartness-real-numbers.md) [or](foundation.disjunction.md) their imaginary parts are [apart]. diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index 3f1410f24d2..f151528dc49 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -38,7 +38,7 @@ open import real-numbers.squares-real-numbers The {{#concept "magnitude" WD="magnitude of a complex number" WDID=Q3317982 Agda=magnitude-ℂ}} -of a [complex number](complex-numbers.complex-numbers.md) `a + bi` is defined as +of a [complex number](complex-numbers.complex-numbers.md) $a + bi$ is defined as $\sqrt{a^2 + b^2}$. ## Definition From c02c5933d06269342195309f5f37beaf43baefda Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 16 Nov 2025 09:35:03 -0800 Subject: [PATCH 131/134] Respond to review comments --- src/complex-numbers/nonzero-complex-numbers.lagda.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/complex-numbers/nonzero-complex-numbers.lagda.md b/src/complex-numbers/nonzero-complex-numbers.lagda.md index a10fec58972..9f978a56f18 100644 --- a/src/complex-numbers/nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/nonzero-complex-numbers.lagda.md @@ -64,10 +64,11 @@ complex-nonzero-ℂ = pr1 ```agda abstract is-positive-squared-magnitude-is-nonzero-ℂ : - {l : Level} (z : ℂ l) → is-nonzero-ℂ z → is-positive-ℝ ∥ z ∥²ℂ + {l : Level} (z : ℂ l) → is-nonzero-ℂ z → + is-positive-ℝ (squared-magnitude-ℂ z) is-positive-squared-magnitude-is-nonzero-ℂ (a +iℂ b) = elim-disjunction - ( is-positive-prop-ℝ ∥ a +iℂ b ∥²ℂ) + ( is-positive-prop-ℝ (squared-magnitude-ℂ (a +iℂ b))) ( λ a≠0 → concatenate-le-leq-ℝ ( zero-ℝ) @@ -84,7 +85,8 @@ abstract ( leq-right-add-real-ℝ⁰⁺ _ (nonnegative-square-ℝ a))) is-nonzero-is-positive-squared-magnitude-ℂ : - {l : Level} (z : ℂ l) → is-positive-ℝ ∥ z ∥²ℂ → is-nonzero-ℂ z + {l : Level} (z : ℂ l) → is-positive-ℝ (squared-magnitude-ℂ z) → + is-nonzero-ℂ z is-nonzero-is-positive-squared-magnitude-ℂ (a +iℂ b) 0 Date: Sun, 16 Nov 2025 11:43:49 -0800 Subject: [PATCH 132/134] make pre-commit --- .../magnitude-complex-numbers.lagda.md | 5 ----- ...licative-inverses-nonzero-complex-numbers.lagda.md | 11 ----------- .../multiplication-nonzero-real-numbers.lagda.md | 3 --- 3 files changed, 19 deletions(-) diff --git a/src/complex-numbers/magnitude-complex-numbers.lagda.md b/src/complex-numbers/magnitude-complex-numbers.lagda.md index aa3deb8b65d..3c033afa8dc 100644 --- a/src/complex-numbers/magnitude-complex-numbers.lagda.md +++ b/src/complex-numbers/magnitude-complex-numbers.lagda.md @@ -20,11 +20,6 @@ open import foundation.identity-types open import foundation.universe-levels open import real-numbers.absolute-value-real-numbers - -open import foundation.action-on-identifications-functions -open import foundation.identity-types -open import foundation.universe-levels - open import real-numbers.addition-nonnegative-real-numbers open import real-numbers.addition-real-numbers open import real-numbers.dedekind-real-numbers diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md index 826104685b5..10db59823f9 100644 --- a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -22,14 +22,6 @@ open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.empty-types open import foundation.function-types -open import complex-numbers.complex-numbers -open import complex-numbers.conjugation-complex-numbers -open import complex-numbers.magnitude-complex-numbers -open import complex-numbers.multiplication-complex-numbers -open import complex-numbers.nonzero-complex-numbers -open import complex-numbers.similarity-complex-numbers - -open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.transport-along-identifications open import foundation.universe-levels @@ -43,9 +35,6 @@ open import real-numbers.positive-and-negative-real-numbers open import real-numbers.positive-real-numbers open import real-numbers.rational-real-numbers open import real-numbers.similarity-real-numbers -open import real-numbers.multiplication-real-numbers -open import real-numbers.multiplicative-inverses-positive-real-numbers -open import real-numbers.rational-real-numbers ```
diff --git a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md index 6025556798e..47bc27ae7f2 100644 --- a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md @@ -15,9 +15,6 @@ open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.function-types open import foundation.functoriality-cartesian-product-types -open import foundation.dependent-pair-types -open import foundation.disjunction -open import foundation.function-types open import foundation.universe-levels open import real-numbers.dedekind-real-numbers From a4cec6ecf7fc983bde0e09fceff023c869ea94d3 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 16 Nov 2025 11:48:57 -0800 Subject: [PATCH 133/134] Merge properly --- ...-inverses-nonzero-complex-numbers.lagda.md | 12 ++--- ...ltiplication-nonzero-real-numbers.lagda.md | 46 +++++++++++++++++++ ...ive-inverses-nonzero-real-numbers.lagda.md | 40 ---------------- 3 files changed, 52 insertions(+), 46 deletions(-) diff --git a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md index 10db59823f9..4d7c38d8961 100644 --- a/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md +++ b/src/complex-numbers/multiplicative-inverses-nonzero-complex-numbers.lagda.md @@ -111,7 +111,7 @@ abstract is-nonzero-is-positive-magnitude-ℂ ( z) ( elim-disjunction - ( is-positive-prop-ℝ ∥ z ∥ℂ) + ( is-positive-prop-ℝ (magnitude-ℂ z)) ( λ |z|<0 → ex-falso ( is-not-negative-and-nonnegative-ℝ @@ -119,15 +119,15 @@ abstract ( id) ( pr1 ( is-nonzero-factors-is-nonzero-mul-ℝ - ( ∥ z ∥ℂ) - ( ∥ w ∥ℂ) + ( (magnitude-ℂ z)) + ( (magnitude-ℂ w)) ( is-nonzero-sim-ℝ ( symmetric-sim-ℝ ( similarity-reasoning-ℝ - ∥ z ∥ℂ *ℝ ∥ w ∥ℂ - ~ℝ ∥ z *ℂ w ∥ℂ + (magnitude-ℂ z) *ℝ (magnitude-ℂ w) + ~ℝ magnitude-ℂ (z *ℂ w) by sim-eq-ℝ (inv (distributive-magnitude-mul-ℂ z w)) - ~ℝ ∥ one-ℂ ∥ℂ + ~ℝ magnitude-ℂ one-ℂ by preserves-sim-magnitude-ℂ zw=1 ~ℝ one-ℝ by sim-eq-ℝ magnitude-one-ℂ)) diff --git a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md index 47bc27ae7f2..d8642acca13 100644 --- a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md @@ -14,16 +14,23 @@ open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.function-types +open import real-numbers.raising-universe-levels-real-numbers +open import real-numbers.large-ring-of-real-numbers open import foundation.functoriality-cartesian-product-types open import foundation.universe-levels +open import commutative-algebra.invertible-elements-commutative-rings +open import foundation.transport-along-identifications open import real-numbers.dedekind-real-numbers +open import real-numbers.rational-real-numbers open import real-numbers.multiplication-negative-real-numbers open import real-numbers.multiplication-positive-and-negative-real-numbers open import real-numbers.multiplication-positive-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.multiplicative-inverses-nonzero-real-numbers +open import real-numbers.similarity-real-numbers open import real-numbers.nonzero-real-numbers +open import real-numbers.positive-real-numbers ```
@@ -103,3 +110,42 @@ module _ ( map-product inr-disjunction inr-disjunction) ( same-sign-is-positive-mul-ℝ x y 0 Date: Sun, 16 Nov 2025 11:51:45 -0800 Subject: [PATCH 134/134] make pre-commit --- .../multiplication-nonzero-real-numbers.lagda.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md index d8642acca13..42ea33baba2 100644 --- a/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md +++ b/src/real-numbers/multiplication-nonzero-real-numbers.lagda.md @@ -9,28 +9,29 @@ module real-numbers.multiplication-nonzero-real-numbers where
Imports ```agda +open import commutative-algebra.invertible-elements-commutative-rings + open import foundation.cartesian-product-types open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.function-types -open import real-numbers.raising-universe-levels-real-numbers -open import real-numbers.large-ring-of-real-numbers open import foundation.functoriality-cartesian-product-types -open import foundation.universe-levels -open import commutative-algebra.invertible-elements-commutative-rings open import foundation.transport-along-identifications +open import foundation.universe-levels open import real-numbers.dedekind-real-numbers -open import real-numbers.rational-real-numbers +open import real-numbers.large-ring-of-real-numbers open import real-numbers.multiplication-negative-real-numbers open import real-numbers.multiplication-positive-and-negative-real-numbers open import real-numbers.multiplication-positive-real-numbers open import real-numbers.multiplication-real-numbers open import real-numbers.multiplicative-inverses-nonzero-real-numbers -open import real-numbers.similarity-real-numbers open import real-numbers.nonzero-real-numbers open import real-numbers.positive-real-numbers +open import real-numbers.raising-universe-levels-real-numbers +open import real-numbers.rational-real-numbers +open import real-numbers.similarity-real-numbers ```