@@ -203,12 +203,13 @@ m/n≤m m n = *-cancelʳ-≤ (m / n) m n (begin
203
203
m ≤⟨ m≤m*n m n ⟩
204
204
m * n ∎)
205
205
206
- m/n<m : ∀ m n .{{_ : NonZero m}} .{{_ : NonZero n}} →
207
- 1 < n → m / n < m
208
- m/n<m m n 1<n = *-cancelʳ-< _ (m / n) m $ begin-strict
206
+ m/n<m : ∀ m n .{{_ : NonZero m}} .{{_ : NonTrivial n}} →
207
+ let instance _ = nonTrivial⇒nonZero n in m / n < m
208
+ m/n<m m n = *-cancelʳ-< _ (m / n) m $ begin-strict
209
209
m / n * n ≤⟨ m/n*n≤m m n ⟩
210
- m <⟨ m<m*n m n 1<n ⟩
210
+ m <⟨ m<m*n m n (nonTrivial⇒n>1 n) ⟩
211
211
m * n ∎
212
+ where instance _ = nonTrivial⇒nonZero n
212
213
213
214
/-mono-≤ : .{{_ : NonZero o}} .{{_ : NonZero p}} →
214
215
m ≤ n → o ≥ p → m / o ≤ n / p
@@ -245,7 +246,7 @@ m/n≡0⇒m<n {m} {n@(suc _)} m/n≡0 with <-≤-connex m n
245
246
where instance _ = >-nonZero (m≥n⇒m/n>0 n≤m)
246
247
247
248
m/n≢0⇒n≤m : ∀ {m n} .{{_ : NonZero n}} → m / n ≢ 0 → n ≤ m
248
- m/n≢0⇒n≤m {m} {n@(suc _) } m/n≢0 with <-≤-connex m n
249
+ m/n≢0⇒n≤m {m} {n} m/n≢0 with <-≤-connex m n
249
250
... | inj₁ m<n = contradiction (m<n⇒m/n≡0 m<n) m/n≢0
250
251
... | inj₂ n≤m = n≤m
251
252
@@ -307,15 +308,15 @@ m∣n⇒o%n%m≡o%m m n@.(p * m) o (divides-refl p) = begin-equality
307
308
o / pm * pm ≤⟨ m/n*n≤m o pm ⟩
308
309
o ∎
309
310
310
- m*n/m*o≡n/o : ∀ m n o .{{_ : NonZero o}} .{{_ : NonZero (m * o)}} →
311
+ m*n/m*o≡n/o : ∀ m n o .{{_ : NonZero m}} .{{_ : NonZero o}} →
312
+ let instance _ = m*n≢0 m o in
311
313
(m * n) / (m * o) ≡ n / o
312
314
m*n/m*o≡n/o m n o = helper (<-wellFounded n)
313
315
where
314
316
instance _ = m*n≢0 m o
315
317
helper : ∀ {n} → Acc _<_ n → (m * n) / (m * o) ≡ n / o
316
318
helper {n} (acc rec) with <-≤-connex n o
317
319
... | inj₁ n<o = trans (m<n⇒m/n≡0 (*-monoʳ-< m n<o)) (sym (m<n⇒m/n≡0 n<o))
318
- where instance _ = m*n≢0⇒m≢0 m
319
320
... | inj₂ n≥o = begin-equality
320
321
(m * n) / (m * o) ≡⟨ m/n≡1+[m∸n]/n (*-monoʳ-≤ m n≥o) ⟩
321
322
1 + (m * n ∸ m * o) / (m * o) ≡⟨ cong (suc ∘ (_/ (m * o))) (*-distribˡ-∸ m n o) ⟨
@@ -324,17 +325,17 @@ m*n/m*o≡n/o m n o = helper (<-wellFounded n)
324
325
n / o ∎
325
326
where n∸o<n = ∸-monoʳ-< (n≢0⇒n>0 (≢-nonZero⁻¹ o)) n≥o
326
327
327
- m*n/o*n≡m/o : ∀ m n o .{{_ : NonZero o}} .{{_ : NonZero (o * n)}} →
328
+ m*n/o*n≡m/o : ∀ m n o .{{_ : NonZero n}} .{{_ : NonZero o}} →
329
+ let instance _ = m*n≢0 o n in
328
330
m * n / (o * n) ≡ m / o
329
331
m*n/o*n≡m/o m n o = begin-equality
330
- m * n / (o * n) ≡⟨ /-congˡ (*-comm m n) ⟩
332
+ m * n / (o * n) ≡⟨ /-congˡ {{o*n≢0}} (*-comm m n) ⟩
331
333
n * m / (o * n) ≡⟨ /-congʳ (*-comm o n) ⟩
332
334
n * m / (n * o) ≡⟨ m*n/m*o≡n/o n m o ⟩
333
335
m / o ∎
334
336
where instance
335
- _ : NonZero n
336
- _ = m*n≢0⇒n≢0 o
337
- _ : NonZero (n * o)
337
+ o*n≢0 : NonZero (o * n)
338
+ o*n≢0 = m*n≢0 o n
338
339
_ = m*n≢0 n o
339
340
340
341
m<n*o⇒m/o<n : ∀ {m n o} .{{_ : NonZero o}} → m < n * o → m / o < n
@@ -357,8 +358,9 @@ m<n*o⇒m/o<n {m} {suc n@(suc _)} {o} m<n*o = pred-cancel-< $ begin-strict
357
358
m / o ∸ 1 ∸ n ≡⟨ ∸-+-assoc (m / o) 1 n ⟩
358
359
m / o ∸ suc n ∎
359
360
360
- m/n/o≡m/[n*o] : ∀ m n o .{{_ : NonZero n}} .{{_ : NonZero o}}
361
- .{{_ : NonZero (n * o)}} → m / n / o ≡ m / (n * o)
361
+ m/n/o≡m/[n*o] : ∀ m n o .{{_ : NonZero n}} .{{_ : NonZero o}} →
362
+ let instance _ = m*n≢0 n o in
363
+ m / n / o ≡ m / (n * o)
362
364
m/n/o≡m/[n*o] m n o = begin-equality
363
365
m / n / o ≡⟨ /-congˡ {o = o} (/-congˡ (m≡m%n+[m/n]*n m n*o)) ⟩
364
366
(m % n*o + m / n*o * n*o) / n / o ≡⟨ /-congˡ (+-distrib-/-∣ʳ (m % n*o) lem₁) ⟩
@@ -370,6 +372,8 @@ m/n/o≡m/[n*o] m n o = begin-equality
370
372
where
371
373
n*o = n * o
372
374
o*n = o * n
375
+ instance
376
+ _ = m*n≢0 n o
373
377
374
378
lem₁ : n ∣ m / n*o * n*o
375
379
lem₁ = divides (m / n*o * o) $ begin-equality
@@ -397,10 +401,11 @@ m/n/o≡m/[n*o] m n o = begin-equality
397
401
n / d + (m * n) / d ≡⟨ cong (n / d +_) (*-/-assoc m d∣n) ⟩
398
402
n / d + m * (n / d) ∎
399
403
400
- /-*-interchange : .{{_ : NonZero o}} .{{_ : NonZero p}} .{{_ : NonZero (o * p)}} →
401
- o ∣ m → p ∣ n → (m * n) / (o * p) ≡ (m / o) * (n / p)
404
+ /-*-interchange : .{{_ : NonZero o}} .{{_ : NonZero p}} →
405
+ let instance _ = m*n≢0 o p in o ∣ m → p ∣ n →
406
+ (m * n) / (o * p) ≡ (m / o) * (n / p)
402
407
/-*-interchange {o} {p} {m@.(q * o)} {n@.(r * p)} (divides-refl q) (divides-refl r)
403
- = begin-equality
408
+ = let instance _ = m*n≢0 o p in begin-equality
404
409
(m * n) / (o * p) ≡⟨⟩
405
410
q * o * (r * p) / (o * p) ≡⟨ /-congˡ ([m*n]*[o*p]≡[m*o]*[n*p] q o r p) ⟩
406
411
q * r * (o * p) / (o * p) ≡⟨ m*n/n≡m (q * r) (o * p) ⟩
@@ -411,13 +416,11 @@ m/n/o≡m/[n*o] m n o = begin-equality
411
416
m*n/m!≡n/[m∸1]! : ∀ m n .{{_ : NonZero m}} →
412
417
let instance _ = m !≢0 ; instance _ = (pred m) !≢0 in
413
418
(m * n / m !) ≡ (n / (pred m) !)
414
- m*n/m!≡n/[m∸1]! m′@(suc m) n = m*n/m*o≡n/o m′ n (m !)
415
- where instance
416
- _ = m !≢0
417
- _ = m′ !≢0
419
+ m*n/m!≡n/[m∸1]! m′@(suc m) n = let instance _ = m !≢0 in m*n/m*o≡n/o m′ n (m !)
418
420
419
421
m%[n*o]/o≡m/o%n : ∀ m n o .{{_ : NonZero n}} .{{_ : NonZero o}} →
420
- {{_ : NonZero (n * o)}} → m % (n * o) / o ≡ m / o % n
422
+ let instance _ = m*n≢0 n o in
423
+ m % (n * o) / o ≡ m / o % n
421
424
m%[n*o]/o≡m/o%n m n o = begin-equality
422
425
m % (n * o) / o ≡⟨ /-congˡ (m%n≡m∸m/n*n m (n * o)) ⟩
423
426
(m ∸ (m / (n * o) * (n * o))) / o ≡⟨ cong (λ # → (m ∸ #) / o) (*-assoc (m / (n * o)) n o) ⟨
@@ -426,9 +429,12 @@ m%[n*o]/o≡m/o%n m n o = begin-equality
426
429
m / o ∸ m / (o * n) * n ≡⟨ cong (λ # → m / o ∸ # * n) (m/n/o≡m/[n*o] m o n ) ⟨
427
430
m / o ∸ m / o / n * n ≡⟨ m%n≡m∸m/n*n (m / o) n ⟨
428
431
m / o % n ∎
429
- where instance _ = m*n≢0 o n
432
+ where instance
433
+ _ = m*n≢0 n o
434
+ _ = m*n≢0 o n
430
435
431
- m%n*o≡m*o%[n*o] : ∀ m n o .{{_ : NonZero n}} .{{_ : NonZero (n * o)}} →
436
+ m%n*o≡m*o%[n*o] : ∀ m n o .{{_ : NonZero n}} .{{_ : NonZero o}} →
437
+ let instance _ = m*n≢0 n o in
432
438
m % n * o ≡ m * o % (n * o)
433
439
m%n*o≡m*o%[n*o] m n o = begin-equality
434
440
m % n * o ≡⟨ cong (_* o) (m%n≡m∸m/n*n m n) ⟩
@@ -437,8 +443,10 @@ m%n*o≡m*o%[n*o] m n o = begin-equality
437
443
m * o ∸ m * o / (n * o) * n * o ≡⟨ cong (m * o ∸_) (*-assoc (m * o / (n * o)) n o) ⟩
438
444
m * o ∸ m * o / (n * o) * (n * o) ≡⟨ m%n≡m∸m/n*n (m * o) (n * o) ⟨
439
445
m * o % (n * o) ∎
446
+ where instance _ = m*n≢0 n o
440
447
441
- [m*n+o]%[p*n]≡[m*n]%[p*n]+o : ∀ m {n o} p .{{_ : NonZero (p * n)}} → o < n →
448
+ [m*n+o]%[p*n]≡[m*n]%[p*n]+o : ∀ m {n o} p .{{_ : NonZero n}} .{{_ : NonZero p}} →
449
+ let instance _ = m*n≢0 p n in o < n →
442
450
(m * n + o) % (p * n) ≡ (m * n) % (p * n) + o
443
451
[m*n+o]%[p*n]≡[m*n]%[p*n]+o m {n} {o} p@(suc p-1) o<n = begin-equality
444
452
(mn + o) % pn ≡⟨ %-distribˡ-+ mn o pn ⟩
@@ -448,6 +456,7 @@ m%n*o≡m*o%[n*o] m n o = begin-equality
448
456
where
449
457
mn = m * n
450
458
pn = p * n
459
+ instance _ = m*n≢0 p n
451
460
452
461
lem₁ : mn % pn ≤ p-1 * n
453
462
lem₁ = begin
0 commit comments