Rationals.Negation
Andrew Sneap, January-March 2021
In this file I define negation of real numbers.
{-# OPTIONS --safe --without-K --lossy-unification #-}
open import MLTT.Spartan renaming (_+_ to _β_)
open import Integers.Type
open import Integers.Multiplication renaming (_*_ to _β€*_)
open import Integers.Negation renaming (-_ to β€-_)
open import Rationals.Fractions
open import Rationals.FractionsOperations renaming (-_ to π½-_ ; _+_ to _π½+_ ; _*_ to _π½*_)
open import Rationals.Type
open import Rationals.Addition
open import Rationals.Multiplication
module Rationals.Negation where
-_ : β β β
- ((x , a) , p) = toβ (π½- (x , a))
infix 32 -_
_-_ : β β β β β
p - q = p + (- q)
infixl 32 _-_
β-minus-zero-is-zero : 0β οΌ - 0β
β-minus-zero-is-zero = refl
toβ-neg : ((x , a) : π½) β (- toβ (x , a)) οΌ toβ (π½- (x , a))
toβ-neg (x , a) = equivβequality (β€- x' , a') (π½- (x , a)) Ξ³
where
x' = numβ (x , a)
a' = dnomβ (x , a)
pa = (pos β succ) a
pa' = (pos β succ) a'
Ξ³ : (β€- x' , a') β (π½- (x , a))
Ξ³ = (β€- x') β€* pa οΌβ¨ negation-dist-over-mult' x' pa β©
β€- x' β€* pa οΌβ¨ ap β€-_ (β-toβ (x , a) β»ΒΉ) β©
β€- x β€* pa' οΌβ¨ negation-dist-over-mult' x pa' β»ΒΉ β©
(β€- x) β€* pa' β
β-minus-dist : (p q : β) β (- p) + (- q) οΌ - (p + q)
β-minus-dist ((x , a) , p) ((y , b) , q) = Ξ³
where
iiββ : (β€- x , a) π½+ (β€- y , b) β (π½- ((x , a) π½+ (y , b)))
iiββ = π½-minus-dist (x , a) (y , b)
i = toβ-+ (β€- x , a) (β€- y , b) β»ΒΉ
ii = equivβequality ((β€- x , a) π½+ (β€- y , b)) (π½- ((x , a) π½+ (y , b))) iiββ
iii = toβ-neg ((x , a) π½+ (y , b)) β»ΒΉ
Ξ³ : (- ((x , a) , p)) - ((y , b) , q) οΌ - (((x , a) , p) + ((y , b) , q))
Ξ³ = (- ((x , a) , p)) - ((y , b) , q) οΌβ¨reflβ©
toβ (β€- x , a) + toβ (β€- y , b) οΌβ¨ i β©
toβ ((β€- x , a) π½+ (β€- y , b)) οΌβ¨ ii β©
toβ (π½- ((x , a) π½+ (y , b))) οΌβ¨ iii β©
- toβ ((x , a) π½+ (y , b)) οΌβ¨reflβ©
- (((x , a) , p) + ((y , b) , q)) β
β-inverse-sum-to-zero : (q : β) β q - q οΌ 0β
β-inverse-sum-to-zero ((x , a) , p) = Ξ³
where
I : ((x , a) π½+ (π½- (x , a))) β (pos 0 , 0)
β toβ ((x , a) π½+ (π½- (x , a))) οΌ toβ (pos 0 , 0)
I = equivβequality ((x , a) π½+ (π½- (x , a))) (pos 0 , 0)
Ξ³ : ((x , a) , p) - ((x , a) , p) οΌ 0β
Ξ³ = ((x , a) , p) - ((x , a) , p) οΌβ¨ i β©
toβ (x , a) - toβ (x , a) οΌβ¨ ii β©
toβ (x , a) + toβ (π½- (x , a)) οΌβ¨ iii β©
toβ ((x , a) π½+ (π½- (x , a))) οΌβ¨ iv β©
0β β
where
i = ap (Ξ» z β z - z) (toβ-toπ½ ((x , a) , p))
ii = ap (toβ (x , a) +_) (toβ-neg (x , a))
iii = toβ-+ (x , a) (π½- (x , a)) β»ΒΉ
iv = I (π½+-inverse' (x , a))
β-inverse-sum-to-zero' : (q : β) β (- q) + q οΌ 0β
β-inverse-sum-to-zero' q = β+-comm (- q) q β β-inverse-sum-to-zero q
β+-inverse : (q : β) β Ξ£ q' κ β , q + q' οΌ 0β
β+-inverse q = (- q) , (β-inverse-sum-to-zero q)
β+-inverse' : (q : β) β Ξ£ q' κ β , q' + q οΌ 0β
β+-inverse' q = f (β+-inverse q)
where
f : Ξ£ q' κ β , q + q' οΌ 0β β Ξ£ q' κ β , q' + q οΌ 0β
f (q' , e) = q' , (β+-comm q' q β e)
β-minus-minus : (p : β) β p οΌ - (- p)
β-minus-minus ((x , a) , Ξ±) = Ξ³
where
Ξ³ : ((x , a) , Ξ±) οΌ - (- ((x , a) , Ξ±))
Ξ³ = ((x , a) , Ξ±) οΌβ¨ i β©
toβ (x , a) οΌβ¨ ii β©
toβ (β€- (β€- x) , a) οΌβ¨reflβ©
toβ (π½- (π½- (x , a))) οΌβ¨ iii β©
- toβ (π½- (x , a)) οΌβ¨ iv β©
- (- toβ (x , a)) οΌβ¨ v β©
- (- ((x , a) , Ξ±)) β
where
i = toβ-toπ½ ((x , a) , Ξ±)
ii = ap (Ξ» z β toβ (z , a)) (minus-minus-is-plus x β»ΒΉ)
iii = toβ-neg (π½- (x , a)) β»ΒΉ
iv = ap -_ (toβ-neg (x , a) β»ΒΉ)
v = ap (-_ β -_) (toβ-toπ½ ((x , a) , Ξ±) β»ΒΉ)
β-minus-dist' : (p q : β) β - (p - q) οΌ q - p
β-minus-dist' p q = Ξ³
where
Ξ³ : - (p - q) οΌ q - p
Ξ³ = - (p - q) οΌβ¨ β-minus-dist p (- q) β»ΒΉ β©
(- p) - (- q) οΌβ¨ ap ((- p) +_) (β-minus-minus q β»ΒΉ) β©
(- p) + q οΌβ¨ β+-comm (- p) q β©
q - p β
β-minus-dist'' : (p q : β) β p - q οΌ - (q - p)
β-minus-dist'' p q = β-minus-dist' q p β»ΒΉ
β-add-zero : (x y z : β) β (x + y) οΌ (x - z) + (z + y)
β-add-zero x y z = Ξ³
where
i = ap (_+ y) (β-zero-right-neutral x β»ΒΉ)
ii = ap (Ξ» k β (x + k) + y) (β-inverse-sum-to-zero' z β»ΒΉ)
iii = ap (_+ y) (β+-assoc x (- z) z β»ΒΉ)
iv = β+-assoc (x - z) z y
Ξ³ : (x + y) οΌ (x - z) + (z + y)
Ξ³ = (x + y) οΌβ¨ i β©
(x + 0β) + y οΌβ¨ ii β©
x + ((- z) + z) + y οΌβ¨ iii β©
x + (- z) + z + y οΌβ¨ iv β©
(x - z) + (z + y) β
β-negation-dist-over-mult : (p q : β) β (- p) * q οΌ - (p * q)
β-negation-dist-over-mult ((x , a) , Ξ±) ((y , b) , Ξ²) = Ξ³
where
I : ((π½- (x , a)) π½* (y , b)) β (π½- ((x , a) π½* (y , b)))
β toβ ((π½- (x , a)) π½* (y , b)) οΌ toβ (π½- ((x , a) π½* (y , b)))
I = equivβequality ((π½- (x , a)) π½* (y , b)) (π½- ((x , a) π½* (y , b)))
i = ap (toβ (π½- (x , a)) *_) (toβ-toπ½ ((y , b) , Ξ²))
ii = toβ-* (π½- (x , a)) (y , b) β»ΒΉ
iii = I (π½-subtraction-dist-over-mult (x , a) (y , b))
iv = toβ-neg ((x , a) π½* (y , b)) β»ΒΉ
Ξ³ : (- ((x , a) , Ξ±)) * ((y , b) , Ξ²) οΌ - ((x , a) , Ξ±) * ((y , b) , Ξ²)
Ξ³ = (- ((x , a) , Ξ±)) * ((y , b) , Ξ²) οΌβ¨reflβ©
toβ (π½- (x , a)) * ((y , b) , Ξ²) οΌβ¨ i β©
toβ (π½- (x , a)) * toβ (y , b) οΌβ¨ ii β©
toβ ((π½- (x , a)) π½* (y , b)) οΌβ¨ iii β©
toβ (π½- ((x , a) π½* (y , b))) οΌβ¨ iv β©
- toβ ((x , a) π½* (y , b)) οΌβ¨reflβ©
- ((x , a) , Ξ±) * ((y , b) , Ξ²) β
β-negation-dist-over-mult' : (p q : β) β p * (- q) οΌ - (p * q)
β-negation-dist-over-mult' p q = Ξ³
where
Ξ³ : p * (- q) οΌ - p * q
Ξ³ = p * (- q) οΌβ¨ β*-comm p (- q) β©
(- q) * p οΌβ¨ β-negation-dist-over-mult q p β©
- q * p οΌβ¨ ap -_ (β*-comm q p) β©
- p * q β
β-negation-dist-over-mult'' : (p q : β) β p * (- q) οΌ (- p) * q
β-negation-dist-over-mult'' p q = Ξ³
where
Ξ³ : p * (- q) οΌ (- p) * q
Ξ³ = p * (- q) οΌβ¨ β-negation-dist-over-mult' p q β©
- p * q οΌβ¨ β-negation-dist-over-mult p q β»ΒΉ β©
(- p) * q β
toβ-subtraction : (p q : π½) β toβ p - toβ q οΌ toβ (p π½+ (π½- q))
toβ-subtraction p q = Ξ³
where
Ξ³ : toβ p - toβ q οΌ toβ (p π½+ (π½- q))
Ξ³ = toβ p - toβ q οΌβ¨ ap (toβ p +_) (toβ-neg q) β©
toβ p + toβ (π½- q) οΌβ¨ toβ-+ p (π½- q) β»ΒΉ β©
toβ (p π½+ (π½- q)) β
β-inverse-intro : (p q : β) β p οΌ p + (q - q)
β-inverse-intro p q = p οΌβ¨ β-zero-right-neutral p β»ΒΉ β©
p + 0β οΌβ¨ ap (p +_) (β-inverse-sum-to-zero q β»ΒΉ) β©
p + (q - q) β
β-inverse-intro'' : (p q : β) β p οΌ p + q - q
β-inverse-intro'' p q = β-inverse-intro p q β β+-assoc p q (- q) β»ΒΉ
β-inverse-intro' : (p q : β) β p οΌ (q - q) + p
β-inverse-intro' p q = β-inverse-intro p q β β+-comm p (q - q)
β-inverse-intro''' : (p q : β) β p οΌ p + ((- q) + q)
β-inverse-intro''' p q = β-inverse-intro p q β ap (p +_) (β+-comm q (- q))
β-inverse-intro'''' : (p q : β) β p οΌ p - q + q
β-inverse-intro'''' p q = β-inverse-intro''' p q β β+-assoc p (- q) q β»ΒΉ
1-2/3 : 1β - 2/3 οΌ 1/3
1-2/3 = refl
1-1/3 : 1β - 1/3 οΌ 2/3
1-1/3 = refl
1-2/5οΌ3/5 : 1β - 2/5 οΌ 3/5
1-2/5οΌ3/5 = refl
1-1/2 : 1β - 1/2 οΌ 1/2
1-1/2 = refl
1/2-1 : 1/2 - 1β οΌ - 1/2
1/2-1 = refl
β-minus-half : (p : β) β p - 1/2 * p οΌ 1/2 * p
β-minus-half p
= p - 1/2 * p οΌβ¨ ap (_- 1/2 * p) (β-mult-left-id p β»ΒΉ) β©
1β * p - 1/2 * p οΌβ¨ ap (1β * p +_) (β-negation-dist-over-mult 1/2 p β»ΒΉ) β©
1β * p + (- 1/2) * p οΌβ¨ β-distributivity' p 1β (- 1/2) β»ΒΉ β©
(1β - 1/2) * p οΌβ¨ refl β©
1/2 * p β
β+-right-cancellable : (p q r : β) β p + r οΌ q + r β p οΌ q
β+-right-cancellable p q r e = Ξ³
where
Ξ³ : p οΌ q
Ξ³ = p οΌβ¨ β-inverse-intro'' p r β©
p + r - r οΌβ¨ ap (_- r) e β©
q + r - r οΌβ¨ β-inverse-intro'' q r β»ΒΉ β©
q β
β-add-zero-twice'' : (p q r : β) β p οΌ p + q + r - q - r
β-add-zero-twice'' p q r = Ξ³
where
Ξ³ : p οΌ p + q + r - q - r
Ξ³ = p οΌβ¨ β-inverse-intro'' p q β©
p + q - q οΌβ¨ ap (Ξ» β β p + β - q) (β-inverse-intro'' q r) β©
p + (q + r - r) - q οΌβ¨ ap (_- q) (β+-assoc p (q + r) (- r) β»ΒΉ) β©
p + (q + r) - r - q οΌβ¨ ap (Ξ» β β β - r - q) (β+-assoc p q r β»ΒΉ) β©
p + q + r - r - q οΌβ¨ β+-rearrange (p + q + r) (- q) (- r) β»ΒΉ β©
p + q + r - q - r β
β-add-zero-twice''' : (p q r : β) β p οΌ p - q - r + q + r
β-add-zero-twice''' p q r = Ξ³
where
Ξ³ : p οΌ p - q - r + q + r
Ξ³ = p οΌβ¨ β-add-zero-twice'' p q r β©
p + q + r - q - r οΌβ¨ β+-assoc (p + q + r) (- q) (- r) β©
p + q + r + ((- q) - r) οΌβ¨ ap (_+ ((- q) - r)) (β+-assoc p q r) β©
p + (q + r) + ((- q) - r) οΌβ¨ β+-rearrange p (q + r) ((- q) - r) β©
p + ((- q) - r) + (q + r) οΌβ¨ ap (_+ (q + r)) (β+-assoc p (- q) (- r) β»ΒΉ) β©
p - q - r + (q + r) οΌβ¨ β+-assoc (p - q - r) q r β»ΒΉ β©
p - q - r + q + r β
β-add-zero-twice : (p q : β) β p οΌ p - q - q + q + q
β-add-zero-twice p q = β-add-zero-twice''' p q q
β-add-zero-twice' : (p q : β) β p οΌ p + q + q - q - q
β-add-zero-twice' p q = β-add-zero-twice'' p q q