From 74dfa313b388e1d0aadc7e33c48c4a0d734f5224 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 18 Aug 2025 19:11:14 -0700 Subject: [PATCH 01/59] Progress --- src/elementary-number-theory.lagda.md | 1 + .../intervals-rational-numbers.lagda.md | 49 ++++++ src/foundation/images-subtypes.lagda.md | 50 +++++- src/order-theory.lagda.md | 1 + .../closed-intervals-posets.lagda.md | 143 ++++++++++++++++++ 5 files changed, 242 insertions(+), 2 deletions(-) create mode 100644 src/elementary-number-theory/intervals-rational-numbers.lagda.md create mode 100644 src/order-theory/closed-intervals-posets.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index af8b23d19a..48197c927f 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -101,6 +101,7 @@ 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.integers public +open import elementary-number-theory.intervals-rational-numbers public open import elementary-number-theory.jacobi-symbol public open import elementary-number-theory.kolakoski-sequence public open import elementary-number-theory.legendre-symbol public diff --git a/src/elementary-number-theory/intervals-rational-numbers.lagda.md b/src/elementary-number-theory/intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..0454cc7704 --- /dev/null +++ b/src/elementary-number-theory/intervals-rational-numbers.lagda.md @@ -0,0 +1,49 @@ +# Intervals in the rational numbers + +```agda +module elementary-number-theory.intervals-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.rational-numbers + +open import foundation.dependent-pair-types +open import foundation.propositions +open import foundation.subtypes +open import foundation.universe-levels + +open import order-theory.closed-intervals-posets +``` + +
+ +## Idea + +An interval in the rational numbers is a +[closed interval](order-theory.closed-intervals-posets.md) in the +[poset](elementary-number-theory.inequality-rational-numbers.md) of +[rational numbers](elementary-number-theory.rational-numbers.md). + +## Definition + +```agda +interval-ℚ : UU lzero +interval-ℚ = closed-interval-Poset ℚ-Poset + +lower-bound-interval-ℚ : interval-ℚ → ℚ +lower-bound-interval-ℚ = + lower-bound-closed-interval-Poset ℚ-Poset + +upper-bound-interval-ℚ : interval-ℚ → ℚ +upper-bound-interval-ℚ = + lower-bound-closed-interval-Poset ℚ-Poset + +subtype-interval-ℚ : interval-ℚ → subtype lzero ℚ +subtype-interval-ℚ = subposet-closed-interval-Poset ℚ-Poset + +is-closed-interval-map-prop-ℚ : + (ℚ → ℚ) → interval-ℚ → interval-ℚ → Prop ? +``` diff --git a/src/foundation/images-subtypes.lagda.md b/src/foundation/images-subtypes.lagda.md index 3310d88c6d..6a27a0d6be 100644 --- a/src/foundation/images-subtypes.lagda.md +++ b/src/foundation/images-subtypes.lagda.md @@ -7,15 +7,19 @@ module foundation.images-subtypes where
Imports ```agda +open import foundation.conjunction open import foundation.dependent-pair-types +open import foundation.existential-quantification open import foundation.full-subtypes open import foundation.functoriality-propositional-truncation open import foundation.images open import foundation.logical-equivalences open import foundation.powersets open import foundation.propositional-truncations +open import foundation.propositions open import foundation.pullbacks-subtypes open import foundation.subtypes +open import foundation.transport-along-identifications open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels @@ -63,9 +67,21 @@ module _ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (S : subtype l3 A) where - is-image-map-subtype : {l4 : Level} (T : subtype l4 B) → UUω - is-image-map-subtype T = + is-image-map-subtype-ω : {l4 : Level} (T : subtype l4 B) → UUω + is-image-map-subtype-ω T = {l : Level} (U : subtype l B) → (T ⊆ U) ↔ (S ⊆ U ∘ f) + + is-image-map-subtype-prop : + {l4 : Level} (T : subtype l4 B) → Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-image-map-subtype-prop T = + Π-Prop (type-subtype S) (λ (s , s∈S) → T (f s)) ∧ + Π-Prop (type-subtype T) + ( λ (t , t∈T) → + trunc-Prop (Σ (type-subtype S) (λ (s , s∈S) → f s = t))) + + is-image-map-subtype : + {l4 : Level} (T : subtype l4 B) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-image-map-subtype T = type-Prop (is-image-map-subtype-prop T) ``` ### The image of a subtype under a map @@ -156,6 +172,36 @@ module _ ## Properties +### The definitions of being the image of a subtype under a map are equivalent + +```agda +module _ + {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (S : subtype l3 A) + {l4 : Level} (T : subtype l4 B) + where + + is-image-map-subtype-ω-is-image-map-subtype : + is-image-map-subtype f S T → is-image-map-subtype-ω f S T + pr1 (is-image-map-subtype-ω-is-image-map-subtype (fs∈T , f⇸T) U) T⊆U s s∈S = + T⊆U (f s) (fs∈T (s , s∈S)) + pr2 (is-image-map-subtype-ω-is-image-map-subtype (fs∈T , f⇸T) U) S⊆Uf t t∈T = + rec-trunc-Prop + ( U t) + ( λ ((s , s∈S) , fs=t) → tr (type-Prop ∘ U) fs=t (S⊆Uf s s∈S)) + ( f⇸T (t , t∈T)) + + is-image-map-subtype-is-image-map-subtype-ω : + is-image-map-subtype-ω f S T → is-image-map-subtype f S T + pr1 (is-image-map-subtype-is-image-map-subtype-ω H) (s , s∈S) = + forward-implication (H T) (λ _ → id) s s∈S + pr2 (is-image-map-subtype-is-image-map-subtype-ω H) (t , t∈T) = + backward-implication + ( H (im-subtype f S)) + ( λ s s∈S → unit-trunc-Prop ((s , s∈S) , refl)) + ( t) + ( t∈T) +``` + ### If `S` and `T` have the same elements, then `im-subtype f S` and `im-subtype f T` have the same elements ```agda diff --git a/src/order-theory.lagda.md b/src/order-theory.lagda.md index e6a524d528..f97af32076 100644 --- a/src/order-theory.lagda.md +++ b/src/order-theory.lagda.md @@ -11,6 +11,7 @@ open import order-theory.bottom-elements-posets public open import order-theory.bottom-elements-preorders public open import order-theory.chains-posets public open import order-theory.chains-preorders public +open import order-theory.closed-intervals-posets public open import order-theory.closure-operators-large-locales public open import order-theory.closure-operators-large-posets public open import order-theory.commuting-squares-of-galois-connections-large-posets public diff --git a/src/order-theory/closed-intervals-posets.lagda.md b/src/order-theory/closed-intervals-posets.lagda.md new file mode 100644 index 0000000000..7a5c238147 --- /dev/null +++ b/src/order-theory/closed-intervals-posets.lagda.md @@ -0,0 +1,143 @@ +# Closed intervals in posets + +```agda +module order-theory.closed-intervals-posets where +``` + +
Imports + +```agda +open import foundation.action-on-identifications-functions +open import foundation.conjunction +open import foundation.dependent-pair-types +open import foundation.equality-cartesian-product-types +open import foundation.equality-dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.images-subtypes +open import foundation.inhabited-subtypes +open import foundation.injective-maps +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.univalence +open import foundation.universe-levels + +open import order-theory.interval-subposets +open import order-theory.posets +open import order-theory.subposets +``` + +
+ +## Idea + +A +{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} +in a poset `P` consists of a pair of elements `x` and `y` in `P` with `x ≤ y`. + +## Definition + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + closed-interval-Poset : UU (l1 ⊔ l2) + closed-interval-Poset = + Σ (type-Poset X) (λ x → Σ (type-Poset X) ( λ y → leq-Poset X x y)) + + lower-bound-closed-interval-Poset : closed-interval-Poset → type-Poset X + lower-bound-closed-interval-Poset (x , _ , _) = x + + upper-bound-closed-interval-Poset : closed-interval-Poset → type-Poset X + upper-bound-closed-interval-Poset (_ , y , _) = y + + subposet-closed-interval-Poset : closed-interval-Poset → Subposet l2 X + subposet-closed-interval-Poset (x , y , _) = + is-in-interval-Poset X x y + + type-closed-interval-Poset : closed-interval-Poset → UU (l1 ⊔ l2) + type-closed-interval-Poset [x,y] = + type-subtype (subposet-closed-interval-Poset [x,y]) + + is-in-closed-interval-Poset : closed-interval-Poset → type-Poset X → UU l2 + is-in-closed-interval-Poset [x,y] = + is-in-subtype (subposet-closed-interval-Poset [x,y]) +``` + +## Properties + +### Closed intervals are inhabited + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) ([x,y] : closed-interval-Poset X) + where + + abstract + is-inhabited-closed-interval-Poset : + is-inhabited-subtype (subposet-closed-interval-Poset X [x,y]) + is-inhabited-closed-interval-Poset = + unit-trunc-Prop + ( lower-bound-closed-interval-Poset X [x,y] , + refl-leq-Poset X _ , + pr2 (pr2 [x,y])) +``` + +### The map from closed intervals to subposets is injective + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + is-injective-subposet-closed-interval-Poset : + is-injective (subposet-closed-interval-Poset X) + is-injective-subposet-closed-interval-Poset + {a , b , a≤b} {c , d , c≤d} [a,b]=[c,d] = + ap + ( λ ((p , q) , r) → (p , q , r)) + ( eq-pair-Σ + ( eq-pair + ( antisymmetric-leq-Poset X a c + ( pr1 + ( backward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] c) + ( refl-leq-Poset X c , c≤d))) + ( pr1 + ( forward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] a) + ( refl-leq-Poset X a , a≤b)))) + ( antisymmetric-leq-Poset X b d + ( pr2 + ( forward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] b) + ( a≤b , refl-leq-Poset X b))) + ( pr2 + ( backward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] d) + ( c≤d , refl-leq-Poset X d))))) + ( eq-type-Prop (leq-prop-Poset X _ _))) +``` + +### The property of a map of taking a closed interval to a closed interval + +```agda +module _ + {l1 l2 l3 l4 : Level} (X : Poset l1 l2) (Y : Poset l3 l4) + (f : type-Poset X → type-Poset Y) + where + + is-closed-interval-map-prop-Poset : + ([a,b] : closed-interval-Poset X) → + ([c,d] : closed-interval-Poset Y) → + Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-closed-interval-map-prop-Poset [a,b] [c,d] = + is-image-map-subtype-prop f + ( subposet-closed-interval-Poset X [a,b]) + ( subposet-closed-interval-Poset Y [c,d]) +``` From aa578cd9ca92396d1571a67b0098e137d175a0c3 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 18 Aug 2025 20:50:10 -0700 Subject: [PATCH 02/59] Progress --- .../decidable-total-orders.lagda.md | 234 ++++++---- .../greatest-lower-bounds-posets.lagda.md | 6 +- src/order-theory/meet-semilattices.lagda.md | 2 +- src/order-theory/total-orders.lagda.md | 404 ++++++++++++++++++ 4 files changed, 551 insertions(+), 95 deletions(-) diff --git a/src/order-theory/decidable-total-orders.lagda.md b/src/order-theory/decidable-total-orders.lagda.md index a68ece04d3..5799377141 100644 --- a/src/order-theory/decidable-total-orders.lagda.md +++ b/src/order-theory/decidable-total-orders.lagda.md @@ -76,6 +76,11 @@ module _ is-total-Poset (poset-Decidable-Total-Order) is-total-poset-Decidable-Total-Order = pr1 (pr2 P) + total-order-Decidable-Total-Order : Total-Order l1 l2 + total-order-Decidable-Total-Order = + ( poset-Decidable-Total-Order , + is-total-poset-Decidable-Total-Order) + is-decidable-poset-Decidable-Total-Order : is-decidable-leq-Poset (poset-Decidable-Total-Order) is-decidable-poset-Decidable-Total-Order = pr2 (pr2 P) @@ -200,22 +205,19 @@ module _ module _ {l1 l2 : Level} (T : Decidable-Total-Order l1 l2) - (x y : type-Decidable-Total-Order T) where - min-Decidable-Total-Order : type-Decidable-Total-Order T + min-Decidable-Total-Order : + type-Decidable-Total-Order T → type-Decidable-Total-Order T → + type-Decidable-Total-Order T min-Decidable-Total-Order = - rec-coproduct - ( λ x≤y → x) - ( λ yImports ```agda +open import foundation.action-on-identifications-functions open import foundation.binary-relations open import foundation.dependent-pair-types +open import foundation.disjunction open import foundation.identity-types open import foundation.propositions open import foundation.sets open import foundation.universe-levels +open import order-theory.greatest-lower-bounds-posets +open import order-theory.join-semilattices +open import order-theory.least-upper-bounds-posets +open import order-theory.meet-semilattices open import order-theory.posets open import order-theory.preorders open import order-theory.total-preorders @@ -118,6 +124,404 @@ module _ set-Total-Order = set-Poset poset-Total-Order ``` +### The maximum operation on a total order + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + (x y : type-Total-Order X) + where + + opaque + has-least-binary-upper-bound-Total-Order : + has-least-binary-upper-bound-Poset (poset-Total-Order X) x y + has-least-binary-upper-bound-Total-Order = + elim-disjunction + ( has-least-binary-upper-bound-prop-Poset (poset-Total-Order X) x y) + ( λ x≤y → + has-least-binary-upper-bound-leq-Poset (poset-Total-Order X) x y x≤y) + ( λ y≤x → + symmetric-has-least-binary-upper-bound-Poset + ( poset-Total-Order X) + ( y) + ( x) + ( has-least-binary-upper-bound-leq-Poset + ( poset-Total-Order X) + ( y) + ( x) + ( y≤x))) + ( is-total-Total-Order X x y) + + max-Total-Order : type-Total-Order X + max-Total-Order = pr1 has-least-binary-upper-bound-Total-Order + + max-is-least-binary-upper-bound-Total-Order : + is-least-binary-upper-bound-Poset (poset-Total-Order X) x y max-Total-Order + max-is-least-binary-upper-bound-Total-Order = + pr2 has-least-binary-upper-bound-Total-Order +``` + +### The minimum operation on a total order + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + (x y : type-Total-Order X) + where + + opaque + has-greatest-binary-lower-bound-Total-Order : + has-greatest-binary-lower-bound-Poset (poset-Total-Order X) x y + has-greatest-binary-lower-bound-Total-Order = + elim-disjunction + ( has-greatest-binary-lower-bound-prop-Poset (poset-Total-Order X) x y) + ( λ x≤y → + has-greatest-binary-lower-bound-leq-Poset + ( poset-Total-Order X) + ( x) + ( y) + ( x≤y)) + ( λ y≤x → + symmetric-has-greatest-binary-lower-bound-Poset + ( poset-Total-Order X) + ( y) + ( x) + ( has-greatest-binary-lower-bound-leq-Poset + ( poset-Total-Order X) + ( y) + ( x) + ( y≤x))) + ( is-total-Total-Order X x y) + + min-Total-Order : type-Total-Order X + min-Total-Order = pr1 has-greatest-binary-lower-bound-Total-Order + + min-is-greatest-binary-lower-bound-Total-Order : + is-greatest-binary-lower-bound-Poset + ( poset-Total-Order X) + ( x) + ( y) + ( min-Total-Order) + min-is-greatest-binary-lower-bound-Total-Order = + pr2 has-greatest-binary-lower-bound-Total-Order +``` + +## Properties + +### The minimum of two values is a lower bound + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + (x y : type-Total-Order T) + where + + leq-left-min-Total-Order : + leq-Total-Order T (min-Total-Order T x y) x + leq-left-min-Total-Order = + leq-left-is-greatest-binary-lower-bound-Poset + ( poset-Total-Order T) + ( min-is-greatest-binary-lower-bound-Total-Order T x y) + + leq-right-min-Total-Order : + leq-Total-Order T (min-Total-Order T x y) y + leq-right-min-Total-Order = + leq-right-is-greatest-binary-lower-bound-Poset + ( poset-Total-Order T) + ( min-is-greatest-binary-lower-bound-Total-Order T x y) +``` + +### The maximum of two values is an upper bound + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + (x y : type-Total-Order T) + where + + leq-left-max-Total-Order : + leq-Total-Order T x (max-Total-Order T x y) + leq-left-max-Total-Order = + leq-left-is-least-binary-upper-bound-Poset + ( poset-Total-Order T) + ( max-is-least-binary-upper-bound-Total-Order T x y) + + leq-right-max-Total-Order : + leq-Total-Order T y (max-Total-Order T x y) + leq-right-max-Total-Order = + leq-right-is-least-binary-upper-bound-Poset + ( poset-Total-Order T) + ( max-is-least-binary-upper-bound-Total-Order T x y) +``` + +### Total orders are meet semilattices + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + is-meet-semilattice-Total-Order : + is-meet-semilattice-Poset (poset-Total-Order T) + is-meet-semilattice-Total-Order = + has-greatest-binary-lower-bound-Total-Order T + + order-theoretic-meet-semilattice-Total-Order : + Order-Theoretic-Meet-Semilattice l1 l2 + order-theoretic-meet-semilattice-Total-Order = + poset-Total-Order T , is-meet-semilattice-Total-Order +``` + +### Decidable total orders are join semilattices + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + is-join-semilattice-Total-Order : + is-join-semilattice-Poset (poset-Total-Order T) + is-join-semilattice-Total-Order = + has-least-binary-upper-bound-Total-Order T + + order-theoretic-join-semilattice-Total-Order : + Order-Theoretic-Join-Semilattice l1 l2 + order-theoretic-join-semilattice-Total-Order = + poset-Total-Order T , is-join-semilattice-Total-Order +``` + +### The binary minimum operation is associative + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + associative-min-Total-Order : + (x y z : type-Total-Order T) → + min-Total-Order T (min-Total-Order T x y) z = + min-Total-Order T x (min-Total-Order T y z) + associative-min-Total-Order = + associative-meet-Order-Theoretic-Meet-Semilattice + ( order-theoretic-meet-semilattice-Total-Order T) +``` + +### The binary maximum operation is associative + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + associative-max-Total-Order : + (x y z : type-Total-Order T) → + max-Total-Order T (max-Total-Order T x y) z = + max-Total-Order T x (max-Total-Order T y z) + associative-max-Total-Order = + associative-join-Order-Theoretic-Join-Semilattice + ( order-theoretic-join-semilattice-Total-Order T) +``` + +### The binary minimum operation is commutative + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + commutative-min-Total-Order : + (x y : type-Total-Order T) → + min-Total-Order T x y = min-Total-Order T y x + commutative-min-Total-Order = + commutative-meet-Order-Theoretic-Meet-Semilattice + ( order-theoretic-meet-semilattice-Total-Order T) +``` + +### The binary maximum operation is commutative + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + commutative-max-Total-Order : + (x y : type-Total-Order T) → + max-Total-Order T x y = max-Total-Order T y x + commutative-max-Total-Order = + commutative-join-Order-Theoretic-Join-Semilattice + ( order-theoretic-join-semilattice-Total-Order T) +``` + +### The binary minimum operation is idempotent + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + idempotent-min-Total-Order : + (x : type-Total-Order T) → + min-Total-Order T x x = x + idempotent-min-Total-Order = + idempotent-meet-Order-Theoretic-Meet-Semilattice + ( order-theoretic-meet-semilattice-Total-Order T) +``` + +### The binary maximum operation is idempotent + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + idempotent-max-Total-Order : + (x : type-Total-Order T) → + max-Total-Order T x x = x + idempotent-max-Total-Order = + idempotent-join-Order-Theoretic-Join-Semilattice + ( order-theoretic-join-semilattice-Total-Order T) +``` + +### If `x` is less than or equal to `y`, the minimum of `x` and `y` is `x` + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + abstract + left-leq-right-min-Total-Order : + (x y : type-Total-Order T) → + leq-Total-Order T x y → min-Total-Order T x y = x + left-leq-right-min-Total-Order x y x≤y = + ap pr1 + ( eq-type-Prop + ( has-greatest-binary-lower-bound-prop-Poset + ( poset-Total-Order T) + ( x) + ( y)) + { has-greatest-binary-lower-bound-Total-Order T x y} + { has-greatest-binary-lower-bound-leq-Poset + ( poset-Total-Order T) + ( x) + ( y) + ( x≤y)}) +``` + +### If `y` is less than or equal to `x`, the minimum of `x` and `y` is `x` + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + abstract + right-leq-left-min-Total-Order : + (x y : type-Total-Order T) → + leq-Total-Order T y x → min-Total-Order T x y = y + right-leq-left-min-Total-Order x y y≤x = + commutative-min-Total-Order T x y ∙ + left-leq-right-min-Total-Order T y x y≤x +``` + +### If `x` is less than or equal to `y`, the maximum of `x` and `y` is `y` + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + abstract + left-leq-right-max-Total-Order : + (x y : type-Total-Order T) → + leq-Total-Order T x y → max-Total-Order T x y = y + left-leq-right-max-Total-Order x y x≤y = + ap pr1 + ( eq-type-Prop + ( has-least-binary-upper-bound-prop-Poset + ( poset-Total-Order T) + ( x) + ( y)) + { has-least-binary-upper-bound-Total-Order T x y} + { has-least-binary-upper-bound-leq-Poset + ( poset-Total-Order T) + ( x) + ( y) + ( x≤y)}) +``` + +### If `y` is less than or equal to `x`, the maximum of `x` and `y` is `x` + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + abstract + right-leq-left-max-Total-Order : + (x y : type-Total-Order T) → + leq-Total-Order T y x → max-Total-Order T x y = x + right-leq-left-max-Total-Order x y y≤x = + commutative-max-Total-Order T x y ∙ + left-leq-right-max-Total-Order T y x y≤x +``` + +### If `a ≤ b` and `c ≤ d`, then `min a c ≤ min b d` + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + abstract + min-leq-leq-Total-Order : + (a b c d : type-Total-Order T) → + leq-Total-Order T a b → leq-Total-Order T c d → + leq-Total-Order + ( T) + ( min-Total-Order T a c) + ( min-Total-Order T b d) + min-leq-leq-Total-Order = + meet-leq-leq-Order-Theoretic-Meet-Semilattice + ( order-theoretic-meet-semilattice-Total-Order T) +``` + +### If `a ≤ b` and `c ≤ d`, then `max a c ≤ max b d` + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + where + + abstract + max-leq-leq-Total-Order : + (a b c d : type-Total-Order T) → + leq-Total-Order T a b → leq-Total-Order T c d → + leq-Total-Order + ( T) + ( max-Total-Order T a c) + ( max-Total-Order T b d) + max-leq-leq-Total-Order = + join-leq-leq-Order-Theoretic-Join-Semilattice + ( order-theoretic-join-semilattice-Total-Order T) +``` + ## External links - [Total order](https://en.wikipedia.org/wiki/Total_order) at Wikipedia From 034dea63ada15ad8d53f2177d5bd8d331050f34d Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 19 Aug 2025 17:45:46 -0700 Subject: [PATCH 03/59] Progress --- ...dition-intervals-rational-numbers.lagda.md | 171 ++++++++++++++++++ .../inequality-rational-numbers.lagda.md | 9 + .../intervals-rational-numbers.lagda.md | 64 ++++++- .../closed-intervals-posets.lagda.md | 111 ++++++++---- 4 files changed, 309 insertions(+), 46 deletions(-) create mode 100644 src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md diff --git a/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..c81496a624 --- /dev/null +++ b/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md @@ -0,0 +1,171 @@ +# Addition on intervals in the rational numbers + +```agda +module elementary-number-theory.addition-intervals-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.intervals-rational-numbers +open import elementary-number-theory.additive-group-of-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.propositions +open import foundation.existential-quantification +open import foundation.coproduct-types +open import foundation.subtypes +open import foundation.identity-types +open import foundation.propositional-truncations +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.semigroups +open import group-theory.monoids +open import group-theory.commutative-monoids +open import order-theory.closed-intervals-posets +open import group-theory.minkowski-multiplication-commutative-monoids +``` + +
+ +## Idea + +Given two [intervals](elementary-number-theory.intervals-rational-numbers.md) +`[a, b]` and `[c, d]` in the +[rational numbers](elementary-number-theory.rational-numbers.md), +the +[Minkowski sum](group-theory.minkowski-multiplications-commutative-monoids.md) +of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) +agrees with the interval `[a +ℚ c, b +ℚ d]`. + + +## Definition + +```agda +add-interval-ℚ : interval-ℚ → interval-ℚ → interval-ℚ +add-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = + ((a +ℚ c , b +ℚ d) , preserves-leq-add-ℚ a≤b c≤d) +``` + +## Properties + +### Agreement with the Minkowski sum + +```agda +abstract + has-same-elements-minkowski-add-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + has-same-elements-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d])) + ( subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d])) + pr1 + ( has-same-elements-minkowski-add-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q) q∈[a,b]+[c,d] = + let + open + do-syntax-trunc-Prop + ( subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d]) q) + in do + ((s , t) , (a≤s , s≤b) , (c≤t , t≤d) , q=s+t) ← q∈[a,b]+[c,d] + ( inv-tr (leq-ℚ (a +ℚ c)) q=s+t (preserves-leq-add-ℚ a≤s c≤t) , + inv-tr (λ r → leq-ℚ r (b +ℚ d)) q=s+t (preserves-leq-add-ℚ s≤b t≤d)) + pr2 + ( has-same-elements-minkowski-add-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q) (a+c≤q , q≤b+d) = + rec-coproduct + ( λ q≤a+d → + intro-exists + ( a , q -ℚ a) + ( ( refl-leq-ℚ a , a≤b) , + ( leq-transpose-left-add-ℚ' _ _ _ a+c≤q , + leq-transpose-right-add-ℚ' _ _ _ q≤a+d) , + inv (is-identity-right-conjugation-add-ℚ _ _))) + ( λ a+d≤q → + intro-exists + ( q -ℚ d , d) + ( ( leq-transpose-left-add-ℚ _ _ _ a+d≤q , + leq-transpose-right-add-ℚ _ _ _ q≤b+d) , + ( c≤d , refl-leq-ℚ d) , + inv (is-section-diff-ℚ _ _))) + ( linear-leq-ℚ q (a +ℚ d)) + + eq-minkowski-add-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d]) = + subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d]) + eq-minkowski-add-interval-ℚ [a,b] [c,d] = + eq-has-same-elements-subtype _ _ + ( has-same-elements-minkowski-add-interval-ℚ [a,b] [c,d]) +``` + +### Associativity + +```agda +abstract + associative-add-interval-ℚ : + ([a,b] [c,d] [e,f] : interval-ℚ) → + add-interval-ℚ (add-interval-ℚ [a,b] [c,d]) [e,f] = + add-interval-ℚ [a,b] (add-interval-ℚ [c,d] [e,f]) + associative-add-interval-ℚ _ _ _ = + eq-interval-ℚ _ _ (associative-add-ℚ _ _ _) (associative-add-ℚ _ _ _) +``` + +### Commutativity + +```agda +abstract + commutative-add-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + add-interval-ℚ [a,b] [c,d] = add-interval-ℚ [c,d] [a,b] + commutative-add-interval-ℚ _ _ = + eq-interval-ℚ _ _ (commutative-add-ℚ _ _) (commutative-add-ℚ _ _) +``` + +### Unit laws + +```agda +abstract + left-unit-law-add-interval-ℚ : + ([a,b] : interval-ℚ) → add-interval-ℚ zero-zero-interval-ℚ [a,b] = [a,b] + left-unit-law-add-interval-ℚ _ = + eq-interval-ℚ _ _ (left-unit-law-add-ℚ _) (left-unit-law-add-ℚ _) + + right-unit-law-add-interval-ℚ : + ([a,b] : interval-ℚ) → add-interval-ℚ [a,b] zero-zero-interval-ℚ = [a,b] + right-unit-law-add-interval-ℚ _ = + eq-interval-ℚ _ _ (right-unit-law-add-ℚ _) (right-unit-law-add-ℚ _) +``` + +### The commutative monoid of addition of rational intervals + +```agda +semigroup-add-interval-ℚ : Semigroup lzero +semigroup-add-interval-ℚ = + ( set-interval-ℚ , + add-interval-ℚ , + associative-add-interval-ℚ) + +monoid-add-interval-ℚ : Monoid lzero +monoid-add-interval-ℚ = + ( semigroup-add-interval-ℚ , + zero-zero-interval-ℚ , + left-unit-law-add-interval-ℚ , + right-unit-law-add-interval-ℚ) + +commutative-monoid-add-interval-ℚ : Commutative-Monoid lzero +commutative-monoid-add-interval-ℚ = + ( monoid-add-interval-ℚ , + commutative-add-interval-ℚ) +``` diff --git a/src/elementary-number-theory/inequality-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-rational-numbers.lagda.md index b2717b4480..91c19d01ae 100644 --- a/src/elementary-number-theory/inequality-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-rational-numbers.lagda.md @@ -432,6 +432,10 @@ abstract ( y) ( x≤y+z) + leq-transpose-right-add-ℚ' : (x y z : ℚ) → x ≤-ℚ y +ℚ z → x -ℚ y ≤-ℚ z + leq-transpose-right-add-ℚ' x y z x≤y+z = + leq-transpose-right-add-ℚ x z y (tr (leq-ℚ x) (commutative-add-ℚ _ _) x≤y+z) + leq-transpose-left-add-ℚ : (x y z : ℚ) → x +ℚ y ≤-ℚ z → x ≤-ℚ z -ℚ y leq-transpose-left-add-ℚ x y z x+y≤z = leq-transpose-is-retraction-hom-Poset @@ -444,6 +448,11 @@ abstract ( z) ( x+y≤z) + leq-transpose-left-add-ℚ' : (x y z : ℚ) → x +ℚ y ≤-ℚ z → y ≤-ℚ z -ℚ x + leq-transpose-left-add-ℚ' x y z x+y≤z = + leq-transpose-left-add-ℚ y x z + ( tr (λ w → leq-ℚ w z) (commutative-add-ℚ _ _) x+y≤z) + leq-transpose-left-diff-ℚ : (x y z : ℚ) → x -ℚ y ≤-ℚ z → x ≤-ℚ z +ℚ y leq-transpose-left-diff-ℚ x y z x-y≤z = leq-transpose-is-retraction-hom-Poset diff --git a/src/elementary-number-theory/intervals-rational-numbers.lagda.md b/src/elementary-number-theory/intervals-rational-numbers.lagda.md index 0454cc7704..ad59f474bb 100644 --- a/src/elementary-number-theory/intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/intervals-rational-numbers.lagda.md @@ -8,11 +8,17 @@ module elementary-number-theory.intervals-rational-numbers where ```agda open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers open import elementary-number-theory.rational-numbers +open import elementary-number-theory.minimum-rational-numbers +open import elementary-number-theory.maximum-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers open import foundation.dependent-pair-types +open import foundation.identity-types open import foundation.propositions open import foundation.subtypes +open import foundation.sets open import foundation.universe-levels open import order-theory.closed-intervals-posets @@ -34,16 +40,62 @@ interval-ℚ : UU lzero interval-ℚ = closed-interval-Poset ℚ-Poset lower-bound-interval-ℚ : interval-ℚ → ℚ -lower-bound-interval-ℚ = - lower-bound-closed-interval-Poset ℚ-Poset +lower-bound-interval-ℚ = lower-bound-closed-interval-Poset ℚ-Poset upper-bound-interval-ℚ : interval-ℚ → ℚ -upper-bound-interval-ℚ = - lower-bound-closed-interval-Poset ℚ-Poset +upper-bound-interval-ℚ = upper-bound-closed-interval-Poset ℚ-Poset subtype-interval-ℚ : interval-ℚ → subtype lzero ℚ -subtype-interval-ℚ = subposet-closed-interval-Poset ℚ-Poset +subtype-interval-ℚ = subtype-closed-interval-Poset ℚ-Poset is-closed-interval-map-prop-ℚ : - (ℚ → ℚ) → interval-ℚ → interval-ℚ → Prop ? + (ℚ → ℚ) → interval-ℚ → interval-ℚ → Prop lzero +is-closed-interval-map-prop-ℚ = + is-closed-interval-map-prop-Poset ℚ-Poset ℚ-Poset + +is-below-prop-interval-ℚ : interval-ℚ → subtype lzero ℚ +is-below-prop-interval-ℚ ((a , _) , _) b = le-ℚ-Prop b a + +is-above-prop-interval-ℚ : interval-ℚ → subtype lzero ℚ +is-above-prop-interval-ℚ ((_ , a) , _) b = le-ℚ-Prop a b + +nonnegative-width-interval-ℚ : interval-ℚ → ℚ⁰⁺ +nonnegative-width-interval-ℚ ((a , b) , a≤b) = nonnegative-diff-leq-ℚ a b a≤b + +width-interval-ℚ : interval-ℚ → ℚ +width-interval-ℚ [a,b] = rational-ℚ⁰⁺ (nonnegative-width-interval-ℚ [a,b]) +``` + +### Important ranges + +```agda +zero-zero-interval-ℚ : interval-ℚ +zero-zero-interval-ℚ = ((zero-ℚ , zero-ℚ) , refl-leq-ℚ zero-ℚ) + +one-one-interval-ℚ : interval-ℚ +one-one-interval-ℚ = ((one-ℚ , one-ℚ) , refl-leq-ℚ one-ℚ) +``` + +## Properties + +### Characterization of equality + +```agda +eq-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + lower-bound-interval-ℚ [a,b] = lower-bound-interval-ℚ [c,d] → + upper-bound-interval-ℚ [a,b] = upper-bound-interval-ℚ [c,d] → + [a,b] = [c,d] +eq-interval-ℚ = eq-closed-interval-Poset ℚ-Poset + +set-interval-ℚ : Set lzero +set-interval-ℚ = set-closed-interval-Poset ℚ-Poset +``` + +### Unordered intervals + +```agda +unordered-interval-ℚ : ℚ → ℚ → interval-ℚ +unordered-interval-ℚ a b = + ( (min-ℚ a b , max-ℚ a b) , ?) ``` diff --git a/src/order-theory/closed-intervals-posets.lagda.md b/src/order-theory/closed-intervals-posets.lagda.md index 7a5c238147..65d1197d3e 100644 --- a/src/order-theory/closed-intervals-posets.lagda.md +++ b/src/order-theory/closed-intervals-posets.lagda.md @@ -9,13 +9,16 @@ module order-theory.closed-intervals-posets where ```agda open import foundation.action-on-identifications-functions open import foundation.conjunction +open import foundation.disjunction open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types +open import foundation.cartesian-product-types open import foundation.equality-dependent-pair-types open import foundation.existential-quantification open import foundation.identity-types open import foundation.images-subtypes open import foundation.inhabited-subtypes +open import foundation.unions-subtypes open import foundation.injective-maps open import foundation.logical-equivalences open import foundation.propositional-truncations @@ -27,7 +30,6 @@ open import foundation.universe-levels open import order-theory.interval-subposets open import order-theory.posets -open import order-theory.subposets ```
@@ -47,25 +49,26 @@ module _ closed-interval-Poset : UU (l1 ⊔ l2) closed-interval-Poset = - Σ (type-Poset X) (λ x → Σ (type-Poset X) ( λ y → leq-Poset X x y)) + Σ (type-Poset X × type-Poset X) (λ (x , y) → leq-Poset X x y) lower-bound-closed-interval-Poset : closed-interval-Poset → type-Poset X - lower-bound-closed-interval-Poset (x , _ , _) = x + lower-bound-closed-interval-Poset ((x , _) , _) = x upper-bound-closed-interval-Poset : closed-interval-Poset → type-Poset X - upper-bound-closed-interval-Poset (_ , y , _) = y + upper-bound-closed-interval-Poset ((_ , y) , _) = y - subposet-closed-interval-Poset : closed-interval-Poset → Subposet l2 X - subposet-closed-interval-Poset (x , y , _) = + subtype-closed-interval-Poset : + closed-interval-Poset → subtype l2 (type-Poset X) + subtype-closed-interval-Poset ((x , y) , _) = is-in-interval-Poset X x y type-closed-interval-Poset : closed-interval-Poset → UU (l1 ⊔ l2) type-closed-interval-Poset [x,y] = - type-subtype (subposet-closed-interval-Poset [x,y]) + type-subtype (subtype-closed-interval-Poset [x,y]) is-in-closed-interval-Poset : closed-interval-Poset → type-Poset X → UU l2 is-in-closed-interval-Poset [x,y] = - is-in-subtype (subposet-closed-interval-Poset [x,y]) + is-in-subtype (subtype-closed-interval-Poset [x,y]) ``` ## Properties @@ -79,15 +82,15 @@ module _ abstract is-inhabited-closed-interval-Poset : - is-inhabited-subtype (subposet-closed-interval-Poset X [x,y]) + is-inhabited-subtype (subtype-closed-interval-Poset X [x,y]) is-inhabited-closed-interval-Poset = unit-trunc-Prop ( lower-bound-closed-interval-Poset X [x,y] , refl-leq-Poset X _ , - pr2 (pr2 [x,y])) + pr2 [x,y]) ``` -### The map from closed intervals to subposets is injective +### Characterization of equality ```agda module _ @@ -95,33 +98,54 @@ module _ where abstract - is-injective-subposet-closed-interval-Poset : - is-injective (subposet-closed-interval-Poset X) - is-injective-subposet-closed-interval-Poset - {a , b , a≤b} {c , d , c≤d} [a,b]=[c,d] = - ap - ( λ ((p , q) , r) → (p , q , r)) - ( eq-pair-Σ - ( eq-pair - ( antisymmetric-leq-Poset X a c - ( pr1 - ( backward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] c) - ( refl-leq-Poset X c , c≤d))) - ( pr1 - ( forward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] a) - ( refl-leq-Poset X a , a≤b)))) - ( antisymmetric-leq-Poset X b d - ( pr2 - ( forward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] b) - ( a≤b , refl-leq-Poset X b))) - ( pr2 - ( backward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] d) - ( c≤d , refl-leq-Poset X d))))) - ( eq-type-Prop (leq-prop-Poset X _ _))) + eq-closed-interval-Poset : + ( [a,b] [c,d] : closed-interval-Poset X) → + ( lower-bound-closed-interval-Poset X [a,b] = + lower-bound-closed-interval-Poset X [c,d]) → + ( upper-bound-closed-interval-Poset X [a,b] = + upper-bound-closed-interval-Poset X [c,d]) → + [a,b] = [c,d] + eq-closed-interval-Poset ((a , b) , _) ((c , d) , _) a=c b=d = + eq-pair-Σ (eq-pair a=c b=d) (eq-type-Prop (leq-prop-Poset X _ _)) + + set-closed-interval-Poset : Set (l1 ⊔ l2) + set-closed-interval-Poset = + set-subset + ( product-Set (set-Poset X) (set-Poset X)) + ( ind-Σ (leq-prop-Poset X)) +``` + +### The map from closed intervals to subtypes is injective + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + is-injective-subtype-closed-interval-Poset : + is-injective (subtype-closed-interval-Poset X) + is-injective-subtype-closed-interval-Poset + {(a , b) , a≤b} {(c , d) , c≤d} [a,b]=[c,d] = + eq-closed-interval-Poset X _ _ + ( antisymmetric-leq-Poset X a c + ( pr1 + ( backward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] c) + ( refl-leq-Poset X c , c≤d))) + ( pr1 + ( forward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] a) + ( refl-leq-Poset X a , a≤b)))) + ( antisymmetric-leq-Poset X b d + ( pr2 + ( forward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] b) + ( a≤b , refl-leq-Poset X b))) + ( pr2 + ( backward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] d) + ( c≤d , refl-leq-Poset X d)))) ``` ### The property of a map of taking a closed interval to a closed interval @@ -138,6 +162,13 @@ module _ Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-prop-Poset [a,b] [c,d] = is-image-map-subtype-prop f - ( subposet-closed-interval-Poset X [a,b]) - ( subposet-closed-interval-Poset Y [c,d]) + ( subtype-closed-interval-Poset X [a,b]) + ( subtype-closed-interval-Poset Y [c,d]) + + is-closed-interval-map-Poset : + ([a,b] : closed-interval-Poset X) → + ([c,d] : closed-interval-Poset Y) → + UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-closed-interval-map-Poset [a,b] [c,d] = + type-Prop (is-closed-interval-map-prop-Poset [a,b] [c,d]) ``` From 90f991c1f15fb0866d93e70e2fc592c08d0f648a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 20 Aug 2025 15:01:44 -0700 Subject: [PATCH 04/59] Progress --- src/elementary-number-theory.lagda.md | 2 + ...dition-intervals-rational-numbers.lagda.md | 24 +- .../intervals-rational-numbers.lagda.md | 39 +- .../maximum-rational-numbers.lagda.md | 5 + .../minimum-rational-numbers.lagda.md | 5 + ...cation-intervals-rational-numbers.lagda.md | 490 ++++++++++++++++++ ...roup-of-positive-rational-numbers.lagda.md | 34 +- ...icative-group-of-rational-numbers.lagda.md | 37 +- .../negative-rational-numbers.lagda.md | 72 +++ src/order-theory.lagda.md | 1 + .../closed-intervals-posets.lagda.md | 37 +- .../closed-intervals-total-orders.lagda.md | 303 +++++++++++ .../decidable-total-orders.lagda.md | 18 + src/order-theory/total-orders.lagda.md | 158 +++++- 14 files changed, 1162 insertions(+), 63 deletions(-) create mode 100644 src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md create mode 100644 src/order-theory/closed-intervals-total-orders.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 48197c927f..132d80cd2b 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -14,6 +14,7 @@ open import elementary-number-theory.absolute-value-rational-numbers public open import elementary-number-theory.ackermann-function public open import elementary-number-theory.addition-integer-fractions public open import elementary-number-theory.addition-integers public +open import elementary-number-theory.addition-intervals-rational-numbers public open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public @@ -120,6 +121,7 @@ open import elementary-number-theory.monoid-of-natural-numbers-with-addition pub open import elementary-number-theory.monoid-of-natural-numbers-with-maximum public open import elementary-number-theory.multiplication-integer-fractions public open import elementary-number-theory.multiplication-integers public +open import elementary-number-theory.multiplication-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-positive-and-negative-integers public diff --git a/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md index c81496a624..c8f24fba5c 100644 --- a/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md @@ -7,29 +7,27 @@ module elementary-number-theory.addition-intervals-rational-numbers where
Imports ```agda -open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.strict-inequality-rational-numbers -open import elementary-number-theory.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.inequality-rational-numbers open import elementary-number-theory.intervals-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.propositions -open import foundation.existential-quantification open import foundation.coproduct-types -open import foundation.subtypes +open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.propositional-truncations +open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels -open import group-theory.semigroups -open import group-theory.monoids open import group-theory.commutative-monoids -open import order-theory.closed-intervals-posets open import group-theory.minkowski-multiplication-commutative-monoids +open import group-theory.monoids +open import group-theory.semigroups + +open import order-theory.closed-intervals-posets ```
@@ -38,13 +36,11 @@ open import group-theory.minkowski-multiplication-commutative-monoids Given two [intervals](elementary-number-theory.intervals-rational-numbers.md) `[a, b]` and `[c, d]` in the -[rational numbers](elementary-number-theory.rational-numbers.md), -the +[rational numbers](elementary-number-theory.rational-numbers.md), the [Minkowski sum](group-theory.minkowski-multiplications-commutative-monoids.md) of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) agrees with the interval `[a +ℚ c, b +ℚ d]`. - ## Definition ```agda diff --git a/src/elementary-number-theory/intervals-rational-numbers.lagda.md b/src/elementary-number-theory/intervals-rational-numbers.lagda.md index ad59f474bb..31e63cb6b4 100644 --- a/src/elementary-number-theory/intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/intervals-rational-numbers.lagda.md @@ -7,21 +7,23 @@ module elementary-number-theory.intervals-rational-numbers where
Imports ```agda +open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.strict-inequality-rational-numbers -open import elementary-number-theory.rational-numbers -open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.maximum-rational-numbers +open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.propositions -open import foundation.subtypes open import foundation.sets +open import foundation.subtypes open import foundation.universe-levels open import order-theory.closed-intervals-posets +open import order-theory.decidable-total-orders ```
@@ -48,6 +50,9 @@ upper-bound-interval-ℚ = upper-bound-closed-interval-Poset ℚ-Poset subtype-interval-ℚ : interval-ℚ → subtype lzero ℚ subtype-interval-ℚ = subtype-closed-interval-Poset ℚ-Poset +is-in-interval-ℚ : interval-ℚ → ℚ → UU lzero +is-in-interval-ℚ [a,b] = is-in-subtype (subtype-interval-ℚ [a,b]) + is-closed-interval-map-prop-ℚ : (ℚ → ℚ) → interval-ℚ → interval-ℚ → Prop lzero is-closed-interval-map-prop-ℚ = @@ -97,5 +102,29 @@ set-interval-ℚ = set-closed-interval-Poset ℚ-Poset ```agda unordered-interval-ℚ : ℚ → ℚ → interval-ℚ unordered-interval-ℚ a b = - ( (min-ℚ a b , max-ℚ a b) , ?) + ( (min-ℚ a b , max-ℚ a b) , + min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order a b) + +abstract + unordered-interval-leq-ℚ : + (p q : ℚ) → (p≤q : leq-ℚ p q) → unordered-interval-ℚ p q = ((p , q) , p≤q) + unordered-interval-leq-ℚ p q p≤q = + eq-interval-ℚ _ _ + (left-leq-right-min-ℚ p q p≤q) + (left-leq-right-max-ℚ p q p≤q) + + unordered-interval-leq-ℚ' : + (p q : ℚ) → (q≤p : leq-ℚ q p) → unordered-interval-ℚ p q = ((q , p) , q≤p) + unordered-interval-leq-ℚ' p q q≤p = + eq-interval-ℚ _ _ + (right-leq-left-min-ℚ p q q≤p) + (right-leq-left-max-ℚ p q q≤p) +``` + +### Maps from rational intervals to rational intervals + +```agda +is-interval-map-ℚ : + (ℚ → ℚ) → ([a,b] [c,d] : interval-ℚ) → UU lzero +is-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset ``` diff --git a/src/elementary-number-theory/maximum-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-rational-numbers.lagda.md index 80cde98f19..5fcfe7487f 100644 --- a/src/elementary-number-theory/maximum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/maximum-rational-numbers.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.action-on-identifications-binary-functions open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.identity-types @@ -38,6 +39,10 @@ number of the two. This is the ```agda max-ℚ : ℚ → ℚ → ℚ max-ℚ = max-Decidable-Total-Order ℚ-Decidable-Total-Order + +ap-max-ℚ : + {p p' : ℚ} → (p = p') → {q q' : ℚ} → (q = q') → max-ℚ p q = max-ℚ p' q' +ap-max-ℚ = ap-binary max-ℚ ``` ## Properties diff --git a/src/elementary-number-theory/minimum-rational-numbers.lagda.md b/src/elementary-number-theory/minimum-rational-numbers.lagda.md index 434ce781ec..ac501ad417 100644 --- a/src/elementary-number-theory/minimum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minimum-rational-numbers.lagda.md @@ -12,6 +12,7 @@ open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.action-on-identifications-binary-functions open import foundation.coproduct-types open import foundation.identity-types open import foundation.transport-along-identifications @@ -37,6 +38,10 @@ the ```agda min-ℚ : ℚ → ℚ → ℚ min-ℚ = min-Decidable-Total-Order ℚ-Decidable-Total-Order + +ap-min-ℚ : + {p p' : ℚ} → (p = p') → {q q' : ℚ} → (q = q') → min-ℚ p q = min-ℚ p' q' +ap-min-ℚ = ap-binary min-ℚ ``` ## Properties diff --git a/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..c9482a05d0 --- /dev/null +++ b/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md @@ -0,0 +1,490 @@ +# Multiplication on intervals in the rational numbers + +```agda +module elementary-number-theory.multiplication-intervals-rational-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.decidable-total-order-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.intervals-rational-numbers +open import elementary-number-theory.maximum-rational-numbers +open import elementary-number-theory.minimum-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.multiplicative-group-of-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.positive-and-negative-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.binary-transport +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.identity-types +open import foundation.images-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.commutative-monoids +open import group-theory.minkowski-multiplication-commutative-monoids +open import group-theory.monoids +open import group-theory.semigroups + +open import order-theory.closed-intervals-total-orders +open import order-theory.decidable-total-orders +``` + +
+ +## Idea + +Given two [intervals](elementary-number-theory.intervals-rational-numbers.md) +`[a, b]` and `[c, d]` in the +[rational numbers](elementary-number-theory.rational-numbers.md), the +[Minkowski product](group-theory.minkowski-multiplications-commutative-monoids.md) +of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) +agrees with the interval `[min(ac, ad, bc, bd), max(ac, ad, bc, bd)]`. + +## Definition + +```agda +mul-right-interval-ℚ : ℚ → interval-ℚ → interval-ℚ +mul-right-interval-ℚ a ((b , c) , _) = + unordered-interval-ℚ (a *ℚ b) (a *ℚ c) + +mul-left-interval-ℚ : interval-ℚ → ℚ → interval-ℚ +mul-left-interval-ℚ ((a , b) , _) c = + unordered-interval-ℚ (a *ℚ c) (b *ℚ c) + +lower-bound-mul-interval-ℚ : interval-ℚ → interval-ℚ → ℚ +lower-bound-mul-interval-ℚ ((a , b) , _) ((c , d) , _) = + min-ℚ (min-ℚ (a *ℚ c) (a *ℚ d)) (min-ℚ (b *ℚ c) (b *ℚ d)) + +upper-bound-mul-interval-ℚ : interval-ℚ → interval-ℚ → ℚ +upper-bound-mul-interval-ℚ ((a , b) , _) ((c , d) , _) = + max-ℚ (max-ℚ (a *ℚ c) (a *ℚ d)) (max-ℚ (b *ℚ c) (b *ℚ d)) + +abstract + lower-bound-leq-upper-bound-mul-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + leq-ℚ + ( lower-bound-mul-interval-ℚ [a,b] [c,d]) + ( upper-bound-mul-interval-ℚ [a,b] [c,d]) + lower-bound-leq-upper-bound-mul-interval-ℚ ((a , b) , _) ((c , d) , _) = + let min≤max = min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order + in + transitive-leq-ℚ + ( min-ℚ (min-ℚ (a *ℚ c) (a *ℚ d)) (min-ℚ (b *ℚ c) (b *ℚ d))) + ( max-ℚ (min-ℚ (a *ℚ c) (a *ℚ d)) (min-ℚ (b *ℚ c) (b *ℚ d))) + ( max-ℚ (max-ℚ (a *ℚ c) (a *ℚ d)) (max-ℚ (b *ℚ c) (b *ℚ d))) + ( max-leq-leq-ℚ _ _ _ _ (min≤max _ _) (min≤max _ _)) + ( min≤max _ _) + +mul-interval-ℚ : interval-ℚ → interval-ℚ → interval-ℚ +mul-interval-ℚ [a,b] [c,d] = + ( ( lower-bound-mul-interval-ℚ [a,b] [c,d] , + upper-bound-mul-interval-ℚ [a,b] [c,d]) , + lower-bound-leq-upper-bound-mul-interval-ℚ [a,b] [c,d]) +``` + +## Properties + +### Left multiplication by an interval + +#### By a negative rational number + +```agda +left-mul-interval-ℚ⁻ : interval-ℚ → ℚ⁻ → interval-ℚ +left-mul-interval-ℚ⁻ ((p , q) , p≤q) s⁻@(s , _) = + ((q *ℚ s , p *ℚ s) , reverses-leq-right-mul-ℚ⁻ s⁻ _ _ p≤q) + +abstract + left-mul-element-interval-ℚ⁻ : + ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → is-in-interval-ℚ [p,q] s → + is-in-interval-ℚ + ( left-mul-interval-ℚ⁻ [p,q] r) + ( s *ℚ rational-ℚ⁻ r) + left-mul-element-interval-ℚ⁻ + ((p , q) , p≤q) r s (p≤s , s≤q) = + ( reverses-leq-right-mul-ℚ⁻ r _ _ s≤q , + reverses-leq-right-mul-ℚ⁻ r _ _ p≤s) + + image-left-mul-element-interval-ℚ⁻ : + ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → + is-in-interval-ℚ + ( left-mul-interval-ℚ⁻ [p,q] r) + ( s) → + is-in-im-subtype (mul-ℚ' (rational-ℚ⁻ r)) (subtype-interval-ℚ [p,q]) s + image-left-mul-element-interval-ℚ⁻ + ((p , q) , p≤q) r⁻@(r , _) s (qr≤s , s≤pr) = + let r⁻¹ = inv-ℚ⁻ r⁻ + in + intro-exists + ( ( s *ℚ rational-ℚ⁻ r⁻¹ , + tr + ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁻ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ p) + ( reverses-leq-right-mul-ℚ⁻ r⁻¹ s (p *ℚ r) s≤pr) , + tr + ( leq-ℚ (s *ℚ rational-ℚ⁻ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ q) + ( reverses-leq-right-mul-ℚ⁻ r⁻¹ (q *ℚ r) s qr≤s))) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (left-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ s) + + is-interval-map-left-mul-ℚ⁻ : + (q : ℚ⁻) ([a,b] : interval-ℚ) → + is-interval-map-ℚ + ( mul-ℚ' (rational-ℚ⁻ q)) + ( [a,b]) + ( left-mul-interval-ℚ⁻ [a,b] q) + is-interval-map-left-mul-ℚ⁻ q [a,b] = + ( ind-Σ (left-mul-element-interval-ℚ⁻ [a,b] q) , + ind-Σ (image-left-mul-element-interval-ℚ⁻ [a,b] q)) +``` + +#### By a positive rational number + +```agda +left-mul-interval-ℚ⁺ : interval-ℚ → ℚ⁺ → interval-ℚ +left-mul-interval-ℚ⁺ ((p , q) , p≤q) s⁺@(s , _) = + ((p *ℚ s , q *ℚ s) , preserves-leq-right-mul-ℚ⁺ s⁺ _ _ p≤q) + +abstract + left-mul-element-interval-ℚ⁺ : + ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → is-in-interval-ℚ [p,q] s → + is-in-interval-ℚ + ( left-mul-interval-ℚ⁺ [p,q] r) + ( s *ℚ rational-ℚ⁺ r) + left-mul-element-interval-ℚ⁺ + ((p , q) , p≤q) r s (p≤s , s≤q) = + ( preserves-leq-right-mul-ℚ⁺ r _ _ p≤s , + preserves-leq-right-mul-ℚ⁺ r _ _ s≤q) + + image-left-mul-element-interval-ℚ⁺ : + ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → + is-in-interval-ℚ + ( left-mul-interval-ℚ⁺ [p,q] r) + ( s) → + is-in-im-subtype (mul-ℚ' (rational-ℚ⁺ r)) (subtype-interval-ℚ [p,q]) s + image-left-mul-element-interval-ℚ⁺ + ((p , q) , p≤q) r⁺@(r , _) s (pr≤s , s≤qr) = + let r⁻¹ = inv-ℚ⁺ r⁺ + in + intro-exists + ( ( s *ℚ rational-ℚ⁺ r⁻¹ , + tr + ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁺ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ p) + ( preserves-leq-right-mul-ℚ⁺ r⁻¹ (p *ℚ r) s pr≤s) , + tr + ( leq-ℚ (s *ℚ rational-ℚ⁺ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ q) + ( preserves-leq-right-mul-ℚ⁺ r⁻¹ s (q *ℚ r) s≤qr))) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (left-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ s) + + is-interval-map-left-mul-ℚ⁺ : + (q : ℚ⁺) ([a,b] : interval-ℚ) → + is-interval-map-ℚ + ( mul-ℚ' (rational-ℚ⁺ q)) + ( [a,b]) + ( left-mul-interval-ℚ⁺ [a,b] q) + is-interval-map-left-mul-ℚ⁺ q [a,b] = + ( ind-Σ (left-mul-element-interval-ℚ⁺ [a,b] q) , + ind-Σ (image-left-mul-element-interval-ℚ⁺ [a,b] q)) +``` + +#### By zero + +```agda +abstract + image-left-mul-element-interval-zero-ℚ : + ([p,q] : interval-ℚ) → (s : ℚ) → + is-in-interval-ℚ + ( zero-zero-interval-ℚ) + ( s) → + is-in-im-subtype (mul-ℚ' zero-ℚ) (subtype-interval-ℚ [p,q]) s + image-left-mul-element-interval-zero-ℚ + ((p , q) , p≤q) s (0≤s , s≤0) = + intro-exists + ( p , refl-leq-ℚ p , p≤q) + ( right-zero-law-mul-ℚ p ∙ antisymmetric-leq-ℚ _ _ 0≤s s≤0) + + is-interval-map-left-mul-zero-ℚ : + ([a,b] : interval-ℚ) → + is-interval-map-ℚ + ( mul-ℚ' zero-ℚ) + ( [a,b]) + ( zero-zero-interval-ℚ) + is-interval-map-left-mul-zero-ℚ [a,b] = + ( ( λ r → + inv-tr + ( is-in-interval-ℚ zero-zero-interval-ℚ) + ( right-zero-law-mul-ℚ _) + ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) , + ind-Σ (image-left-mul-element-interval-zero-ℚ [a,b])) +``` + +#### By any rational number + +```agda +left-mul-interval-ℚ : interval-ℚ → ℚ → interval-ℚ +left-mul-interval-ℚ ((a , b) , a≤b) c = + ( (min-ℚ (a *ℚ c) (b *ℚ c) , max-ℚ (a *ℚ c) (b *ℚ c)) , + min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order _ _) + +abstract + left-mul-interval-is-negative-ℚ : + ([p,q] : interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → + left-mul-interval-ℚ [p,q] r = + left-mul-interval-ℚ⁻ [p,q] (r , neg-r) + left-mul-interval-is-negative-ℚ [p,q]@((p , q) , p≤q) r neg-r = + unordered-interval-leq-ℚ' _ _ + ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) + + left-mul-interval-is-positive-ℚ : + ([p,q] : interval-ℚ) (r : ℚ) (pos-r : is-positive-ℚ r) → + left-mul-interval-ℚ [p,q] r = + left-mul-interval-ℚ⁺ [p,q] (r , pos-r) + left-mul-interval-is-positive-ℚ [p,q]@((p , q) , p≤q) r pos-r = + unordered-interval-leq-ℚ _ _ + ( preserves-leq-right-mul-ℚ⁺ (r , pos-r) _ _ p≤q) + + left-mul-interval-is-zero-ℚ : + ([p,q] : interval-ℚ) (r : ℚ) (is-zero-r : is-zero-ℚ r) → + left-mul-interval-ℚ [p,q] r = zero-zero-interval-ℚ + left-mul-interval-is-zero-ℚ ((p , q) , p≤q) _ refl = + eq-interval-ℚ _ _ + ( ap-min-ℚ + ( right-zero-law-mul-ℚ _) + ( right-zero-law-mul-ℚ _) ∙ + idempotent-min-ℚ zero-ℚ) + ( ap-max-ℚ + ( right-zero-law-mul-ℚ _) + ( right-zero-law-mul-ℚ _) ∙ + idempotent-max-ℚ zero-ℚ) + + left-mul-element-interval-ℚ : + ([p,q] : interval-ℚ) → (r s : ℚ) → is-in-interval-ℚ [p,q] s → + is-in-interval-ℚ + ( left-mul-interval-ℚ [p,q] r) + ( s *ℚ r) + left-mul-element-interval-ℚ [p,q] r s s∈[p,q] = + trichotomy-sign-ℚ r + ( λ neg-r → + inv-tr + ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) + ( left-mul-interval-is-negative-ℚ [p,q] r neg-r) + ( left-mul-element-interval-ℚ⁻ [p,q] (r , neg-r) s s∈[p,q])) + ( λ r=0 → + binary-tr + ( is-in-interval-ℚ) + ( inv (left-mul-interval-is-zero-ℚ [p,q] r r=0)) + ( inv (ap-mul-ℚ refl r=0 ∙ right-zero-law-mul-ℚ s)) + ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) + ( λ pos-r → + inv-tr + ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) + ( left-mul-interval-is-positive-ℚ [p,q] r pos-r) + ( left-mul-element-interval-ℚ⁺ [p,q] (r , pos-r) s s∈[p,q])) + + image-left-mul-element-interval-ℚ : + ([p,q] : interval-ℚ) (r s : ℚ) → + is-in-interval-ℚ + ( left-mul-interval-ℚ [p,q] r) + ( s) → + is-in-im-subtype (mul-ℚ' r) (subtype-interval-ℚ [p,q]) s + image-left-mul-element-interval-ℚ [p,q] r s s∈[min-pr-qr,max-pr-qr] = + trichotomy-sign-ℚ r + ( λ neg-r → + image-left-mul-element-interval-ℚ⁻ + ( [p,q]) + ( r , neg-r) + ( s) + ( tr + ( λ [x,y] → is-in-interval-ℚ [x,y] s) + ( left-mul-interval-is-negative-ℚ [p,q] r neg-r) + ( s∈[min-pr-qr,max-pr-qr]))) + ( λ r=0 → + inv-tr + ( λ t → is-in-im-subtype (mul-ℚ' t) (subtype-interval-ℚ [p,q]) s) + ( r=0) + ( image-left-mul-element-interval-zero-ℚ + ( [p,q]) + ( s) + ( tr + ( λ [x,y] → is-in-interval-ℚ [x,y] s) + ( left-mul-interval-is-zero-ℚ [p,q] r r=0) + ( s∈[min-pr-qr,max-pr-qr])))) + ( λ pos-r → + image-left-mul-element-interval-ℚ⁺ + ( [p,q]) + ( r , pos-r) + ( s) + ( tr + ( λ [x,y] → is-in-interval-ℚ [x,y] s) + ( left-mul-interval-is-positive-ℚ [p,q] r pos-r) + ( s∈[min-pr-qr,max-pr-qr]))) + + is-interval-map-left-mul-ℚ : + (q : ℚ) ([a,b] : interval-ℚ) → + is-interval-map-ℚ (mul-ℚ' q) [a,b] (left-mul-interval-ℚ [a,b] q) + is-interval-map-left-mul-ℚ q [a,b] = + ( ind-Σ (left-mul-element-interval-ℚ [a,b] q) , + ind-Σ (image-left-mul-element-interval-ℚ [a,b] q)) +``` + +### Right multiplication by an interval + +```agda +right-mul-interval-ℚ : ℚ → interval-ℚ → interval-ℚ +right-mul-interval-ℚ a ((b , c) , b≤c) = + ( (min-ℚ (a *ℚ b) (a *ℚ c) , max-ℚ (a *ℚ b) (a *ℚ c)) , + min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order _ _) + +abstract + commute-left-right-mul-interval-ℚ : + ([p,q] : interval-ℚ) (r : ℚ) → + left-mul-interval-ℚ [p,q] r = right-mul-interval-ℚ r [p,q] + commute-left-right-mul-interval-ℚ [p,q] r = + eq-interval-ℚ _ _ + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + + right-mul-element-interval-ℚ : + ([p,q] : interval-ℚ) → (r s : ℚ) → is-in-interval-ℚ [p,q] s → + is-in-interval-ℚ + ( right-mul-interval-ℚ r [p,q]) + ( r *ℚ s) + right-mul-element-interval-ℚ [p,q] r s s∈[p,q] = + binary-tr + ( is-in-interval-ℚ) + ( commute-left-right-mul-interval-ℚ [p,q] r) + ( commutative-mul-ℚ s r) + ( left-mul-element-interval-ℚ [p,q] r s s∈[p,q]) + + image-right-mul-element-interval-ℚ : + ([p,q] : interval-ℚ) (r s : ℚ) → + is-in-interval-ℚ + ( right-mul-interval-ℚ r [p,q]) + ( s) → + is-in-im-subtype (mul-ℚ r) (subtype-interval-ℚ [p,q]) s + image-right-mul-element-interval-ℚ [p,q] r s s∈[min-rp-rq,max-rp-rq] = + tr + ( λ f → is-in-im-subtype f (subtype-interval-ℚ [p,q]) s) + ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) + ( image-left-mul-element-interval-ℚ [p,q] r s + ( inv-tr + ( λ [x,y] → is-in-interval-ℚ [x,y] s) + ( commute-left-right-mul-interval-ℚ [p,q] r) + ( s∈[min-rp-rq,max-rp-rq]))) + + is-interval-map-right-mul-ℚ : + (q : ℚ) ([a,b] : interval-ℚ) → + is-interval-map-ℚ (mul-ℚ q) [a,b] (right-mul-interval-ℚ q [a,b]) + is-interval-map-right-mul-ℚ q [a,b] = + binary-tr + ( λ f i → is-interval-map-ℚ f [a,b] i) + ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) + ( commute-left-right-mul-interval-ℚ [a,b] q) + ( is-interval-map-left-mul-ℚ q [a,b]) +``` + +### Multiplication of two closed intervals + +```agda +abstract + mul-elements-intervals-ℚ : + ([a,b] [c,d] : interval-ℚ) (p q : ℚ) → + is-in-interval-ℚ [a,b] p → is-in-interval-ℚ [c,d] q → + is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) (p *ℚ q) + mul-elements-intervals-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) p q + p∈[a,b]@(a≤p , p≤b) q∈[c,d]@(c≤q , q≤d) = + let + (min-aq-bq≤pq , pq≤max-aq-bq) = + left-mul-element-interval-ℚ [a,b] q p p∈[a,b] + (min-ac-ad≤aq , aq≤max-ac-ad) = + right-mul-element-interval-ℚ [c,d] a q q∈[c,d] + (min-bc-bd≤bq , bq≤max-bc-bd) = + right-mul-element-interval-ℚ [c,d] b q q∈[c,d] + in + ( transitive-leq-ℚ + ( lower-bound-mul-interval-ℚ [a,b] [c,d]) + ( _) + ( p *ℚ q) + ( min-aq-bq≤pq) + ( min-leq-leq-ℚ _ _ _ _ min-ac-ad≤aq min-bc-bd≤bq) , + transitive-leq-ℚ + ( p *ℚ q) + ( _) + ( upper-bound-mul-interval-ℚ [a,b] [c,d]) + ( max-leq-leq-ℚ _ _ _ _ aq≤max-ac-ad bq≤max-bc-bd) + ( pq≤max-aq-bq)) + + image-mul-elements-intervals-ℚ : + ([a,b] [c,d] : interval-ℚ) → (q : ℚ) → + is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) q → + is-in-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d])) + ( q) + image-mul-elements-intervals-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q + (min-ac-ad-bc-bd≤q , q≤max-ac-ad-bc-bd) = + let + motive = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d]) + ( q) + from-[a,b] : + (x : ℚ) → is-in-interval-ℚ [a,b] x → + is-in-im-subtype (mul-ℚ x) (subtype-interval-ℚ [c,d]) q → + type-Prop motive + from-[a,b] x x∈[a,b] q∈p[c,d] = + let open do-syntax-trunc-Prop motive + in do + ((y , y∈[c,d]) , xy=q) ← q∈p[c,d] + intro-exists (x , y) (x∈[a,b] , y∈[c,d] , inv xy=q) + from-[c,d] : + (y : ℚ) → is-in-interval-ℚ [c,d] y → + is-in-im-subtype (mul-ℚ' y) (subtype-interval-ℚ [a,b]) q → + type-Prop motive + from-[c,d] y y∈[c,d] q∈[a,b]y = + let open do-syntax-trunc-Prop motive + in do + ((x , x∈[a,b]) , xy=q) ← q∈[a,b]y + intro-exists (x , y) (x∈[a,b] , y∈[c,d] , inv xy=q) + in + {! !} +``` 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 69c04768ad..ea864c1435 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 @@ -103,16 +103,12 @@ opaque unfolding inv-ℚ⁺ unfolding leq-ℚ-Prop - inv-leq-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ (inv-ℚ⁺ x) (inv-ℚ⁺ y) → leq-ℚ⁺ y x + inv-leq-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ x y → leq-ℚ⁺ (inv-ℚ⁺ y) (inv-ℚ⁺ x) inv-leq-ℚ⁺ x y = binary-tr ( leq-ℤ) - ( commutative-mul-ℤ - ( denominator-ℚ⁺ x) - ( numerator-ℚ⁺ y)) - ( commutative-mul-ℤ - ( denominator-ℚ⁺ y) - ( numerator-ℚ⁺ x)) + ( commutative-mul-ℤ _ _) + ( commutative-mul-ℤ _ _) ``` ### Inversion reverses strict inequality on the positive rational numbers @@ -122,29 +118,19 @@ opaque unfolding inv-ℚ⁺ unfolding le-ℚ-Prop - inv-le-ℚ⁺ : (x y : ℚ⁺) → le-ℚ⁺ (inv-ℚ⁺ x) (inv-ℚ⁺ y) → le-ℚ⁺ y x + inv-le-ℚ⁺ : (x y : ℚ⁺) → le-ℚ⁺ x y → le-ℚ⁺ (inv-ℚ⁺ y) (inv-ℚ⁺ x) inv-le-ℚ⁺ x y = binary-tr ( le-ℤ) - ( commutative-mul-ℤ - ( denominator-ℚ⁺ x) - ( numerator-ℚ⁺ y)) - ( commutative-mul-ℤ - ( denominator-ℚ⁺ y) - ( numerator-ℚ⁺ x)) - - inv-le-ℚ⁺' : (x y : ℚ⁺) → le-ℚ⁺ x y → le-ℚ⁺ (inv-ℚ⁺ y) (inv-ℚ⁺ x) + ( commutative-mul-ℤ _ _) + ( commutative-mul-ℤ _ _) + + inv-le-ℚ⁺' : (x y : ℚ⁺) → le-ℚ⁺ (inv-ℚ⁺ x) (inv-ℚ⁺ y) → le-ℚ⁺ y x inv-le-ℚ⁺' x y = binary-tr ( le-ℤ) - ( inv - ( commutative-mul-ℤ - ( denominator-ℚ⁺ y) - ( numerator-ℚ⁺ x))) - ( inv - ( commutative-mul-ℤ - ( denominator-ℚ⁺ x) - ( numerator-ℚ⁺ y))) + ( commutative-mul-ℤ _ _) + ( commutative-mul-ℤ _ _) ``` ### Inversion of positive rational numbers distributes over multiplication 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 9fd3c96f59..e834bf28a2 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,17 +9,24 @@ module elementary-number-theory.multiplicative-group-of-rational-numbers where
Imports ```agda +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.nonzero-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.ring-of-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.empty-types open import foundation.function-types open import foundation.identity-types open import foundation.subtypes +open import foundation.transport-along-identifications open import foundation.universe-levels open import group-theory.abelian-groups @@ -62,6 +69,9 @@ group-mul-ℚˣ = group-of-units-Ring ring-ℚ one-ℚˣ : ℚˣ one-ℚˣ = unit-group-of-units-Ring ring-ℚ + +rational-ℚˣ : ℚˣ → ℚ +rational-ℚˣ = pr1 ``` ### Operations of the multiplicative group of rational numbers @@ -127,14 +137,15 @@ module _ ( H) ( inv K) - is-invertible-element-ring-is-nonzero-ℚ : - is-nonzero-ℚ x → is-invertible-element-Ring ring-ℚ x - is-invertible-element-ring-is-nonzero-ℚ H = - rec-coproduct - ( ( is-invertible-element-neg-Ring' ring-ℚ x) ∘ - ( is-mul-invertible-is-positive-ℚ (neg-ℚ x))) - ( is-mul-invertible-is-positive-ℚ x) - ( decide-is-negative-is-positive-is-nonzero-ℚ H) + abstract + is-invertible-element-ring-is-nonzero-ℚ : + is-nonzero-ℚ x → is-invertible-element-Ring ring-ℚ x + is-invertible-element-ring-is-nonzero-ℚ H = + rec-coproduct + ( ( is-invertible-element-neg-Ring' ring-ℚ x) ∘ + ( is-mul-invertible-is-positive-ℚ (neg-ℚ x))) + ( is-mul-invertible-is-positive-ℚ x) + ( decide-is-negative-is-positive-is-nonzero-ℚ H) eq-is-invertible-element-prop-is-nonzero-prop-ℚ : is-nonzero-prop-ℚ = is-invertible-element-prop-Ring ring-ℚ @@ -144,4 +155,14 @@ eq-is-invertible-element-prop-is-nonzero-prop-ℚ = ( is-invertible-element-prop-Ring ring-ℚ) ( is-invertible-element-ring-is-nonzero-ℚ) ( is-nonzero-is-invertible-element-ring-ℚ) + +invertible-nonzero-ℚ : nonzero-ℚ → ℚˣ +invertible-nonzero-ℚ (q , q≠0) = + (q , is-invertible-element-ring-is-nonzero-ℚ q q≠0) + +invertible-ℚ⁺ : ℚ⁺ → ℚˣ +invertible-ℚ⁺ = invertible-nonzero-ℚ ∘ nonzero-ℚ⁺ + +invertible-ℚ⁻ : ℚ⁻ → ℚˣ +invertible-ℚ⁻ = invertible-nonzero-ℚ ∘ nonzero-ℚ⁻ ``` diff --git a/src/elementary-number-theory/negative-rational-numbers.lagda.md b/src/elementary-number-theory/negative-rational-numbers.lagda.md index 4866997b19..a384df3f54 100644 --- a/src/elementary-number-theory/negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/negative-rational-numbers.lagda.md @@ -14,6 +14,7 @@ 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.multiplication-rational-numbers +open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers open import elementary-number-theory.negative-integer-fractions open import elementary-number-theory.negative-integers open import elementary-number-theory.nonzero-rational-numbers @@ -24,6 +25,8 @@ open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.action-on-identifications-functions +open import foundation.binary-relations open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.identity-types @@ -218,6 +221,9 @@ abstract ( is-nonzero-ℚ) ( neg-neg-ℚ x) ( is-nonzero-neg-ℚ (is-nonzero-is-positive-ℚ H)) + +nonzero-ℚ⁻ : ℚ⁻ → nonzero-ℚ +nonzero-ℚ⁻ (x , N) = (x , is-nonzero-is-negative-ℚ N) ``` ### The product of two negative rational numbers is positive @@ -283,3 +289,69 @@ module _ ( neg-ℚ q) ( neg-le-ℚ q r H)) ``` + +### 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)) +``` + +### Inequality on negative rational numbers + +```agda +leq-ℚ⁻ : Relation lzero ℚ⁻ +leq-ℚ⁻ p q = leq-ℚ (rational-ℚ⁻ p) (rational-ℚ⁻ q) + +le-ℚ⁻ : Relation lzero ℚ⁻ +le-ℚ⁻ p q = le-ℚ (rational-ℚ⁻ p) (rational-ℚ⁻ 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-ℚ + ( rational-ℚ⁺ (inv-ℚ⁺ (neg-ℚ⁻ p))) + ( rational-ℚ⁺ (inv-ℚ⁺ (neg-ℚ⁻ q))) + ( 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 foundation.action-on-identifications-functions -open import foundation.conjunction -open import foundation.disjunction +open import foundation.cartesian-product-types open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types -open import foundation.cartesian-product-types open import foundation.equality-dependent-pair-types -open import foundation.existential-quantification open import foundation.identity-types open import foundation.images-subtypes open import foundation.inhabited-subtypes -open import foundation.unions-subtypes open import foundation.injective-maps open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.propositions open import foundation.sets open import foundation.subtypes -open import foundation.univalence open import foundation.universe-levels open import order-theory.interval-subposets @@ -38,7 +32,8 @@ open import order-theory.posets A {{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} -in a poset `P` consists of a pair of elements `x` and `y` in `P` with `x ≤ y`. +in a [poset](order-theory.posets.md) `P` consists of a pair of elements `x` and +`y` in `P` with `x ≤ y`. ## Definition @@ -73,6 +68,29 @@ module _ ## Properties +### The endpoints of a closed interval are in the interval + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + lower-bound-is-in-closed-interval-Poset : + ([a,b] : closed-interval-Poset X) → + is-in-closed-interval-Poset X [a,b] + ( lower-bound-closed-interval-Poset X [a,b]) + lower-bound-is-in-closed-interval-Poset ((a , b) , a≤b) = + ( refl-leq-Poset X a , a≤b) + + upper-bound-is-in-closed-interval-Poset : + ([a,b] : closed-interval-Poset X) → + is-in-closed-interval-Poset X [a,b] + ( upper-bound-closed-interval-Poset X [a,b]) + upper-bound-is-in-closed-interval-Poset ((a , b) , a≤b) = + ( a≤b , refl-leq-Poset X b) +``` + ### Closed intervals are inhabited ```agda @@ -86,8 +104,7 @@ module _ is-inhabited-closed-interval-Poset = unit-trunc-Prop ( lower-bound-closed-interval-Poset X [x,y] , - refl-leq-Poset X _ , - pr2 [x,y]) + lower-bound-is-in-closed-interval-Poset X [x,y]) ``` ### Characterization of equality diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md new file mode 100644 index 0000000000..1eab068cea --- /dev/null +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -0,0 +1,303 @@ +# Closed intervals in total orders + +```agda +module order-theory.closed-intervals-total-orders where +``` + +
Imports + +```agda +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.functoriality-disjunction +open import foundation.identity-types +open import foundation.inhabited-subtypes +open import foundation.injective-maps +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.unions-subtypes +open import foundation.universe-levels + +open import order-theory.closed-intervals-posets +open import order-theory.posets +open import order-theory.total-orders +``` + +
+ +## Idea + +A +{{#concept "closed interval" disambiguation="in a total order" Agda=closed-interval-Total-Order}} +in a [total order](order-theory.total-orders.md) `T` is a +[closed interval](order-theory.closed-intervals-posets.md) in the underlying +[poset](order-theory.posets.md). + +## Definition + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + closed-interval-Total-Order : UU (l1 ⊔ l2) + closed-interval-Total-Order = + closed-interval-Poset (poset-Total-Order X) + + lower-bound-closed-interval-Total-Order : + closed-interval-Total-Order → type-Total-Order X + lower-bound-closed-interval-Total-Order ((x , _) , _) = x + + upper-bound-closed-interval-Total-Order : + closed-interval-Total-Order → type-Total-Order X + upper-bound-closed-interval-Total-Order ((_ , y) , _) = y + + subtype-closed-interval-Total-Order : + closed-interval-Total-Order → subtype l2 (type-Total-Order X) + subtype-closed-interval-Total-Order = + subtype-closed-interval-Poset (poset-Total-Order X) + + type-closed-interval-Total-Order : closed-interval-Total-Order → UU (l1 ⊔ l2) + type-closed-interval-Total-Order = + type-closed-interval-Poset (poset-Total-Order X) + + is-in-closed-interval-Total-Order : + closed-interval-Total-Order → type-Total-Order X → UU l2 + is-in-closed-interval-Total-Order = + is-in-closed-interval-Poset (poset-Total-Order X) +``` + +## Properties + +### The endpoints of a closed interval are in the interval + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + abstract + lower-bound-is-in-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + is-in-closed-interval-Total-Order X [a,b] + ( lower-bound-closed-interval-Total-Order X [a,b]) + lower-bound-is-in-closed-interval-Total-Order = + lower-bound-is-in-closed-interval-Poset (poset-Total-Order X) + + upper-bound-is-in-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + is-in-closed-interval-Total-Order X [a,b] + ( upper-bound-closed-interval-Total-Order X [a,b]) + upper-bound-is-in-closed-interval-Total-Order = + upper-bound-is-in-closed-interval-Poset (poset-Total-Order X) +``` + +### Closed intervals are inhabited + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + ([x,y] : closed-interval-Total-Order X) + where + + abstract + is-inhabited-closed-interval-Total-Order : + is-inhabited-subtype (subtype-closed-interval-Total-Order X [x,y]) + is-inhabited-closed-interval-Total-Order = + is-inhabited-closed-interval-Poset (poset-Total-Order X) [x,y] +``` + +### Characterization of equality + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + abstract + eq-closed-interval-Total-Order : + ( [a,b] [c,d] : closed-interval-Total-Order X) → + ( lower-bound-closed-interval-Total-Order X [a,b] = + lower-bound-closed-interval-Total-Order X [c,d]) → + ( upper-bound-closed-interval-Total-Order X [a,b] = + upper-bound-closed-interval-Total-Order X [c,d]) → + [a,b] = [c,d] + eq-closed-interval-Total-Order = + eq-closed-interval-Poset (poset-Total-Order X) + + set-closed-interval-Total-Order : Set (l1 ⊔ l2) + set-closed-interval-Total-Order = + set-closed-interval-Poset (poset-Total-Order X) +``` + +### The map from closed intervals to subtypes is injective + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + abstract + is-injective-subtype-closed-interval-Total-Order : + is-injective (subtype-closed-interval-Total-Order X) + is-injective-subtype-closed-interval-Total-Order = + is-injective-subtype-closed-interval-Poset (poset-Total-Order X) +``` + +### The property of a map of taking a closed interval to a closed interval + +```agda +module _ + {l1 l2 l3 l4 : Level} (X : Total-Order l1 l2) (Y : Total-Order l3 l4) + (f : type-Total-Order X → type-Total-Order Y) + where + + is-closed-interval-map-prop-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + ([c,d] : closed-interval-Total-Order Y) → + Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-closed-interval-map-prop-Total-Order = + is-closed-interval-map-prop-Poset + ( poset-Total-Order X) + ( poset-Total-Order Y) + ( f) + + is-closed-interval-map-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + ([c,d] : closed-interval-Total-Order Y) → + UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-closed-interval-map-Total-Order [a,b] [c,d] = + type-Prop (is-closed-interval-map-prop-Total-Order [a,b] [c,d]) +``` + +### Total orders can be divided along an element + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + divide-below-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + (c : type-closed-interval-Total-Order X [a,b]) → + closed-interval-Total-Order X + divide-below-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = + ((a , c) , a≤c) + + divide-above-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + (c : type-closed-interval-Total-Order X [a,b]) → + closed-interval-Total-Order X + divide-above-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = + ((c , b) , c≤b) + + abstract + has-same-elements-divide-subtype-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + (c : type-closed-interval-Total-Order X [a,b]) → + has-same-elements-subtype + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( divide-below-closed-interval-Total-Order [a,b] c)) + ( subtype-closed-interval-Total-Order X + ( divide-above-closed-interval-Total-Order [a,b] c))) + ( subtype-closed-interval-Total-Order X [a,b]) + pr1 + ( has-same-elements-divide-subtype-closed-interval-Total-Order + [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) = + elim-disjunction + ( subtype-closed-interval-Total-Order X [a,b] x) + ( λ (a≤x , x≤c) → + ( a≤x , transitive-leq-Total-Order X x c b c≤b x≤c)) + ( λ (c≤x , x≤b) → + ( transitive-leq-Total-Order X a c x c≤x a≤c , x≤b)) + pr2 + ( has-same-elements-divide-subtype-closed-interval-Total-Order + [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) (a≤x , x≤b) = + map-disjunction + ( leq-prop-Total-Order X x c) + ( subtype-closed-interval-Total-Order X ((a , c) , a≤c) x) + ( leq-prop-Total-Order X c x) + ( subtype-closed-interval-Total-Order X ((c , b) , c≤b) x) + ( λ x≤c → (a≤x , x≤c)) + ( λ c≤x → (c≤x , x≤b)) + ( is-total-Total-Order X x c) + + eq-divide-subtype-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + (c : type-closed-interval-Total-Order X [a,b]) → + union-subtype + ( subtype-closed-interval-Total-Order X + ( divide-below-closed-interval-Total-Order [a,b] c)) + ( subtype-closed-interval-Total-Order X + ( divide-above-closed-interval-Total-Order [a,b] c)) = + subtype-closed-interval-Total-Order X [a,b] + eq-divide-subtype-closed-interval-Total-Order [a,b] c = + eq-has-same-elements-subtype _ _ + ( has-same-elements-divide-subtype-closed-interval-Total-Order [a,b] c) +``` + +### The minimal interval covering two elements + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) (a b : type-Total-Order X) + where + + closed-interval-2-Total-Order : closed-interval-Total-Order X + closed-interval-2-Total-Order = + ( ( min-Total-Order X a b , + max-Total-Order X a b) , + min-leq-max-Total-Order X a b) +``` + +### Covering the minimal interval containing four elements + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) (a b c d : type-Total-Order X) + where + + closed-interval-4-Total-Order : closed-interval-Total-Order X + closed-interval-4-Total-Order = + ( ( min-Total-Order X (min-Total-Order X a b) (min-Total-Order X c d) , + max-Total-Order X (max-Total-Order X a b) (max-Total-Order X c d)) , + transitive-leq-Total-Order X _ _ _ + ( max-leq-leq-Total-Order X _ _ _ _ + ( min-leq-max-Total-Order X _ _) + ( min-leq-max-Total-Order X _ _)) + ( min-leq-max-Total-Order X _ _)) + + cover-closed-interval-4-Total-Order : + subtype-closed-interval-Total-Order X + ( closed-interval-4-Total-Order) ⊆ + union-subtype + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a b)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a c))) + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X b c)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X b d))) + cover-closed-interval-4-Total-Order x x∈closed-4 = + let + motive = + union-subtype + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a b)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a c))) + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X b c)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X b d))) + ( x) + in + {! !} +``` diff --git a/src/order-theory/decidable-total-orders.lagda.md b/src/order-theory/decidable-total-orders.lagda.md index 5799377141..9edc02fc91 100644 --- a/src/order-theory/decidable-total-orders.lagda.md +++ b/src/order-theory/decidable-total-orders.lagda.md @@ -331,6 +331,24 @@ module _ ( y) ``` +### The minimum of two values is less than or equal to their maximum + +```agda +module _ + {l1 l2 : Level} + (T : Decidable-Total-Order l1 l2) + (x y : type-Decidable-Total-Order T) + where + + abstract + min-leq-max-Decidable-Total-Order : + leq-Decidable-Total-Order T + ( min-Decidable-Total-Order T x y) + ( max-Decidable-Total-Order T x y) + min-leq-max-Decidable-Total-Order = + min-leq-max-Total-Order (total-order-Decidable-Total-Order T) x y +``` + ### Decidable total orders are meet semilattices ```agda diff --git a/src/order-theory/total-orders.lagda.md b/src/order-theory/total-orders.lagda.md index 93030fa5f0..f9b1def813 100644 --- a/src/order-theory/total-orders.lagda.md +++ b/src/order-theory/total-orders.lagda.md @@ -11,6 +11,7 @@ open import foundation.action-on-identifications-functions open import foundation.binary-relations open import foundation.dependent-pair-types open import foundation.disjunction +open import foundation.functoriality-disjunction open import foundation.identity-types open import foundation.propositions open import foundation.sets @@ -88,8 +89,8 @@ module _ type-Total-Order : UU l1 type-Total-Order = type-Poset poset-Total-Order - leq-Total-Order-Prop : (x y : type-Total-Order) → Prop l2 - leq-Total-Order-Prop = leq-prop-Poset poset-Total-Order + leq-prop-Total-Order : (x y : type-Total-Order) → Prop l2 + leq-prop-Total-Order = leq-prop-Poset poset-Total-Order leq-Total-Order : (x y : type-Total-Order) → UU l2 leq-Total-Order = leq-Poset poset-Total-Order @@ -256,6 +257,27 @@ module _ ( max-is-least-binary-upper-bound-Total-Order T x y) ``` +### The minimum of two values is less than or equal to their maximum + +```agda +module _ + {l1 l2 : Level} + (T : Total-Order l1 l2) + (x y : type-Total-Order T) + where + + abstract + min-leq-max-Total-Order : + leq-Total-Order T (min-Total-Order T x y) (max-Total-Order T x y) + min-leq-max-Total-Order = + transitive-leq-Total-Order T + ( min-Total-Order T x y) + ( x) + ( max-Total-Order T x y) + ( leq-left-max-Total-Order T x y) + ( leq-left-min-Total-Order T x y) +``` + ### Total orders are meet semilattices ```agda @@ -522,6 +544,138 @@ module _ ( order-theoretic-join-semilattice-Total-Order T) ``` +### The minimum of two values is equal to one of them + +```agda +module _ + {l1 l2 : Level} (T : Total-Order l1 l2) + where + + abstract + eq-one-min-Total-Order : + (x y : type-Total-Order T) → + type-disjunction-Prop + ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) x) + ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) y) + eq-one-min-Total-Order x y = + map-disjunction + ( leq-prop-Total-Order T x y) + ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) x) + ( leq-prop-Total-Order T y x) + ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) y) + ( left-leq-right-min-Total-Order T x y) + ( right-leq-left-min-Total-Order T x y) + ( is-total-Total-Order T x y) + + eq-one-of-four-min-Total-Order : + (x y z w : type-Total-Order T) → + let + min=_ = + Id-Prop + ( set-Total-Order T) + ( min-Total-Order T (min-Total-Order T x y) (min-Total-Order T z w)) + in type-disjunction-Prop (min= x ∨ min= y) (min= z ∨ min= w) + eq-one-of-four-min-Total-Order x y z w = + let + min=_ = + Id-Prop + ( set-Total-Order T) + ( min-Total-Order T (min-Total-Order T x y) (min-Total-Order T z w)) + in + map-disjunction + ( min= min-Total-Order T x y) + ( min= x ∨ min= y) + ( min= min-Total-Order T z w) + ( min= z ∨ min= w) + ( λ min=minxy → + map-disjunction + ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) x) + ( min= x) + ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) y) + ( min= y) + ( min=minxy ∙_) + ( min=minxy ∙_) + ( eq-one-min-Total-Order x y)) + ( λ min=minzw → + map-disjunction + ( Id-Prop (set-Total-Order T) (min-Total-Order T z w) z) + ( min= z) + ( Id-Prop (set-Total-Order T) (min-Total-Order T z w) w) + ( min= w) + ( min=minzw ∙_) + ( min=minzw ∙_) + ( eq-one-min-Total-Order z w)) + ( eq-one-min-Total-Order + ( min-Total-Order T x y) + ( min-Total-Order T z w)) +``` + +### The maximum of two values is equal to one of them + +```agda +module _ + {l1 l2 : Level} (T : Total-Order l1 l2) + where + + abstract + eq-one-max-Total-Order : + (x y : type-Total-Order T) → + type-disjunction-Prop + ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) x) + ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) y) + eq-one-max-Total-Order x y = + map-disjunction + ( leq-prop-Total-Order T y x) + ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) x) + ( leq-prop-Total-Order T x y) + ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) y) + ( right-leq-left-max-Total-Order T x y) + ( left-leq-right-max-Total-Order T x y) + ( is-total-Total-Order T y x) + + eq-one-of-four-max-Total-Order : + (x y z w : type-Total-Order T) → + let + max=_ = + Id-Prop + ( set-Total-Order T) + ( max-Total-Order T (max-Total-Order T x y) (max-Total-Order T z w)) + in type-disjunction-Prop (max= x ∨ max= y) (max= z ∨ max= w) + eq-one-of-four-max-Total-Order x y z w = + let + max=_ = + Id-Prop + ( set-Total-Order T) + ( max-Total-Order T (max-Total-Order T x y) (max-Total-Order T z w)) + in + map-disjunction + ( max= max-Total-Order T x y) + ( max= x ∨ max= y) + ( max= max-Total-Order T z w) + ( max= z ∨ max= w) + ( λ max=maxxy → + map-disjunction + ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) x) + ( max= x) + ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) y) + ( max= y) + ( max=maxxy ∙_) + ( max=maxxy ∙_) + ( eq-one-max-Total-Order x y)) + ( λ max=maxzw → + map-disjunction + ( Id-Prop (set-Total-Order T) (max-Total-Order T z w) z) + ( max= z) + ( Id-Prop (set-Total-Order T) (max-Total-Order T z w) w) + ( max= w) + ( max=maxzw ∙_) + ( max=maxzw ∙_) + ( eq-one-max-Total-Order z w)) + ( eq-one-max-Total-Order + ( max-Total-Order T x y) + ( max-Total-Order T z w)) +``` + ## External links - [Total order](https://en.wikipedia.org/wiki/Total_order) at Wikipedia From 7c5f69493828f83e003ecd44f4a65d06c1e71fb4 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 5 Sep 2025 17:48:58 -0700 Subject: [PATCH 05/59] Progress --- .../closed-intervals-total-orders.lagda.md | 12 +-- src/order-theory/total-orders.lagda.md | 100 +++++------------- 2 files changed, 32 insertions(+), 80 deletions(-) diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index 1eab068cea..179c8490e4 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -216,10 +216,6 @@ module _ ( has-same-elements-divide-subtype-closed-interval-Total-Order [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) (a≤x , x≤b) = map-disjunction - ( leq-prop-Total-Order X x c) - ( subtype-closed-interval-Total-Order X ((a , c) , a≤c) x) - ( leq-prop-Total-Order X c x) - ( subtype-closed-interval-Total-Order X ((c , b) , c≤b) x) ( λ x≤c → (a≤x , x≤c)) ( λ c≤x → (c≤x , x≤b)) ( is-total-Total-Order X x c) @@ -280,9 +276,9 @@ module _ ( closed-interval-2-Total-Order X a c))) ( union-subtype ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X b c)) + ( closed-interval-2-Total-Order X b d)) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X b d))) + ( closed-interval-2-Total-Order X c d))) cover-closed-interval-4-Total-Order x x∈closed-4 = let motive = @@ -294,9 +290,9 @@ module _ ( closed-interval-2-Total-Order X a c))) ( union-subtype ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X b c)) + ( closed-interval-2-Total-Order X b d)) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X b d))) + ( closed-interval-2-Total-Order X c d))) ( x) in {! !} diff --git a/src/order-theory/total-orders.lagda.md b/src/order-theory/total-orders.lagda.md index 473bb48754..38ee8619ed 100644 --- a/src/order-theory/total-orders.lagda.md +++ b/src/order-theory/total-orders.lagda.md @@ -556,10 +556,6 @@ module _ ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) y) eq-one-min-Total-Order x y = map-disjunction - ( leq-prop-Total-Order T x y) - ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) x) - ( leq-prop-Total-Order T y x) - ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) y) ( left-leq-right-min-Total-Order T x y) ( right-leq-left-min-Total-Order T x y) ( is-total-Total-Order T x y) @@ -573,38 +569,20 @@ module _ ( min-Total-Order T (min-Total-Order T x y) (min-Total-Order T z w)) in type-disjunction-Prop (min= x ∨ min= y) (min= z ∨ min= w) eq-one-of-four-min-Total-Order x y z w = - let - min=_ = - Id-Prop - ( set-Total-Order T) - ( min-Total-Order T (min-Total-Order T x y) (min-Total-Order T z w)) - in - map-disjunction - ( min= min-Total-Order T x y) - ( min= x ∨ min= y) - ( min= min-Total-Order T z w) - ( min= z ∨ min= w) - ( λ min=minxy → - map-disjunction - ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) x) - ( min= x) - ( Id-Prop (set-Total-Order T) (min-Total-Order T x y) y) - ( min= y) - ( min=minxy ∙_) - ( min=minxy ∙_) - ( eq-one-min-Total-Order x y)) - ( λ min=minzw → - map-disjunction - ( Id-Prop (set-Total-Order T) (min-Total-Order T z w) z) - ( min= z) - ( Id-Prop (set-Total-Order T) (min-Total-Order T z w) w) - ( min= w) - ( min=minzw ∙_) - ( min=minzw ∙_) - ( eq-one-min-Total-Order z w)) - ( eq-one-min-Total-Order - ( min-Total-Order T x y) - ( min-Total-Order T z w)) + map-disjunction + ( λ min=minxy → + map-disjunction + ( min=minxy ∙_) + ( min=minxy ∙_) + ( eq-one-min-Total-Order x y)) + ( λ min=minzw → + map-disjunction + ( min=minzw ∙_) + ( min=minzw ∙_) + ( eq-one-min-Total-Order z w)) + ( eq-one-min-Total-Order + ( min-Total-Order T x y) + ( min-Total-Order T z w)) ``` ### The maximum of two values is equal to one of them @@ -622,10 +600,6 @@ module _ ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) y) eq-one-max-Total-Order x y = map-disjunction - ( leq-prop-Total-Order T y x) - ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) x) - ( leq-prop-Total-Order T x y) - ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) y) ( right-leq-left-max-Total-Order T x y) ( left-leq-right-max-Total-Order T x y) ( is-total-Total-Order T y x) @@ -639,38 +613,20 @@ module _ ( max-Total-Order T (max-Total-Order T x y) (max-Total-Order T z w)) in type-disjunction-Prop (max= x ∨ max= y) (max= z ∨ max= w) eq-one-of-four-max-Total-Order x y z w = - let - max=_ = - Id-Prop - ( set-Total-Order T) - ( max-Total-Order T (max-Total-Order T x y) (max-Total-Order T z w)) - in - map-disjunction - ( max= max-Total-Order T x y) - ( max= x ∨ max= y) - ( max= max-Total-Order T z w) - ( max= z ∨ max= w) - ( λ max=maxxy → - map-disjunction - ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) x) - ( max= x) - ( Id-Prop (set-Total-Order T) (max-Total-Order T x y) y) - ( max= y) - ( max=maxxy ∙_) - ( max=maxxy ∙_) - ( eq-one-max-Total-Order x y)) - ( λ max=maxzw → - map-disjunction - ( Id-Prop (set-Total-Order T) (max-Total-Order T z w) z) - ( max= z) - ( Id-Prop (set-Total-Order T) (max-Total-Order T z w) w) - ( max= w) - ( max=maxzw ∙_) - ( max=maxzw ∙_) - ( eq-one-max-Total-Order z w)) - ( eq-one-max-Total-Order - ( max-Total-Order T x y) - ( max-Total-Order T z w)) + map-disjunction + ( λ max=maxxy → + map-disjunction + ( max=maxxy ∙_) + ( max=maxxy ∙_) + ( eq-one-max-Total-Order x y)) + ( λ max=maxzw → + map-disjunction + ( max=maxzw ∙_) + ( max=maxzw ∙_) + ( eq-one-max-Total-Order z w)) + ( eq-one-max-Total-Order + ( max-Total-Order T x y) + ( max-Total-Order T z w)) ``` ## External links From 8ea30ea1b0c2aa8f04dc7fdded5d339f8066a98b Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 9 Sep 2025 13:15:27 -0700 Subject: [PATCH 06/59] Progress --- src/elementary-number-theory.lagda.md | 1 - ...dition-intervals-rational-numbers.lagda.md | 1 + ...closed-intervals-rational-numbers.lagda.md | 225 ------------- .../intervals-rational-numbers.lagda.md | 6 + ...cation-intervals-rational-numbers.lagda.md | 253 +++++++++++++-- src/foundation/images-subtypes.lagda.md | 2 +- .../closed-intervals-total-orders.lagda.md | 297 ++++++++++++++++-- src/order-theory/total-orders.lagda.md | 61 +++- 8 files changed, 563 insertions(+), 283 deletions(-) delete mode 100644 src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 0a50d1ccaf..c5d924d4e3 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -38,7 +38,6 @@ open import elementary-number-theory.binomial-theorem-integers public open import elementary-number-theory.binomial-theorem-natural-numbers public open import elementary-number-theory.bounded-sums-arithmetic-functions public open import elementary-number-theory.catalan-numbers public -open import elementary-number-theory.closed-intervals-rational-numbers public open import elementary-number-theory.cofibonacci public open import elementary-number-theory.collatz-bijection public open import elementary-number-theory.collatz-conjecture public diff --git a/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md index c8f24fba5c..b8ed57cd75 100644 --- a/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md @@ -16,6 +16,7 @@ open import elementary-number-theory.rational-numbers open import foundation.coproduct-types open import foundation.dependent-pair-types +open import foundation.existential-quantification open import foundation.identity-types open import foundation.propositional-truncations open import foundation.subtypes diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md deleted file mode 100644 index 61449c7485..0000000000 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ /dev/null @@ -1,225 +0,0 @@ -# Closed intervals of rational numbers - -```agda -{-# OPTIONS --lossy-unification #-} - -module elementary-number-theory.closed-intervals-rational-numbers where -``` - -
Imports - -```agda -open import elementary-number-theory.decidable-total-order-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-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-binary-functions -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.identity-types -open import foundation.propositions -open import foundation.subtypes -open import foundation.transport-along-identifications -open import foundation.universe-levels -``` - -
- -## Idea - -A [rational number](elementary-number-theory.rational-numbers.md) `p` is in a -{{#concept "closed interval" Disambiguation="rational numbers" WDID=Q78240777 WD="closed interval" Agda=closed-interval-ℚ}} -`[q , r]` if `q` is -[less than or equal to](elementary-number-theory.inequality-rational-numbers.md) -`p` and `p` is less than or equal to `r`. - -## Definition - -```agda -module _ - (p q : ℚ) - where - - closed-interval-ℚ : subtype lzero ℚ - closed-interval-ℚ r = (leq-ℚ-Prop p r) ∧ (leq-ℚ-Prop r q) - - is-in-closed-interval-ℚ : ℚ → UU lzero - is-in-closed-interval-ℚ r = type-Prop (closed-interval-ℚ r) - -unordered-closed-interval-ℚ : ℚ → ℚ → subtype lzero ℚ -unordered-closed-interval-ℚ p q = closed-interval-ℚ (min-ℚ p q) (max-ℚ p q) - -is-in-unordered-closed-interval-ℚ : ℚ → ℚ → ℚ → UU lzero -is-in-unordered-closed-interval-ℚ p q = - is-in-closed-interval-ℚ (min-ℚ p q) (max-ℚ p q) - -is-in-unordered-closed-interval-is-in-closed-interval-ℚ : - (p q r : ℚ) → - is-in-closed-interval-ℚ p q r → - is-in-unordered-closed-interval-ℚ p q r -is-in-unordered-closed-interval-is-in-closed-interval-ℚ p q r (p≤r , q≤r) = - transitive-leq-ℚ - ( min-ℚ p q) - ( p) - ( r) - ( p≤r) - ( leq-left-min-ℚ p q) , - transitive-leq-ℚ - ( r) - ( q) - ( max-ℚ p q) - ( leq-right-max-ℚ p q) - ( q≤r) - -is-in-reversed-unordered-closed-interval-is-in-closed-interval-ℚ : - (p q r : ℚ) → is-in-closed-interval-ℚ p q r → - is-in-unordered-closed-interval-ℚ q p r -is-in-reversed-unordered-closed-interval-is-in-closed-interval-ℚ - p q r (p≤r , q≤r) = - transitive-leq-ℚ - ( min-ℚ q p) - ( p) - ( r) - ( p≤r) - ( leq-right-min-ℚ q p) , - transitive-leq-ℚ - ( r) - ( q) - ( max-ℚ q p) - ( leq-left-max-ℚ q p) - ( q≤r) -``` - -## Properties - -### Multiplication of elements in a closed interval - -```agda -abstract - left-mul-negative-closed-interval-ℚ : - (p q r s : ℚ) → - is-in-closed-interval-ℚ p q r → is-negative-ℚ s → - is-in-closed-interval-ℚ (q *ℚ s) (p *ℚ s) (r *ℚ s) - left-mul-negative-closed-interval-ℚ p q r s (p≤r , r≤q) neg-s = - let - s⁻ = s , neg-s - in - reverses-leq-right-mul-ℚ⁻ s⁻ r q r≤q , - reverses-leq-right-mul-ℚ⁻ s⁻ p r p≤r - - left-mul-positive-closed-interval-ℚ : - (p q r s : ℚ) → - is-in-closed-interval-ℚ p q r → is-positive-ℚ s → - is-in-closed-interval-ℚ (p *ℚ s) (q *ℚ s) (r *ℚ s) - left-mul-positive-closed-interval-ℚ p q r s (p≤r , r≤q) pos-s = - let - s⁺ = s , pos-s - in - preserves-leq-right-mul-ℚ⁺ s⁺ p r p≤r , - preserves-leq-right-mul-ℚ⁺ s⁺ r q r≤q - - left-mul-closed-interval-ℚ : - (p q r s : ℚ) → - is-in-closed-interval-ℚ p q r → - is-in-unordered-closed-interval-ℚ (p *ℚ s) (q *ℚ s) (r *ℚ s) - left-mul-closed-interval-ℚ p q r s H@(p≤r , r≤q) = - let - p≤q = transitive-leq-ℚ p r q r≤q p≤r - in - trichotomy-sign-ℚ - ( s) - ( λ neg-s → - is-in-reversed-unordered-closed-interval-is-in-closed-interval-ℚ - (q *ℚ s) - (p *ℚ s) - (r *ℚ s) - ( left-mul-negative-closed-interval-ℚ p q r s H neg-s)) - ( λ s=0 → - let - ps=0 = ap (p *ℚ_) s=0 ∙ right-zero-law-mul-ℚ p - rs=0 = ap (r *ℚ_) s=0 ∙ right-zero-law-mul-ℚ r - qs=0 = ap (q *ℚ_) s=0 ∙ right-zero-law-mul-ℚ q - in - leq-eq-ℚ - ( _) - ( _) - ( ap-binary min-ℚ ps=0 qs=0 ∙ - idempotent-min-ℚ zero-ℚ ∙ inv rs=0) , - leq-eq-ℚ - ( _) - ( _) - ( rs=0 ∙ - inv (ap-binary max-ℚ ps=0 qs=0 ∙ idempotent-max-ℚ zero-ℚ))) - ( λ pos-s → - is-in-unordered-closed-interval-is-in-closed-interval-ℚ - ( p *ℚ s) - ( q *ℚ s) - ( r *ℚ s) - ( left-mul-positive-closed-interval-ℚ p q r s H pos-s)) - -abstract - right-mul-closed-interval-ℚ : - (p q r s : ℚ) → - is-in-closed-interval-ℚ p q r → - is-in-unordered-closed-interval-ℚ (s *ℚ p) (s *ℚ q) (s *ℚ r) - right-mul-closed-interval-ℚ p q r s r∈[p,q] = - tr - ( is-in-unordered-closed-interval-ℚ (s *ℚ p) (s *ℚ q)) - ( commutative-mul-ℚ r s) - ( binary-tr - ( λ a b → is-in-unordered-closed-interval-ℚ a b (r *ℚ s)) - ( commutative-mul-ℚ p s) - ( commutative-mul-ℚ q s) - ( left-mul-closed-interval-ℚ p q r s r∈[p,q])) - -abstract - mul-closed-interval-closed-interval-ℚ : - (p q r s t u : ℚ) → - is-in-closed-interval-ℚ p q r → - is-in-closed-interval-ℚ s t u → - is-in-closed-interval-ℚ - (min-ℚ (min-ℚ (p *ℚ s) (p *ℚ t)) (min-ℚ (q *ℚ s) (q *ℚ t))) - (max-ℚ (max-ℚ (p *ℚ s) (p *ℚ t)) (max-ℚ (q *ℚ s) (q *ℚ t))) - (r *ℚ u) - mul-closed-interval-closed-interval-ℚ p q r s t u r∈[p,q] u∈[s,t] = - let - (min-pu-qu≤ru , ru≤max-pu-qu) = left-mul-closed-interval-ℚ p q r u r∈[p,q] - (min-ps-pt≤pu , pu≤max-ps-pt) = - right-mul-closed-interval-ℚ s t u p u∈[s,t] - (min-qs-qt≤qu , qu≤max-qs-qt) = - right-mul-closed-interval-ℚ s t u q u∈[s,t] - in - transitive-leq-ℚ - ( min-ℚ (min-ℚ (p *ℚ s) (p *ℚ t)) (min-ℚ (q *ℚ s) (q *ℚ t))) - ( min-ℚ (p *ℚ u) (q *ℚ u)) - ( r *ℚ u) - ( min-pu-qu≤ru) - ( min-leq-leq-ℚ - ( min-ℚ (p *ℚ s) (p *ℚ t)) - ( p *ℚ u) - ( min-ℚ (q *ℚ s) (q *ℚ t)) - ( q *ℚ u) - ( min-ps-pt≤pu) - ( min-qs-qt≤qu)) , - transitive-leq-ℚ - ( r *ℚ u) - ( max-ℚ (p *ℚ u) (q *ℚ u)) - ( max-ℚ (max-ℚ (p *ℚ s) (p *ℚ t)) (max-ℚ (q *ℚ s) (q *ℚ t))) - ( max-leq-leq-ℚ - ( p *ℚ u) - ( max-ℚ (p *ℚ s) (p *ℚ t)) - ( q *ℚ u) - ( max-ℚ (q *ℚ s) (q *ℚ t)) - ( pu≤max-ps-pt) - ( qu≤max-qs-qt)) - ( ru≤max-pu-qu) -``` diff --git a/src/elementary-number-theory/intervals-rational-numbers.lagda.md b/src/elementary-number-theory/intervals-rational-numbers.lagda.md index 31e63cb6b4..ee4c17e8e6 100644 --- a/src/elementary-number-theory/intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/intervals-rational-numbers.lagda.md @@ -17,6 +17,7 @@ open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.dependent-pair-types open import foundation.identity-types +open import foundation.injective-maps open import foundation.propositions open import foundation.sets open import foundation.subtypes @@ -69,6 +70,11 @@ nonnegative-width-interval-ℚ ((a , b) , a≤b) = nonnegative-diff-leq-ℚ a b width-interval-ℚ : interval-ℚ → ℚ width-interval-ℚ [a,b] = rational-ℚ⁰⁺ (nonnegative-width-interval-ℚ [a,b]) + +is-injective-subtype-interval-ℚ : + is-injective subtype-interval-ℚ +is-injective-subtype-interval-ℚ = + is-injective-subtype-closed-interval-Poset ℚ-Poset ``` ### Important ranges diff --git a/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md index c9482a05d0..111d0b5867 100644 --- a/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md @@ -7,6 +7,7 @@ module elementary-number-theory.multiplication-intervals-rational-numbers where
Imports ```agda +open import elementary-number-theory.addition-intervals-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.decidable-total-order-rational-numbers @@ -47,6 +48,7 @@ open import group-theory.semigroups open import order-theory.closed-intervals-total-orders open import order-theory.decidable-total-orders +open import order-theory.total-orders ```
@@ -458,33 +460,228 @@ abstract ( subtype-interval-ℚ [c,d])) ( q) image-mul-elements-intervals-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q - (min-ac-ad-bc-bd≤q , q≤max-ac-ad-bc-bd) = + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) x x∈range = + let + motive = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d]) + ( x) + open do-syntax-trunc-Prop motive + case-[ac,ad] x∈[ac,ad] = + do + ((q , c≤q , q≤d) , aq=x) ← + image-right-mul-element-interval-ℚ [c,d] a x x∈[ac,ad] + intro-exists + ( a , q) + ( (refl-leq-ℚ a , a≤b) , (c≤q , q≤d) , inv aq=x) + case-[ac,bc] x∈[ac,bc] = + do + ((p , a≤p , p≤b) , pc=x) ← + image-left-mul-element-interval-ℚ [a,b] c x x∈[ac,bc] + intro-exists + ( p , c) + ( (a≤p , p≤b) , (refl-leq-ℚ c , c≤d) , inv pc=x) + case-[bc,bd] x∈[bc,bd] = + do + ((q , c≤q , q≤d) , bq=x) ← + image-right-mul-element-interval-ℚ [c,d] b x x∈[bc,bd] + intro-exists + ( b , q) + ( (a≤b , refl-leq-ℚ b) , (c≤q , q≤d) , inv bq=x) + case-[ad,bd] x∈[ad,bd] = + do + ((p , a≤p , p≤b) , pd=x) ← + image-left-mul-element-interval-ℚ [a,b] d x x∈[ad,bd] + intro-exists + ( p , d) + ( (a≤p , p≤b) , (c≤d , refl-leq-ℚ d) , inv pd=x) + in + elim-disjunction motive + ( elim-disjunction motive case-[ac,ad] case-[ac,bc]) + ( elim-disjunction motive case-[ad,bd] case-[bc,bd]) + ( cover-closed-interval-4-Total-Order ℚ-Total-Order + ( a *ℚ c) + ( a *ℚ d) + ( b *ℚ c) + ( b *ℚ d) + ( x) + ( x∈range)) +``` + +### Agreement with the Minkowski product + +```agda +abstract + has-same-elements-minkowski-mul-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + has-same-elements-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d])) + ( subtype-interval-ℚ (mul-interval-ℚ [a,b] [c,d])) + pr1 (has-same-elements-minkowski-mul-interval-ℚ [a,b] [c,d] x) = + rec-trunc-Prop + ( subtype-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) x) + ( λ ((p , q) , p∈[a,b] , q∈[c,d] , x=pq) → + inv-tr + ( is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d])) + ( x=pq) + ( mul-elements-intervals-ℚ [a,b] [c,d] p q p∈[a,b] q∈[c,d])) + pr2 (has-same-elements-minkowski-mul-interval-ℚ [a,b] [c,d] x) = + image-mul-elements-intervals-ℚ [a,b] [c,d] x + + eq-minkowski-mul-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d]) = + subtype-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) + eq-minkowski-mul-interval-ℚ [a,b] [c,d] = + eq-has-same-elements-subtype _ _ + ( has-same-elements-minkowski-mul-interval-ℚ [a,b] [c,d]) +``` + +### Associativity of multiplication of intervals + +```agda +module _ + ([a,b] [c,d] [e,f] : interval-ℚ) + where + + abstract + has-same-elements-associative-mul-interval-ℚ : + has-same-elements-subtype + ( subtype-interval-ℚ + ( mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f])) + ( subtype-interval-ℚ + ( mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f]))) + pr1 (has-same-elements-associative-mul-interval-ℚ x) x∈<[a,b][c,d]>[e,f] = let - motive = - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d]) - ( q) - from-[a,b] : - (x : ℚ) → is-in-interval-ℚ [a,b] x → - is-in-im-subtype (mul-ℚ x) (subtype-interval-ℚ [c,d]) q → - type-Prop motive - from-[a,b] x x∈[a,b] q∈p[c,d] = - let open do-syntax-trunc-Prop motive - in do - ((y , y∈[c,d]) , xy=q) ← q∈p[c,d] - intro-exists (x , y) (x∈[a,b] , y∈[c,d] , inv xy=q) - from-[c,d] : - (y : ℚ) → is-in-interval-ℚ [c,d] y → - is-in-im-subtype (mul-ℚ' y) (subtype-interval-ℚ [a,b]) q → - type-Prop motive - from-[c,d] y y∈[c,d] q∈[a,b]y = - let open do-syntax-trunc-Prop motive - in do - ((x , x∈[a,b]) , xy=q) ← q∈[a,b]y - intro-exists (x , y) (x∈[a,b] , y∈[c,d] , inv xy=q) - in - {! !} + open + do-syntax-trunc-Prop + ( subtype-interval-ℚ + ( mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f])) + ( x)) + in do + ((p , q) , p∈[a,b][c,d] , q∈[e,f] , x=pq) ← + image-mul-elements-intervals-ℚ + ( mul-interval-ℚ [a,b] [c,d]) + ( [e,f]) + ( x) + ( x∈<[a,b][c,d]>[e,f]) + ((r , s) , r∈[a,b] , s∈[c,d] , p=rs) ← + image-mul-elements-intervals-ℚ [a,b] [c,d] p p∈[a,b][c,d] + inv-tr + ( is-in-interval-ℚ + ( mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f]))) + ( x=pq ∙ ap-mul-ℚ p=rs refl ∙ associative-mul-ℚ _ _ _) + ( mul-elements-intervals-ℚ + ( [a,b]) + ( mul-interval-ℚ [c,d] [e,f]) + ( r) + ( s *ℚ q) + ( r∈[a,b]) + ( mul-elements-intervals-ℚ [c,d] [e,f] s q s∈[c,d] q∈[e,f])) + pr2 (has-same-elements-associative-mul-interval-ℚ x) x∈[a,b]<[c,d][e,f]> = + let + open + do-syntax-trunc-Prop + ( subtype-interval-ℚ + ( mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f]) + ( x)) + in do + ((p , q) , p∈[a,b] , q∈[c,d][e,f] , x=pq) ← + image-mul-elements-intervals-ℚ + ( [a,b]) + ( mul-interval-ℚ [c,d] [e,f]) + ( x) + ( x∈[a,b]<[c,d][e,f]>) + ((r , s) , r∈[c,d] , s∈[e,f] , q=rs) ← + image-mul-elements-intervals-ℚ [c,d] [e,f] q q∈[c,d][e,f] + inv-tr + ( is-in-interval-ℚ + ( mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f])) + ( x=pq ∙ ap-mul-ℚ refl q=rs ∙ inv (associative-mul-ℚ _ _ _)) + ( mul-elements-intervals-ℚ + ( mul-interval-ℚ [a,b] [c,d]) + ( [e,f]) + ( p *ℚ r) + ( s) + ( mul-elements-intervals-ℚ [a,b] [c,d] p r p∈[a,b] r∈[c,d]) + ( s∈[e,f])) + + associative-mul-interval-ℚ : + mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f] = + mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f]) + associative-mul-interval-ℚ = + is-injective-subtype-interval-ℚ + ( eq-has-same-elements-subtype _ _ + ( has-same-elements-associative-mul-interval-ℚ)) +``` + +### Commutativity of multiplication of intervals + +```agda +abstract + commutative-mul-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + mul-interval-ℚ [a,b] [c,d] = mul-interval-ℚ [c,d] [a,b] + commutative-mul-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = + eq-interval-ℚ _ _ + ( interchange-law-min-Total-Order ℚ-Total-Order _ _ _ _ ∙ + ap-min-ℚ + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) + ( interchange-law-max-Total-Order ℚ-Total-Order _ _ _ _ ∙ + ap-max-ℚ + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) +``` + +### Unit laws of multiplication of intervals + +```agda +abstract + left-unit-law-mul-interval-ℚ : + ([a,b] : interval-ℚ) → mul-interval-ℚ one-one-interval-ℚ [a,b] = [a,b] + left-unit-law-mul-interval-ℚ ((a , b) , a≤b) = + eq-interval-ℚ _ _ + ( idempotent-min-ℚ _ ∙ + ap-min-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ + left-leq-right-min-ℚ _ _ a≤b) + ( idempotent-max-ℚ _ ∙ + ap-max-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ + left-leq-right-max-ℚ _ _ a≤b) + + right-unit-law-mul-interval-ℚ : + ([a,b] : interval-ℚ) → mul-interval-ℚ [a,b] one-one-interval-ℚ = [a,b] + right-unit-law-mul-interval-ℚ [a,b] = + commutative-mul-interval-ℚ [a,b] one-one-interval-ℚ ∙ + left-unit-law-mul-interval-ℚ [a,b] +``` + +### The commutative monoid of multiplication of rational intervals + +```agda +semigroup-mul-interval-ℚ : Semigroup lzero +semigroup-mul-interval-ℚ = + ( set-interval-ℚ , + mul-interval-ℚ , + associative-mul-interval-ℚ) + +monoid-mul-interval-ℚ : Monoid lzero +monoid-mul-interval-ℚ = + ( semigroup-mul-interval-ℚ , + one-one-interval-ℚ , + left-unit-law-mul-interval-ℚ , + right-unit-law-mul-interval-ℚ) + +commutative-monoid-mul-interval-ℚ : Commutative-Monoid lzero +commutative-monoid-mul-interval-ℚ = + ( monoid-mul-interval-ℚ , + commutative-mul-interval-ℚ) ``` diff --git a/src/foundation/images-subtypes.lagda.md b/src/foundation/images-subtypes.lagda.md index ff477ebe27..c45ee677dc 100644 --- a/src/foundation/images-subtypes.lagda.md +++ b/src/foundation/images-subtypes.lagda.md @@ -7,8 +7,8 @@ module foundation.images-subtypes where
Imports ```agda -open import foundation.conjunction open import foundation.action-on-identifications-functions +open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.full-subtypes diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index 179c8490e4..5b915bdde1 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -7,8 +7,12 @@ module order-theory.closed-intervals-total-orders where
Imports ```agda +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.disjunction +open import foundation.function-types open import foundation.functoriality-disjunction open import foundation.identity-types open import foundation.inhabited-subtypes @@ -16,6 +20,7 @@ open import foundation.injective-maps open import foundation.propositions open import foundation.sets open import foundation.subtypes +open import foundation.transport-along-identifications open import foundation.unions-subtypes open import foundation.universe-levels @@ -265,35 +270,273 @@ module _ ( min-leq-max-Total-Order X _ _)) ( min-leq-max-Total-Order X _ _)) - cover-closed-interval-4-Total-Order : - subtype-closed-interval-Total-Order X - ( closed-interval-4-Total-Order) ⊆ - union-subtype - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a b)) - ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a c))) - ( union-subtype + abstract + cover-closed-interval-4-first-smallest-Total-Order : + leq-Total-Order X a b → leq-Total-Order X a c → leq-Total-Order X a d → + subtype-closed-interval-Total-Order X + ( closed-interval-4-Total-Order) ⊆ + union-subtype + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a b)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a c))) ( subtype-closed-interval-Total-Order X ( closed-interval-2-Total-Order X b d)) - ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X c d))) - cover-closed-interval-4-Total-Order x x∈closed-4 = - let - motive = - union-subtype - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a b)) - ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a c))) - ( union-subtype + cover-closed-interval-4-first-smallest-Total-Order + a≤b a≤c a≤d x (min≤x , x≤max) = + let + motive = + union-subtype + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a b)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a c))) ( subtype-closed-interval-Total-Order X ( closed-interval-2-Total-Order X b d)) - ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X c d))) - ( x) - in - {! !} + ( x) + minab≤x = + tr + ( λ y → leq-Total-Order X y x) + ( left-leq-right-min-Total-Order X _ _ + ( inv-tr + ( λ z → leq-Total-Order X z (min-Total-Order X c d)) + ( left-leq-right-min-Total-Order X a b a≤b) + ( leq-min-leq-both-Total-Order X a c d a≤c a≤d))) + ( min≤x) + minac≤x = + tr + ( λ y → leq-Total-Order X y x) + ( left-leq-right-min-Total-Order X a b a≤b ∙ + inv (left-leq-right-min-Total-Order X a c a≤c)) + ( minab≤x) + in + elim-disjunction + ( motive) + ( elim-disjunction + ( motive) + ( λ max=a → + inl-disjunction + ( inl-disjunction + ( minab≤x , + transitive-leq-Total-Order X x a (max-Total-Order X a b) + ( leq-left-max-Total-Order X _ _) + ( tr (leq-Total-Order X x) max=a x≤max)))) + ( λ max=b → + inl-disjunction + ( inl-disjunction + ( minab≤x , + tr + ( leq-Total-Order X x) + ( max=b ∙ inv (left-leq-right-max-Total-Order X a b a≤b)) + ( x≤max))))) + ( elim-disjunction + ( motive) + ( λ max=c → + inl-disjunction + ( inr-disjunction + ( minac≤x , + tr + ( leq-Total-Order X x) + ( max=c ∙ inv (left-leq-right-max-Total-Order X a c a≤c)) + ( x≤max)))) + ( λ max=d → + elim-disjunction motive + ( λ b≤x → + inr-disjunction + ( transitive-leq-Total-Order X (min-Total-Order X b d) b x + ( b≤x) + ( leq-left-min-Total-Order X b d) , + transitive-leq-Total-Order X x d (max-Total-Order X b d) + ( leq-right-max-Total-Order X b d) + ( tr (leq-Total-Order X x) max=d x≤max))) + ( λ x≤b → + inl-disjunction + ( inl-disjunction + ( minab≤x , + inv-tr + ( leq-Total-Order X x) + ( left-leq-right-max-Total-Order X a b a≤b) + ( x≤b)))) + ( is-total-Total-Order X b x))) + ( eq-one-of-four-max-Total-Order X a b c d) + +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) (a b c d : type-Total-Order X) + where + + abstract + cover-closed-interval-4-Total-Order : + subtype-closed-interval-Total-Order X + ( closed-interval-4-Total-Order X a b c d) ⊆ + union-subtype + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a b)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a c))) + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X b d)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X c d))) + cover-closed-interval-4-Total-Order x x∈closed-4@(min≤x , x≤max) = + let + _≤_ = leq-Total-Order X + commutative-min = commutative-min-Total-Order X + commutative-max = commutative-max-Total-Order X + min = min-Total-Order X + max = max-Total-Order X + motive = + union-subtype + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a b)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X a c))) + ( union-subtype + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X b d)) + ( subtype-closed-interval-Total-Order X + ( closed-interval-2-Total-Order X c d))) + ( x) + min≤a = + transitive-leq-Total-Order X + ( min (min a b) (min c d)) + ( min a b) + ( a) + ( leq-left-min-Total-Order X _ _) + ( leq-left-min-Total-Order X _ _) + min≤b = + transitive-leq-Total-Order X + ( min (min a b) (min c d)) + ( min a b) + ( b) + ( leq-right-min-Total-Order X _ _) + ( leq-left-min-Total-Order X _ _) + min≤c = + transitive-leq-Total-Order X + ( min (min a b) (min c d)) + ( min c d) + ( c) + ( leq-left-min-Total-Order X _ _) + ( leq-right-min-Total-Order X _ _) + min≤d = + transitive-leq-Total-Order X + ( min (min a b) (min c d)) + ( min c d) + ( d) + ( leq-right-min-Total-Order X _ _) + ( leq-right-min-Total-Order X _ _) + in + elim-disjunction motive + ( elim-disjunction motive + ( λ min=a → + map-disjunction + ( id) + ( inl-disjunction) + ( cover-closed-interval-4-first-smallest-Total-Order X a b c d + ( tr (_≤ b) min=a min≤b) + ( tr (_≤ c) min=a min≤c) + ( tr (_≤ d) min=a min≤d) + ( x) + ( x∈closed-4))) + ( λ min=b → + elim-disjunction motive + ( elim-disjunction motive + ( λ (minba≤x , x≤maxba) → + inl-disjunction + ( inl-disjunction + ( tr (_≤ x) (commutative-min b a) minba≤x , + tr (x ≤_) (commutative-max b a) x≤maxba))) + ( inr-disjunction ∘ inl-disjunction)) + ( inl-disjunction ∘ inr-disjunction) + ( cover-closed-interval-4-first-smallest-Total-Order X b a d c + ( tr (_≤ a) min=b min≤a) + ( tr (_≤ d) min=b min≤d) + ( tr (_≤ c) min=b min≤c) + ( x) + ( transitive-leq-Total-Order X _ b x + ( tr (_≤ x) min=b min≤x) + ( transitive-leq-Total-Order X + ( min (min b a) (min d c)) (min b a) b + ( leq-left-min-Total-Order X _ _) + ( leq-left-min-Total-Order X _ _)) , + tr + ( x ≤_) + ( ap-binary max + ( commutative-max _ _) + ( commutative-max _ _)) + ( x≤max))))) + ( elim-disjunction motive + ( λ min=c → + elim-disjunction motive + ( elim-disjunction motive + ( λ (minca≤x , x≤maxca) → + inl-disjunction + ( inr-disjunction + ( tr (_≤ x) (commutative-min c a) minca≤x , + tr (x ≤_) (commutative-max c a) x≤maxca))) + ( inr-disjunction ∘ inr-disjunction)) + ( inl-disjunction ∘ inl-disjunction) + ( cover-closed-interval-4-first-smallest-Total-Order X c a d b + ( tr (_≤ a) min=c min≤a) + ( tr (_≤ d) min=c min≤d) + ( tr (_≤ b) min=c min≤b) + ( x) + ( tr + ( _≤ x) + ( interchange-law-min-Total-Order X a b c d ∙ + ap-binary min + ( commutative-min _ _) + ( commutative-min _ _)) + ( min≤x) , + tr + ( x ≤_) + ( interchange-law-max-Total-Order X a b c d ∙ + ap-binary max + ( commutative-max _ _) + ( commutative-max _ _)) + ( x≤max)))) + ( λ min=d → + elim-disjunction motive + ( elim-disjunction motive + ( λ (mindb≤x , x≤maxdb) → + inr-disjunction + ( inl-disjunction + ( tr (_≤ x) (commutative-min _ _) mindb≤x , + tr (x ≤_) (commutative-max _ _) x≤maxdb))) + ( λ (mindc≤x , x≤maxdc) → + inr-disjunction + ( inr-disjunction + ( tr (_≤ x) (commutative-min _ _) mindc≤x , + tr (x ≤_) (commutative-max _ _) x≤maxdc)))) + ( λ (minba≤x , x≤maxba) → + inl-disjunction + ( inl-disjunction + ( tr (_≤ x) (commutative-min _ _) minba≤x , + tr (x ≤_) (commutative-max _ _) x≤maxba))) + ( cover-closed-interval-4-first-smallest-Total-Order X d b c a + ( tr (_≤ b) min=d min≤b) + ( tr (_≤ c) min=d min≤c) + ( tr (_≤ a) min=d min≤a) + ( x) + ( tr + ( _≤ x) + ( interchange-law-min-Total-Order X a b c d ∙ + ap-binary min + ( commutative-min _ _) + ( commutative-min _ _) ∙ + commutative-min _ _) + ( min≤x) , + tr + ( x ≤_) + ( interchange-law-max-Total-Order X a b c d ∙ + ap-binary max + ( commutative-max _ _) + ( commutative-max _ _) ∙ + commutative-max _ _) + ( x≤max))))) + ( eq-one-of-four-min-Total-Order X a b c d) ``` diff --git a/src/order-theory/total-orders.lagda.md b/src/order-theory/total-orders.lagda.md index 38ee8619ed..2a095ed972 100644 --- a/src/order-theory/total-orders.lagda.md +++ b/src/order-theory/total-orders.lagda.md @@ -13,8 +13,10 @@ open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.functoriality-disjunction open import foundation.identity-types +open import foundation.interchange-law open import foundation.propositions open import foundation.sets +open import foundation.transport-along-identifications open import foundation.universe-levels open import order-theory.greatest-lower-bounds-posets @@ -379,6 +381,44 @@ module _ ( order-theoretic-join-semilattice-Total-Order T) ``` +### Interchange on the binary minimum operation + +```agda +module _ + {l1 l2 : Level} (T : Total-Order l1 l2) + where + + abstract + interchange-law-min-Total-Order : + (a b c d : type-Total-Order T) → + min-Total-Order T (min-Total-Order T a b) (min-Total-Order T c d) = + min-Total-Order T (min-Total-Order T a c) (min-Total-Order T b d) + interchange-law-min-Total-Order = + interchange-law-commutative-and-associative + ( min-Total-Order T) + ( commutative-min-Total-Order T) + ( associative-min-Total-Order T) +``` + +### Interchange on the binary maximum operation + +```agda +module _ + {l1 l2 : Level} (T : Total-Order l1 l2) + where + + abstract + interchange-law-max-Total-Order : + (a b c d : type-Total-Order T) → + max-Total-Order T (max-Total-Order T a b) (max-Total-Order T c d) = + max-Total-Order T (max-Total-Order T a c) (max-Total-Order T b d) + interchange-law-max-Total-Order = + interchange-law-commutative-and-associative + ( max-Total-Order T) + ( commutative-max-Total-Order T) + ( associative-max-Total-Order T) +``` + ### The binary minimum operation is idempotent ```agda @@ -438,7 +478,7 @@ module _ ( x≤y)}) ``` -### If `y` is less than or equal to `x`, the minimum of `x` and `y` is `x` +### If `y` is less than or equal to `x`, the minimum of `x` and `y` is `y` ```agda module _ @@ -520,6 +560,25 @@ module _ ( order-theoretic-meet-semilattice-Total-Order T) ``` +### If `a ≤ b` and `a ≤ c`, then `a ≤ min b c` + +```agda +module _ + {l1 l2 : Level} (T : Total-Order l1 l2) + where + + abstract + leq-min-leq-both-Total-Order : + (a b c : type-Total-Order T) → + leq-Total-Order T a b → leq-Total-Order T a c → + leq-Total-Order T a (min-Total-Order T b c) + leq-min-leq-both-Total-Order a b c a≤b a≤c = + tr + ( λ d → leq-Total-Order T d (min-Total-Order T b c)) + ( idempotent-min-Total-Order T a) + ( min-leq-leq-Total-Order T a b a c a≤b a≤c) +``` + ### If `a ≤ b` and `c ≤ d`, then `max a c ≤ max b d` ```agda From 9726c5917b74b16bff563e7123b6ed95163fcca3 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 12 Sep 2025 15:55:30 -0700 Subject: [PATCH 07/59] Respond to review comments --- src/elementary-number-theory.lagda.md | 6 +- ...losed-intervals-rational-numbers.lagda.md} | 119 ++++++++----- ...losed-intervals-rational-numbers.lagda.md} | 35 ++-- ...losed-intervals-rational-numbers.lagda.md} | 160 +++++++++--------- src/order-theory.lagda.md | 1 + ...d-interval-preserving-maps-posets.lagda.md | 51 ++++++ ...rval-preserving-maps-total-orders.lagda.md | 55 ++++++ .../closed-intervals-posets.lagda.md | 32 +--- .../closed-intervals-total-orders.lagda.md | 108 ++++++------ 9 files changed, 347 insertions(+), 220 deletions(-) rename src/elementary-number-theory/{addition-intervals-rational-numbers.lagda.md => addition-closed-intervals-rational-numbers.lagda.md} (53%) rename src/elementary-number-theory/{intervals-rational-numbers.lagda.md => closed-intervals-rational-numbers.lagda.md} (79%) rename src/elementary-number-theory/{multiplication-intervals-rational-numbers.lagda.md => multiplication-closed-intervals-rational-numbers.lagda.md} (81%) create mode 100644 src/order-theory/closed-interval-preserving-maps-posets.lagda.md create mode 100644 src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index c5d924d4e3..8284455caf 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -12,9 +12,9 @@ module elementary-number-theory where open import elementary-number-theory.absolute-value-integers public open import elementary-number-theory.absolute-value-rational-numbers public open import elementary-number-theory.ackermann-function public +open import elementary-number-theory.addition-closed-intervals-rational-numbers public open import elementary-number-theory.addition-integer-fractions public open import elementary-number-theory.addition-integers public -open import elementary-number-theory.addition-intervals-rational-numbers public open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public @@ -38,6 +38,7 @@ open import elementary-number-theory.binomial-theorem-integers public open import elementary-number-theory.binomial-theorem-natural-numbers public open import elementary-number-theory.bounded-sums-arithmetic-functions public open import elementary-number-theory.catalan-numbers public +open import elementary-number-theory.closed-intervals-rational-numbers public open import elementary-number-theory.cofibonacci public open import elementary-number-theory.collatz-bijection public open import elementary-number-theory.collatz-conjecture public @@ -102,7 +103,6 @@ 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.integers public -open import elementary-number-theory.intervals-rational-numbers public open import elementary-number-theory.jacobi-symbol public open import elementary-number-theory.kolakoski-sequence public open import elementary-number-theory.legendre-symbol public @@ -119,9 +119,9 @@ open import elementary-number-theory.modular-arithmetic public open import elementary-number-theory.modular-arithmetic-standard-finite-types public open import elementary-number-theory.monoid-of-natural-numbers-with-addition public open import elementary-number-theory.monoid-of-natural-numbers-with-maximum public +open import elementary-number-theory.multiplication-closed-intervals-rational-numbers public open import elementary-number-theory.multiplication-integer-fractions public open import elementary-number-theory.multiplication-integers public -open import elementary-number-theory.multiplication-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-positive-and-negative-integers public diff --git a/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md similarity index 53% rename from src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md rename to src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md index b8ed57cd75..e5fabd2dcf 100644 --- a/src/elementary-number-theory/addition-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md @@ -1,7 +1,7 @@ -# Addition on intervals in the rational numbers +# Addition on closed intervals in the rational numbers ```agda -module elementary-number-theory.addition-intervals-rational-numbers where +module elementary-number-theory.addition-closed-intervals-rational-numbers where ```
Imports @@ -9,9 +9,9 @@ module elementary-number-theory.addition-intervals-rational-numbers where ```agda open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.intervals-rational-numbers open import elementary-number-theory.rational-numbers open import foundation.coproduct-types @@ -35,17 +35,19 @@ open import order-theory.closed-intervals-posets ## Idea -Given two [intervals](elementary-number-theory.intervals-rational-numbers.md) +Given two +[closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) `[a, b]` and `[c, d]` in the [rational numbers](elementary-number-theory.rational-numbers.md), the [Minkowski sum](group-theory.minkowski-multiplications-commutative-monoids.md) of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) -agrees with the interval `[a +ℚ c, b +ℚ d]`. +agrees with the interval `[a + c, b + d]`. ## Definition ```agda -add-interval-ℚ : interval-ℚ → interval-ℚ → interval-ℚ +add-interval-ℚ : + interval-ℚ → interval-ℚ → interval-ℚ add-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = ((a +ℚ c , b +ℚ d) , preserves-leq-add-ℚ a≤b c≤d) ``` @@ -56,55 +58,78 @@ add-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = ```agda abstract - has-same-elements-minkowski-add-interval-ℚ : + is-in-minkowski-sum-is-in-add-interval-ℚ : ([a,b] [c,d] : interval-ℚ) → - has-same-elements-subtype + (q : ℚ) → is-in-interval-ℚ (add-interval-ℚ [a,b] [c,d]) q → + is-in-subtype ( minkowski-mul-Commutative-Monoid ( commutative-monoid-add-ℚ) ( subtype-interval-ℚ [a,b]) ( subtype-interval-ℚ [c,d])) - ( subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d])) - pr1 - ( has-same-elements-minkowski-add-interval-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q) q∈[a,b]+[c,d] = - let - open - do-syntax-trunc-Prop - ( subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d]) q) - in do - ((s , t) , (a≤s , s≤b) , (c≤t , t≤d) , q=s+t) ← q∈[a,b]+[c,d] - ( inv-tr (leq-ℚ (a +ℚ c)) q=s+t (preserves-leq-add-ℚ a≤s c≤t) , - inv-tr (λ r → leq-ℚ r (b +ℚ d)) q=s+t (preserves-leq-add-ℚ s≤b t≤d)) - pr2 - ( has-same-elements-minkowski-add-interval-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q) (a+c≤q , q≤b+d) = - rec-coproduct - ( λ q≤a+d → - intro-exists - ( a , q -ℚ a) - ( ( refl-leq-ℚ a , a≤b) , - ( leq-transpose-left-add-ℚ' _ _ _ a+c≤q , - leq-transpose-right-add-ℚ' _ _ _ q≤a+d) , - inv (is-identity-right-conjugation-add-ℚ _ _))) - ( λ a+d≤q → - intro-exists - ( q -ℚ d , d) - ( ( leq-transpose-left-add-ℚ _ _ _ a+d≤q , - leq-transpose-right-add-ℚ _ _ _ q≤b+d) , - ( c≤d , refl-leq-ℚ d) , - inv (is-section-diff-ℚ _ _))) - ( linear-leq-ℚ q (a +ℚ d)) - - eq-minkowski-add-interval-ℚ : + ( q) + is-in-minkowski-sum-is-in-add-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q (a+c≤q , q≤b+d) = + rec-coproduct + ( λ q≤a+d → + intro-exists + ( a , q -ℚ a) + ( ( refl-leq-ℚ a , a≤b) , + ( leq-transpose-left-add-ℚ' _ _ _ a+c≤q , + leq-transpose-right-add-ℚ' _ _ _ q≤a+d) , + inv (is-identity-right-conjugation-add-ℚ _ _))) + ( λ a+d≤q → + intro-exists + ( q -ℚ d , d) + ( ( leq-transpose-left-add-ℚ _ _ _ a+d≤q , + leq-transpose-right-add-ℚ _ _ _ q≤b+d) , + ( c≤d , refl-leq-ℚ d) , + inv (is-section-diff-ℚ _ _))) + ( linear-leq-ℚ q (a +ℚ d)) + + is-in-add-interval-is-in-minkowski-sum-ℚ : ([a,b] [c,d] : interval-ℚ) → - minkowski-mul-Commutative-Monoid + (q : ℚ) → + is-in-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d])) + ( q) → + is-in-interval-ℚ (add-interval-ℚ [a,b] [c,d]) q + is-in-add-interval-is-in-minkowski-sum-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q q∈[a,b]+[c,d] = + let + open + do-syntax-trunc-Prop + ( subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d]) q) + in do + ((s , t) , (a≤s , s≤b) , (c≤t , t≤d) , q=s+t) ← q∈[a,b]+[c,d] + ( inv-tr (leq-ℚ (a +ℚ c)) q=s+t (preserves-leq-add-ℚ a≤s c≤t) , + inv-tr (λ r → leq-ℚ r (b +ℚ d)) q=s+t (preserves-leq-add-ℚ s≤b t≤d)) + +has-same-elements-minkowski-add-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + has-same-elements-subtype + ( minkowski-mul-Commutative-Monoid ( commutative-monoid-add-ℚ) ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d]) = - subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d]) - eq-minkowski-add-interval-ℚ [a,b] [c,d] = - eq-has-same-elements-subtype _ _ - ( has-same-elements-minkowski-add-interval-ℚ [a,b] [c,d]) + ( subtype-interval-ℚ [c,d])) + ( subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d])) +pr1 (has-same-elements-minkowski-add-interval-ℚ [a,b] [c,d] q) = + is-in-add-interval-is-in-minkowski-sum-ℚ [a,b] [c,d] q +pr2 (has-same-elements-minkowski-add-interval-ℚ [a,b] [c,d] q) = + is-in-minkowski-sum-is-in-add-interval-ℚ [a,b] [c,d] q + +eq-minkowski-add-interval-ℚ : + ([a,b] [c,d] : interval-ℚ) → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-interval-ℚ [a,b]) + ( subtype-interval-ℚ [c,d]) = + subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d]) +eq-minkowski-add-interval-ℚ [a,b] [c,d] = + eq-has-same-elements-subtype _ _ + ( has-same-elements-minkowski-add-interval-ℚ [a,b] [c,d]) ``` ### Associativity diff --git a/src/elementary-number-theory/intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md similarity index 79% rename from src/elementary-number-theory/intervals-rational-numbers.lagda.md rename to src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index ee4c17e8e6..0efa2e878a 100644 --- a/src/elementary-number-theory/intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -1,7 +1,7 @@ -# Intervals in the rational numbers +# Closed intervals in the rational numbers ```agda -module elementary-number-theory.intervals-rational-numbers where +module elementary-number-theory.closed-intervals-rational-numbers where ```
Imports @@ -23,6 +23,7 @@ open import foundation.sets open import foundation.subtypes open import foundation.universe-levels +open import order-theory.closed-interval-preserving-maps-posets open import order-theory.closed-intervals-posets open import order-theory.decidable-total-orders ``` @@ -31,7 +32,7 @@ open import order-theory.decidable-total-orders ## Idea -An interval in the rational numbers is a +A closed interval in the rational numbers is a [closed interval](order-theory.closed-intervals-posets.md) in the [poset](elementary-number-theory.inequality-rational-numbers.md) of [rational numbers](elementary-number-theory.rational-numbers.md). @@ -66,10 +67,12 @@ is-above-prop-interval-ℚ : interval-ℚ → subtype lzero ℚ is-above-prop-interval-ℚ ((_ , a) , _) b = le-ℚ-Prop a b nonnegative-width-interval-ℚ : interval-ℚ → ℚ⁰⁺ -nonnegative-width-interval-ℚ ((a , b) , a≤b) = nonnegative-diff-leq-ℚ a b a≤b +nonnegative-width-interval-ℚ ((a , b) , a≤b) = + nonnegative-diff-leq-ℚ a b a≤b width-interval-ℚ : interval-ℚ → ℚ -width-interval-ℚ [a,b] = rational-ℚ⁰⁺ (nonnegative-width-interval-ℚ [a,b]) +width-interval-ℚ [a,b] = + rational-ℚ⁰⁺ (nonnegative-width-interval-ℚ [a,b]) is-injective-subtype-interval-ℚ : is-injective subtype-interval-ℚ @@ -112,19 +115,21 @@ unordered-interval-ℚ a b = min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order a b) abstract - unordered-interval-leq-ℚ : - (p q : ℚ) → (p≤q : leq-ℚ p q) → unordered-interval-ℚ p q = ((p , q) , p≤q) - unordered-interval-leq-ℚ p q p≤q = + unordered-closed-interval-leq-ℚ : + (p q : ℚ) → (p≤q : leq-ℚ p q) → + unordered-interval-ℚ p q = ((p , q) , p≤q) + unordered-closed-interval-leq-ℚ p q p≤q = eq-interval-ℚ _ _ - (left-leq-right-min-ℚ p q p≤q) - (left-leq-right-max-ℚ p q p≤q) + ( left-leq-right-min-ℚ p q p≤q) + ( left-leq-right-max-ℚ p q p≤q) - unordered-interval-leq-ℚ' : - (p q : ℚ) → (q≤p : leq-ℚ q p) → unordered-interval-ℚ p q = ((q , p) , q≤p) - unordered-interval-leq-ℚ' p q q≤p = + unordered-closed-interval-leq-ℚ' : + (p q : ℚ) → (q≤p : leq-ℚ q p) → + unordered-interval-ℚ p q = ((q , p) , q≤p) + unordered-closed-interval-leq-ℚ' p q q≤p = eq-interval-ℚ _ _ - (right-leq-left-min-ℚ p q q≤p) - (right-leq-left-max-ℚ p q q≤p) + ( right-leq-left-min-ℚ p q q≤p) + ( right-leq-left-max-ℚ p q q≤p) ``` ### Maps from rational intervals to rational intervals diff --git a/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md similarity index 81% rename from src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md rename to src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md index 111d0b5867..172f7e6e71 100644 --- a/src/elementary-number-theory/multiplication-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md @@ -1,19 +1,19 @@ -# Multiplication on intervals in the rational numbers +# Multiplication on closed intervals in the rational numbers ```agda -module elementary-number-theory.multiplication-intervals-rational-numbers where +module elementary-number-theory.multiplication-closed-intervals-rational-numbers where ```
Imports ```agda -open import elementary-number-theory.addition-intervals-rational-numbers +open import elementary-number-theory.addition-closed-intervals-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.closed-intervals-rational-numbers open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.intervals-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-rational-numbers @@ -62,6 +62,13 @@ Given two [intervals](elementary-number-theory.intervals-rational-numbers.md) of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) agrees with the interval `[min(ac, ad, bc, bd), max(ac, ad, bc, bd)]`. +Notably, this is because nonzero rational numbers are +[invertible](elementary-number-theory.multiplicative-group-of-rational-numbers.md); +this would not be true for the +[natural numbers](elementary-number-theory.natural-numbers.md), as +`[2, 2] * [a, b]` in the natural numbers is not the full interval `[2a, 2b]` but +only the even elements. + ## Definition ```agda @@ -97,7 +104,8 @@ abstract ( max-leq-leq-ℚ _ _ _ _ (min≤max _ _) (min≤max _ _)) ( min≤max _ _) -mul-interval-ℚ : interval-ℚ → interval-ℚ → interval-ℚ +mul-interval-ℚ : + interval-ℚ → interval-ℚ → interval-ℚ mul-interval-ℚ [a,b] [c,d] = ( ( lower-bound-mul-interval-ℚ [a,b] [c,d] , upper-bound-mul-interval-ℚ [a,b] [c,d]) , @@ -106,33 +114,33 @@ mul-interval-ℚ [a,b] [c,d] = ## Properties -### Left multiplication by an interval +### Right multiplication of an interval by a rational number -#### By a negative rational number +#### Right multiplication of an interval by a negative rational number ```agda -left-mul-interval-ℚ⁻ : interval-ℚ → ℚ⁻ → interval-ℚ -left-mul-interval-ℚ⁻ ((p , q) , p≤q) s⁻@(s , _) = +right-mul-ℚ⁻-interval-ℚ : interval-ℚ → ℚ⁻ → interval-ℚ +right-mul-ℚ⁻-interval-ℚ ((p , q) , p≤q) s⁻@(s , _) = ((q *ℚ s , p *ℚ s) , reverses-leq-right-mul-ℚ⁻ s⁻ _ _ p≤q) abstract - left-mul-element-interval-ℚ⁻ : + right-mul-ℚ⁻-is-in-interval-ℚ : ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( left-mul-interval-ℚ⁻ [p,q] r) + ( right-mul-ℚ⁻-interval-ℚ [p,q] r) ( s *ℚ rational-ℚ⁻ r) - left-mul-element-interval-ℚ⁻ + right-mul-ℚ⁻-is-in-interval-ℚ ((p , q) , p≤q) r s (p≤s , s≤q) = ( reverses-leq-right-mul-ℚ⁻ r _ _ s≤q , reverses-leq-right-mul-ℚ⁻ r _ _ p≤s) - image-left-mul-element-interval-ℚ⁻ : + is-in-im-right-mul-ℚ⁻-is-in-right-mul-ℚ⁻-interval-ℚ : ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → is-in-interval-ℚ - ( left-mul-interval-ℚ⁻ [p,q] r) + ( right-mul-ℚ⁻-interval-ℚ [p,q] r) ( s) → is-in-im-subtype (mul-ℚ' (rational-ℚ⁻ r)) (subtype-interval-ℚ [p,q]) s - image-left-mul-element-interval-ℚ⁻ + is-in-im-right-mul-ℚ⁻-is-in-right-mul-ℚ⁻-interval-ℚ ((p , q) , p≤q) r⁻@(r , _) s (qr≤s , s≤pr) = let r⁻¹ = inv-ℚ⁻ r⁻ in @@ -159,37 +167,37 @@ abstract is-interval-map-ℚ ( mul-ℚ' (rational-ℚ⁻ q)) ( [a,b]) - ( left-mul-interval-ℚ⁻ [a,b] q) + ( right-mul-ℚ⁻-interval-ℚ [a,b] q) is-interval-map-left-mul-ℚ⁻ q [a,b] = - ( ind-Σ (left-mul-element-interval-ℚ⁻ [a,b] q) , - ind-Σ (image-left-mul-element-interval-ℚ⁻ [a,b] q)) + ( ind-Σ (right-mul-ℚ⁻-is-in-interval-ℚ [a,b] q) , + ind-Σ (is-in-im-right-mul-ℚ⁻-is-in-right-mul-ℚ⁻-interval-ℚ [a,b] q)) ``` -#### By a positive rational number +#### Right multiplication of an interval by a positive rational number ```agda -left-mul-interval-ℚ⁺ : interval-ℚ → ℚ⁺ → interval-ℚ -left-mul-interval-ℚ⁺ ((p , q) , p≤q) s⁺@(s , _) = +right-mul-ℚ⁺-interval-ℚ : interval-ℚ → ℚ⁺ → interval-ℚ +right-mul-ℚ⁺-interval-ℚ ((p , q) , p≤q) s⁺@(s , _) = ((p *ℚ s , q *ℚ s) , preserves-leq-right-mul-ℚ⁺ s⁺ _ _ p≤q) abstract - left-mul-element-interval-ℚ⁺ : + right-mul-ℚ⁺-is-in-interval-ℚ : ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( left-mul-interval-ℚ⁺ [p,q] r) + ( right-mul-ℚ⁺-interval-ℚ [p,q] r) ( s *ℚ rational-ℚ⁺ r) - left-mul-element-interval-ℚ⁺ + right-mul-ℚ⁺-is-in-interval-ℚ ((p , q) , p≤q) r s (p≤s , s≤q) = ( preserves-leq-right-mul-ℚ⁺ r _ _ p≤s , preserves-leq-right-mul-ℚ⁺ r _ _ s≤q) - image-left-mul-element-interval-ℚ⁺ : + is-in-im-right-mul-ℚ⁺-is-in-right-mul-ℚ⁺-interval-ℚ : ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → is-in-interval-ℚ - ( left-mul-interval-ℚ⁺ [p,q] r) + ( right-mul-ℚ⁺-interval-ℚ [p,q] r) ( s) → is-in-im-subtype (mul-ℚ' (rational-ℚ⁺ r)) (subtype-interval-ℚ [p,q]) s - image-left-mul-element-interval-ℚ⁺ + is-in-im-right-mul-ℚ⁺-is-in-right-mul-ℚ⁺-interval-ℚ ((p , q) , p≤q) r⁺@(r , _) s (pr≤s , s≤qr) = let r⁻¹ = inv-ℚ⁺ r⁺ in @@ -216,23 +224,23 @@ abstract is-interval-map-ℚ ( mul-ℚ' (rational-ℚ⁺ q)) ( [a,b]) - ( left-mul-interval-ℚ⁺ [a,b] q) + ( right-mul-ℚ⁺-interval-ℚ [a,b] q) is-interval-map-left-mul-ℚ⁺ q [a,b] = - ( ind-Σ (left-mul-element-interval-ℚ⁺ [a,b] q) , - ind-Σ (image-left-mul-element-interval-ℚ⁺ [a,b] q)) + ( ind-Σ (right-mul-ℚ⁺-is-in-interval-ℚ [a,b] q) , + ind-Σ (is-in-im-right-mul-ℚ⁺-is-in-right-mul-ℚ⁺-interval-ℚ [a,b] q)) ``` -#### By zero +#### Right multiplication of an interval by zero ```agda abstract - image-left-mul-element-interval-zero-ℚ : + is-in-im-right-mul-zero-is-in-zero-zero-interval-ℚ : ([p,q] : interval-ℚ) → (s : ℚ) → is-in-interval-ℚ ( zero-zero-interval-ℚ) ( s) → is-in-im-subtype (mul-ℚ' zero-ℚ) (subtype-interval-ℚ [p,q]) s - image-left-mul-element-interval-zero-ℚ + is-in-im-right-mul-zero-is-in-zero-zero-interval-ℚ ((p , q) , p≤q) s (0≤s , s≤0) = intro-exists ( p , refl-leq-ℚ p , p≤q) @@ -250,38 +258,38 @@ abstract ( is-in-interval-ℚ zero-zero-interval-ℚ) ( right-zero-law-mul-ℚ _) ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) , - ind-Σ (image-left-mul-element-interval-zero-ℚ [a,b])) + ind-Σ (is-in-im-right-mul-zero-is-in-zero-zero-interval-ℚ [a,b])) ``` #### By any rational number ```agda -left-mul-interval-ℚ : interval-ℚ → ℚ → interval-ℚ -left-mul-interval-ℚ ((a , b) , a≤b) c = +right-mul-ℚ-interval-ℚ : interval-ℚ → ℚ → interval-ℚ +right-mul-ℚ-interval-ℚ ((a , b) , a≤b) c = ( (min-ℚ (a *ℚ c) (b *ℚ c) , max-ℚ (a *ℚ c) (b *ℚ c)) , min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order _ _) abstract - left-mul-interval-is-negative-ℚ : + right-mul-ℚ-interval-ℚ-is-negative-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → - left-mul-interval-ℚ [p,q] r = - left-mul-interval-ℚ⁻ [p,q] (r , neg-r) - left-mul-interval-is-negative-ℚ [p,q]@((p , q) , p≤q) r neg-r = - unordered-interval-leq-ℚ' _ _ + right-mul-ℚ-interval-ℚ [p,q] r = + right-mul-ℚ⁻-interval-ℚ [p,q] (r , neg-r) + right-mul-ℚ-interval-ℚ-is-negative-ℚ [p,q]@((p , q) , p≤q) r neg-r = + unordered-closed-interval-leq-ℚ' _ _ ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) - left-mul-interval-is-positive-ℚ : + right-mul-ℚ-interval-ℚ-is-positive-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (pos-r : is-positive-ℚ r) → - left-mul-interval-ℚ [p,q] r = - left-mul-interval-ℚ⁺ [p,q] (r , pos-r) - left-mul-interval-is-positive-ℚ [p,q]@((p , q) , p≤q) r pos-r = - unordered-interval-leq-ℚ _ _ + right-mul-ℚ-interval-ℚ [p,q] r = + right-mul-ℚ⁺-interval-ℚ [p,q] (r , pos-r) + right-mul-ℚ-interval-ℚ-is-positive-ℚ [p,q]@((p , q) , p≤q) r pos-r = + unordered-closed-interval-leq-ℚ _ _ ( preserves-leq-right-mul-ℚ⁺ (r , pos-r) _ _ p≤q) - left-mul-interval-is-zero-ℚ : + right-mul-ℚ-interval-ℚ-is-zero-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (is-zero-r : is-zero-ℚ r) → - left-mul-interval-ℚ [p,q] r = zero-zero-interval-ℚ - left-mul-interval-is-zero-ℚ ((p , q) , p≤q) _ refl = + right-mul-ℚ-interval-ℚ [p,q] r = zero-zero-interval-ℚ + right-mul-ℚ-interval-ℚ-is-zero-ℚ ((p , q) , p≤q) _ refl = eq-interval-ℚ _ _ ( ap-min-ℚ ( right-zero-law-mul-ℚ _) @@ -292,74 +300,74 @@ abstract ( right-zero-law-mul-ℚ _) ∙ idempotent-max-ℚ zero-ℚ) - left-mul-element-interval-ℚ : + right-mul-ℚ-is-in-interval-ℚ : ([p,q] : interval-ℚ) → (r s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( left-mul-interval-ℚ [p,q] r) + ( right-mul-ℚ-interval-ℚ [p,q] r) ( s *ℚ r) - left-mul-element-interval-ℚ [p,q] r s s∈[p,q] = + right-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[p,q] = trichotomy-sign-ℚ r ( λ neg-r → inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) - ( left-mul-interval-is-negative-ℚ [p,q] r neg-r) - ( left-mul-element-interval-ℚ⁻ [p,q] (r , neg-r) s s∈[p,q])) + ( right-mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) + ( right-mul-ℚ⁻-is-in-interval-ℚ [p,q] (r , neg-r) s s∈[p,q])) ( λ r=0 → binary-tr ( is-in-interval-ℚ) - ( inv (left-mul-interval-is-zero-ℚ [p,q] r r=0)) + ( inv (right-mul-ℚ-interval-ℚ-is-zero-ℚ [p,q] r r=0)) ( inv (ap-mul-ℚ refl r=0 ∙ right-zero-law-mul-ℚ s)) ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) ( λ pos-r → inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) - ( left-mul-interval-is-positive-ℚ [p,q] r pos-r) - ( left-mul-element-interval-ℚ⁺ [p,q] (r , pos-r) s s∈[p,q])) + ( right-mul-ℚ-interval-ℚ-is-positive-ℚ [p,q] r pos-r) + ( right-mul-ℚ⁺-is-in-interval-ℚ [p,q] (r , pos-r) s s∈[p,q])) - image-left-mul-element-interval-ℚ : + image-right-mul-ℚ-is-in-interval-ℚ : ([p,q] : interval-ℚ) (r s : ℚ) → is-in-interval-ℚ - ( left-mul-interval-ℚ [p,q] r) + ( right-mul-ℚ-interval-ℚ [p,q] r) ( s) → is-in-im-subtype (mul-ℚ' r) (subtype-interval-ℚ [p,q]) s - image-left-mul-element-interval-ℚ [p,q] r s s∈[min-pr-qr,max-pr-qr] = + image-right-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[min-pr-qr,max-pr-qr] = trichotomy-sign-ℚ r ( λ neg-r → - image-left-mul-element-interval-ℚ⁻ + is-in-im-right-mul-ℚ⁻-is-in-right-mul-ℚ⁻-interval-ℚ ( [p,q]) ( r , neg-r) ( s) ( tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( left-mul-interval-is-negative-ℚ [p,q] r neg-r) + ( right-mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) ( s∈[min-pr-qr,max-pr-qr]))) ( λ r=0 → inv-tr ( λ t → is-in-im-subtype (mul-ℚ' t) (subtype-interval-ℚ [p,q]) s) ( r=0) - ( image-left-mul-element-interval-zero-ℚ + ( is-in-im-right-mul-zero-is-in-zero-zero-interval-ℚ ( [p,q]) ( s) ( tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( left-mul-interval-is-zero-ℚ [p,q] r r=0) + ( right-mul-ℚ-interval-ℚ-is-zero-ℚ [p,q] r r=0) ( s∈[min-pr-qr,max-pr-qr])))) ( λ pos-r → - image-left-mul-element-interval-ℚ⁺ + is-in-im-right-mul-ℚ⁺-is-in-right-mul-ℚ⁺-interval-ℚ ( [p,q]) ( r , pos-r) ( s) ( tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( left-mul-interval-is-positive-ℚ [p,q] r pos-r) + ( right-mul-ℚ-interval-ℚ-is-positive-ℚ [p,q] r pos-r) ( s∈[min-pr-qr,max-pr-qr]))) is-interval-map-left-mul-ℚ : (q : ℚ) ([a,b] : interval-ℚ) → - is-interval-map-ℚ (mul-ℚ' q) [a,b] (left-mul-interval-ℚ [a,b] q) + is-interval-map-ℚ (mul-ℚ' q) [a,b] (right-mul-ℚ-interval-ℚ [a,b] q) is-interval-map-left-mul-ℚ q [a,b] = - ( ind-Σ (left-mul-element-interval-ℚ [a,b] q) , - ind-Σ (image-left-mul-element-interval-ℚ [a,b] q)) + ( ind-Σ (right-mul-ℚ-is-in-interval-ℚ [a,b] q) , + ind-Σ (image-right-mul-ℚ-is-in-interval-ℚ [a,b] q)) ``` ### Right multiplication by an interval @@ -373,7 +381,7 @@ right-mul-interval-ℚ a ((b , c) , b≤c) = abstract commute-left-right-mul-interval-ℚ : ([p,q] : interval-ℚ) (r : ℚ) → - left-mul-interval-ℚ [p,q] r = right-mul-interval-ℚ r [p,q] + right-mul-ℚ-interval-ℚ [p,q] r = right-mul-interval-ℚ r [p,q] commute-left-right-mul-interval-ℚ [p,q] r = eq-interval-ℚ _ _ ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) @@ -389,7 +397,7 @@ abstract ( is-in-interval-ℚ) ( commute-left-right-mul-interval-ℚ [p,q] r) ( commutative-mul-ℚ s r) - ( left-mul-element-interval-ℚ [p,q] r s s∈[p,q]) + ( right-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[p,q]) image-right-mul-element-interval-ℚ : ([p,q] : interval-ℚ) (r s : ℚ) → @@ -401,7 +409,7 @@ abstract tr ( λ f → is-in-im-subtype f (subtype-interval-ℚ [p,q]) s) ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) - ( image-left-mul-element-interval-ℚ [p,q] r s + ( image-right-mul-ℚ-is-in-interval-ℚ [p,q] r s ( inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) ( commute-left-right-mul-interval-ℚ [p,q] r) @@ -431,7 +439,7 @@ abstract p∈[a,b]@(a≤p , p≤b) q∈[c,d]@(c≤q , q≤d) = let (min-aq-bq≤pq , pq≤max-aq-bq) = - left-mul-element-interval-ℚ [a,b] q p p∈[a,b] + right-mul-ℚ-is-in-interval-ℚ [a,b] q p p∈[a,b] (min-ac-ad≤aq , aq≤max-ac-ad) = right-mul-element-interval-ℚ [c,d] a q q∈[c,d] (min-bc-bd≤bq , bq≤max-bc-bd) = @@ -479,7 +487,7 @@ abstract case-[ac,bc] x∈[ac,bc] = do ((p , a≤p , p≤b) , pc=x) ← - image-left-mul-element-interval-ℚ [a,b] c x x∈[ac,bc] + image-right-mul-ℚ-is-in-interval-ℚ [a,b] c x x∈[ac,bc] intro-exists ( p , c) ( (a≤p , p≤b) , (refl-leq-ℚ c , c≤d) , inv pc=x) @@ -493,7 +501,7 @@ abstract case-[ad,bd] x∈[ad,bd] = do ((p , a≤p , p≤b) , pd=x) ← - image-left-mul-element-interval-ℚ [a,b] d x x∈[ad,bd] + image-right-mul-ℚ-is-in-interval-ℚ [a,b] d x x∈[ad,bd] intro-exists ( p , d) ( (a≤p , p≤b) , (c≤d , refl-leq-ℚ d) , inv pd=x) @@ -501,7 +509,7 @@ abstract elim-disjunction motive ( elim-disjunction motive case-[ac,ad] case-[ac,bc]) ( elim-disjunction motive case-[ad,bd] case-[bc,bd]) - ( cover-closed-interval-4-Total-Order ℚ-Total-Order + ( cover-minimal-closed-interval-cover-of-four-elements-Total-Order ℚ-Total-Order ( a *ℚ c) ( a *ℚ d) ( b *ℚ c) diff --git a/src/order-theory.lagda.md b/src/order-theory.lagda.md index e0e36f884b..e3de962d0f 100644 --- a/src/order-theory.lagda.md +++ b/src/order-theory.lagda.md @@ -11,6 +11,7 @@ open import order-theory.bottom-elements-posets public open import order-theory.bottom-elements-preorders public open import order-theory.chains-posets public open import order-theory.chains-preorders public +open import order-theory.closed-interval-preserving-maps-posets public open import order-theory.closed-intervals-posets public open import order-theory.closed-intervals-total-orders public open import order-theory.closure-operators-large-locales public diff --git a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md new file mode 100644 index 0000000000..f84a8f08ae --- /dev/null +++ b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md @@ -0,0 +1,51 @@ +# Closed interval preserving maps between posets + +```agda +module order-theory.closed-interval-preserving-maps-posets where +``` + +
Imports + +```agda +open import foundation.images-subtypes +open import foundation.propositions +open import foundation.universe-levels + +open import order-theory.closed-intervals-posets +open import order-theory.posets +``` + +
+ +## Idea + +A map between [posets](order-theory.posets.md) `f : X → Y` is +{{#concept "closed interval preserving" Agda=is-closed-interval-map-Poset disambiguation="map between posets"}} +if the [image](foundation.images-subtypes.md) of a +[closed interval](order-theory.closed-intervals-posets.md) in `X` is always a +closed interval in `Y`. + +## Definition + +```agda +module _ + {l1 l2 l3 l4 : Level} (X : Poset l1 l2) (Y : Poset l3 l4) + (f : type-Poset X → type-Poset Y) + where + + is-closed-interval-map-prop-Poset : + ([a,b] : closed-interval-Poset X) → + ([c,d] : closed-interval-Poset Y) → + Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-closed-interval-map-prop-Poset [a,b] [c,d] = + is-image-map-subtype-prop f + ( subtype-closed-interval-Poset X [a,b]) + ( subtype-closed-interval-Poset Y [c,d]) + + is-closed-interval-map-Poset : + ([a,b] : closed-interval-Poset X) → + ([c,d] : closed-interval-Poset Y) → + UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-closed-interval-map-Poset [a,b] [c,d] = + type-Prop (is-closed-interval-map-prop-Poset [a,b] [c,d]) +``` diff --git a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md new file mode 100644 index 0000000000..8877f55bbb --- /dev/null +++ b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md @@ -0,0 +1,55 @@ +# Closed interval preserving maps between total orders + +```agda +module order-theory.closed-interval-preserving-maps-total-orders where +``` + +
Imports + +```agda +open import foundation.images-subtypes +open import foundation.propositions +open import foundation.universe-levels + +open import order-theory.closed-intervals-total-orders +open import order-theory.total-orders +open import order-theory.closed-interval-preserving-maps-posets +``` + +
+ +## Idea + +A map between [total orders](order-theory.total-orders.md) `f : X → Y` is +{{#concept "closed interval preserving" Agda=is-closed-interval-map-Total-Order disambiguation="map between total orders"}} +if the [image](foundation.images-subtypes.md) of a +[closed interval](order-theory.closed-intervals-total-orders.md) in `X` is always a +closed interval in `Y`. Equivalently, it is a +[closed interval preserving map](order-theory.closed-interval-preserving-maps-posets.md) +on the underlying [posets](order-theory.posets.md). + +## Definition + +```agda +module _ + {l1 l2 l3 l4 : Level} (X : Total-Order l1 l2) (Y : Total-Order l3 l4) + (f : type-Total-Order X → type-Total-Order Y) + where + + is-closed-interval-map-prop-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + ([c,d] : closed-interval-Total-Order Y) → + Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-closed-interval-map-prop-Total-Order = + is-closed-interval-map-prop-Poset + ( poset-Total-Order X) + ( poset-Total-Order Y) + ( f) + + is-closed-interval-map-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + ([c,d] : closed-interval-Total-Order Y) → + UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) + is-closed-interval-map-Total-Order [a,b] [c,d] = + type-Prop (is-closed-interval-map-prop-Total-Order [a,b] [c,d]) +``` diff --git a/src/order-theory/closed-intervals-posets.lagda.md b/src/order-theory/closed-intervals-posets.lagda.md index a08ff8ab17..aa6f711e00 100644 --- a/src/order-theory/closed-intervals-posets.lagda.md +++ b/src/order-theory/closed-intervals-posets.lagda.md @@ -32,8 +32,11 @@ open import order-theory.posets A {{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} -in a [poset](order-theory.posets.md) `P` consists of a pair of elements `x` and -`y` in `P` with `x ≤ y`. +in a [poset](order-theory.posets.md) `P` consists of a +[pair](foundation.cartesian-product-types.md) of elements `x` and `y` in `P` +with `x ≤ y`. A closed interval notably induces a +[subtype](foundation.subtypes.md) of `P` spanned by elements `z` such that +`x ≤ z ≤ y`. ## Definition @@ -164,28 +167,3 @@ module _ ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] d) ( c≤d , refl-leq-Poset X d)))) ``` - -### The property of a map of taking a closed interval to a closed interval - -```agda -module _ - {l1 l2 l3 l4 : Level} (X : Poset l1 l2) (Y : Poset l3 l4) - (f : type-Poset X → type-Poset Y) - where - - is-closed-interval-map-prop-Poset : - ([a,b] : closed-interval-Poset X) → - ([c,d] : closed-interval-Poset Y) → - Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) - is-closed-interval-map-prop-Poset [a,b] [c,d] = - is-image-map-subtype-prop f - ( subtype-closed-interval-Poset X [a,b]) - ( subtype-closed-interval-Poset Y [c,d]) - - is-closed-interval-map-Poset : - ([a,b] : closed-interval-Poset X) → - ([c,d] : closed-interval-Poset Y) → - UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - is-closed-interval-map-Poset [a,b] [c,d] = - type-Prop (is-closed-interval-map-prop-Poset [a,b] [c,d]) -``` diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index 5b915bdde1..b9e80ce6a3 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -34,10 +34,15 @@ open import order-theory.total-orders ## Idea A -{{#concept "closed interval" disambiguation="in a total order" Agda=closed-interval-Total-Order}} -in a [total order](order-theory.total-orders.md) `T` is a -[closed interval](order-theory.closed-intervals-posets.md) in the underlying -[poset](order-theory.posets.md). +{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} +in a [total order](order-theory.total-orders.md) `X` consists of a +[pair](foundation.cartesian-product-types.md) of elements `x` and `y` in `X` +with `x ≤ y`. A closed interval notably induces a +[subtype](foundation.subtypes.md) of `X` spanned by elements `z` such that +`x ≤ z ≤ y`. + +Equivalently, it is a [closed interval](order-theory.closed-intervals-posets.md) +in the underlying [poset](order-theory.posets.md). ## Definition @@ -150,32 +155,6 @@ module _ is-injective-subtype-closed-interval-Poset (poset-Total-Order X) ``` -### The property of a map of taking a closed interval to a closed interval - -```agda -module _ - {l1 l2 l3 l4 : Level} (X : Total-Order l1 l2) (Y : Total-Order l3 l4) - (f : type-Total-Order X → type-Total-Order Y) - where - - is-closed-interval-map-prop-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - ([c,d] : closed-interval-Total-Order Y) → - Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) - is-closed-interval-map-prop-Total-Order = - is-closed-interval-map-prop-Poset - ( poset-Total-Order X) - ( poset-Total-Order Y) - ( f) - - is-closed-interval-map-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - ([c,d] : closed-interval-Total-Order Y) → - UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) - is-closed-interval-map-Total-Order [a,b] [c,d] = - type-Prop (is-closed-interval-map-prop-Total-Order [a,b] [c,d]) -``` - ### Total orders can be divided along an element ```agda @@ -246,8 +225,9 @@ module _ {l1 l2 : Level} (X : Total-Order l1 l2) (a b : type-Total-Order X) where - closed-interval-2-Total-Order : closed-interval-Total-Order X - closed-interval-2-Total-Order = + minimal-closed-interval-cover-of-two-elements-Total-Order : + closed-interval-Total-Order X + minimal-closed-interval-cover-of-two-elements-Total-Order = ( ( min-Total-Order X a b , max-Total-Order X a b) , min-leq-max-Total-Order X a b) @@ -260,8 +240,9 @@ module _ {l1 l2 : Level} (X : Total-Order l1 l2) (a b c d : type-Total-Order X) where - closed-interval-4-Total-Order : closed-interval-Total-Order X - closed-interval-4-Total-Order = + minimal-closed-interval-cover-of-four-elements-Total-Order : + closed-interval-Total-Order X + minimal-closed-interval-cover-of-four-elements-Total-Order = ( ( min-Total-Order X (min-Total-Order X a b) (min-Total-Order X c d) , max-Total-Order X (max-Total-Order X a b) (max-Total-Order X c d)) , transitive-leq-Total-Order X _ _ _ @@ -274,15 +255,15 @@ module _ cover-closed-interval-4-first-smallest-Total-Order : leq-Total-Order X a b → leq-Total-Order X a c → leq-Total-Order X a d → subtype-closed-interval-Total-Order X - ( closed-interval-4-Total-Order) ⊆ + ( minimal-closed-interval-cover-of-four-elements-Total-Order) ⊆ union-subtype ( union-subtype ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a b)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order X a b)) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a c))) + ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X b d)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) cover-closed-interval-4-first-smallest-Total-Order a≤b a≤c a≤d x (min≤x , x≤max) = let @@ -290,11 +271,17 @@ module _ union-subtype ( union-subtype ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a b)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( a) + ( b))) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a c))) + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( a) + ( c)))) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X b d)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) ( x) minab≤x = tr @@ -367,21 +354,26 @@ module _ where abstract - cover-closed-interval-4-Total-Order : + cover-minimal-closed-interval-cover-of-four-elements-Total-Order : subtype-closed-interval-Total-Order X - ( closed-interval-4-Total-Order X a b c d) ⊆ + ( minimal-closed-interval-cover-of-four-elements-Total-Order X + ( a) + ( b) + ( c) + ( d)) ⊆ union-subtype ( union-subtype ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a b)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order X a b)) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a c))) + ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) ( union-subtype ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X b d)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X c d))) - cover-closed-interval-4-Total-Order x x∈closed-4@(min≤x , x≤max) = + ( minimal-closed-interval-cover-of-two-elements-Total-Order X c d))) + cover-minimal-closed-interval-cover-of-four-elements-Total-Order + x x∈closed-4@(min≤x , x≤max) = let _≤_ = leq-Total-Order X commutative-min = commutative-min-Total-Order X @@ -392,14 +384,26 @@ module _ union-subtype ( union-subtype ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a b)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( a) + ( b))) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X a c))) + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( a) + ( c)))) ( union-subtype ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X b d)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( b) + ( d))) ( subtype-closed-interval-Total-Order X - ( closed-interval-2-Total-Order X c d))) + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( c) + ( d)))) ( x) min≤a = transitive-leq-Total-Order X From a868f8ad88053efa703ebe661b0dd606a14a11e6 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 12 Sep 2025 17:46:59 -0700 Subject: [PATCH 08/59] make pre-commit --- src/order-theory.lagda.md | 1 + .../closed-interval-preserving-maps-total-orders.lagda.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/order-theory.lagda.md b/src/order-theory.lagda.md index e3de962d0f..fb56274790 100644 --- a/src/order-theory.lagda.md +++ b/src/order-theory.lagda.md @@ -12,6 +12,7 @@ open import order-theory.bottom-elements-preorders public open import order-theory.chains-posets public open import order-theory.chains-preorders public open import order-theory.closed-interval-preserving-maps-posets public +open import order-theory.closed-interval-preserving-maps-total-orders public open import order-theory.closed-intervals-posets public open import order-theory.closed-intervals-total-orders public open import order-theory.closure-operators-large-locales public diff --git a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md index 8877f55bbb..63af68d4f8 100644 --- a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md @@ -11,9 +11,9 @@ open import foundation.images-subtypes open import foundation.propositions open import foundation.universe-levels +open import order-theory.closed-interval-preserving-maps-posets open import order-theory.closed-intervals-total-orders open import order-theory.total-orders -open import order-theory.closed-interval-preserving-maps-posets ```
From 9400255b04e9c2629330132fe82bba076f9fb935 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 12 Sep 2025 17:49:33 -0700 Subject: [PATCH 09/59] make pre-commit --- ...n-closed-intervals-rational-numbers.lagda.md | 3 ++- ...terval-preserving-maps-total-orders.lagda.md | 4 ++-- .../closed-intervals-total-orders.lagda.md | 17 ++++++++++------- 3 files changed, 14 insertions(+), 10 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 172f7e6e71..1df8d5605c 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 @@ -509,7 +509,8 @@ abstract elim-disjunction motive ( elim-disjunction motive case-[ac,ad] case-[ac,bc]) ( elim-disjunction motive case-[ad,bd] case-[bc,bd]) - ( cover-minimal-closed-interval-cover-of-four-elements-Total-Order ℚ-Total-Order + ( cover-minimal-closed-interval-cover-of-four-elements-Total-Order + ( ℚ-Total-Order) ( a *ℚ c) ( a *ℚ d) ( b *ℚ c) diff --git a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md index 63af68d4f8..236f38f6b6 100644 --- a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md @@ -23,8 +23,8 @@ open import order-theory.total-orders A map between [total orders](order-theory.total-orders.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Total-Order disambiguation="map between total orders"}} if the [image](foundation.images-subtypes.md) of a -[closed interval](order-theory.closed-intervals-total-orders.md) in `X` is always a -closed interval in `Y`. Equivalently, it is a +[closed interval](order-theory.closed-intervals-total-orders.md) in `X` is +always a closed interval in `Y`. Equivalently, it is a [closed interval preserving map](order-theory.closed-interval-preserving-maps-posets.md) on the underlying [posets](order-theory.posets.md). diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index b9e80ce6a3..be56033c53 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -252,7 +252,7 @@ module _ ( min-leq-max-Total-Order X _ _)) abstract - cover-closed-interval-4-first-smallest-Total-Order : + cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order : leq-Total-Order X a b → leq-Total-Order X a c → leq-Total-Order X a d → subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-four-elements-Total-Order) ⊆ @@ -264,7 +264,7 @@ module _ ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) - cover-closed-interval-4-first-smallest-Total-Order + cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order a≤b a≤c a≤d x (min≤x , x≤max) = let motive = @@ -281,7 +281,10 @@ module _ ( a) ( c)))) ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( b) + ( d))) ( x) minab≤x = tr @@ -440,7 +443,7 @@ module _ map-disjunction ( id) ( inl-disjunction) - ( cover-closed-interval-4-first-smallest-Total-Order X a b c d + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order X a b c d ( tr (_≤ b) min=a min≤b) ( tr (_≤ c) min=a min≤c) ( tr (_≤ d) min=a min≤d) @@ -456,7 +459,7 @@ module _ tr (x ≤_) (commutative-max b a) x≤maxba))) ( inr-disjunction ∘ inl-disjunction)) ( inl-disjunction ∘ inr-disjunction) - ( cover-closed-interval-4-first-smallest-Total-Order X b a d c + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order X b a d c ( tr (_≤ a) min=b min≤a) ( tr (_≤ d) min=b min≤d) ( tr (_≤ c) min=b min≤c) @@ -484,7 +487,7 @@ module _ tr (x ≤_) (commutative-max c a) x≤maxca))) ( inr-disjunction ∘ inr-disjunction)) ( inl-disjunction ∘ inl-disjunction) - ( cover-closed-interval-4-first-smallest-Total-Order X c a d b + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order X c a d b ( tr (_≤ a) min=c min≤a) ( tr (_≤ d) min=c min≤d) ( tr (_≤ b) min=c min≤b) @@ -521,7 +524,7 @@ module _ ( inl-disjunction ( tr (_≤ x) (commutative-min _ _) minba≤x , tr (x ≤_) (commutative-max _ _) x≤maxba))) - ( cover-closed-interval-4-first-smallest-Total-Order X d b c a + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order X d b c a ( tr (_≤ b) min=d min≤b) ( tr (_≤ c) min=d min≤c) ( tr (_≤ a) min=d min≤a) From a0edf6ea95a2b3594f75f4caaf33899ef10db333 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 14 Sep 2025 08:21:24 -0700 Subject: [PATCH 10/59] Progress --- ...closed-intervals-rational-numbers.lagda.md | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 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 1df8d5605c..e038c02888 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 @@ -114,33 +114,33 @@ mul-interval-ℚ [a,b] [c,d] = ## Properties -### Right multiplication of an interval by a rational number +### Mulltiplication of an interval by a rational number -#### Right multiplication of an interval by a negative rational number +#### Multiplication of an interval by a negative rational number ```agda -right-mul-ℚ⁻-interval-ℚ : interval-ℚ → ℚ⁻ → interval-ℚ -right-mul-ℚ⁻-interval-ℚ ((p , q) , p≤q) s⁻@(s , _) = +mul-interval-ℚ-ℚ⁻ : interval-ℚ → ℚ⁻ → interval-ℚ +mul-interval-ℚ-ℚ⁻ ((p , q) , p≤q) s⁻@(s , _) = ((q *ℚ s , p *ℚ s) , reverses-leq-right-mul-ℚ⁻ s⁻ _ _ p≤q) abstract - right-mul-ℚ⁻-is-in-interval-ℚ : + mul-is-in-interval-ℚ-ℚ⁻ : ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( right-mul-ℚ⁻-interval-ℚ [p,q] r) + ( mul-interval-ℚ-ℚ⁻ [p,q] r) ( s *ℚ rational-ℚ⁻ r) - right-mul-ℚ⁻-is-in-interval-ℚ + mul-is-in-interval-ℚ-ℚ⁻ ((p , q) , p≤q) r s (p≤s , s≤q) = ( reverses-leq-right-mul-ℚ⁻ r _ _ s≤q , reverses-leq-right-mul-ℚ⁻ r _ _ p≤s) - is-in-im-right-mul-ℚ⁻-is-in-right-mul-ℚ⁻-interval-ℚ : + is-in-im-mul-interval-ℚ-ℚ⁻-is-in-mul-interval-ℚ-ℚ⁻ : ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → is-in-interval-ℚ - ( right-mul-ℚ⁻-interval-ℚ [p,q] r) + ( mul-interval-ℚ-ℚ⁻ [p,q] r) ( s) → is-in-im-subtype (mul-ℚ' (rational-ℚ⁻ r)) (subtype-interval-ℚ [p,q]) s - is-in-im-right-mul-ℚ⁻-is-in-right-mul-ℚ⁻-interval-ℚ + is-in-im-mul-interval-ℚ-ℚ⁻-is-in-mul-interval-ℚ-ℚ⁻ ((p , q) , p≤q) r⁻@(r , _) s (qr≤s , s≤pr) = let r⁻¹ = inv-ℚ⁻ r⁻ in @@ -167,13 +167,13 @@ abstract is-interval-map-ℚ ( mul-ℚ' (rational-ℚ⁻ q)) ( [a,b]) - ( right-mul-ℚ⁻-interval-ℚ [a,b] q) + ( mul-interval-ℚ-ℚ⁻ [a,b] q) is-interval-map-left-mul-ℚ⁻ q [a,b] = - ( ind-Σ (right-mul-ℚ⁻-is-in-interval-ℚ [a,b] q) , - ind-Σ (is-in-im-right-mul-ℚ⁻-is-in-right-mul-ℚ⁻-interval-ℚ [a,b] q)) + ( ind-Σ (mul-is-in-interval-ℚ-ℚ⁻ [a,b] q) , + ind-Σ (is-in-im-mul-interval-ℚ-ℚ⁻-is-in-mul-interval-ℚ-ℚ⁻ [a,b] q)) ``` -#### Right multiplication of an interval by a positive rational number +#### Multiplication of an interval by a positive rational number ```agda right-mul-ℚ⁺-interval-ℚ : interval-ℚ → ℚ⁺ → interval-ℚ @@ -273,7 +273,7 @@ abstract right-mul-ℚ-interval-ℚ-is-negative-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → right-mul-ℚ-interval-ℚ [p,q] r = - right-mul-ℚ⁻-interval-ℚ [p,q] (r , neg-r) + mul-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) right-mul-ℚ-interval-ℚ-is-negative-ℚ [p,q]@((p , q) , p≤q) r neg-r = unordered-closed-interval-leq-ℚ' _ _ ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) @@ -311,7 +311,7 @@ abstract inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) ( right-mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) - ( right-mul-ℚ⁻-is-in-interval-ℚ [p,q] (r , neg-r) s s∈[p,q])) + ( mul-is-in-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) s s∈[p,q])) ( λ r=0 → binary-tr ( is-in-interval-ℚ) @@ -333,7 +333,7 @@ abstract image-right-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[min-pr-qr,max-pr-qr] = trichotomy-sign-ℚ r ( λ neg-r → - is-in-im-right-mul-ℚ⁻-is-in-right-mul-ℚ⁻-interval-ℚ + is-in-im-mul-interval-ℚ-ℚ⁻-is-in-mul-interval-ℚ-ℚ⁻ ( [p,q]) ( r , neg-r) ( s) @@ -370,19 +370,19 @@ abstract ind-Σ (image-right-mul-ℚ-is-in-interval-ℚ [a,b] q)) ``` -### Right multiplication by an interval +### Left multiplication of a rational number and an interval ```agda -right-mul-interval-ℚ : ℚ → interval-ℚ → interval-ℚ -right-mul-interval-ℚ a ((b , c) , b≤c) = +left-mul-ℚ-interval-ℚ : ℚ → interval-ℚ → interval-ℚ +left-mul-ℚ-interval-ℚ a ((b , c) , b≤c) = ( (min-ℚ (a *ℚ b) (a *ℚ c) , max-ℚ (a *ℚ b) (a *ℚ c)) , min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order _ _) abstract - commute-left-right-mul-interval-ℚ : + commute-left-left-mul-ℚ-interval-ℚ : ([p,q] : interval-ℚ) (r : ℚ) → - right-mul-ℚ-interval-ℚ [p,q] r = right-mul-interval-ℚ r [p,q] - commute-left-right-mul-interval-ℚ [p,q] r = + right-mul-ℚ-interval-ℚ [p,q] r = left-mul-ℚ-interval-ℚ r [p,q] + commute-left-left-mul-ℚ-interval-ℚ [p,q] r = eq-interval-ℚ _ _ ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) @@ -390,19 +390,19 @@ abstract right-mul-element-interval-ℚ : ([p,q] : interval-ℚ) → (r s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( right-mul-interval-ℚ r [p,q]) + ( left-mul-ℚ-interval-ℚ r [p,q]) ( r *ℚ s) right-mul-element-interval-ℚ [p,q] r s s∈[p,q] = binary-tr ( is-in-interval-ℚ) - ( commute-left-right-mul-interval-ℚ [p,q] r) + ( commute-left-left-mul-ℚ-interval-ℚ [p,q] r) ( commutative-mul-ℚ s r) ( right-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[p,q]) image-right-mul-element-interval-ℚ : ([p,q] : interval-ℚ) (r s : ℚ) → is-in-interval-ℚ - ( right-mul-interval-ℚ r [p,q]) + ( left-mul-ℚ-interval-ℚ r [p,q]) ( s) → is-in-im-subtype (mul-ℚ r) (subtype-interval-ℚ [p,q]) s image-right-mul-element-interval-ℚ [p,q] r s s∈[min-rp-rq,max-rp-rq] = @@ -412,17 +412,17 @@ abstract ( image-right-mul-ℚ-is-in-interval-ℚ [p,q] r s ( inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( commute-left-right-mul-interval-ℚ [p,q] r) + ( commute-left-left-mul-ℚ-interval-ℚ [p,q] r) ( s∈[min-rp-rq,max-rp-rq]))) is-interval-map-right-mul-ℚ : (q : ℚ) ([a,b] : interval-ℚ) → - is-interval-map-ℚ (mul-ℚ q) [a,b] (right-mul-interval-ℚ q [a,b]) + is-interval-map-ℚ (mul-ℚ q) [a,b] (left-mul-ℚ-interval-ℚ q [a,b]) is-interval-map-right-mul-ℚ q [a,b] = binary-tr ( λ f i → is-interval-map-ℚ f [a,b] i) ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) - ( commute-left-right-mul-interval-ℚ [a,b] q) + ( commute-left-left-mul-ℚ-interval-ℚ [a,b] q) ( is-interval-map-left-mul-ℚ q [a,b]) ``` From 02023937e5d42d01e581999600bb6d4c3a85125c Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 14 Sep 2025 10:12:13 -0700 Subject: [PATCH 11/59] Renamings --- ...closed-intervals-rational-numbers.lagda.md | 275 +++++++++--------- .../closed-intervals-total-orders.lagda.md | 28 +- 2 files changed, 163 insertions(+), 140 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 e038c02888..39cd49b975 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 @@ -72,49 +72,36 @@ only the even elements. ## Definition ```agda -mul-right-interval-ℚ : ℚ → interval-ℚ → interval-ℚ -mul-right-interval-ℚ a ((b , c) , _) = +mul-interval-ℚ-ℚ : ℚ → interval-ℚ → interval-ℚ +mul-interval-ℚ-ℚ a ((b , c) , _) = unordered-interval-ℚ (a *ℚ b) (a *ℚ c) -mul-left-interval-ℚ : interval-ℚ → ℚ → interval-ℚ -mul-left-interval-ℚ ((a , b) , _) c = +mul-ℚ-interval-ℚ : interval-ℚ → ℚ → interval-ℚ +mul-ℚ-interval-ℚ ((a , b) , _) c = unordered-interval-ℚ (a *ℚ c) (b *ℚ c) +mul-interval-ℚ : + interval-ℚ → interval-ℚ → interval-ℚ +mul-interval-ℚ ((a , b) , _) ((c , d) , _) = + minimal-closed-interval-cover-of-four-elements-Total-Order + ( ℚ-Total-Order) + ( a *ℚ c) + ( a *ℚ d) + ( b *ℚ c) + ( b *ℚ d) + lower-bound-mul-interval-ℚ : interval-ℚ → interval-ℚ → ℚ -lower-bound-mul-interval-ℚ ((a , b) , _) ((c , d) , _) = - min-ℚ (min-ℚ (a *ℚ c) (a *ℚ d)) (min-ℚ (b *ℚ c) (b *ℚ d)) +lower-bound-mul-interval-ℚ [a,b] [c,d] = + lower-bound-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) upper-bound-mul-interval-ℚ : interval-ℚ → interval-ℚ → ℚ -upper-bound-mul-interval-ℚ ((a , b) , _) ((c , d) , _) = - max-ℚ (max-ℚ (a *ℚ c) (a *ℚ d)) (max-ℚ (b *ℚ c) (b *ℚ d)) - -abstract - lower-bound-leq-upper-bound-mul-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - leq-ℚ - ( lower-bound-mul-interval-ℚ [a,b] [c,d]) - ( upper-bound-mul-interval-ℚ [a,b] [c,d]) - lower-bound-leq-upper-bound-mul-interval-ℚ ((a , b) , _) ((c , d) , _) = - let min≤max = min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order - in - transitive-leq-ℚ - ( min-ℚ (min-ℚ (a *ℚ c) (a *ℚ d)) (min-ℚ (b *ℚ c) (b *ℚ d))) - ( max-ℚ (min-ℚ (a *ℚ c) (a *ℚ d)) (min-ℚ (b *ℚ c) (b *ℚ d))) - ( max-ℚ (max-ℚ (a *ℚ c) (a *ℚ d)) (max-ℚ (b *ℚ c) (b *ℚ d))) - ( max-leq-leq-ℚ _ _ _ _ (min≤max _ _) (min≤max _ _)) - ( min≤max _ _) - -mul-interval-ℚ : - interval-ℚ → interval-ℚ → interval-ℚ -mul-interval-ℚ [a,b] [c,d] = - ( ( lower-bound-mul-interval-ℚ [a,b] [c,d] , - upper-bound-mul-interval-ℚ [a,b] [c,d]) , - lower-bound-leq-upper-bound-mul-interval-ℚ [a,b] [c,d]) +upper-bound-mul-interval-ℚ [a,b] [c,d] = + upper-bound-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) ``` ## Properties -### Mulltiplication of an interval by a rational number +### Multiplication of an interval by a rational number #### Multiplication of an interval by a negative rational number @@ -134,13 +121,13 @@ abstract ( reverses-leq-right-mul-ℚ⁻ r _ _ s≤q , reverses-leq-right-mul-ℚ⁻ r _ _ p≤s) - is-in-im-mul-interval-ℚ-ℚ⁻-is-in-mul-interval-ℚ-ℚ⁻ : + is-in-im-is-in-mul-interval-ℚ-ℚ⁻ : ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → is-in-interval-ℚ ( mul-interval-ℚ-ℚ⁻ [p,q] r) ( s) → is-in-im-subtype (mul-ℚ' (rational-ℚ⁻ r)) (subtype-interval-ℚ [p,q]) s - is-in-im-mul-interval-ℚ-ℚ⁻-is-in-mul-interval-ℚ-ℚ⁻ + is-in-im-is-in-mul-interval-ℚ-ℚ⁻ ((p , q) , p≤q) r⁻@(r , _) s (qr≤s , s≤pr) = let r⁻¹ = inv-ℚ⁻ r⁻ in @@ -162,42 +149,42 @@ abstract ap-mul-ℚ refl (left-inverse-law-mul-ℚ⁻ r⁻) ∙ right-unit-law-mul-ℚ s) - is-interval-map-left-mul-ℚ⁻ : + is-interval-map-mul-ℚ⁻ : (q : ℚ⁻) ([a,b] : interval-ℚ) → is-interval-map-ℚ ( mul-ℚ' (rational-ℚ⁻ q)) ( [a,b]) ( mul-interval-ℚ-ℚ⁻ [a,b] q) - is-interval-map-left-mul-ℚ⁻ q [a,b] = + is-interval-map-mul-ℚ⁻ q [a,b] = ( ind-Σ (mul-is-in-interval-ℚ-ℚ⁻ [a,b] q) , - ind-Σ (is-in-im-mul-interval-ℚ-ℚ⁻-is-in-mul-interval-ℚ-ℚ⁻ [a,b] q)) + ind-Σ (is-in-im-is-in-mul-interval-ℚ-ℚ⁻ [a,b] q)) ``` #### Multiplication of an interval by a positive rational number ```agda -right-mul-ℚ⁺-interval-ℚ : interval-ℚ → ℚ⁺ → interval-ℚ -right-mul-ℚ⁺-interval-ℚ ((p , q) , p≤q) s⁺@(s , _) = +mul-interval-ℚ-ℚ⁺ : interval-ℚ → ℚ⁺ → interval-ℚ +mul-interval-ℚ-ℚ⁺ ((p , q) , p≤q) s⁺@(s , _) = ((p *ℚ s , q *ℚ s) , preserves-leq-right-mul-ℚ⁺ s⁺ _ _ p≤q) abstract - right-mul-ℚ⁺-is-in-interval-ℚ : + mul-is-in-interval-ℚ-ℚ⁺ : ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( right-mul-ℚ⁺-interval-ℚ [p,q] r) + ( mul-interval-ℚ-ℚ⁺ [p,q] r) ( s *ℚ rational-ℚ⁺ r) - right-mul-ℚ⁺-is-in-interval-ℚ + mul-is-in-interval-ℚ-ℚ⁺ ((p , q) , p≤q) r s (p≤s , s≤q) = ( preserves-leq-right-mul-ℚ⁺ r _ _ p≤s , preserves-leq-right-mul-ℚ⁺ r _ _ s≤q) - is-in-im-right-mul-ℚ⁺-is-in-right-mul-ℚ⁺-interval-ℚ : + is-in-im-is-in-mul-interval-ℚ-ℚ⁺ : ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → is-in-interval-ℚ - ( right-mul-ℚ⁺-interval-ℚ [p,q] r) + ( mul-interval-ℚ-ℚ⁺ [p,q] r) ( s) → is-in-im-subtype (mul-ℚ' (rational-ℚ⁺ r)) (subtype-interval-ℚ [p,q]) s - is-in-im-right-mul-ℚ⁺-is-in-right-mul-ℚ⁺-interval-ℚ + is-in-im-is-in-mul-interval-ℚ-ℚ⁺ ((p , q) , p≤q) r⁺@(r , _) s (pr≤s , s≤qr) = let r⁻¹ = inv-ℚ⁺ r⁺ in @@ -224,72 +211,67 @@ abstract is-interval-map-ℚ ( mul-ℚ' (rational-ℚ⁺ q)) ( [a,b]) - ( right-mul-ℚ⁺-interval-ℚ [a,b] q) + ( mul-interval-ℚ-ℚ⁺ [a,b] q) is-interval-map-left-mul-ℚ⁺ q [a,b] = - ( ind-Σ (right-mul-ℚ⁺-is-in-interval-ℚ [a,b] q) , - ind-Σ (is-in-im-right-mul-ℚ⁺-is-in-right-mul-ℚ⁺-interval-ℚ [a,b] q)) + ( ind-Σ (mul-is-in-interval-ℚ-ℚ⁺ [a,b] q) , + ind-Σ (is-in-im-is-in-mul-interval-ℚ-ℚ⁺ [a,b] q)) ``` -#### Right multiplication of an interval by zero +#### Multiplication of an interval by zero ```agda abstract - is-in-im-right-mul-zero-is-in-zero-zero-interval-ℚ : + is-in-im-mul-is-in-zero-zero-interval-ℚ : ([p,q] : interval-ℚ) → (s : ℚ) → is-in-interval-ℚ ( zero-zero-interval-ℚ) ( s) → is-in-im-subtype (mul-ℚ' zero-ℚ) (subtype-interval-ℚ [p,q]) s - is-in-im-right-mul-zero-is-in-zero-zero-interval-ℚ + is-in-im-mul-is-in-zero-zero-interval-ℚ ((p , q) , p≤q) s (0≤s , s≤0) = intro-exists ( p , refl-leq-ℚ p , p≤q) ( right-zero-law-mul-ℚ p ∙ antisymmetric-leq-ℚ _ _ 0≤s s≤0) - is-interval-map-left-mul-zero-ℚ : + is-interval-map-mul-zero-ℚ : ([a,b] : interval-ℚ) → is-interval-map-ℚ ( mul-ℚ' zero-ℚ) ( [a,b]) ( zero-zero-interval-ℚ) - is-interval-map-left-mul-zero-ℚ [a,b] = + is-interval-map-mul-zero-ℚ [a,b] = ( ( λ r → inv-tr ( is-in-interval-ℚ zero-zero-interval-ℚ) ( right-zero-law-mul-ℚ _) ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) , - ind-Σ (is-in-im-right-mul-zero-is-in-zero-zero-interval-ℚ [a,b])) + ind-Σ (is-in-im-mul-is-in-zero-zero-interval-ℚ [a,b])) ``` -#### By any rational number +#### Multiplication of an interval by any rational number ```agda -right-mul-ℚ-interval-ℚ : interval-ℚ → ℚ → interval-ℚ -right-mul-ℚ-interval-ℚ ((a , b) , a≤b) c = - ( (min-ℚ (a *ℚ c) (b *ℚ c) , max-ℚ (a *ℚ c) (b *ℚ c)) , - min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order _ _) - abstract - right-mul-ℚ-interval-ℚ-is-negative-ℚ : + mul-ℚ-interval-ℚ-is-negative-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → - right-mul-ℚ-interval-ℚ [p,q] r = + mul-ℚ-interval-ℚ [p,q] r = mul-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) - right-mul-ℚ-interval-ℚ-is-negative-ℚ [p,q]@((p , q) , p≤q) r neg-r = + mul-ℚ-interval-ℚ-is-negative-ℚ [p,q]@((p , q) , p≤q) r neg-r = unordered-closed-interval-leq-ℚ' _ _ ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) - right-mul-ℚ-interval-ℚ-is-positive-ℚ : + mul-ℚ-interval-ℚ-is-positive-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (pos-r : is-positive-ℚ r) → - right-mul-ℚ-interval-ℚ [p,q] r = - right-mul-ℚ⁺-interval-ℚ [p,q] (r , pos-r) - right-mul-ℚ-interval-ℚ-is-positive-ℚ [p,q]@((p , q) , p≤q) r pos-r = + mul-ℚ-interval-ℚ [p,q] r = + mul-interval-ℚ-ℚ⁺ [p,q] (r , pos-r) + mul-ℚ-interval-ℚ-is-positive-ℚ [p,q]@((p , q) , p≤q) r pos-r = unordered-closed-interval-leq-ℚ _ _ ( preserves-leq-right-mul-ℚ⁺ (r , pos-r) _ _ p≤q) - right-mul-ℚ-interval-ℚ-is-zero-ℚ : + mul-ℚ-interval-ℚ-is-zero-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (is-zero-r : is-zero-ℚ r) → - right-mul-ℚ-interval-ℚ [p,q] r = zero-zero-interval-ℚ - right-mul-ℚ-interval-ℚ-is-zero-ℚ ((p , q) , p≤q) _ refl = + mul-ℚ-interval-ℚ [p,q] r = zero-zero-interval-ℚ + mul-ℚ-interval-ℚ-is-zero-ℚ ((p , q) , p≤q) _ refl = eq-interval-ℚ _ _ ( ap-min-ℚ ( right-zero-law-mul-ℚ _) @@ -300,150 +282,145 @@ abstract ( right-zero-law-mul-ℚ _) ∙ idempotent-max-ℚ zero-ℚ) - right-mul-ℚ-is-in-interval-ℚ : + mul-is-in-interval-ℚ-ℚ : ([p,q] : interval-ℚ) → (r s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( right-mul-ℚ-interval-ℚ [p,q] r) + ( mul-ℚ-interval-ℚ [p,q] r) ( s *ℚ r) - right-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[p,q] = + mul-is-in-interval-ℚ-ℚ [p,q] r s s∈[p,q] = trichotomy-sign-ℚ r ( λ neg-r → inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) - ( right-mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) + ( mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) ( mul-is-in-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) s s∈[p,q])) ( λ r=0 → binary-tr ( is-in-interval-ℚ) - ( inv (right-mul-ℚ-interval-ℚ-is-zero-ℚ [p,q] r r=0)) + ( inv (mul-ℚ-interval-ℚ-is-zero-ℚ [p,q] r r=0)) ( inv (ap-mul-ℚ refl r=0 ∙ right-zero-law-mul-ℚ s)) ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) ( λ pos-r → inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) - ( right-mul-ℚ-interval-ℚ-is-positive-ℚ [p,q] r pos-r) - ( right-mul-ℚ⁺-is-in-interval-ℚ [p,q] (r , pos-r) s s∈[p,q])) + ( mul-ℚ-interval-ℚ-is-positive-ℚ [p,q] r pos-r) + ( mul-is-in-interval-ℚ-ℚ⁺ [p,q] (r , pos-r) s s∈[p,q])) - image-right-mul-ℚ-is-in-interval-ℚ : + is-in-im-mul-is-in-interval-ℚ-ℚ : ([p,q] : interval-ℚ) (r s : ℚ) → is-in-interval-ℚ - ( right-mul-ℚ-interval-ℚ [p,q] r) + ( mul-ℚ-interval-ℚ [p,q] r) ( s) → is-in-im-subtype (mul-ℚ' r) (subtype-interval-ℚ [p,q]) s - image-right-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[min-pr-qr,max-pr-qr] = + is-in-im-mul-is-in-interval-ℚ-ℚ [p,q] r s s∈[min-pr-qr,max-pr-qr] = trichotomy-sign-ℚ r ( λ neg-r → - is-in-im-mul-interval-ℚ-ℚ⁻-is-in-mul-interval-ℚ-ℚ⁻ + is-in-im-is-in-mul-interval-ℚ-ℚ⁻ ( [p,q]) ( r , neg-r) ( s) ( tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( right-mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) + ( mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) ( s∈[min-pr-qr,max-pr-qr]))) ( λ r=0 → inv-tr ( λ t → is-in-im-subtype (mul-ℚ' t) (subtype-interval-ℚ [p,q]) s) ( r=0) - ( is-in-im-right-mul-zero-is-in-zero-zero-interval-ℚ + ( is-in-im-mul-is-in-zero-zero-interval-ℚ ( [p,q]) ( s) ( tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( right-mul-ℚ-interval-ℚ-is-zero-ℚ [p,q] r r=0) + ( mul-ℚ-interval-ℚ-is-zero-ℚ [p,q] r r=0) ( s∈[min-pr-qr,max-pr-qr])))) ( λ pos-r → - is-in-im-right-mul-ℚ⁺-is-in-right-mul-ℚ⁺-interval-ℚ + is-in-im-is-in-mul-interval-ℚ-ℚ⁺ ( [p,q]) ( r , pos-r) ( s) ( tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( right-mul-ℚ-interval-ℚ-is-positive-ℚ [p,q] r pos-r) + ( mul-ℚ-interval-ℚ-is-positive-ℚ [p,q] r pos-r) ( s∈[min-pr-qr,max-pr-qr]))) - is-interval-map-left-mul-ℚ : + is-interval-map-mul-ℚ-interval-ℚ : (q : ℚ) ([a,b] : interval-ℚ) → - is-interval-map-ℚ (mul-ℚ' q) [a,b] (right-mul-ℚ-interval-ℚ [a,b] q) - is-interval-map-left-mul-ℚ q [a,b] = - ( ind-Σ (right-mul-ℚ-is-in-interval-ℚ [a,b] q) , - ind-Σ (image-right-mul-ℚ-is-in-interval-ℚ [a,b] q)) + is-interval-map-ℚ (mul-ℚ' q) [a,b] (mul-ℚ-interval-ℚ [a,b] q) + is-interval-map-mul-ℚ-interval-ℚ q [a,b] = + ( ind-Σ (mul-is-in-interval-ℚ-ℚ [a,b] q) , + ind-Σ (is-in-im-mul-is-in-interval-ℚ-ℚ [a,b] q)) ``` -### Left multiplication of a rational number and an interval +### Multiplication of a rational number and an interval ```agda -left-mul-ℚ-interval-ℚ : ℚ → interval-ℚ → interval-ℚ -left-mul-ℚ-interval-ℚ a ((b , c) , b≤c) = - ( (min-ℚ (a *ℚ b) (a *ℚ c) , max-ℚ (a *ℚ b) (a *ℚ c)) , - min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order _ _) - abstract - commute-left-left-mul-ℚ-interval-ℚ : + commute-mul-ℚ-interval-ℚ : ([p,q] : interval-ℚ) (r : ℚ) → - right-mul-ℚ-interval-ℚ [p,q] r = left-mul-ℚ-interval-ℚ r [p,q] - commute-left-left-mul-ℚ-interval-ℚ [p,q] r = + mul-ℚ-interval-ℚ [p,q] r = mul-interval-ℚ-ℚ r [p,q] + commute-mul-ℚ-interval-ℚ [p,q] r = eq-interval-ℚ _ _ ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - right-mul-element-interval-ℚ : + mul-ℚ-is-in-interval-ℚ : ([p,q] : interval-ℚ) → (r s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( left-mul-ℚ-interval-ℚ r [p,q]) + ( mul-interval-ℚ-ℚ r [p,q]) ( r *ℚ s) - right-mul-element-interval-ℚ [p,q] r s s∈[p,q] = + mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[p,q] = binary-tr ( is-in-interval-ℚ) - ( commute-left-left-mul-ℚ-interval-ℚ [p,q] r) + ( commute-mul-ℚ-interval-ℚ [p,q] r) ( commutative-mul-ℚ s r) - ( right-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[p,q]) + ( mul-is-in-interval-ℚ-ℚ [p,q] r s s∈[p,q]) - image-right-mul-element-interval-ℚ : + is-in-im-mul-ℚ-is-in-interval-ℚ : ([p,q] : interval-ℚ) (r s : ℚ) → is-in-interval-ℚ - ( left-mul-ℚ-interval-ℚ r [p,q]) + ( mul-interval-ℚ-ℚ r [p,q]) ( s) → is-in-im-subtype (mul-ℚ r) (subtype-interval-ℚ [p,q]) s - image-right-mul-element-interval-ℚ [p,q] r s s∈[min-rp-rq,max-rp-rq] = + is-in-im-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[min-rp-rq,max-rp-rq] = tr ( λ f → is-in-im-subtype f (subtype-interval-ℚ [p,q]) s) ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) - ( image-right-mul-ℚ-is-in-interval-ℚ [p,q] r s + ( is-in-im-mul-is-in-interval-ℚ-ℚ [p,q] r s ( inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( commute-left-left-mul-ℚ-interval-ℚ [p,q] r) + ( commute-mul-ℚ-interval-ℚ [p,q] r) ( s∈[min-rp-rq,max-rp-rq]))) - is-interval-map-right-mul-ℚ : + is-interval-map-mul-interval-ℚ-ℚ : (q : ℚ) ([a,b] : interval-ℚ) → - is-interval-map-ℚ (mul-ℚ q) [a,b] (left-mul-ℚ-interval-ℚ q [a,b]) - is-interval-map-right-mul-ℚ q [a,b] = + is-interval-map-ℚ (mul-ℚ q) [a,b] (mul-interval-ℚ-ℚ q [a,b]) + is-interval-map-mul-interval-ℚ-ℚ q [a,b] = binary-tr ( λ f i → is-interval-map-ℚ f [a,b] i) ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) - ( commute-left-left-mul-ℚ-interval-ℚ [a,b] q) - ( is-interval-map-left-mul-ℚ q [a,b]) + ( commute-mul-ℚ-interval-ℚ [a,b] q) + ( is-interval-map-mul-ℚ-interval-ℚ q [a,b]) ``` ### Multiplication of two closed intervals ```agda abstract - mul-elements-intervals-ℚ : + is-in-mul-interval-mul-is-in-interval-ℚ : ([a,b] [c,d] : interval-ℚ) (p q : ℚ) → is-in-interval-ℚ [a,b] p → is-in-interval-ℚ [c,d] q → is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) (p *ℚ q) - mul-elements-intervals-ℚ + is-in-mul-interval-mul-is-in-interval-ℚ [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) p q p∈[a,b]@(a≤p , p≤b) q∈[c,d]@(c≤q , q≤d) = let (min-aq-bq≤pq , pq≤max-aq-bq) = - right-mul-ℚ-is-in-interval-ℚ [a,b] q p p∈[a,b] + mul-is-in-interval-ℚ-ℚ [a,b] q p p∈[a,b] (min-ac-ad≤aq , aq≤max-ac-ad) = - right-mul-element-interval-ℚ [c,d] a q q∈[c,d] + mul-ℚ-is-in-interval-ℚ [c,d] a q q∈[c,d] (min-bc-bd≤bq , bq≤max-bc-bd) = - right-mul-element-interval-ℚ [c,d] b q q∈[c,d] + mul-ℚ-is-in-interval-ℚ [c,d] b q q∈[c,d] in ( transitive-leq-ℚ ( lower-bound-mul-interval-ℚ [a,b] [c,d]) @@ -458,7 +435,7 @@ abstract ( max-leq-leq-ℚ _ _ _ _ aq≤max-ac-ad bq≤max-bc-bd) ( pq≤max-aq-bq)) - image-mul-elements-intervals-ℚ : + is-in-minkowski-product-is-in-mul-interval-ℚ : ([a,b] [c,d] : interval-ℚ) → (q : ℚ) → is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) q → is-in-subtype @@ -467,7 +444,7 @@ abstract ( subtype-interval-ℚ [a,b]) ( subtype-interval-ℚ [c,d])) ( q) - image-mul-elements-intervals-ℚ + is-in-minkowski-product-is-in-mul-interval-ℚ [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) x x∈range = let motive = @@ -480,28 +457,28 @@ abstract case-[ac,ad] x∈[ac,ad] = do ((q , c≤q , q≤d) , aq=x) ← - image-right-mul-element-interval-ℚ [c,d] a x x∈[ac,ad] + is-in-im-mul-ℚ-is-in-interval-ℚ [c,d] a x x∈[ac,ad] intro-exists ( a , q) ( (refl-leq-ℚ a , a≤b) , (c≤q , q≤d) , inv aq=x) case-[ac,bc] x∈[ac,bc] = do ((p , a≤p , p≤b) , pc=x) ← - image-right-mul-ℚ-is-in-interval-ℚ [a,b] c x x∈[ac,bc] + is-in-im-mul-is-in-interval-ℚ-ℚ [a,b] c x x∈[ac,bc] intro-exists ( p , c) ( (a≤p , p≤b) , (refl-leq-ℚ c , c≤d) , inv pc=x) case-[bc,bd] x∈[bc,bd] = do ((q , c≤q , q≤d) , bq=x) ← - image-right-mul-element-interval-ℚ [c,d] b x x∈[bc,bd] + is-in-im-mul-ℚ-is-in-interval-ℚ [c,d] b x x∈[bc,bd] intro-exists ( b , q) ( (a≤b , refl-leq-ℚ b) , (c≤q , q≤d) , inv bq=x) case-[ad,bd] x∈[ad,bd] = do ((p , a≤p , p≤b) , pd=x) ← - image-right-mul-ℚ-is-in-interval-ℚ [a,b] d x x∈[ad,bd] + is-in-im-mul-is-in-interval-ℚ-ℚ [a,b] d x x∈[ad,bd] intro-exists ( p , d) ( (a≤p , p≤b) , (c≤d , refl-leq-ℚ d) , inv pd=x) @@ -538,9 +515,15 @@ abstract inv-tr ( is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d])) ( x=pq) - ( mul-elements-intervals-ℚ [a,b] [c,d] p q p∈[a,b] q∈[c,d])) + ( is-in-mul-interval-mul-is-in-interval-ℚ + ( [a,b]) + ( [c,d]) + ( p) + ( q) + ( p∈[a,b]) + ( q∈[c,d]))) pr2 (has-same-elements-minkowski-mul-interval-ℚ [a,b] [c,d] x) = - image-mul-elements-intervals-ℚ [a,b] [c,d] x + is-in-minkowski-product-is-in-mul-interval-ℚ [a,b] [c,d] x eq-minkowski-mul-interval-ℚ : ([a,b] [c,d] : interval-ℚ) → @@ -577,24 +560,34 @@ module _ ( x)) in do ((p , q) , p∈[a,b][c,d] , q∈[e,f] , x=pq) ← - image-mul-elements-intervals-ℚ + is-in-minkowski-product-is-in-mul-interval-ℚ ( mul-interval-ℚ [a,b] [c,d]) ( [e,f]) ( x) ( x∈<[a,b][c,d]>[e,f]) ((r , s) , r∈[a,b] , s∈[c,d] , p=rs) ← - image-mul-elements-intervals-ℚ [a,b] [c,d] p p∈[a,b][c,d] + is-in-minkowski-product-is-in-mul-interval-ℚ + ( [a,b]) + ( [c,d]) + ( p) + ( p∈[a,b][c,d]) inv-tr ( is-in-interval-ℚ ( mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f]))) ( x=pq ∙ ap-mul-ℚ p=rs refl ∙ associative-mul-ℚ _ _ _) - ( mul-elements-intervals-ℚ + ( is-in-mul-interval-mul-is-in-interval-ℚ ( [a,b]) ( mul-interval-ℚ [c,d] [e,f]) ( r) ( s *ℚ q) ( r∈[a,b]) - ( mul-elements-intervals-ℚ [c,d] [e,f] s q s∈[c,d] q∈[e,f])) + ( is-in-mul-interval-mul-is-in-interval-ℚ + ( [c,d]) + ( [e,f]) + ( s) + ( q) + ( s∈[c,d]) + ( q∈[e,f]))) pr2 (has-same-elements-associative-mul-interval-ℚ x) x∈[a,b]<[c,d][e,f]> = let open @@ -604,23 +597,33 @@ module _ ( x)) in do ((p , q) , p∈[a,b] , q∈[c,d][e,f] , x=pq) ← - image-mul-elements-intervals-ℚ + is-in-minkowski-product-is-in-mul-interval-ℚ ( [a,b]) ( mul-interval-ℚ [c,d] [e,f]) ( x) ( x∈[a,b]<[c,d][e,f]>) ((r , s) , r∈[c,d] , s∈[e,f] , q=rs) ← - image-mul-elements-intervals-ℚ [c,d] [e,f] q q∈[c,d][e,f] + is-in-minkowski-product-is-in-mul-interval-ℚ + ( [c,d]) + ( [e,f]) + ( q) + ( q∈[c,d][e,f]) inv-tr ( is-in-interval-ℚ ( mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f])) ( x=pq ∙ ap-mul-ℚ refl q=rs ∙ inv (associative-mul-ℚ _ _ _)) - ( mul-elements-intervals-ℚ + ( is-in-mul-interval-mul-is-in-interval-ℚ ( mul-interval-ℚ [a,b] [c,d]) ( [e,f]) ( p *ℚ r) ( s) - ( mul-elements-intervals-ℚ [a,b] [c,d] p r p∈[a,b] r∈[c,d]) + ( is-in-mul-interval-mul-is-in-interval-ℚ + ( [a,b]) + ( [c,d]) + ( p) + ( r) + ( p∈[a,b]) + ( r∈[c,d])) ( s∈[e,f])) associative-mul-interval-ℚ : diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index be56033c53..a3f9ec226c 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -443,7 +443,12 @@ module _ map-disjunction ( id) ( inl-disjunction) - ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order X a b c d + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + ( X) + ( a) + ( b) + ( c) + ( d) ( tr (_≤ b) min=a min≤b) ( tr (_≤ c) min=a min≤c) ( tr (_≤ d) min=a min≤d) @@ -459,7 +464,12 @@ module _ tr (x ≤_) (commutative-max b a) x≤maxba))) ( inr-disjunction ∘ inl-disjunction)) ( inl-disjunction ∘ inr-disjunction) - ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order X b a d c + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + ( X) + ( b) + ( a) + ( d) + ( c) ( tr (_≤ a) min=b min≤a) ( tr (_≤ d) min=b min≤d) ( tr (_≤ c) min=b min≤c) @@ -487,7 +497,12 @@ module _ tr (x ≤_) (commutative-max c a) x≤maxca))) ( inr-disjunction ∘ inr-disjunction)) ( inl-disjunction ∘ inl-disjunction) - ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order X c a d b + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + ( X) + ( c) + ( a) + ( d) + ( b) ( tr (_≤ a) min=c min≤a) ( tr (_≤ d) min=c min≤d) ( tr (_≤ b) min=c min≤b) @@ -524,7 +539,12 @@ module _ ( inl-disjunction ( tr (_≤ x) (commutative-min _ _) minba≤x , tr (x ≤_) (commutative-max _ _) x≤maxba))) - ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order X d b c a + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + ( X) + ( d) + ( b) + ( c) + ( a) ( tr (_≤ b) min=d min≤b) ( tr (_≤ c) min=d min≤c) ( tr (_≤ a) min=d min≤a) From ab17ce86f24b477c6b1c2b78e4320347c6f2aa29 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sun, 14 Sep 2025 12:02:58 -0700 Subject: [PATCH 12/59] Split out nonnegative rational operations --- src/elementary-number-theory.lagda.md | 4 + .../absolute-value-rational-numbers.lagda.md | 3 + ...tion-nonnegative-rational-numbers.lagda.md | 54 +++++++++ .../addition-rational-numbers.lagda.md | 6 +- .../distance-rational-numbers.lagda.md | 3 + ...lity-nonnegative-rational-numbers.lagda.md | 38 +++++++ .../maximum-rational-numbers.lagda.md | 2 +- .../minimum-rational-numbers.lagda.md | 2 +- ...tion-nonnegative-rational-numbers.lagda.md | 67 +++++++++++ .../nonnegative-rational-numbers.lagda.md | 105 ------------------ .../squares-rational-numbers.lagda.md | 3 +- ...lity-nonnegative-rational-numbers.lagda.md | 49 ++++++++ .../metric-space-of-rational-numbers.lagda.md | 1 + .../nonnegative-real-numbers.lagda.md | 2 + 14 files changed, 228 insertions(+), 111 deletions(-) create mode 100644 src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/strict-inequality-nonnegative-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index da0bfbea2b..0ff0949de8 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -15,6 +15,7 @@ open import elementary-number-theory.ackermann-function public open import elementary-number-theory.addition-integer-fractions public open import elementary-number-theory.addition-integers public open import elementary-number-theory.addition-natural-numbers public +open import elementary-number-theory.addition-nonnegative-rational-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public @@ -94,6 +95,7 @@ open import elementary-number-theory.inequality-conatural-numbers public open import elementary-number-theory.inequality-integer-fractions public open import elementary-number-theory.inequality-integers public open import elementary-number-theory.inequality-natural-numbers public +open import elementary-number-theory.inequality-nonnegative-rational-numbers public open import elementary-number-theory.inequality-rational-numbers public open import elementary-number-theory.inequality-standard-finite-types public open import elementary-number-theory.infinite-conatural-numbers public @@ -122,6 +124,7 @@ open import elementary-number-theory.multiplication-integer-fractions public open import elementary-number-theory.multiplication-integers 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-nonnegative-rational-numbers public open import elementary-number-theory.multiplication-positive-and-negative-integers public open import elementary-number-theory.multiplication-rational-numbers public open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers public @@ -181,6 +184,7 @@ open import elementary-number-theory.stirling-numbers-of-the-second-kind public open import elementary-number-theory.strict-inequality-integer-fractions public open import elementary-number-theory.strict-inequality-integers public open import elementary-number-theory.strict-inequality-natural-numbers public +open import elementary-number-theory.strict-inequality-nonnegative-rational-numbers public open import elementary-number-theory.strict-inequality-rational-numbers public open import elementary-number-theory.strict-inequality-standard-finite-types public open import elementary-number-theory.strictly-ordered-pairs-of-natural-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 0bd2213ff7..bb3cf3e048 100644 --- a/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md +++ b/src/elementary-number-theory/absolute-value-rational-numbers.lagda.md @@ -9,9 +9,12 @@ module elementary-number-theory.absolute-value-rational-numbers where
Imports ```agda +open import elementary-number-theory.addition-nonnegative-rational-numbers open import elementary-number-theory.addition-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.rational-numbers diff --git a/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md new file mode 100644 index 0000000000..22f614aab8 --- /dev/null +++ b/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md @@ -0,0 +1,54 @@ +# Addition on nonnegative rational numbers + +```agda +module elementary-number-theory.addition-nonnegative-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.nonnegative-integer-fractions +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.rational-numbers + +open import foundation.dependent-pair-types +``` + +
+ +## Idea + +The +{{#concept "sum" WDID=Q32043 WD="addition" Disambiguation="nonnegative rational numbers" Agda=add-ℚ⁰⁺}} +of two +[nonnegative rational numbers](elementary-number-theory.nonnegative-rational-numbers.md) +is their [sum](elementary-number-theory.addition-rational-numbers.md) as +[rational numbers](elementary-number-theory.rational-numbers.md), and is itself +nonnegative. + +## Definition + +```agda +opaque + unfolding add-ℚ + + is-nonnegative-add-ℚ : + (p q : ℚ) → is-nonnegative-ℚ p → is-nonnegative-ℚ q → + is-nonnegative-ℚ (p +ℚ q) + is-nonnegative-add-ℚ p q nonneg-p nonneg-q = + is-nonnegative-rational-fraction-ℤ + ( is-nonnegative-add-fraction-ℤ + { fraction-ℚ p} + { fraction-ℚ q} + ( nonneg-p) + ( nonneg-q)) + +add-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ +add-ℚ⁰⁺ (p , nonneg-p) (q , nonneg-q) = + ( p +ℚ q , is-nonnegative-add-ℚ p q nonneg-p nonneg-q) + +infixl 35 _+ℚ⁰⁺_ +_+ℚ⁰⁺_ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ +_+ℚ⁰⁺_ = add-ℚ⁰⁺ +``` diff --git a/src/elementary-number-theory/addition-rational-numbers.lagda.md b/src/elementary-number-theory/addition-rational-numbers.lagda.md index fa2bf6f137..a36bedf713 100644 --- a/src/elementary-number-theory/addition-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-rational-numbers.lagda.md @@ -33,9 +33,9 @@ open import foundation.sections ## Idea We introduce -{{#concept "addition" Disambiguation="rational numbers" Agda=add-ℚ}} on the -[rational numbers](elementary-number-theory.rational-numbers.md) and derive its -basic properties. +{{#concept "addition" WDID=Q32043 WD="addition" Disambiguation="rational numbers" Agda=add-ℚ}} +on the [rational numbers](elementary-number-theory.rational-numbers.md) and +derive its basic properties. ## Definition diff --git a/src/elementary-number-theory/distance-rational-numbers.lagda.md b/src/elementary-number-theory/distance-rational-numbers.lagda.md index 2688c69638..8d41ac3325 100644 --- a/src/elementary-number-theory/distance-rational-numbers.lagda.md +++ b/src/elementary-number-theory/distance-rational-numbers.lagda.md @@ -10,12 +10,15 @@ module elementary-number-theory.distance-rational-numbers where ```agda open import elementary-number-theory.absolute-value-rational-numbers +open import elementary-number-theory.addition-nonnegative-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.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-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 diff --git a/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md new file mode 100644 index 0000000000..c65adf4d07 --- /dev/null +++ b/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md @@ -0,0 +1,38 @@ +# Inequality on the nonnegative rational numbers + +```agda +module elementary-number-theory.inequality-nonnegative-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.nonnegative-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.propositions +open import foundation.universe-levels +``` + +
+ +## Idea + +The +{{#concept "standard ordering" Disambiguation="nonnegative rational numbers" Agda=leq-ℚ⁰⁺}} +on the +[nonnegative rational numbers](elementary-number-theory.nonnegative-rational-numbers.md) +is inherited from the +[standard ordering](elementary-number-theory.inequality-rational-numbers.md) on +[rational numbers](elementary-number-theory.rational-numbers.md). + +## Definition + +```agda +leq-prop-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → Prop lzero +leq-prop-ℚ⁰⁺ (p , _) (q , _) = leq-ℚ-Prop p q + +leq-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → UU lzero +leq-ℚ⁰⁺ (p , _) (q , _) = leq-ℚ p q +``` diff --git a/src/elementary-number-theory/maximum-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-rational-numbers.lagda.md index 80cde98f19..76568e294b 100644 --- a/src/elementary-number-theory/maximum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/maximum-rational-numbers.lagda.md @@ -26,7 +26,7 @@ open import order-theory.decidable-total-orders ## Idea The -{{#concept "maximum" Disambiguation="of pairs of rational numbers" Agda=max-ℚ}} +{{#concept "maximum" Disambiguation="of pairs of rational numbers" Agda=max-ℚ WDID=Q10578722 WD="maximum"}} of two [rational numbers](elementary-number-theory.rational-numbers.md) is the [greatest](elementary-number-theory.inequality-rational-numbers.md) rational number of the two. This is the diff --git a/src/elementary-number-theory/minimum-rational-numbers.lagda.md b/src/elementary-number-theory/minimum-rational-numbers.lagda.md index 434ce781ec..e38ab2d5c8 100644 --- a/src/elementary-number-theory/minimum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minimum-rational-numbers.lagda.md @@ -24,7 +24,7 @@ open import order-theory.decidable-total-orders ## Idea The -{{#concept "minimum" Disambiguation="of pairs of rational numbers" Agda=min-ℚ}} +{{#concept "minimum" Disambiguation="of pairs of rational numbers" Agda=min-ℚ WDID=Q10585806 WD="minimum"}} of two [rational numbers](elementary-number-theory.rational-numbers.md) is the [smallest](elementary-number-theory.inequality-rational-numbers.md) rational number of the two. This is the diff --git a/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md new file mode 100644 index 0000000000..fcc340e9b1 --- /dev/null +++ b/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md @@ -0,0 +1,67 @@ +# Multiplication of nonnegative rational numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module elementary-number-theory.multiplication-nonnegative-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.nonnegative-integer-fractions +open import elementary-number-theory.nonnegative-rational-numbers +open import elementary-number-theory.rational-numbers + +open import foundation.dependent-pair-types +open import foundation.identity-types +``` + +
+ +## Idea + +The +{{#concept "product" WDID=Q40276 WD="multiplication" Disambiguation="of nonnegative rational numbers" Agda=mul-ℚ⁰⁺}} +of two +[nonnegative rational numbers](elementary-number-theory.nonnegative-rational-numbers.md) +is their [product](elementary-number-theory.multiplication-rational-numbers.md) +as [rational numbers](elementary-number-theory.rational-numbers.md), and is +itself nonnegative. + +## Definition + +```agda +opaque + unfolding mul-ℚ + + is-nonnegative-mul-ℚ : + (p q : ℚ) → is-nonnegative-ℚ p → is-nonnegative-ℚ q → + is-nonnegative-ℚ (p *ℚ q) + is-nonnegative-mul-ℚ p q nonneg-p nonneg-q = + is-nonnegative-rational-fraction-ℤ + ( is-nonnegative-mul-nonnegative-fraction-ℤ + { fraction-ℚ p} + { fraction-ℚ q} + ( nonneg-p) + ( nonneg-q)) + +mul-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ +mul-ℚ⁰⁺ (p , nonneg-p) (q , nonneg-q) = + ( p *ℚ q , is-nonnegative-mul-ℚ p q nonneg-p nonneg-q) + +infixl 35 _*ℚ⁰⁺_ +_*ℚ⁰⁺_ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ +_*ℚ⁰⁺_ = mul-ℚ⁰⁺ +``` + +## Properties + +### Multiplication of nonnegative rational numbers is commutative + +```agda +abstract + commutative-mul-ℚ⁰⁺ : (p q : ℚ⁰⁺) → p *ℚ⁰⁺ q = q *ℚ⁰⁺ p + commutative-mul-ℚ⁰⁺ (p , _) (q , _) = eq-ℚ⁰⁺ (commutative-mul-ℚ p q) +``` diff --git a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md index 043f1ae128..f0873245eb 100644 --- a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md @@ -11,7 +11,6 @@ module elementary-number-theory.nonnegative-rational-numbers where ```agda open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.cross-multiplication-difference-integer-fractions -open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-integers open import elementary-number-theory.inequality-rational-numbers @@ -23,9 +22,7 @@ open import elementary-number-theory.multiplication-positive-and-negative-intege open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.nonnegative-integer-fractions open import elementary-number-theory.nonnegative-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 @@ -220,24 +217,6 @@ positive-succ-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁺ positive-succ-ℚ⁰⁺ (q , H) = (succ-ℚ q , is-positive-succ-is-nonnegative-ℚ q H) ``` -### The product of two nonnegative rational numbers is nonnegative - -```agda -opaque - unfolding mul-ℚ - - is-nonnegative-mul-nonnegative-ℚ : - {x y : ℚ} → is-nonnegative-ℚ x → is-nonnegative-ℚ y → - is-nonnegative-ℚ (x *ℚ y) - is-nonnegative-mul-nonnegative-ℚ {x} {y} P Q = - is-nonnegative-rational-fraction-ℤ - ( is-nonnegative-mul-nonnegative-fraction-ℤ - { fraction-ℚ x} - { fraction-ℚ y} - ( P) - ( Q)) -``` - ### Multiplication by a nonnegative rational number preserves inequality ```agda @@ -278,72 +257,6 @@ opaque ( preserves-leq-right-mul-ℚ⁰⁺ p q r q≤r) ``` -### Addition on nonnegative rational numbers - -```agda -opaque - unfolding add-ℚ - - is-nonnegative-add-ℚ : - (p q : ℚ) → is-nonnegative-ℚ p → is-nonnegative-ℚ q → - is-nonnegative-ℚ (p +ℚ q) - is-nonnegative-add-ℚ p q nonneg-p nonneg-q = - is-nonnegative-rational-fraction-ℤ - ( is-nonnegative-add-fraction-ℤ - { fraction-ℚ p} - { fraction-ℚ q} - ( nonneg-p) - ( nonneg-q)) - -add-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ -add-ℚ⁰⁺ (p , nonneg-p) (q , nonneg-q) = - ( p +ℚ q , is-nonnegative-add-ℚ p q nonneg-p nonneg-q) - -infixl 35 _+ℚ⁰⁺_ -_+ℚ⁰⁺_ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ -_+ℚ⁰⁺_ = add-ℚ⁰⁺ -``` - -### Multiplication on nonnegative rational numbers - -```agda -opaque - unfolding mul-ℚ - - is-nonnegative-mul-ℚ : - (p q : ℚ) → is-nonnegative-ℚ p → is-nonnegative-ℚ q → - is-nonnegative-ℚ (p *ℚ q) - is-nonnegative-mul-ℚ p q nonneg-p nonneg-q = - is-nonnegative-rational-fraction-ℤ - ( is-nonnegative-mul-nonnegative-fraction-ℤ - { fraction-ℚ p} - { fraction-ℚ q} - ( nonneg-p) - ( nonneg-q)) - -mul-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ -mul-ℚ⁰⁺ (p , nonneg-p) (q , nonneg-q) = - ( p *ℚ q , is-nonnegative-mul-ℚ p q nonneg-p nonneg-q) - -infixl 35 _*ℚ⁰⁺_ -_*ℚ⁰⁺_ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ -_*ℚ⁰⁺_ = mul-ℚ⁰⁺ - -abstract - commutative-mul-ℚ⁰⁺ : (p q : ℚ⁰⁺) → p *ℚ⁰⁺ q = q *ℚ⁰⁺ p - commutative-mul-ℚ⁰⁺ (p , _) (q , _) = eq-ℚ⁰⁺ (commutative-mul-ℚ p q) -``` - -### Inequality on nonnegative rational numbers - -```agda -leq-ℚ⁰⁺-Prop : ℚ⁰⁺ → ℚ⁰⁺ → Prop lzero -leq-ℚ⁰⁺-Prop (p , _) (q , _) = leq-ℚ-Prop p q - -leq-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁰⁺ → UU lzero -leq-ℚ⁰⁺ (p , _) (q , _) = leq-ℚ p q -``` - ### Addition of a nonnegative rational number is an increasing map ```agda @@ -390,21 +303,3 @@ 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) ``` - -### Strict inequality on nonnegative rational numbers - -```agda -le-ℚ⁰⁺-Prop : (p q : ℚ⁰⁺) → Prop lzero -le-ℚ⁰⁺-Prop p q = le-ℚ-Prop (rational-ℚ⁰⁺ p) (rational-ℚ⁰⁺ q) - -le-ℚ⁰⁺ : (p q : ℚ⁰⁺) → UU lzero -le-ℚ⁰⁺ p q = type-Prop (le-ℚ⁰⁺-Prop p q) -``` - -### Zero is less than positive rational numbers as nonnegative rational numbers - -```agda -abstract - le-zero-nonnegative-ℚ⁰⁺ : (q : ℚ⁺) → le-ℚ⁰⁺ zero-ℚ⁰⁺ (nonnegative-ℚ⁺ q) - le-zero-nonnegative-ℚ⁰⁺ (q , pos-q) = le-zero-is-positive-ℚ q pos-q -``` diff --git a/src/elementary-number-theory/squares-rational-numbers.lagda.md b/src/elementary-number-theory/squares-rational-numbers.lagda.md index 99eee83411..f5695768ca 100644 --- a/src/elementary-number-theory/squares-rational-numbers.lagda.md +++ b/src/elementary-number-theory/squares-rational-numbers.lagda.md @@ -11,6 +11,7 @@ module elementary-number-theory.squares-rational-numbers where ```agda open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.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 @@ -57,7 +58,7 @@ is-nonnegative-square-ℚ a = is-nonnegative-is-positive-ℚ ( a *ℚ a) ( is-positive-mul-negative-ℚ {a} {a} H H)) - ( λ H → is-nonnegative-mul-nonnegative-ℚ {a} {a} H H) + ( λ H → is-nonnegative-mul-ℚ a a H H) ( decide-is-negative-is-nonnegative-ℚ a) ``` diff --git a/src/elementary-number-theory/strict-inequality-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-nonnegative-rational-numbers.lagda.md new file mode 100644 index 0000000000..71ef396586 --- /dev/null +++ b/src/elementary-number-theory/strict-inequality-nonnegative-rational-numbers.lagda.md @@ -0,0 +1,49 @@ +# Strict inequality on nonnegative rational numbers + +```agda +module elementary-number-theory.strict-inequality-nonnegative-rational-numbers where +``` + +
Imports + +```agda +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 + +open import foundation.dependent-pair-types +open import foundation.propositions +open import foundation.universe-levels +``` + +
+ +## Idea + +The +{{#concept "standard strict ordering" Disambiguation="nonnegative rational numbers" Agda=le-ℚ⁰⁺}} +on the +[nonnegative rational numbers](elementary-number-theory.nonnegative-rational-numbers.md) +is inherited from the +[standard strict ordering](elementary-number-theory.strict-inequality-rational-numbers.md) +on [rational numbers](elementary-number-theory.rational-numbers.md). + +## Definition + +```agda +le-prop-ℚ⁰⁺ : (p q : ℚ⁰⁺) → Prop lzero +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 + +### Zero is less than positive rational numbers as nonnegative rational numbers + +```agda +abstract + le-zero-nonnegative-ℚ⁰⁺ : (q : ℚ⁺) → le-ℚ⁰⁺ zero-ℚ⁰⁺ (nonnegative-ℚ⁺ q) + le-zero-nonnegative-ℚ⁰⁺ (q , pos-q) = le-zero-is-positive-ℚ q pos-q +``` diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index 43ec2a4d79..b36bc78cec 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -14,6 +14,7 @@ open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.distance-rational-numbers open import elementary-number-theory.inequality-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 diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index d2d88d1aa6..4f9ebcc108 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -9,10 +9,12 @@ module real-numbers.nonnegative-real-numbers where
Imports ```agda +open import elementary-number-theory.addition-nonnegative-rational-numbers open import elementary-number-theory.inequality-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-nonnegative-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.coproduct-types From 8be4cf857fd8856b3ee4d01f5252697d0b0cf163 Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sun, 21 Sep 2025 10:35:19 +0200 Subject: [PATCH 13/59] naming --- ...closed-intervals-rational-numbers.lagda.md | 92 +++++++++---------- 1 file changed, 45 insertions(+), 47 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 39cd49b975..7ad81296bf 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 @@ -163,28 +163,28 @@ abstract #### Multiplication of an interval by a positive rational number ```agda -mul-interval-ℚ-ℚ⁺ : interval-ℚ → ℚ⁺ → interval-ℚ -mul-interval-ℚ-ℚ⁺ ((p , q) , p≤q) s⁺@(s , _) = +mul-ℚ⁺-interval-ℚ : interval-ℚ → ℚ⁺ → interval-ℚ +mul-ℚ⁺-interval-ℚ ((p , q) , p≤q) s⁺@(s , _) = ((p *ℚ s , q *ℚ s) , preserves-leq-right-mul-ℚ⁺ s⁺ _ _ p≤q) abstract mul-is-in-interval-ℚ-ℚ⁺ : ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → is-in-interval-ℚ [p,q] s → is-in-interval-ℚ - ( mul-interval-ℚ-ℚ⁺ [p,q] r) + ( mul-ℚ⁺-interval-ℚ [p,q] r) ( s *ℚ rational-ℚ⁺ r) mul-is-in-interval-ℚ-ℚ⁺ ((p , q) , p≤q) r s (p≤s , s≤q) = ( preserves-leq-right-mul-ℚ⁺ r _ _ p≤s , preserves-leq-right-mul-ℚ⁺ r _ _ s≤q) - is-in-im-is-in-mul-interval-ℚ-ℚ⁺ : + is-in-im-is-in-mul-ℚ⁺-interval-ℚ : ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → is-in-interval-ℚ - ( mul-interval-ℚ-ℚ⁺ [p,q] r) + ( mul-ℚ⁺-interval-ℚ [p,q] r) ( s) → is-in-im-subtype (mul-ℚ' (rational-ℚ⁺ r)) (subtype-interval-ℚ [p,q]) s - is-in-im-is-in-mul-interval-ℚ-ℚ⁺ + is-in-im-is-in-mul-ℚ⁺-interval-ℚ ((p , q) , p≤q) r⁺@(r , _) s (pr≤s , s≤qr) = let r⁻¹ = inv-ℚ⁺ r⁺ in @@ -211,10 +211,10 @@ abstract is-interval-map-ℚ ( mul-ℚ' (rational-ℚ⁺ q)) ( [a,b]) - ( mul-interval-ℚ-ℚ⁺ [a,b] q) + ( mul-ℚ⁺-interval-ℚ [a,b] q) is-interval-map-left-mul-ℚ⁺ q [a,b] = ( ind-Σ (mul-is-in-interval-ℚ-ℚ⁺ [a,b] q) , - ind-Σ (is-in-im-is-in-mul-interval-ℚ-ℚ⁺ [a,b] q)) + ind-Σ (is-in-im-is-in-mul-ℚ⁺-interval-ℚ [a,b] q)) ``` #### Multiplication of an interval by zero @@ -252,26 +252,26 @@ abstract ```agda abstract - mul-ℚ-interval-ℚ-is-negative-ℚ : + mul-is-negative-ℚ-interval-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → mul-ℚ-interval-ℚ [p,q] r = mul-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) - mul-ℚ-interval-ℚ-is-negative-ℚ [p,q]@((p , q) , p≤q) r neg-r = + mul-is-negative-ℚ-interval-ℚ [p,q]@((p , q) , p≤q) r neg-r = unordered-closed-interval-leq-ℚ' _ _ ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) - mul-ℚ-interval-ℚ-is-positive-ℚ : + mul-is-positive-ℚ-interval-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (pos-r : is-positive-ℚ r) → mul-ℚ-interval-ℚ [p,q] r = - mul-interval-ℚ-ℚ⁺ [p,q] (r , pos-r) - mul-ℚ-interval-ℚ-is-positive-ℚ [p,q]@((p , q) , p≤q) r pos-r = + mul-ℚ⁺-interval-ℚ [p,q] (r , pos-r) + mul-is-positive-ℚ-interval-ℚ [p,q]@((p , q) , p≤q) r pos-r = unordered-closed-interval-leq-ℚ _ _ ( preserves-leq-right-mul-ℚ⁺ (r , pos-r) _ _ p≤q) - mul-ℚ-interval-ℚ-is-zero-ℚ : + mul-is-zero-ℚ-interval-ℚ : ([p,q] : interval-ℚ) (r : ℚ) (is-zero-r : is-zero-ℚ r) → mul-ℚ-interval-ℚ [p,q] r = zero-zero-interval-ℚ - mul-ℚ-interval-ℚ-is-zero-ℚ ((p , q) , p≤q) _ refl = + mul-is-zero-ℚ-interval-ℚ ((p , q) , p≤q) _ refl = eq-interval-ℚ _ _ ( ap-min-ℚ ( right-zero-law-mul-ℚ _) @@ -292,57 +292,55 @@ abstract ( λ neg-r → inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) - ( mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) + ( mul-is-negative-ℚ-interval-ℚ [p,q] r neg-r) ( mul-is-in-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) s s∈[p,q])) ( λ r=0 → binary-tr ( is-in-interval-ℚ) - ( inv (mul-ℚ-interval-ℚ-is-zero-ℚ [p,q] r r=0)) + ( inv (mul-is-zero-ℚ-interval-ℚ [p,q] r r=0)) ( inv (ap-mul-ℚ refl r=0 ∙ right-zero-law-mul-ℚ s)) ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) ( λ pos-r → inv-tr ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) - ( mul-ℚ-interval-ℚ-is-positive-ℚ [p,q] r pos-r) + ( mul-is-positive-ℚ-interval-ℚ [p,q] r pos-r) ( mul-is-in-interval-ℚ-ℚ⁺ [p,q] (r , pos-r) s s∈[p,q])) is-in-im-mul-is-in-interval-ℚ-ℚ : ([p,q] : interval-ℚ) (r s : ℚ) → - is-in-interval-ℚ - ( mul-ℚ-interval-ℚ [p,q] r) - ( s) → + is-in-interval-ℚ (mul-ℚ-interval-ℚ [p,q] r) s → is-in-im-subtype (mul-ℚ' r) (subtype-interval-ℚ [p,q]) s is-in-im-mul-is-in-interval-ℚ-ℚ [p,q] r s s∈[min-pr-qr,max-pr-qr] = - trichotomy-sign-ℚ r - ( λ neg-r → - is-in-im-is-in-mul-interval-ℚ-ℚ⁻ - ( [p,q]) - ( r , neg-r) - ( s) - ( tr - ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( mul-ℚ-interval-ℚ-is-negative-ℚ [p,q] r neg-r) - ( s∈[min-pr-qr,max-pr-qr]))) - ( λ r=0 → - inv-tr - ( λ t → is-in-im-subtype (mul-ℚ' t) (subtype-interval-ℚ [p,q]) s) - ( r=0) - ( is-in-im-mul-is-in-zero-zero-interval-ℚ - ( [p,q]) - ( s) - ( tr - ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( mul-ℚ-interval-ℚ-is-zero-ℚ [p,q] r r=0) - ( s∈[min-pr-qr,max-pr-qr])))) - ( λ pos-r → - is-in-im-is-in-mul-interval-ℚ-ℚ⁺ + trichotomy-sign-ℚ r + ( λ neg-r → + is-in-im-is-in-mul-interval-ℚ-ℚ⁻ + ( [p,q]) + ( r , neg-r) + ( s) + ( tr + ( λ [x,y] → is-in-interval-ℚ [x,y] s) + ( mul-is-negative-ℚ-interval-ℚ [p,q] r neg-r) + ( s∈[min-pr-qr,max-pr-qr]))) + ( λ r=0 → + inv-tr + ( λ t → is-in-im-subtype (mul-ℚ' t) (subtype-interval-ℚ [p,q]) s) + ( r=0) + ( is-in-im-mul-is-in-zero-zero-interval-ℚ ( [p,q]) - ( r , pos-r) ( s) ( tr ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( mul-ℚ-interval-ℚ-is-positive-ℚ [p,q] r pos-r) - ( s∈[min-pr-qr,max-pr-qr]))) + ( mul-is-zero-ℚ-interval-ℚ [p,q] r r=0) + ( s∈[min-pr-qr,max-pr-qr])))) + ( λ pos-r → + is-in-im-is-in-mul-ℚ⁺-interval-ℚ + ( [p,q]) + ( r , pos-r) + ( s) + ( tr + ( λ [x,y] → is-in-interval-ℚ [x,y] s) + ( mul-is-positive-ℚ-interval-ℚ [p,q] r pos-r) + ( s∈[min-pr-qr,max-pr-qr]))) is-interval-map-mul-ℚ-interval-ℚ : (q : ℚ) ([a,b] : interval-ℚ) → From e7b24183e666c2f32f40efb6cf703856cd7ad4cd Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sun, 21 Sep 2025 10:35:50 +0200 Subject: [PATCH 14/59] fix link --- .../multiplication-closed-intervals-rational-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7ad81296bf..cc3f66c46c 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 @@ -58,7 +58,7 @@ open import order-theory.total-orders Given two [intervals](elementary-number-theory.intervals-rational-numbers.md) `[a, b]` and `[c, d]` in the [rational numbers](elementary-number-theory.rational-numbers.md), the -[Minkowski product](group-theory.minkowski-multiplications-commutative-monoids.md) +[Minkowski product](group-theory.minkowski-multiplication-commutative-monoids.md) of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) agrees with the interval `[min(ac, ad, bc, bd), max(ac, ad, bc, bd)]`. From dbdcab20c803a9b9bc68ade330620cd148628c48 Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sun, 21 Sep 2025 10:47:24 +0200 Subject: [PATCH 15/59] edits --- .../closed-intervals-total-orders.lagda.md | 78 ++++++++++--------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index a3f9ec226c..a922fe81eb 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -478,13 +478,15 @@ module _ ( tr (_≤ x) min=b min≤x) ( transitive-leq-Total-Order X ( min (min b a) (min d c)) (min b a) b - ( leq-left-min-Total-Order X _ _) - ( leq-left-min-Total-Order X _ _)) , + ( leq-left-min-Total-Order X b a) + ( leq-left-min-Total-Order X + ( min-Total-Order X b a) + ( min-Total-Order X d c))) , tr ( x ≤_) ( ap-binary max - ( commutative-max _ _) - ( commutative-max _ _)) + ( commutative-max a b) + ( commutative-max c d)) ( x≤max))))) ( elim-disjunction motive ( λ min=c → @@ -507,38 +509,38 @@ module _ ( tr (_≤ d) min=c min≤d) ( tr (_≤ b) min=c min≤b) ( x) - ( tr + ( ( tr ( _≤ x) - ( interchange-law-min-Total-Order X a b c d ∙ - ap-binary min - ( commutative-min _ _) - ( commutative-min _ _)) - ( min≤x) , - tr + ( ( interchange-law-min-Total-Order X a b c d) ∙ + ( ap-binary min + ( commutative-min a c) + ( commutative-min b d))) + ( min≤x)) , + ( tr ( x ≤_) - ( interchange-law-max-Total-Order X a b c d ∙ - ap-binary max - ( commutative-max _ _) - ( commutative-max _ _)) - ( x≤max)))) + ( ( interchange-law-max-Total-Order X a b c d) ∙ + ( ap-binary max + ( commutative-max a c) + ( commutative-max b d))) + ( x≤max))))) ( λ min=d → elim-disjunction motive ( elim-disjunction motive ( λ (mindb≤x , x≤maxdb) → inr-disjunction ( inl-disjunction - ( tr (_≤ x) (commutative-min _ _) mindb≤x , - tr (x ≤_) (commutative-max _ _) x≤maxdb))) + ( tr (_≤ x) (commutative-min d b) mindb≤x , + tr (x ≤_) (commutative-max d b) x≤maxdb))) ( λ (mindc≤x , x≤maxdc) → inr-disjunction ( inr-disjunction - ( tr (_≤ x) (commutative-min _ _) mindc≤x , - tr (x ≤_) (commutative-max _ _) x≤maxdc)))) + ( tr (_≤ x) (commutative-min d c) mindc≤x , + tr (x ≤_) (commutative-max d c) x≤maxdc)))) ( λ (minba≤x , x≤maxba) → inl-disjunction ( inl-disjunction - ( tr (_≤ x) (commutative-min _ _) minba≤x , - tr (x ≤_) (commutative-max _ _) x≤maxba))) + ( tr (_≤ x) (commutative-min b a) minba≤x , + tr (x ≤_) (commutative-max b a) x≤maxba))) ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order ( X) ( d) @@ -549,21 +551,25 @@ module _ ( tr (_≤ c) min=d min≤c) ( tr (_≤ a) min=d min≤a) ( x) - ( tr + ( ( tr ( _≤ x) - ( interchange-law-min-Total-Order X a b c d ∙ - ap-binary min - ( commutative-min _ _) - ( commutative-min _ _) ∙ - commutative-min _ _) - ( min≤x) , - tr + ( ( interchange-law-min-Total-Order X a b c d) ∙ + ( ap-binary min + ( commutative-min a c) + ( commutative-min b d)) ∙ + ( commutative-min + ( min-Total-Order X c a) + ( min-Total-Order X d b))) + ( min≤x)) , + ( tr ( x ≤_) - ( interchange-law-max-Total-Order X a b c d ∙ - ap-binary max - ( commutative-max _ _) - ( commutative-max _ _) ∙ - commutative-max _ _) - ( x≤max))))) + ( ( interchange-law-max-Total-Order X a b c d) ∙ + ( ap-binary max + ( commutative-max a c) + ( commutative-max b d)) ∙ + ( commutative-max + ( max-Total-Order X c a) + ( max-Total-Order X d b))) + ( x≤max)))))) ( eq-one-of-four-min-Total-Order X a b c d) ``` From c4ec81ecfce8ebebd957c4fa8d2ea50326302294 Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sun, 21 Sep 2025 10:51:13 +0200 Subject: [PATCH 16/59] fix more links --- .../addition-closed-intervals-rational-numbers.lagda.md | 4 ++-- .../multiplication-closed-intervals-rational-numbers.lagda.md | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md index e5fabd2dcf..a9b61840b8 100644 --- a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md @@ -39,8 +39,8 @@ Given two [closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) `[a, b]` and `[c, d]` in the [rational numbers](elementary-number-theory.rational-numbers.md), the -[Minkowski sum](group-theory.minkowski-multiplications-commutative-monoids.md) -of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) +[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of +those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) agrees with the interval `[a + c, b + d]`. ## Definition 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 cc3f66c46c..fa82e41a72 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 @@ -55,7 +55,8 @@ open import order-theory.total-orders ## Idea -Given two [intervals](elementary-number-theory.intervals-rational-numbers.md) +Given two +[intervals](elementary-number-theory.closed-intervals-rational-numbers.md) `[a, b]` and `[c, d]` in the [rational numbers](elementary-number-theory.rational-numbers.md), the [Minkowski product](group-theory.minkowski-multiplication-commutative-monoids.md) From e285dac5166f622bccad79e879364fbd6e115694 Mon Sep 17 00:00:00 2001 From: Fredrik Bakke Date: Sun, 21 Sep 2025 10:55:42 +0200 Subject: [PATCH 17/59] concept macro closed intervals rational numbers --- .../closed-intervals-rational-numbers.lagda.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 0efa2e878a..6a9d808296 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -32,7 +32,9 @@ open import order-theory.decidable-total-orders ## Idea -A closed interval in the rational numbers is a +A +{{#concept "closed interval" Disambiguation="in the rational numbers" Agda=interval-ℚ}} +in the rational numbers is a [closed interval](order-theory.closed-intervals-posets.md) in the [poset](elementary-number-theory.inequality-rational-numbers.md) of [rational numbers](elementary-number-theory.rational-numbers.md). From 9348d77f15978ef07e8b74a392cd6db0c28fa6bf Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 23 Sep 2025 17:09:40 -0700 Subject: [PATCH 18/59] Rename --- ...d-interval-preserving-maps-posets.lagda.md | 18 +- ...rval-preserving-maps-total-orders.lagda.md | 14 +- ...inhabited-closed-intervals-posets.lagda.md | 173 ++++++ ...ted-closed-intervals-total-orders.lagda.md | 570 ++++++++++++++++++ 4 files changed, 759 insertions(+), 16 deletions(-) create mode 100644 src/order-theory/inhabited-closed-intervals-posets.lagda.md create mode 100644 src/order-theory/inhabited-closed-intervals-total-orders.lagda.md diff --git a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md index f84a8f08ae..af035f25ae 100644 --- a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md @@ -21,9 +21,9 @@ open import order-theory.posets A map between [posets](order-theory.posets.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Poset disambiguation="map between posets"}} -if the [image](foundation.images-subtypes.md) of a -[closed interval](order-theory.closed-intervals-posets.md) in `X` is always a -closed interval in `Y`. +if the [image](foundation.images-subtypes.md) of an +[inhabited closed interval](order-theory.inhabited-closed-intervals-posets.md) +in `X` is always an inhabited closed interval in `Y`. ## Definition @@ -34,17 +34,17 @@ module _ where is-closed-interval-map-prop-Poset : - ([a,b] : closed-interval-Poset X) → - ([c,d] : closed-interval-Poset Y) → + ([a,b] : inhabited-closed-interval-Poset X) → + ([c,d] : inhabited-closed-interval-Poset Y) → Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-prop-Poset [a,b] [c,d] = is-image-map-subtype-prop f - ( subtype-closed-interval-Poset X [a,b]) - ( subtype-closed-interval-Poset Y [c,d]) + ( subtype-inhabited-closed-interval-Poset X [a,b]) + ( subtype-inhabited-closed-interval-Poset Y [c,d]) is-closed-interval-map-Poset : - ([a,b] : closed-interval-Poset X) → - ([c,d] : closed-interval-Poset Y) → + ([a,b] : inhabited-closed-interval-Poset X) → + ([c,d] : inhabited-closed-interval-Poset Y) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-Poset [a,b] [c,d] = type-Prop (is-closed-interval-map-prop-Poset [a,b] [c,d]) diff --git a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md index 236f38f6b6..aaa8172091 100644 --- a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md @@ -22,9 +22,9 @@ open import order-theory.total-orders A map between [total orders](order-theory.total-orders.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Total-Order disambiguation="map between total orders"}} -if the [image](foundation.images-subtypes.md) of a -[closed interval](order-theory.closed-intervals-total-orders.md) in `X` is -always a closed interval in `Y`. Equivalently, it is a +if the [image](foundation.images-subtypes.md) of an +[inhabited closed interval](order-theory.inhabited-closed-intervals-total-orders.md) +in `X` is always an inhabited closed interval in `Y`. Equivalently, it is a [closed interval preserving map](order-theory.closed-interval-preserving-maps-posets.md) on the underlying [posets](order-theory.posets.md). @@ -37,8 +37,8 @@ module _ where is-closed-interval-map-prop-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - ([c,d] : closed-interval-Total-Order Y) → + ([a,b] : inhabited-closed-interval-Total-Order X) → + ([c,d] : inhabited-closed-interval-Total-Order Y) → Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-prop-Total-Order = is-closed-interval-map-prop-Poset @@ -47,8 +47,8 @@ module _ ( f) is-closed-interval-map-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - ([c,d] : closed-interval-Total-Order Y) → + ([a,b] : inhabited-closed-interval-Total-Order X) → + ([c,d] : inhabited-closed-interval-Total-Order Y) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-Total-Order [a,b] [c,d] = type-Prop (is-closed-interval-map-prop-Total-Order [a,b] [c,d]) diff --git a/src/order-theory/inhabited-closed-intervals-posets.lagda.md b/src/order-theory/inhabited-closed-intervals-posets.lagda.md new file mode 100644 index 0000000000..f8ede40e97 --- /dev/null +++ b/src/order-theory/inhabited-closed-intervals-posets.lagda.md @@ -0,0 +1,173 @@ +# Closed intervals in posets + +```agda +module order-theory.inhabited-closed-intervals-posets where +``` + +
Imports + +```agda +open import foundation.cartesian-product-types +open import foundation.dependent-pair-types +open import foundation.equality-cartesian-product-types +open import foundation.equality-dependent-pair-types +open import foundation.identity-types +open import foundation.images-subtypes +open import foundation.inhabited-subtypes +open import foundation.injective-maps +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import order-theory.interval-subposets +open import order-theory.posets +``` + +
+ +## Idea + +An +{{#concept "inhabited closed interval" disambiguation="in a poset" Agda=inhabited-closed-interval-Poset}} +in a [poset](order-theory.posets.md) `P` is a [subtype](foundation.subtypes.md) +of `P` with elements `x` and `y` with `x ≤ y` such that the subtype contains +every element `z` such that `x ≤ z ∧ z ≤ y`. Any pair `x y` with `x ≤ y` +induces a unique inhabited closed interval, so we can equivalently characterize +inhabited closed intervals in terms of such pairs. + +## Definition + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + inhabited-closed-interval-Poset : UU (l1 ⊔ l2) + inhabited-closed-interval-Poset = + Σ (type-Poset X × type-Poset X) (λ (x , y) → leq-Poset X x y) + + lower-bound-inhabited-closed-interval-Poset : + inhabited-closed-interval-Poset → type-Poset X + lower-bound-inhabited-closed-interval-Poset ((x , _) , _) = x + + upper-bound-inhabited-closed-interval-Poset : + inhabited-closed-interval-Poset → type-Poset X + upper-bound-inhabited-closed-interval-Poset ((_ , y) , _) = y + + subtype-inhabited-closed-interval-Poset : + inhabited-closed-interval-Poset → subtype l2 (type-Poset X) + subtype-inhabited-closed-interval-Poset ((x , y) , _) = + is-in-interval-Poset X x y + + type-inhabited-closed-interval-Poset : + inhabited-closed-interval-Poset → UU (l1 ⊔ l2) + type-inhabited-closed-interval-Poset [x,y] = + type-subtype (subtype-inhabited-closed-interval-Poset [x,y]) + + is-in-inhabited-closed-interval-Poset : + inhabited-closed-interval-Poset → type-Poset X → UU l2 + is-in-inhabited-closed-interval-Poset [x,y] = + is-in-subtype (subtype-inhabited-closed-interval-Poset [x,y]) +``` + +## Properties + +### The endpoints of an inhabited closed interval are in the interval + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + lower-bound-is-in-inhabited-closed-interval-Poset : + ([a,b] : inhabited-closed-interval-Poset X) → + is-in-inhabited-closed-interval-Poset X [a,b] + ( lower-bound-inhabited-closed-interval-Poset X [a,b]) + lower-bound-is-in-inhabited-closed-interval-Poset ((a , b) , a≤b) = + ( refl-leq-Poset X a , a≤b) + + upper-bound-is-in-inhabited-closed-interval-Poset : + ([a,b] : inhabited-closed-interval-Poset X) → + is-in-inhabited-closed-interval-Poset X [a,b] + ( upper-bound-inhabited-closed-interval-Poset X [a,b]) + upper-bound-is-in-inhabited-closed-interval-Poset ((a , b) , a≤b) = + ( a≤b , refl-leq-Poset X b) +``` + +### Inhabited closed intervals are inhabited + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) ([x,y] : inhabited-closed-interval-Poset X) + where + + abstract + is-inhabited-inhabited-closed-interval-Poset : + is-inhabited-subtype (subtype-inhabited-closed-interval-Poset X [x,y]) + is-inhabited-inhabited-closed-interval-Poset = + unit-trunc-Prop + ( lower-bound-inhabited-closed-interval-Poset X [x,y] , + lower-bound-is-in-inhabited-closed-interval-Poset X [x,y]) +``` + +### Characterization of equality + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + eq-inhabited-closed-interval-Poset : + ( [a,b] [c,d] : inhabited-closed-interval-Poset X) → + ( lower-bound-inhabited-closed-interval-Poset X [a,b] = + lower-bound-inhabited-closed-interval-Poset X [c,d]) → + ( upper-bound-inhabited-closed-interval-Poset X [a,b] = + upper-bound-inhabited-closed-interval-Poset X [c,d]) → + [a,b] = [c,d] + eq-inhabited-closed-interval-Poset ((a , b) , _) ((c , d) , _) a=c b=d = + eq-pair-Σ (eq-pair a=c b=d) (eq-type-Prop (leq-prop-Poset X _ _)) + + set-inhabited-closed-interval-Poset : Set (l1 ⊔ l2) + set-inhabited-closed-interval-Poset = + set-subset + ( product-Set (set-Poset X) (set-Poset X)) + ( ind-Σ (leq-prop-Poset X)) +``` + +### The map from inhabited closed intervals to subtypes is injective + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + is-injective-subtype-inhabited-closed-interval-Poset : + is-injective (subtype-inhabited-closed-interval-Poset X) + is-injective-subtype-inhabited-closed-interval-Poset + {(a , b) , a≤b} {(c , d) , c≤d} [a,b]=[c,d] = + eq-inhabited-closed-interval-Poset X _ _ + ( antisymmetric-leq-Poset X a c + ( pr1 + ( backward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] c) + ( refl-leq-Poset X c , c≤d))) + ( pr1 + ( forward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] a) + ( refl-leq-Poset X a , a≤b)))) + ( antisymmetric-leq-Poset X b d + ( pr2 + ( forward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] b) + ( a≤b , refl-leq-Poset X b))) + ( pr2 + ( backward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] d) + ( c≤d , refl-leq-Poset X d)))) +``` diff --git a/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md b/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md new file mode 100644 index 0000000000..eeb67271e3 --- /dev/null +++ b/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md @@ -0,0 +1,570 @@ +# Inhabited closed intervals in total orders + +```agda +module order-theory.inhabited-closed-intervals-total-orders where +``` + +
Imports + +```agda +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.disjunction +open import foundation.function-types +open import foundation.functoriality-disjunction +open import foundation.identity-types +open import foundation.inhabited-subtypes +open import foundation.injective-maps +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.unions-subtypes +open import foundation.universe-levels + +open import order-theory.inhabited-closed-intervals-posets +open import order-theory.posets +open import order-theory.total-orders +``` + +
+ +## Idea + +An +{{#concept "inhabited closed interval" disambiguation="in a total order" Agda=inhabited-inhabited-closed-interval-Total-Order}} +in a [total order](order-theory.total-orders.md) `X` is a +[subtype](foundation.subtypes.md) of `X` with elements `x` and `y` with `x ≤ y` +such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. +Any pair `x y` with `x ≤ y` induces a unique inhabited closed interval, so we +can equivalently characterize inhabited closed intervals in terms of such pairs. + +Equivalently, an inhabited closed interval is a total order is an +[inhabited closed interval](order-theory.inhabited-closed-intervals-posets.md) +in the underlying [poset](order-theory.posets.md). + +## Definition + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + inhabited-closed-interval-Total-Order : UU (l1 ⊔ l2) + inhabited-closed-interval-Total-Order = + inhabited-closed-interval-Poset (poset-Total-Order X) + + lower-bound-inhabited-closed-interval-Total-Order : + inhabited-closed-interval-Total-Order → type-Total-Order X + lower-bound-inhabited-closed-interval-Total-Order ((x , _) , _) = x + + upper-bound-inhabited-closed-interval-Total-Order : + inhabited-closed-interval-Total-Order → type-Total-Order X + upper-bound-inhabited-closed-interval-Total-Order ((_ , y) , _) = y + + subtype-inhabited-closed-interval-Total-Order : + inhabited-closed-interval-Total-Order → subtype l2 (type-Total-Order X) + subtype-inhabited-closed-interval-Total-Order = + subtype-inhabited-closed-interval-Poset (poset-Total-Order X) + + type-inhabited-closed-interval-Total-Order : inhabited-closed-interval-Total-Order → UU (l1 ⊔ l2) + type-inhabited-closed-interval-Total-Order = + type-inhabited-closed-interval-Poset (poset-Total-Order X) + + is-in-inhabited-closed-interval-Total-Order : + inhabited-closed-interval-Total-Order → type-Total-Order X → UU l2 + is-in-inhabited-closed-interval-Total-Order = + is-in-inhabited-closed-interval-Poset (poset-Total-Order X) +``` + +## Properties + +### The endpoints of a closed interval are in the interval + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + abstract + lower-bound-is-in-inhabited-closed-interval-Total-Order : + ([a,b] : inhabited-closed-interval-Total-Order X) → + is-in-inhabited-closed-interval-Total-Order X [a,b] + ( lower-bound-inhabited-closed-interval-Total-Order X [a,b]) + lower-bound-is-in-inhabited-closed-interval-Total-Order = + lower-bound-is-in-inhabited-closed-interval-Poset (poset-Total-Order X) + + upper-bound-is-in-inhabited-closed-interval-Total-Order : + ([a,b] : inhabited-closed-interval-Total-Order X) → + is-in-inhabited-closed-interval-Total-Order X [a,b] + ( upper-bound-inhabited-closed-interval-Total-Order X [a,b]) + upper-bound-is-in-inhabited-closed-interval-Total-Order = + upper-bound-is-in-inhabited-closed-interval-Poset (poset-Total-Order X) +``` + +### Closed intervals are inhabited + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + ([x,y] : inhabited-closed-interval-Total-Order X) + where + + abstract + is-inhabited-inhabited-closed-interval-Total-Order : + is-inhabited-subtype (subtype-inhabited-closed-interval-Total-Order X [x,y]) + is-inhabited-inhabited-closed-interval-Total-Order = + is-inhabited-inhabited-closed-interval-Poset (poset-Total-Order X) [x,y] +``` + +### Characterization of equality + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + abstract + eq-inhabited-closed-interval-Total-Order : + ( [a,b] [c,d] : inhabited-closed-interval-Total-Order X) → + ( lower-bound-inhabited-closed-interval-Total-Order X [a,b] = + lower-bound-inhabited-closed-interval-Total-Order X [c,d]) → + ( upper-bound-inhabited-closed-interval-Total-Order X [a,b] = + upper-bound-inhabited-closed-interval-Total-Order X [c,d]) → + [a,b] = [c,d] + eq-inhabited-closed-interval-Total-Order = + eq-inhabited-closed-interval-Poset (poset-Total-Order X) + + set-inhabited-closed-interval-Total-Order : Set (l1 ⊔ l2) + set-inhabited-closed-interval-Total-Order = + set-inhabited-closed-interval-Poset (poset-Total-Order X) +``` + +### The map from closed intervals to subtypes is injective + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + abstract + is-injective-subtype-inhabited-closed-interval-Total-Order : + is-injective (subtype-inhabited-closed-interval-Total-Order X) + is-injective-subtype-inhabited-closed-interval-Total-Order = + is-injective-subtype-inhabited-closed-interval-Poset (poset-Total-Order X) +``` + +### Total orders can be divided along an element + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) + where + + divide-below-inhabited-closed-interval-Total-Order : + ([a,b] : inhabited-closed-interval-Total-Order X) → + (c : type-inhabited-closed-interval-Total-Order X [a,b]) → + inhabited-closed-interval-Total-Order X + divide-below-inhabited-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = + ((a , c) , a≤c) + + divide-above-inhabited-closed-interval-Total-Order : + ([a,b] : inhabited-closed-interval-Total-Order X) → + (c : type-inhabited-closed-interval-Total-Order X [a,b]) → + inhabited-closed-interval-Total-Order X + divide-above-inhabited-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = + ((c , b) , c≤b) + + abstract + has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order : + ([a,b] : inhabited-closed-interval-Total-Order X) → + (c : type-inhabited-closed-interval-Total-Order X [a,b]) → + has-same-elements-subtype + ( union-subtype + ( subtype-inhabited-closed-interval-Total-Order X + ( divide-below-inhabited-closed-interval-Total-Order [a,b] c)) + ( subtype-inhabited-closed-interval-Total-Order X + ( divide-above-inhabited-closed-interval-Total-Order [a,b] c))) + ( subtype-inhabited-closed-interval-Total-Order X [a,b]) + pr1 + ( has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order + [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) = + elim-disjunction + ( subtype-inhabited-closed-interval-Total-Order X [a,b] x) + ( λ (a≤x , x≤c) → + ( a≤x , transitive-leq-Total-Order X x c b c≤b x≤c)) + ( λ (c≤x , x≤b) → + ( transitive-leq-Total-Order X a c x c≤x a≤c , x≤b)) + pr2 + ( has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order + [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) (a≤x , x≤b) = + map-disjunction + ( λ x≤c → (a≤x , x≤c)) + ( λ c≤x → (c≤x , x≤b)) + ( is-total-Total-Order X x c) + + eq-divide-subtype-inhabited-closed-interval-Total-Order : + ([a,b] : inhabited-closed-interval-Total-Order X) → + (c : type-inhabited-closed-interval-Total-Order X [a,b]) → + union-subtype + ( subtype-inhabited-closed-interval-Total-Order X + ( divide-below-inhabited-closed-interval-Total-Order [a,b] c)) + ( subtype-inhabited-closed-interval-Total-Order X + ( divide-above-inhabited-closed-interval-Total-Order [a,b] c)) = + subtype-inhabited-closed-interval-Total-Order X [a,b] + eq-divide-subtype-inhabited-closed-interval-Total-Order [a,b] c = + eq-has-same-elements-subtype _ _ + ( has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order [a,b] c) +``` + +### The minimal interval covering two elements + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) (a b : type-Total-Order X) + where + + minimal-closed-interval-cover-of-two-elements-Total-Order : + inhabited-closed-interval-Total-Order X + minimal-closed-interval-cover-of-two-elements-Total-Order = + ( ( min-Total-Order X a b , + max-Total-Order X a b) , + min-leq-max-Total-Order X a b) +``` + +### Covering the minimal interval containing four elements + +```agda +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) (a b c d : type-Total-Order X) + where + + minimal-closed-interval-cover-of-four-elements-Total-Order : + inhabited-closed-interval-Total-Order X + minimal-closed-interval-cover-of-four-elements-Total-Order = + ( ( min-Total-Order X (min-Total-Order X a b) (min-Total-Order X c d) , + max-Total-Order X (max-Total-Order X a b) (max-Total-Order X c d)) , + transitive-leq-Total-Order X _ _ _ + ( max-leq-leq-Total-Order X _ _ _ _ + ( min-leq-max-Total-Order X _ _) + ( min-leq-max-Total-Order X _ _)) + ( min-leq-max-Total-Order X _ _)) + + abstract + cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order : + leq-Total-Order X a b → leq-Total-Order X a c → leq-Total-Order X a d → + subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-four-elements-Total-Order) ⊆ + union-subtype + ( union-subtype + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order X a b)) + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) + cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + a≤b a≤c a≤d x (min≤x , x≤max) = + let + motive = + union-subtype + ( union-subtype + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( a) + ( b))) + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( a) + ( c)))) + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( b) + ( d))) + ( x) + minab≤x = + tr + ( λ y → leq-Total-Order X y x) + ( left-leq-right-min-Total-Order X _ _ + ( inv-tr + ( λ z → leq-Total-Order X z (min-Total-Order X c d)) + ( left-leq-right-min-Total-Order X a b a≤b) + ( leq-min-leq-both-Total-Order X a c d a≤c a≤d))) + ( min≤x) + minac≤x = + tr + ( λ y → leq-Total-Order X y x) + ( left-leq-right-min-Total-Order X a b a≤b ∙ + inv (left-leq-right-min-Total-Order X a c a≤c)) + ( minab≤x) + in + elim-disjunction + ( motive) + ( elim-disjunction + ( motive) + ( λ max=a → + inl-disjunction + ( inl-disjunction + ( minab≤x , + transitive-leq-Total-Order X x a (max-Total-Order X a b) + ( leq-left-max-Total-Order X _ _) + ( tr (leq-Total-Order X x) max=a x≤max)))) + ( λ max=b → + inl-disjunction + ( inl-disjunction + ( minab≤x , + tr + ( leq-Total-Order X x) + ( max=b ∙ inv (left-leq-right-max-Total-Order X a b a≤b)) + ( x≤max))))) + ( elim-disjunction + ( motive) + ( λ max=c → + inl-disjunction + ( inr-disjunction + ( minac≤x , + tr + ( leq-Total-Order X x) + ( max=c ∙ inv (left-leq-right-max-Total-Order X a c a≤c)) + ( x≤max)))) + ( λ max=d → + elim-disjunction motive + ( λ b≤x → + inr-disjunction + ( transitive-leq-Total-Order X (min-Total-Order X b d) b x + ( b≤x) + ( leq-left-min-Total-Order X b d) , + transitive-leq-Total-Order X x d (max-Total-Order X b d) + ( leq-right-max-Total-Order X b d) + ( tr (leq-Total-Order X x) max=d x≤max))) + ( λ x≤b → + inl-disjunction + ( inl-disjunction + ( minab≤x , + inv-tr + ( leq-Total-Order X x) + ( left-leq-right-max-Total-Order X a b a≤b) + ( x≤b)))) + ( is-total-Total-Order X b x))) + ( eq-one-of-four-max-Total-Order X a b c d) + +module _ + {l1 l2 : Level} (X : Total-Order l1 l2) (a b c d : type-Total-Order X) + where + + abstract + cover-minimal-closed-interval-cover-of-four-elements-Total-Order : + subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-four-elements-Total-Order X + ( a) + ( b) + ( c) + ( d)) ⊆ + union-subtype + ( union-subtype + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order X a b)) + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) + ( union-subtype + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order X c d))) + cover-minimal-closed-interval-cover-of-four-elements-Total-Order + x x∈closed-4@(min≤x , x≤max) = + let + _≤_ = leq-Total-Order X + commutative-min = commutative-min-Total-Order X + commutative-max = commutative-max-Total-Order X + min = min-Total-Order X + max = max-Total-Order X + motive = + union-subtype + ( union-subtype + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( a) + ( b))) + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( a) + ( c)))) + ( union-subtype + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( b) + ( d))) + ( subtype-inhabited-closed-interval-Total-Order X + ( minimal-closed-interval-cover-of-two-elements-Total-Order + ( X) + ( c) + ( d)))) + ( x) + min≤a = + transitive-leq-Total-Order X + ( min (min a b) (min c d)) + ( min a b) + ( a) + ( leq-left-min-Total-Order X _ _) + ( leq-left-min-Total-Order X _ _) + min≤b = + transitive-leq-Total-Order X + ( min (min a b) (min c d)) + ( min a b) + ( b) + ( leq-right-min-Total-Order X _ _) + ( leq-left-min-Total-Order X _ _) + min≤c = + transitive-leq-Total-Order X + ( min (min a b) (min c d)) + ( min c d) + ( c) + ( leq-left-min-Total-Order X _ _) + ( leq-right-min-Total-Order X _ _) + min≤d = + transitive-leq-Total-Order X + ( min (min a b) (min c d)) + ( min c d) + ( d) + ( leq-right-min-Total-Order X _ _) + ( leq-right-min-Total-Order X _ _) + in + elim-disjunction motive + ( elim-disjunction motive + ( λ min=a → + map-disjunction + ( id) + ( inl-disjunction) + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + ( X) + ( a) + ( b) + ( c) + ( d) + ( tr (_≤ b) min=a min≤b) + ( tr (_≤ c) min=a min≤c) + ( tr (_≤ d) min=a min≤d) + ( x) + ( x∈closed-4))) + ( λ min=b → + elim-disjunction motive + ( elim-disjunction motive + ( λ (minba≤x , x≤maxba) → + inl-disjunction + ( inl-disjunction + ( tr (_≤ x) (commutative-min b a) minba≤x , + tr (x ≤_) (commutative-max b a) x≤maxba))) + ( inr-disjunction ∘ inl-disjunction)) + ( inl-disjunction ∘ inr-disjunction) + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + ( X) + ( b) + ( a) + ( d) + ( c) + ( tr (_≤ a) min=b min≤a) + ( tr (_≤ d) min=b min≤d) + ( tr (_≤ c) min=b min≤c) + ( x) + ( transitive-leq-Total-Order X _ b x + ( tr (_≤ x) min=b min≤x) + ( transitive-leq-Total-Order X + ( min (min b a) (min d c)) (min b a) b + ( leq-left-min-Total-Order X _ _) + ( leq-left-min-Total-Order X _ _)) , + tr + ( x ≤_) + ( ap-binary max + ( commutative-max _ _) + ( commutative-max _ _)) + ( x≤max))))) + ( elim-disjunction motive + ( λ min=c → + elim-disjunction motive + ( elim-disjunction motive + ( λ (minca≤x , x≤maxca) → + inl-disjunction + ( inr-disjunction + ( tr (_≤ x) (commutative-min c a) minca≤x , + tr (x ≤_) (commutative-max c a) x≤maxca))) + ( inr-disjunction ∘ inr-disjunction)) + ( inl-disjunction ∘ inl-disjunction) + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + ( X) + ( c) + ( a) + ( d) + ( b) + ( tr (_≤ a) min=c min≤a) + ( tr (_≤ d) min=c min≤d) + ( tr (_≤ b) min=c min≤b) + ( x) + ( tr + ( _≤ x) + ( interchange-law-min-Total-Order X a b c d ∙ + ap-binary min + ( commutative-min _ _) + ( commutative-min _ _)) + ( min≤x) , + tr + ( x ≤_) + ( interchange-law-max-Total-Order X a b c d ∙ + ap-binary max + ( commutative-max _ _) + ( commutative-max _ _)) + ( x≤max)))) + ( λ min=d → + elim-disjunction motive + ( elim-disjunction motive + ( λ (mindb≤x , x≤maxdb) → + inr-disjunction + ( inl-disjunction + ( tr (_≤ x) (commutative-min _ _) mindb≤x , + tr (x ≤_) (commutative-max _ _) x≤maxdb))) + ( λ (mindc≤x , x≤maxdc) → + inr-disjunction + ( inr-disjunction + ( tr (_≤ x) (commutative-min _ _) mindc≤x , + tr (x ≤_) (commutative-max _ _) x≤maxdc)))) + ( λ (minba≤x , x≤maxba) → + inl-disjunction + ( inl-disjunction + ( tr (_≤ x) (commutative-min _ _) minba≤x , + tr (x ≤_) (commutative-max _ _) x≤maxba))) + ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order + ( X) + ( d) + ( b) + ( c) + ( a) + ( tr (_≤ b) min=d min≤b) + ( tr (_≤ c) min=d min≤c) + ( tr (_≤ a) min=d min≤a) + ( x) + ( tr + ( _≤ x) + ( interchange-law-min-Total-Order X a b c d ∙ + ap-binary min + ( commutative-min _ _) + ( commutative-min _ _) ∙ + commutative-min _ _) + ( min≤x) , + tr + ( x ≤_) + ( interchange-law-max-Total-Order X a b c d ∙ + ap-binary max + ( commutative-max _ _) + ( commutative-max _ _) ∙ + commutative-max _ _) + ( x≤max))))) + ( eq-one-of-four-min-Total-Order X a b c d) +``` From e97c045fbcd3be19af7858c644ae9a74033b9fec Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 23 Sep 2025 18:00:17 -0700 Subject: [PATCH 19/59] Renaming --- src/elementary-number-theory.lagda.md | 6 +- ...closed-intervals-rational-numbers.lagda.md | 193 ---- ...closed-intervals-rational-numbers.lagda.md | 223 +++++ ...closed-intervals-rational-numbers.lagda.md | 143 --- ...closed-intervals-rational-numbers.lagda.md | 154 ++++ ...closed-intervals-rational-numbers.lagda.md | 698 -------------- ...closed-intervals-rational-numbers.lagda.md | 849 ++++++++++++++++++ src/order-theory.lagda.md | 4 +- ...d-interval-preserving-maps-posets.lagda.md | 2 +- ...rval-preserving-maps-total-orders.lagda.md | 4 +- .../closed-intervals-posets.lagda.md | 169 ---- .../closed-intervals-total-orders.lagda.md | 575 ------------ ...inhabited-closed-intervals-posets.lagda.md | 4 +- ...ted-closed-intervals-total-orders.lagda.md | 22 +- 14 files changed, 1250 insertions(+), 1796 deletions(-) delete mode 100644 src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/addition-inhabited-closed-intervals-rational-numbers.lagda.md delete mode 100644 src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md delete mode 100644 src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md delete mode 100644 src/order-theory/closed-intervals-posets.lagda.md delete mode 100644 src/order-theory/closed-intervals-total-orders.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 8284455caf..0bec58f489 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -12,7 +12,7 @@ module elementary-number-theory where open import elementary-number-theory.absolute-value-integers public open import elementary-number-theory.absolute-value-rational-numbers public open import elementary-number-theory.ackermann-function public -open import elementary-number-theory.addition-closed-intervals-rational-numbers public +open import elementary-number-theory.addition-inhabited-closed-intervals-rational-numbers public open import elementary-number-theory.addition-integer-fractions public open import elementary-number-theory.addition-integers public open import elementary-number-theory.addition-natural-numbers public @@ -38,7 +38,6 @@ open import elementary-number-theory.binomial-theorem-integers public open import elementary-number-theory.binomial-theorem-natural-numbers public open import elementary-number-theory.bounded-sums-arithmetic-functions public open import elementary-number-theory.catalan-numbers public -open import elementary-number-theory.closed-intervals-rational-numbers public open import elementary-number-theory.cofibonacci public open import elementary-number-theory.collatz-bijection public open import elementary-number-theory.collatz-conjecture public @@ -99,6 +98,7 @@ open import elementary-number-theory.inequality-rational-numbers public open import elementary-number-theory.inequality-standard-finite-types public open import elementary-number-theory.infinite-conatural-numbers public open import elementary-number-theory.infinitude-of-primes public +open import elementary-number-theory.inhabited-closed-intervals-rational-numbers 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 @@ -119,7 +119,7 @@ open import elementary-number-theory.modular-arithmetic public open import elementary-number-theory.modular-arithmetic-standard-finite-types public open import elementary-number-theory.monoid-of-natural-numbers-with-addition public open import elementary-number-theory.monoid-of-natural-numbers-with-maximum public -open import elementary-number-theory.multiplication-closed-intervals-rational-numbers public +open import elementary-number-theory.multiplication-inhabited-closed-intervals-rational-numbers public open import elementary-number-theory.multiplication-integer-fractions public open import elementary-number-theory.multiplication-integers public open import elementary-number-theory.multiplication-lists-of-natural-numbers public diff --git a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md deleted file mode 100644 index a9b61840b8..0000000000 --- a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md +++ /dev/null @@ -1,193 +0,0 @@ -# Addition on closed intervals in the rational numbers - -```agda -module elementary-number-theory.addition-closed-intervals-rational-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.closed-intervals-rational-numbers -open import elementary-number-theory.difference-rational-numbers -open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.rational-numbers - -open import foundation.coproduct-types -open import foundation.dependent-pair-types -open import foundation.existential-quantification -open import foundation.identity-types -open import foundation.propositional-truncations -open import foundation.subtypes -open import foundation.transport-along-identifications -open import foundation.universe-levels - -open import group-theory.commutative-monoids -open import group-theory.minkowski-multiplication-commutative-monoids -open import group-theory.monoids -open import group-theory.semigroups - -open import order-theory.closed-intervals-posets -``` - -
- -## Idea - -Given two -[closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) -`[a, b]` and `[c, d]` in the -[rational numbers](elementary-number-theory.rational-numbers.md), the -[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of -those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) -agrees with the interval `[a + c, b + d]`. - -## Definition - -```agda -add-interval-ℚ : - interval-ℚ → interval-ℚ → interval-ℚ -add-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = - ((a +ℚ c , b +ℚ d) , preserves-leq-add-ℚ a≤b c≤d) -``` - -## Properties - -### Agreement with the Minkowski sum - -```agda -abstract - is-in-minkowski-sum-is-in-add-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - (q : ℚ) → is-in-interval-ℚ (add-interval-ℚ [a,b] [c,d]) q → - is-in-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-add-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d])) - ( q) - is-in-minkowski-sum-is-in-add-interval-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q (a+c≤q , q≤b+d) = - rec-coproduct - ( λ q≤a+d → - intro-exists - ( a , q -ℚ a) - ( ( refl-leq-ℚ a , a≤b) , - ( leq-transpose-left-add-ℚ' _ _ _ a+c≤q , - leq-transpose-right-add-ℚ' _ _ _ q≤a+d) , - inv (is-identity-right-conjugation-add-ℚ _ _))) - ( λ a+d≤q → - intro-exists - ( q -ℚ d , d) - ( ( leq-transpose-left-add-ℚ _ _ _ a+d≤q , - leq-transpose-right-add-ℚ _ _ _ q≤b+d) , - ( c≤d , refl-leq-ℚ d) , - inv (is-section-diff-ℚ _ _))) - ( linear-leq-ℚ q (a +ℚ d)) - - is-in-add-interval-is-in-minkowski-sum-ℚ : - ([a,b] [c,d] : interval-ℚ) → - (q : ℚ) → - is-in-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-add-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d])) - ( q) → - is-in-interval-ℚ (add-interval-ℚ [a,b] [c,d]) q - is-in-add-interval-is-in-minkowski-sum-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q q∈[a,b]+[c,d] = - let - open - do-syntax-trunc-Prop - ( subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d]) q) - in do - ((s , t) , (a≤s , s≤b) , (c≤t , t≤d) , q=s+t) ← q∈[a,b]+[c,d] - ( inv-tr (leq-ℚ (a +ℚ c)) q=s+t (preserves-leq-add-ℚ a≤s c≤t) , - inv-tr (λ r → leq-ℚ r (b +ℚ d)) q=s+t (preserves-leq-add-ℚ s≤b t≤d)) - -has-same-elements-minkowski-add-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - has-same-elements-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-add-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d])) - ( subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d])) -pr1 (has-same-elements-minkowski-add-interval-ℚ [a,b] [c,d] q) = - is-in-add-interval-is-in-minkowski-sum-ℚ [a,b] [c,d] q -pr2 (has-same-elements-minkowski-add-interval-ℚ [a,b] [c,d] q) = - is-in-minkowski-sum-is-in-add-interval-ℚ [a,b] [c,d] q - -eq-minkowski-add-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - minkowski-mul-Commutative-Monoid - ( commutative-monoid-add-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d]) = - subtype-interval-ℚ (add-interval-ℚ [a,b] [c,d]) -eq-minkowski-add-interval-ℚ [a,b] [c,d] = - eq-has-same-elements-subtype _ _ - ( has-same-elements-minkowski-add-interval-ℚ [a,b] [c,d]) -``` - -### Associativity - -```agda -abstract - associative-add-interval-ℚ : - ([a,b] [c,d] [e,f] : interval-ℚ) → - add-interval-ℚ (add-interval-ℚ [a,b] [c,d]) [e,f] = - add-interval-ℚ [a,b] (add-interval-ℚ [c,d] [e,f]) - associative-add-interval-ℚ _ _ _ = - eq-interval-ℚ _ _ (associative-add-ℚ _ _ _) (associative-add-ℚ _ _ _) -``` - -### Commutativity - -```agda -abstract - commutative-add-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - add-interval-ℚ [a,b] [c,d] = add-interval-ℚ [c,d] [a,b] - commutative-add-interval-ℚ _ _ = - eq-interval-ℚ _ _ (commutative-add-ℚ _ _) (commutative-add-ℚ _ _) -``` - -### Unit laws - -```agda -abstract - left-unit-law-add-interval-ℚ : - ([a,b] : interval-ℚ) → add-interval-ℚ zero-zero-interval-ℚ [a,b] = [a,b] - left-unit-law-add-interval-ℚ _ = - eq-interval-ℚ _ _ (left-unit-law-add-ℚ _) (left-unit-law-add-ℚ _) - - right-unit-law-add-interval-ℚ : - ([a,b] : interval-ℚ) → add-interval-ℚ [a,b] zero-zero-interval-ℚ = [a,b] - right-unit-law-add-interval-ℚ _ = - eq-interval-ℚ _ _ (right-unit-law-add-ℚ _) (right-unit-law-add-ℚ _) -``` - -### The commutative monoid of addition of rational intervals - -```agda -semigroup-add-interval-ℚ : Semigroup lzero -semigroup-add-interval-ℚ = - ( set-interval-ℚ , - add-interval-ℚ , - associative-add-interval-ℚ) - -monoid-add-interval-ℚ : Monoid lzero -monoid-add-interval-ℚ = - ( semigroup-add-interval-ℚ , - zero-zero-interval-ℚ , - left-unit-law-add-interval-ℚ , - right-unit-law-add-interval-ℚ) - -commutative-monoid-add-interval-ℚ : Commutative-Monoid lzero -commutative-monoid-add-interval-ℚ = - ( monoid-add-interval-ℚ , - commutative-add-interval-ℚ) -``` diff --git a/src/elementary-number-theory/addition-inhabited-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-inhabited-closed-intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..e3bc9afc8e --- /dev/null +++ b/src/elementary-number-theory/addition-inhabited-closed-intervals-rational-numbers.lagda.md @@ -0,0 +1,223 @@ +# Addition on closed intervals in the rational numbers + +```agda +module elementary-number-theory.addition-inhabited-closed-intervals-rational-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.inequality-rational-numbers +open import elementary-number-theory.inhabited-closed-intervals-rational-numbers +open import elementary-number-theory.rational-numbers + +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.propositional-truncations +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.commutative-monoids +open import group-theory.minkowski-multiplication-commutative-monoids +open import group-theory.monoids +open import group-theory.semigroups + +open import order-theory.inhabited-closed-intervals-posets +``` + +
+ +## Idea + +Given two +[inhabited closed intervals](elementary-number-theory.inhabited-closed-intervals-rational-numbers.md) +`[a, b]` and `[c, d]` in the +[rational numbers](elementary-number-theory.rational-numbers.md), the +[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of +those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) +agrees with the interval `[a + c, b + d]`. + +## Definition + +```agda +add-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → + inhabited-closed-interval-ℚ +add-inhabited-closed-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = + ((a +ℚ c , b +ℚ d) , preserves-leq-add-ℚ a≤b c≤d) +``` + +## Properties + +### Agreement with the Minkowski sum + +```agda +abstract + is-in-minkowski-sum-is-in-add-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + (q : ℚ) → + is-in-inhabited-closed-interval-ℚ + ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( q) → + is-in-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d])) + ( q) + is-in-minkowski-sum-is-in-add-inhabited-closed-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q (a+c≤q , q≤b+d) = + rec-coproduct + ( λ q≤a+d → + intro-exists + ( a , q -ℚ a) + ( ( refl-leq-ℚ a , a≤b) , + ( leq-transpose-left-add-ℚ' _ _ _ a+c≤q , + leq-transpose-right-add-ℚ' _ _ _ q≤a+d) , + inv (is-identity-right-conjugation-add-ℚ _ _))) + ( λ a+d≤q → + intro-exists + ( q -ℚ d , d) + ( ( leq-transpose-left-add-ℚ _ _ _ a+d≤q , + leq-transpose-right-add-ℚ _ _ _ q≤b+d) , + ( c≤d , refl-leq-ℚ d) , + inv (is-section-diff-ℚ _ _))) + ( linear-leq-ℚ q (a +ℚ d)) + + is-in-add-interval-is-in-minkowski-sum-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + (q : ℚ) → + is-in-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d])) + ( q) → + is-in-inhabited-closed-interval-ℚ + ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( q) + is-in-add-interval-is-in-minkowski-sum-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q q∈[a,b]+[c,d] = + let + open + do-syntax-trunc-Prop + ( subtype-inhabited-closed-interval-ℚ + ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( q)) + in do + ((s , t) , (a≤s , s≤b) , (c≤t , t≤d) , q=s+t) ← q∈[a,b]+[c,d] + ( inv-tr (leq-ℚ (a +ℚ c)) q=s+t (preserves-leq-add-ℚ a≤s c≤t) , + inv-tr (λ r → leq-ℚ r (b +ℚ d)) q=s+t (preserves-leq-add-ℚ s≤b t≤d)) + +has-same-elements-minkowski-add-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + has-same-elements-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d])) + ( subtype-inhabited-closed-interval-ℚ + ( add-inhabited-closed-interval-ℚ [a,b] [c,d])) +has-same-elements-minkowski-add-inhabited-closed-interval-ℚ [a,b] [c,d] q = + ( is-in-add-interval-is-in-minkowski-sum-ℚ [a,b] [c,d] q , + is-in-minkowski-sum-is-in-add-inhabited-closed-interval-ℚ [a,b] [c,d] q) + +eq-minkowski-add-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d]) = + subtype-inhabited-closed-interval-ℚ + ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) +eq-minkowski-add-inhabited-closed-interval-ℚ [a,b] [c,d] = + eq-has-same-elements-subtype _ _ + ( has-same-elements-minkowski-add-inhabited-closed-interval-ℚ [a,b] [c,d]) +``` + +### Associativity + +```agda +abstract + associative-add-inhabited-closed-interval-ℚ : + ([a,b] [c,d] [e,f] : inhabited-closed-interval-ℚ) → + add-inhabited-closed-interval-ℚ + ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f]) = + add-inhabited-closed-interval-ℚ + ( [a,b]) + ( add-inhabited-closed-interval-ℚ [c,d] [e,f]) + associative-add-inhabited-closed-interval-ℚ _ _ _ = + eq-inhabited-closed-interval-ℚ _ _ + ( associative-add-ℚ _ _ _) + ( associative-add-ℚ _ _ _) +``` + +### Commutativity + +```agda +abstract + commutative-add-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + add-inhabited-closed-interval-ℚ [a,b] [c,d] = + add-inhabited-closed-interval-ℚ [c,d] [a,b] + commutative-add-inhabited-closed-interval-ℚ _ _ = + eq-inhabited-closed-interval-ℚ _ _ + ( commutative-add-ℚ _ _) + ( commutative-add-ℚ _ _) +``` + +### Unit laws + +```agda +abstract + left-unit-law-add-inhabited-closed-interval-ℚ : + ([a,b] : inhabited-closed-interval-ℚ) → + add-inhabited-closed-interval-ℚ + ( zero-zero-inhabited-closed-interval-ℚ) + ( [a,b]) = + [a,b] + left-unit-law-add-inhabited-closed-interval-ℚ _ = + eq-inhabited-closed-interval-ℚ _ _ + ( left-unit-law-add-ℚ _) + ( left-unit-law-add-ℚ _) + + right-unit-law-add-inhabited-closed-interval-ℚ : + ([a,b] : inhabited-closed-interval-ℚ) → + add-inhabited-closed-interval-ℚ + ( [a,b]) + ( zero-zero-inhabited-closed-interval-ℚ) = + [a,b] + right-unit-law-add-inhabited-closed-interval-ℚ _ = + eq-inhabited-closed-interval-ℚ _ _ + ( right-unit-law-add-ℚ _) + ( right-unit-law-add-ℚ _) +``` + +### The commutative monoid of addition of rational intervals + +```agda +semigroup-add-inhabited-closed-interval-ℚ : Semigroup lzero +semigroup-add-inhabited-closed-interval-ℚ = + ( set-inhabited-closed-interval-ℚ , + add-inhabited-closed-interval-ℚ , + associative-add-inhabited-closed-interval-ℚ) + +monoid-add-inhabited-closed-interval-ℚ : Monoid lzero +monoid-add-inhabited-closed-interval-ℚ = + ( semigroup-add-inhabited-closed-interval-ℚ , + zero-zero-inhabited-closed-interval-ℚ , + left-unit-law-add-inhabited-closed-interval-ℚ , + right-unit-law-add-inhabited-closed-interval-ℚ) + +commutative-monoid-add-inhabited-closed-interval-ℚ : Commutative-Monoid lzero +commutative-monoid-add-inhabited-closed-interval-ℚ = + ( monoid-add-inhabited-closed-interval-ℚ , + commutative-add-inhabited-closed-interval-ℚ) +``` diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md deleted file mode 100644 index 6a9d808296..0000000000 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ /dev/null @@ -1,143 +0,0 @@ -# Closed intervals in the rational numbers - -```agda -module elementary-number-theory.closed-intervals-rational-numbers where -``` - -
Imports - -```agda -open import elementary-number-theory.decidable-total-order-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.nonnegative-rational-numbers -open import elementary-number-theory.rational-numbers -open import elementary-number-theory.strict-inequality-rational-numbers - -open import foundation.dependent-pair-types -open import foundation.identity-types -open import foundation.injective-maps -open import foundation.propositions -open import foundation.sets -open import foundation.subtypes -open import foundation.universe-levels - -open import order-theory.closed-interval-preserving-maps-posets -open import order-theory.closed-intervals-posets -open import order-theory.decidable-total-orders -``` - -
- -## Idea - -A -{{#concept "closed interval" Disambiguation="in the rational numbers" Agda=interval-ℚ}} -in the rational numbers is a -[closed interval](order-theory.closed-intervals-posets.md) in the -[poset](elementary-number-theory.inequality-rational-numbers.md) of -[rational numbers](elementary-number-theory.rational-numbers.md). - -## Definition - -```agda -interval-ℚ : UU lzero -interval-ℚ = closed-interval-Poset ℚ-Poset - -lower-bound-interval-ℚ : interval-ℚ → ℚ -lower-bound-interval-ℚ = lower-bound-closed-interval-Poset ℚ-Poset - -upper-bound-interval-ℚ : interval-ℚ → ℚ -upper-bound-interval-ℚ = upper-bound-closed-interval-Poset ℚ-Poset - -subtype-interval-ℚ : interval-ℚ → subtype lzero ℚ -subtype-interval-ℚ = subtype-closed-interval-Poset ℚ-Poset - -is-in-interval-ℚ : interval-ℚ → ℚ → UU lzero -is-in-interval-ℚ [a,b] = is-in-subtype (subtype-interval-ℚ [a,b]) - -is-closed-interval-map-prop-ℚ : - (ℚ → ℚ) → interval-ℚ → interval-ℚ → Prop lzero -is-closed-interval-map-prop-ℚ = - is-closed-interval-map-prop-Poset ℚ-Poset ℚ-Poset - -is-below-prop-interval-ℚ : interval-ℚ → subtype lzero ℚ -is-below-prop-interval-ℚ ((a , _) , _) b = le-ℚ-Prop b a - -is-above-prop-interval-ℚ : interval-ℚ → subtype lzero ℚ -is-above-prop-interval-ℚ ((_ , a) , _) b = le-ℚ-Prop a b - -nonnegative-width-interval-ℚ : interval-ℚ → ℚ⁰⁺ -nonnegative-width-interval-ℚ ((a , b) , a≤b) = - nonnegative-diff-leq-ℚ a b a≤b - -width-interval-ℚ : interval-ℚ → ℚ -width-interval-ℚ [a,b] = - rational-ℚ⁰⁺ (nonnegative-width-interval-ℚ [a,b]) - -is-injective-subtype-interval-ℚ : - is-injective subtype-interval-ℚ -is-injective-subtype-interval-ℚ = - is-injective-subtype-closed-interval-Poset ℚ-Poset -``` - -### Important ranges - -```agda -zero-zero-interval-ℚ : interval-ℚ -zero-zero-interval-ℚ = ((zero-ℚ , zero-ℚ) , refl-leq-ℚ zero-ℚ) - -one-one-interval-ℚ : interval-ℚ -one-one-interval-ℚ = ((one-ℚ , one-ℚ) , refl-leq-ℚ one-ℚ) -``` - -## Properties - -### Characterization of equality - -```agda -eq-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - lower-bound-interval-ℚ [a,b] = lower-bound-interval-ℚ [c,d] → - upper-bound-interval-ℚ [a,b] = upper-bound-interval-ℚ [c,d] → - [a,b] = [c,d] -eq-interval-ℚ = eq-closed-interval-Poset ℚ-Poset - -set-interval-ℚ : Set lzero -set-interval-ℚ = set-closed-interval-Poset ℚ-Poset -``` - -### Unordered intervals - -```agda -unordered-interval-ℚ : ℚ → ℚ → interval-ℚ -unordered-interval-ℚ a b = - ( (min-ℚ a b , max-ℚ a b) , - min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order a b) - -abstract - unordered-closed-interval-leq-ℚ : - (p q : ℚ) → (p≤q : leq-ℚ p q) → - unordered-interval-ℚ p q = ((p , q) , p≤q) - unordered-closed-interval-leq-ℚ p q p≤q = - eq-interval-ℚ _ _ - ( left-leq-right-min-ℚ p q p≤q) - ( left-leq-right-max-ℚ p q p≤q) - - unordered-closed-interval-leq-ℚ' : - (p q : ℚ) → (q≤p : leq-ℚ q p) → - unordered-interval-ℚ p q = ((q , p) , q≤p) - unordered-closed-interval-leq-ℚ' p q q≤p = - eq-interval-ℚ _ _ - ( right-leq-left-min-ℚ p q q≤p) - ( right-leq-left-max-ℚ p q q≤p) -``` - -### Maps from rational intervals to rational intervals - -```agda -is-interval-map-ℚ : - (ℚ → ℚ) → ([a,b] [c,d] : interval-ℚ) → UU lzero -is-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset -``` diff --git a/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..1719f5178d --- /dev/null +++ b/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md @@ -0,0 +1,154 @@ +# Inhabited closed intervals in the rational numbers + +```agda +module elementary-number-theory.inhabited-closed-intervals-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.decidable-total-order-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.nonnegative-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.injective-maps +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import order-theory.closed-interval-preserving-maps-posets +open import order-theory.decidable-total-orders +open import order-theory.inhabited-closed-intervals-posets +``` + +
+ +## Idea + +A +{{#concept "closed interval" Disambiguation="in the rational numbers" Agda=inhabited-closed-interval-ℚ}} +in the rational numbers is a +[closed interval](order-theory.closed-intervals-posets.md) in the +[poset](elementary-number-theory.inequality-rational-numbers.md) of +[rational numbers](elementary-number-theory.rational-numbers.md). + +## Definition + +```agda +inhabited-closed-interval-ℚ : UU lzero +inhabited-closed-interval-ℚ = inhabited-closed-interval-Poset ℚ-Poset + +lower-bound-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ → ℚ +lower-bound-inhabited-closed-interval-ℚ = + lower-bound-inhabited-closed-interval-Poset ℚ-Poset + +upper-bound-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ → ℚ +upper-bound-inhabited-closed-interval-ℚ = + upper-bound-inhabited-closed-interval-Poset ℚ-Poset + +subtype-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → subtype lzero ℚ +subtype-inhabited-closed-interval-ℚ = + subtype-inhabited-closed-interval-Poset ℚ-Poset + +is-in-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ → ℚ → UU lzero +is-in-inhabited-closed-interval-ℚ [a,b] = + is-in-subtype (subtype-inhabited-closed-interval-ℚ [a,b]) + +is-closed-interval-map-prop-ℚ : + (ℚ → ℚ) → inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → + Prop lzero +is-closed-interval-map-prop-ℚ = + is-closed-interval-map-prop-Poset ℚ-Poset ℚ-Poset + +is-below-prop-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → subtype lzero ℚ +is-below-prop-inhabited-closed-interval-ℚ ((a , _) , _) b = le-ℚ-Prop b a + +is-above-prop-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → subtype lzero ℚ +is-above-prop-inhabited-closed-interval-ℚ ((_ , a) , _) b = le-ℚ-Prop a b + +nonnegative-width-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → ℚ⁰⁺ +nonnegative-width-inhabited-closed-interval-ℚ ((a , b) , a≤b) = + nonnegative-diff-leq-ℚ a b a≤b + +width-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ → ℚ +width-inhabited-closed-interval-ℚ [a,b] = + rational-ℚ⁰⁺ (nonnegative-width-inhabited-closed-interval-ℚ [a,b]) + +is-injective-subtype-inhabited-closed-interval-ℚ : + is-injective subtype-inhabited-closed-interval-ℚ +is-injective-subtype-inhabited-closed-interval-ℚ = + is-injective-subtype-inhabited-closed-interval-Poset ℚ-Poset +``` + +### Important ranges + +```agda +zero-zero-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ +zero-zero-inhabited-closed-interval-ℚ = ((zero-ℚ , zero-ℚ) , refl-leq-ℚ zero-ℚ) + +one-one-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ +one-one-inhabited-closed-interval-ℚ = ((one-ℚ , one-ℚ) , refl-leq-ℚ one-ℚ) +``` + +## Properties + +### Characterization of equality + +```agda +eq-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + ( lower-bound-inhabited-closed-interval-ℚ [a,b] = + lower-bound-inhabited-closed-interval-ℚ [c,d]) → + ( upper-bound-inhabited-closed-interval-ℚ [a,b] = + upper-bound-inhabited-closed-interval-ℚ [c,d]) → + [a,b] = [c,d] +eq-inhabited-closed-interval-ℚ = eq-inhabited-closed-interval-Poset ℚ-Poset + +set-inhabited-closed-interval-ℚ : Set lzero +set-inhabited-closed-interval-ℚ = set-inhabited-closed-interval-Poset ℚ-Poset +``` + +### Unordered intervals + +```agda +unordered-inhabited-closed-interval-ℚ : ℚ → ℚ → inhabited-closed-interval-ℚ +unordered-inhabited-closed-interval-ℚ a b = + ( (min-ℚ a b , max-ℚ a b) , + min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order a b) + +abstract + unordered-closed-interval-leq-ℚ : + (p q : ℚ) → (p≤q : leq-ℚ p q) → + unordered-inhabited-closed-interval-ℚ p q = ((p , q) , p≤q) + unordered-closed-interval-leq-ℚ p q p≤q = + eq-inhabited-closed-interval-ℚ _ _ + ( left-leq-right-min-ℚ p q p≤q) + ( left-leq-right-max-ℚ p q p≤q) + + unordered-closed-interval-leq-ℚ' : + (p q : ℚ) → (q≤p : leq-ℚ q p) → + unordered-inhabited-closed-interval-ℚ p q = ((q , p) , q≤p) + unordered-closed-interval-leq-ℚ' p q q≤p = + eq-inhabited-closed-interval-ℚ _ _ + ( right-leq-left-min-ℚ p q q≤p) + ( right-leq-left-max-ℚ p q q≤p) +``` + +### Maps from rational intervals to rational intervals + +```agda +is-closed-interval-map-ℚ : + (ℚ → ℚ) → ([a,b] [c,d] : inhabited-closed-interval-ℚ) → UU lzero +is-closed-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset +``` 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 deleted file mode 100644 index fa82e41a72..0000000000 --- a/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md +++ /dev/null @@ -1,698 +0,0 @@ -# Multiplication on closed intervals in the rational numbers - -```agda -module elementary-number-theory.multiplication-closed-intervals-rational-numbers where -``` - -
Imports - -```agda -open import elementary-number-theory.addition-closed-intervals-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.closed-intervals-rational-numbers -open import elementary-number-theory.decidable-total-order-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-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.multiplicative-group-of-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.positive-and-negative-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.binary-transport -open import foundation.coproduct-types -open import foundation.dependent-pair-types -open import foundation.disjunction -open import foundation.existential-quantification -open import foundation.function-extensionality -open import foundation.identity-types -open import foundation.images-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.commutative-monoids -open import group-theory.minkowski-multiplication-commutative-monoids -open import group-theory.monoids -open import group-theory.semigroups - -open import order-theory.closed-intervals-total-orders -open import order-theory.decidable-total-orders -open import order-theory.total-orders -``` - -
- -## Idea - -Given two -[intervals](elementary-number-theory.closed-intervals-rational-numbers.md) -`[a, b]` and `[c, d]` in the -[rational numbers](elementary-number-theory.rational-numbers.md), the -[Minkowski product](group-theory.minkowski-multiplication-commutative-monoids.md) -of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) -agrees with the interval `[min(ac, ad, bc, bd), max(ac, ad, bc, bd)]`. - -Notably, this is because nonzero rational numbers are -[invertible](elementary-number-theory.multiplicative-group-of-rational-numbers.md); -this would not be true for the -[natural numbers](elementary-number-theory.natural-numbers.md), as -`[2, 2] * [a, b]` in the natural numbers is not the full interval `[2a, 2b]` but -only the even elements. - -## Definition - -```agda -mul-interval-ℚ-ℚ : ℚ → interval-ℚ → interval-ℚ -mul-interval-ℚ-ℚ a ((b , c) , _) = - unordered-interval-ℚ (a *ℚ b) (a *ℚ c) - -mul-ℚ-interval-ℚ : interval-ℚ → ℚ → interval-ℚ -mul-ℚ-interval-ℚ ((a , b) , _) c = - unordered-interval-ℚ (a *ℚ c) (b *ℚ c) - -mul-interval-ℚ : - interval-ℚ → interval-ℚ → interval-ℚ -mul-interval-ℚ ((a , b) , _) ((c , d) , _) = - minimal-closed-interval-cover-of-four-elements-Total-Order - ( ℚ-Total-Order) - ( a *ℚ c) - ( a *ℚ d) - ( b *ℚ c) - ( b *ℚ d) - -lower-bound-mul-interval-ℚ : interval-ℚ → interval-ℚ → ℚ -lower-bound-mul-interval-ℚ [a,b] [c,d] = - lower-bound-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) - -upper-bound-mul-interval-ℚ : interval-ℚ → interval-ℚ → ℚ -upper-bound-mul-interval-ℚ [a,b] [c,d] = - upper-bound-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) -``` - -## Properties - -### Multiplication of an interval by a rational number - -#### Multiplication of an interval by a negative rational number - -```agda -mul-interval-ℚ-ℚ⁻ : interval-ℚ → ℚ⁻ → interval-ℚ -mul-interval-ℚ-ℚ⁻ ((p , q) , p≤q) s⁻@(s , _) = - ((q *ℚ s , p *ℚ s) , reverses-leq-right-mul-ℚ⁻ s⁻ _ _ p≤q) - -abstract - mul-is-in-interval-ℚ-ℚ⁻ : - ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → is-in-interval-ℚ [p,q] s → - is-in-interval-ℚ - ( mul-interval-ℚ-ℚ⁻ [p,q] r) - ( s *ℚ rational-ℚ⁻ r) - mul-is-in-interval-ℚ-ℚ⁻ - ((p , q) , p≤q) r s (p≤s , s≤q) = - ( reverses-leq-right-mul-ℚ⁻ r _ _ s≤q , - reverses-leq-right-mul-ℚ⁻ r _ _ p≤s) - - is-in-im-is-in-mul-interval-ℚ-ℚ⁻ : - ([p,q] : interval-ℚ) → (r : ℚ⁻) → (s : ℚ) → - is-in-interval-ℚ - ( mul-interval-ℚ-ℚ⁻ [p,q] r) - ( s) → - is-in-im-subtype (mul-ℚ' (rational-ℚ⁻ r)) (subtype-interval-ℚ [p,q]) s - is-in-im-is-in-mul-interval-ℚ-ℚ⁻ - ((p , q) , p≤q) r⁻@(r , _) s (qr≤s , s≤pr) = - let r⁻¹ = inv-ℚ⁻ r⁻ - in - intro-exists - ( ( s *ℚ rational-ℚ⁻ r⁻¹ , - tr - ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁻ r⁻¹)) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ - right-unit-law-mul-ℚ p) - ( reverses-leq-right-mul-ℚ⁻ r⁻¹ s (p *ℚ r) s≤pr) , - tr - ( leq-ℚ (s *ℚ rational-ℚ⁻ r⁻¹)) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ - right-unit-law-mul-ℚ q) - ( reverses-leq-right-mul-ℚ⁻ r⁻¹ (q *ℚ r) s qr≤s))) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (left-inverse-law-mul-ℚ⁻ r⁻) ∙ - right-unit-law-mul-ℚ s) - - is-interval-map-mul-ℚ⁻ : - (q : ℚ⁻) ([a,b] : interval-ℚ) → - is-interval-map-ℚ - ( mul-ℚ' (rational-ℚ⁻ q)) - ( [a,b]) - ( mul-interval-ℚ-ℚ⁻ [a,b] q) - is-interval-map-mul-ℚ⁻ q [a,b] = - ( ind-Σ (mul-is-in-interval-ℚ-ℚ⁻ [a,b] q) , - ind-Σ (is-in-im-is-in-mul-interval-ℚ-ℚ⁻ [a,b] q)) -``` - -#### Multiplication of an interval by a positive rational number - -```agda -mul-ℚ⁺-interval-ℚ : interval-ℚ → ℚ⁺ → interval-ℚ -mul-ℚ⁺-interval-ℚ ((p , q) , p≤q) s⁺@(s , _) = - ((p *ℚ s , q *ℚ s) , preserves-leq-right-mul-ℚ⁺ s⁺ _ _ p≤q) - -abstract - mul-is-in-interval-ℚ-ℚ⁺ : - ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → is-in-interval-ℚ [p,q] s → - is-in-interval-ℚ - ( mul-ℚ⁺-interval-ℚ [p,q] r) - ( s *ℚ rational-ℚ⁺ r) - mul-is-in-interval-ℚ-ℚ⁺ - ((p , q) , p≤q) r s (p≤s , s≤q) = - ( preserves-leq-right-mul-ℚ⁺ r _ _ p≤s , - preserves-leq-right-mul-ℚ⁺ r _ _ s≤q) - - is-in-im-is-in-mul-ℚ⁺-interval-ℚ : - ([p,q] : interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → - is-in-interval-ℚ - ( mul-ℚ⁺-interval-ℚ [p,q] r) - ( s) → - is-in-im-subtype (mul-ℚ' (rational-ℚ⁺ r)) (subtype-interval-ℚ [p,q]) s - is-in-im-is-in-mul-ℚ⁺-interval-ℚ - ((p , q) , p≤q) r⁺@(r , _) s (pr≤s , s≤qr) = - let r⁻¹ = inv-ℚ⁺ r⁺ - in - intro-exists - ( ( s *ℚ rational-ℚ⁺ r⁻¹ , - tr - ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁺ r⁻¹)) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ - right-unit-law-mul-ℚ p) - ( preserves-leq-right-mul-ℚ⁺ r⁻¹ (p *ℚ r) s pr≤s) , - tr - ( leq-ℚ (s *ℚ rational-ℚ⁺ r⁻¹)) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ - right-unit-law-mul-ℚ q) - ( preserves-leq-right-mul-ℚ⁺ r⁻¹ s (q *ℚ r) s≤qr))) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (ap rational-ℚ⁺ (left-inverse-law-mul-ℚ⁺ r⁺)) ∙ - right-unit-law-mul-ℚ s) - - is-interval-map-left-mul-ℚ⁺ : - (q : ℚ⁺) ([a,b] : interval-ℚ) → - is-interval-map-ℚ - ( mul-ℚ' (rational-ℚ⁺ q)) - ( [a,b]) - ( mul-ℚ⁺-interval-ℚ [a,b] q) - is-interval-map-left-mul-ℚ⁺ q [a,b] = - ( ind-Σ (mul-is-in-interval-ℚ-ℚ⁺ [a,b] q) , - ind-Σ (is-in-im-is-in-mul-ℚ⁺-interval-ℚ [a,b] q)) -``` - -#### Multiplication of an interval by zero - -```agda -abstract - is-in-im-mul-is-in-zero-zero-interval-ℚ : - ([p,q] : interval-ℚ) → (s : ℚ) → - is-in-interval-ℚ - ( zero-zero-interval-ℚ) - ( s) → - is-in-im-subtype (mul-ℚ' zero-ℚ) (subtype-interval-ℚ [p,q]) s - is-in-im-mul-is-in-zero-zero-interval-ℚ - ((p , q) , p≤q) s (0≤s , s≤0) = - intro-exists - ( p , refl-leq-ℚ p , p≤q) - ( right-zero-law-mul-ℚ p ∙ antisymmetric-leq-ℚ _ _ 0≤s s≤0) - - is-interval-map-mul-zero-ℚ : - ([a,b] : interval-ℚ) → - is-interval-map-ℚ - ( mul-ℚ' zero-ℚ) - ( [a,b]) - ( zero-zero-interval-ℚ) - is-interval-map-mul-zero-ℚ [a,b] = - ( ( λ r → - inv-tr - ( is-in-interval-ℚ zero-zero-interval-ℚ) - ( right-zero-law-mul-ℚ _) - ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) , - ind-Σ (is-in-im-mul-is-in-zero-zero-interval-ℚ [a,b])) -``` - -#### Multiplication of an interval by any rational number - -```agda -abstract - mul-is-negative-ℚ-interval-ℚ : - ([p,q] : interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → - mul-ℚ-interval-ℚ [p,q] r = - mul-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) - mul-is-negative-ℚ-interval-ℚ [p,q]@((p , q) , p≤q) r neg-r = - unordered-closed-interval-leq-ℚ' _ _ - ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) - - mul-is-positive-ℚ-interval-ℚ : - ([p,q] : interval-ℚ) (r : ℚ) (pos-r : is-positive-ℚ r) → - mul-ℚ-interval-ℚ [p,q] r = - mul-ℚ⁺-interval-ℚ [p,q] (r , pos-r) - mul-is-positive-ℚ-interval-ℚ [p,q]@((p , q) , p≤q) r pos-r = - unordered-closed-interval-leq-ℚ _ _ - ( preserves-leq-right-mul-ℚ⁺ (r , pos-r) _ _ p≤q) - - mul-is-zero-ℚ-interval-ℚ : - ([p,q] : interval-ℚ) (r : ℚ) (is-zero-r : is-zero-ℚ r) → - mul-ℚ-interval-ℚ [p,q] r = zero-zero-interval-ℚ - mul-is-zero-ℚ-interval-ℚ ((p , q) , p≤q) _ refl = - eq-interval-ℚ _ _ - ( ap-min-ℚ - ( right-zero-law-mul-ℚ _) - ( right-zero-law-mul-ℚ _) ∙ - idempotent-min-ℚ zero-ℚ) - ( ap-max-ℚ - ( right-zero-law-mul-ℚ _) - ( right-zero-law-mul-ℚ _) ∙ - idempotent-max-ℚ zero-ℚ) - - mul-is-in-interval-ℚ-ℚ : - ([p,q] : interval-ℚ) → (r s : ℚ) → is-in-interval-ℚ [p,q] s → - is-in-interval-ℚ - ( mul-ℚ-interval-ℚ [p,q] r) - ( s *ℚ r) - mul-is-in-interval-ℚ-ℚ [p,q] r s s∈[p,q] = - trichotomy-sign-ℚ r - ( λ neg-r → - inv-tr - ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) - ( mul-is-negative-ℚ-interval-ℚ [p,q] r neg-r) - ( mul-is-in-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) s s∈[p,q])) - ( λ r=0 → - binary-tr - ( is-in-interval-ℚ) - ( inv (mul-is-zero-ℚ-interval-ℚ [p,q] r r=0)) - ( inv (ap-mul-ℚ refl r=0 ∙ right-zero-law-mul-ℚ s)) - ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) - ( λ pos-r → - inv-tr - ( λ [x,y] → is-in-interval-ℚ [x,y] (s *ℚ r)) - ( mul-is-positive-ℚ-interval-ℚ [p,q] r pos-r) - ( mul-is-in-interval-ℚ-ℚ⁺ [p,q] (r , pos-r) s s∈[p,q])) - - is-in-im-mul-is-in-interval-ℚ-ℚ : - ([p,q] : interval-ℚ) (r s : ℚ) → - is-in-interval-ℚ (mul-ℚ-interval-ℚ [p,q] r) s → - is-in-im-subtype (mul-ℚ' r) (subtype-interval-ℚ [p,q]) s - is-in-im-mul-is-in-interval-ℚ-ℚ [p,q] r s s∈[min-pr-qr,max-pr-qr] = - trichotomy-sign-ℚ r - ( λ neg-r → - is-in-im-is-in-mul-interval-ℚ-ℚ⁻ - ( [p,q]) - ( r , neg-r) - ( s) - ( tr - ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( mul-is-negative-ℚ-interval-ℚ [p,q] r neg-r) - ( s∈[min-pr-qr,max-pr-qr]))) - ( λ r=0 → - inv-tr - ( λ t → is-in-im-subtype (mul-ℚ' t) (subtype-interval-ℚ [p,q]) s) - ( r=0) - ( is-in-im-mul-is-in-zero-zero-interval-ℚ - ( [p,q]) - ( s) - ( tr - ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( mul-is-zero-ℚ-interval-ℚ [p,q] r r=0) - ( s∈[min-pr-qr,max-pr-qr])))) - ( λ pos-r → - is-in-im-is-in-mul-ℚ⁺-interval-ℚ - ( [p,q]) - ( r , pos-r) - ( s) - ( tr - ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( mul-is-positive-ℚ-interval-ℚ [p,q] r pos-r) - ( s∈[min-pr-qr,max-pr-qr]))) - - is-interval-map-mul-ℚ-interval-ℚ : - (q : ℚ) ([a,b] : interval-ℚ) → - is-interval-map-ℚ (mul-ℚ' q) [a,b] (mul-ℚ-interval-ℚ [a,b] q) - is-interval-map-mul-ℚ-interval-ℚ q [a,b] = - ( ind-Σ (mul-is-in-interval-ℚ-ℚ [a,b] q) , - ind-Σ (is-in-im-mul-is-in-interval-ℚ-ℚ [a,b] q)) -``` - -### Multiplication of a rational number and an interval - -```agda -abstract - commute-mul-ℚ-interval-ℚ : - ([p,q] : interval-ℚ) (r : ℚ) → - mul-ℚ-interval-ℚ [p,q] r = mul-interval-ℚ-ℚ r [p,q] - commute-mul-ℚ-interval-ℚ [p,q] r = - eq-interval-ℚ _ _ - ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - - mul-ℚ-is-in-interval-ℚ : - ([p,q] : interval-ℚ) → (r s : ℚ) → is-in-interval-ℚ [p,q] s → - is-in-interval-ℚ - ( mul-interval-ℚ-ℚ r [p,q]) - ( r *ℚ s) - mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[p,q] = - binary-tr - ( is-in-interval-ℚ) - ( commute-mul-ℚ-interval-ℚ [p,q] r) - ( commutative-mul-ℚ s r) - ( mul-is-in-interval-ℚ-ℚ [p,q] r s s∈[p,q]) - - is-in-im-mul-ℚ-is-in-interval-ℚ : - ([p,q] : interval-ℚ) (r s : ℚ) → - is-in-interval-ℚ - ( mul-interval-ℚ-ℚ r [p,q]) - ( s) → - is-in-im-subtype (mul-ℚ r) (subtype-interval-ℚ [p,q]) s - is-in-im-mul-ℚ-is-in-interval-ℚ [p,q] r s s∈[min-rp-rq,max-rp-rq] = - tr - ( λ f → is-in-im-subtype f (subtype-interval-ℚ [p,q]) s) - ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) - ( is-in-im-mul-is-in-interval-ℚ-ℚ [p,q] r s - ( inv-tr - ( λ [x,y] → is-in-interval-ℚ [x,y] s) - ( commute-mul-ℚ-interval-ℚ [p,q] r) - ( s∈[min-rp-rq,max-rp-rq]))) - - is-interval-map-mul-interval-ℚ-ℚ : - (q : ℚ) ([a,b] : interval-ℚ) → - is-interval-map-ℚ (mul-ℚ q) [a,b] (mul-interval-ℚ-ℚ q [a,b]) - is-interval-map-mul-interval-ℚ-ℚ q [a,b] = - binary-tr - ( λ f i → is-interval-map-ℚ f [a,b] i) - ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) - ( commute-mul-ℚ-interval-ℚ [a,b] q) - ( is-interval-map-mul-ℚ-interval-ℚ q [a,b]) -``` - -### Multiplication of two closed intervals - -```agda -abstract - is-in-mul-interval-mul-is-in-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) (p q : ℚ) → - is-in-interval-ℚ [a,b] p → is-in-interval-ℚ [c,d] q → - is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) (p *ℚ q) - is-in-mul-interval-mul-is-in-interval-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) p q - p∈[a,b]@(a≤p , p≤b) q∈[c,d]@(c≤q , q≤d) = - let - (min-aq-bq≤pq , pq≤max-aq-bq) = - mul-is-in-interval-ℚ-ℚ [a,b] q p p∈[a,b] - (min-ac-ad≤aq , aq≤max-ac-ad) = - mul-ℚ-is-in-interval-ℚ [c,d] a q q∈[c,d] - (min-bc-bd≤bq , bq≤max-bc-bd) = - mul-ℚ-is-in-interval-ℚ [c,d] b q q∈[c,d] - in - ( transitive-leq-ℚ - ( lower-bound-mul-interval-ℚ [a,b] [c,d]) - ( _) - ( p *ℚ q) - ( min-aq-bq≤pq) - ( min-leq-leq-ℚ _ _ _ _ min-ac-ad≤aq min-bc-bd≤bq) , - transitive-leq-ℚ - ( p *ℚ q) - ( _) - ( upper-bound-mul-interval-ℚ [a,b] [c,d]) - ( max-leq-leq-ℚ _ _ _ _ aq≤max-ac-ad bq≤max-bc-bd) - ( pq≤max-aq-bq)) - - is-in-minkowski-product-is-in-mul-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → (q : ℚ) → - is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) q → - is-in-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d])) - ( q) - is-in-minkowski-product-is-in-mul-interval-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) x x∈range = - let - motive = - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d]) - ( x) - open do-syntax-trunc-Prop motive - case-[ac,ad] x∈[ac,ad] = - do - ((q , c≤q , q≤d) , aq=x) ← - is-in-im-mul-ℚ-is-in-interval-ℚ [c,d] a x x∈[ac,ad] - intro-exists - ( a , q) - ( (refl-leq-ℚ a , a≤b) , (c≤q , q≤d) , inv aq=x) - case-[ac,bc] x∈[ac,bc] = - do - ((p , a≤p , p≤b) , pc=x) ← - is-in-im-mul-is-in-interval-ℚ-ℚ [a,b] c x x∈[ac,bc] - intro-exists - ( p , c) - ( (a≤p , p≤b) , (refl-leq-ℚ c , c≤d) , inv pc=x) - case-[bc,bd] x∈[bc,bd] = - do - ((q , c≤q , q≤d) , bq=x) ← - is-in-im-mul-ℚ-is-in-interval-ℚ [c,d] b x x∈[bc,bd] - intro-exists - ( b , q) - ( (a≤b , refl-leq-ℚ b) , (c≤q , q≤d) , inv bq=x) - case-[ad,bd] x∈[ad,bd] = - do - ((p , a≤p , p≤b) , pd=x) ← - is-in-im-mul-is-in-interval-ℚ-ℚ [a,b] d x x∈[ad,bd] - intro-exists - ( p , d) - ( (a≤p , p≤b) , (c≤d , refl-leq-ℚ d) , inv pd=x) - in - elim-disjunction motive - ( elim-disjunction motive case-[ac,ad] case-[ac,bc]) - ( elim-disjunction motive case-[ad,bd] case-[bc,bd]) - ( cover-minimal-closed-interval-cover-of-four-elements-Total-Order - ( ℚ-Total-Order) - ( a *ℚ c) - ( a *ℚ d) - ( b *ℚ c) - ( b *ℚ d) - ( x) - ( x∈range)) -``` - -### Agreement with the Minkowski product - -```agda -abstract - has-same-elements-minkowski-mul-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - has-same-elements-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d])) - ( subtype-interval-ℚ (mul-interval-ℚ [a,b] [c,d])) - pr1 (has-same-elements-minkowski-mul-interval-ℚ [a,b] [c,d] x) = - rec-trunc-Prop - ( subtype-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) x) - ( λ ((p , q) , p∈[a,b] , q∈[c,d] , x=pq) → - inv-tr - ( is-in-interval-ℚ (mul-interval-ℚ [a,b] [c,d])) - ( x=pq) - ( is-in-mul-interval-mul-is-in-interval-ℚ - ( [a,b]) - ( [c,d]) - ( p) - ( q) - ( p∈[a,b]) - ( q∈[c,d]))) - pr2 (has-same-elements-minkowski-mul-interval-ℚ [a,b] [c,d] x) = - is-in-minkowski-product-is-in-mul-interval-ℚ [a,b] [c,d] x - - eq-minkowski-mul-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-interval-ℚ [a,b]) - ( subtype-interval-ℚ [c,d]) = - subtype-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) - eq-minkowski-mul-interval-ℚ [a,b] [c,d] = - eq-has-same-elements-subtype _ _ - ( has-same-elements-minkowski-mul-interval-ℚ [a,b] [c,d]) -``` - -### Associativity of multiplication of intervals - -```agda -module _ - ([a,b] [c,d] [e,f] : interval-ℚ) - where - - abstract - has-same-elements-associative-mul-interval-ℚ : - has-same-elements-subtype - ( subtype-interval-ℚ - ( mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f])) - ( subtype-interval-ℚ - ( mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f]))) - pr1 (has-same-elements-associative-mul-interval-ℚ x) x∈<[a,b][c,d]>[e,f] = - let - open - do-syntax-trunc-Prop - ( subtype-interval-ℚ - ( mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f])) - ( x)) - in do - ((p , q) , p∈[a,b][c,d] , q∈[e,f] , x=pq) ← - is-in-minkowski-product-is-in-mul-interval-ℚ - ( mul-interval-ℚ [a,b] [c,d]) - ( [e,f]) - ( x) - ( x∈<[a,b][c,d]>[e,f]) - ((r , s) , r∈[a,b] , s∈[c,d] , p=rs) ← - is-in-minkowski-product-is-in-mul-interval-ℚ - ( [a,b]) - ( [c,d]) - ( p) - ( p∈[a,b][c,d]) - inv-tr - ( is-in-interval-ℚ - ( mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f]))) - ( x=pq ∙ ap-mul-ℚ p=rs refl ∙ associative-mul-ℚ _ _ _) - ( is-in-mul-interval-mul-is-in-interval-ℚ - ( [a,b]) - ( mul-interval-ℚ [c,d] [e,f]) - ( r) - ( s *ℚ q) - ( r∈[a,b]) - ( is-in-mul-interval-mul-is-in-interval-ℚ - ( [c,d]) - ( [e,f]) - ( s) - ( q) - ( s∈[c,d]) - ( q∈[e,f]))) - pr2 (has-same-elements-associative-mul-interval-ℚ x) x∈[a,b]<[c,d][e,f]> = - let - open - do-syntax-trunc-Prop - ( subtype-interval-ℚ - ( mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f]) - ( x)) - in do - ((p , q) , p∈[a,b] , q∈[c,d][e,f] , x=pq) ← - is-in-minkowski-product-is-in-mul-interval-ℚ - ( [a,b]) - ( mul-interval-ℚ [c,d] [e,f]) - ( x) - ( x∈[a,b]<[c,d][e,f]>) - ((r , s) , r∈[c,d] , s∈[e,f] , q=rs) ← - is-in-minkowski-product-is-in-mul-interval-ℚ - ( [c,d]) - ( [e,f]) - ( q) - ( q∈[c,d][e,f]) - inv-tr - ( is-in-interval-ℚ - ( mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f])) - ( x=pq ∙ ap-mul-ℚ refl q=rs ∙ inv (associative-mul-ℚ _ _ _)) - ( is-in-mul-interval-mul-is-in-interval-ℚ - ( mul-interval-ℚ [a,b] [c,d]) - ( [e,f]) - ( p *ℚ r) - ( s) - ( is-in-mul-interval-mul-is-in-interval-ℚ - ( [a,b]) - ( [c,d]) - ( p) - ( r) - ( p∈[a,b]) - ( r∈[c,d])) - ( s∈[e,f])) - - associative-mul-interval-ℚ : - mul-interval-ℚ (mul-interval-ℚ [a,b] [c,d]) [e,f] = - mul-interval-ℚ [a,b] (mul-interval-ℚ [c,d] [e,f]) - associative-mul-interval-ℚ = - is-injective-subtype-interval-ℚ - ( eq-has-same-elements-subtype _ _ - ( has-same-elements-associative-mul-interval-ℚ)) -``` - -### Commutativity of multiplication of intervals - -```agda -abstract - commutative-mul-interval-ℚ : - ([a,b] [c,d] : interval-ℚ) → - mul-interval-ℚ [a,b] [c,d] = mul-interval-ℚ [c,d] [a,b] - commutative-mul-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = - eq-interval-ℚ _ _ - ( interchange-law-min-Total-Order ℚ-Total-Order _ _ _ _ ∙ - ap-min-ℚ - ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) - ( interchange-law-max-Total-Order ℚ-Total-Order _ _ _ _ ∙ - ap-max-ℚ - ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) -``` - -### Unit laws of multiplication of intervals - -```agda -abstract - left-unit-law-mul-interval-ℚ : - ([a,b] : interval-ℚ) → mul-interval-ℚ one-one-interval-ℚ [a,b] = [a,b] - left-unit-law-mul-interval-ℚ ((a , b) , a≤b) = - eq-interval-ℚ _ _ - ( idempotent-min-ℚ _ ∙ - ap-min-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ - left-leq-right-min-ℚ _ _ a≤b) - ( idempotent-max-ℚ _ ∙ - ap-max-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ - left-leq-right-max-ℚ _ _ a≤b) - - right-unit-law-mul-interval-ℚ : - ([a,b] : interval-ℚ) → mul-interval-ℚ [a,b] one-one-interval-ℚ = [a,b] - right-unit-law-mul-interval-ℚ [a,b] = - commutative-mul-interval-ℚ [a,b] one-one-interval-ℚ ∙ - left-unit-law-mul-interval-ℚ [a,b] -``` - -### The commutative monoid of multiplication of rational intervals - -```agda -semigroup-mul-interval-ℚ : Semigroup lzero -semigroup-mul-interval-ℚ = - ( set-interval-ℚ , - mul-interval-ℚ , - associative-mul-interval-ℚ) - -monoid-mul-interval-ℚ : Monoid lzero -monoid-mul-interval-ℚ = - ( semigroup-mul-interval-ℚ , - one-one-interval-ℚ , - left-unit-law-mul-interval-ℚ , - right-unit-law-mul-interval-ℚ) - -commutative-monoid-mul-interval-ℚ : Commutative-Monoid lzero -commutative-monoid-mul-interval-ℚ = - ( monoid-mul-interval-ℚ , - commutative-mul-interval-ℚ) -``` diff --git a/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..a2c8fc2132 --- /dev/null +++ b/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md @@ -0,0 +1,849 @@ +# Multiplication on inhabited closed intervals in the rational numbers + +```agda +module elementary-number-theory.multiplication-inhabited-closed-intervals-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-inhabited-closed-intervals-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.decidable-total-order-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.inhabited-closed-intervals-rational-numbers +open import elementary-number-theory.maximum-rational-numbers +open import elementary-number-theory.minimum-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.multiplicative-group-of-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.positive-and-negative-rational-numbers +open import elementary-number-theory.positive-rational-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.binary-transport +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.identity-types +open import foundation.images-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.commutative-monoids +open import group-theory.minkowski-multiplication-commutative-monoids +open import group-theory.monoids +open import group-theory.semigroups + +open import order-theory.decidable-total-orders +open import order-theory.inhabited-closed-intervals-total-orders +open import order-theory.total-orders +``` + +
+ +## Idea + +Given two +[inhabited closed intervals](elementary-number-theory.inhabited-closed-intervals-rational-numbers.md) +`[a, b]` and `[c, d]` in the +[rational numbers](elementary-number-theory.rational-numbers.md), the +[Minkowski product](group-theory.minkowski-multiplication-commutative-monoids.md) +of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) +agrees with the interval `[min(ac, ad, bc, bd), max(ac, ad, bc, bd)]`. + +Notably, this is because nonzero rational numbers are +[invertible](elementary-number-theory.multiplicative-group-of-rational-numbers.md); +this would not be true for the +[natural numbers](elementary-number-theory.natural-numbers.md), as +`[2, 2] * [a, b]` in the natural numbers is not the full interval `[2a, 2b]` but +only the even elements. + +## Definition + +```agda +mul-inhabited-closed-interval-ℚ-ℚ : + ℚ → inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ +mul-inhabited-closed-interval-ℚ-ℚ a ((b , c) , _) = + unordered-inhabited-closed-interval-ℚ (a *ℚ b) (a *ℚ c) + +mul-ℚ-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → ℚ → inhabited-closed-interval-ℚ +mul-ℚ-inhabited-closed-interval-ℚ ((a , b) , _) c = + unordered-inhabited-closed-interval-ℚ (a *ℚ c) (b *ℚ c) + +mul-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → + inhabited-closed-interval-ℚ +mul-inhabited-closed-interval-ℚ ((a , b) , _) ((c , d) , _) = + minimal-closed-interval-cover-of-four-elements-Total-Order + ( ℚ-Total-Order) + ( a *ℚ c) + ( a *ℚ d) + ( b *ℚ c) + ( b *ℚ d) + +lower-bound-mul-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → ℚ +lower-bound-mul-inhabited-closed-interval-ℚ [a,b] [c,d] = + lower-bound-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + +upper-bound-mul-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → ℚ +upper-bound-mul-inhabited-closed-interval-ℚ [a,b] [c,d] = + upper-bound-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) +``` + +## Properties + +### Multiplication of an interval by a rational number + +#### Multiplication of an interval by a negative rational number + +```agda +mul-inhabited-closed-interval-ℚ-ℚ⁻ : + inhabited-closed-interval-ℚ → ℚ⁻ → inhabited-closed-interval-ℚ +mul-inhabited-closed-interval-ℚ-ℚ⁻ ((p , q) , p≤q) s⁻@(s , _) = + ((q *ℚ s , p *ℚ s) , reverses-leq-right-mul-ℚ⁻ s⁻ _ _ p≤q) + +abstract + mul-is-in-inhabited-closed-interval-ℚ-ℚ⁻ : + ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ⁻) (s : ℚ) → + is-in-inhabited-closed-interval-ℚ [p,q] s → + is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ-ℚ⁻ [p,q] r) + ( s *ℚ rational-ℚ⁻ r) + mul-is-in-inhabited-closed-interval-ℚ-ℚ⁻ + ((p , q) , p≤q) r s (p≤s , s≤q) = + ( reverses-leq-right-mul-ℚ⁻ r _ _ s≤q , + reverses-leq-right-mul-ℚ⁻ r _ _ p≤s) + + is-in-im-is-in-mul-inhabited-closed-interval-ℚ-ℚ⁻ : + ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ⁻) (s : ℚ) → + is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ-ℚ⁻ [p,q] r) + ( s) → + is-in-im-subtype + ( mul-ℚ' (rational-ℚ⁻ r)) + ( subtype-inhabited-closed-interval-ℚ [p,q]) + ( s) + is-in-im-is-in-mul-inhabited-closed-interval-ℚ-ℚ⁻ + ((p , q) , p≤q) r⁻@(r , _) s (qr≤s , s≤pr) = + let r⁻¹ = inv-ℚ⁻ r⁻ + in + intro-exists + ( ( s *ℚ rational-ℚ⁻ r⁻¹ , + tr + ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁻ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ p) + ( reverses-leq-right-mul-ℚ⁻ r⁻¹ s (p *ℚ r) s≤pr) , + tr + ( leq-ℚ (s *ℚ rational-ℚ⁻ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ q) + ( reverses-leq-right-mul-ℚ⁻ r⁻¹ (q *ℚ r) s qr≤s))) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (left-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ s) + + is-closed-interval-map-mul-ℚ⁻ : + (q : ℚ⁻) ([a,b] : inhabited-closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ' (rational-ℚ⁻ q)) + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ-ℚ⁻ [a,b] q) + is-closed-interval-map-mul-ℚ⁻ q [a,b] = + ( ind-Σ (mul-is-in-inhabited-closed-interval-ℚ-ℚ⁻ [a,b] q) , + ind-Σ (is-in-im-is-in-mul-inhabited-closed-interval-ℚ-ℚ⁻ [a,b] q)) +``` + +#### Multiplication of an interval by a positive rational number + +```agda +mul-ℚ⁺-inhabited-closed-interval-ℚ : + inhabited-closed-interval-ℚ → ℚ⁺ → inhabited-closed-interval-ℚ +mul-ℚ⁺-inhabited-closed-interval-ℚ ((p , q) , p≤q) s⁺@(s , _) = + ((p *ℚ s , q *ℚ s) , preserves-leq-right-mul-ℚ⁺ s⁺ _ _ p≤q) + +abstract + mul-is-in-inhabited-closed-interval-ℚ-ℚ⁺ : + ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ⁺) (s : ℚ) → + is-in-inhabited-closed-interval-ℚ [p,q] s → + is-in-inhabited-closed-interval-ℚ + ( mul-ℚ⁺-inhabited-closed-interval-ℚ [p,q] r) + ( s *ℚ rational-ℚ⁺ r) + mul-is-in-inhabited-closed-interval-ℚ-ℚ⁺ + ((p , q) , p≤q) r s (p≤s , s≤q) = + ( preserves-leq-right-mul-ℚ⁺ r _ _ p≤s , + preserves-leq-right-mul-ℚ⁺ r _ _ s≤q) + + is-in-im-is-in-mul-ℚ⁺-inhabited-closed-interval-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → + is-in-inhabited-closed-interval-ℚ + ( mul-ℚ⁺-inhabited-closed-interval-ℚ [p,q] r) + ( s) → + is-in-im-subtype + ( mul-ℚ' (rational-ℚ⁺ r)) + ( subtype-inhabited-closed-interval-ℚ [p,q]) + ( s) + is-in-im-is-in-mul-ℚ⁺-inhabited-closed-interval-ℚ + ((p , q) , p≤q) r⁺@(r , _) s (pr≤s , s≤qr) = + let r⁻¹ = inv-ℚ⁺ r⁺ + in + intro-exists + ( ( s *ℚ rational-ℚ⁺ r⁻¹ , + tr + ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁺ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ p) + ( preserves-leq-right-mul-ℚ⁺ r⁻¹ (p *ℚ r) s pr≤s) , + tr + ( leq-ℚ (s *ℚ rational-ℚ⁺ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ q) + ( preserves-leq-right-mul-ℚ⁺ r⁻¹ s (q *ℚ r) s≤qr))) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (left-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ s) + + is-closed-interval-map-left-mul-ℚ⁺ : + (q : ℚ⁺) ([a,b] : inhabited-closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ' (rational-ℚ⁺ q)) + ( [a,b]) + ( mul-ℚ⁺-inhabited-closed-interval-ℚ [a,b] q) + is-closed-interval-map-left-mul-ℚ⁺ q [a,b] = + ( ind-Σ (mul-is-in-inhabited-closed-interval-ℚ-ℚ⁺ [a,b] q) , + ind-Σ (is-in-im-is-in-mul-ℚ⁺-inhabited-closed-interval-ℚ [a,b] q)) +``` + +#### Multiplication of an interval by zero + +```agda +abstract + is-in-im-mul-is-in-zero-zero-inhabited-closed-interval-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) → (s : ℚ) → + is-in-inhabited-closed-interval-ℚ + ( zero-zero-inhabited-closed-interval-ℚ) + ( s) → + is-in-im-subtype + ( mul-ℚ' zero-ℚ) + ( subtype-inhabited-closed-interval-ℚ [p,q]) + ( s) + is-in-im-mul-is-in-zero-zero-inhabited-closed-interval-ℚ + ((p , q) , p≤q) s (0≤s , s≤0) = + intro-exists + ( p , refl-leq-ℚ p , p≤q) + ( right-zero-law-mul-ℚ p ∙ antisymmetric-leq-ℚ _ _ 0≤s s≤0) + + is-closed-interval-map-mul-zero-ℚ : + ([a,b] : inhabited-closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ' zero-ℚ) + ( [a,b]) + ( zero-zero-inhabited-closed-interval-ℚ) + is-closed-interval-map-mul-zero-ℚ [a,b] = + ( ( λ r → + inv-tr + ( is-in-inhabited-closed-interval-ℚ + ( zero-zero-inhabited-closed-interval-ℚ)) + ( right-zero-law-mul-ℚ _) + ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) , + ind-Σ (is-in-im-mul-is-in-zero-zero-inhabited-closed-interval-ℚ [a,b])) +``` + +#### Multiplication of an interval by any rational number + +```agda +abstract + mul-is-negative-ℚ-inhabited-closed-interval-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → + mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = + mul-inhabited-closed-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) + mul-is-negative-ℚ-inhabited-closed-interval-ℚ [p,q]@((p , q) , p≤q) r neg-r = + unordered-closed-interval-leq-ℚ' _ _ + ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) + + mul-is-positive-ℚ-inhabited-closed-interval-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ) (pos-r : is-positive-ℚ r) → + mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = + mul-ℚ⁺-inhabited-closed-interval-ℚ [p,q] (r , pos-r) + mul-is-positive-ℚ-inhabited-closed-interval-ℚ [p,q]@((p , q) , p≤q) r pos-r = + unordered-closed-interval-leq-ℚ _ _ + ( preserves-leq-right-mul-ℚ⁺ (r , pos-r) _ _ p≤q) + + mul-is-zero-ℚ-inhabited-closed-interval-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ) (is-zero-r : is-zero-ℚ r) → + mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = + zero-zero-inhabited-closed-interval-ℚ + mul-is-zero-ℚ-inhabited-closed-interval-ℚ ((p , q) , p≤q) _ refl = + eq-inhabited-closed-interval-ℚ _ _ + ( ap-min-ℚ + ( right-zero-law-mul-ℚ _) + ( right-zero-law-mul-ℚ _) ∙ + idempotent-min-ℚ zero-ℚ) + ( ap-max-ℚ + ( right-zero-law-mul-ℚ _) + ( right-zero-law-mul-ℚ _) ∙ + idempotent-max-ℚ zero-ℚ) + + mul-is-in-inhabited-closed-interval-ℚ-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) (r s : ℚ) → + is-in-inhabited-closed-interval-ℚ [p,q] s → + is-in-inhabited-closed-interval-ℚ + ( mul-ℚ-inhabited-closed-interval-ℚ [p,q] r) + ( s *ℚ r) + mul-is-in-inhabited-closed-interval-ℚ-ℚ [p,q] r s s∈[p,q] = + trichotomy-sign-ℚ r + ( λ neg-r → + inv-tr + ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] (s *ℚ r)) + ( mul-is-negative-ℚ-inhabited-closed-interval-ℚ [p,q] r neg-r) + ( mul-is-in-inhabited-closed-interval-ℚ-ℚ⁻ + ( [p,q]) + ( r , neg-r) + ( s) + ( s∈[p,q]))) + ( λ r=0 → + binary-tr + ( is-in-inhabited-closed-interval-ℚ) + ( inv (mul-is-zero-ℚ-inhabited-closed-interval-ℚ [p,q] r r=0)) + ( inv (ap-mul-ℚ refl r=0 ∙ right-zero-law-mul-ℚ s)) + ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) + ( λ pos-r → + inv-tr + ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] (s *ℚ r)) + ( mul-is-positive-ℚ-inhabited-closed-interval-ℚ [p,q] r pos-r) + ( mul-is-in-inhabited-closed-interval-ℚ-ℚ⁺ + ( [p,q]) + ( r , pos-r) + ( s) + ( s∈[p,q]))) + + is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) (r s : ℚ) → + is-in-inhabited-closed-interval-ℚ + ( mul-ℚ-inhabited-closed-interval-ℚ [p,q] r) + ( s) → + is-in-im-subtype (mul-ℚ' r) (subtype-inhabited-closed-interval-ℚ [p,q]) s + is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ + [p,q] r s s∈[min-pr-qr,max-pr-qr] = + trichotomy-sign-ℚ r + ( λ neg-r → + is-in-im-is-in-mul-inhabited-closed-interval-ℚ-ℚ⁻ + ( [p,q]) + ( r , neg-r) + ( s) + ( tr + ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] s) + ( mul-is-negative-ℚ-inhabited-closed-interval-ℚ [p,q] r neg-r) + ( s∈[min-pr-qr,max-pr-qr]))) + ( λ r=0 → + inv-tr + ( λ t → + is-in-im-subtype + ( mul-ℚ' t) + ( subtype-inhabited-closed-interval-ℚ [p,q]) + ( s)) + ( r=0) + ( is-in-im-mul-is-in-zero-zero-inhabited-closed-interval-ℚ + ( [p,q]) + ( s) + ( tr + ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] s) + ( mul-is-zero-ℚ-inhabited-closed-interval-ℚ [p,q] r r=0) + ( s∈[min-pr-qr,max-pr-qr])))) + ( λ pos-r → + is-in-im-is-in-mul-ℚ⁺-inhabited-closed-interval-ℚ + ( [p,q]) + ( r , pos-r) + ( s) + ( tr + ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] s) + ( mul-is-positive-ℚ-inhabited-closed-interval-ℚ [p,q] r pos-r) + ( s∈[min-pr-qr,max-pr-qr]))) + + is-closed-interval-map-mul-ℚ-inhabited-closed-interval-ℚ : + (q : ℚ) ([a,b] : inhabited-closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ' q) + ( [a,b]) + ( mul-ℚ-inhabited-closed-interval-ℚ [a,b] q) + is-closed-interval-map-mul-ℚ-inhabited-closed-interval-ℚ q [a,b] = + ( ind-Σ (mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] q) , + ind-Σ (is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] q)) +``` + +### Multiplication of a rational number and an interval + +```agda +abstract + commute-mul-ℚ-inhabited-closed-interval-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ) → + mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = + mul-inhabited-closed-interval-ℚ-ℚ r [p,q] + commute-mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = + eq-inhabited-closed-interval-ℚ _ _ + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + + mul-ℚ-is-in-inhabited-closed-interval-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) (r s : ℚ) → + is-in-inhabited-closed-interval-ℚ [p,q] s → + is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ-ℚ r [p,q]) + ( r *ℚ s) + mul-ℚ-is-in-inhabited-closed-interval-ℚ [p,q] r s s∈[p,q] = + binary-tr + ( is-in-inhabited-closed-interval-ℚ) + ( commute-mul-ℚ-inhabited-closed-interval-ℚ [p,q] r) + ( commutative-mul-ℚ s r) + ( mul-is-in-inhabited-closed-interval-ℚ-ℚ [p,q] r s s∈[p,q]) + + is-in-im-mul-ℚ-is-in-inhabited-closed-interval-ℚ : + ([p,q] : inhabited-closed-interval-ℚ) (r s : ℚ) → + is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ-ℚ r [p,q]) + ( s) → + is-in-im-subtype (mul-ℚ r) (subtype-inhabited-closed-interval-ℚ [p,q]) s + is-in-im-mul-ℚ-is-in-inhabited-closed-interval-ℚ + [p,q] r s s∈[min-rp-rq,max-rp-rq] = + tr + ( λ f → is-in-im-subtype f (subtype-inhabited-closed-interval-ℚ [p,q]) s) + ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) + ( is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ [p,q] r s + ( inv-tr + ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] s) + ( commute-mul-ℚ-inhabited-closed-interval-ℚ [p,q] r) + ( s∈[min-rp-rq,max-rp-rq]))) + + is-closed-interval-map-mul-inhabited-closed-interval-ℚ-ℚ : + (q : ℚ) ([a,b] : inhabited-closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ q) + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ-ℚ q [a,b]) + is-closed-interval-map-mul-inhabited-closed-interval-ℚ-ℚ q [a,b] = + binary-tr + ( λ f i → is-closed-interval-map-ℚ f [a,b] i) + ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) + ( commute-mul-ℚ-inhabited-closed-interval-ℚ [a,b] q) + ( is-closed-interval-map-mul-ℚ-inhabited-closed-interval-ℚ q [a,b]) +``` + +### Multiplication of two closed intervals + +```agda +abstract + is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) (p q : ℚ) → + is-in-inhabited-closed-interval-ℚ [a,b] p → + is-in-inhabited-closed-interval-ℚ [c,d] q → + is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( p *ℚ q) + is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) p q + p∈[a,b]@(a≤p , p≤b) q∈[c,d]@(c≤q , q≤d) = + let + (min-aq-bq≤pq , pq≤max-aq-bq) = + mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] q p p∈[a,b] + (min-ac-ad≤aq , aq≤max-ac-ad) = + mul-ℚ-is-in-inhabited-closed-interval-ℚ [c,d] a q q∈[c,d] + (min-bc-bd≤bq , bq≤max-bc-bd) = + mul-ℚ-is-in-inhabited-closed-interval-ℚ [c,d] b q q∈[c,d] + in + ( transitive-leq-ℚ + ( lower-bound-mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( _) + ( p *ℚ q) + ( min-aq-bq≤pq) + ( min-leq-leq-ℚ _ _ _ _ min-ac-ad≤aq min-bc-bd≤bq) , + transitive-leq-ℚ + ( p *ℚ q) + ( _) + ( upper-bound-mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( max-leq-leq-ℚ _ _ _ _ aq≤max-ac-ad bq≤max-bc-bd) + ( pq≤max-aq-bq)) + + is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → (q : ℚ) → + is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( q) → + is-in-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d])) + ( q) + is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) x x∈range = + let + motive = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d]) + ( x) + open do-syntax-trunc-Prop motive + case-[ac,ad] x∈[ac,ad] = + do + ((q , c≤q , q≤d) , aq=x) ← + is-in-im-mul-ℚ-is-in-inhabited-closed-interval-ℚ [c,d] a x x∈[ac,ad] + intro-exists + ( a , q) + ( (refl-leq-ℚ a , a≤b) , (c≤q , q≤d) , inv aq=x) + case-[ac,bc] x∈[ac,bc] = + do + ((p , a≤p , p≤b) , pc=x) ← + is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] c x x∈[ac,bc] + intro-exists + ( p , c) + ( (a≤p , p≤b) , (refl-leq-ℚ c , c≤d) , inv pc=x) + case-[bc,bd] x∈[bc,bd] = + do + ((q , c≤q , q≤d) , bq=x) ← + is-in-im-mul-ℚ-is-in-inhabited-closed-interval-ℚ [c,d] b x x∈[bc,bd] + intro-exists + ( b , q) + ( (a≤b , refl-leq-ℚ b) , (c≤q , q≤d) , inv bq=x) + case-[ad,bd] x∈[ad,bd] = + do + ((p , a≤p , p≤b) , pd=x) ← + is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] d x x∈[ad,bd] + intro-exists + ( p , d) + ( (a≤p , p≤b) , (c≤d , refl-leq-ℚ d) , inv pd=x) + in + elim-disjunction motive + ( elim-disjunction motive case-[ac,ad] case-[ac,bc]) + ( elim-disjunction motive case-[ad,bd] case-[bc,bd]) + ( cover-minimal-closed-interval-cover-of-four-elements-Total-Order + ( ℚ-Total-Order) + ( a *ℚ c) + ( a *ℚ d) + ( b *ℚ c) + ( b *ℚ d) + ( x) + ( x∈range)) +``` + +### Agreement with the Minkowski product + +```agda +abstract + has-same-elements-minkowski-mul-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + has-same-elements-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d])) + ( subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d])) + has-same-elements-minkowski-mul-inhabited-closed-interval-ℚ [a,b] [c,d] x = + ( rec-trunc-Prop + ( subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( x)) + ( λ ((p , q) , p∈[a,b] , q∈[c,d] , x=pq) → + inv-tr + ( is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d])) + ( x=pq) + ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ + ( [a,b]) + ( [c,d]) + ( p) + ( q) + ( p∈[a,b]) + ( q∈[c,d]))) , + is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( [c,d]) + ( x)) + + eq-minkowski-mul-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d]) = + subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + eq-minkowski-mul-inhabited-closed-interval-ℚ [a,b] [c,d] = + eq-has-same-elements-subtype _ _ + ( has-same-elements-minkowski-mul-inhabited-closed-interval-ℚ [a,b] [c,d]) +``` + +### Associativity of multiplication of intervals + +```agda +module _ + ([a,b] [c,d] [e,f] : inhabited-closed-interval-ℚ) + where + + abstract + has-same-elements-associative-mul-inhabited-closed-interval-ℚ : + has-same-elements-subtype + ( subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f]))) + ( subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]))) + pr1 (has-same-elements-associative-mul-inhabited-closed-interval-ℚ x) + x∈<[a,b][c,d]>[e,f] = + let + open + do-syntax-trunc-Prop + ( subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f])) + ( x)) + in do + ((p , q) , p∈[a,b][c,d] , q∈[e,f] , x=pq) ← + is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f]) + ( x) + ( x∈<[a,b][c,d]>[e,f]) + ((r , s) , r∈[a,b] , s∈[c,d] , p=rs) ← + is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( [c,d]) + ( p) + ( p∈[a,b][c,d]) + inv-tr + ( is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]))) + ( x=pq ∙ ap-mul-ℚ p=rs refl ∙ associative-mul-ℚ _ _ _) + ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]) + ( r) + ( s *ℚ q) + ( r∈[a,b]) + ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ + ( [c,d]) + ( [e,f]) + ( s) + ( q) + ( s∈[c,d]) + ( q∈[e,f]))) + pr2 (has-same-elements-associative-mul-inhabited-closed-interval-ℚ x) + x∈[a,b]<[c,d][e,f]> = + let + open + do-syntax-trunc-Prop + ( subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f])) + ( x)) + in do + ((p , q) , p∈[a,b] , q∈[c,d][e,f] , x=pq) ← + is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]) + ( x) + ( x∈[a,b]<[c,d][e,f]>) + ((r , s) , r∈[c,d] , s∈[e,f] , q=rs) ← + is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ + ( [c,d]) + ( [e,f]) + ( q) + ( q∈[c,d][e,f]) + inv-tr + ( is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f]))) + ( x=pq ∙ ap-mul-ℚ refl q=rs ∙ inv (associative-mul-ℚ _ _ _)) + ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f]) + ( p *ℚ r) + ( s) + ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ + ( [a,b]) + ( [c,d]) + ( p) + ( r) + ( p∈[a,b]) + ( r∈[c,d])) + ( s∈[e,f])) + + associative-mul-inhabited-closed-interval-ℚ : + mul-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f]) = + mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]) + associative-mul-inhabited-closed-interval-ℚ = + is-injective-subtype-inhabited-closed-interval-ℚ + ( equational-reasoning + subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f])) + = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d])) + ( subtype-inhabited-closed-interval-ℚ [e,f]) + by + inv + ( eq-minkowski-mul-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) + ( [e,f])) + = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d])) + ( subtype-inhabited-closed-interval-ℚ [e,f]) + by + ap + ( λ S → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( S) + ( subtype-inhabited-closed-interval-ℚ [e,f])) + ( inv + ( eq-minkowski-mul-inhabited-closed-interval-ℚ [a,b] [c,d])) + = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [c,d]) + ( subtype-inhabited-closed-interval-ℚ [e,f])) + by + associative-minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ [c,d]) + ( subtype-inhabited-closed-interval-ℚ [e,f]) + = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b]) + ( subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f])) + by + ap + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-inhabited-closed-interval-ℚ [a,b])) + ( eq-minkowski-mul-inhabited-closed-interval-ℚ [c,d] [e,f]) + = + subtype-inhabited-closed-interval-ℚ + ( mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f])) + by + eq-minkowski-mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( mul-inhabited-closed-interval-ℚ [c,d] [e,f])) +``` + +### Commutativity of multiplication of intervals + +```agda +abstract + commutative-mul-inhabited-closed-interval-ℚ : + ([a,b] [c,d] : inhabited-closed-interval-ℚ) → + mul-inhabited-closed-interval-ℚ [a,b] [c,d] = + mul-inhabited-closed-interval-ℚ [c,d] [a,b] + commutative-mul-inhabited-closed-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = + eq-inhabited-closed-interval-ℚ _ _ + ( interchange-law-min-Total-Order ℚ-Total-Order _ _ _ _ ∙ + ap-min-ℚ + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) + ( interchange-law-max-Total-Order ℚ-Total-Order _ _ _ _ ∙ + ap-max-ℚ + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) +``` + +### Unit laws of multiplication of intervals + +```agda +abstract + left-unit-law-mul-inhabited-closed-interval-ℚ : + ([a,b] : inhabited-closed-interval-ℚ) → + mul-inhabited-closed-interval-ℚ one-one-inhabited-closed-interval-ℚ [a,b] = + [a,b] + left-unit-law-mul-inhabited-closed-interval-ℚ ((a , b) , a≤b) = + eq-inhabited-closed-interval-ℚ _ _ + ( idempotent-min-ℚ _ ∙ + ap-min-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ + left-leq-right-min-ℚ _ _ a≤b) + ( idempotent-max-ℚ _ ∙ + ap-max-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ + left-leq-right-max-ℚ _ _ a≤b) + + right-unit-law-mul-inhabited-closed-interval-ℚ : + ([a,b] : inhabited-closed-interval-ℚ) → + mul-inhabited-closed-interval-ℚ [a,b] one-one-inhabited-closed-interval-ℚ = + [a,b] + right-unit-law-mul-inhabited-closed-interval-ℚ [a,b] = + commutative-mul-inhabited-closed-interval-ℚ + ( [a,b]) + ( one-one-inhabited-closed-interval-ℚ) ∙ + left-unit-law-mul-inhabited-closed-interval-ℚ [a,b] +``` + +### The commutative monoid of multiplication of rational intervals + +```agda +semigroup-mul-inhabited-closed-interval-ℚ : Semigroup lzero +semigroup-mul-inhabited-closed-interval-ℚ = + ( set-inhabited-closed-interval-ℚ , + mul-inhabited-closed-interval-ℚ , + associative-mul-inhabited-closed-interval-ℚ) + +monoid-mul-inhabited-closed-interval-ℚ : Monoid lzero +monoid-mul-inhabited-closed-interval-ℚ = + ( semigroup-mul-inhabited-closed-interval-ℚ , + one-one-inhabited-closed-interval-ℚ , + left-unit-law-mul-inhabited-closed-interval-ℚ , + right-unit-law-mul-inhabited-closed-interval-ℚ) + +commutative-monoid-mul-inhabited-closed-interval-ℚ : Commutative-Monoid lzero +commutative-monoid-mul-inhabited-closed-interval-ℚ = + ( monoid-mul-inhabited-closed-interval-ℚ , + commutative-mul-inhabited-closed-interval-ℚ) +``` diff --git a/src/order-theory.lagda.md b/src/order-theory.lagda.md index fb56274790..19fdae318f 100644 --- a/src/order-theory.lagda.md +++ b/src/order-theory.lagda.md @@ -13,8 +13,6 @@ open import order-theory.chains-posets public open import order-theory.chains-preorders public open import order-theory.closed-interval-preserving-maps-posets public open import order-theory.closed-interval-preserving-maps-total-orders public -open import order-theory.closed-intervals-posets public -open import order-theory.closed-intervals-total-orders public open import order-theory.closure-operators-large-locales public open import order-theory.closure-operators-large-posets public open import order-theory.commuting-squares-of-galois-connections-large-posets public @@ -62,6 +60,8 @@ open import order-theory.inflationary-maps-preorders public open import order-theory.inflattices public open import order-theory.inhabited-chains-posets public open import order-theory.inhabited-chains-preorders public +open import order-theory.inhabited-closed-intervals-posets public +open import order-theory.inhabited-closed-intervals-total-orders public open import order-theory.inhabited-finite-total-orders public open import order-theory.interval-subposets public open import order-theory.join-preserving-maps-posets public diff --git a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md index af035f25ae..317f3180d5 100644 --- a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md @@ -11,7 +11,7 @@ open import foundation.images-subtypes open import foundation.propositions open import foundation.universe-levels -open import order-theory.closed-intervals-posets +open import order-theory.inhabited-closed-intervals-posets open import order-theory.posets ``` diff --git a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md index aaa8172091..07156a7d87 100644 --- a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md @@ -12,7 +12,7 @@ open import foundation.propositions open import foundation.universe-levels open import order-theory.closed-interval-preserving-maps-posets -open import order-theory.closed-intervals-total-orders +open import order-theory.inhabited-closed-intervals-total-orders open import order-theory.total-orders ``` @@ -24,7 +24,7 @@ A map between [total orders](order-theory.total-orders.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Total-Order disambiguation="map between total orders"}} if the [image](foundation.images-subtypes.md) of an [inhabited closed interval](order-theory.inhabited-closed-intervals-total-orders.md) -in `X` is always an inhabited closed interval in `Y`. Equivalently, it is a +in `X` is always an inhabited closed interval in `Y`. Equivalently, it is a [closed interval preserving map](order-theory.closed-interval-preserving-maps-posets.md) on the underlying [posets](order-theory.posets.md). diff --git a/src/order-theory/closed-intervals-posets.lagda.md b/src/order-theory/closed-intervals-posets.lagda.md deleted file mode 100644 index aa6f711e00..0000000000 --- a/src/order-theory/closed-intervals-posets.lagda.md +++ /dev/null @@ -1,169 +0,0 @@ -# Closed intervals in posets - -```agda -module order-theory.closed-intervals-posets where -``` - -
Imports - -```agda -open import foundation.cartesian-product-types -open import foundation.dependent-pair-types -open import foundation.equality-cartesian-product-types -open import foundation.equality-dependent-pair-types -open import foundation.identity-types -open import foundation.images-subtypes -open import foundation.inhabited-subtypes -open import foundation.injective-maps -open import foundation.logical-equivalences -open import foundation.propositional-truncations -open import foundation.propositions -open import foundation.sets -open import foundation.subtypes -open import foundation.universe-levels - -open import order-theory.interval-subposets -open import order-theory.posets -``` - -
- -## Idea - -A -{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} -in a [poset](order-theory.posets.md) `P` consists of a -[pair](foundation.cartesian-product-types.md) of elements `x` and `y` in `P` -with `x ≤ y`. A closed interval notably induces a -[subtype](foundation.subtypes.md) of `P` spanned by elements `z` such that -`x ≤ z ≤ y`. - -## Definition - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) - where - - closed-interval-Poset : UU (l1 ⊔ l2) - closed-interval-Poset = - Σ (type-Poset X × type-Poset X) (λ (x , y) → leq-Poset X x y) - - lower-bound-closed-interval-Poset : closed-interval-Poset → type-Poset X - lower-bound-closed-interval-Poset ((x , _) , _) = x - - upper-bound-closed-interval-Poset : closed-interval-Poset → type-Poset X - upper-bound-closed-interval-Poset ((_ , y) , _) = y - - subtype-closed-interval-Poset : - closed-interval-Poset → subtype l2 (type-Poset X) - subtype-closed-interval-Poset ((x , y) , _) = - is-in-interval-Poset X x y - - type-closed-interval-Poset : closed-interval-Poset → UU (l1 ⊔ l2) - type-closed-interval-Poset [x,y] = - type-subtype (subtype-closed-interval-Poset [x,y]) - - is-in-closed-interval-Poset : closed-interval-Poset → type-Poset X → UU l2 - is-in-closed-interval-Poset [x,y] = - is-in-subtype (subtype-closed-interval-Poset [x,y]) -``` - -## Properties - -### The endpoints of a closed interval are in the interval - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) - where - - abstract - lower-bound-is-in-closed-interval-Poset : - ([a,b] : closed-interval-Poset X) → - is-in-closed-interval-Poset X [a,b] - ( lower-bound-closed-interval-Poset X [a,b]) - lower-bound-is-in-closed-interval-Poset ((a , b) , a≤b) = - ( refl-leq-Poset X a , a≤b) - - upper-bound-is-in-closed-interval-Poset : - ([a,b] : closed-interval-Poset X) → - is-in-closed-interval-Poset X [a,b] - ( upper-bound-closed-interval-Poset X [a,b]) - upper-bound-is-in-closed-interval-Poset ((a , b) , a≤b) = - ( a≤b , refl-leq-Poset X b) -``` - -### Closed intervals are inhabited - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) ([x,y] : closed-interval-Poset X) - where - - abstract - is-inhabited-closed-interval-Poset : - is-inhabited-subtype (subtype-closed-interval-Poset X [x,y]) - is-inhabited-closed-interval-Poset = - unit-trunc-Prop - ( lower-bound-closed-interval-Poset X [x,y] , - lower-bound-is-in-closed-interval-Poset X [x,y]) -``` - -### Characterization of equality - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) - where - - abstract - eq-closed-interval-Poset : - ( [a,b] [c,d] : closed-interval-Poset X) → - ( lower-bound-closed-interval-Poset X [a,b] = - lower-bound-closed-interval-Poset X [c,d]) → - ( upper-bound-closed-interval-Poset X [a,b] = - upper-bound-closed-interval-Poset X [c,d]) → - [a,b] = [c,d] - eq-closed-interval-Poset ((a , b) , _) ((c , d) , _) a=c b=d = - eq-pair-Σ (eq-pair a=c b=d) (eq-type-Prop (leq-prop-Poset X _ _)) - - set-closed-interval-Poset : Set (l1 ⊔ l2) - set-closed-interval-Poset = - set-subset - ( product-Set (set-Poset X) (set-Poset X)) - ( ind-Σ (leq-prop-Poset X)) -``` - -### The map from closed intervals to subtypes is injective - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) - where - - abstract - is-injective-subtype-closed-interval-Poset : - is-injective (subtype-closed-interval-Poset X) - is-injective-subtype-closed-interval-Poset - {(a , b) , a≤b} {(c , d) , c≤d} [a,b]=[c,d] = - eq-closed-interval-Poset X _ _ - ( antisymmetric-leq-Poset X a c - ( pr1 - ( backward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] c) - ( refl-leq-Poset X c , c≤d))) - ( pr1 - ( forward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] a) - ( refl-leq-Poset X a , a≤b)))) - ( antisymmetric-leq-Poset X b d - ( pr2 - ( forward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] b) - ( a≤b , refl-leq-Poset X b))) - ( pr2 - ( backward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] d) - ( c≤d , refl-leq-Poset X d)))) -``` diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md deleted file mode 100644 index a922fe81eb..0000000000 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ /dev/null @@ -1,575 +0,0 @@ -# Closed intervals in total orders - -```agda -module order-theory.closed-intervals-total-orders where -``` - -
Imports - -```agda -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.disjunction -open import foundation.function-types -open import foundation.functoriality-disjunction -open import foundation.identity-types -open import foundation.inhabited-subtypes -open import foundation.injective-maps -open import foundation.propositions -open import foundation.sets -open import foundation.subtypes -open import foundation.transport-along-identifications -open import foundation.unions-subtypes -open import foundation.universe-levels - -open import order-theory.closed-intervals-posets -open import order-theory.posets -open import order-theory.total-orders -``` - -
- -## Idea - -A -{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} -in a [total order](order-theory.total-orders.md) `X` consists of a -[pair](foundation.cartesian-product-types.md) of elements `x` and `y` in `X` -with `x ≤ y`. A closed interval notably induces a -[subtype](foundation.subtypes.md) of `X` spanned by elements `z` such that -`x ≤ z ≤ y`. - -Equivalently, it is a [closed interval](order-theory.closed-intervals-posets.md) -in the underlying [poset](order-theory.posets.md). - -## Definition - -```agda -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) - where - - closed-interval-Total-Order : UU (l1 ⊔ l2) - closed-interval-Total-Order = - closed-interval-Poset (poset-Total-Order X) - - lower-bound-closed-interval-Total-Order : - closed-interval-Total-Order → type-Total-Order X - lower-bound-closed-interval-Total-Order ((x , _) , _) = x - - upper-bound-closed-interval-Total-Order : - closed-interval-Total-Order → type-Total-Order X - upper-bound-closed-interval-Total-Order ((_ , y) , _) = y - - subtype-closed-interval-Total-Order : - closed-interval-Total-Order → subtype l2 (type-Total-Order X) - subtype-closed-interval-Total-Order = - subtype-closed-interval-Poset (poset-Total-Order X) - - type-closed-interval-Total-Order : closed-interval-Total-Order → UU (l1 ⊔ l2) - type-closed-interval-Total-Order = - type-closed-interval-Poset (poset-Total-Order X) - - is-in-closed-interval-Total-Order : - closed-interval-Total-Order → type-Total-Order X → UU l2 - is-in-closed-interval-Total-Order = - is-in-closed-interval-Poset (poset-Total-Order X) -``` - -## Properties - -### The endpoints of a closed interval are in the interval - -```agda -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) - where - - abstract - lower-bound-is-in-closed-interval-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - is-in-closed-interval-Total-Order X [a,b] - ( lower-bound-closed-interval-Total-Order X [a,b]) - lower-bound-is-in-closed-interval-Total-Order = - lower-bound-is-in-closed-interval-Poset (poset-Total-Order X) - - upper-bound-is-in-closed-interval-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - is-in-closed-interval-Total-Order X [a,b] - ( upper-bound-closed-interval-Total-Order X [a,b]) - upper-bound-is-in-closed-interval-Total-Order = - upper-bound-is-in-closed-interval-Poset (poset-Total-Order X) -``` - -### Closed intervals are inhabited - -```agda -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) - ([x,y] : closed-interval-Total-Order X) - where - - abstract - is-inhabited-closed-interval-Total-Order : - is-inhabited-subtype (subtype-closed-interval-Total-Order X [x,y]) - is-inhabited-closed-interval-Total-Order = - is-inhabited-closed-interval-Poset (poset-Total-Order X) [x,y] -``` - -### Characterization of equality - -```agda -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) - where - - abstract - eq-closed-interval-Total-Order : - ( [a,b] [c,d] : closed-interval-Total-Order X) → - ( lower-bound-closed-interval-Total-Order X [a,b] = - lower-bound-closed-interval-Total-Order X [c,d]) → - ( upper-bound-closed-interval-Total-Order X [a,b] = - upper-bound-closed-interval-Total-Order X [c,d]) → - [a,b] = [c,d] - eq-closed-interval-Total-Order = - eq-closed-interval-Poset (poset-Total-Order X) - - set-closed-interval-Total-Order : Set (l1 ⊔ l2) - set-closed-interval-Total-Order = - set-closed-interval-Poset (poset-Total-Order X) -``` - -### The map from closed intervals to subtypes is injective - -```agda -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) - where - - abstract - is-injective-subtype-closed-interval-Total-Order : - is-injective (subtype-closed-interval-Total-Order X) - is-injective-subtype-closed-interval-Total-Order = - is-injective-subtype-closed-interval-Poset (poset-Total-Order X) -``` - -### Total orders can be divided along an element - -```agda -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) - where - - divide-below-closed-interval-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - (c : type-closed-interval-Total-Order X [a,b]) → - closed-interval-Total-Order X - divide-below-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = - ((a , c) , a≤c) - - divide-above-closed-interval-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - (c : type-closed-interval-Total-Order X [a,b]) → - closed-interval-Total-Order X - divide-above-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = - ((c , b) , c≤b) - - abstract - has-same-elements-divide-subtype-closed-interval-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - (c : type-closed-interval-Total-Order X [a,b]) → - has-same-elements-subtype - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( divide-below-closed-interval-Total-Order [a,b] c)) - ( subtype-closed-interval-Total-Order X - ( divide-above-closed-interval-Total-Order [a,b] c))) - ( subtype-closed-interval-Total-Order X [a,b]) - pr1 - ( has-same-elements-divide-subtype-closed-interval-Total-Order - [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) = - elim-disjunction - ( subtype-closed-interval-Total-Order X [a,b] x) - ( λ (a≤x , x≤c) → - ( a≤x , transitive-leq-Total-Order X x c b c≤b x≤c)) - ( λ (c≤x , x≤b) → - ( transitive-leq-Total-Order X a c x c≤x a≤c , x≤b)) - pr2 - ( has-same-elements-divide-subtype-closed-interval-Total-Order - [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) (a≤x , x≤b) = - map-disjunction - ( λ x≤c → (a≤x , x≤c)) - ( λ c≤x → (c≤x , x≤b)) - ( is-total-Total-Order X x c) - - eq-divide-subtype-closed-interval-Total-Order : - ([a,b] : closed-interval-Total-Order X) → - (c : type-closed-interval-Total-Order X [a,b]) → - union-subtype - ( subtype-closed-interval-Total-Order X - ( divide-below-closed-interval-Total-Order [a,b] c)) - ( subtype-closed-interval-Total-Order X - ( divide-above-closed-interval-Total-Order [a,b] c)) = - subtype-closed-interval-Total-Order X [a,b] - eq-divide-subtype-closed-interval-Total-Order [a,b] c = - eq-has-same-elements-subtype _ _ - ( has-same-elements-divide-subtype-closed-interval-Total-Order [a,b] c) -``` - -### The minimal interval covering two elements - -```agda -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) (a b : type-Total-Order X) - where - - minimal-closed-interval-cover-of-two-elements-Total-Order : - closed-interval-Total-Order X - minimal-closed-interval-cover-of-two-elements-Total-Order = - ( ( min-Total-Order X a b , - max-Total-Order X a b) , - min-leq-max-Total-Order X a b) -``` - -### Covering the minimal interval containing four elements - -```agda -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) (a b c d : type-Total-Order X) - where - - minimal-closed-interval-cover-of-four-elements-Total-Order : - closed-interval-Total-Order X - minimal-closed-interval-cover-of-four-elements-Total-Order = - ( ( min-Total-Order X (min-Total-Order X a b) (min-Total-Order X c d) , - max-Total-Order X (max-Total-Order X a b) (max-Total-Order X c d)) , - transitive-leq-Total-Order X _ _ _ - ( max-leq-leq-Total-Order X _ _ _ _ - ( min-leq-max-Total-Order X _ _) - ( min-leq-max-Total-Order X _ _)) - ( min-leq-max-Total-Order X _ _)) - - abstract - cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order : - leq-Total-Order X a b → leq-Total-Order X a c → leq-Total-Order X a d → - subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-four-elements-Total-Order) ⊆ - union-subtype - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order X a b)) - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) - cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order - a≤b a≤c a≤d x (min≤x , x≤max) = - let - motive = - union-subtype - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order - ( X) - ( a) - ( b))) - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order - ( X) - ( a) - ( c)))) - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order - ( X) - ( b) - ( d))) - ( x) - minab≤x = - tr - ( λ y → leq-Total-Order X y x) - ( left-leq-right-min-Total-Order X _ _ - ( inv-tr - ( λ z → leq-Total-Order X z (min-Total-Order X c d)) - ( left-leq-right-min-Total-Order X a b a≤b) - ( leq-min-leq-both-Total-Order X a c d a≤c a≤d))) - ( min≤x) - minac≤x = - tr - ( λ y → leq-Total-Order X y x) - ( left-leq-right-min-Total-Order X a b a≤b ∙ - inv (left-leq-right-min-Total-Order X a c a≤c)) - ( minab≤x) - in - elim-disjunction - ( motive) - ( elim-disjunction - ( motive) - ( λ max=a → - inl-disjunction - ( inl-disjunction - ( minab≤x , - transitive-leq-Total-Order X x a (max-Total-Order X a b) - ( leq-left-max-Total-Order X _ _) - ( tr (leq-Total-Order X x) max=a x≤max)))) - ( λ max=b → - inl-disjunction - ( inl-disjunction - ( minab≤x , - tr - ( leq-Total-Order X x) - ( max=b ∙ inv (left-leq-right-max-Total-Order X a b a≤b)) - ( x≤max))))) - ( elim-disjunction - ( motive) - ( λ max=c → - inl-disjunction - ( inr-disjunction - ( minac≤x , - tr - ( leq-Total-Order X x) - ( max=c ∙ inv (left-leq-right-max-Total-Order X a c a≤c)) - ( x≤max)))) - ( λ max=d → - elim-disjunction motive - ( λ b≤x → - inr-disjunction - ( transitive-leq-Total-Order X (min-Total-Order X b d) b x - ( b≤x) - ( leq-left-min-Total-Order X b d) , - transitive-leq-Total-Order X x d (max-Total-Order X b d) - ( leq-right-max-Total-Order X b d) - ( tr (leq-Total-Order X x) max=d x≤max))) - ( λ x≤b → - inl-disjunction - ( inl-disjunction - ( minab≤x , - inv-tr - ( leq-Total-Order X x) - ( left-leq-right-max-Total-Order X a b a≤b) - ( x≤b)))) - ( is-total-Total-Order X b x))) - ( eq-one-of-four-max-Total-Order X a b c d) - -module _ - {l1 l2 : Level} (X : Total-Order l1 l2) (a b c d : type-Total-Order X) - where - - abstract - cover-minimal-closed-interval-cover-of-four-elements-Total-Order : - subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-four-elements-Total-Order X - ( a) - ( b) - ( c) - ( d)) ⊆ - union-subtype - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order X a b)) - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order X c d))) - cover-minimal-closed-interval-cover-of-four-elements-Total-Order - x x∈closed-4@(min≤x , x≤max) = - let - _≤_ = leq-Total-Order X - commutative-min = commutative-min-Total-Order X - commutative-max = commutative-max-Total-Order X - min = min-Total-Order X - max = max-Total-Order X - motive = - union-subtype - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order - ( X) - ( a) - ( b))) - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order - ( X) - ( a) - ( c)))) - ( union-subtype - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order - ( X) - ( b) - ( d))) - ( subtype-closed-interval-Total-Order X - ( minimal-closed-interval-cover-of-two-elements-Total-Order - ( X) - ( c) - ( d)))) - ( x) - min≤a = - transitive-leq-Total-Order X - ( min (min a b) (min c d)) - ( min a b) - ( a) - ( leq-left-min-Total-Order X _ _) - ( leq-left-min-Total-Order X _ _) - min≤b = - transitive-leq-Total-Order X - ( min (min a b) (min c d)) - ( min a b) - ( b) - ( leq-right-min-Total-Order X _ _) - ( leq-left-min-Total-Order X _ _) - min≤c = - transitive-leq-Total-Order X - ( min (min a b) (min c d)) - ( min c d) - ( c) - ( leq-left-min-Total-Order X _ _) - ( leq-right-min-Total-Order X _ _) - min≤d = - transitive-leq-Total-Order X - ( min (min a b) (min c d)) - ( min c d) - ( d) - ( leq-right-min-Total-Order X _ _) - ( leq-right-min-Total-Order X _ _) - in - elim-disjunction motive - ( elim-disjunction motive - ( λ min=a → - map-disjunction - ( id) - ( inl-disjunction) - ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order - ( X) - ( a) - ( b) - ( c) - ( d) - ( tr (_≤ b) min=a min≤b) - ( tr (_≤ c) min=a min≤c) - ( tr (_≤ d) min=a min≤d) - ( x) - ( x∈closed-4))) - ( λ min=b → - elim-disjunction motive - ( elim-disjunction motive - ( λ (minba≤x , x≤maxba) → - inl-disjunction - ( inl-disjunction - ( tr (_≤ x) (commutative-min b a) minba≤x , - tr (x ≤_) (commutative-max b a) x≤maxba))) - ( inr-disjunction ∘ inl-disjunction)) - ( inl-disjunction ∘ inr-disjunction) - ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order - ( X) - ( b) - ( a) - ( d) - ( c) - ( tr (_≤ a) min=b min≤a) - ( tr (_≤ d) min=b min≤d) - ( tr (_≤ c) min=b min≤c) - ( x) - ( transitive-leq-Total-Order X _ b x - ( tr (_≤ x) min=b min≤x) - ( transitive-leq-Total-Order X - ( min (min b a) (min d c)) (min b a) b - ( leq-left-min-Total-Order X b a) - ( leq-left-min-Total-Order X - ( min-Total-Order X b a) - ( min-Total-Order X d c))) , - tr - ( x ≤_) - ( ap-binary max - ( commutative-max a b) - ( commutative-max c d)) - ( x≤max))))) - ( elim-disjunction motive - ( λ min=c → - elim-disjunction motive - ( elim-disjunction motive - ( λ (minca≤x , x≤maxca) → - inl-disjunction - ( inr-disjunction - ( tr (_≤ x) (commutative-min c a) minca≤x , - tr (x ≤_) (commutative-max c a) x≤maxca))) - ( inr-disjunction ∘ inr-disjunction)) - ( inl-disjunction ∘ inl-disjunction) - ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order - ( X) - ( c) - ( a) - ( d) - ( b) - ( tr (_≤ a) min=c min≤a) - ( tr (_≤ d) min=c min≤d) - ( tr (_≤ b) min=c min≤b) - ( x) - ( ( tr - ( _≤ x) - ( ( interchange-law-min-Total-Order X a b c d) ∙ - ( ap-binary min - ( commutative-min a c) - ( commutative-min b d))) - ( min≤x)) , - ( tr - ( x ≤_) - ( ( interchange-law-max-Total-Order X a b c d) ∙ - ( ap-binary max - ( commutative-max a c) - ( commutative-max b d))) - ( x≤max))))) - ( λ min=d → - elim-disjunction motive - ( elim-disjunction motive - ( λ (mindb≤x , x≤maxdb) → - inr-disjunction - ( inl-disjunction - ( tr (_≤ x) (commutative-min d b) mindb≤x , - tr (x ≤_) (commutative-max d b) x≤maxdb))) - ( λ (mindc≤x , x≤maxdc) → - inr-disjunction - ( inr-disjunction - ( tr (_≤ x) (commutative-min d c) mindc≤x , - tr (x ≤_) (commutative-max d c) x≤maxdc)))) - ( λ (minba≤x , x≤maxba) → - inl-disjunction - ( inl-disjunction - ( tr (_≤ x) (commutative-min b a) minba≤x , - tr (x ≤_) (commutative-max b a) x≤maxba))) - ( cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order - ( X) - ( d) - ( b) - ( c) - ( a) - ( tr (_≤ b) min=d min≤b) - ( tr (_≤ c) min=d min≤c) - ( tr (_≤ a) min=d min≤a) - ( x) - ( ( tr - ( _≤ x) - ( ( interchange-law-min-Total-Order X a b c d) ∙ - ( ap-binary min - ( commutative-min a c) - ( commutative-min b d)) ∙ - ( commutative-min - ( min-Total-Order X c a) - ( min-Total-Order X d b))) - ( min≤x)) , - ( tr - ( x ≤_) - ( ( interchange-law-max-Total-Order X a b c d) ∙ - ( ap-binary max - ( commutative-max a c) - ( commutative-max b d)) ∙ - ( commutative-max - ( max-Total-Order X c a) - ( max-Total-Order X d b))) - ( x≤max)))))) - ( eq-one-of-four-min-Total-Order X a b c d) -``` diff --git a/src/order-theory/inhabited-closed-intervals-posets.lagda.md b/src/order-theory/inhabited-closed-intervals-posets.lagda.md index f8ede40e97..7955d0a867 100644 --- a/src/order-theory/inhabited-closed-intervals-posets.lagda.md +++ b/src/order-theory/inhabited-closed-intervals-posets.lagda.md @@ -34,8 +34,8 @@ An {{#concept "inhabited closed interval" disambiguation="in a poset" Agda=inhabited-closed-interval-Poset}} in a [poset](order-theory.posets.md) `P` is a [subtype](foundation.subtypes.md) of `P` with elements `x` and `y` with `x ≤ y` such that the subtype contains -every element `z` such that `x ≤ z ∧ z ≤ y`. Any pair `x y` with `x ≤ y` -induces a unique inhabited closed interval, so we can equivalently characterize +every element `z` such that `x ≤ z ∧ z ≤ y`. Any pair `x y` with `x ≤ y` induces +a unique inhabited closed interval, so we can equivalently characterize inhabited closed intervals in terms of such pairs. ## Definition diff --git a/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md b/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md index eeb67271e3..8f17a57ece 100644 --- a/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md +++ b/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md @@ -37,9 +37,9 @@ An {{#concept "inhabited closed interval" disambiguation="in a total order" Agda=inhabited-inhabited-closed-interval-Total-Order}} in a [total order](order-theory.total-orders.md) `X` is a [subtype](foundation.subtypes.md) of `X` with elements `x` and `y` with `x ≤ y` -such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. -Any pair `x y` with `x ≤ y` induces a unique inhabited closed interval, so we -can equivalently characterize inhabited closed intervals in terms of such pairs. +such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. Any +pair `x y` with `x ≤ y` induces a unique inhabited closed interval, so we can +equivalently characterize inhabited closed intervals in terms of such pairs. Equivalently, an inhabited closed interval is a total order is an [inhabited closed interval](order-theory.inhabited-closed-intervals-posets.md) @@ -69,7 +69,8 @@ module _ subtype-inhabited-closed-interval-Total-Order = subtype-inhabited-closed-interval-Poset (poset-Total-Order X) - type-inhabited-closed-interval-Total-Order : inhabited-closed-interval-Total-Order → UU (l1 ⊔ l2) + type-inhabited-closed-interval-Total-Order : + inhabited-closed-interval-Total-Order → UU (l1 ⊔ l2) type-inhabited-closed-interval-Total-Order = type-inhabited-closed-interval-Poset (poset-Total-Order X) @@ -114,7 +115,8 @@ module _ abstract is-inhabited-inhabited-closed-interval-Total-Order : - is-inhabited-subtype (subtype-inhabited-closed-interval-Total-Order X [x,y]) + is-inhabited-subtype + ( subtype-inhabited-closed-interval-Total-Order X [x,y]) is-inhabited-inhabited-closed-interval-Total-Order = is-inhabited-inhabited-closed-interval-Poset (poset-Total-Order X) [x,y] ``` @@ -167,14 +169,16 @@ module _ ([a,b] : inhabited-closed-interval-Total-Order X) → (c : type-inhabited-closed-interval-Total-Order X [a,b]) → inhabited-closed-interval-Total-Order X - divide-below-inhabited-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = + divide-below-inhabited-closed-interval-Total-Order + ((a , b) , a≤b) (c , a≤c , c≤b) = ((a , c) , a≤c) divide-above-inhabited-closed-interval-Total-Order : ([a,b] : inhabited-closed-interval-Total-Order X) → (c : type-inhabited-closed-interval-Total-Order X [a,b]) → inhabited-closed-interval-Total-Order X - divide-above-inhabited-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = + divide-above-inhabited-closed-interval-Total-Order + ((a , b) , a≤b) (c , a≤c , c≤b) = ((c , b) , c≤b) abstract @@ -216,7 +220,9 @@ module _ subtype-inhabited-closed-interval-Total-Order X [a,b] eq-divide-subtype-inhabited-closed-interval-Total-Order [a,b] c = eq-has-same-elements-subtype _ _ - ( has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order [a,b] c) + ( has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order + ( [a,b]) + ( c)) ``` ### The minimal interval covering two elements From ee0c903923ad37bd4285cb6393cd49c05ac25863 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 23 Sep 2025 18:01:25 -0700 Subject: [PATCH 20/59] Renaming --- ...closed-intervals-rational-numbers.lagda.md | 95 ------------------- 1 file changed, 95 deletions(-) diff --git a/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md index a2c8fc2132..140e7a296f 100644 --- a/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md @@ -604,101 +604,6 @@ module _ where abstract - has-same-elements-associative-mul-inhabited-closed-interval-ℚ : - has-same-elements-subtype - ( subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f]))) - ( subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]))) - pr1 (has-same-elements-associative-mul-inhabited-closed-interval-ℚ x) - x∈<[a,b][c,d]>[e,f] = - let - open - do-syntax-trunc-Prop - ( subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f])) - ( x)) - in do - ((p , q) , p∈[a,b][c,d] , q∈[e,f] , x=pq) ← - is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f]) - ( x) - ( x∈<[a,b][c,d]>[e,f]) - ((r , s) , r∈[a,b] , s∈[c,d] , p=rs) ← - is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( [c,d]) - ( p) - ( p∈[a,b][c,d]) - inv-tr - ( is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]))) - ( x=pq ∙ ap-mul-ℚ p=rs refl ∙ associative-mul-ℚ _ _ _) - ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]) - ( r) - ( s *ℚ q) - ( r∈[a,b]) - ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ - ( [c,d]) - ( [e,f]) - ( s) - ( q) - ( s∈[c,d]) - ( q∈[e,f]))) - pr2 (has-same-elements-associative-mul-inhabited-closed-interval-ℚ x) - x∈[a,b]<[c,d][e,f]> = - let - open - do-syntax-trunc-Prop - ( subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f])) - ( x)) - in do - ((p , q) , p∈[a,b] , q∈[c,d][e,f] , x=pq) ← - is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]) - ( x) - ( x∈[a,b]<[c,d][e,f]>) - ((r , s) , r∈[c,d] , s∈[e,f] , q=rs) ← - is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ - ( [c,d]) - ( [e,f]) - ( q) - ( q∈[c,d][e,f]) - inv-tr - ( is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f]))) - ( x=pq ∙ ap-mul-ℚ refl q=rs ∙ inv (associative-mul-ℚ _ _ _)) - ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f]) - ( p *ℚ r) - ( s) - ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ - ( [a,b]) - ( [c,d]) - ( p) - ( r) - ( p∈[a,b]) - ( r∈[c,d])) - ( s∈[e,f])) - associative-mul-inhabited-closed-interval-ℚ : mul-inhabited-closed-interval-ℚ ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) From 2cbc08277fa831bf49af2baa07b7c89313fc4a92 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 23 Sep 2025 18:08:51 -0700 Subject: [PATCH 21/59] Progress --- ...nhabited-closed-intervals-rational-numbers.lagda.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md index 1719f5178d..38daf744f5 100644 --- a/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md @@ -32,11 +32,11 @@ open import order-theory.inhabited-closed-intervals-posets ## Idea -A -{{#concept "closed interval" Disambiguation="in the rational numbers" Agda=inhabited-closed-interval-ℚ}} -in the rational numbers is a -[closed interval](order-theory.closed-intervals-posets.md) in the -[poset](elementary-number-theory.inequality-rational-numbers.md) of +An +{{#concept "inhabited closed interval" Disambiguation="in the rational numbers" Agda=inhabited-closed-interval-ℚ}} +in the rational numbers is an +[inhabited closed interval](order-theory.inhabited-closed-intervals-posets.md) +in the [poset](elementary-number-theory.inequality-rational-numbers.md) of [rational numbers](elementary-number-theory.rational-numbers.md). ## Definition From 2ec83b1b558c4c5fc225c3739f9563cfdb1595e0 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 30 Sep 2025 15:59:23 -0700 Subject: [PATCH 22/59] Progress --- src/elementary-number-theory.lagda.md | 3 - ...closed-intervals-rational-numbers.lagda.md | 223 ++++++ ...closed-intervals-rational-numbers.lagda.md | 223 ------ ...closed-intervals-rational-numbers.lagda.md | 154 ++++ ...closed-intervals-rational-numbers.lagda.md | 154 ---- ...closed-intervals-rational-numbers.lagda.md | 754 ++++++++++++++++++ ...closed-intervals-rational-numbers.lagda.md | 754 ------------------ src/order-theory.lagda.md | 2 - ...d-interval-preserving-maps-posets.lagda.md | 18 +- ...rval-preserving-maps-total-orders.lagda.md | 14 +- .../closed-intervals-posets.lagda.md | 175 ++++ ...=> closed-intervals-total-orders.lagda.md} | 224 +++--- ...inhabited-closed-intervals-posets.lagda.md | 173 ---- 13 files changed, 1434 insertions(+), 1437 deletions(-) create mode 100644 src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md delete mode 100644 src/elementary-number-theory/addition-inhabited-closed-intervals-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md delete mode 100644 src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md delete mode 100644 src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md create mode 100644 src/order-theory/closed-intervals-posets.lagda.md rename src/order-theory/{inhabited-closed-intervals-total-orders.lagda.md => closed-intervals-total-orders.lagda.md} (69%) delete mode 100644 src/order-theory/inhabited-closed-intervals-posets.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 0bec58f489..52eb042351 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -12,7 +12,6 @@ module elementary-number-theory where open import elementary-number-theory.absolute-value-integers public open import elementary-number-theory.absolute-value-rational-numbers public open import elementary-number-theory.ackermann-function public -open import elementary-number-theory.addition-inhabited-closed-intervals-rational-numbers public open import elementary-number-theory.addition-integer-fractions public open import elementary-number-theory.addition-integers public open import elementary-number-theory.addition-natural-numbers public @@ -98,7 +97,6 @@ open import elementary-number-theory.inequality-rational-numbers public open import elementary-number-theory.inequality-standard-finite-types public open import elementary-number-theory.infinite-conatural-numbers public open import elementary-number-theory.infinitude-of-primes public -open import elementary-number-theory.inhabited-closed-intervals-rational-numbers 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 @@ -119,7 +117,6 @@ open import elementary-number-theory.modular-arithmetic public open import elementary-number-theory.modular-arithmetic-standard-finite-types public open import elementary-number-theory.monoid-of-natural-numbers-with-addition public open import elementary-number-theory.monoid-of-natural-numbers-with-maximum public -open import elementary-number-theory.multiplication-inhabited-closed-intervals-rational-numbers public open import elementary-number-theory.multiplication-integer-fractions public open import elementary-number-theory.multiplication-integers public open import elementary-number-theory.multiplication-lists-of-natural-numbers public diff --git a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..a2c1cd6833 --- /dev/null +++ b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md @@ -0,0 +1,223 @@ +# Addition on closed intervals in the rational numbers + +```agda +module elementary-number-theory.addition-closed-intervals-rational-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.inequality-rational-numbers +open import elementary-number-theory.closed-intervals-rational-numbers +open import elementary-number-theory.rational-numbers + +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.existential-quantification +open import foundation.identity-types +open import foundation.propositional-truncations +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.commutative-monoids +open import group-theory.minkowski-multiplication-commutative-monoids +open import group-theory.monoids +open import group-theory.semigroups + +open import order-theory.closed-intervals-posets +``` + +
+ +## Idea + +Given two +[inhabited closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) +`[a, b]` and `[c, d]` in the +[rational numbers](elementary-number-theory.rational-numbers.md), the +[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of +those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) +agrees with the interval `[a + c, b + d]`. + +## Definition + +```agda +add-closed-interval-ℚ : + closed-interval-ℚ → closed-interval-ℚ → + closed-interval-ℚ +add-closed-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = + ((a +ℚ c , b +ℚ d) , preserves-leq-add-ℚ a≤b c≤d) +``` + +## Properties + +### Agreement with the Minkowski sum + +```agda +abstract + is-in-minkowski-sum-is-in-add-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + (q : ℚ) → + is-in-closed-interval-ℚ + ( add-closed-interval-ℚ [a,b] [c,d]) + ( q) → + is-in-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d])) + ( q) + is-in-minkowski-sum-is-in-add-closed-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q (a+c≤q , q≤b+d) = + rec-coproduct + ( λ q≤a+d → + intro-exists + ( a , q -ℚ a) + ( ( refl-leq-ℚ a , a≤b) , + ( leq-transpose-left-add-ℚ' _ _ _ a+c≤q , + leq-transpose-right-add-ℚ' _ _ _ q≤a+d) , + inv (is-identity-right-conjugation-add-ℚ _ _))) + ( λ a+d≤q → + intro-exists + ( q -ℚ d , d) + ( ( leq-transpose-left-add-ℚ _ _ _ a+d≤q , + leq-transpose-right-add-ℚ _ _ _ q≤b+d) , + ( c≤d , refl-leq-ℚ d) , + inv (is-section-diff-ℚ _ _))) + ( linear-leq-ℚ q (a +ℚ d)) + + is-in-add-interval-is-in-minkowski-sum-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + (q : ℚ) → + is-in-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d])) + ( q) → + is-in-closed-interval-ℚ + ( add-closed-interval-ℚ [a,b] [c,d]) + ( q) + is-in-add-interval-is-in-minkowski-sum-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q q∈[a,b]+[c,d] = + let + open + do-syntax-trunc-Prop + ( subtype-closed-interval-ℚ + ( add-closed-interval-ℚ [a,b] [c,d]) + ( q)) + in do + ((s , t) , (a≤s , s≤b) , (c≤t , t≤d) , q=s+t) ← q∈[a,b]+[c,d] + ( inv-tr (leq-ℚ (a +ℚ c)) q=s+t (preserves-leq-add-ℚ a≤s c≤t) , + inv-tr (λ r → leq-ℚ r (b +ℚ d)) q=s+t (preserves-leq-add-ℚ s≤b t≤d)) + +has-same-elements-minkowski-add-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + has-same-elements-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d])) + ( subtype-closed-interval-ℚ + ( add-closed-interval-ℚ [a,b] [c,d])) +has-same-elements-minkowski-add-closed-interval-ℚ [a,b] [c,d] q = + ( is-in-add-interval-is-in-minkowski-sum-ℚ [a,b] [c,d] q , + is-in-minkowski-sum-is-in-add-closed-interval-ℚ [a,b] [c,d] q) + +eq-minkowski-add-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-add-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d]) = + subtype-closed-interval-ℚ + ( add-closed-interval-ℚ [a,b] [c,d]) +eq-minkowski-add-closed-interval-ℚ [a,b] [c,d] = + eq-has-same-elements-subtype _ _ + ( has-same-elements-minkowski-add-closed-interval-ℚ [a,b] [c,d]) +``` + +### Associativity + +```agda +abstract + associative-add-closed-interval-ℚ : + ([a,b] [c,d] [e,f] : closed-interval-ℚ) → + add-closed-interval-ℚ + ( add-closed-interval-ℚ [a,b] [c,d]) + ( [e,f]) = + add-closed-interval-ℚ + ( [a,b]) + ( add-closed-interval-ℚ [c,d] [e,f]) + associative-add-closed-interval-ℚ _ _ _ = + eq-closed-interval-ℚ _ _ + ( associative-add-ℚ _ _ _) + ( associative-add-ℚ _ _ _) +``` + +### Commutativity + +```agda +abstract + commutative-add-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + add-closed-interval-ℚ [a,b] [c,d] = + add-closed-interval-ℚ [c,d] [a,b] + commutative-add-closed-interval-ℚ _ _ = + eq-closed-interval-ℚ _ _ + ( commutative-add-ℚ _ _) + ( commutative-add-ℚ _ _) +``` + +### Unit laws + +```agda +abstract + left-unit-law-add-closed-interval-ℚ : + ([a,b] : closed-interval-ℚ) → + add-closed-interval-ℚ + ( zero-zero-closed-interval-ℚ) + ( [a,b]) = + [a,b] + left-unit-law-add-closed-interval-ℚ _ = + eq-closed-interval-ℚ _ _ + ( left-unit-law-add-ℚ _) + ( left-unit-law-add-ℚ _) + + right-unit-law-add-closed-interval-ℚ : + ([a,b] : closed-interval-ℚ) → + add-closed-interval-ℚ + ( [a,b]) + ( zero-zero-closed-interval-ℚ) = + [a,b] + right-unit-law-add-closed-interval-ℚ _ = + eq-closed-interval-ℚ _ _ + ( right-unit-law-add-ℚ _) + ( right-unit-law-add-ℚ _) +``` + +### The commutative monoid of addition of rational intervals + +```agda +semigroup-add-closed-interval-ℚ : Semigroup lzero +semigroup-add-closed-interval-ℚ = + ( set-closed-interval-ℚ , + add-closed-interval-ℚ , + associative-add-closed-interval-ℚ) + +monoid-add-closed-interval-ℚ : Monoid lzero +monoid-add-closed-interval-ℚ = + ( semigroup-add-closed-interval-ℚ , + zero-zero-closed-interval-ℚ , + left-unit-law-add-closed-interval-ℚ , + right-unit-law-add-closed-interval-ℚ) + +commutative-monoid-add-closed-interval-ℚ : Commutative-Monoid lzero +commutative-monoid-add-closed-interval-ℚ = + ( monoid-add-closed-interval-ℚ , + commutative-add-closed-interval-ℚ) +``` diff --git a/src/elementary-number-theory/addition-inhabited-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-inhabited-closed-intervals-rational-numbers.lagda.md deleted file mode 100644 index e3bc9afc8e..0000000000 --- a/src/elementary-number-theory/addition-inhabited-closed-intervals-rational-numbers.lagda.md +++ /dev/null @@ -1,223 +0,0 @@ -# Addition on closed intervals in the rational numbers - -```agda -module elementary-number-theory.addition-inhabited-closed-intervals-rational-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.inequality-rational-numbers -open import elementary-number-theory.inhabited-closed-intervals-rational-numbers -open import elementary-number-theory.rational-numbers - -open import foundation.coproduct-types -open import foundation.dependent-pair-types -open import foundation.existential-quantification -open import foundation.identity-types -open import foundation.propositional-truncations -open import foundation.subtypes -open import foundation.transport-along-identifications -open import foundation.universe-levels - -open import group-theory.commutative-monoids -open import group-theory.minkowski-multiplication-commutative-monoids -open import group-theory.monoids -open import group-theory.semigroups - -open import order-theory.inhabited-closed-intervals-posets -``` - -
- -## Idea - -Given two -[inhabited closed intervals](elementary-number-theory.inhabited-closed-intervals-rational-numbers.md) -`[a, b]` and `[c, d]` in the -[rational numbers](elementary-number-theory.rational-numbers.md), the -[Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of -those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) -agrees with the interval `[a + c, b + d]`. - -## Definition - -```agda -add-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → - inhabited-closed-interval-ℚ -add-inhabited-closed-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = - ((a +ℚ c , b +ℚ d) , preserves-leq-add-ℚ a≤b c≤d) -``` - -## Properties - -### Agreement with the Minkowski sum - -```agda -abstract - is-in-minkowski-sum-is-in-add-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - (q : ℚ) → - is-in-inhabited-closed-interval-ℚ - ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( q) → - is-in-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-add-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d])) - ( q) - is-in-minkowski-sum-is-in-add-inhabited-closed-interval-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q (a+c≤q , q≤b+d) = - rec-coproduct - ( λ q≤a+d → - intro-exists - ( a , q -ℚ a) - ( ( refl-leq-ℚ a , a≤b) , - ( leq-transpose-left-add-ℚ' _ _ _ a+c≤q , - leq-transpose-right-add-ℚ' _ _ _ q≤a+d) , - inv (is-identity-right-conjugation-add-ℚ _ _))) - ( λ a+d≤q → - intro-exists - ( q -ℚ d , d) - ( ( leq-transpose-left-add-ℚ _ _ _ a+d≤q , - leq-transpose-right-add-ℚ _ _ _ q≤b+d) , - ( c≤d , refl-leq-ℚ d) , - inv (is-section-diff-ℚ _ _))) - ( linear-leq-ℚ q (a +ℚ d)) - - is-in-add-interval-is-in-minkowski-sum-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - (q : ℚ) → - is-in-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-add-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d])) - ( q) → - is-in-inhabited-closed-interval-ℚ - ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( q) - is-in-add-interval-is-in-minkowski-sum-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) q q∈[a,b]+[c,d] = - let - open - do-syntax-trunc-Prop - ( subtype-inhabited-closed-interval-ℚ - ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( q)) - in do - ((s , t) , (a≤s , s≤b) , (c≤t , t≤d) , q=s+t) ← q∈[a,b]+[c,d] - ( inv-tr (leq-ℚ (a +ℚ c)) q=s+t (preserves-leq-add-ℚ a≤s c≤t) , - inv-tr (λ r → leq-ℚ r (b +ℚ d)) q=s+t (preserves-leq-add-ℚ s≤b t≤d)) - -has-same-elements-minkowski-add-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - has-same-elements-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-add-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d])) - ( subtype-inhabited-closed-interval-ℚ - ( add-inhabited-closed-interval-ℚ [a,b] [c,d])) -has-same-elements-minkowski-add-inhabited-closed-interval-ℚ [a,b] [c,d] q = - ( is-in-add-interval-is-in-minkowski-sum-ℚ [a,b] [c,d] q , - is-in-minkowski-sum-is-in-add-inhabited-closed-interval-ℚ [a,b] [c,d] q) - -eq-minkowski-add-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - minkowski-mul-Commutative-Monoid - ( commutative-monoid-add-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d]) = - subtype-inhabited-closed-interval-ℚ - ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) -eq-minkowski-add-inhabited-closed-interval-ℚ [a,b] [c,d] = - eq-has-same-elements-subtype _ _ - ( has-same-elements-minkowski-add-inhabited-closed-interval-ℚ [a,b] [c,d]) -``` - -### Associativity - -```agda -abstract - associative-add-inhabited-closed-interval-ℚ : - ([a,b] [c,d] [e,f] : inhabited-closed-interval-ℚ) → - add-inhabited-closed-interval-ℚ - ( add-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f]) = - add-inhabited-closed-interval-ℚ - ( [a,b]) - ( add-inhabited-closed-interval-ℚ [c,d] [e,f]) - associative-add-inhabited-closed-interval-ℚ _ _ _ = - eq-inhabited-closed-interval-ℚ _ _ - ( associative-add-ℚ _ _ _) - ( associative-add-ℚ _ _ _) -``` - -### Commutativity - -```agda -abstract - commutative-add-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - add-inhabited-closed-interval-ℚ [a,b] [c,d] = - add-inhabited-closed-interval-ℚ [c,d] [a,b] - commutative-add-inhabited-closed-interval-ℚ _ _ = - eq-inhabited-closed-interval-ℚ _ _ - ( commutative-add-ℚ _ _) - ( commutative-add-ℚ _ _) -``` - -### Unit laws - -```agda -abstract - left-unit-law-add-inhabited-closed-interval-ℚ : - ([a,b] : inhabited-closed-interval-ℚ) → - add-inhabited-closed-interval-ℚ - ( zero-zero-inhabited-closed-interval-ℚ) - ( [a,b]) = - [a,b] - left-unit-law-add-inhabited-closed-interval-ℚ _ = - eq-inhabited-closed-interval-ℚ _ _ - ( left-unit-law-add-ℚ _) - ( left-unit-law-add-ℚ _) - - right-unit-law-add-inhabited-closed-interval-ℚ : - ([a,b] : inhabited-closed-interval-ℚ) → - add-inhabited-closed-interval-ℚ - ( [a,b]) - ( zero-zero-inhabited-closed-interval-ℚ) = - [a,b] - right-unit-law-add-inhabited-closed-interval-ℚ _ = - eq-inhabited-closed-interval-ℚ _ _ - ( right-unit-law-add-ℚ _) - ( right-unit-law-add-ℚ _) -``` - -### The commutative monoid of addition of rational intervals - -```agda -semigroup-add-inhabited-closed-interval-ℚ : Semigroup lzero -semigroup-add-inhabited-closed-interval-ℚ = - ( set-inhabited-closed-interval-ℚ , - add-inhabited-closed-interval-ℚ , - associative-add-inhabited-closed-interval-ℚ) - -monoid-add-inhabited-closed-interval-ℚ : Monoid lzero -monoid-add-inhabited-closed-interval-ℚ = - ( semigroup-add-inhabited-closed-interval-ℚ , - zero-zero-inhabited-closed-interval-ℚ , - left-unit-law-add-inhabited-closed-interval-ℚ , - right-unit-law-add-inhabited-closed-interval-ℚ) - -commutative-monoid-add-inhabited-closed-interval-ℚ : Commutative-Monoid lzero -commutative-monoid-add-inhabited-closed-interval-ℚ = - ( monoid-add-inhabited-closed-interval-ℚ , - commutative-add-inhabited-closed-interval-ℚ) -``` diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..da389ed88a --- /dev/null +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -0,0 +1,154 @@ +# Inhabited closed intervals in the rational numbers + +```agda +module elementary-number-theory.closed-intervals-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.decidable-total-order-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.nonnegative-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.injective-maps +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import order-theory.closed-interval-preserving-maps-posets +open import order-theory.decidable-total-orders +open import order-theory.closed-intervals-posets +``` + +
+ +## Idea + +An +{{#concept "inhabited closed interval" Disambiguation="in the rational numbers" Agda=closed-interval-ℚ}} +in the rational numbers is a +[closed interval](order-theory.closed-intervals-posets.md) in the +[poset](elementary-number-theory.inequality-rational-numbers.md) of +[rational numbers](elementary-number-theory.rational-numbers.md). + +## Definition + +```agda +closed-interval-ℚ : UU lzero +closed-interval-ℚ = closed-interval-Poset ℚ-Poset + +lower-bound-closed-interval-ℚ : closed-interval-ℚ → ℚ +lower-bound-closed-interval-ℚ = + lower-bound-closed-interval-Poset ℚ-Poset + +upper-bound-closed-interval-ℚ : closed-interval-ℚ → ℚ +upper-bound-closed-interval-ℚ = + upper-bound-closed-interval-Poset ℚ-Poset + +subtype-closed-interval-ℚ : + closed-interval-ℚ → subtype lzero ℚ +subtype-closed-interval-ℚ = + subtype-closed-interval-Poset ℚ-Poset + +is-in-closed-interval-ℚ : closed-interval-ℚ → ℚ → UU lzero +is-in-closed-interval-ℚ [a,b] = + is-in-subtype (subtype-closed-interval-ℚ [a,b]) + +is-closed-interval-map-prop-ℚ : + (ℚ → ℚ) → closed-interval-ℚ → closed-interval-ℚ → + Prop lzero +is-closed-interval-map-prop-ℚ = + is-closed-interval-map-prop-Poset ℚ-Poset ℚ-Poset + +is-below-prop-closed-interval-ℚ : + closed-interval-ℚ → subtype lzero ℚ +is-below-prop-closed-interval-ℚ ((a , _) , _) b = le-ℚ-Prop b a + +is-above-prop-closed-interval-ℚ : + closed-interval-ℚ → subtype lzero ℚ +is-above-prop-closed-interval-ℚ ((_ , a) , _) b = le-ℚ-Prop a b + +nonnegative-width-closed-interval-ℚ : + closed-interval-ℚ → ℚ⁰⁺ +nonnegative-width-closed-interval-ℚ ((a , b) , a≤b) = + nonnegative-diff-leq-ℚ a b a≤b + +width-closed-interval-ℚ : closed-interval-ℚ → ℚ +width-closed-interval-ℚ [a,b] = + rational-ℚ⁰⁺ (nonnegative-width-closed-interval-ℚ [a,b]) + +is-injective-subtype-closed-interval-ℚ : + is-injective subtype-closed-interval-ℚ +is-injective-subtype-closed-interval-ℚ = + is-injective-subtype-closed-interval-Poset ℚ-Poset +``` + +### Important ranges + +```agda +zero-zero-closed-interval-ℚ : closed-interval-ℚ +zero-zero-closed-interval-ℚ = ((zero-ℚ , zero-ℚ) , refl-leq-ℚ zero-ℚ) + +one-one-closed-interval-ℚ : closed-interval-ℚ +one-one-closed-interval-ℚ = ((one-ℚ , one-ℚ) , refl-leq-ℚ one-ℚ) +``` + +## Properties + +### Characterization of equality + +```agda +eq-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + ( lower-bound-closed-interval-ℚ [a,b] = + lower-bound-closed-interval-ℚ [c,d]) → + ( upper-bound-closed-interval-ℚ [a,b] = + upper-bound-closed-interval-ℚ [c,d]) → + [a,b] = [c,d] +eq-closed-interval-ℚ = eq-closed-interval-Poset ℚ-Poset + +set-closed-interval-ℚ : Set lzero +set-closed-interval-ℚ = set-closed-interval-Poset ℚ-Poset +``` + +### Unordered intervals + +```agda +unordered-closed-interval-ℚ : ℚ → ℚ → closed-interval-ℚ +unordered-closed-interval-ℚ a b = + ( (min-ℚ a b , max-ℚ a b) , + min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order a b) + +abstract + unordered-closed-interval-leq-ℚ : + (p q : ℚ) → (p≤q : leq-ℚ p q) → + unordered-closed-interval-ℚ p q = ((p , q) , p≤q) + unordered-closed-interval-leq-ℚ p q p≤q = + eq-closed-interval-ℚ _ _ + ( left-leq-right-min-ℚ p q p≤q) + ( left-leq-right-max-ℚ p q p≤q) + + unordered-closed-interval-leq-ℚ' : + (p q : ℚ) → (q≤p : leq-ℚ q p) → + unordered-closed-interval-ℚ p q = ((q , p) , q≤p) + unordered-closed-interval-leq-ℚ' p q q≤p = + eq-closed-interval-ℚ _ _ + ( right-leq-left-min-ℚ p q q≤p) + ( right-leq-left-max-ℚ p q q≤p) +``` + +### Maps from rational intervals to rational intervals + +```agda +is-closed-interval-map-ℚ : + (ℚ → ℚ) → ([a,b] [c,d] : closed-interval-ℚ) → UU lzero +is-closed-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset +``` diff --git a/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md deleted file mode 100644 index 38daf744f5..0000000000 --- a/src/elementary-number-theory/inhabited-closed-intervals-rational-numbers.lagda.md +++ /dev/null @@ -1,154 +0,0 @@ -# Inhabited closed intervals in the rational numbers - -```agda -module elementary-number-theory.inhabited-closed-intervals-rational-numbers where -``` - -
Imports - -```agda -open import elementary-number-theory.decidable-total-order-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.nonnegative-rational-numbers -open import elementary-number-theory.rational-numbers -open import elementary-number-theory.strict-inequality-rational-numbers - -open import foundation.dependent-pair-types -open import foundation.identity-types -open import foundation.injective-maps -open import foundation.propositions -open import foundation.sets -open import foundation.subtypes -open import foundation.universe-levels - -open import order-theory.closed-interval-preserving-maps-posets -open import order-theory.decidable-total-orders -open import order-theory.inhabited-closed-intervals-posets -``` - -
- -## Idea - -An -{{#concept "inhabited closed interval" Disambiguation="in the rational numbers" Agda=inhabited-closed-interval-ℚ}} -in the rational numbers is an -[inhabited closed interval](order-theory.inhabited-closed-intervals-posets.md) -in the [poset](elementary-number-theory.inequality-rational-numbers.md) of -[rational numbers](elementary-number-theory.rational-numbers.md). - -## Definition - -```agda -inhabited-closed-interval-ℚ : UU lzero -inhabited-closed-interval-ℚ = inhabited-closed-interval-Poset ℚ-Poset - -lower-bound-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ → ℚ -lower-bound-inhabited-closed-interval-ℚ = - lower-bound-inhabited-closed-interval-Poset ℚ-Poset - -upper-bound-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ → ℚ -upper-bound-inhabited-closed-interval-ℚ = - upper-bound-inhabited-closed-interval-Poset ℚ-Poset - -subtype-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → subtype lzero ℚ -subtype-inhabited-closed-interval-ℚ = - subtype-inhabited-closed-interval-Poset ℚ-Poset - -is-in-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ → ℚ → UU lzero -is-in-inhabited-closed-interval-ℚ [a,b] = - is-in-subtype (subtype-inhabited-closed-interval-ℚ [a,b]) - -is-closed-interval-map-prop-ℚ : - (ℚ → ℚ) → inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → - Prop lzero -is-closed-interval-map-prop-ℚ = - is-closed-interval-map-prop-Poset ℚ-Poset ℚ-Poset - -is-below-prop-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → subtype lzero ℚ -is-below-prop-inhabited-closed-interval-ℚ ((a , _) , _) b = le-ℚ-Prop b a - -is-above-prop-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → subtype lzero ℚ -is-above-prop-inhabited-closed-interval-ℚ ((_ , a) , _) b = le-ℚ-Prop a b - -nonnegative-width-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → ℚ⁰⁺ -nonnegative-width-inhabited-closed-interval-ℚ ((a , b) , a≤b) = - nonnegative-diff-leq-ℚ a b a≤b - -width-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ → ℚ -width-inhabited-closed-interval-ℚ [a,b] = - rational-ℚ⁰⁺ (nonnegative-width-inhabited-closed-interval-ℚ [a,b]) - -is-injective-subtype-inhabited-closed-interval-ℚ : - is-injective subtype-inhabited-closed-interval-ℚ -is-injective-subtype-inhabited-closed-interval-ℚ = - is-injective-subtype-inhabited-closed-interval-Poset ℚ-Poset -``` - -### Important ranges - -```agda -zero-zero-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ -zero-zero-inhabited-closed-interval-ℚ = ((zero-ℚ , zero-ℚ) , refl-leq-ℚ zero-ℚ) - -one-one-inhabited-closed-interval-ℚ : inhabited-closed-interval-ℚ -one-one-inhabited-closed-interval-ℚ = ((one-ℚ , one-ℚ) , refl-leq-ℚ one-ℚ) -``` - -## Properties - -### Characterization of equality - -```agda -eq-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - ( lower-bound-inhabited-closed-interval-ℚ [a,b] = - lower-bound-inhabited-closed-interval-ℚ [c,d]) → - ( upper-bound-inhabited-closed-interval-ℚ [a,b] = - upper-bound-inhabited-closed-interval-ℚ [c,d]) → - [a,b] = [c,d] -eq-inhabited-closed-interval-ℚ = eq-inhabited-closed-interval-Poset ℚ-Poset - -set-inhabited-closed-interval-ℚ : Set lzero -set-inhabited-closed-interval-ℚ = set-inhabited-closed-interval-Poset ℚ-Poset -``` - -### Unordered intervals - -```agda -unordered-inhabited-closed-interval-ℚ : ℚ → ℚ → inhabited-closed-interval-ℚ -unordered-inhabited-closed-interval-ℚ a b = - ( (min-ℚ a b , max-ℚ a b) , - min-leq-max-Decidable-Total-Order ℚ-Decidable-Total-Order a b) - -abstract - unordered-closed-interval-leq-ℚ : - (p q : ℚ) → (p≤q : leq-ℚ p q) → - unordered-inhabited-closed-interval-ℚ p q = ((p , q) , p≤q) - unordered-closed-interval-leq-ℚ p q p≤q = - eq-inhabited-closed-interval-ℚ _ _ - ( left-leq-right-min-ℚ p q p≤q) - ( left-leq-right-max-ℚ p q p≤q) - - unordered-closed-interval-leq-ℚ' : - (p q : ℚ) → (q≤p : leq-ℚ q p) → - unordered-inhabited-closed-interval-ℚ p q = ((q , p) , q≤p) - unordered-closed-interval-leq-ℚ' p q q≤p = - eq-inhabited-closed-interval-ℚ _ _ - ( right-leq-left-min-ℚ p q q≤p) - ( right-leq-left-max-ℚ p q q≤p) -``` - -### Maps from rational intervals to rational intervals - -```agda -is-closed-interval-map-ℚ : - (ℚ → ℚ) → ([a,b] [c,d] : inhabited-closed-interval-ℚ) → UU lzero -is-closed-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset -``` 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 new file mode 100644 index 0000000000..fac114e3cb --- /dev/null +++ b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md @@ -0,0 +1,754 @@ +# Multiplication on inhabited closed intervals in the rational numbers + +```agda +module elementary-number-theory.multiplication-closed-intervals-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-closed-intervals-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.decidable-total-order-rational-numbers +open import elementary-number-theory.difference-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.closed-intervals-rational-numbers +open import elementary-number-theory.maximum-rational-numbers +open import elementary-number-theory.minimum-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.multiplicative-group-of-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.positive-and-negative-rational-numbers +open import elementary-number-theory.positive-rational-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.binary-transport +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.disjunction +open import foundation.existential-quantification +open import foundation.function-extensionality +open import foundation.identity-types +open import foundation.images-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.commutative-monoids +open import group-theory.minkowski-multiplication-commutative-monoids +open import group-theory.monoids +open import group-theory.semigroups + +open import order-theory.decidable-total-orders +open import order-theory.closed-intervals-total-orders +open import order-theory.total-orders +``` + +
+ +## Idea + +Given two +[inhabited closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) +`[a, b]` and `[c, d]` in the +[rational numbers](elementary-number-theory.rational-numbers.md), the +[Minkowski product](group-theory.minkowski-multiplication-commutative-monoids.md) +of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) +agrees with the interval `[min(ac, ad, bc, bd), max(ac, ad, bc, bd)]`. + +Notably, this is because nonzero rational numbers are +[invertible](elementary-number-theory.multiplicative-group-of-rational-numbers.md); +this would not be true for the +[natural numbers](elementary-number-theory.natural-numbers.md), as +`[2, 2] * [a, b]` in the natural numbers is not the full interval `[2a, 2b]` but +only the even elements. + +## Definition + +```agda +mul-closed-interval-ℚ-ℚ : + ℚ → closed-interval-ℚ → closed-interval-ℚ +mul-closed-interval-ℚ-ℚ a ((b , c) , _) = + unordered-closed-interval-ℚ (a *ℚ b) (a *ℚ c) + +mul-ℚ-closed-interval-ℚ : + closed-interval-ℚ → ℚ → closed-interval-ℚ +mul-ℚ-closed-interval-ℚ ((a , b) , _) c = + unordered-closed-interval-ℚ (a *ℚ c) (b *ℚ c) + +mul-closed-interval-ℚ : + closed-interval-ℚ → closed-interval-ℚ → + closed-interval-ℚ +mul-closed-interval-ℚ ((a , b) , _) ((c , d) , _) = + minimal-closed-interval-cover-of-four-elements-Total-Order + ( ℚ-Total-Order) + ( a *ℚ c) + ( a *ℚ d) + ( b *ℚ c) + ( b *ℚ d) + +lower-bound-mul-closed-interval-ℚ : + closed-interval-ℚ → closed-interval-ℚ → ℚ +lower-bound-mul-closed-interval-ℚ [a,b] [c,d] = + lower-bound-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) + +upper-bound-mul-closed-interval-ℚ : + closed-interval-ℚ → closed-interval-ℚ → ℚ +upper-bound-mul-closed-interval-ℚ [a,b] [c,d] = + upper-bound-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) +``` + +## Properties + +### Multiplication of an interval by a rational number + +#### Multiplication of an interval by a negative rational number + +```agda +mul-closed-interval-ℚ-ℚ⁻ : + closed-interval-ℚ → ℚ⁻ → closed-interval-ℚ +mul-closed-interval-ℚ-ℚ⁻ ((p , q) , p≤q) s⁻@(s , _) = + ((q *ℚ s , p *ℚ s) , reverses-leq-right-mul-ℚ⁻ s⁻ _ _ p≤q) + +abstract + mul-is-in-closed-interval-ℚ-ℚ⁻ : + ([p,q] : closed-interval-ℚ) (r : ℚ⁻) (s : ℚ) → + is-in-closed-interval-ℚ [p,q] s → + is-in-closed-interval-ℚ + ( mul-closed-interval-ℚ-ℚ⁻ [p,q] r) + ( s *ℚ rational-ℚ⁻ r) + mul-is-in-closed-interval-ℚ-ℚ⁻ + ((p , q) , p≤q) r s (p≤s , s≤q) = + ( reverses-leq-right-mul-ℚ⁻ r _ _ s≤q , + reverses-leq-right-mul-ℚ⁻ r _ _ p≤s) + + is-in-im-is-in-mul-closed-interval-ℚ-ℚ⁻ : + ([p,q] : closed-interval-ℚ) (r : ℚ⁻) (s : ℚ) → + is-in-closed-interval-ℚ + ( mul-closed-interval-ℚ-ℚ⁻ [p,q] r) + ( s) → + is-in-im-subtype + ( mul-ℚ' (rational-ℚ⁻ r)) + ( subtype-closed-interval-ℚ [p,q]) + ( s) + is-in-im-is-in-mul-closed-interval-ℚ-ℚ⁻ + ((p , q) , p≤q) r⁻@(r , _) s (qr≤s , s≤pr) = + let r⁻¹ = inv-ℚ⁻ r⁻ + in + intro-exists + ( ( s *ℚ rational-ℚ⁻ r⁻¹ , + tr + ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁻ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ p) + ( reverses-leq-right-mul-ℚ⁻ r⁻¹ s (p *ℚ r) s≤pr) , + tr + ( leq-ℚ (s *ℚ rational-ℚ⁻ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ q) + ( reverses-leq-right-mul-ℚ⁻ r⁻¹ (q *ℚ r) s qr≤s))) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (left-inverse-law-mul-ℚ⁻ r⁻) ∙ + right-unit-law-mul-ℚ s) + + is-closed-interval-map-mul-ℚ⁻ : + (q : ℚ⁻) ([a,b] : closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ' (rational-ℚ⁻ q)) + ( [a,b]) + ( mul-closed-interval-ℚ-ℚ⁻ [a,b] q) + is-closed-interval-map-mul-ℚ⁻ q [a,b] = + ( ind-Σ (mul-is-in-closed-interval-ℚ-ℚ⁻ [a,b] q) , + ind-Σ (is-in-im-is-in-mul-closed-interval-ℚ-ℚ⁻ [a,b] q)) +``` + +#### Multiplication of an interval by a positive rational number + +```agda +mul-ℚ⁺-closed-interval-ℚ : + closed-interval-ℚ → ℚ⁺ → closed-interval-ℚ +mul-ℚ⁺-closed-interval-ℚ ((p , q) , p≤q) s⁺@(s , _) = + ((p *ℚ s , q *ℚ s) , preserves-leq-right-mul-ℚ⁺ s⁺ _ _ p≤q) + +abstract + mul-is-in-closed-interval-ℚ-ℚ⁺ : + ([p,q] : closed-interval-ℚ) (r : ℚ⁺) (s : ℚ) → + is-in-closed-interval-ℚ [p,q] s → + is-in-closed-interval-ℚ + ( mul-ℚ⁺-closed-interval-ℚ [p,q] r) + ( s *ℚ rational-ℚ⁺ r) + mul-is-in-closed-interval-ℚ-ℚ⁺ + ((p , q) , p≤q) r s (p≤s , s≤q) = + ( preserves-leq-right-mul-ℚ⁺ r _ _ p≤s , + preserves-leq-right-mul-ℚ⁺ r _ _ s≤q) + + is-in-im-is-in-mul-ℚ⁺-closed-interval-ℚ : + ([p,q] : closed-interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → + is-in-closed-interval-ℚ + ( mul-ℚ⁺-closed-interval-ℚ [p,q] r) + ( s) → + is-in-im-subtype + ( mul-ℚ' (rational-ℚ⁺ r)) + ( subtype-closed-interval-ℚ [p,q]) + ( s) + is-in-im-is-in-mul-ℚ⁺-closed-interval-ℚ + ((p , q) , p≤q) r⁺@(r , _) s (pr≤s , s≤qr) = + let r⁻¹ = inv-ℚ⁺ r⁺ + in + intro-exists + ( ( s *ℚ rational-ℚ⁺ r⁻¹ , + tr + ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁺ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ p) + ( preserves-leq-right-mul-ℚ⁺ r⁻¹ (p *ℚ r) s pr≤s) , + tr + ( leq-ℚ (s *ℚ rational-ℚ⁺ r⁻¹)) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ q) + ( preserves-leq-right-mul-ℚ⁺ r⁻¹ s (q *ℚ r) s≤qr))) + ( associative-mul-ℚ _ _ _ ∙ + ap-mul-ℚ refl (ap rational-ℚ⁺ (left-inverse-law-mul-ℚ⁺ r⁺)) ∙ + right-unit-law-mul-ℚ s) + + is-closed-interval-map-left-mul-ℚ⁺ : + (q : ℚ⁺) ([a,b] : closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ' (rational-ℚ⁺ q)) + ( [a,b]) + ( mul-ℚ⁺-closed-interval-ℚ [a,b] q) + is-closed-interval-map-left-mul-ℚ⁺ q [a,b] = + ( ind-Σ (mul-is-in-closed-interval-ℚ-ℚ⁺ [a,b] q) , + ind-Σ (is-in-im-is-in-mul-ℚ⁺-closed-interval-ℚ [a,b] q)) +``` + +#### Multiplication of an interval by zero + +```agda +abstract + is-in-im-mul-is-in-zero-zero-closed-interval-ℚ : + ([p,q] : closed-interval-ℚ) → (s : ℚ) → + is-in-closed-interval-ℚ + ( zero-zero-closed-interval-ℚ) + ( s) → + is-in-im-subtype + ( mul-ℚ' zero-ℚ) + ( subtype-closed-interval-ℚ [p,q]) + ( s) + is-in-im-mul-is-in-zero-zero-closed-interval-ℚ + ((p , q) , p≤q) s (0≤s , s≤0) = + intro-exists + ( p , refl-leq-ℚ p , p≤q) + ( right-zero-law-mul-ℚ p ∙ antisymmetric-leq-ℚ _ _ 0≤s s≤0) + + is-closed-interval-map-mul-zero-ℚ : + ([a,b] : closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ' zero-ℚ) + ( [a,b]) + ( zero-zero-closed-interval-ℚ) + is-closed-interval-map-mul-zero-ℚ [a,b] = + ( ( λ r → + inv-tr + ( is-in-closed-interval-ℚ + ( zero-zero-closed-interval-ℚ)) + ( right-zero-law-mul-ℚ _) + ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) , + ind-Σ (is-in-im-mul-is-in-zero-zero-closed-interval-ℚ [a,b])) +``` + +#### Multiplication of an interval by any rational number + +```agda +abstract + mul-is-negative-ℚ-closed-interval-ℚ : + ([p,q] : closed-interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → + mul-ℚ-closed-interval-ℚ [p,q] r = + mul-closed-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) + mul-is-negative-ℚ-closed-interval-ℚ [p,q]@((p , q) , p≤q) r neg-r = + unordered-closed-interval-leq-ℚ' _ _ + ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) + + mul-is-positive-ℚ-closed-interval-ℚ : + ([p,q] : closed-interval-ℚ) (r : ℚ) (pos-r : is-positive-ℚ r) → + mul-ℚ-closed-interval-ℚ [p,q] r = + mul-ℚ⁺-closed-interval-ℚ [p,q] (r , pos-r) + mul-is-positive-ℚ-closed-interval-ℚ [p,q]@((p , q) , p≤q) r pos-r = + unordered-closed-interval-leq-ℚ _ _ + ( preserves-leq-right-mul-ℚ⁺ (r , pos-r) _ _ p≤q) + + mul-is-zero-ℚ-closed-interval-ℚ : + ([p,q] : closed-interval-ℚ) (r : ℚ) (is-zero-r : is-zero-ℚ r) → + mul-ℚ-closed-interval-ℚ [p,q] r = + zero-zero-closed-interval-ℚ + mul-is-zero-ℚ-closed-interval-ℚ ((p , q) , p≤q) _ refl = + eq-closed-interval-ℚ _ _ + ( ap-min-ℚ + ( right-zero-law-mul-ℚ _) + ( right-zero-law-mul-ℚ _) ∙ + idempotent-min-ℚ zero-ℚ) + ( ap-max-ℚ + ( right-zero-law-mul-ℚ _) + ( right-zero-law-mul-ℚ _) ∙ + idempotent-max-ℚ zero-ℚ) + + mul-is-in-closed-interval-ℚ-ℚ : + ([p,q] : closed-interval-ℚ) (r s : ℚ) → + is-in-closed-interval-ℚ [p,q] s → + is-in-closed-interval-ℚ + ( mul-ℚ-closed-interval-ℚ [p,q] r) + ( s *ℚ r) + mul-is-in-closed-interval-ℚ-ℚ [p,q] r s s∈[p,q] = + trichotomy-sign-ℚ r + ( λ neg-r → + inv-tr + ( λ [x,y] → is-in-closed-interval-ℚ [x,y] (s *ℚ r)) + ( mul-is-negative-ℚ-closed-interval-ℚ [p,q] r neg-r) + ( mul-is-in-closed-interval-ℚ-ℚ⁻ + ( [p,q]) + ( r , neg-r) + ( s) + ( s∈[p,q]))) + ( λ r=0 → + binary-tr + ( is-in-closed-interval-ℚ) + ( inv (mul-is-zero-ℚ-closed-interval-ℚ [p,q] r r=0)) + ( inv (ap-mul-ℚ refl r=0 ∙ right-zero-law-mul-ℚ s)) + ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) + ( λ pos-r → + inv-tr + ( λ [x,y] → is-in-closed-interval-ℚ [x,y] (s *ℚ r)) + ( mul-is-positive-ℚ-closed-interval-ℚ [p,q] r pos-r) + ( mul-is-in-closed-interval-ℚ-ℚ⁺ + ( [p,q]) + ( r , pos-r) + ( s) + ( s∈[p,q]))) + + is-in-im-mul-is-in-closed-interval-ℚ-ℚ : + ([p,q] : closed-interval-ℚ) (r s : ℚ) → + is-in-closed-interval-ℚ + ( mul-ℚ-closed-interval-ℚ [p,q] r) + ( s) → + is-in-im-subtype (mul-ℚ' r) (subtype-closed-interval-ℚ [p,q]) s + is-in-im-mul-is-in-closed-interval-ℚ-ℚ + [p,q] r s s∈[min-pr-qr,max-pr-qr] = + trichotomy-sign-ℚ r + ( λ neg-r → + is-in-im-is-in-mul-closed-interval-ℚ-ℚ⁻ + ( [p,q]) + ( r , neg-r) + ( s) + ( tr + ( λ [x,y] → is-in-closed-interval-ℚ [x,y] s) + ( mul-is-negative-ℚ-closed-interval-ℚ [p,q] r neg-r) + ( s∈[min-pr-qr,max-pr-qr]))) + ( λ r=0 → + inv-tr + ( λ t → + is-in-im-subtype + ( mul-ℚ' t) + ( subtype-closed-interval-ℚ [p,q]) + ( s)) + ( r=0) + ( is-in-im-mul-is-in-zero-zero-closed-interval-ℚ + ( [p,q]) + ( s) + ( tr + ( λ [x,y] → is-in-closed-interval-ℚ [x,y] s) + ( mul-is-zero-ℚ-closed-interval-ℚ [p,q] r r=0) + ( s∈[min-pr-qr,max-pr-qr])))) + ( λ pos-r → + is-in-im-is-in-mul-ℚ⁺-closed-interval-ℚ + ( [p,q]) + ( r , pos-r) + ( s) + ( tr + ( λ [x,y] → is-in-closed-interval-ℚ [x,y] s) + ( mul-is-positive-ℚ-closed-interval-ℚ [p,q] r pos-r) + ( s∈[min-pr-qr,max-pr-qr]))) + + is-closed-interval-map-mul-ℚ-closed-interval-ℚ : + (q : ℚ) ([a,b] : closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ' q) + ( [a,b]) + ( mul-ℚ-closed-interval-ℚ [a,b] q) + is-closed-interval-map-mul-ℚ-closed-interval-ℚ q [a,b] = + ( ind-Σ (mul-is-in-closed-interval-ℚ-ℚ [a,b] q) , + ind-Σ (is-in-im-mul-is-in-closed-interval-ℚ-ℚ [a,b] q)) +``` + +### Multiplication of a rational number and an interval + +```agda +abstract + commute-mul-ℚ-closed-interval-ℚ : + ([p,q] : closed-interval-ℚ) (r : ℚ) → + mul-ℚ-closed-interval-ℚ [p,q] r = + mul-closed-interval-ℚ-ℚ r [p,q] + commute-mul-ℚ-closed-interval-ℚ [p,q] r = + eq-closed-interval-ℚ _ _ + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + + mul-ℚ-is-in-closed-interval-ℚ : + ([p,q] : closed-interval-ℚ) (r s : ℚ) → + is-in-closed-interval-ℚ [p,q] s → + is-in-closed-interval-ℚ + ( mul-closed-interval-ℚ-ℚ r [p,q]) + ( r *ℚ s) + mul-ℚ-is-in-closed-interval-ℚ [p,q] r s s∈[p,q] = + binary-tr + ( is-in-closed-interval-ℚ) + ( commute-mul-ℚ-closed-interval-ℚ [p,q] r) + ( commutative-mul-ℚ s r) + ( mul-is-in-closed-interval-ℚ-ℚ [p,q] r s s∈[p,q]) + + is-in-im-mul-ℚ-is-in-closed-interval-ℚ : + ([p,q] : closed-interval-ℚ) (r s : ℚ) → + is-in-closed-interval-ℚ + ( mul-closed-interval-ℚ-ℚ r [p,q]) + ( s) → + is-in-im-subtype (mul-ℚ r) (subtype-closed-interval-ℚ [p,q]) s + is-in-im-mul-ℚ-is-in-closed-interval-ℚ + [p,q] r s s∈[min-rp-rq,max-rp-rq] = + tr + ( λ f → is-in-im-subtype f (subtype-closed-interval-ℚ [p,q]) s) + ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) + ( is-in-im-mul-is-in-closed-interval-ℚ-ℚ [p,q] r s + ( inv-tr + ( λ [x,y] → is-in-closed-interval-ℚ [x,y] s) + ( commute-mul-ℚ-closed-interval-ℚ [p,q] r) + ( s∈[min-rp-rq,max-rp-rq]))) + + is-closed-interval-map-mul-closed-interval-ℚ-ℚ : + (q : ℚ) ([a,b] : closed-interval-ℚ) → + is-closed-interval-map-ℚ + ( mul-ℚ q) + ( [a,b]) + ( mul-closed-interval-ℚ-ℚ q [a,b]) + is-closed-interval-map-mul-closed-interval-ℚ-ℚ q [a,b] = + binary-tr + ( λ f i → is-closed-interval-map-ℚ f [a,b] i) + ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) + ( commute-mul-ℚ-closed-interval-ℚ [a,b] q) + ( is-closed-interval-map-mul-ℚ-closed-interval-ℚ q [a,b]) +``` + +### Multiplication of two closed intervals + +```agda +abstract + is-in-mul-interval-mul-is-in-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) (p q : ℚ) → + is-in-closed-interval-ℚ [a,b] p → + is-in-closed-interval-ℚ [c,d] q → + is-in-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) + ( p *ℚ q) + is-in-mul-interval-mul-is-in-closed-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) p q + p∈[a,b]@(a≤p , p≤b) q∈[c,d]@(c≤q , q≤d) = + let + (min-aq-bq≤pq , pq≤max-aq-bq) = + mul-is-in-closed-interval-ℚ-ℚ [a,b] q p p∈[a,b] + (min-ac-ad≤aq , aq≤max-ac-ad) = + mul-ℚ-is-in-closed-interval-ℚ [c,d] a q q∈[c,d] + (min-bc-bd≤bq , bq≤max-bc-bd) = + mul-ℚ-is-in-closed-interval-ℚ [c,d] b q q∈[c,d] + in + ( transitive-leq-ℚ + ( lower-bound-mul-closed-interval-ℚ [a,b] [c,d]) + ( _) + ( p *ℚ q) + ( min-aq-bq≤pq) + ( min-leq-leq-ℚ _ _ _ _ min-ac-ad≤aq min-bc-bd≤bq) , + transitive-leq-ℚ + ( p *ℚ q) + ( _) + ( upper-bound-mul-closed-interval-ℚ [a,b] [c,d]) + ( max-leq-leq-ℚ _ _ _ _ aq≤max-ac-ad bq≤max-bc-bd) + ( pq≤max-aq-bq)) + + is-in-minkowski-product-is-in-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → (q : ℚ) → + is-in-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) + ( q) → + is-in-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d])) + ( q) + is-in-minkowski-product-is-in-mul-closed-interval-ℚ + [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) x x∈range = + let + motive = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d]) + ( x) + open do-syntax-trunc-Prop motive + case-[ac,ad] x∈[ac,ad] = + do + ((q , c≤q , q≤d) , aq=x) ← + is-in-im-mul-ℚ-is-in-closed-interval-ℚ [c,d] a x x∈[ac,ad] + intro-exists + ( a , q) + ( (refl-leq-ℚ a , a≤b) , (c≤q , q≤d) , inv aq=x) + case-[ac,bc] x∈[ac,bc] = + do + ((p , a≤p , p≤b) , pc=x) ← + is-in-im-mul-is-in-closed-interval-ℚ-ℚ [a,b] c x x∈[ac,bc] + intro-exists + ( p , c) + ( (a≤p , p≤b) , (refl-leq-ℚ c , c≤d) , inv pc=x) + case-[bc,bd] x∈[bc,bd] = + do + ((q , c≤q , q≤d) , bq=x) ← + is-in-im-mul-ℚ-is-in-closed-interval-ℚ [c,d] b x x∈[bc,bd] + intro-exists + ( b , q) + ( (a≤b , refl-leq-ℚ b) , (c≤q , q≤d) , inv bq=x) + case-[ad,bd] x∈[ad,bd] = + do + ((p , a≤p , p≤b) , pd=x) ← + is-in-im-mul-is-in-closed-interval-ℚ-ℚ [a,b] d x x∈[ad,bd] + intro-exists + ( p , d) + ( (a≤p , p≤b) , (c≤d , refl-leq-ℚ d) , inv pd=x) + in + elim-disjunction motive + ( elim-disjunction motive case-[ac,ad] case-[ac,bc]) + ( elim-disjunction motive case-[ad,bd] case-[bc,bd]) + ( cover-minimal-closed-interval-cover-of-four-elements-Total-Order + ( ℚ-Total-Order) + ( a *ℚ c) + ( a *ℚ d) + ( b *ℚ c) + ( b *ℚ d) + ( x) + ( x∈range)) +``` + +### Agreement with the Minkowski product + +```agda +abstract + has-same-elements-minkowski-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + has-same-elements-subtype + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d])) + ( subtype-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d])) + has-same-elements-minkowski-mul-closed-interval-ℚ [a,b] [c,d] x = + ( rec-trunc-Prop + ( subtype-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) + ( x)) + ( λ ((p , q) , p∈[a,b] , q∈[c,d] , x=pq) → + inv-tr + ( is-in-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d])) + ( x=pq) + ( is-in-mul-interval-mul-is-in-closed-interval-ℚ + ( [a,b]) + ( [c,d]) + ( p) + ( q) + ( p∈[a,b]) + ( q∈[c,d]))) , + is-in-minkowski-product-is-in-mul-closed-interval-ℚ + ( [a,b]) + ( [c,d]) + ( x)) + + eq-minkowski-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d]) = + subtype-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) + eq-minkowski-mul-closed-interval-ℚ [a,b] [c,d] = + eq-has-same-elements-subtype _ _ + ( has-same-elements-minkowski-mul-closed-interval-ℚ [a,b] [c,d]) +``` + +### Associativity of multiplication of intervals + +```agda +module _ + ([a,b] [c,d] [e,f] : closed-interval-ℚ) + where + + abstract + associative-mul-closed-interval-ℚ : + mul-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) + ( [e,f]) = + mul-closed-interval-ℚ + ( [a,b]) + ( mul-closed-interval-ℚ [c,d] [e,f]) + associative-mul-closed-interval-ℚ = + is-injective-subtype-closed-interval-ℚ + ( equational-reasoning + subtype-closed-interval-ℚ + ( mul-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) + ( [e,f])) + = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d])) + ( subtype-closed-interval-ℚ [e,f]) + by + inv + ( eq-minkowski-mul-closed-interval-ℚ + ( mul-closed-interval-ℚ [a,b] [c,d]) + ( [e,f])) + = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d])) + ( subtype-closed-interval-ℚ [e,f]) + by + ap + ( λ S → + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( S) + ( subtype-closed-interval-ℚ [e,f])) + ( inv + ( eq-minkowski-mul-closed-interval-ℚ [a,b] [c,d])) + = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [c,d]) + ( subtype-closed-interval-ℚ [e,f])) + by + associative-minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ [c,d]) + ( subtype-closed-interval-ℚ [e,f]) + = + minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b]) + ( subtype-closed-interval-ℚ + ( mul-closed-interval-ℚ [c,d] [e,f])) + by + ap + ( minkowski-mul-Commutative-Monoid + ( commutative-monoid-mul-ℚ) + ( subtype-closed-interval-ℚ [a,b])) + ( eq-minkowski-mul-closed-interval-ℚ [c,d] [e,f]) + = + subtype-closed-interval-ℚ + ( mul-closed-interval-ℚ + ( [a,b]) + ( mul-closed-interval-ℚ [c,d] [e,f])) + by + eq-minkowski-mul-closed-interval-ℚ + ( [a,b]) + ( mul-closed-interval-ℚ [c,d] [e,f])) +``` + +### Commutativity of multiplication of intervals + +```agda +abstract + commutative-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + mul-closed-interval-ℚ [a,b] [c,d] = + mul-closed-interval-ℚ [c,d] [a,b] + commutative-mul-closed-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = + eq-closed-interval-ℚ _ _ + ( interchange-law-min-Total-Order ℚ-Total-Order _ _ _ _ ∙ + ap-min-ℚ + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) + ( interchange-law-max-Total-Order ℚ-Total-Order _ _ _ _ ∙ + ap-max-ℚ + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) +``` + +### Unit laws of multiplication of intervals + +```agda +abstract + left-unit-law-mul-closed-interval-ℚ : + ([a,b] : closed-interval-ℚ) → + mul-closed-interval-ℚ one-one-closed-interval-ℚ [a,b] = + [a,b] + left-unit-law-mul-closed-interval-ℚ ((a , b) , a≤b) = + eq-closed-interval-ℚ _ _ + ( idempotent-min-ℚ _ ∙ + ap-min-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ + left-leq-right-min-ℚ _ _ a≤b) + ( idempotent-max-ℚ _ ∙ + ap-max-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ + left-leq-right-max-ℚ _ _ a≤b) + + right-unit-law-mul-closed-interval-ℚ : + ([a,b] : closed-interval-ℚ) → + mul-closed-interval-ℚ [a,b] one-one-closed-interval-ℚ = + [a,b] + right-unit-law-mul-closed-interval-ℚ [a,b] = + commutative-mul-closed-interval-ℚ + ( [a,b]) + ( one-one-closed-interval-ℚ) ∙ + left-unit-law-mul-closed-interval-ℚ [a,b] +``` + +### The commutative monoid of multiplication of rational intervals + +```agda +semigroup-mul-closed-interval-ℚ : Semigroup lzero +semigroup-mul-closed-interval-ℚ = + ( set-closed-interval-ℚ , + mul-closed-interval-ℚ , + associative-mul-closed-interval-ℚ) + +monoid-mul-closed-interval-ℚ : Monoid lzero +monoid-mul-closed-interval-ℚ = + ( semigroup-mul-closed-interval-ℚ , + one-one-closed-interval-ℚ , + left-unit-law-mul-closed-interval-ℚ , + right-unit-law-mul-closed-interval-ℚ) + +commutative-monoid-mul-closed-interval-ℚ : Commutative-Monoid lzero +commutative-monoid-mul-closed-interval-ℚ = + ( monoid-mul-closed-interval-ℚ , + commutative-mul-closed-interval-ℚ) +``` diff --git a/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md deleted file mode 100644 index 140e7a296f..0000000000 --- a/src/elementary-number-theory/multiplication-inhabited-closed-intervals-rational-numbers.lagda.md +++ /dev/null @@ -1,754 +0,0 @@ -# Multiplication on inhabited closed intervals in the rational numbers - -```agda -module elementary-number-theory.multiplication-inhabited-closed-intervals-rational-numbers where -``` - -
Imports - -```agda -open import elementary-number-theory.addition-inhabited-closed-intervals-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.decidable-total-order-rational-numbers -open import elementary-number-theory.difference-rational-numbers -open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.inhabited-closed-intervals-rational-numbers -open import elementary-number-theory.maximum-rational-numbers -open import elementary-number-theory.minimum-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.multiplicative-group-of-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.positive-and-negative-rational-numbers -open import elementary-number-theory.positive-rational-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.binary-transport -open import foundation.coproduct-types -open import foundation.dependent-pair-types -open import foundation.disjunction -open import foundation.existential-quantification -open import foundation.function-extensionality -open import foundation.identity-types -open import foundation.images-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.commutative-monoids -open import group-theory.minkowski-multiplication-commutative-monoids -open import group-theory.monoids -open import group-theory.semigroups - -open import order-theory.decidable-total-orders -open import order-theory.inhabited-closed-intervals-total-orders -open import order-theory.total-orders -``` - -
- -## Idea - -Given two -[inhabited closed intervals](elementary-number-theory.inhabited-closed-intervals-rational-numbers.md) -`[a, b]` and `[c, d]` in the -[rational numbers](elementary-number-theory.rational-numbers.md), the -[Minkowski product](group-theory.minkowski-multiplication-commutative-monoids.md) -of those intervals (interpreted as [subtypes](foundation.subtypes.md) of `ℚ`) -agrees with the interval `[min(ac, ad, bc, bd), max(ac, ad, bc, bd)]`. - -Notably, this is because nonzero rational numbers are -[invertible](elementary-number-theory.multiplicative-group-of-rational-numbers.md); -this would not be true for the -[natural numbers](elementary-number-theory.natural-numbers.md), as -`[2, 2] * [a, b]` in the natural numbers is not the full interval `[2a, 2b]` but -only the even elements. - -## Definition - -```agda -mul-inhabited-closed-interval-ℚ-ℚ : - ℚ → inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ -mul-inhabited-closed-interval-ℚ-ℚ a ((b , c) , _) = - unordered-inhabited-closed-interval-ℚ (a *ℚ b) (a *ℚ c) - -mul-ℚ-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → ℚ → inhabited-closed-interval-ℚ -mul-ℚ-inhabited-closed-interval-ℚ ((a , b) , _) c = - unordered-inhabited-closed-interval-ℚ (a *ℚ c) (b *ℚ c) - -mul-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → - inhabited-closed-interval-ℚ -mul-inhabited-closed-interval-ℚ ((a , b) , _) ((c , d) , _) = - minimal-closed-interval-cover-of-four-elements-Total-Order - ( ℚ-Total-Order) - ( a *ℚ c) - ( a *ℚ d) - ( b *ℚ c) - ( b *ℚ d) - -lower-bound-mul-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → ℚ -lower-bound-mul-inhabited-closed-interval-ℚ [a,b] [c,d] = - lower-bound-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - -upper-bound-mul-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → inhabited-closed-interval-ℚ → ℚ -upper-bound-mul-inhabited-closed-interval-ℚ [a,b] [c,d] = - upper-bound-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) -``` - -## Properties - -### Multiplication of an interval by a rational number - -#### Multiplication of an interval by a negative rational number - -```agda -mul-inhabited-closed-interval-ℚ-ℚ⁻ : - inhabited-closed-interval-ℚ → ℚ⁻ → inhabited-closed-interval-ℚ -mul-inhabited-closed-interval-ℚ-ℚ⁻ ((p , q) , p≤q) s⁻@(s , _) = - ((q *ℚ s , p *ℚ s) , reverses-leq-right-mul-ℚ⁻ s⁻ _ _ p≤q) - -abstract - mul-is-in-inhabited-closed-interval-ℚ-ℚ⁻ : - ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ⁻) (s : ℚ) → - is-in-inhabited-closed-interval-ℚ [p,q] s → - is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ-ℚ⁻ [p,q] r) - ( s *ℚ rational-ℚ⁻ r) - mul-is-in-inhabited-closed-interval-ℚ-ℚ⁻ - ((p , q) , p≤q) r s (p≤s , s≤q) = - ( reverses-leq-right-mul-ℚ⁻ r _ _ s≤q , - reverses-leq-right-mul-ℚ⁻ r _ _ p≤s) - - is-in-im-is-in-mul-inhabited-closed-interval-ℚ-ℚ⁻ : - ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ⁻) (s : ℚ) → - is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ-ℚ⁻ [p,q] r) - ( s) → - is-in-im-subtype - ( mul-ℚ' (rational-ℚ⁻ r)) - ( subtype-inhabited-closed-interval-ℚ [p,q]) - ( s) - is-in-im-is-in-mul-inhabited-closed-interval-ℚ-ℚ⁻ - ((p , q) , p≤q) r⁻@(r , _) s (qr≤s , s≤pr) = - let r⁻¹ = inv-ℚ⁻ r⁻ - in - intro-exists - ( ( s *ℚ rational-ℚ⁻ r⁻¹ , - tr - ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁻ r⁻¹)) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ - right-unit-law-mul-ℚ p) - ( reverses-leq-right-mul-ℚ⁻ r⁻¹ s (p *ℚ r) s≤pr) , - tr - ( leq-ℚ (s *ℚ rational-ℚ⁻ r⁻¹)) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (right-inverse-law-mul-ℚ⁻ r⁻) ∙ - right-unit-law-mul-ℚ q) - ( reverses-leq-right-mul-ℚ⁻ r⁻¹ (q *ℚ r) s qr≤s))) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (left-inverse-law-mul-ℚ⁻ r⁻) ∙ - right-unit-law-mul-ℚ s) - - is-closed-interval-map-mul-ℚ⁻ : - (q : ℚ⁻) ([a,b] : inhabited-closed-interval-ℚ) → - is-closed-interval-map-ℚ - ( mul-ℚ' (rational-ℚ⁻ q)) - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ-ℚ⁻ [a,b] q) - is-closed-interval-map-mul-ℚ⁻ q [a,b] = - ( ind-Σ (mul-is-in-inhabited-closed-interval-ℚ-ℚ⁻ [a,b] q) , - ind-Σ (is-in-im-is-in-mul-inhabited-closed-interval-ℚ-ℚ⁻ [a,b] q)) -``` - -#### Multiplication of an interval by a positive rational number - -```agda -mul-ℚ⁺-inhabited-closed-interval-ℚ : - inhabited-closed-interval-ℚ → ℚ⁺ → inhabited-closed-interval-ℚ -mul-ℚ⁺-inhabited-closed-interval-ℚ ((p , q) , p≤q) s⁺@(s , _) = - ((p *ℚ s , q *ℚ s) , preserves-leq-right-mul-ℚ⁺ s⁺ _ _ p≤q) - -abstract - mul-is-in-inhabited-closed-interval-ℚ-ℚ⁺ : - ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ⁺) (s : ℚ) → - is-in-inhabited-closed-interval-ℚ [p,q] s → - is-in-inhabited-closed-interval-ℚ - ( mul-ℚ⁺-inhabited-closed-interval-ℚ [p,q] r) - ( s *ℚ rational-ℚ⁺ r) - mul-is-in-inhabited-closed-interval-ℚ-ℚ⁺ - ((p , q) , p≤q) r s (p≤s , s≤q) = - ( preserves-leq-right-mul-ℚ⁺ r _ _ p≤s , - preserves-leq-right-mul-ℚ⁺ r _ _ s≤q) - - is-in-im-is-in-mul-ℚ⁺-inhabited-closed-interval-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) → (r : ℚ⁺) → (s : ℚ) → - is-in-inhabited-closed-interval-ℚ - ( mul-ℚ⁺-inhabited-closed-interval-ℚ [p,q] r) - ( s) → - is-in-im-subtype - ( mul-ℚ' (rational-ℚ⁺ r)) - ( subtype-inhabited-closed-interval-ℚ [p,q]) - ( s) - is-in-im-is-in-mul-ℚ⁺-inhabited-closed-interval-ℚ - ((p , q) , p≤q) r⁺@(r , _) s (pr≤s , s≤qr) = - let r⁻¹ = inv-ℚ⁺ r⁺ - in - intro-exists - ( ( s *ℚ rational-ℚ⁺ r⁻¹ , - tr - ( λ x → leq-ℚ x (s *ℚ rational-ℚ⁺ r⁻¹)) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ - right-unit-law-mul-ℚ p) - ( preserves-leq-right-mul-ℚ⁺ r⁻¹ (p *ℚ r) s pr≤s) , - tr - ( leq-ℚ (s *ℚ rational-ℚ⁺ r⁻¹)) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (ap rational-ℚ⁺ (right-inverse-law-mul-ℚ⁺ r⁺)) ∙ - right-unit-law-mul-ℚ q) - ( preserves-leq-right-mul-ℚ⁺ r⁻¹ s (q *ℚ r) s≤qr))) - ( associative-mul-ℚ _ _ _ ∙ - ap-mul-ℚ refl (ap rational-ℚ⁺ (left-inverse-law-mul-ℚ⁺ r⁺)) ∙ - right-unit-law-mul-ℚ s) - - is-closed-interval-map-left-mul-ℚ⁺ : - (q : ℚ⁺) ([a,b] : inhabited-closed-interval-ℚ) → - is-closed-interval-map-ℚ - ( mul-ℚ' (rational-ℚ⁺ q)) - ( [a,b]) - ( mul-ℚ⁺-inhabited-closed-interval-ℚ [a,b] q) - is-closed-interval-map-left-mul-ℚ⁺ q [a,b] = - ( ind-Σ (mul-is-in-inhabited-closed-interval-ℚ-ℚ⁺ [a,b] q) , - ind-Σ (is-in-im-is-in-mul-ℚ⁺-inhabited-closed-interval-ℚ [a,b] q)) -``` - -#### Multiplication of an interval by zero - -```agda -abstract - is-in-im-mul-is-in-zero-zero-inhabited-closed-interval-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) → (s : ℚ) → - is-in-inhabited-closed-interval-ℚ - ( zero-zero-inhabited-closed-interval-ℚ) - ( s) → - is-in-im-subtype - ( mul-ℚ' zero-ℚ) - ( subtype-inhabited-closed-interval-ℚ [p,q]) - ( s) - is-in-im-mul-is-in-zero-zero-inhabited-closed-interval-ℚ - ((p , q) , p≤q) s (0≤s , s≤0) = - intro-exists - ( p , refl-leq-ℚ p , p≤q) - ( right-zero-law-mul-ℚ p ∙ antisymmetric-leq-ℚ _ _ 0≤s s≤0) - - is-closed-interval-map-mul-zero-ℚ : - ([a,b] : inhabited-closed-interval-ℚ) → - is-closed-interval-map-ℚ - ( mul-ℚ' zero-ℚ) - ( [a,b]) - ( zero-zero-inhabited-closed-interval-ℚ) - is-closed-interval-map-mul-zero-ℚ [a,b] = - ( ( λ r → - inv-tr - ( is-in-inhabited-closed-interval-ℚ - ( zero-zero-inhabited-closed-interval-ℚ)) - ( right-zero-law-mul-ℚ _) - ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) , - ind-Σ (is-in-im-mul-is-in-zero-zero-inhabited-closed-interval-ℚ [a,b])) -``` - -#### Multiplication of an interval by any rational number - -```agda -abstract - mul-is-negative-ℚ-inhabited-closed-interval-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ) (neg-r : is-negative-ℚ r) → - mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = - mul-inhabited-closed-interval-ℚ-ℚ⁻ [p,q] (r , neg-r) - mul-is-negative-ℚ-inhabited-closed-interval-ℚ [p,q]@((p , q) , p≤q) r neg-r = - unordered-closed-interval-leq-ℚ' _ _ - ( reverses-leq-right-mul-ℚ⁻ (r , neg-r) _ _ p≤q) - - mul-is-positive-ℚ-inhabited-closed-interval-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ) (pos-r : is-positive-ℚ r) → - mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = - mul-ℚ⁺-inhabited-closed-interval-ℚ [p,q] (r , pos-r) - mul-is-positive-ℚ-inhabited-closed-interval-ℚ [p,q]@((p , q) , p≤q) r pos-r = - unordered-closed-interval-leq-ℚ _ _ - ( preserves-leq-right-mul-ℚ⁺ (r , pos-r) _ _ p≤q) - - mul-is-zero-ℚ-inhabited-closed-interval-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ) (is-zero-r : is-zero-ℚ r) → - mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = - zero-zero-inhabited-closed-interval-ℚ - mul-is-zero-ℚ-inhabited-closed-interval-ℚ ((p , q) , p≤q) _ refl = - eq-inhabited-closed-interval-ℚ _ _ - ( ap-min-ℚ - ( right-zero-law-mul-ℚ _) - ( right-zero-law-mul-ℚ _) ∙ - idempotent-min-ℚ zero-ℚ) - ( ap-max-ℚ - ( right-zero-law-mul-ℚ _) - ( right-zero-law-mul-ℚ _) ∙ - idempotent-max-ℚ zero-ℚ) - - mul-is-in-inhabited-closed-interval-ℚ-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) (r s : ℚ) → - is-in-inhabited-closed-interval-ℚ [p,q] s → - is-in-inhabited-closed-interval-ℚ - ( mul-ℚ-inhabited-closed-interval-ℚ [p,q] r) - ( s *ℚ r) - mul-is-in-inhabited-closed-interval-ℚ-ℚ [p,q] r s s∈[p,q] = - trichotomy-sign-ℚ r - ( λ neg-r → - inv-tr - ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] (s *ℚ r)) - ( mul-is-negative-ℚ-inhabited-closed-interval-ℚ [p,q] r neg-r) - ( mul-is-in-inhabited-closed-interval-ℚ-ℚ⁻ - ( [p,q]) - ( r , neg-r) - ( s) - ( s∈[p,q]))) - ( λ r=0 → - binary-tr - ( is-in-inhabited-closed-interval-ℚ) - ( inv (mul-is-zero-ℚ-inhabited-closed-interval-ℚ [p,q] r r=0)) - ( inv (ap-mul-ℚ refl r=0 ∙ right-zero-law-mul-ℚ s)) - ( refl-leq-ℚ zero-ℚ , refl-leq-ℚ zero-ℚ)) - ( λ pos-r → - inv-tr - ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] (s *ℚ r)) - ( mul-is-positive-ℚ-inhabited-closed-interval-ℚ [p,q] r pos-r) - ( mul-is-in-inhabited-closed-interval-ℚ-ℚ⁺ - ( [p,q]) - ( r , pos-r) - ( s) - ( s∈[p,q]))) - - is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) (r s : ℚ) → - is-in-inhabited-closed-interval-ℚ - ( mul-ℚ-inhabited-closed-interval-ℚ [p,q] r) - ( s) → - is-in-im-subtype (mul-ℚ' r) (subtype-inhabited-closed-interval-ℚ [p,q]) s - is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ - [p,q] r s s∈[min-pr-qr,max-pr-qr] = - trichotomy-sign-ℚ r - ( λ neg-r → - is-in-im-is-in-mul-inhabited-closed-interval-ℚ-ℚ⁻ - ( [p,q]) - ( r , neg-r) - ( s) - ( tr - ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] s) - ( mul-is-negative-ℚ-inhabited-closed-interval-ℚ [p,q] r neg-r) - ( s∈[min-pr-qr,max-pr-qr]))) - ( λ r=0 → - inv-tr - ( λ t → - is-in-im-subtype - ( mul-ℚ' t) - ( subtype-inhabited-closed-interval-ℚ [p,q]) - ( s)) - ( r=0) - ( is-in-im-mul-is-in-zero-zero-inhabited-closed-interval-ℚ - ( [p,q]) - ( s) - ( tr - ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] s) - ( mul-is-zero-ℚ-inhabited-closed-interval-ℚ [p,q] r r=0) - ( s∈[min-pr-qr,max-pr-qr])))) - ( λ pos-r → - is-in-im-is-in-mul-ℚ⁺-inhabited-closed-interval-ℚ - ( [p,q]) - ( r , pos-r) - ( s) - ( tr - ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] s) - ( mul-is-positive-ℚ-inhabited-closed-interval-ℚ [p,q] r pos-r) - ( s∈[min-pr-qr,max-pr-qr]))) - - is-closed-interval-map-mul-ℚ-inhabited-closed-interval-ℚ : - (q : ℚ) ([a,b] : inhabited-closed-interval-ℚ) → - is-closed-interval-map-ℚ - ( mul-ℚ' q) - ( [a,b]) - ( mul-ℚ-inhabited-closed-interval-ℚ [a,b] q) - is-closed-interval-map-mul-ℚ-inhabited-closed-interval-ℚ q [a,b] = - ( ind-Σ (mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] q) , - ind-Σ (is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] q)) -``` - -### Multiplication of a rational number and an interval - -```agda -abstract - commute-mul-ℚ-inhabited-closed-interval-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) (r : ℚ) → - mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = - mul-inhabited-closed-interval-ℚ-ℚ r [p,q] - commute-mul-ℚ-inhabited-closed-interval-ℚ [p,q] r = - eq-inhabited-closed-interval-ℚ _ _ - ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - - mul-ℚ-is-in-inhabited-closed-interval-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) (r s : ℚ) → - is-in-inhabited-closed-interval-ℚ [p,q] s → - is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ-ℚ r [p,q]) - ( r *ℚ s) - mul-ℚ-is-in-inhabited-closed-interval-ℚ [p,q] r s s∈[p,q] = - binary-tr - ( is-in-inhabited-closed-interval-ℚ) - ( commute-mul-ℚ-inhabited-closed-interval-ℚ [p,q] r) - ( commutative-mul-ℚ s r) - ( mul-is-in-inhabited-closed-interval-ℚ-ℚ [p,q] r s s∈[p,q]) - - is-in-im-mul-ℚ-is-in-inhabited-closed-interval-ℚ : - ([p,q] : inhabited-closed-interval-ℚ) (r s : ℚ) → - is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ-ℚ r [p,q]) - ( s) → - is-in-im-subtype (mul-ℚ r) (subtype-inhabited-closed-interval-ℚ [p,q]) s - is-in-im-mul-ℚ-is-in-inhabited-closed-interval-ℚ - [p,q] r s s∈[min-rp-rq,max-rp-rq] = - tr - ( λ f → is-in-im-subtype f (subtype-inhabited-closed-interval-ℚ [p,q]) s) - ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) - ( is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ [p,q] r s - ( inv-tr - ( λ [x,y] → is-in-inhabited-closed-interval-ℚ [x,y] s) - ( commute-mul-ℚ-inhabited-closed-interval-ℚ [p,q] r) - ( s∈[min-rp-rq,max-rp-rq]))) - - is-closed-interval-map-mul-inhabited-closed-interval-ℚ-ℚ : - (q : ℚ) ([a,b] : inhabited-closed-interval-ℚ) → - is-closed-interval-map-ℚ - ( mul-ℚ q) - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ-ℚ q [a,b]) - is-closed-interval-map-mul-inhabited-closed-interval-ℚ-ℚ q [a,b] = - binary-tr - ( λ f i → is-closed-interval-map-ℚ f [a,b] i) - ( eq-htpy (λ _ → commutative-mul-ℚ _ _)) - ( commute-mul-ℚ-inhabited-closed-interval-ℚ [a,b] q) - ( is-closed-interval-map-mul-ℚ-inhabited-closed-interval-ℚ q [a,b]) -``` - -### Multiplication of two closed intervals - -```agda -abstract - is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) (p q : ℚ) → - is-in-inhabited-closed-interval-ℚ [a,b] p → - is-in-inhabited-closed-interval-ℚ [c,d] q → - is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( p *ℚ q) - is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) p q - p∈[a,b]@(a≤p , p≤b) q∈[c,d]@(c≤q , q≤d) = - let - (min-aq-bq≤pq , pq≤max-aq-bq) = - mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] q p p∈[a,b] - (min-ac-ad≤aq , aq≤max-ac-ad) = - mul-ℚ-is-in-inhabited-closed-interval-ℚ [c,d] a q q∈[c,d] - (min-bc-bd≤bq , bq≤max-bc-bd) = - mul-ℚ-is-in-inhabited-closed-interval-ℚ [c,d] b q q∈[c,d] - in - ( transitive-leq-ℚ - ( lower-bound-mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( _) - ( p *ℚ q) - ( min-aq-bq≤pq) - ( min-leq-leq-ℚ _ _ _ _ min-ac-ad≤aq min-bc-bd≤bq) , - transitive-leq-ℚ - ( p *ℚ q) - ( _) - ( upper-bound-mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( max-leq-leq-ℚ _ _ _ _ aq≤max-ac-ad bq≤max-bc-bd) - ( pq≤max-aq-bq)) - - is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → (q : ℚ) → - is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( q) → - is-in-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d])) - ( q) - is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ - [a,b]@((a , b) , a≤b) [c,d]@((c , d) , c≤d) x x∈range = - let - motive = - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d]) - ( x) - open do-syntax-trunc-Prop motive - case-[ac,ad] x∈[ac,ad] = - do - ((q , c≤q , q≤d) , aq=x) ← - is-in-im-mul-ℚ-is-in-inhabited-closed-interval-ℚ [c,d] a x x∈[ac,ad] - intro-exists - ( a , q) - ( (refl-leq-ℚ a , a≤b) , (c≤q , q≤d) , inv aq=x) - case-[ac,bc] x∈[ac,bc] = - do - ((p , a≤p , p≤b) , pc=x) ← - is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] c x x∈[ac,bc] - intro-exists - ( p , c) - ( (a≤p , p≤b) , (refl-leq-ℚ c , c≤d) , inv pc=x) - case-[bc,bd] x∈[bc,bd] = - do - ((q , c≤q , q≤d) , bq=x) ← - is-in-im-mul-ℚ-is-in-inhabited-closed-interval-ℚ [c,d] b x x∈[bc,bd] - intro-exists - ( b , q) - ( (a≤b , refl-leq-ℚ b) , (c≤q , q≤d) , inv bq=x) - case-[ad,bd] x∈[ad,bd] = - do - ((p , a≤p , p≤b) , pd=x) ← - is-in-im-mul-is-in-inhabited-closed-interval-ℚ-ℚ [a,b] d x x∈[ad,bd] - intro-exists - ( p , d) - ( (a≤p , p≤b) , (c≤d , refl-leq-ℚ d) , inv pd=x) - in - elim-disjunction motive - ( elim-disjunction motive case-[ac,ad] case-[ac,bc]) - ( elim-disjunction motive case-[ad,bd] case-[bc,bd]) - ( cover-minimal-closed-interval-cover-of-four-elements-Total-Order - ( ℚ-Total-Order) - ( a *ℚ c) - ( a *ℚ d) - ( b *ℚ c) - ( b *ℚ d) - ( x) - ( x∈range)) -``` - -### Agreement with the Minkowski product - -```agda -abstract - has-same-elements-minkowski-mul-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - has-same-elements-subtype - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d])) - ( subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d])) - has-same-elements-minkowski-mul-inhabited-closed-interval-ℚ [a,b] [c,d] x = - ( rec-trunc-Prop - ( subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( x)) - ( λ ((p , q) , p∈[a,b] , q∈[c,d] , x=pq) → - inv-tr - ( is-in-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d])) - ( x=pq) - ( is-in-mul-interval-mul-is-in-inhabited-closed-interval-ℚ - ( [a,b]) - ( [c,d]) - ( p) - ( q) - ( p∈[a,b]) - ( q∈[c,d]))) , - is-in-minkowski-product-is-in-mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( [c,d]) - ( x)) - - eq-minkowski-mul-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d]) = - subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - eq-minkowski-mul-inhabited-closed-interval-ℚ [a,b] [c,d] = - eq-has-same-elements-subtype _ _ - ( has-same-elements-minkowski-mul-inhabited-closed-interval-ℚ [a,b] [c,d]) -``` - -### Associativity of multiplication of intervals - -```agda -module _ - ([a,b] [c,d] [e,f] : inhabited-closed-interval-ℚ) - where - - abstract - associative-mul-inhabited-closed-interval-ℚ : - mul-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f]) = - mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f]) - associative-mul-inhabited-closed-interval-ℚ = - is-injective-subtype-inhabited-closed-interval-ℚ - ( equational-reasoning - subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f])) - = - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d])) - ( subtype-inhabited-closed-interval-ℚ [e,f]) - by - inv - ( eq-minkowski-mul-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [a,b] [c,d]) - ( [e,f])) - = - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d])) - ( subtype-inhabited-closed-interval-ℚ [e,f]) - by - ap - ( λ S → - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( S) - ( subtype-inhabited-closed-interval-ℚ [e,f])) - ( inv - ( eq-minkowski-mul-inhabited-closed-interval-ℚ [a,b] [c,d])) - = - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [c,d]) - ( subtype-inhabited-closed-interval-ℚ [e,f])) - by - associative-minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ [c,d]) - ( subtype-inhabited-closed-interval-ℚ [e,f]) - = - minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b]) - ( subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f])) - by - ap - ( minkowski-mul-Commutative-Monoid - ( commutative-monoid-mul-ℚ) - ( subtype-inhabited-closed-interval-ℚ [a,b])) - ( eq-minkowski-mul-inhabited-closed-interval-ℚ [c,d] [e,f]) - = - subtype-inhabited-closed-interval-ℚ - ( mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f])) - by - eq-minkowski-mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( mul-inhabited-closed-interval-ℚ [c,d] [e,f])) -``` - -### Commutativity of multiplication of intervals - -```agda -abstract - commutative-mul-inhabited-closed-interval-ℚ : - ([a,b] [c,d] : inhabited-closed-interval-ℚ) → - mul-inhabited-closed-interval-ℚ [a,b] [c,d] = - mul-inhabited-closed-interval-ℚ [c,d] [a,b] - commutative-mul-inhabited-closed-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = - eq-inhabited-closed-interval-ℚ _ _ - ( interchange-law-min-Total-Order ℚ-Total-Order _ _ _ _ ∙ - ap-min-ℚ - ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) - ( interchange-law-max-Total-Order ℚ-Total-Order _ _ _ _ ∙ - ap-max-ℚ - ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) -``` - -### Unit laws of multiplication of intervals - -```agda -abstract - left-unit-law-mul-inhabited-closed-interval-ℚ : - ([a,b] : inhabited-closed-interval-ℚ) → - mul-inhabited-closed-interval-ℚ one-one-inhabited-closed-interval-ℚ [a,b] = - [a,b] - left-unit-law-mul-inhabited-closed-interval-ℚ ((a , b) , a≤b) = - eq-inhabited-closed-interval-ℚ _ _ - ( idempotent-min-ℚ _ ∙ - ap-min-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ - left-leq-right-min-ℚ _ _ a≤b) - ( idempotent-max-ℚ _ ∙ - ap-max-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ - left-leq-right-max-ℚ _ _ a≤b) - - right-unit-law-mul-inhabited-closed-interval-ℚ : - ([a,b] : inhabited-closed-interval-ℚ) → - mul-inhabited-closed-interval-ℚ [a,b] one-one-inhabited-closed-interval-ℚ = - [a,b] - right-unit-law-mul-inhabited-closed-interval-ℚ [a,b] = - commutative-mul-inhabited-closed-interval-ℚ - ( [a,b]) - ( one-one-inhabited-closed-interval-ℚ) ∙ - left-unit-law-mul-inhabited-closed-interval-ℚ [a,b] -``` - -### The commutative monoid of multiplication of rational intervals - -```agda -semigroup-mul-inhabited-closed-interval-ℚ : Semigroup lzero -semigroup-mul-inhabited-closed-interval-ℚ = - ( set-inhabited-closed-interval-ℚ , - mul-inhabited-closed-interval-ℚ , - associative-mul-inhabited-closed-interval-ℚ) - -monoid-mul-inhabited-closed-interval-ℚ : Monoid lzero -monoid-mul-inhabited-closed-interval-ℚ = - ( semigroup-mul-inhabited-closed-interval-ℚ , - one-one-inhabited-closed-interval-ℚ , - left-unit-law-mul-inhabited-closed-interval-ℚ , - right-unit-law-mul-inhabited-closed-interval-ℚ) - -commutative-monoid-mul-inhabited-closed-interval-ℚ : Commutative-Monoid lzero -commutative-monoid-mul-inhabited-closed-interval-ℚ = - ( monoid-mul-inhabited-closed-interval-ℚ , - commutative-mul-inhabited-closed-interval-ℚ) -``` diff --git a/src/order-theory.lagda.md b/src/order-theory.lagda.md index 19fdae318f..3f90100b31 100644 --- a/src/order-theory.lagda.md +++ b/src/order-theory.lagda.md @@ -60,8 +60,6 @@ open import order-theory.inflationary-maps-preorders public open import order-theory.inflattices public open import order-theory.inhabited-chains-posets public open import order-theory.inhabited-chains-preorders public -open import order-theory.inhabited-closed-intervals-posets public -open import order-theory.inhabited-closed-intervals-total-orders public open import order-theory.inhabited-finite-total-orders public open import order-theory.interval-subposets public open import order-theory.join-preserving-maps-posets public diff --git a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md index 317f3180d5..13f53f1c47 100644 --- a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md @@ -11,7 +11,7 @@ open import foundation.images-subtypes open import foundation.propositions open import foundation.universe-levels -open import order-theory.inhabited-closed-intervals-posets +open import order-theory.closed-intervals-posets open import order-theory.posets ``` @@ -22,8 +22,8 @@ open import order-theory.posets A map between [posets](order-theory.posets.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Poset disambiguation="map between posets"}} if the [image](foundation.images-subtypes.md) of an -[inhabited closed interval](order-theory.inhabited-closed-intervals-posets.md) -in `X` is always an inhabited closed interval in `Y`. +[inhabited closed interval](order-theory.closed-intervals-posets.md) in `X` is +always an inhabited closed interval in `Y`. ## Definition @@ -34,17 +34,17 @@ module _ where is-closed-interval-map-prop-Poset : - ([a,b] : inhabited-closed-interval-Poset X) → - ([c,d] : inhabited-closed-interval-Poset Y) → + ([a,b] : closed-interval-Poset X) → + ([c,d] : closed-interval-Poset Y) → Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-prop-Poset [a,b] [c,d] = is-image-map-subtype-prop f - ( subtype-inhabited-closed-interval-Poset X [a,b]) - ( subtype-inhabited-closed-interval-Poset Y [c,d]) + ( subtype-closed-interval-Poset X [a,b]) + ( subtype-closed-interval-Poset Y [c,d]) is-closed-interval-map-Poset : - ([a,b] : inhabited-closed-interval-Poset X) → - ([c,d] : inhabited-closed-interval-Poset Y) → + ([a,b] : closed-interval-Poset X) → + ([c,d] : closed-interval-Poset Y) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-Poset [a,b] [c,d] = type-Prop (is-closed-interval-map-prop-Poset [a,b] [c,d]) diff --git a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md index 07156a7d87..a9addd3f55 100644 --- a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md @@ -12,7 +12,7 @@ open import foundation.propositions open import foundation.universe-levels open import order-theory.closed-interval-preserving-maps-posets -open import order-theory.inhabited-closed-intervals-total-orders +open import order-theory.closed-intervals-total-orders open import order-theory.total-orders ``` @@ -23,8 +23,8 @@ open import order-theory.total-orders A map between [total orders](order-theory.total-orders.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Total-Order disambiguation="map between total orders"}} if the [image](foundation.images-subtypes.md) of an -[inhabited closed interval](order-theory.inhabited-closed-intervals-total-orders.md) -in `X` is always an inhabited closed interval in `Y`. Equivalently, it is a +[inhabited closed interval](order-theory.closed-intervals-total-orders.md) in +`X` is always an inhabited closed interval in `Y`. Equivalently, it is a [closed interval preserving map](order-theory.closed-interval-preserving-maps-posets.md) on the underlying [posets](order-theory.posets.md). @@ -37,8 +37,8 @@ module _ where is-closed-interval-map-prop-Total-Order : - ([a,b] : inhabited-closed-interval-Total-Order X) → - ([c,d] : inhabited-closed-interval-Total-Order Y) → + ([a,b] : closed-interval-Total-Order X) → + ([c,d] : closed-interval-Total-Order Y) → Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-prop-Total-Order = is-closed-interval-map-prop-Poset @@ -47,8 +47,8 @@ module _ ( f) is-closed-interval-map-Total-Order : - ([a,b] : inhabited-closed-interval-Total-Order X) → - ([c,d] : inhabited-closed-interval-Total-Order Y) → + ([a,b] : closed-interval-Total-Order X) → + ([c,d] : closed-interval-Total-Order Y) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-closed-interval-map-Total-Order [a,b] [c,d] = type-Prop (is-closed-interval-map-prop-Total-Order [a,b] [c,d]) diff --git a/src/order-theory/closed-intervals-posets.lagda.md b/src/order-theory/closed-intervals-posets.lagda.md new file mode 100644 index 0000000000..cd4a2b785a --- /dev/null +++ b/src/order-theory/closed-intervals-posets.lagda.md @@ -0,0 +1,175 @@ +# Closed intervals in posets + +```agda +module order-theory.closed-intervals-posets where +``` + +
Imports + +```agda +open import foundation.cartesian-product-types +open import foundation.dependent-pair-types +open import foundation.equality-cartesian-product-types +open import foundation.equality-dependent-pair-types +open import foundation.identity-types +open import foundation.images-subtypes +open import foundation.inhabited-subtypes +open import foundation.injective-maps +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.sets +open import foundation.subtypes +open import foundation.universe-levels + +open import order-theory.interval-subposets +open import order-theory.posets +``` + +
+ +## Idea + +A +{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} +in a [poset](order-theory.posets.md) `P` is a [subtype](foundation.subtypes.md) +of `P` with elements `x` and `y` with `x ≤ y` such that the subtype contains +every element `z` such that `x ≤ z ∧ z ≤ y`. (We choose the convention of not +considering the empty subtype to be a closed interval.) + +Any pair `x y` with `x ≤ y` induces a unique closed interval, so we can +equivalently characterize closed intervals in terms of such pairs. + +## Definition + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + closed-interval-Poset : UU (l1 ⊔ l2) + closed-interval-Poset = + Σ (type-Poset X × type-Poset X) (λ (x , y) → leq-Poset X x y) + + lower-bound-closed-interval-Poset : + closed-interval-Poset → type-Poset X + lower-bound-closed-interval-Poset ((x , _) , _) = x + + upper-bound-closed-interval-Poset : + closed-interval-Poset → type-Poset X + upper-bound-closed-interval-Poset ((_ , y) , _) = y + + subtype-closed-interval-Poset : + closed-interval-Poset → subtype l2 (type-Poset X) + subtype-closed-interval-Poset ((x , y) , _) = + is-in-interval-Poset X x y + + type-closed-interval-Poset : + closed-interval-Poset → UU (l1 ⊔ l2) + type-closed-interval-Poset [x,y] = + type-subtype (subtype-closed-interval-Poset [x,y]) + + is-in-closed-interval-Poset : + closed-interval-Poset → type-Poset X → UU l2 + is-in-closed-interval-Poset [x,y] = + is-in-subtype (subtype-closed-interval-Poset [x,y]) +``` + +## Properties + +### The endpoints of an inhabited closed interval are in the interval + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + lower-bound-is-in-closed-interval-Poset : + ([a,b] : closed-interval-Poset X) → + is-in-closed-interval-Poset X [a,b] + ( lower-bound-closed-interval-Poset X [a,b]) + lower-bound-is-in-closed-interval-Poset ((a , b) , a≤b) = + ( refl-leq-Poset X a , a≤b) + + upper-bound-is-in-closed-interval-Poset : + ([a,b] : closed-interval-Poset X) → + is-in-closed-interval-Poset X [a,b] + ( upper-bound-closed-interval-Poset X [a,b]) + upper-bound-is-in-closed-interval-Poset ((a , b) , a≤b) = + ( a≤b , refl-leq-Poset X b) +``` + +### Inhabited closed intervals are inhabited + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) ([x,y] : closed-interval-Poset X) + where + + abstract + is-inhabited-closed-interval-Poset : + is-inhabited-subtype (subtype-closed-interval-Poset X [x,y]) + is-inhabited-closed-interval-Poset = + unit-trunc-Prop + ( lower-bound-closed-interval-Poset X [x,y] , + lower-bound-is-in-closed-interval-Poset X [x,y]) +``` + +### Characterization of equality + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + eq-closed-interval-Poset : + ( [a,b] [c,d] : closed-interval-Poset X) → + ( lower-bound-closed-interval-Poset X [a,b] = + lower-bound-closed-interval-Poset X [c,d]) → + ( upper-bound-closed-interval-Poset X [a,b] = + upper-bound-closed-interval-Poset X [c,d]) → + [a,b] = [c,d] + eq-closed-interval-Poset ((a , b) , _) ((c , d) , _) a=c b=d = + eq-pair-Σ (eq-pair a=c b=d) (eq-type-Prop (leq-prop-Poset X _ _)) + + set-closed-interval-Poset : Set (l1 ⊔ l2) + set-closed-interval-Poset = + set-subset + ( product-Set (set-Poset X) (set-Poset X)) + ( ind-Σ (leq-prop-Poset X)) +``` + +### The map from inhabited closed intervals to subtypes is injective + +```agda +module _ + {l1 l2 : Level} (X : Poset l1 l2) + where + + abstract + is-injective-subtype-closed-interval-Poset : + is-injective (subtype-closed-interval-Poset X) + is-injective-subtype-closed-interval-Poset + {(a , b) , a≤b} {(c , d) , c≤d} [a,b]=[c,d] = + eq-closed-interval-Poset X _ _ + ( antisymmetric-leq-Poset X a c + ( pr1 + ( backward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] c) + ( refl-leq-Poset X c , c≤d))) + ( pr1 + ( forward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] a) + ( refl-leq-Poset X a , a≤b)))) + ( antisymmetric-leq-Poset X b d + ( pr2 + ( forward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] b) + ( a≤b , refl-leq-Poset X b))) + ( pr2 + ( backward-implication + ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] d) + ( c≤d , refl-leq-Poset X d)))) +``` diff --git a/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md similarity index 69% rename from src/order-theory/inhabited-closed-intervals-total-orders.lagda.md rename to src/order-theory/closed-intervals-total-orders.lagda.md index 8f17a57ece..832a299801 100644 --- a/src/order-theory/inhabited-closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -1,7 +1,7 @@ # Inhabited closed intervals in total orders ```agda -module order-theory.inhabited-closed-intervals-total-orders where +module order-theory.closed-intervals-total-orders where ```
Imports @@ -24,7 +24,7 @@ open import foundation.transport-along-identifications open import foundation.unions-subtypes open import foundation.universe-levels -open import order-theory.inhabited-closed-intervals-posets +open import order-theory.closed-intervals-posets open import order-theory.posets open import order-theory.total-orders ``` @@ -33,16 +33,16 @@ open import order-theory.total-orders ## Idea -An -{{#concept "inhabited closed interval" disambiguation="in a total order" Agda=inhabited-inhabited-closed-interval-Total-Order}} +A +{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} in a [total order](order-theory.total-orders.md) `X` is a [subtype](foundation.subtypes.md) of `X` with elements `x` and `y` with `x ≤ y` -such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. Any -pair `x y` with `x ≤ y` induces a unique inhabited closed interval, so we can -equivalently characterize inhabited closed intervals in terms of such pairs. +such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. (We +choose the convention of not considering the empty subtype to be a closed +interval.) -Equivalently, an inhabited closed interval is a total order is an -[inhabited closed interval](order-theory.inhabited-closed-intervals-posets.md) +Equivalently, a closed interval is a total order is a +[closed interval](order-theory.closed-intervals-posets.md) in the underlying [poset](order-theory.posets.md). ## Definition @@ -52,32 +52,32 @@ module _ {l1 l2 : Level} (X : Total-Order l1 l2) where - inhabited-closed-interval-Total-Order : UU (l1 ⊔ l2) - inhabited-closed-interval-Total-Order = - inhabited-closed-interval-Poset (poset-Total-Order X) + closed-interval-Total-Order : UU (l1 ⊔ l2) + closed-interval-Total-Order = + closed-interval-Poset (poset-Total-Order X) - lower-bound-inhabited-closed-interval-Total-Order : - inhabited-closed-interval-Total-Order → type-Total-Order X - lower-bound-inhabited-closed-interval-Total-Order ((x , _) , _) = x + lower-bound-closed-interval-Total-Order : + closed-interval-Total-Order → type-Total-Order X + lower-bound-closed-interval-Total-Order ((x , _) , _) = x - upper-bound-inhabited-closed-interval-Total-Order : - inhabited-closed-interval-Total-Order → type-Total-Order X - upper-bound-inhabited-closed-interval-Total-Order ((_ , y) , _) = y + upper-bound-closed-interval-Total-Order : + closed-interval-Total-Order → type-Total-Order X + upper-bound-closed-interval-Total-Order ((_ , y) , _) = y - subtype-inhabited-closed-interval-Total-Order : - inhabited-closed-interval-Total-Order → subtype l2 (type-Total-Order X) - subtype-inhabited-closed-interval-Total-Order = - subtype-inhabited-closed-interval-Poset (poset-Total-Order X) + subtype-closed-interval-Total-Order : + closed-interval-Total-Order → subtype l2 (type-Total-Order X) + subtype-closed-interval-Total-Order = + subtype-closed-interval-Poset (poset-Total-Order X) - type-inhabited-closed-interval-Total-Order : - inhabited-closed-interval-Total-Order → UU (l1 ⊔ l2) - type-inhabited-closed-interval-Total-Order = - type-inhabited-closed-interval-Poset (poset-Total-Order X) + type-closed-interval-Total-Order : + closed-interval-Total-Order → UU (l1 ⊔ l2) + type-closed-interval-Total-Order = + type-closed-interval-Poset (poset-Total-Order X) - is-in-inhabited-closed-interval-Total-Order : - inhabited-closed-interval-Total-Order → type-Total-Order X → UU l2 - is-in-inhabited-closed-interval-Total-Order = - is-in-inhabited-closed-interval-Poset (poset-Total-Order X) + is-in-closed-interval-Total-Order : + closed-interval-Total-Order → type-Total-Order X → UU l2 + is-in-closed-interval-Total-Order = + is-in-closed-interval-Poset (poset-Total-Order X) ``` ## Properties @@ -90,19 +90,19 @@ module _ where abstract - lower-bound-is-in-inhabited-closed-interval-Total-Order : - ([a,b] : inhabited-closed-interval-Total-Order X) → - is-in-inhabited-closed-interval-Total-Order X [a,b] - ( lower-bound-inhabited-closed-interval-Total-Order X [a,b]) - lower-bound-is-in-inhabited-closed-interval-Total-Order = - lower-bound-is-in-inhabited-closed-interval-Poset (poset-Total-Order X) - - upper-bound-is-in-inhabited-closed-interval-Total-Order : - ([a,b] : inhabited-closed-interval-Total-Order X) → - is-in-inhabited-closed-interval-Total-Order X [a,b] - ( upper-bound-inhabited-closed-interval-Total-Order X [a,b]) - upper-bound-is-in-inhabited-closed-interval-Total-Order = - upper-bound-is-in-inhabited-closed-interval-Poset (poset-Total-Order X) + lower-bound-is-in-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + is-in-closed-interval-Total-Order X [a,b] + ( lower-bound-closed-interval-Total-Order X [a,b]) + lower-bound-is-in-closed-interval-Total-Order = + lower-bound-is-in-closed-interval-Poset (poset-Total-Order X) + + upper-bound-is-in-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + is-in-closed-interval-Total-Order X [a,b] + ( upper-bound-closed-interval-Total-Order X [a,b]) + upper-bound-is-in-closed-interval-Total-Order = + upper-bound-is-in-closed-interval-Poset (poset-Total-Order X) ``` ### Closed intervals are inhabited @@ -110,15 +110,15 @@ module _ ```agda module _ {l1 l2 : Level} (X : Total-Order l1 l2) - ([x,y] : inhabited-closed-interval-Total-Order X) + ([x,y] : closed-interval-Total-Order X) where abstract - is-inhabited-inhabited-closed-interval-Total-Order : + is-inhabited-closed-interval-Total-Order : is-inhabited-subtype - ( subtype-inhabited-closed-interval-Total-Order X [x,y]) - is-inhabited-inhabited-closed-interval-Total-Order = - is-inhabited-inhabited-closed-interval-Poset (poset-Total-Order X) [x,y] + ( subtype-closed-interval-Total-Order X [x,y]) + is-inhabited-closed-interval-Total-Order = + is-inhabited-closed-interval-Poset (poset-Total-Order X) [x,y] ``` ### Characterization of equality @@ -129,19 +129,19 @@ module _ where abstract - eq-inhabited-closed-interval-Total-Order : - ( [a,b] [c,d] : inhabited-closed-interval-Total-Order X) → - ( lower-bound-inhabited-closed-interval-Total-Order X [a,b] = - lower-bound-inhabited-closed-interval-Total-Order X [c,d]) → - ( upper-bound-inhabited-closed-interval-Total-Order X [a,b] = - upper-bound-inhabited-closed-interval-Total-Order X [c,d]) → + eq-closed-interval-Total-Order : + ( [a,b] [c,d] : closed-interval-Total-Order X) → + ( lower-bound-closed-interval-Total-Order X [a,b] = + lower-bound-closed-interval-Total-Order X [c,d]) → + ( upper-bound-closed-interval-Total-Order X [a,b] = + upper-bound-closed-interval-Total-Order X [c,d]) → [a,b] = [c,d] - eq-inhabited-closed-interval-Total-Order = - eq-inhabited-closed-interval-Poset (poset-Total-Order X) + eq-closed-interval-Total-Order = + eq-closed-interval-Poset (poset-Total-Order X) - set-inhabited-closed-interval-Total-Order : Set (l1 ⊔ l2) - set-inhabited-closed-interval-Total-Order = - set-inhabited-closed-interval-Poset (poset-Total-Order X) + set-closed-interval-Total-Order : Set (l1 ⊔ l2) + set-closed-interval-Total-Order = + set-closed-interval-Poset (poset-Total-Order X) ``` ### The map from closed intervals to subtypes is injective @@ -152,10 +152,10 @@ module _ where abstract - is-injective-subtype-inhabited-closed-interval-Total-Order : - is-injective (subtype-inhabited-closed-interval-Total-Order X) - is-injective-subtype-inhabited-closed-interval-Total-Order = - is-injective-subtype-inhabited-closed-interval-Poset (poset-Total-Order X) + is-injective-subtype-closed-interval-Total-Order : + is-injective (subtype-closed-interval-Total-Order X) + is-injective-subtype-closed-interval-Total-Order = + is-injective-subtype-closed-interval-Poset (poset-Total-Order X) ``` ### Total orders can be divided along an element @@ -165,62 +165,62 @@ module _ {l1 l2 : Level} (X : Total-Order l1 l2) where - divide-below-inhabited-closed-interval-Total-Order : - ([a,b] : inhabited-closed-interval-Total-Order X) → - (c : type-inhabited-closed-interval-Total-Order X [a,b]) → - inhabited-closed-interval-Total-Order X - divide-below-inhabited-closed-interval-Total-Order + divide-below-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + (c : type-closed-interval-Total-Order X [a,b]) → + closed-interval-Total-Order X + divide-below-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = ((a , c) , a≤c) - divide-above-inhabited-closed-interval-Total-Order : - ([a,b] : inhabited-closed-interval-Total-Order X) → - (c : type-inhabited-closed-interval-Total-Order X [a,b]) → - inhabited-closed-interval-Total-Order X - divide-above-inhabited-closed-interval-Total-Order + divide-above-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + (c : type-closed-interval-Total-Order X [a,b]) → + closed-interval-Total-Order X + divide-above-closed-interval-Total-Order ((a , b) , a≤b) (c , a≤c , c≤b) = ((c , b) , c≤b) abstract - has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order : - ([a,b] : inhabited-closed-interval-Total-Order X) → - (c : type-inhabited-closed-interval-Total-Order X [a,b]) → + has-same-elements-divide-subtype-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + (c : type-closed-interval-Total-Order X [a,b]) → has-same-elements-subtype ( union-subtype - ( subtype-inhabited-closed-interval-Total-Order X - ( divide-below-inhabited-closed-interval-Total-Order [a,b] c)) - ( subtype-inhabited-closed-interval-Total-Order X - ( divide-above-inhabited-closed-interval-Total-Order [a,b] c))) - ( subtype-inhabited-closed-interval-Total-Order X [a,b]) + ( subtype-closed-interval-Total-Order X + ( divide-below-closed-interval-Total-Order [a,b] c)) + ( subtype-closed-interval-Total-Order X + ( divide-above-closed-interval-Total-Order [a,b] c))) + ( subtype-closed-interval-Total-Order X [a,b]) pr1 - ( has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order + ( has-same-elements-divide-subtype-closed-interval-Total-Order [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) = elim-disjunction - ( subtype-inhabited-closed-interval-Total-Order X [a,b] x) + ( subtype-closed-interval-Total-Order X [a,b] x) ( λ (a≤x , x≤c) → ( a≤x , transitive-leq-Total-Order X x c b c≤b x≤c)) ( λ (c≤x , x≤b) → ( transitive-leq-Total-Order X a c x c≤x a≤c , x≤b)) pr2 - ( has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order + ( has-same-elements-divide-subtype-closed-interval-Total-Order [a,b]@((a , b) , a≤b) (c , a≤c , c≤b) x) (a≤x , x≤b) = map-disjunction ( λ x≤c → (a≤x , x≤c)) ( λ c≤x → (c≤x , x≤b)) ( is-total-Total-Order X x c) - eq-divide-subtype-inhabited-closed-interval-Total-Order : - ([a,b] : inhabited-closed-interval-Total-Order X) → - (c : type-inhabited-closed-interval-Total-Order X [a,b]) → + eq-divide-subtype-closed-interval-Total-Order : + ([a,b] : closed-interval-Total-Order X) → + (c : type-closed-interval-Total-Order X [a,b]) → union-subtype - ( subtype-inhabited-closed-interval-Total-Order X - ( divide-below-inhabited-closed-interval-Total-Order [a,b] c)) - ( subtype-inhabited-closed-interval-Total-Order X - ( divide-above-inhabited-closed-interval-Total-Order [a,b] c)) = - subtype-inhabited-closed-interval-Total-Order X [a,b] - eq-divide-subtype-inhabited-closed-interval-Total-Order [a,b] c = + ( subtype-closed-interval-Total-Order X + ( divide-below-closed-interval-Total-Order [a,b] c)) + ( subtype-closed-interval-Total-Order X + ( divide-above-closed-interval-Total-Order [a,b] c)) = + subtype-closed-interval-Total-Order X [a,b] + eq-divide-subtype-closed-interval-Total-Order [a,b] c = eq-has-same-elements-subtype _ _ - ( has-same-elements-divide-subtype-inhabited-closed-interval-Total-Order + ( has-same-elements-divide-subtype-closed-interval-Total-Order ( [a,b]) ( c)) ``` @@ -233,7 +233,7 @@ module _ where minimal-closed-interval-cover-of-two-elements-Total-Order : - inhabited-closed-interval-Total-Order X + closed-interval-Total-Order X minimal-closed-interval-cover-of-two-elements-Total-Order = ( ( min-Total-Order X a b , max-Total-Order X a b) , @@ -248,7 +248,7 @@ module _ where minimal-closed-interval-cover-of-four-elements-Total-Order : - inhabited-closed-interval-Total-Order X + closed-interval-Total-Order X minimal-closed-interval-cover-of-four-elements-Total-Order = ( ( min-Total-Order X (min-Total-Order X a b) (min-Total-Order X c d) , max-Total-Order X (max-Total-Order X a b) (max-Total-Order X c d)) , @@ -261,15 +261,15 @@ module _ abstract cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order : leq-Total-Order X a b → leq-Total-Order X a c → leq-Total-Order X a d → - subtype-inhabited-closed-interval-Total-Order X + subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-four-elements-Total-Order) ⊆ union-subtype ( union-subtype - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order X a b)) - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) cover-closed-interval-cover-of-four-elements-first-is-smallest-Total-Order a≤b a≤c a≤d x (min≤x , x≤max) = @@ -277,17 +277,17 @@ module _ motive = union-subtype ( union-subtype - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order ( X) ( a) ( b))) - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order ( X) ( a) ( c)))) - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order ( X) ( b) @@ -365,7 +365,7 @@ module _ abstract cover-minimal-closed-interval-cover-of-four-elements-Total-Order : - subtype-inhabited-closed-interval-Total-Order X + subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-four-elements-Total-Order X ( a) ( b) @@ -373,14 +373,14 @@ module _ ( d)) ⊆ union-subtype ( union-subtype - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order X a b)) - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order X a c))) ( union-subtype - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order X b d)) - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order X c d))) cover-minimal-closed-interval-cover-of-four-elements-Total-Order x x∈closed-4@(min≤x , x≤max) = @@ -393,23 +393,23 @@ module _ motive = union-subtype ( union-subtype - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order ( X) ( a) ( b))) - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order ( X) ( a) ( c)))) ( union-subtype - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order ( X) ( b) ( d))) - ( subtype-inhabited-closed-interval-Total-Order X + ( subtype-closed-interval-Total-Order X ( minimal-closed-interval-cover-of-two-elements-Total-Order ( X) ( c) diff --git a/src/order-theory/inhabited-closed-intervals-posets.lagda.md b/src/order-theory/inhabited-closed-intervals-posets.lagda.md deleted file mode 100644 index 7955d0a867..0000000000 --- a/src/order-theory/inhabited-closed-intervals-posets.lagda.md +++ /dev/null @@ -1,173 +0,0 @@ -# Closed intervals in posets - -```agda -module order-theory.inhabited-closed-intervals-posets where -``` - -
Imports - -```agda -open import foundation.cartesian-product-types -open import foundation.dependent-pair-types -open import foundation.equality-cartesian-product-types -open import foundation.equality-dependent-pair-types -open import foundation.identity-types -open import foundation.images-subtypes -open import foundation.inhabited-subtypes -open import foundation.injective-maps -open import foundation.logical-equivalences -open import foundation.propositional-truncations -open import foundation.propositions -open import foundation.sets -open import foundation.subtypes -open import foundation.universe-levels - -open import order-theory.interval-subposets -open import order-theory.posets -``` - -
- -## Idea - -An -{{#concept "inhabited closed interval" disambiguation="in a poset" Agda=inhabited-closed-interval-Poset}} -in a [poset](order-theory.posets.md) `P` is a [subtype](foundation.subtypes.md) -of `P` with elements `x` and `y` with `x ≤ y` such that the subtype contains -every element `z` such that `x ≤ z ∧ z ≤ y`. Any pair `x y` with `x ≤ y` induces -a unique inhabited closed interval, so we can equivalently characterize -inhabited closed intervals in terms of such pairs. - -## Definition - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) - where - - inhabited-closed-interval-Poset : UU (l1 ⊔ l2) - inhabited-closed-interval-Poset = - Σ (type-Poset X × type-Poset X) (λ (x , y) → leq-Poset X x y) - - lower-bound-inhabited-closed-interval-Poset : - inhabited-closed-interval-Poset → type-Poset X - lower-bound-inhabited-closed-interval-Poset ((x , _) , _) = x - - upper-bound-inhabited-closed-interval-Poset : - inhabited-closed-interval-Poset → type-Poset X - upper-bound-inhabited-closed-interval-Poset ((_ , y) , _) = y - - subtype-inhabited-closed-interval-Poset : - inhabited-closed-interval-Poset → subtype l2 (type-Poset X) - subtype-inhabited-closed-interval-Poset ((x , y) , _) = - is-in-interval-Poset X x y - - type-inhabited-closed-interval-Poset : - inhabited-closed-interval-Poset → UU (l1 ⊔ l2) - type-inhabited-closed-interval-Poset [x,y] = - type-subtype (subtype-inhabited-closed-interval-Poset [x,y]) - - is-in-inhabited-closed-interval-Poset : - inhabited-closed-interval-Poset → type-Poset X → UU l2 - is-in-inhabited-closed-interval-Poset [x,y] = - is-in-subtype (subtype-inhabited-closed-interval-Poset [x,y]) -``` - -## Properties - -### The endpoints of an inhabited closed interval are in the interval - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) - where - - abstract - lower-bound-is-in-inhabited-closed-interval-Poset : - ([a,b] : inhabited-closed-interval-Poset X) → - is-in-inhabited-closed-interval-Poset X [a,b] - ( lower-bound-inhabited-closed-interval-Poset X [a,b]) - lower-bound-is-in-inhabited-closed-interval-Poset ((a , b) , a≤b) = - ( refl-leq-Poset X a , a≤b) - - upper-bound-is-in-inhabited-closed-interval-Poset : - ([a,b] : inhabited-closed-interval-Poset X) → - is-in-inhabited-closed-interval-Poset X [a,b] - ( upper-bound-inhabited-closed-interval-Poset X [a,b]) - upper-bound-is-in-inhabited-closed-interval-Poset ((a , b) , a≤b) = - ( a≤b , refl-leq-Poset X b) -``` - -### Inhabited closed intervals are inhabited - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) ([x,y] : inhabited-closed-interval-Poset X) - where - - abstract - is-inhabited-inhabited-closed-interval-Poset : - is-inhabited-subtype (subtype-inhabited-closed-interval-Poset X [x,y]) - is-inhabited-inhabited-closed-interval-Poset = - unit-trunc-Prop - ( lower-bound-inhabited-closed-interval-Poset X [x,y] , - lower-bound-is-in-inhabited-closed-interval-Poset X [x,y]) -``` - -### Characterization of equality - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) - where - - abstract - eq-inhabited-closed-interval-Poset : - ( [a,b] [c,d] : inhabited-closed-interval-Poset X) → - ( lower-bound-inhabited-closed-interval-Poset X [a,b] = - lower-bound-inhabited-closed-interval-Poset X [c,d]) → - ( upper-bound-inhabited-closed-interval-Poset X [a,b] = - upper-bound-inhabited-closed-interval-Poset X [c,d]) → - [a,b] = [c,d] - eq-inhabited-closed-interval-Poset ((a , b) , _) ((c , d) , _) a=c b=d = - eq-pair-Σ (eq-pair a=c b=d) (eq-type-Prop (leq-prop-Poset X _ _)) - - set-inhabited-closed-interval-Poset : Set (l1 ⊔ l2) - set-inhabited-closed-interval-Poset = - set-subset - ( product-Set (set-Poset X) (set-Poset X)) - ( ind-Σ (leq-prop-Poset X)) -``` - -### The map from inhabited closed intervals to subtypes is injective - -```agda -module _ - {l1 l2 : Level} (X : Poset l1 l2) - where - - abstract - is-injective-subtype-inhabited-closed-interval-Poset : - is-injective (subtype-inhabited-closed-interval-Poset X) - is-injective-subtype-inhabited-closed-interval-Poset - {(a , b) , a≤b} {(c , d) , c≤d} [a,b]=[c,d] = - eq-inhabited-closed-interval-Poset X _ _ - ( antisymmetric-leq-Poset X a c - ( pr1 - ( backward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] c) - ( refl-leq-Poset X c , c≤d))) - ( pr1 - ( forward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] a) - ( refl-leq-Poset X a , a≤b)))) - ( antisymmetric-leq-Poset X b d - ( pr2 - ( forward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] b) - ( a≤b , refl-leq-Poset X b))) - ( pr2 - ( backward-implication - ( has-same-elements-eq-subtype _ _ [a,b]=[c,d] d) - ( c≤d , refl-leq-Poset X d)))) -``` From 0eb309887ae1b96bde918e50a640a907e8ffa11a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 30 Sep 2025 18:34:22 -0700 Subject: [PATCH 23/59] Rename back --- src/elementary-number-theory.lagda.md | 3 +++ .../addition-closed-intervals-rational-numbers.lagda.md | 2 +- .../closed-intervals-rational-numbers.lagda.md | 2 +- ...ultiplication-closed-intervals-rational-numbers.lagda.md | 4 ++-- src/order-theory.lagda.md | 2 ++ src/order-theory/closed-intervals-posets.lagda.md | 2 +- src/order-theory/closed-intervals-total-orders.lagda.md | 6 +++--- 7 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 52eb042351..8284455caf 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -12,6 +12,7 @@ module elementary-number-theory where open import elementary-number-theory.absolute-value-integers public open import elementary-number-theory.absolute-value-rational-numbers public open import elementary-number-theory.ackermann-function public +open import elementary-number-theory.addition-closed-intervals-rational-numbers public open import elementary-number-theory.addition-integer-fractions public open import elementary-number-theory.addition-integers public open import elementary-number-theory.addition-natural-numbers public @@ -37,6 +38,7 @@ open import elementary-number-theory.binomial-theorem-integers public open import elementary-number-theory.binomial-theorem-natural-numbers public open import elementary-number-theory.bounded-sums-arithmetic-functions public open import elementary-number-theory.catalan-numbers public +open import elementary-number-theory.closed-intervals-rational-numbers public open import elementary-number-theory.cofibonacci public open import elementary-number-theory.collatz-bijection public open import elementary-number-theory.collatz-conjecture public @@ -117,6 +119,7 @@ open import elementary-number-theory.modular-arithmetic public open import elementary-number-theory.modular-arithmetic-standard-finite-types public open import elementary-number-theory.monoid-of-natural-numbers-with-addition public open import elementary-number-theory.monoid-of-natural-numbers-with-maximum public +open import elementary-number-theory.multiplication-closed-intervals-rational-numbers public open import elementary-number-theory.multiplication-integer-fractions public open import elementary-number-theory.multiplication-integers public open import elementary-number-theory.multiplication-lists-of-natural-numbers public diff --git a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md index a2c1cd6833..b193dce5d6 100644 --- a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md @@ -9,9 +9,9 @@ module elementary-number-theory.addition-closed-intervals-rational-numbers where ```agda open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.additive-group-of-rational-numbers +open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.rational-numbers open import foundation.coproduct-types diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index da389ed88a..890db03633 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -24,8 +24,8 @@ open import foundation.subtypes open import foundation.universe-levels open import order-theory.closed-interval-preserving-maps-posets -open import order-theory.decidable-total-orders open import order-theory.closed-intervals-posets +open import order-theory.decidable-total-orders ```
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 fac114e3cb..9ab11857a9 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 @@ -10,10 +10,10 @@ module elementary-number-theory.multiplication-closed-intervals-rational-numbers open import elementary-number-theory.addition-closed-intervals-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.closed-intervals-rational-numbers open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-rational-numbers @@ -47,8 +47,8 @@ open import group-theory.minkowski-multiplication-commutative-monoids open import group-theory.monoids open import group-theory.semigroups -open import order-theory.decidable-total-orders open import order-theory.closed-intervals-total-orders +open import order-theory.decidable-total-orders open import order-theory.total-orders ``` diff --git a/src/order-theory.lagda.md b/src/order-theory.lagda.md index 3f90100b31..fb56274790 100644 --- a/src/order-theory.lagda.md +++ b/src/order-theory.lagda.md @@ -13,6 +13,8 @@ open import order-theory.chains-posets public open import order-theory.chains-preorders public open import order-theory.closed-interval-preserving-maps-posets public open import order-theory.closed-interval-preserving-maps-total-orders public +open import order-theory.closed-intervals-posets public +open import order-theory.closed-intervals-total-orders public open import order-theory.closure-operators-large-locales public open import order-theory.closure-operators-large-posets public open import order-theory.commuting-squares-of-galois-connections-large-posets public diff --git a/src/order-theory/closed-intervals-posets.lagda.md b/src/order-theory/closed-intervals-posets.lagda.md index cd4a2b785a..7dec9bc913 100644 --- a/src/order-theory/closed-intervals-posets.lagda.md +++ b/src/order-theory/closed-intervals-posets.lagda.md @@ -34,7 +34,7 @@ A {{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} in a [poset](order-theory.posets.md) `P` is a [subtype](foundation.subtypes.md) of `P` with elements `x` and `y` with `x ≤ y` such that the subtype contains -every element `z` such that `x ≤ z ∧ z ≤ y`. (We choose the convention of not +every element `z` such that `x ≤ z ∧ z ≤ y`. (We choose the convention of not considering the empty subtype to be a closed interval.) Any pair `x y` with `x ≤ y` induces a unique closed interval, so we can diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index 832a299801..5ebff70836 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -37,13 +37,13 @@ A {{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} in a [total order](order-theory.total-orders.md) `X` is a [subtype](foundation.subtypes.md) of `X` with elements `x` and `y` with `x ≤ y` -such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. (We +such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. (We choose the convention of not considering the empty subtype to be a closed interval.) Equivalently, a closed interval is a total order is a -[closed interval](order-theory.closed-intervals-posets.md) -in the underlying [poset](order-theory.posets.md). +[closed interval](order-theory.closed-intervals-posets.md) in the underlying +[poset](order-theory.posets.md). ## Definition From b071f0fbe7431209f13031714c0ce1bf8e3bc426 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 30 Sep 2025 18:44:39 -0700 Subject: [PATCH 24/59] Fix link --- src/order-theory/closed-intervals-total-orders.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index 5ebff70836..d693d99b28 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -34,7 +34,7 @@ open import order-theory.total-orders ## Idea A -{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} +{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Total-Order}} in a [total order](order-theory.total-orders.md) `X` is a [subtype](foundation.subtypes.md) of `X` with elements `x` and `y` with `x ≤ y` such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. (We From d55ff8b0bac931ce11e31c939115f04437b25503 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Tue, 30 Sep 2025 18:44:49 -0700 Subject: [PATCH 25/59] Fix concept --- src/order-theory/closed-intervals-total-orders.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index d693d99b28..1997c1f956 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -34,7 +34,7 @@ open import order-theory.total-orders ## Idea A -{{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Total-Order}} +{{#concept "closed interval" disambiguation="in a total order" Agda=closed-interval-Total-Order}} in a [total order](order-theory.total-orders.md) `X` is a [subtype](foundation.subtypes.md) of `X` with elements `x` and `y` with `x ≤ y` such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. (We From 01d085341bb4bd11ae1d2e67a82f4b46ac133cc3 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 1 Oct 2025 13:15:29 -0700 Subject: [PATCH 26/59] Progress --- ...closed-intervals-rational-numbers.lagda.md | 32 ++++++++++++ ...closed-intervals-rational-numbers.lagda.md | 52 +++++++++++++++++++ .../negative-rational-numbers.lagda.md | 8 +++ 3 files changed, 92 insertions(+) diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 890db03633..546bb1b307 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -15,6 +15,7 @@ open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers +open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.injective-maps @@ -89,6 +90,12 @@ is-injective-subtype-closed-interval-ℚ : is-injective subtype-closed-interval-ℚ is-injective-subtype-closed-interval-ℚ = is-injective-subtype-closed-interval-Poset ℚ-Poset + +is-nontrivial-prop-closed-interval-ℚ : closed-interval-ℚ → Prop lzero +is-nontrivial-prop-closed-interval-ℚ ((a , b) , _) = le-ℚ-Prop a b + +is-nontrivial-closed-interval-ℚ : closed-interval-ℚ → UU lzero +is-nontrivial-closed-interval-ℚ [a,b] = type-Prop (is-nontrivial-prop-closed-interval-ℚ [a,b]) ``` ### Important ranges @@ -152,3 +159,28 @@ is-closed-interval-map-ℚ : (ℚ → ℚ) → ([a,b] [c,d] : closed-interval-ℚ) → UU lzero is-closed-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset ``` + +### Interior intervals + +```agda +is-interior-prop-closed-interval-ℚ : + closed-interval-ℚ → closed-interval-ℚ → Prop lzero +is-interior-prop-closed-interval-ℚ ((x , y) , _) ((x' , y') , _) = + le-ℚ-Prop x x' ∧ le-ℚ-Prop y' y + +is-interior-closed-interval-ℚ : closed-interval-ℚ → closed-interval-ℚ → UU lzero +is-interior-closed-interval-ℚ [x,y] [x',y'] = + type-Prop (is-interior-prop-closed-interval-ℚ [x,y] [x',y']) +``` + +### The bounds of a closed interval are elements + +```agda +lower-bound-is-in-closed-interval-ℚ : + ([a,b] : closed-interval-ℚ) → is-in-closed-interval-ℚ [a,b] (lower-bound-closed-interval-ℚ [a,b]) +lower-bound-is-in-closed-interval-ℚ = lower-bound-is-in-closed-interval-Poset ℚ-Poset + +upper-bound-is-in-closed-interval-ℚ : + ([a,b] : closed-interval-ℚ) → is-in-closed-interval-ℚ [a,b] (upper-bound-closed-interval-ℚ [a,b]) +upper-bound-is-in-closed-interval-ℚ = upper-bound-is-in-closed-interval-Poset ℚ-Poset +``` 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 9ab11857a9..e96b4dbc2f 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 @@ -21,16 +21,21 @@ open import elementary-number-theory.multiplicative-group-of-positive-rational-n open import elementary-number-theory.multiplicative-group-of-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.positive-and-negative-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers +open import foundation.cartesian-product-types open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions +open import foundation.function-types open import foundation.binary-transport 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.identity-types @@ -752,3 +757,50 @@ commutative-monoid-mul-closed-interval-ℚ = ( monoid-mul-closed-interval-ℚ , commutative-mul-closed-interval-ℚ) ``` + +### The sign of interval boundaries + +```agda +abstract + is-nonnegative-left-lower-bound-eq-lower-bound-mul-interval-mul-lower-bound-nontrivial-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + (a Date: Wed, 1 Oct 2025 13:16:04 -0700 Subject: [PATCH 27/59] Progress --- .../multiplication-closed-intervals-rational-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e96b4dbc2f..a26c09a396 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 @@ -802,5 +802,5 @@ abstract le-lower-bound-mul-interior-closed-interval-ℚ ((a , b) , _) ((c , d) , _) ((a' , b') , _) ((c' , d') , _) (a Date: Wed, 1 Oct 2025 13:31:42 -0700 Subject: [PATCH 28/59] Progress --- ...closed-intervals-rational-numbers.lagda.md | 63 ++- .../nonnegative-rational-numbers.lagda.md | 12 + .../positive-rational-numbers.lagda.md | 14 + .../closed-intervals-total-orders.lagda.md | 376 +++++++++--------- src/order-theory/total-orders.lagda.md | 114 +++--- 5 files changed, 325 insertions(+), 254 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 a26c09a396..0213468a32 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 @@ -784,6 +784,31 @@ abstract ( transitive-leq-ℚ _ _ _ (leq-right-min-ℚ _ _) (leq-left-min-ℚ _ _))))) ( id) ( decide-is-negative-is-nonnegative-ℚ a) + + is-nonnegative-right-lower-bound-eq-lower-bound-mul-interval-mul-lower-bound-nontrivial-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + (a Date: Wed, 1 Oct 2025 13:34:00 -0700 Subject: [PATCH 29/59] Progress --- .../multiplication-closed-intervals-rational-numbers.lagda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0213468a32..84d0076a91 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 @@ -853,7 +853,7 @@ abstract ( c' Date: Wed, 1 Oct 2025 14:30:50 -0700 Subject: [PATCH 30/59] Progress --- src/elementary-number-theory.lagda.md | 6 + ...ddition-positive-rational-numbers.lagda.md | 466 +++++++++ ...quality-positive-rational-numbers.lagda.md | 92 ++ ...maximum-positive-rational-numbers.lagda.md | 77 ++ ...minimum-positive-rational-numbers.lagda.md | 109 +++ ...ication-positive-rational-numbers.lagda.md | 315 +++++++ .../positive-rational-numbers.lagda.md | 883 ------------------ ...quality-positive-rational-numbers.lagda.md | 102 ++ ...uchy-approximations-metric-spaces.lagda.md | 1 + ...pproximations-pseudometric-spaces.lagda.md | 1 + ...uchy-approximations-metric-spaces.lagda.md | 1 + ...pproximations-pseudometric-spaces.lagda.md | 2 + src/metric-spaces/metric-spaces.lagda.md | 4 +- ...c-rational-neighborhood-relations.lagda.md | 1 + .../pseudometric-spaces.lagda.md | 3 + ...d-rational-neighborhood-relations.lagda.md | 2 + ...y-of-elements-pseudometric-spaces.lagda.md | 1 + ...r-rational-neighborhood-relations.lagda.md | 1 + .../lower-dedekind-real-numbers.lagda.md | 1 + .../upper-dedekind-real-numbers.lagda.md | 1 + 20 files changed, 1185 insertions(+), 884 deletions(-) create mode 100644 src/elementary-number-theory/addition-positive-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 0ff0949de8..79788d838a 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -17,6 +17,7 @@ open import elementary-number-theory.addition-integers public open import elementary-number-theory.addition-natural-numbers public open import elementary-number-theory.addition-nonnegative-rational-numbers public open import elementary-number-theory.addition-positive-and-negative-integers public +open import elementary-number-theory.addition-positive-rational-numbers public open import elementary-number-theory.addition-rational-numbers public open import elementary-number-theory.additive-group-of-rational-numbers public open import elementary-number-theory.archimedean-property-integer-fractions public @@ -96,6 +97,7 @@ open import elementary-number-theory.inequality-integer-fractions public open import elementary-number-theory.inequality-integers public open import elementary-number-theory.inequality-natural-numbers public open import elementary-number-theory.inequality-nonnegative-rational-numbers public +open import elementary-number-theory.inequality-positive-rational-numbers public open import elementary-number-theory.inequality-rational-numbers public open import elementary-number-theory.inequality-standard-finite-types public open import elementary-number-theory.infinite-conatural-numbers public @@ -109,11 +111,13 @@ open import elementary-number-theory.kolakoski-sequence public open import elementary-number-theory.legendre-symbol public open import elementary-number-theory.lower-bounds-natural-numbers public open import elementary-number-theory.maximum-natural-numbers public +open import elementary-number-theory.maximum-positive-rational-numbers public open import elementary-number-theory.maximum-rational-numbers public open import elementary-number-theory.maximum-standard-finite-types public open import elementary-number-theory.mediant-integer-fractions public open import elementary-number-theory.mersenne-primes public open import elementary-number-theory.minimum-natural-numbers public +open import elementary-number-theory.minimum-positive-rational-numbers public open import elementary-number-theory.minimum-rational-numbers public open import elementary-number-theory.minimum-standard-finite-types public open import elementary-number-theory.modular-arithmetic public @@ -126,6 +130,7 @@ open import elementary-number-theory.multiplication-lists-of-natural-numbers pub open import elementary-number-theory.multiplication-natural-numbers public open import elementary-number-theory.multiplication-nonnegative-rational-numbers public open import elementary-number-theory.multiplication-positive-and-negative-integers public +open import elementary-number-theory.multiplication-positive-rational-numbers public open import elementary-number-theory.multiplication-rational-numbers public open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers public open import elementary-number-theory.multiplicative-group-of-rational-numbers public @@ -185,6 +190,7 @@ open import elementary-number-theory.strict-inequality-integer-fractions public open import elementary-number-theory.strict-inequality-integers public open import elementary-number-theory.strict-inequality-natural-numbers public open import elementary-number-theory.strict-inequality-nonnegative-rational-numbers public +open import elementary-number-theory.strict-inequality-positive-rational-numbers public open import elementary-number-theory.strict-inequality-rational-numbers public open import elementary-number-theory.strict-inequality-standard-finite-types public open import elementary-number-theory.strictly-ordered-pairs-of-natural-numbers public diff --git a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md new file mode 100644 index 0000000000..7fe0fda504 --- /dev/null +++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md @@ -0,0 +1,466 @@ +# Addition of positive rational numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module elementary-number-theory.addition-positive-rational-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.inequality-rational-numbers +open import elementary-number-theory.minimum-positive-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 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.action-on-identifications-functions +open import foundation.coproduct-types +open import foundation.dependent-pair-types +open import foundation.empty-types +open import foundation.equivalences +open import foundation.existential-quantification +open import foundation.function-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositional-truncations +open import foundation.propositions +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.semigroups +open import group-theory.subsemigroups +``` + +
+ +## Idea + +The +{{#concept "sum" WDID=Q32043 WD="addition" Disambiguation="positive rational numbers" Agda=add-ℚ⁺}} +of two +[positive rational numbers](elementary-number-theory.positive-rational-numbers.md) +is their [sum](elementary-number-theory.addition-rational-numbers.md) as +[rational numbers](elementary-number-theory.rational-numbers.md), and is itself +positive. + +## Definition + +### The sum of two positive rational numbers is positive + +```agda +opaque + unfolding add-ℚ + + is-positive-add-ℚ : + {x y : ℚ} → is-positive-ℚ x → is-positive-ℚ y → is-positive-ℚ (x +ℚ y) + is-positive-add-ℚ {x} {y} P Q = + is-positive-rational-fraction-ℤ + ( is-positive-add-fraction-ℤ + { fraction-ℚ x} + { fraction-ℚ y} + ( P) + ( Q)) +``` + +### The positive rational numbers are an additive subsemigroup of the rational numbers + +```agda +subsemigroup-add-ℚ⁺ : Subsemigroup lzero semigroup-add-ℚ +pr1 subsemigroup-add-ℚ⁺ = is-positive-prop-ℚ +pr2 subsemigroup-add-ℚ⁺ {x} {y} = is-positive-add-ℚ {x} {y} + +semigroup-add-ℚ⁺ : Semigroup lzero +semigroup-add-ℚ⁺ = + semigroup-Subsemigroup semigroup-add-ℚ subsemigroup-add-ℚ⁺ +``` + +### The positive sum of two positive rational numbers + +```agda +add-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ +add-ℚ⁺ = mul-Subsemigroup semigroup-add-ℚ subsemigroup-add-ℚ⁺ + +add-ℚ⁺' : ℚ⁺ → ℚ⁺ → ℚ⁺ +add-ℚ⁺' x y = add-ℚ⁺ y x + +infixl 35 _+ℚ⁺_ +_+ℚ⁺_ = add-ℚ⁺ + +ap-add-ℚ⁺ : + {x y x' y' : ℚ⁺} → x = x' → y = y' → x +ℚ⁺ y = x' +ℚ⁺ y' +ap-add-ℚ⁺ p q = ap-binary add-ℚ⁺ p q +``` + +## Properties + +### The positive sum of positive rational numbers is associative + +```agda +associative-add-ℚ⁺ : (x y z : ℚ⁺) → ((x +ℚ⁺ y) +ℚ⁺ z) = (x +ℚ⁺ (y +ℚ⁺ z)) +associative-add-ℚ⁺ = + associative-mul-Subsemigroup semigroup-add-ℚ subsemigroup-add-ℚ⁺ +``` + +### The positive sum of positive rational numbers is commutative + +```agda +commutative-add-ℚ⁺ : (x y : ℚ⁺) → (x +ℚ⁺ y) = (y +ℚ⁺ x) +commutative-add-ℚ⁺ x y = + eq-ℚ⁺ (commutative-add-ℚ (rational-ℚ⁺ x) (rational-ℚ⁺ y)) +``` + +### The additive interchange law on positive rational numbers + +```agda +interchange-law-add-add-ℚ⁺ : + (x y u v : ℚ⁺) → (x +ℚ⁺ y) +ℚ⁺ (u +ℚ⁺ v) = (x +ℚ⁺ u) +ℚ⁺ (y +ℚ⁺ v) +interchange-law-add-add-ℚ⁺ x y u v = + eq-ℚ⁺ + ( interchange-law-add-add-ℚ + ( rational-ℚ⁺ x) + ( rational-ℚ⁺ y) + ( rational-ℚ⁺ u) + ( rational-ℚ⁺ v)) +``` + +### The sum of two positive rational numbers is greater than each of them + +```agda +module _ + (x y : ℚ⁺) + where + + le-left-add-ℚ⁺ : le-ℚ⁺ x (x +ℚ⁺ y) + le-left-add-ℚ⁺ = + tr + ( λ z → le-ℚ z ((rational-ℚ⁺ x) +ℚ (rational-ℚ⁺ y))) + ( right-unit-law-add-ℚ (rational-ℚ⁺ x)) + ( preserves-le-right-add-ℚ + ( rational-ℚ⁺ x) + ( zero-ℚ) + ( rational-ℚ⁺ y) + ( le-zero-is-positive-ℚ + ( rational-ℚ⁺ y) + ( is-positive-rational-ℚ⁺ y))) + + le-right-add-ℚ⁺ : le-ℚ⁺ y (x +ℚ⁺ y) + le-right-add-ℚ⁺ = + tr + ( λ z → le-ℚ z ((rational-ℚ⁺ x) +ℚ (rational-ℚ⁺ y))) + ( left-unit-law-add-ℚ (rational-ℚ⁺ y)) + ( preserves-le-left-add-ℚ + ( rational-ℚ⁺ y) + ( zero-ℚ) + ( rational-ℚ⁺ x) + ( le-zero-is-positive-ℚ + ( rational-ℚ⁺ x) + ( is-positive-rational-ℚ⁺ x))) +``` + +### The positive difference of strictly inequal positive rational numbers + +```agda +module _ + (x y : ℚ⁺) (H : le-ℚ⁺ x y) + where + + le-diff-ℚ⁺ : ℚ⁺ + le-diff-ℚ⁺ = positive-diff-le-ℚ (rational-ℚ⁺ x) (rational-ℚ⁺ y) H + + left-diff-law-add-ℚ⁺ : le-diff-ℚ⁺ +ℚ⁺ x = y + left-diff-law-add-ℚ⁺ = + eq-ℚ⁺ + ( ( associative-add-ℚ + ( rational-ℚ⁺ y) + ( neg-ℚ (rational-ℚ⁺ x)) + ( rational-ℚ⁺ x)) ∙ + ( ( ap + ( (rational-ℚ⁺ y) +ℚ_) + ( left-inverse-law-add-ℚ (rational-ℚ⁺ x))) ∙ + ( right-unit-law-add-ℚ (rational-ℚ⁺ y)))) + + right-diff-law-add-ℚ⁺ : x +ℚ⁺ le-diff-ℚ⁺ = y + right-diff-law-add-ℚ⁺ = + ( eq-ℚ⁺ + ( commutative-add-ℚ + ( rational-ℚ⁺ x) + ( rational-ℚ⁺ le-diff-ℚ⁺))) ∙ + ( left-diff-law-add-ℚ⁺) + + le-le-diff-ℚ⁺ : le-ℚ⁺ le-diff-ℚ⁺ y + le-le-diff-ℚ⁺ = + tr + ( le-ℚ⁺ le-diff-ℚ⁺) + ( left-diff-law-add-ℚ⁺) + ( le-left-add-ℚ⁺ le-diff-ℚ⁺ x) +``` + +### Any positive rational number can be expressed as the sum of two positive rational numbers + +```agda +module _ + (x : ℚ⁺) + where + + left-summand-split-ℚ⁺ : ℚ⁺ + left-summand-split-ℚ⁺ = mediant-zero-ℚ⁺ x + + right-summand-split-ℚ⁺ : ℚ⁺ + right-summand-split-ℚ⁺ = + le-diff-ℚ⁺ (mediant-zero-ℚ⁺ x) x (le-mediant-zero-ℚ⁺ x) + + abstract + eq-add-split-ℚ⁺ : + left-summand-split-ℚ⁺ +ℚ⁺ right-summand-split-ℚ⁺ = x + eq-add-split-ℚ⁺ = + right-diff-law-add-ℚ⁺ (mediant-zero-ℚ⁺ x) x (le-mediant-zero-ℚ⁺ x) + + split-ℚ⁺ : Σ ℚ⁺ (λ u → Σ ℚ⁺ (λ v → u +ℚ⁺ v = x)) + split-ℚ⁺ = + left-summand-split-ℚ⁺ , + right-summand-split-ℚ⁺ , + eq-add-split-ℚ⁺ + + abstract + le-add-split-ℚ⁺ : + (p q r s : ℚ) → + le-ℚ p (q +ℚ rational-ℚ⁺ left-summand-split-ℚ⁺) → + le-ℚ r (s +ℚ rational-ℚ⁺ right-summand-split-ℚ⁺) → + le-ℚ (p +ℚ r) ((q +ℚ s) +ℚ rational-ℚ⁺ x) + le-add-split-ℚ⁺ p q r s pImports + +```agda +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.binary-relations +open import foundation.dependent-pair-types +open import foundation.propositions +open import foundation.universe-levels + +open import order-theory.decidable-posets +open import order-theory.decidable-total-orders +open import order-theory.posets +open import order-theory.preorders +open import order-theory.total-orders +``` + +
+ +## Idea + +The +{{#concept "standard ordering" Disambiguation="positive rational numbers" Agda=leq-ℚ⁺}} +on the +[positive rational numbers](elementary-number-theory.positive-rational-numbers.md) +is inherited from the +[standard ordering](elementary-number-theory.inequality-rational-numbers.md) on +[rational numbers](elementary-number-theory.rational-numbers.md). + +## Definition + +```agda +decidable-total-order-ℚ⁺ : Decidable-Total-Order lzero lzero +decidable-total-order-ℚ⁺ = + decidable-total-order-Decidable-Total-Suborder + ℚ-Decidable-Total-Order + is-positive-prop-ℚ + +poset-ℚ⁺ : Poset lzero lzero +poset-ℚ⁺ = poset-Decidable-Total-Order decidable-total-order-ℚ⁺ + +preorder-ℚ⁺ : Preorder lzero lzero +preorder-ℚ⁺ = preorder-Poset poset-ℚ⁺ + +leq-prop-ℚ⁺ : ℚ⁺ → ℚ⁺ → Prop lzero +leq-prop-ℚ⁺ = leq-prop-Poset poset-ℚ⁺ + +leq-ℚ⁺ : ℚ⁺ → ℚ⁺ → UU lzero +leq-ℚ⁺ = leq-Poset poset-ℚ⁺ + +is-prop-leq-ℚ⁺ : (x y : ℚ⁺) → is-prop (leq-ℚ⁺ x y) +is-prop-leq-ℚ⁺ x y = is-prop-type-Prop (leq-prop-ℚ⁺ x y) +``` + +## Properties + +### Inequality on the positive rational numbers is total + +```agda +is-total-leq-ℚ⁺ : is-total-Poset poset-ℚ⁺ +is-total-leq-ℚ⁺ = + is-total-poset-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### Inequality on the positive rational numbers is decidable + +```agda +is-decidable-leq-ℚ⁺ : is-decidable-leq-Poset poset-ℚ⁺ +is-decidable-leq-ℚ⁺ = + is-decidable-poset-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### Inequality on the positive rational numbers is a partial order + +```agda +refl-leq-ℚ⁺ : is-reflexive leq-ℚ⁺ +refl-leq-ℚ⁺ = refl-leq-Poset poset-ℚ⁺ + +transitive-leq-ℚ⁺ : is-transitive leq-ℚ⁺ +transitive-leq-ℚ⁺ = transitive-leq-Poset poset-ℚ⁺ + +antisymmetric-leq-ℚ⁺ : is-antisymmetric leq-ℚ⁺ +antisymmetric-leq-ℚ⁺ = antisymmetric-leq-Poset poset-ℚ⁺ +``` diff --git a/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md new file mode 100644 index 0000000000..5306ecd649 --- /dev/null +++ b/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md @@ -0,0 +1,77 @@ +# The maximum of positive rational numbers + +```agda +module elementary-number-theory.maximum-positive-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-positive-rational-numbers +open import elementary-number-theory.positive-rational-numbers + +open import foundation.identity-types + +open import order-theory.decidable-total-orders +``` + +
+ +## Idea + +The +{{#concept "maximum" Disambiguation="of pairs of positive rational numbers" Agda=max-ℚ⁺ WDID=Q10578722 WD="maximum"}} +of two +[positive rational numbers](elementary-number-theory.positive-rational-numbers.md) +is the +[greatest](elementary-number-theory.inequality-positive-rational-numbers.md) +rational number of the two. + +## Definition + +```agda +max-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ +max-ℚ⁺ = max-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +## Properties + +### The binary maximum is associative + +```agda +abstract + associative-max-ℚ⁺ : + (x y z : ℚ⁺) → max-ℚ⁺ (max-ℚ⁺ x y) z = max-ℚ⁺ x (max-ℚ⁺ y z) + associative-max-ℚ⁺ = + associative-max-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### The binary maximum is commutative + +```agda +abstract + commutative-max-ℚ⁺ : (x y : ℚ⁺) → max-ℚ⁺ x y = max-ℚ⁺ y x + commutative-max-ℚ⁺ = + commutative-max-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### The binary maximum is idempotent + +```agda +abstract + idempotent-max-ℚ⁺ : (x : ℚ⁺) → max-ℚ⁺ x x = x + idempotent-max-ℚ⁺ = + idempotent-max-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### The binary maximum is an upper bound + +```agda +abstract + leq-left-max-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ x (max-ℚ⁺ x y) + leq-left-max-ℚ⁺ = leq-left-max-Decidable-Total-Order decidable-total-order-ℚ⁺ + + leq-right-max-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ y (max-ℚ⁺ x y) + leq-right-max-ℚ⁺ = + leq-right-max-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` diff --git a/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md b/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md new file mode 100644 index 0000000000..154866697c --- /dev/null +++ b/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md @@ -0,0 +1,109 @@ +# The minimum of positive rational numbers + +```agda +module elementary-number-theory.minimum-positive-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-positive-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.strict-inequality-positive-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.identity-types + +open import order-theory.decidable-total-orders +``` + +
+ +## Idea + +The +{{#concept "minimum" Disambiguation="of pairs of positive rational numbers" Agda=min-ℚ WDID=Q10585806 WD="minimum"}} +of two +[positive rational numbers](elementary-number-theory.positive-rational-numbers.md) +is the +[smallest](elementary-number-theory.inequality-positive-rational-numbers.md) of +the two. + +## Definition + +```agda +min-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ +min-ℚ⁺ = min-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +## Properties + +### The binary minimum is associative + +```agda +abstract + associative-min-ℚ⁺ : + (x y z : ℚ⁺) → min-ℚ⁺ (min-ℚ⁺ x y) z = min-ℚ⁺ x (min-ℚ⁺ y z) + associative-min-ℚ⁺ = + associative-min-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### The binary minimum is commutative + +```agda +abstract + commutative-min-ℚ⁺ : (x y : ℚ⁺) → min-ℚ⁺ x y = min-ℚ⁺ y x + commutative-min-ℚ⁺ = + commutative-min-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### The binary minimum is idempotent + +```agda +abstract + idempotent-min-ℚ⁺ : (x : ℚ⁺) → min-ℚ⁺ x x = x + idempotent-min-ℚ⁺ = + idempotent-min-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### The binary minimum is a lower bound + +```agda +abstract + leq-left-min-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ (min-ℚ⁺ x y) x + leq-left-min-ℚ⁺ = leq-left-min-Decidable-Total-Order decidable-total-order-ℚ⁺ + + leq-right-min-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ (min-ℚ⁺ x y) y + leq-right-min-ℚ⁺ = + leq-right-min-Decidable-Total-Order decidable-total-order-ℚ⁺ +``` + +### Any two positive rational numbers have a positive rational number strictly less than both + +```agda +module _ + (x y : ℚ⁺) + where + + mediant-zero-min-ℚ⁺ : ℚ⁺ + mediant-zero-min-ℚ⁺ = mediant-zero-ℚ⁺ (min-ℚ⁺ x y) + + abstract + le-left-mediant-zero-min-ℚ⁺ : le-ℚ⁺ mediant-zero-min-ℚ⁺ x + le-left-mediant-zero-min-ℚ⁺ = + concatenate-le-leq-ℚ + ( rational-ℚ⁺ mediant-zero-min-ℚ⁺) + ( rational-ℚ⁺ (min-ℚ⁺ x y)) + ( rational-ℚ⁺ x) + ( le-mediant-zero-ℚ⁺ (min-ℚ⁺ x y)) + ( leq-left-min-ℚ⁺ x y) + + le-right-mediant-zero-min-ℚ⁺ : le-ℚ⁺ mediant-zero-min-ℚ⁺ y + le-right-mediant-zero-min-ℚ⁺ = + concatenate-le-leq-ℚ + ( rational-ℚ⁺ mediant-zero-min-ℚ⁺) + ( rational-ℚ⁺ (min-ℚ⁺ x y)) + ( rational-ℚ⁺ y) + ( le-mediant-zero-ℚ⁺ (min-ℚ⁺ x y)) + ( leq-right-min-ℚ⁺ 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 new file mode 100644 index 0000000000..a3611a27f4 --- /dev/null +++ b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md @@ -0,0 +1,315 @@ +# Multiplication of positive rational numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module elementary-number-theory.multiplication-positive-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.addition-positive-rational-numbers +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.multiplication-integer-fractions +open import elementary-number-theory.multiplication-integers +open import elementary-number-theory.multiplication-positive-and-negative-integers +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.multiplicative-inverses-positive-integer-fractions +open import elementary-number-theory.multiplicative-monoid-of-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-rational-numbers +open import elementary-number-theory.rational-numbers +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.binary-transport +open import foundation.dependent-pair-types +open import foundation.identity-types +open import foundation.transport-along-identifications +open import foundation.universe-levels + +open import group-theory.commutative-monoids +open import group-theory.invertible-elements-monoids +open import group-theory.monoids +open import group-theory.semigroups +open import group-theory.submonoids +open import group-theory.submonoids-commutative-monoids +``` + +
+ +## Idea + +The +{{#concept "product" WDID=Q40276 WD="multiplication" Disambiguation="of positive rational numbers" Agda=mul-ℚ⁺}} +of two +[positive rational numbers](elementary-number-theory.positive-rational-numbers.md) +is their [product](elementary-number-theory.multiplication-rational-numbers.md) +as [rational numbers](elementary-number-theory.rational-numbers.md), and is +itself positive. + +## Definition + +### The product of two positive rational numbers is positive + +```agda +opaque + unfolding mul-ℚ + + is-positive-mul-ℚ : + {x y : ℚ} → is-positive-ℚ x → is-positive-ℚ y → is-positive-ℚ (x *ℚ y) + is-positive-mul-ℚ {x} {y} P Q = + is-positive-rational-fraction-ℤ + ( is-positive-mul-fraction-ℤ + { fraction-ℚ x} + { fraction-ℚ y} + ( P) + ( Q)) +``` + +### The positive rational numbers are a multiplicative submonoid of the rational numbers + +```agda +is-submonoid-mul-ℚ⁺ : + is-submonoid-subset-Monoid monoid-mul-ℚ is-positive-prop-ℚ +pr1 is-submonoid-mul-ℚ⁺ = is-positive-rational-ℚ⁺ one-ℚ⁺ +pr2 is-submonoid-mul-ℚ⁺ x y = is-positive-mul-ℚ {x} {y} + +submonoid-mul-ℚ⁺ : Submonoid lzero monoid-mul-ℚ +pr1 submonoid-mul-ℚ⁺ = is-positive-prop-ℚ +pr2 submonoid-mul-ℚ⁺ = is-submonoid-mul-ℚ⁺ + +semigroup-mul-ℚ⁺ : Semigroup lzero +semigroup-mul-ℚ⁺ = semigroup-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ + +monoid-mul-ℚ⁺ : Monoid lzero +monoid-mul-ℚ⁺ = monoid-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ + +commutative-monoid-mul-ℚ⁺ : Commutative-Monoid lzero +commutative-monoid-mul-ℚ⁺ = + commutative-monoid-Commutative-Submonoid + commutative-monoid-mul-ℚ + submonoid-mul-ℚ⁺ +``` + +### The positive product of two positive rational numbers + +```agda +mul-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ +mul-ℚ⁺ = mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ + +infixl 40 _*ℚ⁺_ +_*ℚ⁺_ = mul-ℚ⁺ +``` + +## Properties + +### The positive product of positive rational numbers is associative + +```agda +associative-mul-ℚ⁺ : (x y z : ℚ⁺) → ((x *ℚ⁺ y) *ℚ⁺ z) = (x *ℚ⁺ (y *ℚ⁺ z)) +associative-mul-ℚ⁺ = + associative-mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ +``` + +### The positive product of positive rational numbers is commutative + +```agda +commutative-mul-ℚ⁺ : (x y : ℚ⁺) → (x *ℚ⁺ y) = (y *ℚ⁺ x) +commutative-mul-ℚ⁺ = + commutative-mul-Commutative-Submonoid + commutative-monoid-mul-ℚ + submonoid-mul-ℚ⁺ +``` + +### Multiplicative unit laws for positive multiplication of positive rational numbers + +```agda +left-unit-law-mul-ℚ⁺ : (x : ℚ⁺) → one-ℚ⁺ *ℚ⁺ x = x +left-unit-law-mul-ℚ⁺ = + left-unit-law-mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ + +right-unit-law-mul-ℚ⁺ : (x : ℚ⁺) → x *ℚ⁺ one-ℚ⁺ = x +right-unit-law-mul-ℚ⁺ = + right-unit-law-mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ +``` + +### The positive rational numbers are invertible elements of the multiplicative monoid of rational numbers + +```agda +module _ + (x : ℚ) (P : is-positive-ℚ x) + where + + opaque + unfolding mul-ℚ + + inv-is-positive-ℚ : ℚ + pr1 inv-is-positive-ℚ = inv-is-positive-fraction-ℤ (fraction-ℚ x) P + pr2 inv-is-positive-ℚ = + is-reduced-inv-is-positive-fraction-ℤ + ( fraction-ℚ x) + ( P) + ( is-reduced-fraction-ℚ x) + + left-inverse-law-mul-is-positive-ℚ : inv-is-positive-ℚ *ℚ x = one-ℚ + left-inverse-law-mul-is-positive-ℚ = + ( eq-ℚ-sim-fraction-ℤ + ( mul-fraction-ℤ + ( inv-is-positive-fraction-ℤ (fraction-ℚ x) P) + ( fraction-ℚ x)) + ( one-fraction-ℤ) + ( left-inverse-law-mul-is-positive-fraction-ℤ (fraction-ℚ x) P)) ∙ + ( is-retraction-rational-fraction-ℚ one-ℚ) + + right-inverse-law-mul-is-positive-ℚ : x *ℚ inv-is-positive-ℚ = one-ℚ + right-inverse-law-mul-is-positive-ℚ = + (commutative-mul-ℚ x _) ∙ (left-inverse-law-mul-is-positive-ℚ) + + eq-numerator-inv-denominator-is-positive-ℚ : + numerator-ℚ (inv-is-positive-ℚ) = denominator-ℚ x + eq-numerator-inv-denominator-is-positive-ℚ = refl + + eq-denominator-inv-numerator-is-positive-ℚ : + denominator-ℚ (inv-is-positive-ℚ) = numerator-ℚ x + eq-denominator-inv-numerator-is-positive-ℚ = refl + + is-mul-invertible-is-positive-ℚ : is-invertible-element-Monoid monoid-mul-ℚ x + pr1 is-mul-invertible-is-positive-ℚ = inv-is-positive-ℚ + pr1 (pr2 is-mul-invertible-is-positive-ℚ) = + right-inverse-law-mul-is-positive-ℚ + pr2 (pr2 is-mul-invertible-is-positive-ℚ) = + left-inverse-law-mul-is-positive-ℚ +``` + +### Multiplication on the positive rational numbers distributes over addition + +```agda +module _ + (x y z : ℚ⁺) + where + + left-distributive-mul-add-ℚ⁺ : x *ℚ⁺ (y +ℚ⁺ z) = (x *ℚ⁺ y) +ℚ⁺ (x *ℚ⁺ z) + left-distributive-mul-add-ℚ⁺ = + eq-ℚ⁺ + ( left-distributive-mul-add-ℚ + ( rational-ℚ⁺ x) + ( rational-ℚ⁺ y) + ( rational-ℚ⁺ z)) + + right-distributive-mul-add-ℚ⁺ : (x +ℚ⁺ y) *ℚ⁺ z = (x *ℚ⁺ z) +ℚ⁺ (y *ℚ⁺ z) + right-distributive-mul-add-ℚ⁺ = + eq-ℚ⁺ + ( right-distributive-mul-add-ℚ + ( rational-ℚ⁺ x) + ( rational-ℚ⁺ y) + ( rational-ℚ⁺ z)) +``` + +### Multiplication by a positive rational number preserves strict inequality + +```agda +opaque + unfolding le-ℚ-Prop + unfolding mul-ℚ + + preserves-le-left-mul-ℚ⁺ : + (p : ℚ⁺) (q r : ℚ) → + le-ℚ q r → + le-ℚ (rational-ℚ⁺ p *ℚ q) (rational-ℚ⁺ p *ℚ r) + preserves-le-left-mul-ℚ⁺ + p⁺@((p@(p-num , p-denom , p-denom-pos) , _) , p-num-pos) + q@((q-num , q-denom , _) , _) + r@((r-num , r-denom , _) , _) + qImports ```agda -open import elementary-number-theory.addition-integer-fractions open import elementary-number-theory.addition-rational-numbers -open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.cross-multiplication-difference-integer-fractions -open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers -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 -open import elementary-number-theory.multiplication-integer-fractions -open import elementary-number-theory.multiplication-integers -open import elementary-number-theory.multiplication-positive-and-negative-integers -open import elementary-number-theory.multiplication-rational-numbers -open import elementary-number-theory.multiplicative-inverses-positive-integer-fractions -open import elementary-number-theory.multiplicative-monoid-of-rational-numbers open import elementary-number-theory.negative-integers open import elementary-number-theory.nonzero-natural-numbers open import elementary-number-theory.nonzero-rational-numbers @@ -32,21 +21,12 @@ 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.reduced-integer-fractions -open import elementary-number-theory.strict-inequality-integers 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-relations -open import foundation.binary-transport open import foundation.cartesian-product-types open import foundation.coproduct-types open import foundation.decidable-subtypes open import foundation.dependent-pair-types -open import foundation.empty-types -open import foundation.equivalences -open import foundation.existential-quantification open import foundation.function-types open import foundation.identity-types open import foundation.logical-equivalences @@ -58,22 +38,6 @@ open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels -open import group-theory.commutative-monoids -open import group-theory.invertible-elements-monoids -open import group-theory.monoids -open import group-theory.semigroups -open import group-theory.submonoids -open import group-theory.submonoids-commutative-monoids -open import group-theory.subsemigroups - -open import order-theory.decidable-posets -open import order-theory.decidable-total-orders -open import order-theory.posets -open import order-theory.preorders -open import order-theory.strict-preorders -open import order-theory.strictly-preordered-sets -open import order-theory.total-orders - open import set-theory.countable-sets ``` @@ -335,850 +299,3 @@ abstract nonzero-ℚ⁺ : positive-ℚ → nonzero-ℚ nonzero-ℚ⁺ (x , P) = (x , is-nonzero-is-positive-ℚ P) ``` - -### The sum of two positive rational numbers is positive - -```agda -opaque - unfolding add-ℚ - - is-positive-add-ℚ : - {x y : ℚ} → is-positive-ℚ x → is-positive-ℚ y → is-positive-ℚ (x +ℚ y) - is-positive-add-ℚ {x} {y} P Q = - is-positive-rational-fraction-ℤ - ( is-positive-add-fraction-ℤ - { fraction-ℚ x} - { fraction-ℚ y} - ( P) - ( Q)) -``` - -### The positive rational numbers are an additive subsemigroup of the rational numbers - -```agda -subsemigroup-add-ℚ⁺ : Subsemigroup lzero semigroup-add-ℚ -pr1 subsemigroup-add-ℚ⁺ = is-positive-prop-ℚ -pr2 subsemigroup-add-ℚ⁺ {x} {y} = is-positive-add-ℚ {x} {y} - -semigroup-add-ℚ⁺ : Semigroup lzero -semigroup-add-ℚ⁺ = - semigroup-Subsemigroup semigroup-add-ℚ subsemigroup-add-ℚ⁺ -``` - -### The positive sum of two positive rational numbers - -```agda -add-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ -add-ℚ⁺ = mul-Subsemigroup semigroup-add-ℚ subsemigroup-add-ℚ⁺ - -add-ℚ⁺' : ℚ⁺ → ℚ⁺ → ℚ⁺ -add-ℚ⁺' x y = add-ℚ⁺ y x - -infixl 35 _+ℚ⁺_ -_+ℚ⁺_ = add-ℚ⁺ - -ap-add-ℚ⁺ : - {x y x' y' : ℚ⁺} → x = x' → y = y' → x +ℚ⁺ y = x' +ℚ⁺ y' -ap-add-ℚ⁺ p q = ap-binary add-ℚ⁺ p q -``` - -### The positive sum of positive rational numbers is associative - -```agda -associative-add-ℚ⁺ : (x y z : ℚ⁺) → ((x +ℚ⁺ y) +ℚ⁺ z) = (x +ℚ⁺ (y +ℚ⁺ z)) -associative-add-ℚ⁺ = - associative-mul-Subsemigroup semigroup-add-ℚ subsemigroup-add-ℚ⁺ -``` - -### The positive sum of positive rational numbers is commutative - -```agda -commutative-add-ℚ⁺ : (x y : ℚ⁺) → (x +ℚ⁺ y) = (y +ℚ⁺ x) -commutative-add-ℚ⁺ x y = - eq-ℚ⁺ (commutative-add-ℚ (rational-ℚ⁺ x) (rational-ℚ⁺ y)) -``` - -### The additive interchange law on positive rational numbers - -```agda -interchange-law-add-add-ℚ⁺ : - (x y u v : ℚ⁺) → (x +ℚ⁺ y) +ℚ⁺ (u +ℚ⁺ v) = (x +ℚ⁺ u) +ℚ⁺ (y +ℚ⁺ v) -interchange-law-add-add-ℚ⁺ x y u v = - eq-ℚ⁺ - ( interchange-law-add-add-ℚ - ( rational-ℚ⁺ x) - ( rational-ℚ⁺ y) - ( rational-ℚ⁺ u) - ( rational-ℚ⁺ v)) -``` - -### The product of two positive rational numbers is positive - -```agda -opaque - unfolding mul-ℚ - - is-positive-mul-ℚ : - {x y : ℚ} → is-positive-ℚ x → is-positive-ℚ y → is-positive-ℚ (x *ℚ y) - is-positive-mul-ℚ {x} {y} P Q = - is-positive-rational-fraction-ℤ - ( is-positive-mul-fraction-ℤ - { fraction-ℚ x} - { fraction-ℚ y} - ( P) - ( Q)) -``` - -### The positive rational numbers are a multiplicative submonoid of the rational numbers - -```agda -is-submonoid-mul-ℚ⁺ : - is-submonoid-subset-Monoid monoid-mul-ℚ is-positive-prop-ℚ -pr1 is-submonoid-mul-ℚ⁺ = is-positive-rational-ℚ⁺ one-ℚ⁺ -pr2 is-submonoid-mul-ℚ⁺ x y = is-positive-mul-ℚ {x} {y} - -submonoid-mul-ℚ⁺ : Submonoid lzero monoid-mul-ℚ -pr1 submonoid-mul-ℚ⁺ = is-positive-prop-ℚ -pr2 submonoid-mul-ℚ⁺ = is-submonoid-mul-ℚ⁺ - -semigroup-mul-ℚ⁺ : Semigroup lzero -semigroup-mul-ℚ⁺ = semigroup-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ - -monoid-mul-ℚ⁺ : Monoid lzero -monoid-mul-ℚ⁺ = monoid-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ - -commutative-monoid-mul-ℚ⁺ : Commutative-Monoid lzero -commutative-monoid-mul-ℚ⁺ = - commutative-monoid-Commutative-Submonoid - commutative-monoid-mul-ℚ - submonoid-mul-ℚ⁺ -``` - -### The positive product of two positive rational numbers - -```agda -mul-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ -mul-ℚ⁺ = mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ - -infixl 40 _*ℚ⁺_ -_*ℚ⁺_ = mul-ℚ⁺ -``` - -### The positive product of positive rational numbers is associative - -```agda -associative-mul-ℚ⁺ : (x y z : ℚ⁺) → ((x *ℚ⁺ y) *ℚ⁺ z) = (x *ℚ⁺ (y *ℚ⁺ z)) -associative-mul-ℚ⁺ = - associative-mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ -``` - -### The positive product of positive rational numbers is commutative - -```agda -commutative-mul-ℚ⁺ : (x y : ℚ⁺) → (x *ℚ⁺ y) = (y *ℚ⁺ x) -commutative-mul-ℚ⁺ = - commutative-mul-Commutative-Submonoid - commutative-monoid-mul-ℚ - submonoid-mul-ℚ⁺ -``` - -### Multiplicative unit laws for positive multiplication of positive rational numbers - -```agda -left-unit-law-mul-ℚ⁺ : (x : ℚ⁺) → one-ℚ⁺ *ℚ⁺ x = x -left-unit-law-mul-ℚ⁺ = - left-unit-law-mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ - -right-unit-law-mul-ℚ⁺ : (x : ℚ⁺) → x *ℚ⁺ one-ℚ⁺ = x -right-unit-law-mul-ℚ⁺ = - right-unit-law-mul-Submonoid monoid-mul-ℚ submonoid-mul-ℚ⁺ -``` - -### The positive rational numbers are invertible elements of the multiplicative monoid of rational numbers - -```agda -module _ - (x : ℚ) (P : is-positive-ℚ x) - where - - opaque - unfolding mul-ℚ - - inv-is-positive-ℚ : ℚ - pr1 inv-is-positive-ℚ = inv-is-positive-fraction-ℤ (fraction-ℚ x) P - pr2 inv-is-positive-ℚ = - is-reduced-inv-is-positive-fraction-ℤ - ( fraction-ℚ x) - ( P) - ( is-reduced-fraction-ℚ x) - - left-inverse-law-mul-is-positive-ℚ : inv-is-positive-ℚ *ℚ x = one-ℚ - left-inverse-law-mul-is-positive-ℚ = - ( eq-ℚ-sim-fraction-ℤ - ( mul-fraction-ℤ - ( inv-is-positive-fraction-ℤ (fraction-ℚ x) P) - ( fraction-ℚ x)) - ( one-fraction-ℤ) - ( left-inverse-law-mul-is-positive-fraction-ℤ (fraction-ℚ x) P)) ∙ - ( is-retraction-rational-fraction-ℚ one-ℚ) - - right-inverse-law-mul-is-positive-ℚ : x *ℚ inv-is-positive-ℚ = one-ℚ - right-inverse-law-mul-is-positive-ℚ = - (commutative-mul-ℚ x _) ∙ (left-inverse-law-mul-is-positive-ℚ) - - eq-numerator-inv-denominator-is-positive-ℚ : - numerator-ℚ (inv-is-positive-ℚ) = denominator-ℚ x - eq-numerator-inv-denominator-is-positive-ℚ = refl - - eq-denominator-inv-numerator-is-positive-ℚ : - denominator-ℚ (inv-is-positive-ℚ) = numerator-ℚ x - eq-denominator-inv-numerator-is-positive-ℚ = refl - - is-mul-invertible-is-positive-ℚ : is-invertible-element-Monoid monoid-mul-ℚ x - pr1 is-mul-invertible-is-positive-ℚ = inv-is-positive-ℚ - pr1 (pr2 is-mul-invertible-is-positive-ℚ) = - right-inverse-law-mul-is-positive-ℚ - pr2 (pr2 is-mul-invertible-is-positive-ℚ) = - left-inverse-law-mul-is-positive-ℚ -``` - -### Multiplication on the positive rational numbers distributes over addition - -```agda -module _ - (x y z : ℚ⁺) - where - - left-distributive-mul-add-ℚ⁺ : x *ℚ⁺ (y +ℚ⁺ z) = (x *ℚ⁺ y) +ℚ⁺ (x *ℚ⁺ z) - left-distributive-mul-add-ℚ⁺ = - eq-ℚ⁺ - ( left-distributive-mul-add-ℚ - ( rational-ℚ⁺ x) - ( rational-ℚ⁺ y) - ( rational-ℚ⁺ z)) - - right-distributive-mul-add-ℚ⁺ : (x +ℚ⁺ y) *ℚ⁺ z = (x *ℚ⁺ z) +ℚ⁺ (y *ℚ⁺ z) - right-distributive-mul-add-ℚ⁺ = - eq-ℚ⁺ - ( right-distributive-mul-add-ℚ - ( rational-ℚ⁺ x) - ( rational-ℚ⁺ y) - ( rational-ℚ⁺ z)) -``` - -### The strict inequality on positive rational numbers - -```agda -le-prop-ℚ⁺ : ℚ⁺ → ℚ⁺ → Prop lzero -le-prop-ℚ⁺ x y = le-ℚ-Prop (rational-ℚ⁺ x) (rational-ℚ⁺ y) - -le-ℚ⁺ : ℚ⁺ → ℚ⁺ → UU lzero -le-ℚ⁺ x y = type-Prop (le-prop-ℚ⁺ x y) - -is-prop-le-ℚ⁺ : (x y : ℚ⁺) → is-prop (le-ℚ⁺ x y) -is-prop-le-ℚ⁺ x y = is-prop-type-Prop (le-prop-ℚ⁺ x y) - -transitive-le-ℚ⁺ : is-transitive le-ℚ⁺ -transitive-le-ℚ⁺ x y z = - transitive-le-ℚ (rational-ℚ⁺ x) (rational-ℚ⁺ y) (rational-ℚ⁺ z) - -strictly-preordered-set-ℚ⁺ : Strictly-Preordered-Set lzero lzero -pr1 strictly-preordered-set-ℚ⁺ = set-ℚ⁺ -pr2 strictly-preordered-set-ℚ⁺ = - ( le-prop-ℚ⁺) , - ( irreflexive-le-ℚ ∘ rational-ℚ⁺) , - ( transitive-le-ℚ⁺) - -strict-preorder-ℚ⁺ : Strict-Preorder lzero lzero -strict-preorder-ℚ⁺ = - strict-preorder-Strictly-Preordered-Set strictly-preordered-set-ℚ⁺ -``` - -### The inequality on positive rational numbers - -```agda -decidable-total-order-ℚ⁺ : Decidable-Total-Order lzero lzero -decidable-total-order-ℚ⁺ = - decidable-total-order-Decidable-Total-Suborder - ℚ-Decidable-Total-Order - is-positive-prop-ℚ - -poset-ℚ⁺ : Poset lzero lzero -poset-ℚ⁺ = poset-Decidable-Total-Order decidable-total-order-ℚ⁺ - -preorder-ℚ⁺ : Preorder lzero lzero -preorder-ℚ⁺ = preorder-Poset poset-ℚ⁺ - -is-total-leq-ℚ⁺ : is-total-Poset poset-ℚ⁺ -is-total-leq-ℚ⁺ = - is-total-poset-Decidable-Total-Order decidable-total-order-ℚ⁺ - -is-decidable-leq-ℚ⁺ : is-decidable-leq-Poset poset-ℚ⁺ -is-decidable-leq-ℚ⁺ = - is-decidable-poset-Decidable-Total-Order decidable-total-order-ℚ⁺ - -leq-prop-ℚ⁺ : ℚ⁺ → ℚ⁺ → Prop lzero -leq-prop-ℚ⁺ = leq-prop-Poset poset-ℚ⁺ - -leq-ℚ⁺ : ℚ⁺ → ℚ⁺ → UU lzero -leq-ℚ⁺ = leq-Poset poset-ℚ⁺ - -is-prop-leq-ℚ⁺ : (x y : ℚ⁺) → is-prop (leq-ℚ⁺ x y) -is-prop-leq-ℚ⁺ x y = is-prop-type-Prop (leq-prop-ℚ⁺ x y) - -refl-leq-ℚ⁺ : is-reflexive leq-ℚ⁺ -refl-leq-ℚ⁺ = refl-leq-Poset poset-ℚ⁺ - -transitive-leq-ℚ⁺ : is-transitive leq-ℚ⁺ -transitive-leq-ℚ⁺ = transitive-leq-Poset poset-ℚ⁺ - -antisymmetric-leq-ℚ⁺ : is-antisymmetric leq-ℚ⁺ -antisymmetric-leq-ℚ⁺ = antisymmetric-leq-Poset poset-ℚ⁺ - -leq-le-ℚ⁺ : {x y : ℚ⁺} → le-ℚ⁺ x y → leq-ℚ⁺ x y -leq-le-ℚ⁺ {x} {y} = leq-le-ℚ {rational-ℚ⁺ x} {rational-ℚ⁺ y} -``` - -### The minimum between two positive rational numbers - -```agda -min-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ -min-ℚ⁺ = min-Decidable-Total-Order decidable-total-order-ℚ⁺ - -abstract - associative-min-ℚ⁺ : - (x y z : ℚ⁺) → min-ℚ⁺ (min-ℚ⁺ x y) z = min-ℚ⁺ x (min-ℚ⁺ y z) - associative-min-ℚ⁺ = - associative-min-Decidable-Total-Order decidable-total-order-ℚ⁺ - - commutative-min-ℚ⁺ : (x y : ℚ⁺) → min-ℚ⁺ x y = min-ℚ⁺ y x - commutative-min-ℚ⁺ = - commutative-min-Decidable-Total-Order decidable-total-order-ℚ⁺ - - idempotent-min-ℚ⁺ : (x : ℚ⁺) → min-ℚ⁺ x x = x - idempotent-min-ℚ⁺ = - idempotent-min-Decidable-Total-Order decidable-total-order-ℚ⁺ - - leq-left-min-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ (min-ℚ⁺ x y) x - leq-left-min-ℚ⁺ = leq-left-min-Decidable-Total-Order decidable-total-order-ℚ⁺ - - leq-right-min-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ (min-ℚ⁺ x y) y - leq-right-min-ℚ⁺ = - leq-right-min-Decidable-Total-Order decidable-total-order-ℚ⁺ -``` - -### The maximum between two positive rational numbers - -```agda -max-ℚ⁺ : ℚ⁺ → ℚ⁺ → ℚ⁺ -max-ℚ⁺ = max-Decidable-Total-Order decidable-total-order-ℚ⁺ - -abstract - associative-max-ℚ⁺ : - (x y z : ℚ⁺) → max-ℚ⁺ (max-ℚ⁺ x y) z = max-ℚ⁺ x (max-ℚ⁺ y z) - associative-max-ℚ⁺ = - associative-max-Decidable-Total-Order decidable-total-order-ℚ⁺ - - commutative-max-ℚ⁺ : (x y : ℚ⁺) → max-ℚ⁺ x y = max-ℚ⁺ y x - commutative-max-ℚ⁺ = - commutative-max-Decidable-Total-Order decidable-total-order-ℚ⁺ - - idempotent-max-ℚ⁺ : (x : ℚ⁺) → max-ℚ⁺ x x = x - idempotent-max-ℚ⁺ = - idempotent-max-Decidable-Total-Order decidable-total-order-ℚ⁺ - - leq-left-max-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ x (max-ℚ⁺ x y) - leq-left-max-ℚ⁺ = leq-left-max-Decidable-Total-Order decidable-total-order-ℚ⁺ - - leq-right-max-ℚ⁺ : (x y : ℚ⁺) → leq-ℚ⁺ y (max-ℚ⁺ x y) - leq-right-max-ℚ⁺ = - leq-right-max-Decidable-Total-Order decidable-total-order-ℚ⁺ -``` - -### The sum of two positive rational numbers is greater than each of them - -```agda -module _ - (x y : ℚ⁺) - where - - le-left-add-ℚ⁺ : le-ℚ⁺ x (x +ℚ⁺ y) - le-left-add-ℚ⁺ = - tr - ( λ z → le-ℚ z ((rational-ℚ⁺ x) +ℚ (rational-ℚ⁺ y))) - ( right-unit-law-add-ℚ (rational-ℚ⁺ x)) - ( preserves-le-right-add-ℚ - ( rational-ℚ⁺ x) - ( zero-ℚ) - ( rational-ℚ⁺ y) - ( le-zero-is-positive-ℚ - ( rational-ℚ⁺ y) - ( is-positive-rational-ℚ⁺ y))) - - le-right-add-ℚ⁺ : le-ℚ⁺ y (x +ℚ⁺ y) - le-right-add-ℚ⁺ = - tr - ( λ z → le-ℚ z ((rational-ℚ⁺ x) +ℚ (rational-ℚ⁺ y))) - ( left-unit-law-add-ℚ (rational-ℚ⁺ y)) - ( preserves-le-left-add-ℚ - ( rational-ℚ⁺ y) - ( zero-ℚ) - ( rational-ℚ⁺ x) - ( le-zero-is-positive-ℚ - ( rational-ℚ⁺ x) - ( is-positive-rational-ℚ⁺ x))) -``` - -### The positive difference of strictly inequal positive rational numbers - -```agda -module _ - (x y : ℚ⁺) (H : le-ℚ⁺ x y) - where - - le-diff-ℚ⁺ : ℚ⁺ - le-diff-ℚ⁺ = positive-diff-le-ℚ (rational-ℚ⁺ x) (rational-ℚ⁺ y) H - - left-diff-law-add-ℚ⁺ : le-diff-ℚ⁺ +ℚ⁺ x = y - left-diff-law-add-ℚ⁺ = - eq-ℚ⁺ - ( ( associative-add-ℚ - ( rational-ℚ⁺ y) - ( neg-ℚ (rational-ℚ⁺ x)) - ( rational-ℚ⁺ x)) ∙ - ( ( ap - ( (rational-ℚ⁺ y) +ℚ_) - ( left-inverse-law-add-ℚ (rational-ℚ⁺ x))) ∙ - ( right-unit-law-add-ℚ (rational-ℚ⁺ y)))) - - right-diff-law-add-ℚ⁺ : x +ℚ⁺ le-diff-ℚ⁺ = y - right-diff-law-add-ℚ⁺ = - ( eq-ℚ⁺ - ( commutative-add-ℚ - ( rational-ℚ⁺ x) - ( rational-ℚ⁺ le-diff-ℚ⁺))) ∙ - ( left-diff-law-add-ℚ⁺) - - le-le-diff-ℚ⁺ : le-ℚ⁺ le-diff-ℚ⁺ y - le-le-diff-ℚ⁺ = - tr - ( le-ℚ⁺ le-diff-ℚ⁺) - ( left-diff-law-add-ℚ⁺) - ( le-left-add-ℚ⁺ le-diff-ℚ⁺ x) -``` - -### Multiplication by a positive rational number preserves strict inequality - -```agda -opaque - unfolding le-ℚ-Prop - unfolding mul-ℚ - - preserves-le-left-mul-ℚ⁺ : - (p : ℚ⁺) (q r : ℚ) → - le-ℚ q r → - le-ℚ (rational-ℚ⁺ p *ℚ q) (rational-ℚ⁺ p *ℚ r) - preserves-le-left-mul-ℚ⁺ - p⁺@((p@(p-num , p-denom , p-denom-pos) , _) , p-num-pos) - q@((q-num , q-denom , _) , _) - r@((r-num , r-denom , _) , _) - qImports + +```agda +open import elementary-number-theory.inequality-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 + +open import foundation.binary-relations +open import foundation.dependent-pair-types +open import foundation.function-types +open import foundation.propositions +open import foundation.universe-levels + +open import order-theory.strict-preorders +open import order-theory.strictly-preordered-sets +``` + +
+ +## Idea + +The +{{#concept "standard strict ordering" Disambiguation="positive rational numbers" Agda=le-ℚ⁺}} +on the +[positive rational numbers](elementary-number-theory.positive-rational-numbers.md) +is inherited from the +[standard strict ordering](elementary-number-theory.strict-inequality-rational-numbers.md) +on [rational numbers](elementary-number-theory.rational-numbers.md). + +## Definition + +```agda +le-prop-ℚ⁺ : ℚ⁺ → ℚ⁺ → Prop lzero +le-prop-ℚ⁺ x y = le-ℚ-Prop (rational-ℚ⁺ x) (rational-ℚ⁺ y) + +le-ℚ⁺ : ℚ⁺ → ℚ⁺ → UU lzero +le-ℚ⁺ x y = type-Prop (le-prop-ℚ⁺ x y) + +is-prop-le-ℚ⁺ : (x y : ℚ⁺) → is-prop (le-ℚ⁺ x y) +is-prop-le-ℚ⁺ x y = is-prop-type-Prop (le-prop-ℚ⁺ x y) +``` + +## Properties + +### Strict inequality is transitive + +```agda +transitive-le-ℚ⁺ : is-transitive le-ℚ⁺ +transitive-le-ℚ⁺ x y z = + transitive-le-ℚ (rational-ℚ⁺ x) (rational-ℚ⁺ y) (rational-ℚ⁺ z) +``` + +### If `a < b`, then `a ≤ b` + +```agda +leq-le-ℚ⁺ : {x y : ℚ⁺} → le-ℚ⁺ x y → leq-ℚ⁺ x y +leq-le-ℚ⁺ {x} {y} = leq-le-ℚ {rational-ℚ⁺ x} {rational-ℚ⁺ y} +``` + +### The strictly preordered set of positive rational numbers + +```agda +strictly-preordered-set-ℚ⁺ : Strictly-Preordered-Set lzero lzero +pr1 strictly-preordered-set-ℚ⁺ = set-ℚ⁺ +pr2 strictly-preordered-set-ℚ⁺ = + ( le-prop-ℚ⁺) , + ( irreflexive-le-ℚ ∘ rational-ℚ⁺) , + ( transitive-le-ℚ⁺) + +strict-preorder-ℚ⁺ : Strict-Preorder lzero lzero +strict-preorder-ℚ⁺ = + strict-preorder-Strictly-Preordered-Set strictly-preordered-set-ℚ⁺ +``` + +### There is no least positive rational number + +```agda +opaque + mediant-zero-ℚ⁺ : ℚ⁺ → ℚ⁺ + mediant-zero-ℚ⁺ x = + ( mediant-ℚ zero-ℚ (rational-ℚ⁺ x) , + is-positive-le-zero-ℚ + ( mediant-ℚ zero-ℚ (rational-ℚ⁺ x)) + ( le-left-mediant-ℚ + ( zero-ℚ) + ( rational-ℚ⁺ x) + ( le-zero-is-positive-ℚ (rational-ℚ⁺ x) (is-positive-rational-ℚ⁺ x)))) + + le-mediant-zero-ℚ⁺ : (x : ℚ⁺) → le-ℚ⁺ (mediant-zero-ℚ⁺ x) x + le-mediant-zero-ℚ⁺ x = + le-right-mediant-ℚ + ( zero-ℚ) + ( rational-ℚ⁺ x) + ( le-zero-is-positive-ℚ (rational-ℚ⁺ x) (is-positive-rational-ℚ⁺ x)) +``` diff --git a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md index 7978b4ae73..76fa824cce 100644 --- a/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.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.constant-maps diff --git a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md index 17ab1e237c..3f7b863d42 100644 --- a/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-approximations-pseudometric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.cauchy-approximations-pseudometric-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 diff --git a/src/metric-spaces/convergent-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/convergent-cauchy-approximations-metric-spaces.lagda.md index 4f90c77140..53b0dbe5b7 100644 --- a/src/metric-spaces/convergent-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/convergent-cauchy-approximations-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.convergent-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 diff --git a/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md b/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md index 1daedd65ed..3e6705b776 100644 --- a/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-cauchy-approximations-pseudometric-spaces.lagda.md @@ -7,6 +7,8 @@ module metric-spaces.limits-of-cauchy-approximations-pseudometric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers +open import elementary-number-theory.minimum-positive-rational-numbers open import elementary-number-theory.positive-rational-numbers open import foundation.dependent-pair-types diff --git a/src/metric-spaces/metric-spaces.lagda.md b/src/metric-spaces/metric-spaces.lagda.md index 8e94a3e7a8..c507203765 100644 --- a/src/metric-spaces/metric-spaces.lagda.md +++ b/src/metric-spaces/metric-spaces.lagda.md @@ -7,8 +7,10 @@ module metric-spaces.metric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers +open import elementary-number-theory.inequality-positive-rational-numbers open import elementary-number-theory.positive-rational-numbers -open import elementary-number-theory.strict-inequality-rational-numbers +open import elementary-number-theory.strict-inequality-positive-rational-numbers open import foundation.binary-relations open import foundation.coproduct-types diff --git a/src/metric-spaces/monotonic-rational-neighborhood-relations.lagda.md b/src/metric-spaces/monotonic-rational-neighborhood-relations.lagda.md index adeb324aa5..14e15aa445 100644 --- a/src/metric-spaces/monotonic-rational-neighborhood-relations.lagda.md +++ b/src/metric-spaces/monotonic-rational-neighborhood-relations.lagda.md @@ -8,6 +8,7 @@ module metric-spaces.monotonic-rational-neighborhood-relations where ```agda open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.strict-inequality-positive-rational-numbers open import foundation.propositions open import foundation.universe-levels diff --git a/src/metric-spaces/pseudometric-spaces.lagda.md b/src/metric-spaces/pseudometric-spaces.lagda.md index 6209bdb36e..4f7ee7c53d 100644 --- a/src/metric-spaces/pseudometric-spaces.lagda.md +++ b/src/metric-spaces/pseudometric-spaces.lagda.md @@ -7,7 +7,10 @@ module metric-spaces.pseudometric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers +open import elementary-number-theory.inequality-positive-rational-numbers open import elementary-number-theory.positive-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 diff --git a/src/metric-spaces/saturated-rational-neighborhood-relations.lagda.md b/src/metric-spaces/saturated-rational-neighborhood-relations.lagda.md index e2e49e3163..15a417ce7d 100644 --- a/src/metric-spaces/saturated-rational-neighborhood-relations.lagda.md +++ b/src/metric-spaces/saturated-rational-neighborhood-relations.lagda.md @@ -7,8 +7,10 @@ module metric-spaces.saturated-rational-neighborhood-relations where
Imports ```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.strict-inequality-positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-functions diff --git a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md index c48a4bb7ef..289635cb19 100644 --- a/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md +++ b/src/metric-spaces/similarity-of-elements-pseudometric-spaces.lagda.md @@ -9,6 +9,7 @@ module metric-spaces.similarity-of-elements-pseudometric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.positive-rational-numbers open import foundation.binary-relations diff --git a/src/metric-spaces/triangular-rational-neighborhood-relations.lagda.md b/src/metric-spaces/triangular-rational-neighborhood-relations.lagda.md index f1163142b7..cb3e7eef4f 100644 --- a/src/metric-spaces/triangular-rational-neighborhood-relations.lagda.md +++ b/src/metric-spaces/triangular-rational-neighborhood-relations.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.triangular-rational-neighborhood-relations where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.positive-rational-numbers open import foundation.binary-relations diff --git a/src/real-numbers/lower-dedekind-real-numbers.lagda.md b/src/real-numbers/lower-dedekind-real-numbers.lagda.md index f48a04eb47..4610655128 100644 --- a/src/real-numbers/lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/lower-dedekind-real-numbers.lagda.md @@ -9,6 +9,7 @@ module real-numbers.lower-dedekind-real-numbers where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers diff --git a/src/real-numbers/upper-dedekind-real-numbers.lagda.md b/src/real-numbers/upper-dedekind-real-numbers.lagda.md index 2b0dcc2fdb..0f2462c57c 100644 --- a/src/real-numbers/upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/upper-dedekind-real-numbers.lagda.md @@ -9,6 +9,7 @@ module real-numbers.upper-dedekind-real-numbers where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers From 903e8d0e62d5198e99c23d039936d6de29e607e8 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 1 Oct 2025 14:37:52 -0700 Subject: [PATCH 31/59] Move more out of nonnegative --- ...tion-nonnegative-rational-numbers.lagda.md | 31 ++++++++ ...tion-nonnegative-rational-numbers.lagda.md | 46 ++++++++++++ .../nonnegative-rational-numbers.lagda.md | 72 ------------------- 3 files changed, 77 insertions(+), 72 deletions(-) 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 22f614aab8..8600c9f0f2 100644 --- a/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md @@ -8,11 +8,15 @@ module elementary-number-theory.addition-nonnegative-rational-numbers where ```agda open import elementary-number-theory.addition-rational-numbers +open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.nonnegative-integer-fractions open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.rational-numbers open import foundation.dependent-pair-types +open import foundation.transport-along-identifications + +open import order-theory.inflationary-maps-posets ```
@@ -52,3 +56,30 @@ infixl 35 _+ℚ⁰⁺_ _+ℚ⁰⁺_ : ℚ⁰⁺ → ℚ⁰⁺ → ℚ⁰⁺ _+ℚ⁰⁺_ = add-ℚ⁰⁺ ``` + +## Properties + +### Addition of a nonnegative rational number is an increasing map + +```agda +abstract + is-inflationary-map-left-add-rational-ℚ⁰⁺ : + (p : ℚ⁰⁺) → is-inflationary-map-Poset ℚ-Poset (rational-ℚ⁰⁺ p +ℚ_) + is-inflationary-map-left-add-rational-ℚ⁰⁺ (p , nonneg-p) q = + tr + ( λ r → leq-ℚ r (p +ℚ q)) + ( left-unit-law-add-ℚ q) + ( preserves-leq-left-add-ℚ + ( q) + ( zero-ℚ) + ( p) + ( leq-zero-is-nonnegative-ℚ p nonneg-p)) + + is-inflationary-map-right-add-rational-ℚ⁰⁺ : + (p : ℚ⁰⁺) → is-inflationary-map-Poset ℚ-Poset (_+ℚ rational-ℚ⁰⁺ p) + is-inflationary-map-right-add-rational-ℚ⁰⁺ p q = + tr + ( leq-ℚ q) + ( commutative-add-ℚ (rational-ℚ⁰⁺ p) q) + ( is-inflationary-map-left-add-rational-ℚ⁰⁺ p q) +``` diff --git a/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md index fcc340e9b1..448a62a71c 100644 --- a/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md @@ -9,11 +9,17 @@ module elementary-number-theory.multiplication-nonnegative-rational-numbers wher
Imports ```agda +open import elementary-number-theory.inequality-integers +open import elementary-number-theory.inequality-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 open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.nonnegative-integer-fractions open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.rational-numbers +open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.identity-types ``` @@ -65,3 +71,43 @@ abstract commutative-mul-ℚ⁰⁺ : (p q : ℚ⁰⁺) → p *ℚ⁰⁺ q = q *ℚ⁰⁺ p commutative-mul-ℚ⁰⁺ (p , _) (q , _) = eq-ℚ⁰⁺ (commutative-mul-ℚ p q) ``` + +### Multiplication by a nonnegative rational number preserves inequality + +```agda +opaque + unfolding leq-ℚ-Prop + unfolding mul-ℚ + + preserves-leq-right-mul-ℚ⁰⁺ : + (p : ℚ⁰⁺) (q r : ℚ) → leq-ℚ q r → + leq-ℚ (q *ℚ rational-ℚ⁰⁺ p) (r *ℚ rational-ℚ⁰⁺ p) + preserves-leq-right-mul-ℚ⁰⁺ + p⁺@((p@(np , dp , pos-dp) , _) , nonneg-np) + (q@(nq , dq , _) , _) + (r@(nr , dr , _) , _) + q≤r = + preserves-leq-rational-fraction-ℤ + ( mul-fraction-ℤ q p) + ( mul-fraction-ℤ r p) + ( binary-tr + ( leq-ℤ) + ( interchange-law-mul-mul-ℤ _ _ _ _) + ( interchange-law-mul-mul-ℤ _ _ _ _) + ( preserves-leq-left-mul-nonnegative-ℤ + ( np *ℤ dp , + is-nonnegative-mul-nonnegative-positive-ℤ nonneg-np pos-dp) + ( nq *ℤ dr) + ( nr *ℤ dq) + ( q≤r))) + + preserves-leq-left-mul-ℚ⁰⁺ : + (p : ℚ⁰⁺) (q r : ℚ) → leq-ℚ q r → + leq-ℚ (rational-ℚ⁰⁺ p *ℚ q) (rational-ℚ⁰⁺ p *ℚ r) + preserves-leq-left-mul-ℚ⁰⁺ p q r q≤r = + binary-tr + ( leq-ℚ) + ( commutative-mul-ℚ q (rational-ℚ⁰⁺ p)) + ( commutative-mul-ℚ r (rational-ℚ⁰⁺ p)) + ( preserves-leq-right-mul-ℚ⁰⁺ p q r q≤r) +``` diff --git a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md index f0873245eb..14164810a6 100644 --- a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md @@ -16,10 +16,6 @@ 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 -open import elementary-number-theory.multiplication-integer-fractions -open import elementary-number-theory.multiplication-integers -open import elementary-number-theory.multiplication-positive-and-negative-integers -open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.nonnegative-integer-fractions open import elementary-number-theory.nonnegative-integers open import elementary-number-theory.positive-and-negative-integers @@ -29,7 +25,6 @@ open import elementary-number-theory.rational-numbers open import elementary-number-theory.reduced-integer-fractions open import elementary-number-theory.strict-inequality-rational-numbers -open import foundation.binary-transport open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.logical-equivalences @@ -38,8 +33,6 @@ open import foundation.sets open import foundation.subtypes open import foundation.transport-along-identifications open import foundation.universe-levels - -open import order-theory.inflationary-maps-posets ```
@@ -217,71 +210,6 @@ positive-succ-ℚ⁰⁺ : ℚ⁰⁺ → ℚ⁺ positive-succ-ℚ⁰⁺ (q , H) = (succ-ℚ q , is-positive-succ-is-nonnegative-ℚ q H) ``` -### Multiplication by a nonnegative rational number preserves inequality - -```agda -opaque - unfolding leq-ℚ-Prop - unfolding mul-ℚ - - preserves-leq-right-mul-ℚ⁰⁺ : - (p : ℚ⁰⁺) (q r : ℚ) → leq-ℚ q r → - leq-ℚ (q *ℚ rational-ℚ⁰⁺ p) (r *ℚ rational-ℚ⁰⁺ p) - preserves-leq-right-mul-ℚ⁰⁺ - p⁺@((p@(np , dp , pos-dp) , _) , nonneg-np) - (q@(nq , dq , _) , _) - (r@(nr , dr , _) , _) - q≤r = - preserves-leq-rational-fraction-ℤ - ( mul-fraction-ℤ q p) - ( mul-fraction-ℤ r p) - ( binary-tr - ( leq-ℤ) - ( interchange-law-mul-mul-ℤ _ _ _ _) - ( interchange-law-mul-mul-ℤ _ _ _ _) - ( preserves-leq-left-mul-nonnegative-ℤ - ( np *ℤ dp , - is-nonnegative-mul-nonnegative-positive-ℤ nonneg-np pos-dp) - ( nq *ℤ dr) - ( nr *ℤ dq) - ( q≤r))) - - preserves-leq-left-mul-ℚ⁰⁺ : - (p : ℚ⁰⁺) (q r : ℚ) → leq-ℚ q r → - leq-ℚ (rational-ℚ⁰⁺ p *ℚ q) (rational-ℚ⁰⁺ p *ℚ r) - preserves-leq-left-mul-ℚ⁰⁺ p q r q≤r = - binary-tr - ( leq-ℚ) - ( commutative-mul-ℚ q (rational-ℚ⁰⁺ p)) - ( commutative-mul-ℚ r (rational-ℚ⁰⁺ p)) - ( preserves-leq-right-mul-ℚ⁰⁺ p q r q≤r) -``` - -### Addition of a nonnegative rational number is an increasing map - -```agda -abstract - is-inflationary-map-left-add-rational-ℚ⁰⁺ : - (p : ℚ⁰⁺) → is-inflationary-map-Poset ℚ-Poset (rational-ℚ⁰⁺ p +ℚ_) - is-inflationary-map-left-add-rational-ℚ⁰⁺ (p , nonneg-p) q = - tr - ( λ r → leq-ℚ r (p +ℚ q)) - ( left-unit-law-add-ℚ q) - ( preserves-leq-left-add-ℚ - ( q) - ( zero-ℚ) - ( p) - ( leq-zero-is-nonnegative-ℚ p nonneg-p)) - - is-inflationary-map-right-add-rational-ℚ⁰⁺ : - (p : ℚ⁰⁺) → is-inflationary-map-Poset ℚ-Poset (_+ℚ rational-ℚ⁰⁺ p) - is-inflationary-map-right-add-rational-ℚ⁰⁺ p q = - tr - ( leq-ℚ q) - ( commutative-add-ℚ (rational-ℚ⁰⁺ p) q) - ( is-inflationary-map-left-add-rational-ℚ⁰⁺ p q) -``` - ### `x ≤ y` if and only if `y - x` is nonnegative ```agda From 0d12e8a176f028d788ac796f7b051105903f6063 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 1 Oct 2025 15:22:10 -0700 Subject: [PATCH 32/59] Update dependencies --- .../archimedean-property-positive-rational-numbers.lagda.md | 6 ++++-- .../arithmetic-sequences-positive-rational-numbers.lagda.md | 3 +++ ...bernoullis-inequality-positive-rational-numbers.lagda.md | 3 +++ .../closed-intervals-rational-numbers.lagda.md | 1 + .../geometric-sequences-positive-rational-numbers.lagda.md | 2 ++ ...ltiplicative-group-of-positive-rational-numbers.lagda.md | 3 +++ .../multiplicative-group-of-rational-numbers.lagda.md | 1 + .../negative-rational-numbers.lagda.md | 1 + .../nonnegative-rational-numbers.lagda.md | 1 + .../squares-rational-numbers.lagda.md | 1 + .../unit-fractions-rational-numbers.lagda.md | 2 ++ src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md | 2 ++ src/metric-spaces/discrete-metric-spaces.lagda.md | 1 + .../elements-at-bounded-distance-metric-spaces.lagda.md | 1 + src/metric-spaces/indexed-sums-metric-spaces.lagda.md | 1 + .../limits-of-sequences-metric-spaces.lagda.md | 1 + .../lipschitz-functions-metric-spaces.lagda.md | 1 + src/metric-spaces/located-metric-spaces.lagda.md | 1 + ...of-cauchy-approximations-complete-metric-spaces.lagda.md | 1 + ...ic-space-of-cauchy-approximations-metric-spaces.lagda.md | 1 + ...-convergent-cauchy-approximations-metric-spaces.lagda.md | 3 +++ src/metric-spaces/metric-space-of-rational-numbers.lagda.md | 2 ++ ...trics-of-metric-spaces-are-uniformly-continuous.lagda.md | 1 + src/metric-spaces/metrics.lagda.md | 1 + src/metric-spaces/open-subsets-metric-spaces.lagda.md | 1 + src/metric-spaces/rational-approximations-of-zero.lagda.md | 2 ++ src/metric-spaces/rational-cauchy-approximations.lagda.md | 1 + .../addition-lower-dedekind-real-numbers.lagda.md | 1 + src/real-numbers/addition-real-numbers.lagda.md | 1 + .../addition-upper-dedekind-real-numbers.lagda.md | 1 + .../arithmetically-located-dedekind-cuts.lagda.md | 1 + .../cauchy-completeness-dedekind-real-numbers.lagda.md | 1 + .../inhabited-totally-bounded-subsets-real-numbers.lagda.md | 1 + .../maximum-finite-families-real-numbers.lagda.md | 1 + src/real-numbers/metric-space-of-real-numbers.lagda.md | 3 ++- src/real-numbers/nonnegative-real-numbers.lagda.md | 1 + .../saturation-inequality-real-numbers.lagda.md | 1 + src/real-numbers/suprema-families-real-numbers.lagda.md | 1 + 38 files changed, 55 insertions(+), 3 deletions(-) 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 532e026317..3affd486cf 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 @@ -11,12 +11,14 @@ module elementary-number-theory.archimedean-property-positive-rational-numbers w ```agda 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 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 @@ -34,9 +36,9 @@ open import foundation.transport-along-identifications The {{#concept "Archimedean property" Disambiguation="positive rational numbers" Agda=archimedean-property-ℚ⁺}} -of `ℚ⁺` is that for any two +of the [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) -`x y : ℚ⁺`, there is a +is that for any `x y : ℚ⁺`, there is a [nonzero natural number](elementary-number-theory.nonzero-natural-numbers.md) `n` such that `y` is [less than](elementary-number-theory.strict-inequality-rational-numbers.md) `n` diff --git a/src/elementary-number-theory/arithmetic-sequences-positive-rational-numbers.lagda.md b/src/elementary-number-theory/arithmetic-sequences-positive-rational-numbers.lagda.md index 0950117458..5dd59a8bb8 100644 --- a/src/elementary-number-theory/arithmetic-sequences-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/arithmetic-sequences-positive-rational-numbers.lagda.md @@ -9,15 +9,18 @@ module elementary-number-theory.arithmetic-sequences-positive-rational-numbers w
Imports ```agda +open import elementary-number-theory.addition-positive-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.archimedean-property-rational-numbers +open import elementary-number-theory.inequality-positive-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.integers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.natural-numbers open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-functions diff --git a/src/elementary-number-theory/bernoullis-inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/bernoullis-inequality-positive-rational-numbers.lagda.md index 1004092bc1..cc0f9e3819 100644 --- a/src/elementary-number-theory/bernoullis-inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/bernoullis-inequality-positive-rational-numbers.lagda.md @@ -9,9 +9,12 @@ module elementary-number-theory.bernoullis-inequality-positive-rational-numbers
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.arithmetic-sequences-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-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 diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 61449c7485..f622a3cbef 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -13,6 +13,7 @@ open import elementary-number-theory.decidable-total-order-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-positive-rational-numbers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.negative-rational-numbers open import elementary-number-theory.positive-and-negative-rational-numbers diff --git a/src/elementary-number-theory/geometric-sequences-positive-rational-numbers.lagda.md b/src/elementary-number-theory/geometric-sequences-positive-rational-numbers.lagda.md index 69f19c0b20..e4df3007d2 100644 --- a/src/elementary-number-theory/geometric-sequences-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/geometric-sequences-positive-rational-numbers.lagda.md @@ -13,11 +13,13 @@ open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.additive-group-of-rational-numbers open import elementary-number-theory.arithmetic-sequences-positive-rational-numbers 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.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-binary-functions 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 69c04768ad..9377219c99 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 @@ -10,13 +10,16 @@ module elementary-number-theory.multiplicative-group-of-positive-rational-number ```agda open import elementary-number-theory.inequality-integers +open import elementary-number-theory.inequality-positive-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.multiplication-integers +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.positive-rational-numbers open import elementary-number-theory.rational-numbers 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.binary-transport 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 9fd3c96f59..e768f592df 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,6 +9,7 @@ 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.multiplicative-monoid-of-rational-numbers open import elementary-number-theory.nonzero-rational-numbers open import elementary-number-theory.positive-rational-numbers diff --git a/src/elementary-number-theory/negative-rational-numbers.lagda.md b/src/elementary-number-theory/negative-rational-numbers.lagda.md index 4866997b19..d408cbfddd 100644 --- a/src/elementary-number-theory/negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/negative-rational-numbers.lagda.md @@ -13,6 +13,7 @@ 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.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-integers diff --git a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md index 14164810a6..55031b2613 100644 --- a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md @@ -9,6 +9,7 @@ module elementary-number-theory.nonnegative-rational-numbers where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.cross-multiplication-difference-integer-fractions open import elementary-number-theory.difference-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 f5695768ca..fd41bb6371 100644 --- a/src/elementary-number-theory/squares-rational-numbers.lagda.md +++ b/src/elementary-number-theory/squares-rational-numbers.lagda.md @@ -12,6 +12,7 @@ module elementary-number-theory.squares-rational-numbers where open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.multiplication-nonnegative-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 diff --git a/src/elementary-number-theory/unit-fractions-rational-numbers.lagda.md b/src/elementary-number-theory/unit-fractions-rational-numbers.lagda.md index 48171a52f4..a95f01a51c 100644 --- a/src/elementary-number-theory/unit-fractions-rational-numbers.lagda.md +++ b/src/elementary-number-theory/unit-fractions-rational-numbers.lagda.md @@ -16,6 +16,7 @@ open import elementary-number-theory.integer-fractions open import elementary-number-theory.integers open import elementary-number-theory.multiplication-integer-fractions open import elementary-number-theory.multiplication-integers +open import elementary-number-theory.multiplication-positive-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 @@ -24,6 +25,7 @@ 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-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 diff --git a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md index b098c9cdd5..6e65ba9b59 100644 --- a/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/cauchy-sequences-metric-spaces.lagda.md @@ -9,6 +9,7 @@ module metric-spaces.cauchy-sequences-metric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.archimedean-property-positive-rational-numbers open import elementary-number-theory.inequality-natural-numbers @@ -18,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-positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import elementary-number-theory.unit-fractions-rational-numbers diff --git a/src/metric-spaces/discrete-metric-spaces.lagda.md b/src/metric-spaces/discrete-metric-spaces.lagda.md index c9b1c42b19..3d2a5639d5 100644 --- a/src/metric-spaces/discrete-metric-spaces.lagda.md +++ b/src/metric-spaces/discrete-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.discrete-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.action-on-identifications-functions diff --git a/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md b/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md index 5ea2732e9a..b8aa906a32 100644 --- a/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md +++ b/src/metric-spaces/elements-at-bounded-distance-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.elements-at-bounded-distance-metric-spaces where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.positive-rational-numbers diff --git a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md index 1889a32a07..4ed15b71da 100644 --- a/src/metric-spaces/indexed-sums-metric-spaces.lagda.md +++ b/src/metric-spaces/indexed-sums-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.indexed-sums-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 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 9ecb196dbd..e4942e585e 100644 --- a/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md +++ b/src/metric-spaces/limits-of-sequences-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.limits-of-sequences-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.maximum-natural-numbers open import elementary-number-theory.natural-numbers diff --git a/src/metric-spaces/lipschitz-functions-metric-spaces.lagda.md b/src/metric-spaces/lipschitz-functions-metric-spaces.lagda.md index e3b1e61b2c..22a1d7e674 100644 --- a/src/metric-spaces/lipschitz-functions-metric-spaces.lagda.md +++ b/src/metric-spaces/lipschitz-functions-metric-spaces.lagda.md @@ -9,6 +9,7 @@ module metric-spaces.lipschitz-functions-metric-spaces where
Imports ```agda +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.positive-rational-numbers diff --git a/src/metric-spaces/located-metric-spaces.lagda.md b/src/metric-spaces/located-metric-spaces.lagda.md index 52e2e6cfe1..64aa11e62e 100644 --- a/src/metric-spaces/located-metric-spaces.lagda.md +++ b/src/metric-spaces/located-metric-spaces.lagda.md @@ -10,6 +10,7 @@ module metric-spaces.located-metric-spaces where 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.coproduct-types diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md index f5837b183e..d2d573b312 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-complete-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.metric-space-of-cauchy-approximations-complete-metric-space
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 diff --git a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md index d1b8386769..85dc63e6e8 100644 --- a/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-cauchy-approximations-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.metric-space-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 diff --git a/src/metric-spaces/metric-space-of-convergent-cauchy-approximations-metric-spaces.lagda.md b/src/metric-spaces/metric-space-of-convergent-cauchy-approximations-metric-spaces.lagda.md index cbc9fe4804..bc78937247 100644 --- a/src/metric-spaces/metric-space-of-convergent-cauchy-approximations-metric-spaces.lagda.md +++ b/src/metric-spaces/metric-space-of-convergent-cauchy-approximations-metric-spaces.lagda.md @@ -9,7 +9,10 @@ module metric-spaces.metric-space-of-convergent-cauchy-approximations-metric-spa
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers +open import elementary-number-theory.minimum-positive-rational-numbers open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.strict-inequality-positive-rational-numbers open import foundation.action-on-identifications-binary-functions open import foundation.action-on-identifications-functions diff --git a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md index b36bc78cec..3aae8a5cb1 100644 --- a/src/metric-spaces/metric-space-of-rational-numbers.lagda.md +++ b/src/metric-spaces/metric-space-of-rational-numbers.lagda.md @@ -10,11 +10,13 @@ module metric-spaces.metric-space-of-rational-numbers where ```agda open import elementary-number-theory.absolute-value-rational-numbers +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.distance-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.multiplication-nonnegative-rational-numbers +open import elementary-number-theory.multiplication-positive-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 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 32c5c91820..3d4ee234b5 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 @@ -7,6 +7,7 @@ module metric-spaces.metrics-of-metric-spaces-are-uniformly-continuous 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-rational-numbers diff --git a/src/metric-spaces/metrics.lagda.md b/src/metric-spaces/metrics.lagda.md index c67b6dfae6..fcb4b10f69 100644 --- a/src/metric-spaces/metrics.lagda.md +++ b/src/metric-spaces/metrics.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.metrics where
Imports ```agda +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 diff --git a/src/metric-spaces/open-subsets-metric-spaces.lagda.md b/src/metric-spaces/open-subsets-metric-spaces.lagda.md index a432331b93..24e0603a41 100644 --- a/src/metric-spaces/open-subsets-metric-spaces.lagda.md +++ b/src/metric-spaces/open-subsets-metric-spaces.lagda.md @@ -7,6 +7,7 @@ module metric-spaces.open-subsets-metric-spaces where
Imports ```agda +open import elementary-number-theory.minimum-positive-rational-numbers open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.positive-rational-numbers diff --git a/src/metric-spaces/rational-approximations-of-zero.lagda.md b/src/metric-spaces/rational-approximations-of-zero.lagda.md index a8070d56e7..1af8b5b5d2 100644 --- a/src/metric-spaces/rational-approximations-of-zero.lagda.md +++ b/src/metric-spaces/rational-approximations-of-zero.lagda.md @@ -10,6 +10,7 @@ module metric-spaces.rational-approximations-of-zero where ```agda open import elementary-number-theory.absolute-value-rational-numbers +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.distance-rational-numbers @@ -17,6 +18,7 @@ open import elementary-number-theory.inequality-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-positive-rational-numbers open import foundation.action-on-identifications-functions open import foundation.dependent-pair-types diff --git a/src/metric-spaces/rational-cauchy-approximations.lagda.md b/src/metric-spaces/rational-cauchy-approximations.lagda.md index 327e2cbaac..d5f5d1b432 100644 --- a/src/metric-spaces/rational-cauchy-approximations.lagda.md +++ b/src/metric-spaces/rational-cauchy-approximations.lagda.md @@ -8,6 +8,7 @@ module metric-spaces.rational-cauchy-approximations where ```agda open import elementary-number-theory.absolute-value-rational-numbers +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.distance-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.positive-rational-numbers 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 dea0a77ec0..6d2c68d957 100644 --- a/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-lower-dedekind-real-numbers.lagda.md @@ -14,6 +14,7 @@ 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-positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-functions diff --git a/src/real-numbers/addition-real-numbers.lagda.md b/src/real-numbers/addition-real-numbers.lagda.md index 5ad471a273..6f5dad58d6 100644 --- a/src/real-numbers/addition-real-numbers.lagda.md +++ b/src/real-numbers/addition-real-numbers.lagda.md @@ -9,6 +9,7 @@ module real-numbers.addition-real-numbers where
Imports ```agda +open import elementary-number-theory.addition-positive-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.positive-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 a1b3ec48df..adf12e8e83 100644 --- a/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/addition-upper-dedekind-real-numbers.lagda.md @@ -14,6 +14,7 @@ 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-positive-rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers open import foundation.action-on-identifications-functions diff --git a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md index ce45ed52f8..2c0bb2c41c 100644 --- a/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md +++ b/src/real-numbers/arithmetically-located-dedekind-cuts.lagda.md @@ -9,6 +9,7 @@ module real-numbers.arithmetically-located-dedekind-cuts where
Imports ```agda +open import elementary-number-theory.addition-positive-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.archimedean-property-rational-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 2fa03bff7f..86d96c9e86 100644 --- a/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md +++ b/src/real-numbers/cauchy-completeness-dedekind-real-numbers.lagda.md @@ -9,6 +9,7 @@ module real-numbers.cauchy-completeness-dedekind-real-numbers where
Imports ```agda +open import elementary-number-theory.addition-positive-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 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 23d900598b..7a22ced018 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 @@ -9,6 +9,7 @@ module real-numbers.inhabited-totally-bounded-subsets-real-numbers 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 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 44165bc6bf..9486dd6024 100644 --- a/src/real-numbers/maximum-finite-families-real-numbers.lagda.md +++ b/src/real-numbers/maximum-finite-families-real-numbers.lagda.md @@ -7,6 +7,7 @@ module real-numbers.maximum-finite-families-real-numbers where
Imports ```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 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 480e679dc9..9c80701de0 100644 --- a/src/real-numbers/metric-space-of-real-numbers.lagda.md +++ b/src/real-numbers/metric-space-of-real-numbers.lagda.md @@ -9,6 +9,7 @@ module real-numbers.metric-space-of-real-numbers where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.positive-rational-numbers @@ -269,7 +270,7 @@ module _ ## Properties -### The element `x` is in a `d`-neighborhood of `y` if and only if `x ≤ y + d` and `y ≤ x + d` +### The element `x` is in a `d`-neighborhood of `y` if and only if `x ≤ y + d` and `y ≤ x + d` ```agda module _ diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index 4f9ebcc108..9f97dc4cc2 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -10,6 +10,7 @@ module real-numbers.nonnegative-real-numbers where ```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.nonnegative-rational-numbers open import elementary-number-theory.positive-rational-numbers diff --git a/src/real-numbers/saturation-inequality-real-numbers.lagda.md b/src/real-numbers/saturation-inequality-real-numbers.lagda.md index 17757152d3..6657f97f72 100644 --- a/src/real-numbers/saturation-inequality-real-numbers.lagda.md +++ b/src/real-numbers/saturation-inequality-real-numbers.lagda.md @@ -10,6 +10,7 @@ module real-numbers.saturation-inequality-real-numbers where ```agda open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.strict-inequality-positive-rational-numbers open import foundation.universe-levels diff --git a/src/real-numbers/suprema-families-real-numbers.lagda.md b/src/real-numbers/suprema-families-real-numbers.lagda.md index 96a3faeb63..3105277e5e 100644 --- a/src/real-numbers/suprema-families-real-numbers.lagda.md +++ b/src/real-numbers/suprema-families-real-numbers.lagda.md @@ -9,6 +9,7 @@ module real-numbers.suprema-families-real-numbers where
Imports ```agda +open import elementary-number-theory.addition-positive-rational-numbers open import elementary-number-theory.positive-rational-numbers open import foundation.action-on-identifications-functions From c43da1f77c24afb98f98d4aa0793cc687de24832 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 1 Oct 2025 15:23:50 -0700 Subject: [PATCH 33/59] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- ...closed-intervals-rational-numbers.lagda.md | 2 +- ...closed-intervals-rational-numbers.lagda.md | 6 +++--- ...d-interval-preserving-maps-posets.lagda.md | 6 +++--- ...rval-preserving-maps-total-orders.lagda.md | 6 +++--- .../closed-intervals-posets.lagda.md | 9 ++++----- .../closed-intervals-total-orders.lagda.md | 20 +++++++++---------- 6 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md index b193dce5d6..907c47bc1a 100644 --- a/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-closed-intervals-rational-numbers.lagda.md @@ -36,7 +36,7 @@ open import order-theory.closed-intervals-posets ## Idea Given two -[inhabited closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) +[closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) `[a, b]` and `[c, d]` in the [rational numbers](elementary-number-theory.rational-numbers.md), the [Minkowski sum](group-theory.minkowski-multiplication-commutative-monoids.md) of diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 890db03633..64dc29c070 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -1,4 +1,4 @@ -# Inhabited closed intervals in the rational numbers +# Closed intervals in the rational numbers ```agda module elementary-number-theory.closed-intervals-rational-numbers where @@ -33,11 +33,11 @@ open import order-theory.decidable-total-orders ## Idea An -{{#concept "inhabited closed interval" Disambiguation="in the rational numbers" Agda=closed-interval-ℚ}} +{{#concept "closed interval" Disambiguation="in the rational numbers" Agda=closed-interval-ℚ}} in the rational numbers is a [closed interval](order-theory.closed-intervals-posets.md) in the [poset](elementary-number-theory.inequality-rational-numbers.md) of -[rational numbers](elementary-number-theory.rational-numbers.md). +[rational numbers](elementary-number-theory.rational-numbers.md). Note, in particular, that we thus consider closed intervals to be inhabited by convention. ## Definition diff --git a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md index 13f53f1c47..571615cf80 100644 --- a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md @@ -21,9 +21,9 @@ open import order-theory.posets A map between [posets](order-theory.posets.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Poset disambiguation="map between posets"}} -if the [image](foundation.images-subtypes.md) of an -[inhabited closed interval](order-theory.closed-intervals-posets.md) in `X` is -always an inhabited closed interval in `Y`. +if the [image](foundation.images-subtypes.md) of a +[closed interval](order-theory.closed-intervals-posets.md) in `X` is +always a closed interval in `Y`. ## Definition diff --git a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md index a9addd3f55..e28e2ec0db 100644 --- a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md @@ -22,9 +22,9 @@ open import order-theory.total-orders A map between [total orders](order-theory.total-orders.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Total-Order disambiguation="map between total orders"}} -if the [image](foundation.images-subtypes.md) of an -[inhabited closed interval](order-theory.closed-intervals-total-orders.md) in -`X` is always an inhabited closed interval in `Y`. Equivalently, it is a +if the [image](foundation.images-subtypes.md) of a +[closed interval](order-theory.closed-intervals-total-orders.md) in +`X` is always a closed interval in `Y`. Equivalently, it is a [closed interval preserving map](order-theory.closed-interval-preserving-maps-posets.md) on the underlying [posets](order-theory.posets.md). diff --git a/src/order-theory/closed-intervals-posets.lagda.md b/src/order-theory/closed-intervals-posets.lagda.md index 7dec9bc913..ca28d8c2eb 100644 --- a/src/order-theory/closed-intervals-posets.lagda.md +++ b/src/order-theory/closed-intervals-posets.lagda.md @@ -34,8 +34,7 @@ A {{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} in a [poset](order-theory.posets.md) `P` is a [subtype](foundation.subtypes.md) of `P` with elements `x` and `y` with `x ≤ y` such that the subtype contains -every element `z` such that `x ≤ z ∧ z ≤ y`. (We choose the convention of not -considering the empty subtype to be a closed interval.) +every element `z` such that `x ≤ z ∧ z ≤ y`. Note, in particular, that we thus consider closed intervals to be inhabited by convention. Any pair `x y` with `x ≤ y` induces a unique closed interval, so we can equivalently characterize closed intervals in terms of such pairs. @@ -77,7 +76,7 @@ module _ ## Properties -### The endpoints of an inhabited closed interval are in the interval +### The endpoints of a closed interval are in the interval ```agda module _ @@ -100,7 +99,7 @@ module _ ( a≤b , refl-leq-Poset X b) ``` -### Inhabited closed intervals are inhabited +### Closed intervals are inhabited ```agda module _ @@ -141,7 +140,7 @@ module _ ( ind-Σ (leq-prop-Poset X)) ``` -### The map from inhabited closed intervals to subtypes is injective +### The map from closed intervals to subtypes is injective ```agda module _ diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index 1997c1f956..a2f5da6496 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -37,9 +37,7 @@ A {{#concept "closed interval" disambiguation="in a total order" Agda=closed-interval-Total-Order}} in a [total order](order-theory.total-orders.md) `X` is a [subtype](foundation.subtypes.md) of `X` with elements `x` and `y` with `x ≤ y` -such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. (We -choose the convention of not considering the empty subtype to be a closed -interval.) +such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. Note, in particular, that we thus consider closed intervals to be inhabited by convention. Equivalently, a closed interval is a total order is a [closed interval](order-theory.closed-intervals-posets.md) in the underlying @@ -558,19 +556,19 @@ module _ ( x) ( tr ( _≤ x) - ( interchange-law-min-Total-Order X a b c d ∙ - ap-binary min + ( ( interchange-law-min-Total-Order X a b c d) ∙ + ( ap-binary min ( commutative-min _ _) - ( commutative-min _ _) ∙ - commutative-min _ _) + ( commutative-min _ _)) ∙ + ( commutative-min _ _)) ( min≤x) , tr ( x ≤_) - ( interchange-law-max-Total-Order X a b c d ∙ - ap-binary max + ( ( interchange-law-max-Total-Order X a b c d) ∙ + ( ap-binary max ( commutative-max _ _) - ( commutative-max _ _) ∙ - commutative-max _ _) + ( commutative-max _ _)) ∙ + ( commutative-max _ _)) ( x≤max))))) ( eq-one-of-four-min-Total-Order X a b c d) ``` From 6ef43665fbdf756abf541c25684e1d64848e8f67 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 1 Oct 2025 15:24:53 -0700 Subject: [PATCH 34/59] Fix 'inhabited closed' stragglers --- ...ultiplication-closed-intervals-rational-numbers.lagda.md | 4 ++-- src/order-theory/closed-intervals-total-orders.lagda.md | 6 ++++-- 2 files changed, 6 insertions(+), 4 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 9ab11857a9..64ae25be8e 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 @@ -1,4 +1,4 @@ -# Multiplication on inhabited closed intervals in the rational numbers +# Multiplication on closed intervals in the rational numbers ```agda module elementary-number-theory.multiplication-closed-intervals-rational-numbers where @@ -57,7 +57,7 @@ open import order-theory.total-orders ## Idea Given two -[inhabited closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) +[closed intervals](elementary-number-theory.closed-intervals-rational-numbers.md) `[a, b]` and `[c, d]` in the [rational numbers](elementary-number-theory.rational-numbers.md), the [Minkowski product](group-theory.minkowski-multiplication-commutative-monoids.md) diff --git a/src/order-theory/closed-intervals-total-orders.lagda.md b/src/order-theory/closed-intervals-total-orders.lagda.md index a2f5da6496..76eb99d1a1 100644 --- a/src/order-theory/closed-intervals-total-orders.lagda.md +++ b/src/order-theory/closed-intervals-total-orders.lagda.md @@ -1,4 +1,4 @@ -# Inhabited closed intervals in total orders +# Closed intervals in total orders ```agda module order-theory.closed-intervals-total-orders where @@ -37,7 +37,9 @@ A {{#concept "closed interval" disambiguation="in a total order" Agda=closed-interval-Total-Order}} in a [total order](order-theory.total-orders.md) `X` is a [subtype](foundation.subtypes.md) of `X` with elements `x` and `y` with `x ≤ y` -such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. Note, in particular, that we thus consider closed intervals to be inhabited by convention. +such that the subtype contains every element `z` such that `x ≤ z ∧ z ≤ y`. +Note, in particular, that we thus consider closed intervals to be inhabited by +convention. Equivalently, a closed interval is a total order is a [closed interval](order-theory.closed-intervals-posets.md) in the underlying From 865797a1c539d13673c5997c2b4c669f5abd87ba Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 1 Oct 2025 15:25:24 -0700 Subject: [PATCH 35/59] make pre-commit format --- .../closed-intervals-rational-numbers.lagda.md | 4 +++- .../closed-interval-preserving-maps-posets.lagda.md | 4 ++-- .../closed-interval-preserving-maps-total-orders.lagda.md | 4 ++-- src/order-theory/closed-intervals-posets.lagda.md | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 64dc29c070..c526e15790 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -37,7 +37,9 @@ An in the rational numbers is a [closed interval](order-theory.closed-intervals-posets.md) in the [poset](elementary-number-theory.inequality-rational-numbers.md) of -[rational numbers](elementary-number-theory.rational-numbers.md). Note, in particular, that we thus consider closed intervals to be inhabited by convention. +[rational numbers](elementary-number-theory.rational-numbers.md). Note, in +particular, that we thus consider closed intervals to be inhabited by +convention. ## Definition diff --git a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md index 571615cf80..f84a8f08ae 100644 --- a/src/order-theory/closed-interval-preserving-maps-posets.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-posets.lagda.md @@ -22,8 +22,8 @@ open import order-theory.posets A map between [posets](order-theory.posets.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Poset disambiguation="map between posets"}} if the [image](foundation.images-subtypes.md) of a -[closed interval](order-theory.closed-intervals-posets.md) in `X` is -always a closed interval in `Y`. +[closed interval](order-theory.closed-intervals-posets.md) in `X` is always a +closed interval in `Y`. ## Definition diff --git a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md index e28e2ec0db..236f38f6b6 100644 --- a/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md +++ b/src/order-theory/closed-interval-preserving-maps-total-orders.lagda.md @@ -23,8 +23,8 @@ open import order-theory.total-orders A map between [total orders](order-theory.total-orders.md) `f : X → Y` is {{#concept "closed interval preserving" Agda=is-closed-interval-map-Total-Order disambiguation="map between total orders"}} if the [image](foundation.images-subtypes.md) of a -[closed interval](order-theory.closed-intervals-total-orders.md) in -`X` is always a closed interval in `Y`. Equivalently, it is a +[closed interval](order-theory.closed-intervals-total-orders.md) in `X` is +always a closed interval in `Y`. Equivalently, it is a [closed interval preserving map](order-theory.closed-interval-preserving-maps-posets.md) on the underlying [posets](order-theory.posets.md). diff --git a/src/order-theory/closed-intervals-posets.lagda.md b/src/order-theory/closed-intervals-posets.lagda.md index ca28d8c2eb..676b209b39 100644 --- a/src/order-theory/closed-intervals-posets.lagda.md +++ b/src/order-theory/closed-intervals-posets.lagda.md @@ -34,7 +34,8 @@ A {{#concept "closed interval" disambiguation="in a poset" Agda=closed-interval-Poset}} in a [poset](order-theory.posets.md) `P` is a [subtype](foundation.subtypes.md) of `P` with elements `x` and `y` with `x ≤ y` such that the subtype contains -every element `z` such that `x ≤ z ∧ z ≤ y`. Note, in particular, that we thus consider closed intervals to be inhabited by convention. +every element `z` such that `x ≤ z ∧ z ≤ y`. Note, in particular, that we thus +consider closed intervals to be inhabited by convention. Any pair `x y` with `x ≤ y` induces a unique closed interval, so we can equivalently characterize closed intervals in terms of such pairs. From 76f1766119e06b78f7e70c4bc89df5cc61418b76 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 1 Oct 2025 15:26:18 -0700 Subject: [PATCH 36/59] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- ...on-closed-intervals-rational-numbers.lagda.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 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 64ae25be8e..efc5a8d5ed 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 @@ -297,14 +297,14 @@ abstract zero-zero-closed-interval-ℚ mul-is-zero-ℚ-closed-interval-ℚ ((p , q) , p≤q) _ refl = eq-closed-interval-ℚ _ _ - ( ap-min-ℚ - ( right-zero-law-mul-ℚ _) - ( right-zero-law-mul-ℚ _) ∙ - idempotent-min-ℚ zero-ℚ) - ( ap-max-ℚ - ( right-zero-law-mul-ℚ _) - ( right-zero-law-mul-ℚ _) ∙ - idempotent-max-ℚ zero-ℚ) + ( ( ap-min-ℚ + ( right-zero-law-mul-ℚ _) + ( right-zero-law-mul-ℚ _)) ∙ + ( idempotent-min-ℚ zero-ℚ)) + ( ( ap-max-ℚ + ( right-zero-law-mul-ℚ _) + ( right-zero-law-mul-ℚ _)) ∙ + ( idempotent-max-ℚ zero-ℚ)) mul-is-in-closed-interval-ℚ-ℚ : ([p,q] : closed-interval-ℚ) (r s : ℚ) → From 07300fee16ab36966df3048f65038fdf3a3c46a3 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Wed, 1 Oct 2025 15:27:56 -0700 Subject: [PATCH 37/59] Parenthesize concatenated paths --- ...closed-intervals-rational-numbers.lagda.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 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 64ae25be8e..973cc559c5 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 @@ -693,14 +693,14 @@ abstract mul-closed-interval-ℚ [c,d] [a,b] commutative-mul-closed-interval-ℚ ((a , b) , a≤b) ((c , d) , c≤d) = eq-closed-interval-ℚ _ _ - ( interchange-law-min-Total-Order ℚ-Total-Order _ _ _ _ ∙ - ap-min-ℚ + ( ( interchange-law-min-Total-Order ℚ-Total-Order _ _ _ _) ∙ + ( ap-min-ℚ ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) - ( interchange-law-max-Total-Order ℚ-Total-Order _ _ _ _ ∙ - ap-max-ℚ + ( ap-min-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)))) + ( ( interchange-law-max-Total-Order ℚ-Total-Order _ _ _ _) ∙ + ( ap-max-ℚ ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)) - ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _))) + ( ap-max-ℚ (commutative-mul-ℚ _ _) (commutative-mul-ℚ _ _)))) ``` ### Unit laws of multiplication of intervals @@ -713,22 +713,22 @@ abstract [a,b] left-unit-law-mul-closed-interval-ℚ ((a , b) , a≤b) = eq-closed-interval-ℚ _ _ - ( idempotent-min-ℚ _ ∙ - ap-min-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ - left-leq-right-min-ℚ _ _ a≤b) - ( idempotent-max-ℚ _ ∙ - ap-max-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b) ∙ - left-leq-right-max-ℚ _ _ a≤b) + ( ( idempotent-min-ℚ _) ∙ + ( ap-min-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b)) ∙ + ( left-leq-right-min-ℚ _ _ a≤b)) + ( ( idempotent-max-ℚ _) ∙ + ( ap-max-ℚ (left-unit-law-mul-ℚ a) (left-unit-law-mul-ℚ b)) ∙ + ( left-leq-right-max-ℚ _ _ a≤b)) right-unit-law-mul-closed-interval-ℚ : ([a,b] : closed-interval-ℚ) → mul-closed-interval-ℚ [a,b] one-one-closed-interval-ℚ = [a,b] right-unit-law-mul-closed-interval-ℚ [a,b] = - commutative-mul-closed-interval-ℚ + ( commutative-mul-closed-interval-ℚ ( [a,b]) - ( one-one-closed-interval-ℚ) ∙ - left-unit-law-mul-closed-interval-ℚ [a,b] + ( one-one-closed-interval-ℚ)) ∙ + ( left-unit-law-mul-closed-interval-ℚ [a,b]) ``` ### The commutative monoid of multiplication of rational intervals From 9235a01be259c9db8ff123ac9743e92aa8bc407a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 2 Oct 2025 15:15:03 -0700 Subject: [PATCH 38/59] Progress --- ...n-closed-intervals-rational-numbers.lagda.md | 17 +++++++++-------- ...itive-and-negative-rational-numbers.lagda.md | 0 ...itive-and-negative-rational-numbers.lagda.md | 15 +++++++++++++++ .../positive-rational-numbers.lagda.md | 5 +++++ 4 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 src/elementary-number-theory/multiplication-positive-and-negative-rational-numbers.lagda.md 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 e1b39771a7..ac133bc059 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 @@ -821,17 +821,17 @@ abstract is-interior-closed-interval-ℚ [c,d] [c',d'] → is-nontrivial-closed-interval-ℚ [a',b'] → is-nontrivial-closed-interval-ℚ [c',d'] → - is-interior-closed-interval-ℚ - ( mul-closed-interval-ℚ [a,b] [c,d]) - ( mul-closed-interval-ℚ [a',b'] [c',d']) + le-ℚ + ( lower-bound-mul-closed-interval-ℚ [a,b] [c,d]) + ( lower-bound-mul-closed-interval-ℚ [a',b'] [c',d']) le-lower-bound-mul-interior-closed-interval-ℚ [a,b]@((a , b) , _) [c,d]@((c , d) , _) [a',b']@((a' , b') , _) [c',d']@((c' , d') , _) (a Date: Thu, 2 Oct 2025 16:01:06 -0700 Subject: [PATCH 39/59] Finish the first case --- ...closed-intervals-rational-numbers.lagda.md | 135 +++++-- ...ive-and-negative-rational-numbers.lagda.md | 63 ++++ .../negative-rational-numbers.lagda.md | 66 ---- .../closed-intervals-total-orders.lagda.md | 337 +++++++++--------- 4 files changed, 326 insertions(+), 275 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 75d7edd827..3f8d7621e8 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 @@ -14,6 +14,7 @@ open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-rational-numbers @@ -833,40 +834,102 @@ abstract le-lower-bound-mul-interior-closed-interval-ℚ [a,b]@((a , b) , _) [c,d]@((c , d) , _) [a',b']@((a' , b') , _) [c',d']@((c' , d') , _) (aImports + +```agda +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.multiplication-rational-numbers +open import elementary-number-theory.positive-rational-numbers +open import elementary-number-theory.multiplication-positive-and-negative-integers +open import elementary-number-theory.negative-rational-numbers +open import foundation.dependent-pair-types +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. + +## Lemmas + +### The product of a positive and a negative rational number is negative + +```agda +opaque + unfolding mul-ℚ + + is-negative-mul-positive-negative-ℚ : + {x y : ℚ} → is-positive-ℚ x → is-negative-ℚ y → is-negative-ℚ (x *ℚ y) + is-negative-mul-positive-negative-ℚ pos-x neg-y = + is-negative-rational-fraction-ℤ + ( is-negative-mul-positive-negative-ℤ + ( pos-x) + ( is-negative-fraction-ℚ⁻ (_ , neg-y))) + +mul-positive-negative-ℚ : ℚ⁺ → ℚ⁻ → ℚ⁻ +mul-positive-negative-ℚ (p , pos-p) (q , neg-q) = + ( p *ℚ q , is-negative-mul-positive-negative-ℚ pos-p neg-q) +``` + +### The product of a negative and a positive rational number is negative + +```agda +abstract + is-negative-mul-negative-positive-ℚ : + {x y : ℚ} → is-negative-ℚ x → is-positive-ℚ y → is-negative-ℚ (x *ℚ y) + is-negative-mul-negative-positive-ℚ neg-x pos-y = + tr + ( is-negative-ℚ) + ( commutative-mul-ℚ _ _) + ( is-negative-mul-positive-negative-ℚ pos-y neg-x) + +mul-negative-positive-ℚ : ℚ⁻ → ℚ⁺ → ℚ⁻ +mul-negative-positive-ℚ (p , neg-p) (q , pos-q) = + ( p *ℚ q , is-negative-mul-negative-positive-ℚ neg-p pos-q) +``` diff --git a/src/elementary-number-theory/negative-rational-numbers.lagda.md b/src/elementary-number-theory/negative-rational-numbers.lagda.md index b56fdae8b8..e644756d48 100644 --- a/src/elementary-number-theory/negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/negative-rational-numbers.lagda.md @@ -363,69 +363,3 @@ opaque ( neg-ℚ⁻ p) ( neg-le-ℚ _ _ p Date: Thu, 2 Oct 2025 16:04:48 -0700 Subject: [PATCH 40/59] Remove concepts for specific instances --- .../addition-nonnegative-rational-numbers.lagda.md | 4 +--- .../inequality-nonnegative-rational-numbers.lagda.md | 4 +--- .../maximum-rational-numbers.lagda.md | 5 ++--- .../minimum-rational-numbers.lagda.md | 5 ++--- .../multiplication-nonnegative-rational-numbers.lagda.md | 4 +--- .../strict-inequality-nonnegative-rational-numbers.lagda.md | 4 +--- 6 files changed, 8 insertions(+), 18 deletions(-) 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 8600c9f0f2..09facab1a6 100644 --- a/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-nonnegative-rational-numbers.lagda.md @@ -23,9 +23,7 @@ open import order-theory.inflationary-maps-posets ## Idea -The -{{#concept "sum" WDID=Q32043 WD="addition" Disambiguation="nonnegative rational numbers" Agda=add-ℚ⁰⁺}} -of two +The sum of two [nonnegative rational numbers](elementary-number-theory.nonnegative-rational-numbers.md) is their [sum](elementary-number-theory.addition-rational-numbers.md) as [rational numbers](elementary-number-theory.rational-numbers.md), and is itself 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 c65adf4d07..2cf367adf0 100644 --- a/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-nonnegative-rational-numbers.lagda.md @@ -19,9 +19,7 @@ open import foundation.universe-levels ## Idea -The -{{#concept "standard ordering" Disambiguation="nonnegative rational numbers" Agda=leq-ℚ⁰⁺}} -on the +The standard ordering on the [nonnegative rational numbers](elementary-number-theory.nonnegative-rational-numbers.md) is inherited from the [standard ordering](elementary-number-theory.inequality-rational-numbers.md) on diff --git a/src/elementary-number-theory/maximum-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-rational-numbers.lagda.md index 76568e294b..bfafcb5b89 100644 --- a/src/elementary-number-theory/maximum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/maximum-rational-numbers.lagda.md @@ -25,9 +25,8 @@ open import order-theory.decidable-total-orders ## Idea -The -{{#concept "maximum" Disambiguation="of pairs of rational numbers" Agda=max-ℚ WDID=Q10578722 WD="maximum"}} -of two [rational numbers](elementary-number-theory.rational-numbers.md) is the +The maximum of two +[rational numbers](elementary-number-theory.rational-numbers.md) is the [greatest](elementary-number-theory.inequality-rational-numbers.md) rational number of the two. This is the [binary least upper bound](order-theory.least-upper-bounds-posets.md) in the diff --git a/src/elementary-number-theory/minimum-rational-numbers.lagda.md b/src/elementary-number-theory/minimum-rational-numbers.lagda.md index e38ab2d5c8..91badfa0b9 100644 --- a/src/elementary-number-theory/minimum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minimum-rational-numbers.lagda.md @@ -23,9 +23,8 @@ open import order-theory.decidable-total-orders ## Idea -The -{{#concept "minimum" Disambiguation="of pairs of rational numbers" Agda=min-ℚ WDID=Q10585806 WD="minimum"}} -of two [rational numbers](elementary-number-theory.rational-numbers.md) is the +The minimum of two +[rational numbers](elementary-number-theory.rational-numbers.md) is the [smallest](elementary-number-theory.inequality-rational-numbers.md) rational number of the two. This is the [binary greatest lower bound](order-theory.greatest-lower-bounds-posets.md) in diff --git a/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md index 448a62a71c..5780d62db7 100644 --- a/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-nonnegative-rational-numbers.lagda.md @@ -28,9 +28,7 @@ open import foundation.identity-types ## Idea -The -{{#concept "product" WDID=Q40276 WD="multiplication" Disambiguation="of nonnegative rational numbers" Agda=mul-ℚ⁰⁺}} -of two +The product of two [nonnegative rational numbers](elementary-number-theory.nonnegative-rational-numbers.md) is their [product](elementary-number-theory.multiplication-rational-numbers.md) as [rational numbers](elementary-number-theory.rational-numbers.md), and is diff --git a/src/elementary-number-theory/strict-inequality-nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-nonnegative-rational-numbers.lagda.md index 71ef396586..0ee82599db 100644 --- a/src/elementary-number-theory/strict-inequality-nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-nonnegative-rational-numbers.lagda.md @@ -20,9 +20,7 @@ open import foundation.universe-levels ## Idea -The -{{#concept "standard strict ordering" Disambiguation="nonnegative rational numbers" Agda=le-ℚ⁰⁺}} -on the +The standard strict ordering on the [nonnegative rational numbers](elementary-number-theory.nonnegative-rational-numbers.md) is inherited from the [standard strict ordering](elementary-number-theory.strict-inequality-rational-numbers.md) From 6d2aa783117d619c79477a48f544ee2820164950 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 2 Oct 2025 16:06:21 -0700 Subject: [PATCH 41/59] Remove concepts for specific instances --- .../addition-positive-rational-numbers.lagda.md | 4 +--- .../inequality-positive-rational-numbers.lagda.md | 4 +--- .../maximum-positive-rational-numbers.lagda.md | 4 +--- .../minimum-positive-rational-numbers.lagda.md | 4 +--- .../multiplication-positive-rational-numbers.lagda.md | 4 +--- .../strict-inequality-positive-rational-numbers.lagda.md | 4 +--- 6 files changed, 6 insertions(+), 18 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 7fe0fda504..94d8718db1 100644 --- a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md @@ -43,9 +43,7 @@ open import group-theory.subsemigroups ## Idea -The -{{#concept "sum" WDID=Q32043 WD="addition" Disambiguation="positive rational numbers" Agda=add-ℚ⁺}} -of two +The sum of two [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is their [sum](elementary-number-theory.addition-rational-numbers.md) as [rational numbers](elementary-number-theory.rational-numbers.md), and is itself 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 6b639e2620..e9a9a7e8be 100644 --- a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md @@ -27,9 +27,7 @@ open import order-theory.total-orders ## Idea -The -{{#concept "standard ordering" Disambiguation="positive rational numbers" Agda=leq-ℚ⁺}} -on the +The standard ordering on the [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is inherited from the [standard ordering](elementary-number-theory.inequality-rational-numbers.md) on diff --git a/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md index 5306ecd649..3fc173684b 100644 --- a/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md @@ -19,9 +19,7 @@ open import order-theory.decidable-total-orders ## Idea -The -{{#concept "maximum" Disambiguation="of pairs of positive rational numbers" Agda=max-ℚ⁺ WDID=Q10578722 WD="maximum"}} -of two +The maximum of two [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is the [greatest](elementary-number-theory.inequality-positive-rational-numbers.md) 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 154866697c..b6c298a495 100644 --- a/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md @@ -21,9 +21,7 @@ open import order-theory.decidable-total-orders ## Idea -The -{{#concept "minimum" Disambiguation="of pairs of positive rational numbers" Agda=min-ℚ WDID=Q10585806 WD="minimum"}} -of two +The minimum of two [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is the [smallest](elementary-number-theory.inequality-positive-rational-numbers.md) of 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 a3611a27f4..03f5348525 100644 --- a/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md @@ -45,9 +45,7 @@ open import group-theory.submonoids-commutative-monoids ## Idea -The -{{#concept "product" WDID=Q40276 WD="multiplication" Disambiguation="of positive rational numbers" Agda=mul-ℚ⁺}} -of two +The product of two [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is their [product](elementary-number-theory.multiplication-rational-numbers.md) as [rational numbers](elementary-number-theory.rational-numbers.md), and is diff --git a/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md index cf6fc2c208..c9029c7d8e 100644 --- a/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md @@ -26,9 +26,7 @@ open import order-theory.strictly-preordered-sets ## Idea -The -{{#concept "standard strict ordering" Disambiguation="positive rational numbers" Agda=le-ℚ⁺}} -on the +The standard strict ordering on the [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is inherited from the [standard strict ordering](elementary-number-theory.strict-inequality-rational-numbers.md) From 5bc67cf72dff1af099bd1b57136e069249086283 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Thu, 2 Oct 2025 18:02:11 -0700 Subject: [PATCH 42/59] Finish first version --- src/elementary-number-theory.lagda.md | 2 + ...closed-intervals-rational-numbers.lagda.md | 15 +- ...closed-intervals-rational-numbers.lagda.md | 360 ++++++++++++++++-- ...ive-and-negative-rational-numbers.lagda.md | 23 +- .../negative-rational-numbers.lagda.md | 16 + .../nonnegative-rational-numbers.lagda.md | 12 +- .../nonpositive-rational-numbers.lagda.md | 154 ++++++++ ...ive-and-negative-rational-numbers.lagda.md | 32 +- .../positive-rational-numbers.lagda.md | 16 +- 9 files changed, 584 insertions(+), 46 deletions(-) create mode 100644 src/elementary-number-theory/nonpositive-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 8284455caf..d6132bc092 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -125,6 +125,7 @@ open import elementary-number-theory.multiplication-integers 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-positive-and-negative-integers public +open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers public open import elementary-number-theory.multiplication-rational-numbers public open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers public open import elementary-number-theory.multiplicative-group-of-rational-numbers public @@ -142,6 +143,7 @@ open import elementary-number-theory.nonnegative-integer-fractions public open import elementary-number-theory.nonnegative-integers public open import elementary-number-theory.nonnegative-rational-numbers public open import elementary-number-theory.nonpositive-integers public +open import elementary-number-theory.nonpositive-rational-numbers public open import elementary-number-theory.nonzero-integers public open import elementary-number-theory.nonzero-natural-numbers public open import elementary-number-theory.nonzero-rational-numbers public diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 366d22c1ab..ff122cacd9 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -97,7 +97,8 @@ is-nontrivial-prop-closed-interval-ℚ : closed-interval-ℚ → Prop lzero is-nontrivial-prop-closed-interval-ℚ ((a , b) , _) = le-ℚ-Prop a b is-nontrivial-closed-interval-ℚ : closed-interval-ℚ → UU lzero -is-nontrivial-closed-interval-ℚ [a,b] = type-Prop (is-nontrivial-prop-closed-interval-ℚ [a,b]) +is-nontrivial-closed-interval-ℚ [a,b] = + type-Prop (is-nontrivial-prop-closed-interval-ℚ [a,b]) ``` ### Important ranges @@ -179,10 +180,14 @@ is-interior-closed-interval-ℚ [x,y] [x',y'] = ```agda lower-bound-is-in-closed-interval-ℚ : - ([a,b] : closed-interval-ℚ) → is-in-closed-interval-ℚ [a,b] (lower-bound-closed-interval-ℚ [a,b]) -lower-bound-is-in-closed-interval-ℚ = lower-bound-is-in-closed-interval-Poset ℚ-Poset + ([a,b] : closed-interval-ℚ) → + is-in-closed-interval-ℚ [a,b] (lower-bound-closed-interval-ℚ [a,b]) +lower-bound-is-in-closed-interval-ℚ = + lower-bound-is-in-closed-interval-Poset ℚ-Poset upper-bound-is-in-closed-interval-ℚ : - ([a,b] : closed-interval-ℚ) → is-in-closed-interval-ℚ [a,b] (upper-bound-closed-interval-ℚ [a,b]) -upper-bound-is-in-closed-interval-ℚ = upper-bound-is-in-closed-interval-Poset ℚ-Poset + ([a,b] : closed-interval-ℚ) → + is-in-closed-interval-ℚ [a,b] (upper-bound-closed-interval-ℚ [a,b]) +upper-bound-is-in-closed-interval-ℚ = + upper-bound-is-in-closed-interval-Poset ℚ-Poset ``` 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 3f8d7621e8..1d349d687e 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 @@ -14,37 +14,32 @@ open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.minimum-rational-numbers +open import elementary-number-theory.multiplication-positive-and-negative-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.multiplicative-group-of-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.positive-and-negative-rational-numbers -open import elementary-number-theory.strict-inequality-rational-numbers -open import elementary-number-theory.positive-rational-numbers -open import elementary-number-theory.rational-numbers - -open import foundation.cartesian-product-types -open import foundation.action-on-identifications-binary-functions -open import foundation.action-on-identifications-functions -open import foundation.function-types +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 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.identity-types open import foundation.images-subtypes open import foundation.logical-equivalences @@ -774,7 +769,8 @@ abstract (aImports ```agda -open import elementary-number-theory.rational-numbers -open import elementary-number-theory.multiplication-rational-numbers -open import elementary-number-theory.positive-rational-numbers open import elementary-number-theory.multiplication-positive-and-negative-integers +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-rational-numbers +open import elementary-number-theory.rational-numbers + open import foundation.dependent-pair-types open import foundation.transport-along-identifications ``` @@ -61,3 +64,17 @@ mul-negative-positive-ℚ : ℚ⁻ → ℚ⁺ → ℚ⁻ mul-negative-positive-ℚ (p , neg-p) (q , pos-q) = ( p *ℚ q , is-negative-mul-negative-positive-ℚ neg-p pos-q) ``` + +#### The product of two nonpositive rational numbers is nonnegative + +```agda +abstract + is-nonnegative-mul-nonpositive-ℚ : + {x y : ℚ} → is-nonpositive-ℚ x → is-nonpositive-ℚ y → + is-nonnegative-ℚ (x *ℚ y) + is-nonnegative-mul-nonpositive-ℚ {x} {y} nonpos-x nonpos-y = + tr + ( is-nonnegative-ℚ) + ( negative-law-mul-ℚ x y) + ( is-nonnegative-mul-ℚ _ _ nonpos-x nonpos-y) +``` diff --git a/src/elementary-number-theory/negative-rational-numbers.lagda.md b/src/elementary-number-theory/negative-rational-numbers.lagda.md index e644756d48..3bb4ccc7ad 100644 --- a/src/elementary-number-theory/negative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/negative-rational-numbers.lagda.md @@ -363,3 +363,19 @@ opaque ( neg-ℚ⁻ p) ( neg-le-ℚ _ _ pImports + +```agda +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.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-integers +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.dependent-pair-types +open import foundation.identity-types +open import foundation.logical-equivalences +open import foundation.propositions +open import foundation.subtypes +open import foundation.transport-along-identifications +open import foundation.universe-levels +``` + +
+ +## Idea + +A [rational number](elementary-number-theory.rational-numbers.md) `x` is said to +be +{{#concept "nonpositive" Disambiguation="rational number" Agda=is-nonpositive-ℚ}} +if its numerator is a +[nonpositive integer](elementary-number-theory.nonpositive-integers.md). + +## Definitions + +### The property of being a nonpositive rational number + +```agda +module _ + (q : ℚ) + where + + is-nonpositive-ℚ : UU lzero + is-nonpositive-ℚ = is-nonnegative-ℚ (neg-ℚ q) + + abstract + is-prop-is-nonpositive-ℚ : is-prop is-nonpositive-ℚ + is-prop-is-nonpositive-ℚ = is-prop-is-nonnegative-ℚ (neg-ℚ q) + + is-nonpositive-prop-ℚ : Prop lzero + is-nonpositive-prop-ℚ = (is-nonpositive-ℚ , is-prop-is-nonpositive-ℚ) +``` + +### The type of nonpositive rational numbers + +```agda +nonpositive-ℚ : UU lzero +nonpositive-ℚ = type-subtype is-nonpositive-prop-ℚ + +ℚ⁰⁻ : UU lzero +ℚ⁰⁻ = nonpositive-ℚ + +module _ + (x : nonpositive-ℚ) + where + + rational-ℚ⁰⁻ : ℚ + rational-ℚ⁰⁻ = pr1 x + + fraction-ℚ⁰⁻ : fraction-ℤ + fraction-ℚ⁰⁻ = fraction-ℚ rational-ℚ⁰⁻ + + numerator-ℚ⁰⁻ : ℤ + numerator-ℚ⁰⁻ = numerator-ℚ rational-ℚ⁰⁻ + + denominator-ℚ⁰⁻ : ℤ + denominator-ℚ⁰⁻ = denominator-ℚ rational-ℚ⁰⁻ +``` + +## Properties + +### Equality on nonpositive rational numbers + +```agda +abstract + eq-ℚ⁰⁻ : {x y : ℚ⁰⁻} → rational-ℚ⁰⁻ x = rational-ℚ⁰⁻ y → x = y + eq-ℚ⁰⁻ {x} {y} = eq-type-subtype is-nonpositive-prop-ℚ +``` + +### A rational number is nonpositive if and only if it is less than or equal to zero + +```agda +module _ + (q : ℚ) + where + + opaque + unfolding neg-ℚ + + leq-zero-is-nonpositive-ℚ : is-nonpositive-ℚ q → leq-ℚ q zero-ℚ + leq-zero-is-nonpositive-ℚ is-nonpos-q = + tr + ( λ p → leq-ℚ p zero-ℚ) + ( neg-neg-ℚ q) + ( neg-leq-ℚ _ _ (leq-zero-is-nonnegative-ℚ (neg-ℚ q) is-nonpos-q)) + + is-nonpositive-leq-zero-ℚ : leq-ℚ q zero-ℚ → is-nonpositive-ℚ q + is-nonpositive-leq-zero-ℚ q≤0 = + is-nonnegative-leq-zero-ℚ (neg-ℚ q) (neg-leq-ℚ _ _ q≤0) + + is-nonpositive-iff-leq-zero-ℚ : is-nonpositive-ℚ q ↔ leq-ℚ q zero-ℚ + is-nonpositive-iff-leq-zero-ℚ = + ( leq-zero-is-nonpositive-ℚ , + is-nonpositive-leq-zero-ℚ) +``` + +### If `p < q` and `q` is nonpositive, `p` is negative + +```agda +abstract + is-negative-le-nonpositive-ℚ : + (q : ℚ⁰⁻) (p : ℚ) → le-ℚ p (rational-ℚ⁰⁻ q) → is-negative-ℚ p + is-negative-le-nonpositive-ℚ (q , nonpos-q) p p Date: Thu, 2 Oct 2025 18:28:57 -0700 Subject: [PATCH 43/59] Progress --- src/elementary-number-theory.lagda.md | 1 + ...closed-intervals-rational-numbers.lagda.md | 2 +- ...closed-intervals-rational-numbers.lagda.md | 7 +- ...tion-nonpositive-rational-numbers.lagda.md | 70 +++++++++++++++++++ ...ive-and-negative-rational-numbers.lagda.md | 14 ---- ...icative-group-of-rational-numbers.lagda.md | 2 +- .../nonnegative-rational-numbers.lagda.md | 12 ++++ .../nonpositive-rational-numbers.lagda.md | 19 ----- .../positive-rational-numbers.lagda.md | 18 +++++ 9 files changed, 107 insertions(+), 38 deletions(-) create mode 100644 src/elementary-number-theory/multiplication-nonpositive-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 984b8e8aef..44c1800808 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -131,6 +131,7 @@ open import elementary-number-theory.multiplication-integers 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-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 open import elementary-number-theory.multiplication-positive-and-negative-rational-numbers public open import elementary-number-theory.multiplication-positive-rational-numbers public diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 5662378499..948b7736d8 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -11,10 +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.maximum-rational-numbers open import elementary-number-theory.minimum-rational-numbers -open import elementary-number-theory.nonnegative-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.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/multiplication-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md index 1d349d687e..f189603bba 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 @@ -16,7 +16,10 @@ 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-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-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 open import elementary-number-theory.multiplicative-group-of-rational-numbers @@ -1036,9 +1039,7 @@ abstract inv-tr ( is-nonnegative-ℚ) ( min'=a'c') - ( is-nonnegative-mul-nonnegative-ℚ - ( is-nonneg-a') - ( is-nonneg-c')) + ( is-nonnegative-mul-ℚ _ _ is-nonneg-a' is-nonneg-c') in rec-coproduct ( λ is-neg-a → diff --git a/src/elementary-number-theory/multiplication-nonpositive-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-nonpositive-rational-numbers.lagda.md new file mode 100644 index 0000000000..42b601b589 --- /dev/null +++ b/src/elementary-number-theory/multiplication-nonpositive-rational-numbers.lagda.md @@ -0,0 +1,70 @@ +# Multiplication of nonpositive rational numbers + +```agda +{-# OPTIONS --lossy-unification #-} + +module elementary-number-theory.multiplication-nonpositive-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.inequality-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.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 +``` + +
+ +## Idea + +The product of two +[nonpositive rational numbers](elementary-number-theory.nonpositive-rational-numbers.md) +is their [product](elementary-number-theory.multiplication-rational-numbers.md) +as [rational numbers](elementary-number-theory.rational-numbers.md), and is +[nonnegative](elementary-number-theory.nonnegative-rational-numbers.md). + +## Definition + +```agda +abstract + is-nonnegative-mul-nonpositive-ℚ : + {x y : ℚ} → is-nonpositive-ℚ x → is-nonpositive-ℚ y → + is-nonnegative-ℚ (x *ℚ y) + is-nonnegative-mul-nonpositive-ℚ {x} {y} nonpos-x nonpos-y = + tr + ( is-nonnegative-ℚ) + ( negative-law-mul-ℚ x y) + ( is-nonnegative-mul-ℚ _ _ nonpos-x nonpos-y) + +mul-nonpositive-ℚ : ℚ⁰⁻ → ℚ⁰⁻ → ℚ⁰⁺ +mul-nonpositive-ℚ (p , nonpos-p) (q , nonpos-q) = + (p *ℚ q , is-nonnegative-mul-nonpositive-ℚ nonpos-p nonpos-q) +``` + +## Properties + +### Multiplication by a nonpositive rational number reverses inequality + +```agda +abstract + reverses-leq-right-mul-ℚ⁰⁻ : + (p : ℚ⁰⁻) (q r : ℚ) → leq-ℚ q r → + leq-ℚ (r *ℚ rational-ℚ⁰⁻ p) (q *ℚ rational-ℚ⁰⁻ p) + reverses-leq-right-mul-ℚ⁰⁻ (p , nonpos-p) q r q≤r = + binary-tr + ( leq-ℚ) + ( ap neg-ℚ (right-negative-law-mul-ℚ r p) ∙ neg-neg-ℚ _) + ( ap neg-ℚ (right-negative-law-mul-ℚ q p) ∙ neg-neg-ℚ _) + ( 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 8b43c19dc4..c2ded14443 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 @@ -64,17 +64,3 @@ mul-negative-positive-ℚ : ℚ⁻ → ℚ⁺ → ℚ⁻ mul-negative-positive-ℚ (p , neg-p) (q , pos-q) = ( p *ℚ q , is-negative-mul-negative-positive-ℚ neg-p pos-q) ``` - -#### The product of two nonpositive rational numbers is nonnegative - -```agda -abstract - is-nonnegative-mul-nonpositive-ℚ : - {x y : ℚ} → is-nonpositive-ℚ x → is-nonpositive-ℚ y → - is-nonnegative-ℚ (x *ℚ y) - is-nonnegative-mul-nonpositive-ℚ {x} {y} nonpos-x nonpos-y = - tr - ( is-nonnegative-ℚ) - ( negative-law-mul-ℚ x y) - ( is-nonnegative-mul-ℚ _ _ nonpos-x nonpos-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 01d1aa6290..37fa4dc41d 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,8 +9,8 @@ module elementary-number-theory.multiplicative-group-of-rational-numbers where
Imports ```agda -open import elementary-number-theory.multiplication-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.nonzero-rational-numbers diff --git a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md index 22352dc405..bb80c7c95f 100644 --- a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md @@ -236,3 +236,15 @@ 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 `p < q` and `p` is nonnegative, `q` is positive + +```agda +abstract + is-positive-le-nonnegative-ℚ : + (p : ℚ⁰⁺) (q : ℚ) → le-ℚ (rational-ℚ⁰⁺ p) q → is-positive-ℚ q + is-positive-le-nonnegative-ℚ (p , nonneg-p) q p Date: Thu, 2 Oct 2025 19:20:37 -0700 Subject: [PATCH 44/59] Finish proving the interior condition --- src/elementary-number-theory.lagda.md | 2 + ...inima-and-maxima-rational-numbers.lagda.md | 69 +++++++ ...closed-intervals-rational-numbers.lagda.md | 173 ++++++++++++++++++ ...closed-intervals-rational-numbers.lagda.md | 58 ++++++ 4 files changed, 302 insertions(+) create mode 100644 src/elementary-number-theory/minima-and-maxima-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/negation-closed-intervals-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index d6132bc092..42e0130b80 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -112,6 +112,7 @@ open import elementary-number-theory.maximum-rational-numbers public open import elementary-number-theory.maximum-standard-finite-types public open import elementary-number-theory.mediant-integer-fractions public open import elementary-number-theory.mersenne-primes public +open import elementary-number-theory.minima-and-maxima-rational-numbers public open import elementary-number-theory.minimum-natural-numbers public open import elementary-number-theory.minimum-rational-numbers public open import elementary-number-theory.minimum-standard-finite-types public @@ -136,6 +137,7 @@ open import elementary-number-theory.multiplicative-units-integers public open import elementary-number-theory.multiplicative-units-standard-cyclic-rings public open import elementary-number-theory.multiset-coefficients public open import elementary-number-theory.natural-numbers public +open import elementary-number-theory.negation-closed-intervals-rational-numbers public open import elementary-number-theory.negative-integer-fractions public open import elementary-number-theory.negative-integers public open import elementary-number-theory.negative-rational-numbers public diff --git a/src/elementary-number-theory/minima-and-maxima-rational-numbers.lagda.md b/src/elementary-number-theory/minima-and-maxima-rational-numbers.lagda.md new file mode 100644 index 0000000000..2ce0b5f861 --- /dev/null +++ b/src/elementary-number-theory/minima-and-maxima-rational-numbers.lagda.md @@ -0,0 +1,69 @@ +# Minima and maxima on the rational numbers + +```agda +module elementary-number-theory.minima-and-maxima-rational-numbers where +``` + +
Imports + +```agda +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.rational-numbers + +open import foundation.action-on-identifications-functions +open import foundation.coproduct-types +open import foundation.identity-types +``` + +
+ +## Idea + +In this file, we outline basic relations between +[minima](elementary-number-theory.minimum-rational-numbers.md) and +[maxima](elementary-number-theory.maximum-rational-numbers.md) of +[rational numbers](elementary-number-theory.rational-numbers.md). + +## Lemmas + +### The negation of the minimum of rational numbers is the maximum of the negations + +```agda +module _ + (p q : ℚ) + where + + abstract + neg-min-ℚ : neg-ℚ (min-ℚ p q) = max-ℚ (neg-ℚ p) (neg-ℚ q) + neg-min-ℚ = + rec-coproduct + ( λ p≤q → + ( ap neg-ℚ (left-leq-right-min-ℚ p q p≤q)) ∙ + ( inv (right-leq-left-max-ℚ _ _ (neg-leq-ℚ _ _ p≤q)))) + ( λ q≤p → + ( ap neg-ℚ (right-leq-left-min-ℚ p q q≤p)) ∙ + ( inv (left-leq-right-max-ℚ _ _ (neg-leq-ℚ _ _ q≤p)))) + ( linear-leq-ℚ p q) +``` + +### The negation of the maximum of rational numbers is the minimum of the negations + +```agda +module _ + (p q : ℚ) + where + + abstract + neg-max-ℚ : neg-ℚ (max-ℚ p q) = min-ℚ (neg-ℚ p) (neg-ℚ q) + neg-max-ℚ = + rec-coproduct + ( λ p≤q → + ( ap neg-ℚ (left-leq-right-max-ℚ _ _ p≤q)) ∙ + ( inv (right-leq-left-min-ℚ _ _ (neg-leq-ℚ _ _ p≤q)))) + ( λ q≤p → + ( ap neg-ℚ (right-leq-left-max-ℚ _ _ q≤p)) ∙ + ( inv (left-leq-right-min-ℚ _ _ (neg-leq-ℚ _ _ q≤p)))) + ( linear-leq-ℚ p q) +``` 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 1d349d687e..6961c871f1 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 @@ -15,12 +15,14 @@ open import elementary-number-theory.decidable-total-order-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.minima-and-maxima-rational-numbers open import elementary-number-theory.minimum-rational-numbers open import elementary-number-theory.multiplication-positive-and-negative-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.multiplicative-group-of-rational-numbers 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.nonpositive-rational-numbers @@ -760,6 +762,111 @@ commutative-monoid-mul-closed-interval-ℚ = commutative-mul-closed-interval-ℚ) ``` +### Negative laws for interval multiplication + +```agda +abstract + right-negative-law-lower-bound-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + lower-bound-mul-closed-interval-ℚ [a,b] (neg-closed-interval-ℚ [c,d]) = + neg-ℚ (upper-bound-mul-closed-interval-ℚ [a,b] [c,d]) + right-negative-law-lower-bound-mul-closed-interval-ℚ + ((a , b) , a≤b) ((c , d) , c≤d) = + equational-reasoning + min-ℚ + ( min-ℚ (a *ℚ neg-ℚ d) (a *ℚ neg-ℚ c)) + ( min-ℚ (b *ℚ neg-ℚ d) (b *ℚ neg-ℚ c)) + = + min-ℚ + ( min-ℚ (a *ℚ neg-ℚ c) (a *ℚ neg-ℚ d)) + ( min-ℚ (b *ℚ neg-ℚ c) (b *ℚ neg-ℚ d)) + by ap-min-ℚ (commutative-min-ℚ _ _) (commutative-min-ℚ _ _) + = + min-ℚ + ( min-ℚ (neg-ℚ (a *ℚ c)) (neg-ℚ (a *ℚ d))) + ( min-ℚ (neg-ℚ (b *ℚ c)) (neg-ℚ (b *ℚ d))) + by + ap-min-ℚ + ( ap-min-ℚ + ( right-negative-law-mul-ℚ _ _) + ( right-negative-law-mul-ℚ _ _)) + ( ap-min-ℚ + ( right-negative-law-mul-ℚ _ _) + ( right-negative-law-mul-ℚ _ _)) + = + min-ℚ + ( neg-ℚ (max-ℚ (a *ℚ c) (a *ℚ d))) + ( neg-ℚ (max-ℚ (b *ℚ c) (b *ℚ d))) + by inv (ap-min-ℚ (neg-max-ℚ _ _) (neg-max-ℚ _ _)) + = + neg-ℚ + ( max-ℚ + ( max-ℚ (a *ℚ c) (a *ℚ d)) + ( max-ℚ (b *ℚ c) (b *ℚ d))) + by inv (neg-max-ℚ _ _) + + right-negative-law-upper-bound-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + upper-bound-mul-closed-interval-ℚ [a,b] (neg-closed-interval-ℚ [c,d]) = + neg-ℚ (lower-bound-mul-closed-interval-ℚ [a,b] [c,d]) + right-negative-law-upper-bound-mul-closed-interval-ℚ + ((a , b) , a≤b) ((c , d) , c≤d) = + equational-reasoning + max-ℚ + ( max-ℚ (a *ℚ neg-ℚ d) (a *ℚ neg-ℚ c)) + ( max-ℚ (b *ℚ neg-ℚ d) (b *ℚ neg-ℚ c)) + = + max-ℚ + ( max-ℚ (a *ℚ neg-ℚ c) (a *ℚ neg-ℚ d)) + ( max-ℚ (b *ℚ neg-ℚ c) (b *ℚ neg-ℚ d)) + by ap-max-ℚ (commutative-max-ℚ _ _) (commutative-max-ℚ _ _) + = + max-ℚ + ( max-ℚ (neg-ℚ (a *ℚ c)) (neg-ℚ (a *ℚ d))) + ( max-ℚ (neg-ℚ (b *ℚ c)) (neg-ℚ (b *ℚ d))) + by + ap-max-ℚ + ( ap-max-ℚ + ( right-negative-law-mul-ℚ _ _) + ( right-negative-law-mul-ℚ _ _)) + ( ap-max-ℚ + ( right-negative-law-mul-ℚ _ _) + ( right-negative-law-mul-ℚ _ _)) + = + max-ℚ + ( neg-ℚ (min-ℚ (a *ℚ c) (a *ℚ d))) + ( neg-ℚ (min-ℚ (b *ℚ c) (b *ℚ d))) + by inv (ap-max-ℚ (neg-min-ℚ _ _) (neg-min-ℚ _ _)) + = neg-ℚ (min-ℚ (min-ℚ (a *ℚ c) (a *ℚ d)) (min-ℚ (b *ℚ c) (b *ℚ d))) + by inv (neg-min-ℚ _ _) + + right-negative-law-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + mul-closed-interval-ℚ [a,b] (neg-closed-interval-ℚ [c,d]) = + neg-closed-interval-ℚ (mul-closed-interval-ℚ [a,b] [c,d]) + right-negative-law-mul-closed-interval-ℚ [a,b] [c,d] = + eq-closed-interval-ℚ _ _ + ( right-negative-law-lower-bound-mul-closed-interval-ℚ [a,b] [c,d]) + ( right-negative-law-upper-bound-mul-closed-interval-ℚ [a,b] [c,d]) + + left-negative-law-mul-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + mul-closed-interval-ℚ (neg-closed-interval-ℚ [a,b]) [c,d] = + neg-closed-interval-ℚ (mul-closed-interval-ℚ [a,b] [c,d]) + left-negative-law-mul-closed-interval-ℚ [a,b] [c,d] = + equational-reasoning + mul-closed-interval-ℚ (neg-closed-interval-ℚ [a,b]) [c,d] + = mul-closed-interval-ℚ [c,d] (neg-closed-interval-ℚ [a,b]) + by commutative-mul-closed-interval-ℚ (neg-closed-interval-ℚ [a,b]) [c,d] + = neg-closed-interval-ℚ (mul-closed-interval-ℚ [c,d] [a,b]) + by right-negative-law-mul-closed-interval-ℚ [c,d] [a,b] + = neg-closed-interval-ℚ (mul-closed-interval-ℚ [a,b] [c,d]) + by + ap + ( neg-closed-interval-ℚ) + ( commutative-mul-closed-interval-ℚ [c,d] [a,b]) +``` + ### The sign of interval boundaries ```agda @@ -1246,4 +1353,70 @@ abstract ( d'Imports + +```agda +open import elementary-number-theory.closed-intervals-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.dependent-pair-types +``` + +
+ +## Idea + +The negation of a +[closed interval of rational numbers](elementary-number-theory.closed-intervals-rational-numbers.md) +[a, b] is [-b, -a]. + +## Definition + +```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) +``` + +## Properties + +### Negation preserves interior intervals + +```agda +abstract + is-interior-neg-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + is-interior-closed-interval-ℚ [a,b] [c,d] → + is-interior-closed-interval-ℚ + ( neg-closed-interval-ℚ [a,b]) + ( neg-closed-interval-ℚ [c,d]) + is-interior-neg-closed-interval-ℚ ((a , b) , _) ((c , d) , _) (a Date: Fri, 3 Oct 2025 10:11:19 -0700 Subject: [PATCH 45/59] Restore unlinked concepts --- .../addition-positive-rational-numbers.lagda.md | 4 +++- .../inequality-positive-rational-numbers.lagda.md | 4 +++- .../maximum-positive-rational-numbers.lagda.md | 4 +++- .../maximum-rational-numbers.lagda.md | 4 ++-- .../minimum-positive-rational-numbers.lagda.md | 4 +++- .../minimum-rational-numbers.lagda.md | 4 ++-- .../multiplication-positive-rational-numbers.lagda.md | 4 +++- .../multiplication-rational-numbers.lagda.md | 6 +++--- .../strict-inequality-positive-rational-numbers.lagda.md | 4 +++- 9 files changed, 25 insertions(+), 13 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 94d8718db1..5b5cc12dc1 100644 --- a/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/addition-positive-rational-numbers.lagda.md @@ -43,7 +43,9 @@ open import group-theory.subsemigroups ## Idea -The sum of two +The +{{#concept "sum" Disambiguation="of two positive rational numbers" Agda=add-ℚ⁺}} +of two [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is their [sum](elementary-number-theory.addition-rational-numbers.md) as [rational numbers](elementary-number-theory.rational-numbers.md), and is itself 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 e9a9a7e8be..ef8913ec1d 100644 --- a/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/inequality-positive-rational-numbers.lagda.md @@ -27,7 +27,9 @@ open import order-theory.total-orders ## Idea -The standard ordering on the +The +{{#concept "standard ordering" Disambiguation="on the positive rational numbers" Agda=leq-ℚ⁺}} +on the [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is inherited from the [standard ordering](elementary-number-theory.inequality-rational-numbers.md) on diff --git a/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md index 3fc173684b..49c9fd47c9 100644 --- a/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/maximum-positive-rational-numbers.lagda.md @@ -19,7 +19,9 @@ open import order-theory.decidable-total-orders ## Idea -The maximum of two +The +{{#concept "maximum" Disambiguation="of positive rational numbers" Agda=max-ℚ⁺}} +of two [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is the [greatest](elementary-number-theory.inequality-positive-rational-numbers.md) diff --git a/src/elementary-number-theory/maximum-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-rational-numbers.lagda.md index 7fa7fda9a8..b9fb155ed9 100644 --- a/src/elementary-number-theory/maximum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/maximum-rational-numbers.lagda.md @@ -26,8 +26,8 @@ open import order-theory.decidable-total-orders ## Idea -The maximum of two -[rational numbers](elementary-number-theory.rational-numbers.md) is the +The {{#concept "maximum" Disambiguation="of rational numbers" Agda=max-ℚ}} of +two [rational numbers](elementary-number-theory.rational-numbers.md) is the [greatest](elementary-number-theory.inequality-rational-numbers.md) rational number of the two. This is the [binary least upper bound](order-theory.least-upper-bounds-posets.md) in the 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 b6c298a495..f98ff32129 100644 --- a/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minimum-positive-rational-numbers.lagda.md @@ -21,7 +21,9 @@ open import order-theory.decidable-total-orders ## Idea -The minimum of two +The +{{#concept "minimum" Disambiguation="of positive rational numbers" Agda=min-ℚ⁺}} +of two [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is the [smallest](elementary-number-theory.inequality-positive-rational-numbers.md) of diff --git a/src/elementary-number-theory/minimum-rational-numbers.lagda.md b/src/elementary-number-theory/minimum-rational-numbers.lagda.md index 095b44b1b1..4063d1044d 100644 --- a/src/elementary-number-theory/minimum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minimum-rational-numbers.lagda.md @@ -24,8 +24,8 @@ open import order-theory.decidable-total-orders ## Idea -The minimum of two -[rational numbers](elementary-number-theory.rational-numbers.md) is the +The {{#concept "minimum" Disambiguation="of rational numbers" Agda=min-ℚ}} of +two [rational numbers](elementary-number-theory.rational-numbers.md) is the [smallest](elementary-number-theory.inequality-rational-numbers.md) rational number of the two. This is the [binary greatest lower bound](order-theory.greatest-lower-bounds-posets.md) in 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 03f5348525..fd4ad86379 100644 --- a/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-positive-rational-numbers.lagda.md @@ -45,7 +45,9 @@ open import group-theory.submonoids-commutative-monoids ## Idea -The product of two +The +{{#concept "product" Disambiguation="of pairs of positive rational numbers" Agda=mul-ℚ⁺}} +of two [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is their [product](elementary-number-theory.multiplication-rational-numbers.md) as [rational numbers](elementary-number-theory.rational-numbers.md), and is diff --git a/src/elementary-number-theory/multiplication-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-rational-numbers.lagda.md index 885b17986b..49ae76aa01 100644 --- a/src/elementary-number-theory/multiplication-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-rational-numbers.lagda.md @@ -36,9 +36,9 @@ open import foundation.interchange-law ## Idea -**Multiplication** on the -[rational numbers](elementary-number-theory.rational-numbers.md) is defined by -extending +{{#concept "Multiplication" WDID=Q40276 WD="multiplication" Disambiguation="of rational numbers" Agda=mul-ℚ}} +on the [rational numbers](elementary-number-theory.rational-numbers.md) is +defined by extending [multiplication](elementary-number-theory.multiplication-integer-fractions.md) on [integer fractions](elementary-number-theory.integer-fractions.md) to the rational numbers. diff --git a/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md b/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md index c9029c7d8e..c6ca66c15f 100644 --- a/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/strict-inequality-positive-rational-numbers.lagda.md @@ -26,7 +26,9 @@ open import order-theory.strictly-preordered-sets ## Idea -The standard strict ordering on the +The +{{#concept "standard strict ordering" Disambiguation="on the positive rational numbers" Agda=le-ℚ⁺}} +on the [positive rational numbers](elementary-number-theory.positive-rational-numbers.md) is inherited from the [standard strict ordering](elementary-number-theory.strict-inequality-rational-numbers.md) From c56d410f7201bb032f4fffafc8375a18919eebaa Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 3 Oct 2025 10:12:58 -0700 Subject: [PATCH 46/59] Fixes --- .../closed-intervals-rational-numbers.lagda.md | 2 +- .../multiplication-closed-intervals-rational-numbers.lagda.md | 1 + src/real-numbers/nonnegative-real-numbers.lagda.md | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 909bc6b6d6..a95b13d771 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -14,9 +14,9 @@ open import elementary-number-theory.minimum-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.positive-and-negative-rational-numbers open import elementary-number-theory.positive-rational-numbers -open import elementary-number-theory.nonnegative-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/multiplication-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-closed-intervals-rational-numbers.lagda.md index 2cbd78f4bd..cdea4e6746 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 @@ -16,6 +16,7 @@ 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-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.multiplicative-group-of-rational-numbers diff --git a/src/real-numbers/nonnegative-real-numbers.lagda.md b/src/real-numbers/nonnegative-real-numbers.lagda.md index b2770a14d4..9f97dc4cc2 100644 --- a/src/real-numbers/nonnegative-real-numbers.lagda.md +++ b/src/real-numbers/nonnegative-real-numbers.lagda.md @@ -10,7 +10,6 @@ module real-numbers.nonnegative-real-numbers where ```agda open import elementary-number-theory.addition-nonnegative-rational-numbers -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.nonnegative-rational-numbers From f77e973a50b8581bc3de728be0f4c28eb9f8e0d0 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 3 Oct 2025 10:14:35 -0700 Subject: [PATCH 47/59] Revert --- .../maximum-rational-numbers.lagda.md | 5 +++-- .../minimum-rational-numbers.lagda.md | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/elementary-number-theory/maximum-rational-numbers.lagda.md b/src/elementary-number-theory/maximum-rational-numbers.lagda.md index b9fb155ed9..5fcfe7487f 100644 --- a/src/elementary-number-theory/maximum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/maximum-rational-numbers.lagda.md @@ -26,8 +26,9 @@ open import order-theory.decidable-total-orders ## Idea -The {{#concept "maximum" Disambiguation="of rational numbers" Agda=max-ℚ}} of -two [rational numbers](elementary-number-theory.rational-numbers.md) is the +The +{{#concept "maximum" Disambiguation="of pairs of rational numbers" Agda=max-ℚ}} +of two [rational numbers](elementary-number-theory.rational-numbers.md) is the [greatest](elementary-number-theory.inequality-rational-numbers.md) rational number of the two. This is the [binary least upper bound](order-theory.least-upper-bounds-posets.md) in the diff --git a/src/elementary-number-theory/minimum-rational-numbers.lagda.md b/src/elementary-number-theory/minimum-rational-numbers.lagda.md index 4063d1044d..ac501ad417 100644 --- a/src/elementary-number-theory/minimum-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minimum-rational-numbers.lagda.md @@ -24,8 +24,9 @@ open import order-theory.decidable-total-orders ## Idea -The {{#concept "minimum" Disambiguation="of rational numbers" Agda=min-ℚ}} of -two [rational numbers](elementary-number-theory.rational-numbers.md) is the +The +{{#concept "minimum" Disambiguation="of pairs of rational numbers" Agda=min-ℚ}} +of two [rational numbers](elementary-number-theory.rational-numbers.md) is the [smallest](elementary-number-theory.inequality-rational-numbers.md) rational number of the two. This is the [binary greatest lower bound](order-theory.greatest-lower-bounds-posets.md) in From e27c74d4b73a4672e00ac19db5b88eb346416db9 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 3 Oct 2025 10:16:47 -0700 Subject: [PATCH 48/59] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../nonnegative-rational-numbers.lagda.md | 2 +- .../nonpositive-rational-numbers.lagda.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md index e7095c87e2..5ba5dbe540 100644 --- a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md @@ -413,7 +413,7 @@ abstract le-zero-nonnegative-ℚ⁰⁺ (q , pos-q) = le-zero-is-positive-ℚ q pos-q ``` -### If `p < q` and `p` is nonnegative, `q` is positive +### If `p < q` and `p` is nonnegative, then `q` is positive ```agda abstract diff --git a/src/elementary-number-theory/nonpositive-rational-numbers.lagda.md b/src/elementary-number-theory/nonpositive-rational-numbers.lagda.md index 462c031471..6d305b5b27 100644 --- a/src/elementary-number-theory/nonpositive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonpositive-rational-numbers.lagda.md @@ -123,7 +123,7 @@ module _ is-nonpositive-leq-zero-ℚ) ``` -### If `p < q` and `q` is nonpositive, `p` is negative +### If `p < q` and `q` is nonpositive, then `p` is negative ```agda abstract From d566f5f3e2f5776bb9994446c1ce8e5506debd19 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Fri, 3 Oct 2025 10:31:53 -0700 Subject: [PATCH 49/59] Respond to comments --- src/elementary-number-theory.lagda.md | 1 + ...closed-intervals-rational-numbers.lagda.md | 58 +++++++++++-------- ...closed-intervals-rational-numbers.lagda.md | 40 +++++++++++++ ...closed-intervals-rational-numbers.lagda.md | 50 ++++++++-------- ...ive-and-negative-rational-numbers.lagda.md | 1 + ...closed-intervals-rational-numbers.lagda.md | 5 +- .../nonnegative-rational-numbers.lagda.md | 12 ---- .../nonpositive-rational-numbers.lagda.md | 1 + ...ive-and-negative-rational-numbers.lagda.md | 12 ++++ .../closed-intervals-total-orders.lagda.md | 32 +++++----- 10 files changed, 133 insertions(+), 79 deletions(-) create mode 100644 src/elementary-number-theory/interior-closed-intervals-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 9739bd3507..e88a4ccf09 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -105,6 +105,7 @@ 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.integers public +open import elementary-number-theory.interior-closed-intervals-rational-numbers public open import elementary-number-theory.jacobi-symbol public open import elementary-number-theory.kolakoski-sequence public open import elementary-number-theory.legendre-symbol public diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index ff122cacd9..a549e04f49 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -15,7 +15,6 @@ open import elementary-number-theory.nonnegative-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers -open import foundation.conjunction open import foundation.dependent-pair-types open import foundation.identity-types open import foundation.injective-maps @@ -55,7 +54,13 @@ lower-bound-closed-interval-ℚ = upper-bound-closed-interval-ℚ : closed-interval-ℚ → ℚ upper-bound-closed-interval-ℚ = upper-bound-closed-interval-Poset ℚ-Poset +``` + +## Properties + +### The subtype associated with a closed interval +```agda subtype-closed-interval-ℚ : closed-interval-ℚ → subtype lzero ℚ subtype-closed-interval-ℚ = @@ -64,13 +69,21 @@ subtype-closed-interval-ℚ = is-in-closed-interval-ℚ : closed-interval-ℚ → ℚ → UU lzero is-in-closed-interval-ℚ [a,b] = is-in-subtype (subtype-closed-interval-ℚ [a,b]) +``` +### The property of a function `ℚ → ℚ` of mapping a closed interval to a closed interval + +```agda is-closed-interval-map-prop-ℚ : (ℚ → ℚ) → closed-interval-ℚ → closed-interval-ℚ → Prop lzero is-closed-interval-map-prop-ℚ = is-closed-interval-map-prop-Poset ℚ-Poset ℚ-Poset +``` + +### The property of being above or below a closed interval +```agda is-below-prop-closed-interval-ℚ : closed-interval-ℚ → subtype lzero ℚ is-below-prop-closed-interval-ℚ ((a , _) , _) b = le-ℚ-Prop b a @@ -78,7 +91,11 @@ is-below-prop-closed-interval-ℚ ((a , _) , _) b = le-ℚ-Prop b a is-above-prop-closed-interval-ℚ : closed-interval-ℚ → subtype lzero ℚ is-above-prop-closed-interval-ℚ ((_ , a) , _) b = le-ℚ-Prop a b +``` +### The width of a closed interval + +```agda nonnegative-width-closed-interval-ℚ : closed-interval-ℚ → ℚ⁰⁺ nonnegative-width-closed-interval-ℚ ((a , b) , a≤b) = @@ -87,18 +104,17 @@ nonnegative-width-closed-interval-ℚ ((a , b) , a≤b) = width-closed-interval-ℚ : closed-interval-ℚ → ℚ width-closed-interval-ℚ [a,b] = rational-ℚ⁰⁺ (nonnegative-width-closed-interval-ℚ [a,b]) +``` -is-injective-subtype-closed-interval-ℚ : - is-injective subtype-closed-interval-ℚ -is-injective-subtype-closed-interval-ℚ = - is-injective-subtype-closed-interval-Poset ℚ-Poset +### The property of a closed interval of being proper -is-nontrivial-prop-closed-interval-ℚ : closed-interval-ℚ → Prop lzero -is-nontrivial-prop-closed-interval-ℚ ((a , b) , _) = le-ℚ-Prop a b +```agda +is-proper-prop-closed-interval-ℚ : closed-interval-ℚ → Prop lzero +is-proper-prop-closed-interval-ℚ ((a , b) , _) = le-ℚ-Prop a b -is-nontrivial-closed-interval-ℚ : closed-interval-ℚ → UU lzero -is-nontrivial-closed-interval-ℚ [a,b] = - type-Prop (is-nontrivial-prop-closed-interval-ℚ [a,b]) +is-proper-closed-interval-ℚ : closed-interval-ℚ → UU lzero +is-proper-closed-interval-ℚ [a,b] = + type-Prop (is-proper-prop-closed-interval-ℚ [a,b]) ``` ### Important ranges @@ -111,7 +127,14 @@ one-one-closed-interval-ℚ : closed-interval-ℚ one-one-closed-interval-ℚ = ((one-ℚ , one-ℚ) , refl-leq-ℚ one-ℚ) ``` -## Properties +### The map from closed intervals to their subtypes is injective + +```agda +is-injective-subtype-closed-interval-ℚ : + is-injective subtype-closed-interval-ℚ +is-injective-subtype-closed-interval-ℚ = + is-injective-subtype-closed-interval-Poset ℚ-Poset +``` ### Characterization of equality @@ -163,19 +186,6 @@ is-closed-interval-map-ℚ : is-closed-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset ``` -### Interior intervals - -```agda -is-interior-prop-closed-interval-ℚ : - closed-interval-ℚ → closed-interval-ℚ → Prop lzero -is-interior-prop-closed-interval-ℚ ((x , y) , _) ((x' , y') , _) = - le-ℚ-Prop x x' ∧ le-ℚ-Prop y' y - -is-interior-closed-interval-ℚ : closed-interval-ℚ → closed-interval-ℚ → UU lzero -is-interior-closed-interval-ℚ [x,y] [x',y'] = - type-Prop (is-interior-prop-closed-interval-ℚ [x,y] [x',y']) -``` - ### The bounds of a closed interval are elements ```agda diff --git a/src/elementary-number-theory/interior-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/interior-closed-intervals-rational-numbers.lagda.md new file mode 100644 index 0000000000..1f6e95a700 --- /dev/null +++ b/src/elementary-number-theory/interior-closed-intervals-rational-numbers.lagda.md @@ -0,0 +1,40 @@ +# Interior closed intervals in the rational numbers + +```agda +module elementary-number-theory.interior-closed-intervals-rational-numbers where +``` + +
Imports + +```agda +open import elementary-number-theory.closed-intervals-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.conjunction +open import foundation.dependent-pair-types +open import foundation.propositions +open import foundation.universe-levels +``` + +
+ +## Idea + +Given two +[closed intervals of rational numbers](elementary-number-theory.closed-intervals-rational-numbers.md) +[a, b] and [c, d], [c, d] is said to be +{{#concept "interior" Disambiguation="closed intervals of rational numbers" Agda=is-interior-closed-interval-ℚ}} +to [a, b] if `a < c` and `d < b`. + +## Definition + +```agda +is-interior-prop-closed-interval-ℚ : + closed-interval-ℚ → closed-interval-ℚ → Prop lzero +is-interior-prop-closed-interval-ℚ ((x , y) , _) ((x' , y') , _) = + le-ℚ-Prop x x' ∧ le-ℚ-Prop y' y + +is-interior-closed-interval-ℚ : closed-interval-ℚ → closed-interval-ℚ → UU lzero +is-interior-closed-interval-ℚ [x,y] [x',y'] = + type-Prop (is-interior-prop-closed-interval-ℚ [x,y] [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 6961c871f1..1caef2ec9d 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 @@ -14,9 +14,11 @@ open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.interior-closed-intervals-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.minima-and-maxima-rational-numbers open import elementary-number-theory.minimum-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-rational-numbers open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers @@ -873,8 +875,8 @@ abstract abstract is-nonnegative-left-lower-bound-eq-lower-bound-mul-interval-mul-lower-bound-nontrivial-closed-interval-ℚ : ([a,b] [c,d] : closed-interval-ℚ) → - (aImports ```agda +open import elementary-number-theory.multiplication-nonnegative-rational-numbers open import elementary-number-theory.multiplication-positive-and-negative-integers open import elementary-number-theory.multiplication-rational-numbers open import elementary-number-theory.negative-rational-numbers 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 29fc33d00a..8e2d8c11ab 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 @@ -9,6 +9,7 @@ module elementary-number-theory.negation-closed-intervals-rational-numbers where ```agda open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.interior-closed-intervals-rational-numbers open import elementary-number-theory.rational-numbers open import elementary-number-theory.strict-inequality-rational-numbers @@ -52,7 +53,7 @@ abstract ```agda abstract is-nontrivial-neg-closed-interval-ℚ : - ([a,b] : closed-interval-ℚ) → is-nontrivial-closed-interval-ℚ [a,b] → - is-nontrivial-closed-interval-ℚ (neg-closed-interval-ℚ [a,b]) + ([a,b] : closed-interval-ℚ) → is-proper-closed-interval-ℚ [a,b] → + is-proper-closed-interval-ℚ (neg-closed-interval-ℚ [a,b]) is-nontrivial-neg-closed-interval-ℚ ((a , b) , _) a Date: Fri, 3 Oct 2025 10:34:58 -0700 Subject: [PATCH 50/59] Merge --- .../nonnegative-rational-numbers.lagda.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md index bb80c7c95f..22352dc405 100644 --- a/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md +++ b/src/elementary-number-theory/nonnegative-rational-numbers.lagda.md @@ -236,15 +236,3 @@ 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 `p < q` and `p` is nonnegative, `q` is positive - -```agda -abstract - is-positive-le-nonnegative-ℚ : - (p : ℚ⁰⁺) (q : ℚ) → le-ℚ (rational-ℚ⁰⁺ p) q → is-positive-ℚ q - is-positive-le-nonnegative-ℚ (p , nonneg-p) q p Date: Sat, 4 Oct 2025 08:08:26 -0700 Subject: [PATCH 51/59] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- .../interior-closed-intervals-rational-numbers.lagda.md | 2 +- .../minima-and-maxima-rational-numbers.lagda.md | 2 +- .../negation-closed-intervals-rational-numbers.lagda.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/elementary-number-theory/interior-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/interior-closed-intervals-rational-numbers.lagda.md index 1f6e95a700..9678e8b2cc 100644 --- a/src/elementary-number-theory/interior-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/interior-closed-intervals-rational-numbers.lagda.md @@ -22,7 +22,7 @@ open import foundation.universe-levels Given two [closed intervals of rational numbers](elementary-number-theory.closed-intervals-rational-numbers.md) -[a, b] and [c, d], [c, d] is said to be +[a, b] and [c, d], then [c, d] is said to be {{#concept "interior" Disambiguation="closed intervals of rational numbers" Agda=is-interior-closed-interval-ℚ}} to [a, b] if `a < c` and `d < b`. diff --git a/src/elementary-number-theory/minima-and-maxima-rational-numbers.lagda.md b/src/elementary-number-theory/minima-and-maxima-rational-numbers.lagda.md index 2ce0b5f861..9c62ce0286 100644 --- a/src/elementary-number-theory/minima-and-maxima-rational-numbers.lagda.md +++ b/src/elementary-number-theory/minima-and-maxima-rational-numbers.lagda.md @@ -21,7 +21,7 @@ open import foundation.identity-types ## Idea -In this file, we outline basic relations between +On this page, we outline basic relations between [minima](elementary-number-theory.minimum-rational-numbers.md) and [maxima](elementary-number-theory.maximum-rational-numbers.md) of [rational numbers](elementary-number-theory.rational-numbers.md). 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 8e2d8c11ab..a8d9825131 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 @@ -20,7 +20,7 @@ open import foundation.dependent-pair-types ## Idea -The negation of a +The {{#concept "negation" Disambiguation="closed interval of rational numbers" Agda=neg-closed-interval-ℚ}} of a [closed interval of rational numbers](elementary-number-theory.closed-intervals-rational-numbers.md) [a, b] is [-b, -a]. From 4566e509552e3c27f0aa127e141b51b611c2fe39 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 4 Oct 2025 08:11:59 -0700 Subject: [PATCH 52/59] make pre-commit --- .../negation-closed-intervals-rational-numbers.lagda.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 a8d9825131..3ca6633307 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 @@ -20,7 +20,9 @@ open import foundation.dependent-pair-types ## Idea -The {{#concept "negation" Disambiguation="closed interval of rational numbers" Agda=neg-closed-interval-ℚ}} of a +The +{{#concept "negation" Disambiguation="closed interval of rational numbers" Agda=neg-closed-interval-ℚ}} +of a [closed interval of rational numbers](elementary-number-theory.closed-intervals-rational-numbers.md) [a, b] is [-b, -a]. From 52f4e42cdc99dc5fc09be373db0b9f060d7b849a Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 4 Oct 2025 08:37:09 -0700 Subject: [PATCH 53/59] Respond to review comments --- src/elementary-number-theory.lagda.md | 2 + ...-preserving-maps-rational-numbers.lagda.md | 39 +++++++++++++++++++ ...closed-intervals-rational-numbers.lagda.md | 19 --------- ...closed-intervals-rational-numbers.lagda.md | 2 + ...closed-intervals-rational-numbers.lagda.md | 1 + .../positive-rational-numbers.lagda.md | 18 +++++++++ ...closed-intervals-rational-numbers.lagda.md | 38 ++++++++++++++++++ 7 files changed, 100 insertions(+), 19 deletions(-) create mode 100644 src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md create mode 100644 src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index bab4705bfb..1a8becce8f 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -40,6 +40,7 @@ open import elementary-number-theory.binomial-theorem-integers public open import elementary-number-theory.binomial-theorem-natural-numbers public open import elementary-number-theory.bounded-sums-arithmetic-functions public open import elementary-number-theory.catalan-numbers public +open import elementary-number-theory.closed-interval-preserving-maps-rational-numbers public open import elementary-number-theory.closed-intervals-rational-numbers public open import elementary-number-theory.cofibonacci public open import elementary-number-theory.collatz-bijection public @@ -173,6 +174,7 @@ open import elementary-number-theory.powers-integers public open import elementary-number-theory.powers-of-two 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 open import elementary-number-theory.proper-divisors-natural-numbers public open import elementary-number-theory.pythagorean-triples public open import elementary-number-theory.rational-numbers public diff --git a/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md b/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md new file mode 100644 index 0000000000..8e87715499 --- /dev/null +++ b/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md @@ -0,0 +1,39 @@ +# Closed interval preserving maps between total orders + +```agda +module elementary-number-theory.closed-interval-preserving-maps-rational-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.rational-numbers + +open import foundation.universe-levels + +open import order-theory.closed-interval-preserving-maps-posets +``` + +
+ +## Idea + +A map from the [rational numbers](elementary-number-theory.rational-numbers.md) +to themselves `f : ℚ → ℚ` is +{{#concept "closed interval preserving" Agda=is-closed-interval-map-ℚ disambiguation="map between rational numbers"}} +if the [image](foundation.images-subtypes.md) of a +[closed interval](elementary-number-theory.closed-intervals-rational-numbers.md) +is always a closed interval in `Y`. Equivalently, it is a +[closed interval preserving map](order-theory.closed-interval-preserving-maps-total-orders.md) +on the +[total order of rational numbers](elementary-number-theory.decidable-total-order-rational-numbers.md). + +## Definition + +```agda +is-closed-interval-map-ℚ : + (ℚ → ℚ) → ([a,b] [c,d] : closed-interval-ℚ) → UU lzero +is-closed-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset +``` diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 5a32a32a46..392bb1f509 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -111,17 +111,6 @@ width-closed-interval-ℚ [a,b] = rational-ℚ⁰⁺ (nonnegative-width-closed-interval-ℚ [a,b]) ``` -### The property of a closed interval of being proper - -```agda -is-proper-prop-closed-interval-ℚ : closed-interval-ℚ → Prop lzero -is-proper-prop-closed-interval-ℚ ((a , b) , _) = le-ℚ-Prop a b - -is-proper-closed-interval-ℚ : closed-interval-ℚ → UU lzero -is-proper-closed-interval-ℚ [a,b] = - type-Prop (is-proper-prop-closed-interval-ℚ [a,b]) -``` - ### Important ranges ```agda @@ -183,14 +172,6 @@ abstract ( right-leq-left-max-ℚ p q q≤p) ``` -### Maps from rational intervals to rational intervals - -```agda -is-closed-interval-map-ℚ : - (ℚ → ℚ) → ([a,b] [c,d] : closed-interval-ℚ) → UU lzero -is-closed-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset -``` - ### The bounds of a closed interval are elements ```agda 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 641cff359b..5195d55f95 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 @@ -10,6 +10,7 @@ module elementary-number-theory.multiplication-closed-intervals-rational-numbers open import elementary-number-theory.addition-closed-intervals-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.closed-interval-preserving-maps-rational-numbers open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers @@ -31,6 +32,7 @@ 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.proper-closed-intervals-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/negation-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/negation-closed-intervals-rational-numbers.lagda.md index 3ca6633307..dce4758dfc 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 @@ -10,6 +10,7 @@ module elementary-number-theory.negation-closed-intervals-rational-numbers where open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.interior-closed-intervals-rational-numbers +open import elementary-number-theory.proper-closed-intervals-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/positive-rational-numbers.lagda.md b/src/elementary-number-theory/positive-rational-numbers.lagda.md index 22eeb4ad5c..33ca671624 100644 --- a/src/elementary-number-theory/positive-rational-numbers.lagda.md +++ b/src/elementary-number-theory/positive-rational-numbers.lagda.md @@ -12,6 +12,7 @@ module elementary-number-theory.positive-rational-numbers where open import elementary-number-theory.addition-rational-numbers open import elementary-number-theory.cross-multiplication-difference-integer-fractions 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 @@ -299,3 +300,20 @@ abstract nonzero-ℚ⁺ : positive-ℚ → nonzero-ℚ nonzero-ℚ⁺ (x , P) = (x , is-nonzero-is-positive-ℚ P) ``` + +### If `p ≤ q` for positive `p`, then `q` is positive + +```agda +abstract + is-positive-leq-ℚ⁺ : + (p : ℚ⁺) (q : ℚ) → leq-ℚ (rational-ℚ⁺ p) q → is-positive-ℚ q + is-positive-leq-ℚ⁺ (p , pos-p) q p≤q = + is-positive-le-zero-ℚ + ( q) + ( concatenate-le-leq-ℚ _ _ _ (le-zero-is-positive-ℚ p pos-p) p≤q) + + is-positive-le-ℚ⁺ : + (p : ℚ⁺) (q : ℚ) → le-ℚ (rational-ℚ⁺ p) q → is-positive-ℚ q + is-positive-le-ℚ⁺ p q pImports + +```agda +open import elementary-number-theory.closed-intervals-rational-numbers +open import elementary-number-theory.strict-inequality-rational-numbers + +open import foundation.dependent-pair-types +open import foundation.propositions +open import foundation.universe-levels +``` + +
+ +## Idea + +A +[closed interval](elementary-number-theory.closed-intervals-rational-numbers.md) +of [rational numbers](elementary-number-theory.rational-numbers.md) is said to +be {{#concept "proper" Agda=is-proper-closed-interval-ℚ}} if its lower bound is +[strictly less than](elementary-number-theory.strict-inequality-rational-numbers.md) +its upper bound, or equivalently, it contains more than one element. + +## Definition + +```agda +is-proper-prop-closed-interval-ℚ : closed-interval-ℚ → Prop lzero +is-proper-prop-closed-interval-ℚ ((a , b) , _) = le-ℚ-Prop a b + +is-proper-closed-interval-ℚ : closed-interval-ℚ → UU lzero +is-proper-closed-interval-ℚ [a,b] = + type-Prop (is-proper-prop-closed-interval-ℚ [a,b]) +``` From 7217f3a774a50d231a8774109573cb35f3ef5a50 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 4 Oct 2025 17:56:32 -0700 Subject: [PATCH 54/59] Apply suggestions from code review Co-authored-by: Fredrik Bakke --- ...-interval-preserving-maps-rational-numbers.lagda.md | 8 +++++++- .../closed-intervals-rational-numbers.lagda.md | 10 ---------- .../proper-closed-intervals-rational-numbers.lagda.md | 2 +- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md b/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md index 8e87715499..2c3faf91be 100644 --- a/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md @@ -1,4 +1,4 @@ -# Closed interval preserving maps between total orders +# Closed interval preserving endomaps on the rational numbers ```agda module elementary-number-theory.closed-interval-preserving-maps-rational-numbers where @@ -36,4 +36,10 @@ on the is-closed-interval-map-ℚ : (ℚ → ℚ) → ([a,b] [c,d] : closed-interval-ℚ) → UU lzero is-closed-interval-map-ℚ = is-closed-interval-map-Poset ℚ-Poset ℚ-Poset + +is-closed-interval-map-prop-ℚ : + (ℚ → ℚ) → closed-interval-ℚ → closed-interval-ℚ → + Prop lzero +is-closed-interval-map-prop-ℚ = + is-closed-interval-map-prop-Poset ℚ-Poset ℚ-Poset ``` diff --git a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md index 392bb1f509..1dfb7131df 100644 --- a/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-intervals-rational-numbers.lagda.md @@ -76,16 +76,6 @@ is-in-closed-interval-ℚ [a,b] = is-in-subtype (subtype-closed-interval-ℚ [a,b]) ``` -### The property of a function `ℚ → ℚ` of mapping a closed interval to a closed interval - -```agda -is-closed-interval-map-prop-ℚ : - (ℚ → ℚ) → closed-interval-ℚ → closed-interval-ℚ → - Prop lzero -is-closed-interval-map-prop-ℚ = - is-closed-interval-map-prop-Poset ℚ-Poset ℚ-Poset -``` - ### The property of being above or below a closed interval ```agda diff --git a/src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md index 9fc78b412f..21c6818ccd 100644 --- a/src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md @@ -22,7 +22,7 @@ open import foundation.universe-levels A [closed interval](elementary-number-theory.closed-intervals-rational-numbers.md) of [rational numbers](elementary-number-theory.rational-numbers.md) is said to -be {{#concept "proper" Agda=is-proper-closed-interval-ℚ}} if its lower bound is +be {{#concept "proper" Disambiguation="closed interval of rational numbers" Agda=is-proper-closed-interval-ℚ}} if its lower bound is [strictly less than](elementary-number-theory.strict-inequality-rational-numbers.md) its upper bound, or equivalently, it contains more than one element. From 4413d69b669860f3c691a55e838671cf8baa2458 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 4 Oct 2025 17:59:34 -0700 Subject: [PATCH 55/59] make pre-commit --- .../proper-closed-intervals-rational-numbers.lagda.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md index 21c6818ccd..63ac95e8d6 100644 --- a/src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/proper-closed-intervals-rational-numbers.lagda.md @@ -22,7 +22,9 @@ open import foundation.universe-levels A [closed interval](elementary-number-theory.closed-intervals-rational-numbers.md) of [rational numbers](elementary-number-theory.rational-numbers.md) is said to -be {{#concept "proper" Disambiguation="closed interval of rational numbers" Agda=is-proper-closed-interval-ℚ}} if its lower bound is +be +{{#concept "proper" Disambiguation="closed interval of rational numbers" Agda=is-proper-closed-interval-ℚ}} +if its lower bound is [strictly less than](elementary-number-theory.strict-inequality-rational-numbers.md) its upper bound, or equivalently, it contains more than one element. From abef95a92c19fbb8443bc31ff4590cb1db9be21c Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Sat, 4 Oct 2025 18:46:50 -0700 Subject: [PATCH 56/59] Fix import --- .../closed-interval-preserving-maps-rational-numbers.lagda.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md b/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md index 2c3faf91be..981f475cc4 100644 --- a/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md +++ b/src/elementary-number-theory/closed-interval-preserving-maps-rational-numbers.lagda.md @@ -11,6 +11,7 @@ open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.inequality-rational-numbers open import elementary-number-theory.rational-numbers +open import foundation.propositions open import foundation.universe-levels open import order-theory.closed-interval-preserving-maps-posets From 80e5f3c6c9bdf49ff4cd5624aabf442ffd3a7680 Mon Sep 17 00:00:00 2001 From: Louis Wasserman Date: Mon, 6 Oct 2025 13:41:52 -0700 Subject: [PATCH 57/59] Split out multiplication of interior intervals --- src/elementary-number-theory.lagda.md | 1 + ...closed-intervals-rational-numbers.lagda.md | 561 ---------------- ...closed-intervals-rational-numbers.lagda.md | 610 ++++++++++++++++++ 3 files changed, 611 insertions(+), 561 deletions(-) create mode 100644 src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md diff --git a/src/elementary-number-theory.lagda.md b/src/elementary-number-theory.lagda.md index 146ce108bb..89aa81501e 100644 --- a/src/elementary-number-theory.lagda.md +++ b/src/elementary-number-theory.lagda.md @@ -132,6 +132,7 @@ open import elementary-number-theory.monoid-of-natural-numbers-with-maximum publ open import elementary-number-theory.multiplication-closed-intervals-rational-numbers public open import elementary-number-theory.multiplication-integer-fractions public 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-nonnegative-rational-numbers public 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 a24b07e8e7..1f9b74e14d 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 @@ -7,7 +7,6 @@ module elementary-number-theory.multiplication-closed-intervals-rational-numbers
Imports ```agda -open import elementary-number-theory.addition-closed-intervals-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.closed-interval-preserving-maps-rational-numbers @@ -15,13 +14,9 @@ open import elementary-number-theory.closed-intervals-rational-numbers open import elementary-number-theory.decidable-total-order-rational-numbers open import elementary-number-theory.difference-rational-numbers open import elementary-number-theory.inequality-rational-numbers -open import elementary-number-theory.interior-closed-intervals-rational-numbers open import elementary-number-theory.maximum-rational-numbers open import elementary-number-theory.minima-and-maxima-rational-numbers open import elementary-number-theory.minimum-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-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 @@ -29,19 +24,15 @@ open import elementary-number-theory.multiplicative-group-of-rational-numbers 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.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.proper-closed-intervals-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.cartesian-product-types -open import foundation.coproduct-types open import foundation.dependent-pair-types open import foundation.disjunction open import foundation.empty-types @@ -872,555 +863,3 @@ abstract ( neg-closed-interval-ℚ) ( commutative-mul-closed-interval-ℚ [c,d] [a,b]) ``` - -### The sign of interval boundaries - -```agda -abstract - is-nonnegative-left-lower-bound-eq-lower-bound-mul-interval-mul-lower-bound-nontrivial-closed-interval-ℚ : - ([a,b] [c,d] : closed-interval-ℚ) → - (aImports + +```agda +open import elementary-number-theory.closed-intervals-rational-numbers +open import elementary-number-theory.decidable-total-order-rational-numbers +open import elementary-number-theory.inequality-rational-numbers +open import elementary-number-theory.interior-closed-intervals-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-nonnegative-rational-numbers +open import elementary-number-theory.multiplication-nonpositive-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.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.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.proper-closed-intervals-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.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.transport-along-identifications + +open import order-theory.total-orders +``` + +
+ +## Idea + +If `[a', b']` is a +[proper](elementary-number-theory.proper-closed-intervals-rational-numbers.md) +[closed interval](elementary-number-theory.closed-intervals-rational-numbers.md) +of [rational numbers](elementary-number-theory.rational-numbers.md) and is +[interior](elementary-number-theory.interior-closed-intervals-rational-numbers.md) +to `[a, b]`, and `[c', d']` is a proper closed interval of rational numbers +interior to `[c, d]`, then the +[product](elementary-number-theory.multiplication-closed-intervals-rational-numbers.md) +of `[a', b']` and `[c', d']` is interior to the product of `[a, b]` and +`[c, d]`. + +## Proof + +### The sign of interval boundaries + +```agda +abstract + is-nonnegative-left-lower-bound-eq-lower-bound-mul-interval-mul-lower-bound-nontrivial-closed-interval-ℚ : + ([a,b] [c,d] : closed-interval-ℚ) → + (a Date: Mon, 6 Oct 2025 15:02:01 -0700 Subject: [PATCH 58/59] Fix --- ...-closed-intervals-rational-numbers.lagda.md | 10 +++++----- .../nonpositive-rational-numbers.lagda.md | 14 -------------- ...tive-and-negative-rational-numbers.lagda.md | 18 ++++++++++++++++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md index 6f11eaf5c2..b34638cce6 100644 --- a/src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md @@ -324,10 +324,10 @@ abstract ( c' Date: Mon, 6 Oct 2025 15:08:53 -0700 Subject: [PATCH 59/59] Fix --- ...interior-closed-intervals-rational-numbers.lagda.md | 10 +++++----- .../positive-and-negative-rational-numbers.lagda.md | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md b/src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md index b34638cce6..b0d806d19f 100644 --- a/src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md +++ b/src/elementary-number-theory/multiplication-interior-closed-intervals-rational-numbers.lagda.md @@ -402,7 +402,7 @@ abstract ( c'