Skip to content

Commit b0cb9b3

Browse files
authored
Add properties of <, ≤, ⊔ and ⊓ operators in Data.Integer (#1381)
1 parent e0bd51a commit b0cb9b3

File tree

4 files changed

+702
-66
lines changed

4 files changed

+702
-66
lines changed

CHANGELOG.md

Lines changed: 104 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,16 @@ Deprecated names
151151
show ↦ Data.Integer.Show.show
152152
```
153153

154+
* In `Data.Integer.Properties`:
155+
```agda
156+
neg-mono-<-> ↦ neg-mono-<
157+
neg-mono-≤-≥ ↦ neg-mono-≤
158+
*-monoʳ-≤-non-neg ↦ *-monoʳ-≤-nonNeg
159+
*-monoˡ-≤-non-neg ↦ *-monoˡ-≤-nonNeg
160+
*-cancelˡ-<-non-neg ↦ *-cancelˡ-<-nonNeg
161+
*-cancelʳ-<-non-neg ↦ *-cancelʳ-<-nonNeg
162+
```
163+
154164
* In `Data.Rational`:
155165
```agda
156166
show ↦ Data.Rational.Show.show
@@ -317,6 +327,100 @@ Other minor additions
317327
⊖-≤ : m ≤ n → m ⊖ n ≡ - + (n ∸ m)
318328
-m+n≡n⊖m : - (+ m) + + n ≡ n ⊖ m
319329
m-n≡m⊖n : + m + (- + n) ≡ m ⊖ n
330+
331+
≤∧≢⇒< : x ≤ y → x ≢ y → x < y
332+
≤∧≮⇒≡ : x ≤ y → x ≮ y → x ≡ y
333+
334+
positive⁻¹ : Positive n → n > 0ℤ
335+
nonNegative⁻¹ : NonNegative n → n ≥ 0ℤ
336+
negative⁻¹ : Negative n → n < 0ℤ
337+
nonPositive⁻¹ : NonPositive q → q ≤ 0ℤ
338+
negative<positive : Negative m → Positive n → m < n
339+
340+
neg-mono-< : -_ Preserves _<_ ⟶ _>_
341+
neg-mono-≤ : -_ Preserves _≤_ ⟶ _≥_
342+
neg-cancel-< : - m < - n → m > n
343+
neg-cancel-≤ : - m ≤ - n → m ≥ n
344+
345+
+∣n∣≡n⊎+∣n∣≡-n : + ∣ n ∣ ≡ n ⊎ + ∣ n ∣ ≡ - n
346+
∣m⊝n∣≤m⊔n : ∣ m ⊖ n ∣ ℕ.≤ m ℕ.⊔ n
347+
∣m+n∣≤∣m∣+∣n∣ : ∣ m + n ∣ ℕ.≤ ∣ m ∣ ℕ.+ ∣ n ∣
348+
∣m-n∣≤∣m∣+∣n∣ : ∣ m - n ∣ ℕ.≤ ∣ m ∣ ℕ.+ ∣ n ∣
349+
350+
*-cancelˡ-≤-neg : -[1+ m ] * n ≤ -[1+ m ] * o → n ≥ o
351+
*-cancelʳ-≤-neg : n * -[1+ m ] ≤ o * -[1+ m ] → n ≥ o
352+
*-monoˡ-≤-nonPos : NonPositive m → (m *_) Preserves _≤_ ⟶ _≥_
353+
*-monoʳ-≤-nonPos : ∀ m → NonPositive m → (_* m) Preserves _≤_ ⟶ _≥_
354+
*-monoˡ-≤-neg : (-[1+ m ] *_) Preserves _≤_ ⟶ _≥_
355+
*-monoʳ-≤-neg : (_* -[1+ m ]) Preserves _≤_ ⟶ _≥_
356+
*-monoˡ-<-neg : (-[1+ n ] *_) Preserves _<_ ⟶ _>_
357+
*-monoʳ-<-neg : (_* -[1+ n ]) Preserves _<_ ⟶ _>_
358+
*-cancelˡ-<-neg : -[1+ n ] * i < -[1+ n ] * j → i > j
359+
*-cancelˡ-<-nonPos : NonPositive n → n * i < n * j → i > j
360+
*-cancelʳ-<-neg : i * -[1+ n ] < j * -[1+ n ] → i > j
361+
*-cancelʳ-<-nonPos : NonPositive n → i * n < j * n → i > j
362+
363+
∣m*n∣≡∣m∣*∣n∣ : ∣ m * n ∣ ≡ ∣ m ∣ ℕ.* ∣ n ∣
364+
+-*-commutativeSemiring : CommutativeSemiring 0ℓ 0ℓ
365+
366+
mono-≤-distrib-⊓ : f Preserves _≤_ ⟶ _≤_ → f (m ⊓ n) ≡ f m ⊓ f n
367+
mono-<-distrib-⊓ : f Preserves _<_ ⟶ _<_ → f (m ⊓ n) ≡ f m ⊓ f n
368+
mono-≤-distrib-⊔ : f Preserves _≤_ ⟶ _≤_ → f (m ⊔ n) ≡ f m ⊔ f n
369+
mono-<-distrib-⊔ : f Preserves _<_ ⟶ _<_ → f (m ⊔ n) ≡ f m ⊔ f n
370+
371+
antimono-≤-distrib-⊔ : f Preserves _≤_ ⟶ _≥_ → f (m ⊔ n) ≡ f m ⊓ f n
372+
antimono-<-distrib-⊔ : f Preserves _<_ ⟶ _>_ → f (m ⊔ n) ≡ f m ⊓ f n
373+
antimono-≤-distrib-⊓ : f Preserves _≤_ ⟶ _≥_ → f (m ⊓ n) ≡ f m ⊔ f n
374+
antimono-<-distrib-⊓ : f Preserves _<_ ⟶ _>_ → f (m ⊓ n) ≡ f m ⊔ f n
375+
376+
*-distribˡ-⊓-nonNeg : + m * (n ⊓ o) ≡ (+ m * n) ⊓ (+ m * o)
377+
*-distribʳ-⊓-nonNeg : (n ⊓ o) * + m ≡ (n * + m) ⊓ (o * + m)
378+
*-distribˡ-⊔-nonNeg : + m * (n ⊔ o) ≡ (+ m * n) ⊔ (+ m * o)
379+
*-distribʳ-⊔-nonNeg : (n ⊔ o) * + m ≡ (n * + m) ⊔ (o * + m)
380+
381+
*-distribˡ-⊓-nonPos : NonPositive m → m * (n ⊓ o) ≡ (m * n) ⊔ (m * o)
382+
*-distribʳ-⊓-nonPos : NonPositive m → (n ⊓ o) * m ≡ (n * m) ⊔ (o * m)
383+
*-distribˡ-⊔-nonPos : NonPositive m → m * (n ⊔ o) ≡ (m * n) ⊓ (m * o)
384+
*-distribʳ-⊔-nonPos : NonPositive m → (n ⊔ o) * m ≡ (n * m) ⊓ (o * m)
385+
386+
⊓-absorbs-⊔ : _⊓_ Absorbs _⊔_
387+
⊔-absorbs-⊓ : _⊔_ Absorbs _⊓_
388+
⊔-⊓-absorptive : Absorptive _⊔_ _⊓_
389+
⊓-⊔-absorptive : Absorptive _⊓_ _⊔_
390+
391+
⊓-isMagma : IsMagma _⊓_
392+
⊓-isSemigroup : IsSemigroup _⊓_
393+
⊓-isBand : IsBand _⊓_
394+
⊓-isCommutativeSemigroup : IsCommutativeSemigroup _⊓_
395+
⊓-isSemilattice : IsSemilattice _⊓_
396+
⊓-isSelectiveMagma : IsSelectiveMagma _⊓_
397+
398+
⊔-isMagma : IsMagma _⊔_
399+
⊔-isSemigroup : IsSemigroup _⊔_
400+
⊔-isBand : IsBand _⊔_
401+
⊔-isCommutativeSemigroup : IsCommutativeSemigroup _⊔_
402+
⊔-isSemilattice : IsSemilattice _⊔_
403+
⊔-isSelectiveMagma : IsSelectiveMagma _⊔_
404+
405+
⊔-⊓-isLattice : IsLattice _⊔_ _⊓_
406+
⊓-⊔-isLattice : IsLattice _⊓_ _⊔_
407+
408+
⊓-magma : Magma _ _
409+
⊓-semigroup : Semigroup _ _
410+
⊓-band : Band _ _
411+
⊓-commutativeSemigroup : CommutativeSemigroup _ _
412+
⊓-semilattice : Semilattice _ _
413+
⊓-selectiveMagma : SelectiveMagma _ _
414+
415+
⊔-magma : Magma _ _
416+
⊔-semigroup : Semigroup _ _
417+
⊔-band : Band _ _
418+
⊔-commutativeSemigroup : CommutativeSemigroup _ _
419+
⊔-semilattice : Semilattice _ _
420+
⊔-selectiveMagma : SelectiveMagma _ _
421+
422+
⊔-⊓-lattice : Lattice _ _
423+
⊓-⊔-lattice : Lattice _ _
320424
```
321425

322426
* Added new relations in `Data.List.Relation.Binary.Subset.(Propositional/Setoid)`:
@@ -424,11 +528,6 @@ Other minor additions
424528
wellFounded : WellFounded _∼_ → WellFounded _∼⁺_
425529
```
426530

427-
* Add new properties to `Data.Integer.Properties`:
428-
```agda
429-
+-*-commutativeSemiring : CommutativeSemiring 0ℓ 0ℓ
430-
```
431-
432531
* Added new definition to `Data.Char.Base`:
433532
```agda
434533
_≉_ : Rel Char zero

0 commit comments

Comments
 (0)