diff --git a/CHANGELOG.md b/CHANGELOG.md index f324f0c758..a2668ad71b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -373,6 +373,11 @@ Additions to existing modules map-id : map id ≗ id {A = List⁺ A} ``` +* In `Data.Nat.Properties`: + ```agda + ∸-suc : m ≤ n → suc n ∸ m ≡ suc (n ∸ m) + ``` + * In `Data.Product.Function.Dependent.Propositional`: ```agda Σ-↪ : (I↪J : I ↪ J) → (∀ {j} → A (from I↪J j) ↪ B j) → Σ I A ↪ Σ J B diff --git a/src/Data/Nat/Properties.agda b/src/Data/Nat/Properties.agda index 5cadc91273..eaa6589364 100644 --- a/src/Data/Nat/Properties.agda +++ b/src/Data/Nat/Properties.agda @@ -1520,6 +1520,10 @@ pred[m∸n]≡m∸[1+n] (suc m) (suc n) = pred[m∸n]≡m∸[1+n] m n ------------------------------------------------------------------------ -- Properties of _∸_ and _≤_/_<_ +∸-suc : m ≤ n → suc n ∸ m ≡ suc (n ∸ m) +∸-suc z≤n = refl +∸-suc (s≤s m≤n) = ∸-suc m≤n + m∸n≤m : ∀ m n → m ∸ n ≤ m m∸n≤m n zero = ≤-refl m∸n≤m zero (suc n) = ≤-refl @@ -1610,12 +1614,11 @@ m≤n⇒n∸m≤n (s≤s m≤n) = m≤n⇒m≤1+n (m≤n⇒n∸m≤n m≤n) ∸-+-assoc (suc m) (suc n) o = ∸-+-assoc m n o +-∸-assoc : ∀ m {n o} → o ≤ n → (m + n) ∸ o ≡ m + (n ∸ o) -+-∸-assoc m (z≤n {n = n}) = begin-equality m + n ∎ -+-∸-assoc m (s≤s {m = o} {n = n} o≤n) = begin-equality - (m + suc n) ∸ suc o ≡⟨ cong (_∸ suc o) (+-suc m n) ⟩ - suc (m + n) ∸ suc o ≡⟨⟩ - (m + n) ∸ o ≡⟨ +-∸-assoc m o≤n ⟩ - m + (n ∸ o) ∎ ++-∸-assoc zero {n = n} {o = o} _ = begin-equality n ∸ o ∎ ++-∸-assoc (suc m) {n = n} {o = o} o≤n = begin-equality + suc (m + n) ∸ o ≡⟨ ∸-suc (m≤n⇒m≤o+n m o≤n) ⟩ + suc ((m + n) ∸ o) ≡⟨ cong suc (+-∸-assoc m o≤n) ⟩ + suc (m + (n ∸ o)) ∎ m≤n+o⇒m∸n≤o : ∀ m n {o} → m ≤ n + o → m ∸ n ≤ o m≤n+o⇒m∸n≤o m zero le = le @@ -1630,7 +1633,7 @@ m