@@ -203,12 +203,13 @@ m/n≤m m n = *-cancelʳ-≤ (m / n) m n (begin
203203 m ≤⟨ m≤m*n m n ⟩
204204 m * n ∎)
205205
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
209209 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) ⟩
211211 m * n ∎
212+ where instance _ = nonTrivial⇒nonZero n
212213
213214/-mono-≤ : .{{_ : NonZero o}} .{{_ : NonZero p}} →
214215 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
245246 where instance _ = >-nonZero (m≥n⇒m/n>0 n≤m)
246247
247248m/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
249250... | inj₁ m<n = contradiction (m<n⇒m/n≡0 m<n) m/n≢0
250251... | inj₂ n≤m = n≤m
251252
@@ -307,15 +308,15 @@ m∣n⇒o%n%m≡o%m m n@.(p * m) o (divides-refl p) = begin-equality
307308 o / pm * pm ≤⟨ m/n*n≤m o pm ⟩
308309 o ∎
309310
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
311313 (m * n) / (m * o) ≡ n / o
312314m*n/m*o≡n/o m n o = helper (<-wellFounded n)
313315 where
314316 instance _ = m*n≢0 m o
315317 helper : ∀ {n} → Acc _<_ n → (m * n) / (m * o) ≡ n / o
316318 helper {n} (acc rec) with <-≤-connex n o
317319 ... | 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
319320 ... | inj₂ n≥o = begin-equality
320321 (m * n) / (m * o) ≡⟨ m/n≡1+[m∸n]/n (*-monoʳ-≤ m n≥o) ⟩
321322 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)
324325 n / o ∎
325326 where n∸o<n = ∸-monoʳ-< (n≢0⇒n>0 (≢-nonZero⁻¹ o)) n≥o
326327
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
328330 m * n / (o * n) ≡ m / o
329331m*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) ⟩
331333 n * m / (o * n) ≡⟨ /-congʳ (*-comm o n) ⟩
332334 n * m / (n * o) ≡⟨ m*n/m*o≡n/o n m o ⟩
333335 m / o ∎
334336 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
338339 _ = m*n≢0 n o
339340
340341m<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
357358 m / o ∸ 1 ∸ n ≡⟨ ∸-+-assoc (m / o) 1 n ⟩
358359 m / o ∸ suc n ∎
359360
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)
362364m/n/o≡m/[n*o] m n o = begin-equality
363365 m / n / o ≡⟨ /-congˡ {o = o} (/-congˡ (m≡m%n+[m/n]*n m n*o)) ⟩
364366 (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
370372 where
371373 n*o = n * o
372374 o*n = o * n
375+ instance
376+ _ = m*n≢0 n o
373377
374378 lem₁ : n ∣ m / n*o * n*o
375379 lem₁ = divides (m / n*o * o) $ begin-equality
@@ -397,10 +401,11 @@ m/n/o≡m/[n*o] m n o = begin-equality
397401 n / d + (m * n) / d ≡⟨ cong (n / d +_) (*-/-assoc m d∣n) ⟩
398402 n / d + m * (n / d) ∎
399403
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)
402407/-*-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
404409 (m * n) / (o * p) ≡⟨⟩
405410 q * o * (r * p) / (o * p) ≡⟨ /-congˡ ([m*n]*[o*p]≡[m*o]*[n*p] q o r p) ⟩
406411 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
411416m*n/m!≡n/[m∸1]! : ∀ m n .{{_ : NonZero m}} →
412417 let instance _ = m !≢0 ; instance _ = (pred m) !≢0 in
413418 (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 !)
418420
419421m%[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
421424m%[n*o]/o≡m/o%n m n o = begin-equality
422425 m % (n * o) / o ≡⟨ /-congˡ (m%n≡m∸m/n*n m (n * o)) ⟩
423426 (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
426429 m / o ∸ m / (o * n) * n ≡⟨ cong (λ # → m / o ∸ # * n) (m/n/o≡m/[n*o] m o n ) ⟨
427430 m / o ∸ m / o / n * n ≡⟨ m%n≡m∸m/n*n (m / o) n ⟨
428431 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
430435
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
432438 m % n * o ≡ m * o % (n * o)
433439m%n*o≡m*o%[n*o] m n o = begin-equality
434440 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
437443 m * o ∸ m * o / (n * o) * n * o ≡⟨ cong (m * o ∸_) (*-assoc (m * o / (n * o)) n o) ⟩
438444 m * o ∸ m * o / (n * o) * (n * o) ≡⟨ m%n≡m∸m/n*n (m * o) (n * o) ⟨
439445 m * o % (n * o) ∎
446+ where instance _ = m*n≢0 n o
440447
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 →
442450 (m * n + o) % (p * n) ≡ (m * n) % (p * n) + o
443451[m*n+o]%[p*n]≡[m*n]%[p*n]+o m {n} {o} p@(suc p-1) o<n = begin-equality
444452 (mn + o) % pn ≡⟨ %-distribˡ-+ mn o pn ⟩
@@ -448,6 +456,7 @@ m%n*o≡m*o%[n*o] m n o = begin-equality
448456 where
449457 mn = m * n
450458 pn = p * n
459+ instance _ = m*n≢0 p n
451460
452461 lem₁ : mn % pn ≤ p-1 * n
453462 lem₁ = begin
0 commit comments