Skip to content

Commit f7ba325

Browse files
committed
[ add ] Nat lemmas with _∸_, _⊔_ and _⊓_
Some stuff that I've needed. I have no idea if those belong here in stdlib. I don't know if I've put those in the right place, or named them properly. Hence the draft and lack of changlog entry.
1 parent dbdebad commit f7ba325

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

src/Data/Nat/Properties.agda

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1634,6 +1634,14 @@ m≤n⇒n∸m≤n (s≤s m≤n) = m≤n⇒m≤1+n (m≤n⇒n∸m≤n m≤n)
16341634
suc ((m + n) ∸ o) ≡⟨ cong suc (+-∸-assoc m o≤n) ⟩
16351635
suc (m + (n ∸ o)) ∎
16361636

1637+
m∸n+o≡m∸[n∸o] : {m n o} n ≤ m o ≤ n (m ∸ n) + o ≡ m ∸ (n ∸ o)
1638+
m∸n+o≡m∸[n∸o] {m} {zero} {zero} z≤n _ = +-identityʳ m
1639+
m∸n+o≡m∸[n∸o] {suc m} {suc n} {zero} (s≤s n≤m) z≤n = +-identityʳ (m ∸ n)
1640+
m∸n+o≡m∸[n∸o] {suc m} {suc n} {suc o} (s≤s n≤m) (s≤s o≤n)
1641+
rewrite +-suc (m ∸ n) o
1642+
| ∸-suc (≤-trans (m∸n≤m n o) n≤m)
1643+
= cong suc $ m∸n+o≡m∸[n∸o] n≤m o≤n
1644+
16371645
m≤n+o⇒m∸n≤o : m n {o} m ≤ n + o m ∸ n ≤ o
16381646
m≤n+o⇒m∸n≤o m zero le = le
16391647
m≤n+o⇒m∸n≤o zero (suc n) _ = z≤n
@@ -1722,11 +1730,24 @@ even≢odd (suc m) (suc n) eq = even≢odd m n (suc-injective (begin-equality
17221730
------------------------------------------------------------------------
17231731
-- Properties of _∸_ and _⊓_ and _⊔_
17241732

1733+
m∸n≤m⊔n : m n m ∸ n ≤ m ⊔ n
1734+
m∸n≤m⊔n m n = ≤-trans (m∸n≤m m n) (m≤m⊔n m n)
1735+
17251736
m⊓n+n∸m≡n : m n (m ⊓ n) + (n ∸ m) ≡ n
17261737
m⊓n+n∸m≡n zero n = refl
17271738
m⊓n+n∸m≡n (suc m) zero = refl
17281739
m⊓n+n∸m≡n (suc m) (suc n) = cong suc $ m⊓n+n∸m≡n m n
17291740

1741+
m⊔n∸[m∸n]≡n : m n m ⊔ n ∸ (m ∸ n) ≡ n
1742+
m⊔n∸[m∸n]≡n zero n rewrite 0∸n≡0 n = refl
1743+
m⊔n∸[m∸n]≡n (suc m) zero = n∸n≡0 m
1744+
m⊔n∸[m∸n]≡n (suc m) (suc n) rewrite ∸-suc (m∸n≤m⊔n m n) = cong suc $ m⊔n∸[m∸n]≡n m n
1745+
1746+
m⊔n≡m∸n+n : m n m ⊔ n ≡ m ∸ n + n
1747+
m⊔n≡m∸n+n zero n rewrite 0∸n≡0 n = refl
1748+
m⊔n≡m∸n+n (suc m) zero rewrite +-identityʳ m = refl
1749+
m⊔n≡m∸n+n (suc m) (suc n) rewrite +-suc (m ∸ n) n = cong suc $ m⊔n≡m∸n+n m n
1750+
17301751
[m∸n]⊓[n∸m]≡0 : m n (m ∸ n) ⊓ (n ∸ m) ≡ 0
17311752
[m∸n]⊓[n∸m]≡0 zero zero = refl
17321753
[m∸n]⊓[n∸m]≡0 zero (suc n) = refl
@@ -1844,6 +1865,17 @@ m∸n≤∣m-n∣ m n with ≤-total m n
18441865
∣m-n∣≤m⊔n (suc m) zero = ≤-refl
18451866
∣m-n∣≤m⊔n (suc m) (suc n) = m≤n⇒m≤1+n (∣m-n∣≤m⊔n m n)
18461867

1868+
∣m-n∣≡m⊔n∸m⊓n : m n ∣ m - n ∣ ≡ m ⊔ n ∸ m ⊓ n
1869+
∣m-n∣≡m⊔n∸m⊓n m n with ≤-total m n
1870+
... | inj₁ m≤n
1871+
rewrite m≤n⇒m⊔n≡n m≤n
1872+
| m≤n⇒m⊓n≡m m≤n
1873+
= m≤n⇒∣m-n∣≡n∸m m≤n
1874+
... | inj₂ n≤m
1875+
rewrite m≥n⇒m⊔n≡m n≤m
1876+
| m≥n⇒m⊓n≡n n≤m
1877+
= m≤n⇒∣n-m∣≡n∸m n≤m
1878+
18471879
∣-∣-identityˡ : LeftIdentity 0 ∣_-_∣
18481880
∣-∣-identityˡ x = refl
18491881

0 commit comments

Comments
 (0)