@@ -1524,6 +1524,10 @@ pred[m∸n]≡m∸[1+n] (suc m) (suc n) = pred[m∸n]≡m∸[1+n] m n
1524
1524
------------------------------------------------------------------------
1525
1525
-- Properties of _∸_ and _≤_/_<_
1526
1526
1527
+ ∸-suc : m ≤ n → suc n ∸ m ≡ suc (n ∸ m)
1528
+ ∸-suc z≤n = refl
1529
+ ∸-suc (s≤s m≤n) = ∸-suc m≤n
1530
+
1527
1531
m∸n≤m : ∀ m n → m ∸ n ≤ m
1528
1532
m∸n≤m n zero = ≤-refl
1529
1533
m∸n≤m zero (suc n) = ≤-refl
@@ -1614,12 +1618,11 @@ m≤n⇒n∸m≤n (s≤s m≤n) = m≤n⇒m≤1+n (m≤n⇒n∸m≤n m≤n)
1614
1618
∸-+-assoc (suc m) (suc n) o = ∸-+-assoc m n o
1615
1619
1616
1620
+-∸-assoc : ∀ m {n o} → o ≤ n → (m + n) ∸ o ≡ m + (n ∸ o)
1617
- +-∸-assoc m (z≤n {n = n}) = begin-equality m + n ∎
1618
- +-∸-assoc m (s≤s {m = o} {n = n} o≤n) = begin-equality
1619
- (m + suc n) ∸ suc o ≡⟨ cong (_∸ suc o) (+-suc m n) ⟩
1620
- suc (m + n) ∸ suc o ≡⟨⟩
1621
- (m + n) ∸ o ≡⟨ +-∸-assoc m o≤n ⟩
1622
- m + (n ∸ o) ∎
1621
+ +-∸-assoc zero {n = n} {o = o} _ = begin-equality n ∸ o ∎
1622
+ +-∸-assoc (suc m) {n = n} {o = o} o≤n = begin-equality
1623
+ suc (m + n) ∸ o ≡⟨ ∸-suc (m≤n⇒m≤o+n m o≤n) ⟩
1624
+ suc ((m + n) ∸ o) ≡⟨ cong suc (+-∸-assoc m o≤n) ⟩
1625
+ suc (m + (n ∸ o)) ∎
1623
1626
1624
1627
m≤n+o⇒m∸n≤o : ∀ m n {o} → m ≤ n + o → m ∸ n ≤ o
1625
1628
m≤n+o⇒m∸n≤o m zero le = le
@@ -1634,7 +1637,7 @@ m<n+o⇒m∸n<o (suc m) (suc n) lt = m<n+o⇒m∸n<o m n (s<s⁻¹
1634
1637
m+n≤o⇒m≤o∸n : ∀ m {n o} → m + n ≤ o → m ≤ o ∸ n
1635
1638
m+n≤o⇒m≤o∸n zero le = z≤n
1636
1639
m+n≤o⇒m≤o∸n (suc m) (s≤s le)
1637
- rewrite +-∸-assoc 1 (m+n≤o⇒n≤o m le) = s≤s (m+n≤o⇒m≤o∸n m le)
1640
+ rewrite ∸-suc (m+n≤o⇒n≤o m le) = s≤s (m+n≤o⇒m≤o∸n m le)
1638
1641
1639
1642
m≤o∸n⇒m+n≤o : ∀ m {n o} (n≤o : n ≤ o) → m ≤ o ∸ n → m + n ≤ o
1640
1643
m≤o∸n⇒m+n≤o m z≤n le rewrite +-identityʳ m = le
@@ -1671,7 +1674,7 @@ m∸n+n≡m {m} {n} n≤m = begin-equality
1671
1674
m∸[m∸n]≡n : ∀ {m n} → n ≤ m → m ∸ (m ∸ n) ≡ n
1672
1675
m∸[m∸n]≡n {m} {_} z≤n = n∸n≡0 m
1673
1676
m∸[m∸n]≡n {suc m} {suc n} (s≤s n≤m) = begin-equality
1674
- suc m ∸ (m ∸ n) ≡⟨ +-∸-assoc 1 (m∸n≤m m n) ⟩
1677
+ suc m ∸ (m ∸ n) ≡⟨ ∸-suc (m∸n≤m m n) ⟩
1675
1678
suc (m ∸ (m ∸ n)) ≡⟨ cong suc (m∸[m∸n]≡n n≤m) ⟩
1676
1679
suc n ∎
1677
1680
0 commit comments