Skip to content

Commit 84c7753

Browse files
authored
More properties of absolute value in Data.Rational (#1477)
1 parent 6dcfb72 commit 84c7753

File tree

3 files changed

+56
-7
lines changed

3 files changed

+56
-7
lines changed

CHANGELOG.md

+12-2
Original file line numberDiff line numberDiff line change
@@ -789,12 +789,14 @@ Other minor additions
789789
∣-∣-nonNeg : NonNegative ∣ p ∣
790790
0≤∣p∣ : 0ℚ ≤ ∣ p ∣
791791
0≤p⇒∣p∣≡p : 0ℚ ≤ p → ∣ p ∣ ≡ p
792+
∣p∣≡p⇒0≤p : ∣ p ∣ ≡ p → 0ℚ ≤ p
792793
∣-p∣≡∣p∣ : ∣ - p ∣ ≡ ∣ p ∣
793-
∣p∣≡p⇒p≡0 : ∣ p ∣ ≡ 0ℚ → p ≡ 0ℚ
794-
∣p∣≡p∣p∣≡-p : ∣ p ∣ ≡ p ⊎ ∣ p ∣ ≡ - p
794+
∣p∣≡0⇒p≡0 : ∣ p ∣ ≡ 0ℚ → p ≡ 0ℚ
795+
∣p∣≡p∣p∣≡-p : ∣ p ∣ ≡ p ⊎ ∣ p ∣ ≡ - p
795796
∣p+q∣≤∣p∣+∣q∣ : ∣ p + q ∣ ≤ ∣ p ∣ + ∣ q ∣
796797
∣p-q∣≤∣p∣+∣q∣ : ∣ p - q ∣ ≤ ∣ p ∣ + ∣ q ∣
797798
∣p*q∣≡∣p∣*∣q∣ : ∣ p * q ∣ ≡ ∣ p ∣ * ∣ q ∣
799+
∣∣p∣∣≡∣p∣ : ∣ ∣ p ∣ ∣ ≡ ∣ p ∣
798800
```
799801

800802
* Add new relations and functions to `Data.Rational.Unnormalised.Base`:
@@ -827,6 +829,9 @@ Other minor additions
827829
≤ᵇ⇒≤ : T (p ≤ᵇ q) → p ≤ q
828830
≤⇒≤ᵇ : p ≤ q → T (p ≤ᵇ q)
829831
832+
p+p≃0⇒p≃0 : p + p ≃ 0ℚᵘ → p ≃ 0ℚᵘ
833+
p≃-p⇒p≃0 : p ≃ - p → p ≃ 0ℚᵘ
834+
830835
neg-cancel-< : - p < - q → q < p
831836
neg-cancel-≤-≥ : - p ≤ - q → q ≤ p
832837
@@ -986,17 +991,22 @@ Other minor additions
986991
*-distribʳ-⊓-nonPos : NonPositive p → (q ⊓ r) * p ≃ (q * p) ⊔ (r * p)
987992
988993
∣-∣-cong : p ≃ q → ∣ p ∣ ≃ ∣ q ∣
994+
∣-∣-nonNeg : NonNegative ∣ p ∣
995+
0≤∣p∣ : 0 ≤ ∣ p ∣
989996
∣p∣≃0⇒p≃0 : ∣ p ∣ ≃ 0ℚᵘ → p ≃ 0ℚᵘ
990997
∣-p∣≡∣p∣ : ∣ - p ∣ ≡ ∣ p ∣
991998
∣-p∣≃∣p∣ : ∣ - p ∣ ≃ ∣ p ∣
992999
0≤p⇒∣p∣≡p : 0ℚᵘ ≤ p → ∣ p ∣ ≡ p
9931000
0≤p⇒∣p∣≃p : 0ℚᵘ ≤ p → ∣ p ∣ ≃ p
9941001
∣p∣≡p⇒0≤p : ∣ p ∣ ≡ p → 0ℚᵘ ≤ p
1002+
∣p∣≃p⇒0≤p : ∣ p ∣ ≃ p → 0ℚᵘ ≤ p
9951003
∣p∣≡p∨∣p∣≡-p : (∣ p ∣ ≡ p) ⊎ (∣ p ∣ ≡ - p)
9961004
∣p+q∣≤∣p∣+∣q∣ : ∣ p + q ∣ ≤ ∣ p ∣ + ∣ q ∣
9971005
∣p-q∣≤∣p∣+∣q∣ : ∣ p - q ∣ ≤ ∣ p ∣ + ∣ q ∣
9981006
∣p*q∣≡∣p∣*∣q∣ : ∣ p * q ∣ ≡ ∣ p ∣ * ∣ q ∣
9991007
∣p*q∣≃∣p∣*∣q∣ : ∣ p * q ∣ ≃ ∣ p ∣ * ∣ q ∣
1008+
∣∣p∣∣≡∣p∣ : ∣ ∣ p ∣ ∣ ≡ ∣ p ∣
1009+
∣∣p∣∣≃∣p∣ : ∣ ∣ p ∣ ∣ ≃ ∣ p ∣
10001010
```
10011011

10021012
* Added new functions and pattern synonyms to `Data.Tree.AVL.Indexed`:

src/Data/Rational/Properties.agda

+14-5
Original file line numberDiff line numberDiff line change
@@ -1619,8 +1619,8 @@ toℚᵘ-homo-∣-∣ (mkℚ -[1+ _ ] _ _) = *≡* refl
16191619
------------------------------------------------------------------------
16201620
-- Properties
16211621

1622-
∣p∣≡p⇒p≡0 : p ∣ p ∣ ≡ 0ℚ p ≡ 0ℚ
1623-
∣p∣≡p⇒p≡0 (mkℚ +0 zero _) ∣p∣≡0 = refl
1622+
∣p∣≡0⇒p≡0 : p ∣ p ∣ ≡ 0ℚ p ≡ 0ℚ
1623+
∣p∣≡0⇒p≡0 (mkℚ +0 zero _) ∣p∣≡0 = refl
16241624

16251625
0≤∣p∣ : p 0ℚ ≤ ∣ p ∣
16261626
0≤∣p∣ p = *≤* (begin
@@ -1638,9 +1638,16 @@ toℚᵘ-homo-∣-∣ (mkℚ -[1+ _ ] _ _) = *≡* refl
16381638
∣-p∣≡∣p∣ (mkℚ (+ zero) d-1 _) = refl
16391639
∣-p∣≡∣p∣ (mkℚ -[1+ n ] d-1 _) = refl
16401640

1641-
∣p∣≡p⊎∣p∣≡-p : p ∣ p ∣ ≡ p ⊎ ∣ p ∣ ≡ - p
1642-
∣p∣≡p⊎∣p∣≡-p (mkℚ (+ n) d-1 _) = inj₁ refl
1643-
∣p∣≡p⊎∣p∣≡-p (mkℚ (-[1+ n ]) d-1 _) = inj₂ refl
1641+
∣p∣≡p⇒0≤p : {p} ∣ p ∣ ≡ p 0ℚ ≤ p
1642+
∣p∣≡p⇒0≤p {p} ∣p∣≡p = toℚᵘ-cancel-≤ (ℚᵘ.∣p∣≃p⇒0≤p (begin-equality
1643+
ℚᵘ.∣ toℚᵘ p ∣ ≈⟨ ℚᵘ.≃-sym (toℚᵘ-homo-∣-∣ p) ⟩
1644+
toℚᵘ ∣ p ∣ ≡⟨ cong toℚᵘ ∣p∣≡p ⟩
1645+
toℚᵘ p ∎))
1646+
where open ℚᵘ.≤-Reasoning
1647+
1648+
∣p∣≡p∨∣p∣≡-p : p ∣ p ∣ ≡ p ⊎ ∣ p ∣ ≡ - p
1649+
∣p∣≡p∨∣p∣≡-p (mkℚ (+ n) d-1 _) = inj₁ refl
1650+
∣p∣≡p∨∣p∣≡-p (mkℚ (-[1+ n ]) d-1 _) = inj₂ refl
16441651

16451652
∣p+q∣≤∣p∣+∣q∣ : p q ∣ p + q ∣ ≤ ∣ p ∣ + ∣ q ∣
16461653
∣p+q∣≤∣p∣+∣q∣ p q = toℚᵘ-cancel-≤ (begin
@@ -1674,6 +1681,8 @@ toℚᵘ-homo-∣-∣ (mkℚ -[1+ _ ] _ _) = *≡* refl
16741681
∣-∣-nonNeg (mkℚ +0 _ _) = _
16751682
∣-∣-nonNeg (mkℚ -[1+ _ ] _ _) = _
16761683

1684+
∣∣p∣∣≡∣p∣ : p ∣ ∣ p ∣ ∣ ≡ ∣ p ∣
1685+
∣∣p∣∣≡∣p∣ p = 0≤p⇒∣p∣≡p (0≤∣p∣ p)
16771686

16781687
------------------------------------------------------------------------
16791688
-- DEPRECATED NAMES

src/Data/Rational/Unnormalised/Properties.agda

+30
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,9 @@ nonNeg∧nonPos⇒0 {mkℚᵘ +0 _} _ _ = *≡* refl
717717
q + r ≈⟨ +-comm q r ⟩
718718
r + q ∎ where open ≤-Reasoning
719719

720+
p+p≃0⇒p≃0 : p p + p ≃ 0ℚᵘ p ≃ 0ℚᵘ
721+
p+p≃0⇒p≃0 (mkℚᵘ (ℤ.+ ℕ.zero) _) (*≡* _) = *≡* refl
722+
720723
------------------------------------------------------------------------
721724
-- Properties of _+_ and -_
722725

@@ -729,6 +732,13 @@ neg-distrib-+ p q = ↥↧≡⇒≡ (begin
729732
) refl
730733
where open ≡-Reasoning
731734

735+
p≃-p⇒p≃0 : p p ≃ - p p ≃ 0ℚᵘ
736+
p≃-p⇒p≃0 p p≃-p = p+p≃0⇒p≃0 p (begin-equality
737+
p + p ≈⟨ +-congʳ p p≃-p ⟩
738+
p - p ≈⟨ +-inverseʳ p ⟩
739+
0ℚᵘ ∎)
740+
where open ≤-Reasoning
741+
732742
------------------------------------------------------------------------
733743
-- Properties of _+_ and _≤_
734744

@@ -1647,6 +1657,11 @@ neg-distrib-⊓-⊔ = antimono-≤-distrib-⊓ neg-mono-≤
16471657
∣p∣≃0⇒p≃0 {mkℚᵘ (ℤ.+ n) d-1} p≃0ℚ = p≃0ℚ
16481658
∣p∣≃0⇒p≃0 {mkℚᵘ -[1+ n ] d-1} (*≡* ())
16491659

1660+
0≤∣p∣ : p 0ℚᵘ ≤ ∣ p ∣
1661+
0≤∣p∣ (mkℚᵘ ℤ.+0 _) = *≤* (ℤ.+≤+ ℕ.z≤n)
1662+
0≤∣p∣ (mkℚᵘ ℤ.+[1+ _ ] _) = *≤* (ℤ.+≤+ ℕ.z≤n)
1663+
0≤∣p∣ (mkℚᵘ ℤ.-[1+ _ ] _) = *≤* (ℤ.+≤+ ℕ.z≤n)
1664+
16501665
∣-p∣≡∣p∣ : p ∣ - p ∣ ≡ ∣ p ∣
16511666
∣-p∣≡∣p∣ (mkℚᵘ +[1+ n ] d) = refl
16521667
∣-p∣≡∣p∣ (mkℚᵘ +0 d) = refl
@@ -1674,6 +1689,11 @@ neg-distrib-⊓-⊔ = antimono-≤-distrib-⊓ neg-mono-≤
16741689
∣p∣≡p∨∣p∣≡-p (mkℚᵘ (ℤ.+ n) d-1) = inj₁ refl
16751690
∣p∣≡p∨∣p∣≡-p (mkℚᵘ (-[1+ n ]) d-1) = inj₂ refl
16761691

1692+
∣p∣≃p⇒0≤p : {p} ∣ p ∣ ≃ p 0ℚᵘ ≤ p
1693+
∣p∣≃p⇒0≤p {p} ∣p∣≃p with ∣p∣≡p∨∣p∣≡-p p
1694+
... | inj₁ ∣p∣≡p = ∣p∣≡p⇒0≤p ∣p∣≡p
1695+
... | inj₂ ∣p∣≡-p rewrite ∣p∣≡-p = ≤-reflexive (≃-sym (p≃-p⇒p≃0 p (≃-sym ∣p∣≃p)))
1696+
16771697
∣p+q∣≤∣p∣+∣q∣ : p q ∣ p + q ∣ ≤ ∣ p ∣ + ∣ q ∣
16781698
∣p+q∣≤∣p∣+∣q∣ p q = *≤* (begin
16791699
↥ ∣ p + q ∣ ℤ.* ↧ (∣ p ∣ + ∣ q ∣) ≡⟨⟩
@@ -1732,6 +1752,16 @@ neg-distrib-⊓-⊔ = antimono-≤-distrib-⊓ neg-mono-≤
17321752
∣p*q∣≃∣p∣*∣q∣ : p q ∣ p * q ∣ ≃ ∣ p ∣ * ∣ q ∣
17331753
∣p*q∣≃∣p∣*∣q∣ p q = ≃-reflexive (∣p*q∣≡∣p∣*∣q∣ p q)
17341754

1755+
∣∣p∣∣≡∣p∣ : p ∣ ∣ p ∣ ∣ ≡ ∣ p ∣
1756+
∣∣p∣∣≡∣p∣ p = 0≤p⇒∣p∣≡p (0≤∣p∣ p)
1757+
1758+
∣∣p∣∣≃∣p∣ : p ∣ ∣ p ∣ ∣ ≃ ∣ p ∣
1759+
∣∣p∣∣≃∣p∣ p = ≃-reflexive (∣∣p∣∣≡∣p∣ p)
1760+
1761+
∣-∣-nonNeg : p NonNegative ∣ p ∣
1762+
∣-∣-nonNeg (mkℚᵘ +[1+ _ ] _) = _
1763+
∣-∣-nonNeg (mkℚᵘ +0 _) = _
1764+
∣-∣-nonNeg (mkℚᵘ -[1+ _ ] _) = _
17351765

17361766
------------------------------------------------------------------------
17371767
-- DEPRECATED NAMES

0 commit comments

Comments
 (0)