@@ -40,11 +40,7 @@ m%n≡0⇒n∣m m n eq = divides (m / n) (begin-equality
40
40
where open ≤-Reasoning
41
41
42
42
n∣m⇒m%n≡0 : ∀ m n .{{_ : NonZero n}} → n ∣ m → m % n ≡ 0
43
- n∣m⇒m%n≡0 m n (divides v eq) = begin-equality
44
- m % n ≡⟨ cong (_% n) eq ⟩
45
- (v * n) % n ≡⟨ m*n%n≡0 v n ⟩
46
- 0 ∎
47
- where open ≤-Reasoning
43
+ n∣m⇒m%n≡0 .(q * n) n (divides-refl q) = m*n%n≡0 q n
48
44
49
45
m%n≡0⇔n∣m : ∀ m n .{{_ : NonZero n}} → m % n ≡ 0 ⇔ n ∣ m
50
46
m%n≡0⇔n∣m m n = mk⇔ (m%n≡0⇒n∣m m n) (n∣m⇒m%n≡0 m n)
@@ -65,26 +61,28 @@ m%n≡0⇔n∣m m n = mk⇔ (m%n≡0⇒n∣m m n) (n∣m⇒m%n≡0 m n)
65
61
------------------------------------------------------------------------
66
62
-- _∣_ is a partial order
67
63
64
+ -- these could/should inherit from Algebra.Properties.Monoid.Divisibility
65
+
68
66
∣-reflexive : _≡_ ⇒ _∣_
69
67
∣-reflexive {n} refl = divides 1 (sym (*-identityˡ n))
70
68
71
69
∣-refl : Reflexive _∣_
72
70
∣-refl = ∣-reflexive refl
73
71
74
72
∣-trans : Transitive _∣_
75
- ∣-trans (divides p refl ) (divides q refl ) =
73
+ ∣-trans (divides-refl p ) (divides-refl q ) =
76
74
divides (q * p) (sym (*-assoc q p _))
77
75
78
76
∣-antisym : Antisymmetric _≡_ _∣_
79
- ∣-antisym {m} {zero} _ (divides q refl ) = *-zeroʳ q
77
+ ∣-antisym {m} {zero} _ (divides-refl q ) = *-zeroʳ q
80
78
∣-antisym {zero} {n} (divides p eq) _ = sym (trans eq (*-comm p 0 ))
81
79
∣-antisym {suc m} {suc n} p∣q q∣p = ≤-antisym (∣⇒≤ p∣q) (∣⇒≤ q∣p)
82
80
83
81
infix 4 _∣?_
84
82
85
83
_∣?_ : Decidable _∣_
86
- zero ∣? zero = yes (divides 0 refl )
87
- zero ∣? suc m = no ((λ ()) ∘′ ∣-antisym (divides 0 refl ))
84
+ zero ∣? zero = yes (divides-refl 0 )
85
+ zero ∣? suc m = no ((λ ()) ∘′ ∣-antisym (divides-refl 0 ))
88
86
suc n ∣? m = Dec.map (m%n≡0⇔n∣m m (suc n)) (m % suc n ≟ 0 )
89
87
90
88
∣-isPreorder : IsPreorder _≡_ _∣_
@@ -133,7 +131,7 @@ infix 10 1∣_ _∣0
133
131
1∣ n = divides n (sym (*-identityʳ n))
134
132
135
133
_∣0 : ∀ n → n ∣ 0
136
- n ∣0 = divides 0 refl
134
+ n ∣0 = divides-refl 0
137
135
138
136
0∣⇒≡0 : ∀ {n} → 0 ∣ n → n ≡ 0
139
137
0∣⇒≡0 {n} 0∣n = ∣-antisym (n ∣0) 0∣n
@@ -148,7 +146,7 @@ n∣n {n} = ∣-refl
148
146
-- Properties of _∣_ and _+_
149
147
150
148
∣m∣n⇒∣m+n : ∀ {i m n} → i ∣ m → i ∣ n → i ∣ m + n
151
- ∣m∣n⇒∣m+n (divides p refl ) (divides q refl ) =
149
+ ∣m∣n⇒∣m+n (divides-refl p ) (divides-refl q ) =
152
150
divides (p + q) (sym (*-distribʳ-+ _ p q))
153
151
154
152
∣m+n∣m⇒∣n : ∀ {i m n} → i ∣ m + n → i ∣ m → i ∣ n
@@ -174,19 +172,20 @@ n∣m*n*o : ∀ m {n} o → n ∣ m * n * o
174
172
n∣m*n*o m o = ∣-trans (n∣m*n m) (m∣m*n o)
175
173
176
174
∣m⇒∣m*n : ∀ {i m} n → i ∣ m → i ∣ m * n
177
- ∣m⇒∣m*n {i} {m} n (divides q refl ) = ∣-trans (n∣m*n q) (m∣m*n n)
175
+ ∣m⇒∣m*n {i} {m} n (divides-refl q ) = ∣-trans (n∣m*n q) (m∣m*n n)
178
176
179
177
∣n⇒∣m*n : ∀ {i} m {n} → i ∣ n → i ∣ m * n
180
178
∣n⇒∣m*n m {n} rewrite *-comm m n = ∣m⇒∣m*n m
181
179
182
180
m*n∣⇒m∣ : ∀ {i} m n → m * n ∣ i → m ∣ i
183
- m*n∣⇒m∣ m n (divides q refl ) = ∣n⇒∣m*n q (m∣m*n n)
181
+ m*n∣⇒m∣ m n (divides-refl q ) = ∣n⇒∣m*n q (m∣m*n n)
184
182
185
183
m*n∣⇒n∣ : ∀ {i} m n → m * n ∣ i → n ∣ i
186
184
m*n∣⇒n∣ m n rewrite *-comm m n = m*n∣⇒m∣ n m
187
185
188
186
*-monoʳ-∣ : ∀ {i j} k → i ∣ j → k * i ∣ k * j
189
- *-monoʳ-∣ {i} {j} k (divides q refl) = divides q $ begin-equality
187
+ *-monoʳ-∣ {i} {j@.(q * i)} k (divides-refl q) = divides q $ begin-equality
188
+ k * j ≡⟨⟩
190
189
k * (q * i) ≡⟨ sym (*-assoc k q i) ⟩
191
190
(k * q) * i ≡⟨ cong (_* i) (*-comm k q) ⟩
192
191
(q * k) * i ≡⟨ *-assoc q k i ⟩
@@ -226,27 +225,30 @@ m*n∣⇒n∣ m n rewrite *-comm m n = m*n∣⇒m∣ n m
226
225
-- Properties of _∣_ and _/_
227
226
228
227
m/n∣m : ∀ {m n} .{{_ : NonZero n}} → n ∣ m → m / n ∣ m
229
- m/n∣m {m} {n} (divides p refl) = begin
228
+ m/n∣m {m@.(p * n)} {n} (divides-refl p) = begin
229
+ m / n ≡⟨⟩
230
230
p * n / n ≡⟨ m*n/n≡m p n ⟩
231
231
p ∣⟨ m∣m*n n ⟩
232
- p * n ∎
232
+ p * n ≡⟨⟩
233
+ m ∎
233
234
where open ∣-Reasoning
234
235
235
236
m*n∣o⇒m∣o/n : ∀ m n {o} .{{_ : NonZero n}} → m * n ∣ o → m ∣ o / n
236
- m*n∣o⇒m∣o/n m n {_ } (divides p refl ) = begin
237
+ m*n∣o⇒m∣o/n m n {o@.(p * (m * n)) } (divides-refl p ) = begin
237
238
m ∣⟨ n∣m*n p ⟩
238
239
p * m ≡⟨ sym (*-identityʳ (p * m)) ⟩
239
240
p * m * 1 ≡⟨ sym (cong (p * m *_) (n/n≡1 n)) ⟩
240
241
p * m * (n / n) ≡⟨ sym (*-/-assoc (p * m) (n∣n {n})) ⟩
241
242
p * m * n / n ≡⟨ cong (_/ n) (*-assoc p m n) ⟩
242
- p * (m * n) / n ∎
243
+ p * (m * n) / n ≡⟨⟩
244
+ o / n ∎
243
245
where open ∣-Reasoning
244
246
245
247
m*n∣o⇒n∣o/m : ∀ m n {o} .{{_ : NonZero m}} → m * n ∣ o → n ∣ (o / m)
246
248
m*n∣o⇒n∣o/m m n rewrite *-comm m n = m*n∣o⇒m∣o/n n m
247
249
248
250
m∣n/o⇒m*o∣n : ∀ {m n o} .{{_ : NonZero o}} → o ∣ n → m ∣ n / o → m * o ∣ n
249
- m∣n/o⇒m*o∣n {m} {n} {o} (divides p refl ) m∣p*o/o = begin
251
+ m∣n/o⇒m*o∣n {m} {n} {o} (divides-refl p ) m∣p*o/o = begin
250
252
m * o ∣⟨ *-monoˡ-∣ o (subst (m ∣_) (m*n/n≡m p o) m∣p*o/o) ⟩
251
253
p * o ∎
252
254
where open ∣-Reasoning
@@ -255,13 +257,14 @@ m∣n/o⇒o*m∣n : ∀ {m n o} .{{_ : NonZero o}} → o ∣ n → m ∣ n / o
255
257
m∣n/o⇒o*m∣n {m} {_} {o} rewrite *-comm o m = m∣n/o⇒m*o∣n
256
258
257
259
m/n∣o⇒m∣o*n : ∀ {m n o} .{{_ : NonZero n}} → n ∣ m → m / n ∣ o → m ∣ o * n
258
- m/n∣o⇒m∣o*n {_} {n} {o} (divides p refl ) p*n/n∣o = begin
260
+ m/n∣o⇒m∣o*n {_} {n} {o} (divides-refl p ) p*n/n∣o = begin
259
261
p * n ∣⟨ *-monoˡ-∣ n (subst (_∣ o) (m*n/n≡m p n) p*n/n∣o) ⟩
260
262
o * n ∎
261
263
where open ∣-Reasoning
262
264
263
265
m∣n*o⇒m/n∣o : ∀ {m n o} .{{_ : NonZero n}} → n ∣ m → m ∣ o * n → m / n ∣ o
264
- m∣n*o⇒m/n∣o {_} {n@(suc _)} {o} (divides p refl) pn∣on = begin
266
+ m∣n*o⇒m/n∣o {m@.(p * n)} {n@(suc _)} {o} (divides-refl p) pn∣on = begin
267
+ m / n ≡⟨⟩
265
268
p * n / n ≡⟨ m*n/n≡m p n ⟩
266
269
p ∣⟨ *-cancelʳ-∣ n pn∣on ⟩
267
270
o ∎
@@ -271,24 +274,26 @@ m∣n*o⇒m/n∣o {_} {n@(suc _)} {o} (divides p refl) pn∣on = begin
271
274
-- Properties of _∣_ and _%_
272
275
273
276
∣n∣m%n⇒∣m : ∀ {m n d} .{{_ : NonZero n}} → d ∣ n → d ∣ m % n → d ∣ m
274
- ∣n∣m%n⇒∣m {m} {n} {d} (divides a n≡ad ) (divides b m%n≡bd) =
277
+ ∣n∣m%n⇒∣m {m} {n@.(a * d) } {d} (divides-refl a ) (divides b m%n≡bd) =
275
278
divides (b + (m / n) * a) (begin-equality
276
279
m ≡⟨ m≡m%n+[m/n]*n m n ⟩
277
- m % n + (m / n) * n ≡⟨ cong₂ _+_ m%n≡bd (cong (m / n *_) n≡ad) ⟩
280
+ m % n + (m / n) * n ≡⟨ cong (_+ (m / n) * n) m%n≡bd ⟩
281
+ b * d + (m / n) * n ≡⟨⟩
278
282
b * d + (m / n) * (a * d) ≡⟨ sym (cong (b * d +_) (*-assoc (m / n) a d)) ⟩
279
283
b * d + ((m / n) * a) * d ≡⟨ sym (*-distribʳ-+ d b _) ⟩
280
284
(b + (m / n) * a) * d ∎)
281
285
where open ≤-Reasoning
282
286
283
287
%-presˡ-∣ : ∀ {m n d} .{{_ : NonZero n}} → d ∣ m → d ∣ n → d ∣ m % n
284
- %-presˡ-∣ {m} {n} {d} (divides a refl) (divides b 1+n≡bd) =
285
- divides (a ∸ ad/n * b) $ begin-equality
286
- a * d % n ≡⟨ m%n≡m∸m/n*n (a * d) n ⟩
287
- a * d ∸ ad/n * n ≡⟨ cong (λ v → a * d ∸ ad/n * v) 1+n≡bd ⟩
288
- a * d ∸ ad/n * (b * d) ≡˘⟨ cong (a * d ∸_) (*-assoc ad/n b d) ⟩
289
- a * d ∸ (ad/n * b) * d ≡˘⟨ *-distribʳ-∸ d a (ad/n * b) ⟩
290
- (a ∸ ad/n * b) * d ∎
291
- where open ≤-Reasoning ; ad/n = a * d / n
288
+ %-presˡ-∣ {m@.(a * d)} {n} {d} (divides-refl a) (divides b 1+n≡bd) =
289
+ divides (a ∸ m / n * b) $ begin-equality
290
+ m % n ≡⟨ m%n≡m∸m/n*n m n ⟩
291
+ m ∸ m / n * n ≡⟨ cong (λ v → m ∸ m / n * v) 1+n≡bd ⟩
292
+ m ∸ m / n * (b * d) ≡˘⟨ cong (m ∸_) (*-assoc (m / n) b d) ⟩
293
+ m ∸ (m / n * b) * d ≡⟨⟩
294
+ a * d ∸ (m / n * b) * d ≡˘⟨ *-distribʳ-∸ d a (m / n * b) ⟩
295
+ (a ∸ m / n * b) * d ∎
296
+ where open ≤-Reasoning
292
297
293
298
------------------------------------------------------------------------
294
299
-- Properties of _∣_ and !_
0 commit comments