Skip to content

Commit 540018a

Browse files
authored
Add drop-drop in Data.List.Properties (#2043)
1 parent ed2b0de commit 540018a

File tree

4 files changed

+39
-17
lines changed

4 files changed

+39
-17
lines changed

CHANGELOG.md

+13-9
Original file line numberDiff line numberDiff line change
@@ -1080,12 +1080,14 @@ Deprecated names
10801080
```agda
10811081
map-identity ↦ map-id
10821082
map-fusion ↦ map-∘
1083+
drop-fusion ↦ drop-drop
10831084
```
10841085

10851086
* In `Codata.Sized.Colist.Properties`:
10861087
```agda
1087-
map-identity ↦ map-id
1088-
map-map-fusion ↦ map-∘
1088+
map-identity ↦ map-id
1089+
map-map-fusion ↦ map-∘
1090+
drop-drop-fusion ↦ drop-drop
10891091
```
10901092

10911093
* In `Codata.Sized.Covec.Properties`:
@@ -2216,24 +2218,26 @@ Other minor changes
22162218
concatMap-map : concatMap g (map f xs) ≡ concatMap (g ∘′ f) xs
22172219
map-concatMap : map f ∘′ concatMap g ≗ concatMap (map f ∘′ g)
22182220
2219-
length-isMagmaHomomorphism : (A : Set a) → IsMagmaHomomorphism (++-rawMagma A) +-rawMagma length
2221+
length-isMagmaHomomorphism : (A : Set a) → IsMagmaHomomorphism (++-rawMagma A) +-rawMagma length
22202222
length-isMonoidHomomorphism : (A : Set a) → IsMonoidHomomorphism (++-[]-rawMonoid A) +-0-rawMonoid length
22212223
22222224
take-map : take n (map f xs) ≡ map f (take n xs)
22232225
drop-map : drop n (map f xs) ≡ map f (drop n xs)
22242226
head-map : head (map f xs) ≡ Maybe.map f (head xs)
22252227
2226-
take-suc : (o : Fin (length xs)) → let m = toℕ o in take (suc m) xs ≡ take m xs ∷ʳ lookup xs o
2227-
take-suc-tabulate : (f : Fin n → A) (o : Fin n) → let m = toℕ o in take (suc m) (tabulate f) ≡ take m (tabulate f) ∷ʳ f o
2228-
drop-take-suc : (o : Fin (length xs)) → let m = toℕ o in drop m (take (suc m) xs) ≡ [ lookup xs o ]
2229-
drop-take-suc-tabulate : (f : Fin n → A) (o : Fin n) → let m = toℕ o in drop m (take (suc m) (tabulate f)) ≡ [ f o ]
2228+
take-suc : take (suc m) xs ≡ take m xs ∷ʳ lookup xs i
2229+
take-suc-tabulate : take (suc m) (tabulate f) ≡ take m (tabulate f) ∷ʳ f i
2230+
drop-take-suc : drop m (take (suc m) xs) ≡ [ lookup xs i ]
2231+
drop-take-suc-tabulate : drop m (take (suc m) (tabulate f)) ≡ [ f i ]
22302232
22312233
take-all : n ≥ length xs → take n xs ≡ xs
22322234
2233-
take-[] : ∀ m → take m [] ≡ []
2234-
drop-[] : ∀ m → drop m [] ≡ []
2235+
take-[] : take m [] ≡ []
2236+
drop-[] : drop m [] ≡ []
22352237
22362238
map-replicate : map f (replicate n x) ≡ replicate n (f x)
2239+
2240+
drop-drop : drop n (drop m xs) ≡ drop (m + n) xs
22372241
```
22382242

22392243
* Added new patterns and definitions to `Data.Nat.Base`:

src/Codata/Guarded/Stream/Properties.agda

+9-3
Original file line numberDiff line numberDiff line change
@@ -268,9 +268,9 @@ take-zipWith (suc n) f as bs =
268268
------------------------------------------------------------------------
269269
-- Properties of drop
270270

271-
drop-fusion : m n (as : Stream A) drop n (drop m as) ≡ drop (m + n) as
272-
drop-fusion zero n as = P.refl
273-
drop-fusion (suc m) n as = drop-fusion m n (as .tail)
271+
drop-drop : m n (as : Stream A) drop n (drop m as) ≡ drop (m + n) as
272+
drop-drop zero n as = P.refl
273+
drop-drop (suc m) n as = drop-drop m n (as .tail)
274274

275275
drop-zipWith : n (f : A B C) as bs
276276
drop n (zipWith f as bs) ≡ zipWith f (drop n as) (drop n bs)
@@ -331,3 +331,9 @@ map-fusion = map-∘
331331
"Warning: map-fusion was deprecated in v2.0.
332332
Please use map-∘ instead."
333333
#-}
334+
335+
drop-fusion = drop-drop
336+
{-# WARNING_ON_USAGE drop-fusion
337+
"Warning: drop-fusion was deprecated in v2.0.
338+
Please use drop-drop instead."
339+
#-}

src/Codata/Sized/Colist/Properties.agda

+10-4
Original file line numberDiff line numberDiff line change
@@ -197,11 +197,11 @@ drop-nil : ∀ m → i ⊢ drop {A = A} m [] ≈ []
197197
drop-nil zero = []
198198
drop-nil (suc m) = []
199199

200-
drop-drop-fusion : m n (as : Colist A ∞)
200+
drop-drop : m n (as : Colist A ∞)
201201
i ⊢ drop n (drop m as) ≈ drop (m ℕ.+ n) as
202-
drop-drop-fusion zero n as = refl
203-
drop-drop-fusion (suc m) n [] = drop-nil n
204-
drop-drop-fusion (suc m) n (a ∷ as) = drop-drop-fusion m n (as .force)
202+
drop-drop zero n as = refl
203+
drop-drop (suc m) n [] = drop-nil n
204+
drop-drop (suc m) n (a ∷ as) = drop-drop m n (as .force)
205205

206206
map-drop : (f : A B) m as i ⊢ map f (drop m as) ≈ drop m (map f as)
207207
map-drop f zero as = refl
@@ -351,3 +351,9 @@ map-map-fusion = map-∘
351351
"Warning: map-map-fusion was deprecated in v2.0.
352352
Please use map-∘ instead."
353353
#-}
354+
355+
drop-drop-fusion = drop-drop
356+
{-# WARNING_ON_USAGE drop-drop-fusion
357+
"Warning: drop-drop-fusion was deprecated in v2.0.
358+
Please use drop-drop instead."
359+
#-}

src/Data/List/Properties.agda

+7-1
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,7 @@ take-suc-tabulate f i rewrite sym (toℕ-cast (sym (length-tabulate f)) i) | sym
784784

785785
-- If you take at least as many elements from a list as it has, you get
786786
-- the whole list.
787-
take-all :(n : ℕ) (xs : List A) n ≥ length xs take n xs ≡ xs
787+
take-all : (n : ℕ) (xs : List A) n ≥ length xs take n xs ≡ xs
788788
take-all zero [] _ = refl
789789
take-all (suc _) [] _ = refl
790790
take-all (suc n) (x ∷ xs) (s≤s pf) = cong (x ∷_) (take-all n xs pf)
@@ -828,6 +828,12 @@ drop-take-suc-tabulate : ∀ {n} (f : Fin n → A) (i : Fin n) → let m = toℕ
828828
drop-take-suc-tabulate f i rewrite sym (toℕ-cast (sym (length-tabulate f)) i) | sym (lookup-tabulate f i)
829829
= drop-take-suc (tabulate f) (cast _ i)
830830

831+
-- Dropping m elements and then n elements is same as dropping m+n elements
832+
drop-drop : (m n : ℕ) (xs : List A) drop n (drop m xs) ≡ drop (m + n) xs
833+
drop-drop zero n xs = refl
834+
drop-drop (suc m) n [] = drop-[] n
835+
drop-drop (suc m) n (x ∷ xs) = drop-drop m n xs
836+
831837
------------------------------------------------------------------------
832838
-- splitAt
833839

0 commit comments

Comments
 (0)