Skip to content

Commit 8688f42

Browse files
authored
Add several Data.Nat.Properties (#1375)
1 parent c274f8d commit 8688f42

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,11 +354,19 @@ Other minor additions
354354

355355
* Added new proofs in `Data.Nat.Properties`:
356356
```agda
357+
≤∧≮⇒≡ : m ≤ n → m ≮ n → m ≡ n
357358
≤ᵇ⇒≤ : T (m ≤ᵇ n) → m ≤ n
358359
≤⇒≤ᵇ : m ≤ n → T (m ≤ᵇ n)
359360
360361
<ᵇ-reflects-< : Reflects (m < n) (m <ᵇ n)
361362
≤ᵇ-reflects-≤ : Reflects (m ≤ n) (m ≤ᵇ n)
363+
364+
*-distribˡ-⊔ : _*_ DistributesOverˡ _⊔_
365+
*-distribʳ-⊔ : _*_ DistributesOverʳ _⊔_
366+
*-distrib-⊔ : _*_ DistributesOver _⊔_
367+
*-distribˡ-⊓ : _*_ DistributesOverˡ _⊓_
368+
*-distribʳ-⊓ : _*_ DistributesOverʳ _⊓_
369+
*-distrib-⊓ : _*_ DistributesOver _⊓_
362370
```
363371

364372
* Added new proofs in `Data.Sign.Properties`:

src/Data/Nat/Properties.agda

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,9 @@ n≤0⇒n≡0 z≤n = refl
286286
≤∧≢⇒< {_} {suc n} (s≤s m≤n) 1+m≢1+n =
287287
s≤s (≤∧≢⇒< m≤n (1+m≢1+n ∘ cong suc))
288288

289+
≤∧≮⇒≡ : {m n} m ≤ n m ≮ n m ≡ n
290+
≤∧≮⇒≡ m≤n m≮n = ≤-antisym m≤n (≮⇒≥ m≮n)
291+
289292
≤-<-connex : Connex _≤_ _<_
290293
≤-<-connex m n with m ≤? n
291294
... | yes m≤n = inj₁ m≤n
@@ -1185,6 +1188,30 @@ m⊔n≤m+n m n with ⊔-sel m n
11851188
... | inj₁ m⊔n≡m rewrite m⊔n≡m = m≤m+n m n
11861189
... | inj₂ m⊔n≡n rewrite m⊔n≡n = m≤n+m n m
11871190

1191+
------------------------------------------------------------------------
1192+
-- Other properties of _⊔_ and _*_
1193+
1194+
*-distribˡ-⊔ : _*_ DistributesOverˡ _⊔_
1195+
*-distribˡ-⊔ m zero o = sym (cong (_⊔ m * o) (*-zeroʳ m))
1196+
*-distribˡ-⊔ m (suc n) zero = begin-equality
1197+
m * (suc n ⊔ zero) ≡⟨⟩
1198+
m * suc n ≡˘⟨ ⊔-identityʳ (m * suc n) ⟩
1199+
m * suc n ⊔ zero ≡˘⟨ cong (m * suc n ⊔_) (*-zeroʳ m) ⟩
1200+
m * suc n ⊔ m * zero ∎
1201+
*-distribˡ-⊔ m (suc n) (suc o) = begin-equality
1202+
m * (suc n ⊔ suc o) ≡⟨⟩
1203+
m * suc (n ⊔ o) ≡⟨ *-suc m (n ⊔ o) ⟩
1204+
m + m * (n ⊔ o) ≡⟨ cong (m +_) (*-distribˡ-⊔ m n o) ⟩
1205+
m + (m * n ⊔ m * o) ≡⟨ +-distribˡ-⊔ m (m * n) (m * o) ⟩
1206+
(m + m * n) ⊔ (m + m * o) ≡˘⟨ cong₂ _⊔_ (*-suc m n) (*-suc m o) ⟩
1207+
(m * suc n) ⊔ (m * suc o) ∎
1208+
1209+
*-distribʳ-⊔ : _*_ DistributesOverʳ _⊔_
1210+
*-distribʳ-⊔ = comm+distrˡ⇒distrʳ *-comm *-distribˡ-⊔
1211+
1212+
*-distrib-⊔ : _*_ DistributesOver _⊔_
1213+
*-distrib-⊔ = *-distribˡ-⊔ , *-distribʳ-⊔
1214+
11881215
------------------------------------------------------------------------
11891216
-- Properties of _⊓_
11901217
------------------------------------------------------------------------
@@ -1461,6 +1488,36 @@ m⊓n≤m+n m n with ⊓-sel m n
14611488
... | inj₁ m⊓n≡m rewrite m⊓n≡m = m≤m+n m n
14621489
... | inj₂ m⊓n≡n rewrite m⊓n≡n = m≤n+m n m
14631490

1491+
------------------------------------------------------------------------
1492+
-- Other properties of _⊓_ and _*_
1493+
1494+
*-distribˡ-⊓ : _*_ DistributesOverˡ _⊓_
1495+
*-distribˡ-⊓ m 0 o = begin-equality
1496+
m * (0 ⊓ o) ≡⟨⟩
1497+
m * 0 ≡⟨ *-zeroʳ m ⟩
1498+
0 ≡⟨⟩
1499+
0 ⊓ (m * o) ≡˘⟨ cong (_⊓ (m * o)) (*-zeroʳ m) ⟩
1500+
(m * 0) ⊓ (m * o) ∎
1501+
*-distribˡ-⊓ m (suc n) 0 = begin-equality
1502+
m * (suc n ⊓ 0) ≡⟨⟩
1503+
m * 0 ≡⟨ *-zeroʳ m ⟩
1504+
0 ≡˘⟨ ⊓-zeroʳ (m * suc n) ⟩
1505+
(m * suc n) ⊓ 0 ≡˘⟨ cong (m * suc n ⊓_) (*-zeroʳ m) ⟩
1506+
(m * suc n) ⊓ (m * 0) ∎
1507+
*-distribˡ-⊓ m (suc n) (suc o) = begin-equality
1508+
m * (suc n ⊓ suc o) ≡⟨⟩
1509+
m * suc (n ⊓ o) ≡⟨ *-suc m (n ⊓ o) ⟩
1510+
m + m * (n ⊓ o) ≡⟨ cong (m +_) (*-distribˡ-⊓ m n o) ⟩
1511+
m + (m * n) ⊓ (m * o) ≡⟨ +-distribˡ-⊓ m (m * n) (m * o) ⟩
1512+
(m + m * n) ⊓ (m + m * o) ≡˘⟨ cong₂ _⊓_ (*-suc m n) (*-suc m o) ⟩
1513+
(m * suc n) ⊓ (m * suc o) ∎
1514+
1515+
*-distribʳ-⊓ : _*_ DistributesOverʳ _⊓_
1516+
*-distribʳ-⊓ = comm+distrˡ⇒distrʳ *-comm *-distribˡ-⊓
1517+
1518+
*-distrib-⊓ : _*_ DistributesOver _⊓_
1519+
*-distrib-⊓ = *-distribˡ-⊓ , *-distribʳ-⊓
1520+
14641521
------------------------------------------------------------------------
14651522
-- Properties of _∸_
14661523
------------------------------------------------------------------------

0 commit comments

Comments
 (0)