Skip to content

Absolute value on rational numbers #1381

New issue

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

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

Already on GitHub? Sign in to your account

Merged
merged 184 commits into from
Apr 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
68ffc45
Associativity of min and max
lowasser Feb 8, 2025
4ac4f7d
Merge branch 'master' into min-max-associative
lowasser Feb 8, 2025
4a8b5c5
Formatting
lowasser Feb 8, 2025
6a9f837
Define lower Dedekind cuts/reals
lowasser Feb 9, 2025
ef39dd3
make pre-commit
lowasser Feb 9, 2025
59195c9
Define upper Dedekind reals
lowasser Feb 9, 2025
4233e28
make pre-commit
lowasser Feb 9, 2025
6ad62d5
Rename things
lowasser Feb 9, 2025
6bfb619
Formatting
lowasser Feb 9, 2025
fd8f384
Add new file
lowasser Feb 9, 2025
fb0d5d3
Fix line length
lowasser Feb 9, 2025
efaf647
Merge branch 'lower-upper-dedekind' into lower-upper-rational-dedekind
lowasser Feb 9, 2025
f21b948
Add rational upper reals
lowasser Feb 9, 2025
a3d3af9
Progress
lowasser Feb 9, 2025
ba687cd
Merge branch 'lower-upper-rational-dedekind' into lower-upper-inequality
lowasser Feb 9, 2025
fb18a45
Preservation of inequality
lowasser Feb 9, 2025
0aa663c
Define normal Dedekind reals in terms of lower and upper cuts
lowasser Feb 9, 2025
1f9f502
Merge branch 'lower-upper-inequality' into lower-upper-dedekind
lowasser Feb 9, 2025
7499c7c
Start negation
lowasser Feb 9, 2025
2185e18
Inequality on upper reals
lowasser Feb 9, 2025
f2da896
overhaul
lowasser Feb 10, 2025
70f181c
make pre-commit
lowasser Feb 10, 2025
9268779
a -> an
lowasser Feb 10, 2025
e40e90b
Merge branch 'master' into lower-upper-neg
lowasser Feb 10, 2025
1b9d81b
Rename some things
lowasser Feb 10, 2025
d40a43a
Merge branch 'master' into lower-upper-neg
lowasser Feb 10, 2025
f75209b
Some more theorems
lowasser Feb 11, 2025
6d17056
Merge branch 'master' into lower-upper-neg
lowasser Feb 11, 2025
098d4e8
Finish gaps
lowasser Feb 11, 2025
b3b72b2
Progress
lowasser Feb 11, 2025
56c4fe3
Merge remote-tracking branch 'origin/lower-upper-neg' into lower-uppe…
lowasser Feb 11, 2025
faaa937
Merge branch 'master' into lower-upper-neg
lowasser Feb 11, 2025
1f9d73a
Recover all the previous results
lowasser Feb 11, 2025
7857a80
Merge branch 'master' into lower-upper-neg
lowasser Feb 11, 2025
263f367
make pre-commit
lowasser Feb 11, 2025
a3da42d
Merge remote-tracking branch 'origin/lower-upper-neg' into lower-uppe…
lowasser Feb 11, 2025
3669840
Merge branch 'master' into lower-upper-neg
lowasser Feb 11, 2025
f235570
Remove empty bibliography
lowasser Feb 11, 2025
827111e
Review changes
lowasser Feb 11, 2025
f734874
Fix names
lowasser Feb 12, 2025
327479d
Progress
lowasser Feb 12, 2025
3a4c279
Merge branch 'master' into min-max-associative
lowasser Feb 12, 2025
80e1863
Merge
lowasser Feb 12, 2025
6eeef9a
Fix syntax
lowasser Feb 12, 2025
53e54d8
Fix links
lowasser Feb 12, 2025
71479ca
Fix naming
lowasser Feb 12, 2025
e535435
make pre-commit
lowasser Feb 12, 2025
bd83f7b
Start
lowasser Feb 12, 2025
fbbfe5e
Progress
lowasser Feb 12, 2025
c100494
Merge branch 'min-max-associative' into lower-upper-max-min
lowasser Feb 12, 2025
9444d9e
Progress
lowasser Feb 12, 2025
c62e125
Progress
lowasser Feb 12, 2025
ba7600c
Progress
lowasser Feb 12, 2025
178808f
Merge branch 'master' into lower-upper-neg
lowasser Feb 13, 2025
b524ba8
max-lower-R
lowasser Feb 13, 2025
0d68a13
make pre-commit
lowasser Feb 13, 2025
8c076b1
Progress
lowasser Feb 13, 2025
0f4ab58
Progress
lowasser Feb 13, 2025
4c342b2
Progress
lowasser Feb 13, 2025
a903440
More imports
lowasser Feb 13, 2025
42ad0b8
Merge branch 'min-max-associative' into inflattice
lowasser Feb 13, 2025
8df9c15
Merge branch 'master' into min-max-associative
lowasser Feb 13, 2025
f9e99ef
Merge branch 'min-max-associative' into inflattice
lowasser Feb 13, 2025
8aa85c0
Fix symbols in docs
lowasser Feb 13, 2025
24b6f2f
Merge branch 'add-rational-reals' into add-reals
lowasser Feb 13, 2025
6095330
Back off the hard bits
lowasser Feb 13, 2025
9a2c3d6
Merge branch 'master' into lower-upper-neg
lowasser Feb 13, 2025
7ad5d5f
Merge remote-tracking branch 'origin/lower-upper-neg' into lower-uppe…
lowasser Feb 13, 2025
23a33d3
Apply suggestions from code review
lowasser Feb 13, 2025
f2c3f76
renaming
lowasser Feb 13, 2025
b9f1d27
Fix formatting
lowasser Feb 13, 2025
3673163
make pre-commit
lowasser Feb 13, 2025
324595a
Respond to review comments
lowasser Feb 14, 2025
10a0a36
Inline explanations of lower and upper cuts
lowasser Feb 14, 2025
6430f86
Reword
lowasser Feb 14, 2025
73a9e40
Merge branch 'master' into inflattice
lowasser Feb 14, 2025
e64c537
Merge branch 'master' into lower-upper-neg
lowasser Feb 14, 2025
d35cc9a
Merge branch 'inflattice' into min-max-lower-upper
lowasser Feb 14, 2025
eb516ee
Merge branch 'lower-upper-neg' into min-max-lower-upper
lowasser Feb 14, 2025
02e1fdc
Typo fix
lowasser Feb 14, 2025
e11919b
Update src/order-theory/decidable-total-orders.lagda.md
lowasser Feb 14, 2025
96186d2
Merge branch 'master' into inflattice
lowasser Feb 14, 2025
a8d3b47
Merge branch 'master' into inflattice
lowasser Feb 16, 2025
c213682
Progress
lowasser Feb 18, 2025
2276510
Define minimum and maximum on real numbers
lowasser Feb 19, 2025
fff4eda
make pre-commit
lowasser Feb 19, 2025
89e5a16
Merge branch 'master' into min-max-lower-upper
lowasser Feb 19, 2025
e4ef49b
make pre-commit
lowasser Feb 19, 2025
f04c6fd
Fix links
lowasser Feb 19, 2025
eaaa9c3
Merge branch 'master' into inflattice
lowasser Feb 19, 2025
9a54be1
Merge remote-tracking branch 'origin/inflattice' into inflattice
lowasser Feb 19, 2025
58d4bda
Merge branch 'inflattice' into min-max-lower-upper
lowasser Feb 19, 2025
b4fb302
Fix md links
lowasser Feb 19, 2025
87543f9
Add a bunch of stuff about reciprocals
lowasser Feb 23, 2025
a3cb818
Merge branch 'master' into inflattice
lowasser Feb 23, 2025
304e48b
Merge branch 'master' into inflattice
lowasser Feb 23, 2025
ac9be28
Merge remote-tracking branch 'origin/inflattice' into inflattice
lowasser Feb 23, 2025
95c75a3
Merge branch 'inflattice' into min-max-lower-upper
lowasser Feb 23, 2025
84d694e
Break out a section
lowasser Feb 23, 2025
a190827
make pre-commit
lowasser Feb 23, 2025
7e17e0a
Factor out unit fractions file
lowasser Feb 25, 2025
bdb5085
make pre-commit
lowasser Feb 25, 2025
35ea4bf
Simplifications
lowasser Feb 25, 2025
a6136b8
make pre-commit
lowasser Feb 25, 2025
74efa30
Merge branch 'master' into reciprocals
lowasser Feb 25, 2025
54dd27b
Revert multiplicative group
lowasser Feb 26, 2025
afea9b6
Merge branch 'min-max-lower-upper' into interval-rational-multiplication
lowasser Feb 26, 2025
3940e6d
Beginnings
lowasser Feb 26, 2025
8d43bad
Progress
lowasser Feb 26, 2025
def2258
Merge branch 'reciprocals' into interval-rational-multiplication
lowasser Feb 26, 2025
2ddb2d6
Progress
lowasser Feb 26, 2025
acc5264
Progress
lowasser Feb 26, 2025
ed12bf8
Define negative integer fractions
lowasser Feb 26, 2025
ec218ba
Start on defining negative rationals
lowasser Feb 26, 2025
4f030cc
make pre-commit
lowasser Feb 26, 2025
8ee275f
Prove some results about negative rationals
lowasser Feb 26, 2025
b1fac84
Define negative rational numbers and important properties
lowasser Feb 26, 2025
b4520a1
make pre-commit
lowasser Feb 26, 2025
61a4880
Remove unused imports
lowasser Feb 26, 2025
97e43f5
Multiplication of closed intervals on the rational numbers
lowasser Feb 26, 2025
9961805
make pre-commit
lowasser Feb 26, 2025
70959e0
Merge branch 'master' into min-max-lower-upper
lowasser Feb 26, 2025
fa9738a
Apply suggestions from code review
lowasser Feb 28, 2025
8f059f3
Merge branch 'master' into min-max-lower-upper
lowasser Mar 4, 2025
ac06508
Minor formatting
lowasser Mar 5, 2025
bf5a08f
Merge branch 'master' into closed-interval-v2
lowasser Mar 17, 2025
995cf33
Fix merge
lowasser Mar 17, 2025
b1338cb
Merge remote-tracking branch 'origin/closed-interval-v2' into closed-…
lowasser Mar 17, 2025
a74f3be
Generalize functoriality of meets and joins
lowasser Mar 17, 2025
d6cafd1
make pre-commit
lowasser Mar 17, 2025
993f0c1
Fix missing function
lowasser Mar 17, 2025
69171a6
Apply suggestions from code review
lowasser Mar 22, 2025
ba351a6
Merge branch 'master' into min-max-lower-upper
lowasser Mar 22, 2025
8b3ad05
Respond to review comments
lowasser Mar 22, 2025
fad7de3
make pre-commit
lowasser Mar 22, 2025
dda8a69
Apply suggestions from code review
lowasser Mar 22, 2025
f727641
Progress
lowasser Mar 22, 2025
d919414
Merge remote-tracking branch 'origin/closed-interval-v2' into closed-…
lowasser Mar 22, 2025
ce3bf2f
Merge branch 'master' into closed-interval-v2
lowasser Mar 22, 2025
846914d
Merge branch 'master' into negative-rational-numbers
lowasser Mar 22, 2025
1595b14
nonnegative integer fractions
lowasser Mar 22, 2025
dd97d3b
Update src/real-numbers/maximum-real-numbers.lagda.md
fredrik-bakke Mar 23, 2025
3064497
Update src/real-numbers/minimum-upper-dedekind-real-numbers.lagda.md
fredrik-bakke Mar 23, 2025
2e2795e
Merge branch 'master' into min-max-lower-upper
fredrik-bakke Mar 23, 2025
5fb9a18
Simplify
lowasser Mar 23, 2025
8296d49
Merge branch 'master' into closed-interval-v2
lowasser Mar 23, 2025
3eb0a07
make pre-commit
lowasser Mar 23, 2025
3507f55
Pull over changes to min/max on rationals
lowasser Mar 23, 2025
e1e9c47
Merge remote-tracking branch 'origin/min-max-lower-upper' into min-ma…
lowasser Mar 23, 2025
b7de2a1
Progress
lowasser Mar 23, 2025
b890871
Merge branch 'master' into negative-rational-numbers
lowasser Mar 23, 2025
28c98fd
Merge branch 'master' into closed-interval-v2
lowasser Mar 23, 2025
7d98d25
Merge branch 'master' into min-max-lower-upper
lowasser Mar 24, 2025
cda12f9
Merge branch 'master' into negative-rational-numbers
lowasser Mar 24, 2025
cccf99f
make pre-commit
lowasser Mar 24, 2025
86bb507
Merge branch 'min-max-lower-upper' into negative-rational-numbers
lowasser Mar 24, 2025
af942b4
Pull over more necessary changes
lowasser Mar 24, 2025
d839b52
Progress
lowasser Mar 24, 2025
3f508b5
Merge branch 'min-max-lower-upper' into abs-rational
lowasser Mar 24, 2025
c37f6e3
edits `abstract`
fredrik-bakke Mar 24, 2025
abab1a8
Merge branch 'master' into closed-interval-v2
fredrik-bakke Mar 24, 2025
1eb2986
pre-commit
fredrik-bakke Mar 24, 2025
599b17f
Progress
lowasser Mar 24, 2025
18d4ce9
Merge branch 'master' into closed-interval-v2
lowasser Mar 25, 2025
1c6fddd
Progress
lowasser Mar 25, 2025
bc6826a
Merge remote-tracking branch 'origin/closed-interval-v2' into closed-…
lowasser Mar 25, 2025
28654b2
Progress
lowasser Mar 25, 2025
674b50d
Progress
lowasser Mar 25, 2025
23533b2
make pre-commit
lowasser Mar 25, 2025
94def9b
Merge branch 'closed-interval-v2' into abs-rational
lowasser Mar 25, 2025
558ffd2
Remove duplicate declaration
lowasser Mar 25, 2025
3652aac
Merge branch 'master' into abs-rational
lowasser Mar 25, 2025
d6702f5
Merge remote-tracking branch 'origin/abs-rational' into abs-rational
lowasser Mar 26, 2025
45fca9a
make pre-commit
lowasser Mar 26, 2025
b8167af
Merge branch 'master' into abs-rational
lowasser Mar 27, 2025
f547f4e
Simplifications
lowasser Mar 27, 2025
8659440
Review comments
lowasser Mar 27, 2025
9ed1b76
Merge branch 'master' into abs-rational
lowasser Mar 27, 2025
b0c623a
Apply suggestions from code review
lowasser Mar 30, 2025
36a50a0
Update src/elementary-number-theory/nonnegative-rational-numbers.lagd…
lowasser Mar 30, 2025
a16aa02
Merge branch 'master' into abs-rational
lowasser Mar 30, 2025
c5c6f6c
Merge remote-tracking branch 'origin/abs-rational' into abs-rational
lowasser Mar 30, 2025
59b07a6
Simplification
lowasser Apr 1, 2025
96d274d
Fix typo
lowasser Apr 1, 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
3 changes: 3 additions & 0 deletions src/elementary-number-theory.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,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-integer-fractions public
open import elementary-number-theory.addition-integers public
Expand Down Expand Up @@ -127,7 +128,9 @@ open import elementary-number-theory.natural-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
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.nonzero-integers public
open import elementary-number-theory.nonzero-natural-numbers public
Expand Down
266 changes: 266 additions & 0 deletions src/elementary-number-theory/absolute-value-rational-numbers.lagda.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
# The absolute value function on the rational numbers

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

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

<details><summary>Imports</summary>

```agda
open import elementary-number-theory.addition-rational-numbers
open import elementary-number-theory.inequality-rational-numbers
open import elementary-number-theory.maximum-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

open import foundation.action-on-identifications-binary-functions
open import foundation.action-on-identifications-functions
open import foundation.binary-transport
open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.function-types
open import foundation.identity-types
open import foundation.transport-along-identifications
```

</details>

## Idea

The
{{#concept "absolute value" Disambiguation="of a rational number" Agda=abs-ℚ WD="absolute value" WDID=Q120812}}
of a [rational number](elementary-number-theory.rational-numbers.md) is the
[greater](elementary-number-theory.maximum-rational-numbers.md) of itself and
its negation.

## Definition

```agda
rational-abs-ℚ : ℚ → ℚ
rational-abs-ℚ q = max-ℚ q (neg-ℚ q)

abstract
is-nonnegative-rational-abs-ℚ : (q : ℚ) → is-nonnegative-ℚ (rational-abs-ℚ q)
is-nonnegative-rational-abs-ℚ q =
rec-coproduct
( λ 0≤q →
inv-tr
( is-nonnegative-ℚ)
( right-leq-left-max-ℚ
( q)
( neg-ℚ q)
( transitive-leq-ℚ (neg-ℚ q) zero-ℚ q 0≤q (neg-leq-ℚ zero-ℚ q 0≤q)))
( is-nonnegative-leq-zero-ℚ q 0≤q))
( λ q≤0 →
inv-tr
( is-nonnegative-ℚ)
( left-leq-right-max-ℚ
( q)
( neg-ℚ q)
( transitive-leq-ℚ q zero-ℚ (neg-ℚ q) (neg-leq-ℚ q zero-ℚ q≤0) q≤0))
( is-nonnegative-leq-zero-ℚ (neg-ℚ q) (neg-leq-ℚ q zero-ℚ q≤0)))
( linear-leq-ℚ zero-ℚ q)

abs-ℚ : ℚ → ℚ⁰⁺
pr1 (abs-ℚ q) = rational-abs-ℚ q
pr2 (abs-ℚ q) = is-nonnegative-rational-abs-ℚ q
```

## Properties

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

```agda
abstract
abs-rational-ℚ⁰⁺ : (q : ℚ⁰⁺) → abs-ℚ (rational-ℚ⁰⁺ q) = q
abs-rational-ℚ⁰⁺ (q , nonneg-q) =
eq-ℚ⁰⁺
( right-leq-left-max-ℚ
( q)
( neg-ℚ q)
( transitive-leq-ℚ
( neg-ℚ q)
( zero-ℚ)
( q)
( leq-zero-is-nonnegative-ℚ q nonneg-q)
( neg-leq-ℚ zero-ℚ q (leq-zero-is-nonnegative-ℚ q nonneg-q))))

rational-abs-zero-leq-ℚ : (q : ℚ) → leq-ℚ zero-ℚ q → rational-abs-ℚ q = q
rational-abs-zero-leq-ℚ q 0≤q =
ap rational-ℚ⁰⁺ (abs-rational-ℚ⁰⁺ (q , is-nonnegative-leq-zero-ℚ q 0≤q))

rational-abs-leq-zero-ℚ :
(q : ℚ) → leq-ℚ q zero-ℚ → rational-abs-ℚ q = neg-ℚ q
rational-abs-leq-zero-ℚ q q≤0 =
left-leq-right-max-ℚ
( q)
( neg-ℚ q)
( transitive-leq-ℚ
( q)
( zero-ℚ)
( neg-ℚ q)
( neg-leq-ℚ q zero-ℚ q≤0)
( q≤0))
```

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

```agda
abstract
abs-neg-ℚ : (q : ℚ) → abs-ℚ (neg-ℚ q) = abs-ℚ q
abs-neg-ℚ q =
eq-ℚ⁰⁺
( ap (max-ℚ (neg-ℚ q)) (neg-neg-ℚ q) ∙ commutative-max-ℚ _ _)
```

### `q` is less than or equal to `abs-ℚ q`

```agda
abstract
leq-abs-ℚ : (q : ℚ) → leq-ℚ q (rational-abs-ℚ q)
leq-abs-ℚ q = leq-left-max-ℚ q (neg-ℚ q)

neg-leq-abs-ℚ : (q : ℚ) → leq-ℚ (neg-ℚ q) (rational-abs-ℚ q)
neg-leq-abs-ℚ q = leq-right-max-ℚ q (neg-ℚ q)
```

### The absolute value of `q` is zero iff `q` is zero

```agda
abstract
eq-zero-eq-abs-zero-ℚ : (q : ℚ) → abs-ℚ q = zero-ℚ⁰⁺ → q = zero-ℚ
eq-zero-eq-abs-zero-ℚ q abs=0 =
rec-coproduct
( λ 0≤q →
antisymmetric-leq-ℚ
( q)
( zero-ℚ)
( tr (leq-ℚ q) (ap rational-ℚ⁰⁺ abs=0) (leq-abs-ℚ q)) 0≤q)
( λ q≤0 →
antisymmetric-leq-ℚ
( q)
( zero-ℚ)
( q≤0)
( tr
( leq-ℚ zero-ℚ)
( neg-neg-ℚ q)
( neg-leq-ℚ
( neg-ℚ q)
( zero-ℚ)
( tr
( leq-ℚ (neg-ℚ q))
( ap rational-ℚ⁰⁺ abs=0)
( neg-leq-abs-ℚ q)))))
( linear-leq-ℚ zero-ℚ q)

abs-zero-ℚ : abs-ℚ zero-ℚ = zero-ℚ⁰⁺
abs-zero-ℚ = eq-ℚ⁰⁺ (left-leq-right-max-ℚ _ _ (refl-leq-ℚ zero-ℚ))
```

### The triangle inequality

```agda
abstract
triangle-inequality-abs-ℚ :
(p q : ℚ) → leq-ℚ⁰⁺ (abs-ℚ (p +ℚ q)) (abs-ℚ p +ℚ⁰⁺ abs-ℚ q)
triangle-inequality-abs-ℚ p q =
leq-max-leq-both-ℚ
( rational-abs-ℚ p +ℚ rational-abs-ℚ q)
( _)
( _)
( preserves-leq-add-ℚ
{ p}
{ rational-abs-ℚ p}
{ q}
{ rational-abs-ℚ q}
( leq-abs-ℚ p)
( leq-abs-ℚ q))
( inv-tr
( λ r → leq-ℚ r (rational-abs-ℚ p +ℚ rational-abs-ℚ q))
( distributive-neg-add-ℚ p q)
( preserves-leq-add-ℚ
{ neg-ℚ p}
{ rational-abs-ℚ p}
{ neg-ℚ q}
{ rational-abs-ℚ q}
( neg-leq-abs-ℚ p)
( neg-leq-abs-ℚ q)))
```

### `|ab| = |a||b|`

```agda
abstract
abs-left-mul-nonnegative-ℚ :
(q : ℚ) (p : ℚ⁰⁺) → abs-ℚ (rational-ℚ⁰⁺ p *ℚ q) = p *ℚ⁰⁺ abs-ℚ q
abs-left-mul-nonnegative-ℚ q p⁰⁺@(p , nonneg-p) with linear-leq-ℚ zero-ℚ q
... | inl 0≤q =
eq-ℚ⁰⁺
( equational-reasoning
rational-abs-ℚ (p *ℚ q)
= p *ℚ q
by
ap
( rational-ℚ⁰⁺)
( abs-rational-ℚ⁰⁺
( p⁰⁺ *ℚ⁰⁺ (q , is-nonnegative-leq-zero-ℚ q 0≤q)))
= p *ℚ rational-abs-ℚ q
by ap (p *ℚ_) (inv (rational-abs-zero-leq-ℚ q 0≤q)))
... | inr q≤0 =
eq-ℚ⁰⁺
( equational-reasoning
rational-abs-ℚ (p *ℚ q)
= rational-abs-ℚ (neg-ℚ (p *ℚ q))
by ap rational-ℚ⁰⁺ (inv (abs-neg-ℚ (p *ℚ q)))
= rational-abs-ℚ (p *ℚ neg-ℚ q)
by ap rational-abs-ℚ (inv (right-negative-law-mul-ℚ p q))
= p *ℚ neg-ℚ q
by
ap
( rational-ℚ⁰⁺)
( abs-rational-ℚ⁰⁺
( p⁰⁺ *ℚ⁰⁺
( neg-ℚ q ,
is-nonnegative-leq-zero-ℚ
( neg-ℚ q)
( neg-leq-ℚ q zero-ℚ q≤0))))
= p *ℚ rational-abs-ℚ q
by ap (p *ℚ_) (inv (rational-abs-leq-zero-ℚ q q≤0)))

abs-mul-ℚ : (p q : ℚ) → abs-ℚ (p *ℚ q) = abs-ℚ p *ℚ⁰⁺ abs-ℚ q
abs-mul-ℚ p q with linear-leq-ℚ zero-ℚ p
... | inl 0≤p =
eq-ℚ⁰⁺
( equational-reasoning
rational-abs-ℚ (p *ℚ q)
= p *ℚ rational-abs-ℚ q
by
ap
( rational-ℚ⁰⁺)
( abs-left-mul-nonnegative-ℚ
( q)
( p , is-nonnegative-leq-zero-ℚ p 0≤p))
= rational-abs-ℚ p *ℚ rational-abs-ℚ q
by ap (_*ℚ rational-abs-ℚ q) (inv (rational-abs-zero-leq-ℚ p 0≤p)))
... | inr p≤0 =
eq-ℚ⁰⁺
( equational-reasoning
rational-abs-ℚ (p *ℚ q)
= rational-abs-ℚ (neg-ℚ (p *ℚ q))
by ap rational-ℚ⁰⁺ (inv (abs-neg-ℚ (p *ℚ q)))
= rational-abs-ℚ (neg-ℚ p *ℚ q)
by ap rational-abs-ℚ (inv (left-negative-law-mul-ℚ p q))
= neg-ℚ p *ℚ rational-abs-ℚ q
by
ap
( rational-ℚ⁰⁺)
( abs-left-mul-nonnegative-ℚ
( q)
( neg-ℚ p ,
is-nonnegative-leq-zero-ℚ (neg-ℚ p) (neg-leq-ℚ p zero-ℚ p≤0)))
= rational-abs-ℚ p *ℚ rational-abs-ℚ q
by ap (_*ℚ rational-abs-ℚ q) (inv (rational-abs-leq-zero-ℚ p p≤0)))
```
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,13 @@ preserves-leq-add-ℚ {a} {b} {c} {d} H K =
( preserves-leq-left-add-ℚ c a b H)
```

### Negation of rational numbers reverses inequality

```agda
neg-leq-ℚ : (x y : ℚ) → leq-ℚ x y → leq-ℚ (neg-ℚ y) (neg-ℚ x)
neg-leq-ℚ x y = neg-leq-fraction-ℤ (fraction-ℚ x) (fraction-ℚ y)
```

### Transposing additions on inequalities of rational numbers

```agda
Expand Down Expand Up @@ -415,13 +422,6 @@ pr1 (leq-iff-transpose-left-diff-ℚ x y z) = leq-transpose-left-diff-ℚ x y z
pr2 (leq-iff-transpose-left-diff-ℚ x y z) = leq-transpose-right-add-ℚ x z y
```

### Negation of rational numbers reverses inequality

```agda
neg-leq-ℚ : (x y : ℚ) → leq-ℚ x y → leq-ℚ (neg-ℚ y) (neg-ℚ x)
neg-leq-ℚ x y = neg-leq-fraction-ℤ (fraction-ℚ x) (fraction-ℚ y)
```

## See also

- The decidable total order on the rational numbers is defined in
Expand Down
12 changes: 12 additions & 0 deletions src/elementary-number-theory/maximum-rational-numbers.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ open import elementary-number-theory.rational-numbers
open import elementary-number-theory.strict-inequality-rational-numbers

open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.logical-equivalences
open import foundation.transport-along-identifications

open import order-theory.decidable-total-orders
Expand Down Expand Up @@ -114,6 +116,16 @@ abstract
( y)
( y≤x))
( x<z)

leq-max-leq-both-ℚ : (z x y : ℚ) → leq-ℚ x z → leq-ℚ y z → leq-ℚ (max-ℚ x y) z
leq-max-leq-both-ℚ z x y x≤z y≤z =
forward-implication
( max-is-least-binary-upper-bound-Decidable-Total-Order
( ℚ-Decidable-Total-Order)
( x)
( y)
( z))
( x≤z , y≤z)
```

### If `a ≤ b` and `c ≤ d`, then `max a c ≤ max b d`
Expand Down
Loading