Skip to content

Commit 63fd6e6

Browse files
authored
Merge branch 'master' into Vec-padRight-properties
2 parents 3c9a5f4 + aab6732 commit 63fd6e6

File tree

7 files changed

+37
-16
lines changed

7 files changed

+37
-16
lines changed

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Highlights
99
Bug-fixes
1010
---------
1111

12+
* Fix a type error in `README.Data.Fin.Relation.Unary.Top` within the definition of `>-weakInduction`.
13+
1214
Non-backwards compatible changes
1315
--------------------------------
1416

@@ -20,6 +22,16 @@ Minor improvements
2022
backwards compatible, but does change the equational behaviour of these
2123
functions to be more eager, because no longer blocking on pattern matching
2224
on that argument.
25+
```
26+
27+
* Refactored usages of `+-∸-assoc 1` to `∸-suc` in:
28+
```agda
29+
README.Data.Fin.Relation.Unary.Top
30+
Algebra.Properties.Semiring.Binomial
31+
Data.Fin.Subset.Properties
32+
Data.Nat.Binary.Subtraction
33+
Data.Nat.Combinatorics
34+
```
2335

2436
Deprecated modules
2537
------------------
@@ -32,3 +44,9 @@ New modules
3244

3345
Additions to existing modules
3446
-----------------------------
47+
48+
* In `Data.Nat.Properties`:
49+
```agda
50+
∸-suc : m ≤ n → suc n ∸ m ≡ suc (n ∸ m)
51+
```
52+

doc/README/Data/Fin/Relation/Unary/Top.agda

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
module README.Data.Fin.Relation.Unary.Top where
1818

1919
open import Data.Nat.Base using (ℕ; zero; suc; _∸_; _≤_)
20-
open import Data.Nat.Properties using (n∸n≡0; +-∸-assoc; ≤-reflexive)
20+
open import Data.Nat.Properties using (n∸n≡0; ∸-suc; ≤-reflexive)
2121
open import Data.Fin.Base using (Fin; zero; suc; toℕ; fromℕ; inject₁; _>_)
2222
open import Data.Fin.Properties using (toℕ-fromℕ; toℕ<n; toℕ-inject₁)
2323
open import Data.Fin.Induction hiding (>-weakInduction)
@@ -76,7 +76,7 @@ opposite-prop {suc n} i with view i
7676
... | ‵fromℕ rewrite toℕ-fromℕ n | n∸n≡0 n = refl
7777
... | ‵inject₁ j = begin
7878
suc (toℕ (opposite j)) ≡⟨ cong suc (opposite-prop j) ⟩
79-
suc (n ∸ suc (toℕ j)) ≡⟨ +-∸-assoc 1 (toℕ<n j) ⟨
79+
suc (n ∸ suc (toℕ j)) ≡⟨ ∸-suc (toℕ<n j) ⟨
8080
n ∸ toℕ j ≡⟨ cong (n ∸_) (toℕ-inject₁ j) ⟨
8181
n ∸ toℕ (inject₁ j) ∎ where open ≡-Reasoning
8282

@@ -94,7 +94,7 @@ open WF using (Acc; acc)
9494
induct : {i} Acc _>_ i P i
9595
induct {i} (acc rec) with view i
9696
... | ‵fromℕ = Pₙ
97-
... | ‵inject₁ j = Pᵢ₊₁⇒Pᵢ j (induct (rec _ inject₁[j]+1≤[j+1]))
97+
... | ‵inject₁ j = Pᵢ₊₁⇒Pᵢ j (induct (rec inject₁[j]+1≤[j+1]))
9898
where
9999
inject₁[j]+1≤[j+1] : suc (toℕ (inject₁ j)) ≤ toℕ (suc j)
100100
inject₁[j]+1≤[j+1] = ≤-reflexive (toℕ-inject₁ (suc j))

src/Algebra/Properties/Semiring/Binomial.agda

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ open import Data.Nat.Base as ℕ hiding (_+_; _*_; _^_)
2121
open import Data.Nat.Combinatorics
2222
using (_C_; nCn≡1; nC1≡n; nCk+nC[k+1]≡[n+1]C[k+1])
2323
open import Data.Nat.Properties as ℕ
24-
using (<⇒<ᵇ; n<1+n; n∸n≡0; +-∸-assoc)
24+
using (<⇒<ᵇ; n<1+n; n∸n≡0; ∸-suc)
2525
open import Data.Fin.Base as Fin
2626
using (Fin; zero; suc; toℕ; fromℕ; inject₁)
2727
open import Data.Fin.Patterns using (0F)
@@ -149,7 +149,7 @@ y*lemma x*y≈y*x {n} j = begin
149149
k≡j = toℕ-inject₁ j
150150

151151
[n-k]≡[n-j] : [n-k] ≡ [n-j]
152-
[n-k]≡[n-j] = ≡.trans (cong (n ∸_) k≡j) (+-∸-assoc 1 (toℕ<n j))
152+
[n-k]≡[n-j] = ≡.trans (cong (n ∸_) k≡j) (∸-suc (toℕ<n j))
153153

154154
------------------------------------------------------------------------
155155
-- Now, a lemma characterising the sum of the term₁ and term₂ expressions

src/Data/Fin/Subset/Properties.agda

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ p∪∁p≡⊤ (inside ∷ p) = cong (inside ∷_) (p∪∁p≡⊤ p)
367367
∣∁p∣≡n∸∣p∣ (inside ∷ p) = ∣∁p∣≡n∸∣p∣ p
368368
∣∁p∣≡n∸∣p∣ (outside ∷ p) = begin
369369
suc ∣ ∁ p ∣ ≡⟨ cong suc (∣∁p∣≡n∸∣p∣ p) ⟩
370-
suc (_ ∸ ∣ p ∣) ≡⟨ sym (ℕ.+-∸-assoc 1 (∣p∣≤n p)) ⟩
370+
suc (_ ∸ ∣ p ∣) ≡⟨ sym (ℕ.∸-suc (∣p∣≤n p)) ⟩
371371
suc _ ∸ ∣ p ∣ ∎
372372
where open ≡-Reasoning
373373

src/Data/Nat/Binary/Subtraction.agda

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ toℕ-homo-∸ 2[1+ x ] 1+[2 y ] with x <? y
8888
... | no x≮y = begin
8989
ℕ.suc (2 ℕ.* toℕ (x ∸ y)) ≡⟨ cong (ℕ.suc ∘ (2 ℕ.*_)) (toℕ-homo-∸ x y) ⟩
9090
ℕ.suc (2 ℕ.* (toℕ x ℕ.∸ toℕ y)) ≡⟨ cong ℕ.suc (ℕ.*-distribˡ-∸ 2 (toℕ x) (toℕ y)) ⟩
91-
ℕ.suc (2 ℕ.* toℕ x ℕ.∸ 2 ℕ.* toℕ y) ≡⟨ sym (ℕ.+-∸-assoc 1 (ℕ.*-monoʳ-≤ 2 (toℕ-mono-≤ (≮⇒≥ x≮y)))) ⟩
91+
ℕ.suc (2 ℕ.* toℕ x ℕ.∸ 2 ℕ.* toℕ y) ≡⟨ sym (ℕ.∸-suc (ℕ.*-monoʳ-≤ 2 (toℕ-mono-≤ (≮⇒≥ x≮y)))) ⟩
9292
ℕ.suc (2 ℕ.* toℕ x) ℕ.∸ 2 ℕ.* toℕ y ≡⟨ sym (cong (ℕ._∸ 2 ℕ.* toℕ y) (ℕ.+-suc (toℕ x) (1 ℕ.* toℕ x))) ⟩
9393
2 ℕ.* (ℕ.suc (toℕ x)) ℕ.∸ ℕ.suc (2 ℕ.* toℕ y) ∎
9494
where open ≡-Reasoning

src/Data/Nat/Combinatorics.agda

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ module _ {n k} (k<n : k < n) where
122122
[n-k-1]! = [n-k-1] !
123123

124124
[n-k]≡1+[n-k-1] : [n-k] ≡ suc [n-k-1]
125-
[n-k]≡1+[n-k-1] = +-∸-assoc 1 k<n
125+
[n-k]≡1+[n-k-1] = ∸-suc k<n
126126

127127

128128
[n-k]*[n-k-1]!≡[n-k]! : [n-k] * [n-k-1]! ≡ [n-k]!

src/Data/Nat/Properties.agda

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1524,6 +1524,10 @@ pred[m∸n]≡m∸[1+n] (suc m) (suc n) = pred[m∸n]≡m∸[1+n] m n
15241524
------------------------------------------------------------------------
15251525
-- Properties of _∸_ and _≤_/_<_
15261526

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+
15271531
m∸n≤m : m n m ∸ n ≤ m
15281532
m∸n≤m n zero = ≤-refl
15291533
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)
16141618
∸-+-assoc (suc m) (suc n) o = ∸-+-assoc m n o
16151619

16161620
+-∸-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)) ∎
16231626

16241627
m≤n+o⇒m∸n≤o : m n {o} m ≤ n + o m ∸ n ≤ o
16251628
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⁻¹
16341637
m+n≤o⇒m≤o∸n : m {n o} m + n ≤ o m ≤ o ∸ n
16351638
m+n≤o⇒m≤o∸n zero le = z≤n
16361639
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)
16381641

16391642
m≤o∸n⇒m+n≤o : m {n o} (n≤o : n ≤ o) m ≤ o ∸ n m + n ≤ o
16401643
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
16711674
m∸[m∸n]≡n : {m n} n ≤ m m ∸ (m ∸ n) ≡ n
16721675
m∸[m∸n]≡n {m} {_} z≤n = n∸n≡0 m
16731676
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) ⟩
16751678
suc (m ∸ (m ∸ n)) ≡⟨ cong suc (m∸[m∸n]≡n n≤m) ⟩
16761679
suc n ∎
16771680

0 commit comments

Comments
 (0)