Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
74dfa31
Progress
lowasser Aug 19, 2025
aa578cd
Progress
lowasser Aug 19, 2025
a596e90
Merge branch 'master' into min-max-total
lowasser Aug 19, 2025
034dea6
Progress
lowasser Aug 20, 2025
0f863ac
Merge branch 'min-max-total' into intervals
lowasser Aug 20, 2025
90f991c
Progress
lowasser Aug 20, 2025
a6a698e
Merge branch 'master' into intervals
lowasser Sep 6, 2025
7c5f694
Progress
lowasser Sep 6, 2025
d3b06b5
Merge branch 'master' into intervals
lowasser Sep 9, 2025
8ea30ea
Progress
lowasser Sep 9, 2025
9726c59
Respond to review comments
lowasser Sep 12, 2025
d7509a2
Merge branch 'master' into intervals
lowasser Sep 12, 2025
a868f8a
make pre-commit
lowasser Sep 13, 2025
9400255
make pre-commit
lowasser Sep 13, 2025
a0edf6e
Progress
lowasser Sep 14, 2025
0202393
Renamings
lowasser Sep 14, 2025
ab17ce8
Split out nonnegative rational operations
lowasser Sep 14, 2025
8be4cf8
naming
fredrik-bakke Sep 21, 2025
e7b2418
fix link
fredrik-bakke Sep 21, 2025
dbdcab2
edits
fredrik-bakke Sep 21, 2025
c4ec81e
fix more links
fredrik-bakke Sep 21, 2025
e285dac
concept macro closed intervals rational numbers
fredrik-bakke Sep 21, 2025
9348d77
Rename
lowasser Sep 24, 2025
9979a0f
Merge remote-tracking branch 'origin/intervals' into intervals
lowasser Sep 24, 2025
e97c045
Renaming
lowasser Sep 24, 2025
ee0c903
Renaming
lowasser Sep 24, 2025
2cbc082
Progress
lowasser Sep 24, 2025
2ec83b1
Progress
lowasser Sep 30, 2025
8aa2992
Merge branch 'master' into intervals
lowasser Sep 30, 2025
0eb3098
Rename back
lowasser Oct 1, 2025
b071f0f
Fix link
lowasser Oct 1, 2025
d55ff8b
Fix concept
lowasser Oct 1, 2025
01d0853
Progress
lowasser Oct 1, 2025
1f89925
Progress
lowasser Oct 1, 2025
57f7b4d
Progress
lowasser Oct 1, 2025
b7e4310
Merge branch 'master' into split-mul-nonneg-rat
lowasser Oct 1, 2025
cd3348c
Progress
lowasser Oct 1, 2025
5f35912
Progress
lowasser Oct 1, 2025
903e8d0
Move more out of nonnegative
lowasser Oct 1, 2025
06e9319
Merge branch 'split-mul-nonneg-rat' into split-pos-rat
lowasser Oct 1, 2025
0d12e8a
Update dependencies
lowasser Oct 1, 2025
c43da1f
Apply suggestions from code review
lowasser Oct 1, 2025
6ef4366
Fix 'inhabited closed' stragglers
lowasser Oct 1, 2025
865797a
make pre-commit format
lowasser Oct 1, 2025
76f1766
Apply suggestions from code review
lowasser Oct 1, 2025
07300fe
Parenthesize concatenated paths
lowasser Oct 1, 2025
0118a0c
Merge remote-tracking branch 'origin/intervals' into intervals
lowasser Oct 1, 2025
fd6fac6
Merge branch 'intervals' into narrow-mul-interval
lowasser Oct 1, 2025
9235a01
Progress
lowasser Oct 2, 2025
af3df99
Merge branch 'master' into narrow-mul-interval
lowasser Oct 2, 2025
9cd7d6e
Finish the first case
lowasser Oct 2, 2025
2268ddd
Remove concepts for specific instances
lowasser Oct 2, 2025
a300c7a
Merge branch 'split-mul-nonneg-rat' into split-pos-rat
lowasser Oct 2, 2025
6d2aa78
Remove concepts for specific instances
lowasser Oct 2, 2025
5bc67cf
Finish first version
lowasser Oct 3, 2025
53fa7dc
Merge branch 'split-pos-rat' into narrow-mul-interval-split
lowasser Oct 3, 2025
a7d87bd
Progress
lowasser Oct 3, 2025
faf6f93
Progress
lowasser Oct 3, 2025
bbaff84
Finish proving the interior condition
lowasser Oct 3, 2025
73d51d0
Merge branch 'narrow-mul-interval' into mul-reals-v3
lowasser Oct 3, 2025
4700485
Progress
lowasser Oct 3, 2025
2ddc21c
Width bounds on multiplication of closed intervals
lowasser Oct 3, 2025
d095828
Add more parentheses
lowasser Oct 3, 2025
9ef4a7e
Progress
lowasser Oct 3, 2025
440678d
Merge branch 'master' into split-pos-rat
lowasser Oct 3, 2025
d150905
Progress
lowasser Oct 3, 2025
7290d4c
Restore unlinked concepts
lowasser Oct 3, 2025
c56d410
Fixes
lowasser Oct 3, 2025
f77e973
Revert
lowasser Oct 3, 2025
e27c74d
Apply suggestions from code review
lowasser Oct 3, 2025
8172049
Merge branch 'master' into narrow-mul-interval
lowasser Oct 3, 2025
d566f5f
Respond to comments
lowasser Oct 3, 2025
6c1d5fb
Merge branch 'split-pos-rat' into narrow-mul-interval-split
lowasser Oct 3, 2025
5ef0748
Merge branch 'narrow-mul-interval' into narrow-mul-interval-split
lowasser Oct 3, 2025
c41e40a
Merge
lowasser Oct 3, 2025
cddcd39
Merge branch 'narrow-mul-interval-split' into mul-reals-v3
lowasser Oct 3, 2025
41838dd
Progress
lowasser Oct 3, 2025
3d5ba8b
Progress
lowasser Oct 3, 2025
179c004
Progress
lowasser Oct 3, 2025
f6720ff
Merge branch 'poset-closed-intervals' into mul-reals-v3
lowasser Oct 3, 2025
53cbd3f
Split intersections and spans to their own files
lowasser Oct 3, 2025
75ea7b7
Merge branch 'poset-closed-intervals' into mul-reals-v3
lowasser Oct 3, 2025
fed7395
Progress
lowasser Oct 3, 2025
3c47ed8
Progress
lowasser Oct 3, 2025
dc8cb41
Progress
lowasser Oct 3, 2025
b4a6b70
Progress
lowasser Oct 3, 2025
7bc7cef
Progress
lowasser Oct 3, 2025
21be836
Progress
lowasser Oct 3, 2025
6916843
The intersection is a lower bound
lowasser Oct 3, 2025
09b83c6
Merge branch 'poset-closed-intervals' into poset-closed-intervals-rat
lowasser Oct 3, 2025
24ebb6e
Addition and multiplication preserve containment
lowasser Oct 3, 2025
bb0597e
Merge branch 'poset-closed-intervals-rat' into mul-reals-v3
lowasser Oct 3, 2025
51c7442
Prove distributivity
lowasser Oct 3, 2025
fe3c3d1
Unit laws
lowasser Oct 3, 2025
1160c29
Remaining key properties
lowasser Oct 4, 2025
0358102
Apply suggestions from code review
lowasser Oct 4, 2025
7fd3724
Merge branch 'master' into narrow-mul-interval
lowasser Oct 4, 2025
4566e50
make pre-commit
lowasser Oct 4, 2025
52f4e42
Respond to review comments
lowasser Oct 4, 2025
5952641
Merge branch 'narrow-mul-interval' into narrow-mul-interval-split
lowasser Oct 4, 2025
7217f3a
Apply suggestions from code review
lowasser Oct 5, 2025
f888fdc
Merge branch 'master' into narrow-mul-interval
lowasser Oct 5, 2025
4413d69
make pre-commit
lowasser Oct 5, 2025
abef95a
Fix import
lowasser Oct 5, 2025
d02fabf
Merge branch 'master' into narrow-mul-interval
fredrik-bakke Oct 6, 2025
80e5f3c
Split out multiplication of interior intervals
lowasser Oct 6, 2025
a023e85
Merge remote-tracking branch 'origin/narrow-mul-interval' into narrow…
lowasser Oct 6, 2025
8540e7a
Merge branch 'narrow-mul-interval' into mul-reals
lowasser Oct 6, 2025
a6bd6fd
Updates
lowasser Oct 6, 2025
4c5212d
Progress
lowasser Oct 6, 2025
077d676
Merge branch 'narrow-mul-interval' into mul-reals
lowasser Oct 6, 2025
4e47107
Fix
lowasser Oct 6, 2025
027fc37
Merge branch 'narrow-mul-interval' into mul-reals
lowasser Oct 6, 2025
4de6918
Fix
lowasser Oct 6, 2025
4204f83
Merge branch 'narrow-mul-interval' into mul-reals
lowasser Oct 6, 2025
1db9281
Merge branch 'master' into mul-reals
lowasser Oct 7, 2025
bd9c246
Update
lowasser Oct 7, 2025
e9c0d3e
make pre-commit
lowasser Oct 7, 2025
c14e8d6
Revert
lowasser Oct 7, 2025
1e6a25d
Apply suggestions from code review
lowasser Oct 8, 2025
fd5c804
Respond to review comments; simplify the locatedness proof
lowasser Oct 8, 2025
3ccb90a
Remove unused inequality reasoning
lowasser Oct 8, 2025
0e7d036
Move weak arithmetic location to its own section
lowasser Oct 8, 2025
ecd81a6
Merge branch 'master' into mul-reals
lowasser Oct 8, 2025
1ed3e0f
Merge branch 'master' into mul-reals
lowasser Oct 8, 2025
595d49f
Merge branch 'master' into mul-reals
fredrik-bakke Oct 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/elementary-number-theory.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
```agda
module elementary-number-theory where

open import elementary-number-theory.absolute-value-closed-intervals-rational-numbers public
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
Expand Down Expand Up @@ -115,6 +116,7 @@ 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-nonnegative-rational-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
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Absolute value on closed intervals in the rational numbers

```agda
module elementary-number-theory.absolute-value-closed-intervals-rational-numbers where
```

<details><summary>Imports</summary>

```agda
open import elementary-number-theory.absolute-value-rational-numbers
open import elementary-number-theory.closed-intervals-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-nonnegative-rational-numbers
open import elementary-number-theory.maximum-rational-numbers
open import elementary-number-theory.nonnegative-rational-numbers
open import elementary-number-theory.rational-numbers

open import foundation.binary-transport
open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.identity-types
```

</details>

## Idea

The
[absolute value](elementary-number-theory.absolute-value-rational-numbers.md) of
an element of a
[closed interval](elementary-number-theory.closed-intervals-rational-numbers.md)
`[a, b]` of [rational numbers](elementary-number-theory.rational-numbers.md) is
bounded by `max(|a|, |b|)`.

## Definition

```agda
max-abs-closed-interval-ℚ : closed-interval-ℚ → ℚ⁰⁺
max-abs-closed-interval-ℚ ((p , q) , p≤q) = max-ℚ⁰⁺ (abs-ℚ p) (abs-ℚ q)

rational-max-abs-closed-interval-ℚ : closed-interval-ℚ → ℚ
rational-max-abs-closed-interval-ℚ [p,q] =
rational-ℚ⁰⁺ (max-abs-closed-interval-ℚ [p,q])
```

## Properties

### If `r ∈ [p,q]`, then `|r| ≤ max(|p|, |q|)`

```agda
abstract
leq-max-abs-is-in-closed-interval-ℚ :
([p,q] : closed-interval-ℚ) (r : ℚ) → is-in-closed-interval-ℚ [p,q] r →
leq-ℚ⁰⁺ (abs-ℚ r) (max-abs-closed-interval-ℚ [p,q])
leq-max-abs-is-in-closed-interval-ℚ ((p , q) , p≤q) r (p≤r , r≤q) =
rec-coproduct
( λ r≤0 →
transitive-leq-ℚ
( rational-abs-ℚ r)
( rational-abs-ℚ p)
( max-ℚ (rational-abs-ℚ p) (rational-abs-ℚ q))
( leq-left-max-ℚ _ _)
( leq-abs-leq-leq-neg-ℚ
( r)
( rational-abs-ℚ p)
( transitive-leq-ℚ r zero-ℚ (rational-abs-ℚ p)
( leq-zero-rational-ℚ⁰⁺ (abs-ℚ p))
( r≤0))
( transitive-leq-ℚ (neg-ℚ r) (neg-ℚ p) (rational-abs-ℚ p)
( neg-leq-abs-ℚ p)
( neg-leq-ℚ _ _ p≤r))))
( λ 0≤r →
transitive-leq-ℚ
( rational-abs-ℚ r)
( rational-abs-ℚ q)
( max-ℚ (rational-abs-ℚ p) (rational-abs-ℚ q))
( leq-right-max-ℚ _ _)
( binary-tr
( leq-ℚ)
( inv (rational-abs-zero-leq-ℚ r 0≤r))
( inv
( rational-abs-zero-leq-ℚ
( q)
( transitive-leq-ℚ zero-ℚ r q r≤q 0≤r)))
( r≤q)))
( linear-leq-ℚ r zero-ℚ)
```
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@ module elementary-number-theory.absolute-value-rational-numbers where
```agda
open import elementary-number-theory.addition-nonnegative-rational-numbers
open import elementary-number-theory.addition-rational-numbers
open import elementary-number-theory.difference-rational-numbers
open import elementary-number-theory.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.positive-rational-numbers
open import elementary-number-theory.rational-numbers
open import elementary-number-theory.strict-inequality-rational-numbers

Expand Down Expand Up @@ -127,6 +129,16 @@ opaque
( q≤0))
```

### The absolute value of a positive rational number is the number itself

```agda
abstract
rational-abs-rational-ℚ⁺ :
(q : ℚ⁺) → rational-abs-ℚ (rational-ℚ⁺ q) = rational-ℚ⁺ q
rational-abs-rational-ℚ⁺ q =
ap rational-ℚ⁰⁺ (abs-rational-ℚ⁰⁺ (nonnegative-ℚ⁺ q))
```

### The absolute value of the negation of `q` is the absolute value of `q`

```agda
Expand Down Expand Up @@ -211,6 +223,14 @@ abstract
{ rational-abs-ℚ q}
( neg-leq-abs-ℚ p)
( neg-leq-abs-ℚ q)))

triangle-inequality-abs-diff-ℚ :
(p q : ℚ) → leq-ℚ⁰⁺ (abs-ℚ (p -ℚ q)) (abs-ℚ p +ℚ⁰⁺ abs-ℚ q)
triangle-inequality-abs-diff-ℚ p q =
tr
( leq-ℚ⁰⁺ (abs-ℚ (p -ℚ q)))
( ap-binary add-ℚ⁰⁺ (refl {x = abs-ℚ p}) (abs-neg-ℚ q))
( triangle-inequality-abs-ℚ p (neg-ℚ q))
```

### `|ab| = |a||b|`
Expand Down Expand Up @@ -288,4 +308,9 @@ opaque
is-nonnegative-leq-zero-ℚ (neg-ℚ p) (neg-leq-ℚ p zero-ℚ p≤0)))
= rational-abs-ℚ p *ℚ rational-abs-ℚ q
by ap (_*ℚ rational-abs-ℚ q) (inv (rational-abs-leq-zero-ℚ p p≤0)))

abstract
rational-abs-mul-ℚ :
(p q : ℚ) → rational-abs-ℚ (p *ℚ q) = rational-abs-ℚ p *ℚ rational-abs-ℚ q
rational-abs-mul-ℚ p q = ap rational-ℚ⁰⁺ (abs-mul-ℚ p q)
```
16 changes: 13 additions & 3 deletions src/elementary-number-theory/addition-rational-numbers.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module elementary-number-theory.addition-rational-numbers where
```agda
open import elementary-number-theory.addition-integer-fractions
open import elementary-number-theory.addition-integers
open import elementary-number-theory.addition-natural-numbers
open import elementary-number-theory.integer-fractions
open import elementary-number-theory.integers
open import elementary-number-theory.natural-numbers
Expand All @@ -33,9 +34,9 @@ open import foundation.sections
## Idea

We introduce
{{#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.
{{#concept "addition" Disambiguation="rational numbers" Agda=add-ℚ}} on the
[rational numbers](elementary-number-theory.rational-numbers.md) and derive its
basic properties.

## Definition

Expand Down Expand Up @@ -304,6 +305,15 @@ abstract
by is-retraction-rational-fraction-ℚ (rational-ℤ (x +ℤ y))
```

### The inclusion of natural numbers preserves addition

```agda
add-rational-ℕ :
(m n : ℕ) → rational-ℕ m +ℚ rational-ℕ n = rational-ℕ (m +ℕ n)
add-rational-ℕ m n =
add-rational-ℤ _ _ ∙ ap rational-ℤ (add-int-ℕ m n)
```

### The rational successor of an integer is the successor of the integer

```agda
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ open import foundation.dependent-pair-types
open import foundation.existential-quantification
open import foundation.identity-types
open import foundation.propositional-truncations
open import foundation.transport-along-identifications

open import logic.functoriality-existential-quantification
```

</details>
Expand Down Expand Up @@ -75,3 +78,17 @@ abstract
archimedean-property-ℚ x y pos-x =
unit-trunc-Prop (bound-archimedean-property-ℚ x y pos-x)
```

## Corollaries

### For any rational `q`, there exists a natural number `n` with `q < n`

```agda
abstract
exists-greater-natural-ℚ :
(q : ℚ) → exists ℕ (λ n → le-ℚ-Prop q (rational-ℕ n))
exists-greater-natural-ℚ q =
map-tot-exists
( λ _ → tr (le-ℚ q) (right-unit-law-mul-ℚ _))
( archimedean-property-ℚ one-ℚ q _)
```
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ module elementary-number-theory.closed-intervals-rational-numbers where

```agda
open import elementary-number-theory.decidable-total-order-rational-numbers
open import elementary-number-theory.distance-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
Expand Down Expand Up @@ -83,9 +84,17 @@ is-below-prop-closed-interval-ℚ :
closed-interval-ℚ → subtype lzero ℚ
is-below-prop-closed-interval-ℚ ((a , _) , _) b = le-ℚ-Prop b a

is-below-closed-interval-ℚ : closed-interval-ℚ → ℚ → UU lzero
is-below-closed-interval-ℚ [a,b] q =
type-Prop (is-below-prop-closed-interval-ℚ [a,b] q)

is-above-prop-closed-interval-ℚ :
closed-interval-ℚ → subtype lzero ℚ
is-above-prop-closed-interval-ℚ ((_ , a) , _) b = le-ℚ-Prop a b

is-above-closed-interval-ℚ : closed-interval-ℚ → ℚ → UU lzero
is-above-closed-interval-ℚ [a,b] q =
type-Prop (is-above-prop-closed-interval-ℚ [a,b] q)
```

### The width of a closed interval
Expand Down Expand Up @@ -177,3 +186,26 @@ upper-bound-is-in-closed-interval-ℚ :
upper-bound-is-in-closed-interval-ℚ =
upper-bound-is-in-closed-interval-Poset ℚ-Poset
```

### The distance between the lower and upper bounds of a closed interval is its width

```agda
abstract
eq-width-dist-lower-upper-bounds-closed-interval-ℚ :
([a,b] : closed-interval-ℚ) →
rational-dist-ℚ
( lower-bound-closed-interval-ℚ [a,b])
( upper-bound-closed-interval-ℚ [a,b]) =
width-closed-interval-ℚ [a,b]
eq-width-dist-lower-upper-bounds-closed-interval-ℚ ((a , b) , a≤b) =
eq-dist-diff-leq-ℚ a b a≤b

eq-width-dist-upper-lower-bounds-closed-interval-ℚ :
([a,b] : closed-interval-ℚ) →
rational-dist-ℚ
( upper-bound-closed-interval-ℚ [a,b])
( lower-bound-closed-interval-ℚ [a,b]) =
width-closed-interval-ℚ [a,b]
eq-width-dist-upper-lower-bounds-closed-interval-ℚ ((a , b) , a≤b) =
eq-dist-diff-leq-ℚ' b a a≤b
```
17 changes: 17 additions & 0 deletions src/elementary-number-theory/distance-rational-numbers.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,18 @@ abstract
inv (abs-neg-ℚ _) ∙ ap abs-ℚ (distributive-neg-diff-ℚ _ _)
```

### A rational number's distance from itself is zero

```agda
abstract
dist-self-ℚ : (q : ℚ) → dist-ℚ q q = zero-ℚ⁰⁺
dist-self-ℚ q =
ap abs-ℚ (right-inverse-law-add-ℚ q) ∙ abs-rational-ℚ⁰⁺ zero-ℚ⁰⁺

rational-dist-self-ℚ : (q : ℚ) → rational-dist-ℚ q q = zero-ℚ
rational-dist-self-ℚ q = ap rational-ℚ⁰⁺ (dist-self-ℚ q)
```

### The differences of the arguments are less than or equal to their distance

```agda
Expand Down Expand Up @@ -225,6 +237,11 @@ abstract
( q -ℚ p)
( backward-implication (iff-translate-diff-leq-zero-ℚ p q) p≤q)

eq-dist-diff-leq-ℚ' : (p q : ℚ) → leq-ℚ q p → rational-dist-ℚ p q = p -ℚ q
eq-dist-diff-leq-ℚ' p q q≤p =
ap rational-ℚ⁰⁺ (commutative-dist-ℚ _ _) ∙
eq-dist-diff-leq-ℚ q p q≤p

eq-dist-diff-max-min-ℚ :
(p q : ℚ) → rational-dist-ℚ p q = max-ℚ p q -ℚ min-ℚ p q
eq-dist-diff-max-min-ℚ p q =
Expand Down
41 changes: 29 additions & 12 deletions src/elementary-number-theory/inequality-integers.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,20 +215,37 @@ reflects-leq-right-add-ℤ z x y =
is-nonnegative-eq-ℤ (left-translation-diff-ℤ y x z)
```

### The inclusion of ℕ into ℤ preserves inequality
### The inclusion of ℕ into ℤ preserves and reflects inequality

```agda
leq-int-ℕ : (x y : ℕ) → leq-ℕ x y → leq-ℤ (int-ℕ x) (int-ℕ y)
leq-int-ℕ zero-ℕ y H =
tr
( is-nonnegative-ℤ)
( inv (right-unit-law-add-ℤ (int-ℕ y)))
( is-nonnegative-int-ℕ y)
leq-int-ℕ (succ-ℕ x) (succ-ℕ y) H = tr (is-nonnegative-ℤ)
( inv (diff-succ-ℤ (int-ℕ y) (int-ℕ x)) ∙
( ap (_-ℤ (succ-ℤ (int-ℕ x))) (succ-int-ℕ y) ∙
ap ((int-ℕ (succ-ℕ y)) -ℤ_) (succ-int-ℕ x)))
( leq-int-ℕ x y H)
abstract
leq-int-ℕ : (x y : ℕ) → leq-ℕ x y → leq-ℤ (int-ℕ x) (int-ℕ y)
leq-int-ℕ zero-ℕ y H =
tr
( is-nonnegative-ℤ)
( inv (right-unit-law-add-ℤ (int-ℕ y)))
( is-nonnegative-int-ℕ y)
leq-int-ℕ (succ-ℕ x) (succ-ℕ y) H =
tr
( is-nonnegative-ℤ)
( ( inv (diff-succ-ℤ (int-ℕ y) (int-ℕ x))) ∙
( ap (_-ℤ (succ-ℤ (int-ℕ x))) (succ-int-ℕ y)) ∙
( ap ((int-ℕ (succ-ℕ y)) -ℤ_) (succ-int-ℕ x)))
( leq-int-ℕ x y H)

reflects-leq-int-ℕ : (x y : ℕ) → leq-ℤ (int-ℕ x) (int-ℕ y) → leq-ℕ x y
reflects-leq-int-ℕ zero-ℕ y x≤y = star
reflects-leq-int-ℕ (succ-ℕ x) (succ-ℕ y) x≤y =
reflects-leq-int-ℕ x y
( tr
( is-nonnegative-ℤ)
( ap-diff-ℤ (inv (succ-int-ℕ y)) (inv (succ-int-ℕ x)) ∙
diff-succ-ℤ (int-ℕ y) (int-ℕ x))
( x≤y))

iff-leq-int-ℕ : (x y : ℕ) → leq-ℕ x y ↔ leq-ℤ (int-ℕ x) (int-ℕ y)
pr1 (iff-leq-int-ℕ x y) = leq-int-ℕ x y
pr2 (iff-leq-int-ℕ x y) = reflects-leq-int-ℕ x y
```

### An integer `x` is nonnegative if and only if `0 ≤ x`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@ module elementary-number-theory.inequality-nonnegative-rational-numbers where
<details><summary>Imports</summary>

```agda
open import elementary-number-theory.decidable-total-order-rational-numbers
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

open import order-theory.decidable-total-orders
```

</details>
Expand All @@ -36,3 +39,15 @@ leq-prop-ℚ⁰⁺ (p , _) (q , _) = leq-ℚ-Prop p q
leq-ℚ⁰⁺ : ℚ⁰⁺ ℚ⁰⁺ UU lzero
leq-ℚ⁰⁺ (p , _) (q , _) = leq-ℚ p q
```

## Properties

### The decidable total order of nonnegative rational numbers

```agda
decidable-total-order-ℚ⁰⁺ : Decidable-Total-Order lzero lzero
decidable-total-order-ℚ⁰⁺ =
decidable-total-order-Decidable-Total-Suborder
ℚ-Decidable-Total-Order
is-nonnegative-prop-ℚ
```
Loading
Loading