File tree 4 files changed +33
-10
lines changed
4 files changed +33
-10
lines changed Original file line number Diff line number Diff line change @@ -48,6 +48,12 @@ New modules
48
48
Additions to existing modules
49
49
-----------------------------
50
50
51
+ * In ` Data.List.Properties ` :
52
+ ``` agda
53
+ product≢0 : All NonZero ns → NonZero (product ns)
54
+ ∈⇒≤product : All NonZero ns → n ∈ ns → n ≤ product ns
55
+ ```
56
+
51
57
* In ` Data.List.Relation.Unary.All ` :
52
58
``` agda
53
59
search : Decidable P → ∀ xs → All (∁ P) xs ⊎ Any P xs
@@ -65,7 +71,13 @@ Additions to existing modules
65
71
++⁺ˡ : Reflexive R → ∀ zs → (_++ zs) Preserves (Pointwise R) ⟶ (Pointwise R)
66
72
```
67
73
68
- * New lemmas in ` Data.Nat.Properties ` : adjunction between ` suc ` and ` pred `
74
+ * New lemmas in ` Data.Nat.Properties ` :
75
+ ``` agda
76
+ m≤n⇒m≤n*o : ∀ o .{{_ : NonZero o}} → m ≤ n → m ≤ n * o
77
+ m≤n⇒m≤o*n : ∀ o .{{_ : NonZero o}} → m ≤ n → m ≤ o * n
78
+ ```
79
+
80
+ adjunction between ` suc ` and ` pred `
69
81
``` agda
70
82
suc[m]≤n⇒m≤pred[n] : suc m ≤ n → m ≤ pred n
71
83
m≤pred[n]⇒suc[m]≤n : .{{NonZero n}} → m ≤ pred n → suc m ≤ n
Original file line number Diff line number Diff line change @@ -842,6 +842,17 @@ sum-++ (x ∷ xs) ys = begin
842
842
∈⇒∣product {n} {n ∷ ns} (here refl) = divides (product ns) (*-comm n (product ns))
843
843
∈⇒∣product {n} {m ∷ ns} (there n∈ns) = ∣n⇒∣m*n m (∈⇒∣product n∈ns)
844
844
845
+ product≢0 : ∀ {ns} → All NonZero ns → NonZero (product ns)
846
+ product≢0 [] = _
847
+ product≢0 {n ∷ ns} (n≢0 ∷ ns≢0) = m*n≢0 n (product ns) {{n≢0}} {{product≢0 ns≢0}}
848
+
849
+ ∈⇒≤product : ∀ {n ns} → All NonZero ns → n ∈ ns → n ≤ product ns
850
+ ∈⇒≤product {ns = n ∷ ns} (_ ∷ ns≢0) (here refl) =
851
+ m≤m*n n (product ns) {{product≢0 ns≢0}}
852
+ ∈⇒≤product {ns = n ∷ _} (n≢0 ∷ ns≢0) (there n∈ns) =
853
+ m≤n⇒m≤o*n n {{n≢0}} (∈⇒≤product ns≢0 n∈ns)
854
+
855
+
845
856
------------------------------------------------------------------------
846
857
-- applyUpTo
847
858
Original file line number Diff line number Diff line change 9
9
module Data.Nat.Primality where
10
10
11
11
open import Data.List.Base using ([]; _∷_; product)
12
+ open import Data.List.Properties using (product≢0)
12
13
open import Data.List.Relation.Unary.All as All using (All; []; _∷_)
13
14
open import Data.Nat.Base
14
15
open import Data.Nat.Divisibility
@@ -324,10 +325,6 @@ prime⇒¬composite (prime p) = p
324
325
325
326
productOfPrimes≢0 : ∀ {as} → All Prime as → NonZero (product as)
326
327
productOfPrimes≢0 pas = product≢0 (All.map prime⇒nonZero pas)
327
- where
328
- product≢0 : ∀ {ns} → All NonZero ns → NonZero (product ns)
329
- product≢0 [] = _
330
- product≢0 {n ∷ ns} (nzn ∷ nzns) = m*n≢0 n _ {{nzn}} {{product≢0 nzns}}
331
328
332
329
productOfPrimes≥1 : ∀ {as} → All Prime as → product as ≥ 1
333
330
productOfPrimes≥1 {as} pas = >-nonZero⁻¹ _ {{productOfPrimes≢0 pas}}
Original file line number Diff line number Diff line change @@ -1000,6 +1000,12 @@ m≤n*m m n@(suc _) = begin
1000
1000
m * n ≡⟨ *-comm m n ⟩
1001
1001
n * m ∎
1002
1002
1003
+ m≤n⇒m≤o*n : ∀ o .{{_ : NonZero o}} → m ≤ n → m ≤ o * n
1004
+ m≤n⇒m≤o*n o m≤n = ≤-trans m≤n (m≤n*m _ o)
1005
+
1006
+ m≤n⇒m≤n*o : ∀ o .{{_ : NonZero o}} → m ≤ n → m ≤ n * o
1007
+ m≤n⇒m≤n*o o m≤n = ≤-trans m≤n (m≤m*n _ o)
1008
+
1003
1009
m<m*n : ∀ m n .{{_ : NonZero m}} → 1 < n → m < m * n
1004
1010
m<m*n m@(suc m-1) n@(suc (suc n-2)) (s≤s (s≤s _)) = begin-strict
1005
1011
m <⟨ s≤s (s≤s (m≤n+m m-1 n-2)) ⟩
@@ -1008,13 +1014,10 @@ m<m*n m@(suc m-1) n@(suc (suc n-2)) (s≤s (s≤s _)) = begin-strict
1008
1014
m * n ∎
1009
1015
1010
1016
m<n⇒m<n*o : ∀ o .{{_ : NonZero o}} → m < n → m < n * o
1011
- m<n⇒m<n*o {n = n} o m<n = <-≤-trans m<n (m≤m*n n o)
1017
+ m<n⇒m<n*o = m≤n⇒m≤n*o
1012
1018
1013
1019
m<n⇒m<o*n : ∀ {m n} o .{{_ : NonZero o}} → m < n → m < o * n
1014
- m<n⇒m<o*n {m} {n} o m<n = begin-strict
1015
- m <⟨ m<n⇒m<n*o o m<n ⟩
1016
- n * o ≡⟨ *-comm n o ⟩
1017
- o * n ∎
1020
+ m<n⇒m<o*n = m≤n⇒m≤o*n
1018
1021
1019
1022
*-cancelʳ-< : RightCancellative _<_ _*_
1020
1023
*-cancelʳ-< zero zero (suc o) _ = 0<1+n
You can’t perform that action at this time.
0 commit comments