Skip to content

Commit 120981d

Browse files
authored
[ re #1334 ] Some proofs in Data.Nat.Properties (#1411)
1 parent 91d07c5 commit 120981d

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

CHANGELOG.md

+14
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,15 @@ Other minor additions
9191

9292
* Added new proofs to `Data.Nat.Properties`:
9393
```agda
94+
>⇒≢ : _>_ ⇒ _≢_
95+
96+
pred[n]≤n : pred n ≤ n
97+
98+
n<1⇒n≡0 : n < 1 → n ≡ 0
99+
m<n⇒0<n : m < n → 0 < n
100+
101+
m≤n*m : 0 < n → m ≤ n * m
102+
94103
⊔-⊓-absorptive : Absorptive _⊓_ _
95104
96105
⊔-⊓-isLattice : IsLattice _⊔_ _⊓_
@@ -166,3 +175,8 @@ Other minor additions
166175
*-inverseˡ : ∀ p → 1/ p * p ≡ 1ℚ
167176
*-inverseʳ : ∀ p → p * 1/ p ≡ 1ℚ
168177
```
178+
179+
* Added new proof to `Data.List.Relation.Unary.All.Properties`:
180+
```agda
181+
all-upTo : All (_< n) (upTo n)
182+
```

src/Data/List/Relation/Unary/All/Properties.agda

+6
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,12 @@ applyUpTo⁻ f (suc n) (px ∷ _) (s≤s z≤n) = px
440440
applyUpTo⁻ f (suc n) (_ ∷ pxs) (s≤s (s≤s i<n)) =
441441
applyUpTo⁻ (f ∘ suc) n pxs (s≤s i<n)
442442

443+
------------------------------------------------------------------------
444+
-- upTo
445+
446+
all-upTo : n All (_< n) (upTo n)
447+
all-upTo n = applyUpTo⁺₁ id n id
448+
443449
------------------------------------------------------------------------
444450
-- applyDownFrom
445451

src/Data/Nat/Properties.agda

+19
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,9 @@ n≤0⇒n≡0 z≤n = refl
257257
<⇒≢ : _<_ ⇒ _≢_
258258
<⇒≢ m<n refl = 1+n≰n m<n
259259

260+
>⇒≢ : _>_ ⇒ _≢_
261+
>⇒≢ = ≢-sym ∘ <⇒≢
262+
260263
≤⇒≯ : _≤_ ⇒ _≯_
261264
≤⇒≯ (s≤s m≤n) (s≤s n≤m) = ≤⇒≯ m≤n n≤m
262265

@@ -389,10 +392,16 @@ n≮n n = <-irrefl (refl {x = n})
389392
n<1+n : n n < suc n
390393
n<1+n n = ≤-refl
391394

395+
n<1⇒n≡0 : {n} n < 1 n ≡ 0
396+
n<1⇒n≡0 (s≤s n≤0) = n≤0⇒n≡0 n≤0
397+
392398
n≢0⇒n>0 : {n} n ≢ 0 n > 0
393399
n≢0⇒n>0 {zero} 0≢0 = contradiction refl 0≢0
394400
n≢0⇒n>0 {suc n} _ = 0<1+n
395401

402+
m<n⇒0<n : {m n} m < n 0 < n
403+
m<n⇒0<n = ≤-trans 0<1+n
404+
396405
m<n⇒n≢0 : {m n} m < n n ≢ 0
397406
m<n⇒n≢0 (s≤s m≤n) ()
398407

@@ -913,6 +922,12 @@ m≤m*n m {n} 0<n = begin
913922
m * 1 ≤⟨ *-monoʳ-≤ m 0<n ⟩
914923
m * n ∎
915924

925+
m≤n*m : m {n} 0 < n m ≤ n * m
926+
m≤n*m m {n} 0<n = begin
927+
m ≤⟨ m≤m*n m 0<n ⟩
928+
m * n ≡⟨ *-comm m n ⟩
929+
n * m ∎
930+
916931
m<m*n : {m n} 0 < m 1 < n m < m * n
917932
m<m*n {m@(suc m-1)} {n@(suc (suc n-2))} (s≤s _) (s≤s (s≤s _)) = begin-strict
918933
m <⟨ s≤s (s≤s (m≤n+m m-1 n-2)) ⟩
@@ -1553,6 +1568,10 @@ m⊓n+n∸m≡n (suc m) (suc n) = cong suc $ m⊓n+n∸m≡n m n
15531568
pred-mono : pred Preserves _≤_ ⟶ _≤_
15541569
pred-mono m≤n = ∸-mono m≤n (≤-refl {1})
15551570

1571+
pred[n]≤n : {n} pred n ≤ n
1572+
pred[n]≤n {zero} = z≤n
1573+
pred[n]≤n {suc n} = n≤1+n n
1574+
15561575
≤pred⇒≤ : {m n} m ≤ pred n m ≤ n
15571576
≤pred⇒≤ {m} {zero} le = le
15581577
≤pred⇒≤ {m} {suc n} le = ≤-step le

0 commit comments

Comments
 (0)