Skip to content

Commit fe803f3

Browse files
jamesmckinnaandreasabel
authored andcommitted
Strict and non-strict transitive property names (#2089)
1 parent 595f4e8 commit fe803f3

File tree

8 files changed

+168
-138
lines changed

8 files changed

+168
-138
lines changed

CHANGELOG.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -1413,7 +1413,7 @@ Deprecated names
14131413
m<n⇒m≤pred[n] ↦ i<j⇒i≤pred[j]
14141414
-1*n≡-n ↦ -1*i≡-i
14151415
m*n≡0⇒m≡0∨n≡0 ↦ i*j≡0⇒i≡0∨j≡0
1416-
∣m*n∣≡∣m∣*∣n∣ ↦ ∣i*j∣≡∣i∣*∣j∣
1416+
∣m*n∣≡∣m∣*∣n∣ ↦ ∣i*j∣≡∣i∣*∣j∣
14171417
m≤m+n ↦ i≤i+j
14181418
n≤m+n ↦ i≤j+i
14191419
m-n≤m ↦ i≤i-j
@@ -1521,6 +1521,9 @@ Deprecated names
15211521
≤-stepsˡ ↦ m≤n⇒m≤o+n
15221522
≤-stepsʳ ↦ m≤n⇒m≤n+o
15231523
<-step ↦ m<n⇒m<1+n
1524+
1525+
<-transʳ ↦ ≤-<-trans
1526+
<-transˡ ↦ <-≤-trans
15241527
```
15251528
15261529
* In `Data.Rational.Unnormalised.Base`:
@@ -3261,6 +3264,9 @@ Additions to existing modules
32613264

32623265
* Added new definitions in `Relation.Binary.Definitions`:
32633266
```
3267+
RightTrans R S = Trans R S R
3268+
LeftTrans S R = Trans S R R
3269+
32643270
Dense _<_ = ∀ {x y} → x < y → ∃[ z ] x < z × z < y
32653271
Cotransitive _#_ = ∀ {x y} → x # y → ∀ z → (x # z) ⊎ (z # y)
32663272
Tight _≈_ _#_ = ∀ x y → (¬ x # y → x ≈ y) × (x ≈ y → ¬ x # y)

src/Data/Integer/Properties.agda

+8-8
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ open import Relation.Binary.Bundles using
3333
open import Relation.Binary.Structures
3434
using (IsPreorder; IsTotalPreorder; IsPartialOrder; IsTotalOrder; IsDecTotalOrder; IsStrictPartialOrder; IsStrictTotalOrder)
3535
open import Relation.Binary.Definitions
36-
using (DecidableEquality; Reflexive; Transitive; Antisymmetric; Total; Decidable; Irrelevant; Irreflexive; Asymmetric; Trans; Trichotomous; tri≈; tri<; tri>)
36+
using (DecidableEquality; Reflexive; Transitive; Antisymmetric; Total; Decidable; Irrelevant; Irreflexive; Asymmetric; LeftTrans; RightTrans; Trichotomous; tri≈; tri<; tri>)
3737
open import Relation.Binary.PropositionalEquality
3838
open import Relation.Nullary using (yes; no; ¬_)
3939
import Relation.Nullary.Reflects as Reflects
@@ -276,17 +276,17 @@ drop‿-<- (-<- n<m) = n<m
276276
<-asym (-<- n<m) = ℕ.<-asym n<m ∘ drop‿-<-
277277
<-asym (+<+ m<n) = ℕ.<-asym m<n ∘ drop‿+<+
278278

279-
≤-<-trans : Trans _≤_ _<_ _<_
280-
≤-<-trans (-≤- n≤m) (-<- o<n) = -<- (ℕ.<-transˡ o<n n≤m)
279+
≤-<-trans : LeftTrans _≤_ _<_
280+
≤-<-trans (-≤- n≤m) (-<- o<n) = -<- (ℕ.<-≤-trans o<n n≤m)
281281
≤-<-trans (-≤- n≤m) -<+ = -<+
282282
≤-<-trans -≤+ (+<+ m<o) = -<+
283-
≤-<-trans (+≤+ m≤n) (+<+ n<o) = +<+ (ℕ.<-transʳ m≤n n<o)
283+
≤-<-trans (+≤+ m≤n) (+<+ n<o) = +<+ (ℕ.≤-<-trans m≤n n<o)
284284

285-
<-≤-trans : Trans _<_ _≤_ _<_
286-
<-≤-trans (-<- n<m) (-≤- o≤n) = -<- (ℕ.<-transʳ o≤n n<m)
285+
<-≤-trans : RightTrans _<_ _≤_
286+
<-≤-trans (-<- n<m) (-≤- o≤n) = -<- (ℕ.≤-<-trans o≤n n<m)
287287
<-≤-trans (-<- n<m) -≤+ = -<+
288288
<-≤-trans -<+ (+≤+ m≤n) = -<+
289-
<-≤-trans (+<+ m<n) (+≤+ n≤o) = +<+ (ℕ.<-transˡ m<n n≤o)
289+
<-≤-trans (+<+ m<n) (+≤+ n≤o) = +<+ (ℕ.<-≤-trans m<n n≤o)
290290

291291
<-trans : Transitive _<_
292292
<-trans m<n n<p = ≤-<-trans (<⇒≤ m<n) n<p
@@ -614,7 +614,7 @@ n⊖n≡0 n with n ℕ.<ᵇ n in leq
614614

615615
⊖-≥ : m ℕ.≥ n m ⊖ n ≡ + (m ∸ n)
616616
⊖-≥ {m} {n} p with m ℕ.<ᵇ n | Reflects.invert (ℕ.<ᵇ-reflects-< m n)
617-
... | true | q = contradiction (ℕ.<-transʳ p q) (ℕ.<-irrefl refl)
617+
... | true | q = contradiction (ℕ.≤-<-trans p q) (ℕ.<-irrefl refl)
618618
... | false | q = refl
619619

620620
≤-⊖ : m ℕ.≤ n n ⊖ m ≡ + (n ∸ m)

src/Data/List/Relation/Binary/Permutation/Setoid/Properties.agda

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ Unique-resp-↭ = AllPairs-resp-↭ (_∘ ≈-sym) ≉-resp₂
121121
0<steps (prep eq xs↭ys) = m<n⇒m<1+n (0<steps xs↭ys)
122122
0<steps (swap eq₁ eq₂ xs↭ys) = m<n⇒m<1+n (0<steps xs↭ys)
123123
0<steps (trans xs↭ys xs↭ys₁) =
124-
<-transˡ (0<steps xs↭ys) (m≤m+n (steps xs↭ys) (steps xs↭ys₁))
124+
<-≤-trans (0<steps xs↭ys) (m≤m+n (steps xs↭ys) (steps xs↭ys₁))
125125

126126
steps-respˡ : {xs ys zs} (ys≋xs : ys ≋ xs) (ys↭zs : ys ↭ zs)
127127
steps (↭-respˡ-≋ ys≋xs ys↭zs) ≡ steps ys↭zs

src/Data/Nat/Coprimality.agda

+1-1
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,4 @@ prime⇒coprime (suc (suc _)) p _ _ _ {0} (0∣m , _) =
146146
prime⇒coprime (suc (suc _)) _ _ _ _ {1} _ = refl
147147
prime⇒coprime (suc (suc _)) p (suc _) _ n<m {(suc (suc _))} (d∣m , d∣n) =
148148
contradiction d∣m (p 2≤d d<m)
149-
where 2≤d = s≤s (s≤s z≤n); d<m = <-transˡ (s≤s (∣⇒≤ d∣n)) n<m
149+
where 2≤d = s≤s (s≤s z≤n); d<m = <-≤-trans (s≤s (∣⇒≤ d∣n)) n<m

src/Data/Nat/DivMod.agda

+21-19
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ open import Relation.Nullary.Decidable using (False; toWitnessFalse)
2424

2525
open ≤-Reasoning
2626

27+
private
28+
variable
29+
m n o p :
30+
2731
------------------------------------------------------------------------
2832
-- Definitions
2933

@@ -46,10 +50,10 @@ m%n≡m∸m/n*n m n = begin-equality
4650
------------------------------------------------------------------------
4751
-- Properties of _%_
4852

49-
%-congˡ : {m n o} .⦃ _ : NonZero o ⦄ m ≡ n m % o ≡ n % o
53+
%-congˡ : .⦃ _ : NonZero o ⦄ m ≡ n m % o ≡ n % o
5054
%-congˡ refl = refl
5155

52-
%-congʳ : {m n o} .⦃ _ : NonZero m ⦄ .⦃ _ : NonZero n ⦄ m ≡ n
56+
%-congʳ : .⦃ _ : NonZero m ⦄ .⦃ _ : NonZero n ⦄ m ≡ n
5357
o % m ≡ o % n
5458
%-congʳ refl = refl
5559

@@ -73,7 +77,7 @@ m%n%n≡m%n m (suc n-1) = modₕ-idem 0 m n-1
7377
(m + n) % n ≡⟨ [m+n]%n≡m%n m n ⟩
7478
m % n ∎
7579

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
7781
(n ∸ m) % m ≡ n % m
7882
m≤n⇒[n∸m]%m≡n%m {m} {n} m≤n = begin-equality
7983
(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
108112
o ∎
109113

110114
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
112116

113117
m%n<n : m n .{{_ : NonZero n}} m % n < n
114118
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)
119123
m%n≤m : m n .{{_ : NonZero n}} m % n ≤ m
120124
m%n≤m m (suc n-1) = a[modₕ]n≤a 0 m n-1
121125

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
125129

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)
128132

129133
%-pred-≡0 : {m n} .{{_ : NonZero n}} (suc m % n) ≡ 0 (m % n) ≡ n ∸ 1
130134
%-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-
182186
------------------------------------------------------------------------
183187
-- Properties of _/_
184188

185-
/-congˡ : {m n o : ℕ} .{{_ : NonZero o}}
186-
m ≡ n m / o ≡ n / o
189+
/-congˡ : .{{_ : NonZero o}} m ≡ n m / o ≡ n / o
187190
/-congˡ refl = refl
188191

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
191193
/-congʳ refl = refl
192194

193195
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
205207
m/n*n≡m : {m n} .{{_ : NonZero n}} n ∣ m m / n * n ≡ m
206208
m/n*n≡m {_} {n@(suc _)} (divides-refl q) = cong (_* n) (m*n/n≡m q n)
207209

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
209211
m*[n/m]≡n {m} m∣n = trans (*-comm m (_ / m)) (m/n*n≡m m∣n)
210212

211213
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
227229
m <⟨ m<m*n m n n≥2 ⟩
228230
m * n ∎)
229231

230-
/-mono-≤ : {m n o p} .{{_ : NonZero o}} .{{_ : NonZero p}}
232+
/-mono-≤ : .{{_ : NonZero o}} .{{_ : NonZero p}}
231233
m ≤ n o ≥ p m / o ≤ n / p
232234
/-mono-≤ m≤n (s≤s o≥p) = divₕ-mono-≤ 0 m≤n o≥p
233235

234-
/-monoˡ-≤ : {m n} o .{{_ : NonZero o}} m ≤ n m / o ≤ n / o
236+
/-monoˡ-≤ : o .{{_ : NonZero o}} m ≤ n m / o ≤ n / o
235237
/-monoˡ-≤ o m≤n = /-mono-≤ m≤n (≤-refl {o})
236238

237239
/-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
330332
[m∸n]/n≡m/n∸1 : ∀ m n .⦃ _ : NonZero n ⦄ (m ∸ n) / n ≡ pred (m / n)
331333
[m∸n]/n≡m/n∸1 m n with m <? n
332334
... | 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) ⟩
334336
0 ≡⟨⟩
335337
01 ≡˘⟨ cong (_∸ 1) (m<n⇒m/n≡0 m<n) ⟩
336338
m / n ∸ 1 ≡⟨⟩
@@ -463,11 +465,11 @@ _div_ : (dividend divisor : ℕ) .{{_ : NonZero divisor}} → ℕ
463465
_div_ = _/_
464466

465467
_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)
467469

468470
_divMod_ : (dividend divisor : ℕ) .{{_ : NonZero divisor}}
469471
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
471473
m ≡⟨ m≡m%n+[m/n]*n m n ⟩
472474
m % n + [m/n]*n ≡˘⟨ cong (_+ [m/n]*n) (toℕ-fromℕ< (m%n<n m n)) ⟩
473475
toℕ (fromℕ< (m%n<n m n)) + [m/n]*n ∎)

src/Data/Nat/DivMod/Core.agda

+3-3
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,14 @@ private
154154
divₕ-offsetEq d (suc n) zero zero j≤d k≤d (inj₂′ (refl , _)) =
155155
divₕ-offsetEq d n d d ≤-refl ≤-refl (inj₂′ (refl , a[modₕ]n<n 0 n d , ≤-refl))
156156
divₕ-offsetEq d (suc n) zero zero j≤d k≤d (inj₃ (_ , 0<mod , mod≤0)) =
157-
contradiction (<-transˡ 0<mod mod≤0) λ()
157+
contradiction (<-≤-trans 0<mod mod≤0) λ()
158158
-- (0 , suc) cases
159159
divₕ-offsetEq d (suc n) zero (suc k) j≤d k≤d (inj₁ (refl , _ , 1+k<mod)) =
160160
divₕ-offsetEq d n d k ≤-refl (<⇒≤ k≤d) (inj₃ (refl , k<1+a[modₕ]n⇒k≤a[modₕ]n 0 (suc k) n d 1+k<mod , a[modₕ]n<n 0 n d))
161161
divₕ-offsetEq d (suc n) zero (suc k) j≤d k≤d (inj₂′ (refl , mod≤0 , _)) =
162162
divₕ-offsetEq d n d k ≤-refl (<⇒≤ k≤d) (inj₃ (refl , subst (k <_) (sym (a+1[modₕ]n≡0⇒a[modₕ]n≡n-1 0 d n (n≤0⇒n≡0 mod≤0))) k≤d , a[modₕ]n<n 0 n d))
163163
divₕ-offsetEq d (suc n) zero (suc k) j≤d k≤d (inj₃ (_ , 1+k<mod , mod≤0)) =
164-
contradiction (<-transˡ 1+k<mod mod≤0) λ()
164+
contradiction (<-≤-trans 1+k<mod mod≤0) λ()
165165
-- (suc , 0) cases
166166
divₕ-offsetEq d (suc n) (suc j) zero j≤d k≤d (inj₁ (_ , () , _))
167167
divₕ-offsetEq d (suc n) (suc j) zero j≤d k≤d (inj₂′ (_ , _ , ()))
@@ -174,7 +174,7 @@ private
174174
... | yes mod≡0 = divₕ-offsetEq d n j k (<⇒≤ j≤d) (<⇒≤ k≤d) (inj₁ (eq , j≤k , subst (k <_) (sym (a+1[modₕ]n≡0⇒a[modₕ]n≡n-1 0 d n mod≡0)) k≤d))
175175
... | no mod≢0 = divₕ-offsetEq d n j k (<⇒≤ j≤d) (<⇒≤ k≤d) (inj₂′ (eq , 1+a[modₕ]n≤1+k⇒a[modₕ]n≤k 0 j n d (n≢0⇒n>0 mod≢0) mod≤1+j , j≤k))
176176
divₕ-offsetEq d (suc n) (suc j) (suc k) j≤d k≤d (inj₃ (eq , k<mod , mod≤1+j)) =
177-
divₕ-offsetEq d n j k (<⇒≤ j≤d) (<⇒≤ k≤d) (inj₃ (eq , k<1+a[modₕ]n⇒k≤a[modₕ]n 0 (suc k) n d k<mod , 1+a[modₕ]n≤1+k⇒a[modₕ]n≤k 0 j n d (<-transʳ z≤n k<mod) mod≤1+j))
177+
divₕ-offsetEq d n j k (<⇒≤ j≤d) (<⇒≤ k≤d) (inj₃ (eq , k<1+a[modₕ]n⇒k≤a[modₕ]n 0 (suc k) n d k<mod , 1+a[modₕ]n≤1+k⇒a[modₕ]n≤k 0 j n d (≤-<-trans z≤n k<mod) mod≤1+j))
178178

179179
------------------------------------------------------------------------
180180
-- Lemmas for divₕ that also have an interpretation for _/_

0 commit comments

Comments
 (0)