@@ -24,6 +24,10 @@ open import Relation.Nullary.Decidable using (False; toWitnessFalse)
24
24
25
25
open ≤-Reasoning
26
26
27
+ private
28
+ variable
29
+ m n o p : ℕ
30
+
27
31
------------------------------------------------------------------------
28
32
-- Definitions
29
33
@@ -46,10 +50,10 @@ m%n≡m∸m/n*n m n = begin-equality
46
50
------------------------------------------------------------------------
47
51
-- Properties of _%_
48
52
49
- %-congˡ : ∀ {m n o} .⦃ _ : NonZero o ⦄ → m ≡ n → m % o ≡ n % o
53
+ %-congˡ : .⦃ _ : NonZero o ⦄ → m ≡ n → m % o ≡ n % o
50
54
%-congˡ refl = refl
51
55
52
- %-congʳ : ∀ {m n o} .⦃ _ : NonZero m ⦄ .⦃ _ : NonZero n ⦄ → m ≡ n →
56
+ %-congʳ : .⦃ _ : NonZero m ⦄ .⦃ _ : NonZero n ⦄ → m ≡ n →
53
57
o % m ≡ o % n
54
58
%-congʳ refl = refl
55
59
@@ -73,7 +77,7 @@ m%n%n≡m%n m (suc n-1) = modₕ-idem 0 m n-1
73
77
(m + n) % n ≡⟨ [m+n]%n≡m%n m n ⟩
74
78
m % n ∎
75
79
76
- m≤n⇒[n∸m]%m≡n%m : ∀ {m n} .⦃ _ : NonZero m ⦄ → m ≤ n →
80
+ m≤n⇒[n∸m]%m≡n%m : .⦃ _ : NonZero m ⦄ → m ≤ n →
77
81
(n ∸ m) % m ≡ n % m
78
82
m≤n⇒[n∸m]%m≡n%m {m} {n} m≤n = begin-equality
79
83
(n ∸ m) % m ≡˘⟨ [m+n]%n≡m%n (n ∸ m) m ⟩
@@ -108,7 +112,7 @@ m∣n⇒o%n%m≡o%m m n@.(p * m) o (divides-refl p) = begin-equality
108
112
o ∎
109
113
110
114
m*n%n≡0 : ∀ m n .{{_ : NonZero n}} → (m * n) % n ≡ 0
111
- m*n%n≡0 m (suc n-1 ) = [m+kn]%n≡m%n 0 m (suc n-1)
115
+ m*n%n≡0 m n@ (suc _ ) = [m+kn]%n≡m%n 0 m n
112
116
113
117
m%n<n : ∀ m n .{{_ : NonZero n}} → m % n < n
114
118
m%n<n m (suc n-1) = s≤s (a[modₕ]n<n 0 m n-1)
@@ -119,12 +123,12 @@ m%n≤n m n = <⇒≤ (m%n<n m n)
119
123
m%n≤m : ∀ m n .{{_ : NonZero n}} → m % n ≤ m
120
124
m%n≤m m (suc n-1) = a[modₕ]n≤a 0 m n-1
121
125
122
- m≤n⇒m%n≡m : ∀ {m n} → m ≤ n → m % suc n ≡ m
123
- m≤n⇒m%n≡m {m} {n } m≤n with ≤⇒≤″ m≤n
124
- ... | less-than-or-equal {k} refl = a≤n⇒a[modₕ]n≡a 0 (m + k) m k
126
+ m≤n⇒m%n≡m : m ≤ n → m % suc n ≡ m
127
+ m≤n⇒m%n≡m {m = m } m≤n with less-than-or-equal {k} refl ← ≤⇒≤″ m≤n
128
+ = a≤n⇒a[modₕ]n≡a 0 (m + k) m k
125
129
126
- m<n⇒m%n≡m : ∀ {m n} .⦃ _ : NonZero n ⦄ → m < n → m % n ≡ m
127
- m<n⇒m%n≡m {m} { suc n } m<n = m≤n⇒m%n≡m (<⇒≤pred m<n)
130
+ m<n⇒m%n≡m : .⦃ _ : NonZero n ⦄ → m < n → m % n ≡ m
131
+ m<n⇒m%n≡m {n = suc _ } m<n = m≤n⇒m%n≡m (<⇒≤pred m<n)
128
132
129
133
%-pred-≡0 : ∀ {m n} .{{_ : NonZero n}} → (suc m % n) ≡ 0 → (m % n) ≡ n ∸ 1
130
134
%-pred-≡0 {m} {suc n-1} eq = a+1[modₕ]n≡0⇒a[modₕ]n≡n-1 0 n-1 m eq
@@ -182,12 +186,10 @@ m<[1+n%d]⇒m≤[n%d] {m} n (suc d-1) = k<1+a[modₕ]n⇒k≤a[modₕ]n 0 m n d-
182
186
------------------------------------------------------------------------
183
187
-- Properties of _/_
184
188
185
- /-congˡ : ∀ {m n o : ℕ} .{{_ : NonZero o}} →
186
- m ≡ n → m / o ≡ n / o
189
+ /-congˡ : .{{_ : NonZero o}} → m ≡ n → m / o ≡ n / o
187
190
/-congˡ refl = refl
188
191
189
- /-congʳ : ∀ {m n o : ℕ} .{{_ : NonZero n}} .{{_ : NonZero o}} →
190
- n ≡ o → m / n ≡ m / o
192
+ /-congʳ : .{{_ : NonZero n}} .{{_ : NonZero o}} → n ≡ o → m / n ≡ m / o
191
193
/-congʳ refl = refl
192
194
193
195
0/n≡0 : ∀ n .{{_ : NonZero n}} → 0 / n ≡ 0
@@ -205,7 +207,7 @@ m*n/n≡m m (suc n-1) = a*n[divₕ]n≡a 0 m n-1
205
207
m/n*n≡m : ∀ {m n} .{{_ : NonZero n}} → n ∣ m → m / n * n ≡ m
206
208
m/n*n≡m {_} {n@(suc _)} (divides-refl q) = cong (_* n) (m*n/n≡m q n)
207
209
208
- m*[n/m]≡n : ∀ {m n} .{{_ : NonZero m}} → m ∣ n → m * (n / m) ≡ n
210
+ m*[n/m]≡n : .{{_ : NonZero m}} → m ∣ n → m * (n / m) ≡ n
209
211
m*[n/m]≡n {m} m∣n = trans (*-comm m (_ / m)) (m/n*n≡m m∣n)
210
212
211
213
m/n*n≤m : ∀ m n .{{_ : NonZero n}} → (m / n) * n ≤ m
@@ -227,11 +229,11 @@ m/n<m m n n≥2 = *-cancelʳ-< _ (m / n) m (begin-strict
227
229
m <⟨ m<m*n m n n≥2 ⟩
228
230
m * n ∎)
229
231
230
- /-mono-≤ : ∀ {m n o p} .{{_ : NonZero o}} .{{_ : NonZero p}} →
232
+ /-mono-≤ : .{{_ : NonZero o}} .{{_ : NonZero p}} →
231
233
m ≤ n → o ≥ p → m / o ≤ n / p
232
234
/-mono-≤ m≤n (s≤s o≥p) = divₕ-mono-≤ 0 m≤n o≥p
233
235
234
- /-monoˡ-≤ : ∀ {m n} o .{{_ : NonZero o}} → m ≤ n → m / o ≤ n / o
236
+ /-monoˡ-≤ : ∀ o .{{_ : NonZero o}} → m ≤ n → m / o ≤ n / o
235
237
/-monoˡ-≤ o m≤n = /-mono-≤ m≤n (≤-refl {o})
236
238
237
239
/-monoʳ-≤ : ∀ m {n o} .{{_ : NonZero n}} .{{_ : NonZero o}} →
@@ -330,7 +332,7 @@ m<n*o⇒m/o<n {m} {suc n} {o} m<n*o with m <? o
330
332
[m∸n]/n≡m/n∸1 : ∀ m n .⦃ _ : NonZero n ⦄ → (m ∸ n) / n ≡ pred (m / n)
331
333
[m∸n]/n≡m/n∸1 m n with m <? n
332
334
... | yes m<n = begin-equality
333
- (m ∸ n) / n ≡⟨ m<n⇒m/n≡0 (<-transʳ (m∸n≤m m n) m<n) ⟩
335
+ (m ∸ n) / n ≡⟨ m<n⇒m/n≡0 (≤-<-trans (m∸n≤m m n) m<n) ⟩
334
336
0 ≡⟨⟩
335
337
0 ∸ 1 ≡˘⟨ cong (_∸ 1 ) (m<n⇒m/n≡0 m<n) ⟩
336
338
m / n ∸ 1 ≡⟨⟩
@@ -463,11 +465,11 @@ _div_ : (dividend divisor : ℕ) .{{_ : NonZero divisor}} → ℕ
463
465
_div_ = _/_
464
466
465
467
_mod_ : (dividend divisor : ℕ) .{{_ : NonZero divisor}} → Fin divisor
466
- m mod (suc n ) = fromℕ< (m%n<n m (suc n) )
468
+ m mod n@ (suc _ ) = fromℕ< (m%n<n m n )
467
469
468
470
_divMod_ : (dividend divisor : ℕ) .{{_ : NonZero divisor}} →
469
471
DivMod dividend divisor
470
- m divMod n@(suc n-1 ) = result (m / n) (m mod n) (begin-equality
472
+ m divMod n@(suc _ ) = result (m / n) (m mod n) (begin-equality
471
473
m ≡⟨ m≡m%n+[m/n]*n m n ⟩
472
474
m % n + [m/n]*n ≡˘⟨ cong (_+ [m/n]*n) (toℕ-fromℕ< (m%n<n m n)) ⟩
473
475
toℕ (fromℕ< (m%n<n m n)) + [m/n]*n ∎)
0 commit comments