@@ -72,86 +72,43 @@ private
72
72
-- take
73
73
74
74
unfold-take : ∀ n x (xs : Vec A (n + m)) → take (suc n) (x ∷ xs) ≡ x ∷ take n xs
75
- unfold-take n x xs with splitAt n xs
76
- ... | xs , ys , refl = refl
77
-
78
- take-distr-zipWith : ∀ (f : A → B → C) →
79
- (xs : Vec A (m + n)) (ys : Vec B (m + n)) →
80
- take m (zipWith f xs ys) ≡ zipWith f (take m xs) (take m ys)
81
- take-distr-zipWith {m = zero} f xs ys = refl
82
- take-distr-zipWith {m = suc m} f (x ∷ xs) (y ∷ ys) = begin
83
- take (suc m) (zipWith f (x ∷ xs) (y ∷ ys))
84
- ≡⟨⟩
85
- take (suc m) (f x y ∷ (zipWith f xs ys))
86
- ≡⟨ unfold-take m (f x y) (zipWith f xs ys) ⟩
87
- f x y ∷ take m (zipWith f xs ys)
88
- ≡⟨ cong (f x y ∷_) (take-distr-zipWith f xs ys) ⟩
89
- f x y ∷ (zipWith f (take m xs) (take m ys))
90
- ≡⟨⟩
91
- zipWith f (x ∷ (take m xs)) (y ∷ (take m ys))
92
- ≡˘⟨ cong₂ (zipWith f) (unfold-take m x xs) (unfold-take m y ys) ⟩
93
- zipWith f (take (suc m) (x ∷ xs)) (take (suc m) (y ∷ ys))
94
- ∎
95
-
96
- take-distr-map : ∀ (f : A → B) (m : ℕ) (xs : Vec A (m + n)) →
97
- take m (map f xs) ≡ map f (take m xs)
98
- take-distr-map f zero xs = refl
99
- take-distr-map f (suc m) (x ∷ xs) = begin
100
- take (suc m) (map f (x ∷ xs)) ≡⟨⟩
101
- take (suc m) (f x ∷ map f xs) ≡⟨ unfold-take m (f x) (map f xs) ⟩
102
- f x ∷ (take m (map f xs)) ≡⟨ cong (f x ∷_) (take-distr-map f m xs) ⟩
103
- f x ∷ (map f (take m xs)) ≡⟨⟩
104
- map f (x ∷ take m xs) ≡˘⟨ cong (map f) (unfold-take m x xs) ⟩
105
- map f (take (suc m) (x ∷ xs)) ∎
75
+ unfold-take n x xs = refl
76
+
77
+ take-zipWith : ∀ (f : A → B → C) →
78
+ (xs : Vec A (m + n)) (ys : Vec B (m + n)) →
79
+ take m (zipWith f xs ys) ≡ zipWith f (take m xs) (take m ys)
80
+ take-zipWith {m = zero} f xs ys = refl
81
+ take-zipWith {m = suc m} f (x ∷ xs) (y ∷ ys) = cong (f x y ∷_) (take-zipWith f xs ys)
82
+
83
+ take-map : ∀ (f : A → B) (m : ℕ) (xs : Vec A (m + n)) →
84
+ take m (map f xs) ≡ map f (take m xs)
85
+ take-map f zero xs = refl
86
+ take-map f (suc m) (x ∷ xs) = cong (f x ∷_) (take-map f m xs)
106
87
107
88
------------------------------------------------------------------------
108
89
-- drop
109
90
110
91
unfold-drop : ∀ n x (xs : Vec A (n + m)) →
111
92
drop (suc n) (x ∷ xs) ≡ drop n xs
112
- unfold-drop n x xs with splitAt n xs
113
- ... | xs , ys , refl = refl
114
-
115
- drop-distr-zipWith : (f : A → B → C) →
116
- (x : Vec A (m + n)) (y : Vec B (m + n)) →
117
- drop m (zipWith f x y) ≡ zipWith f (drop m x) (drop m y)
118
- drop-distr-zipWith {m = zero} f xs ys = refl
119
- drop-distr-zipWith {m = suc m} f (x ∷ xs) (y ∷ ys) = begin
120
- drop (suc m) (zipWith f (x ∷ xs) (y ∷ ys))
121
- ≡⟨⟩
122
- drop (suc m) (f x y ∷ (zipWith f xs ys))
123
- ≡⟨ unfold-drop m (f x y) (zipWith f xs ys) ⟩
124
- drop m (zipWith f xs ys)
125
- ≡⟨ drop-distr-zipWith f xs ys ⟩
126
- zipWith f (drop m xs) (drop m ys)
127
- ≡˘⟨ cong₂ (zipWith f) (unfold-drop m x xs) (unfold-drop m y ys) ⟩
128
- zipWith f (drop (suc m) (x ∷ xs)) (drop (suc m) (y ∷ ys))
129
- ∎
130
-
131
- drop-distr-map : ∀ (f : A → B) (m : ℕ) (x : Vec A (m + n)) →
132
- drop m (map f x) ≡ map f (drop m x)
133
- drop-distr-map f zero x = refl
134
- drop-distr-map f (suc m) (x ∷ xs) = begin
135
- drop (suc m) (map f (x ∷ xs)) ≡⟨⟩
136
- drop (suc m) (f x ∷ map f xs) ≡⟨ unfold-drop m (f x) (map f xs) ⟩
137
- drop m (map f xs) ≡⟨ drop-distr-map f m xs ⟩
138
- map f (drop m xs) ≡˘⟨ cong (map f) (unfold-drop m x xs) ⟩
139
- map f (drop (suc m) (x ∷ xs)) ∎
93
+ unfold-drop n x xs = refl
94
+
95
+ drop-zipWith : (f : A → B → C) →
96
+ (xs : Vec A (m + n)) (ys : Vec B (m + n)) →
97
+ drop m (zipWith f xs ys) ≡ zipWith f (drop m xs) (drop m ys)
98
+ drop-zipWith {m = zero} f xs ys = refl
99
+ drop-zipWith {m = suc m} f (x ∷ xs) (y ∷ ys) = drop-zipWith f xs ys
100
+
101
+ drop-map : ∀ (f : A → B) (m : ℕ) (xs : Vec A (m + n)) →
102
+ drop m (map f xs) ≡ map f (drop m xs)
103
+ drop-map f zero xs = refl
104
+ drop-map f (suc m) (x ∷ xs) = drop-map f m xs
140
105
141
106
------------------------------------------------------------------------
142
107
-- take and drop together
143
108
144
- take++drop≡id : ∀ (m : ℕ) (x : Vec A (m + n)) → take m x ++ drop m x ≡ x
145
- take++drop≡id zero x = refl
146
- take++drop≡id (suc m) (x ∷ xs) = begin
147
- take (suc m) (x ∷ xs) ++ drop (suc m) (x ∷ xs)
148
- ≡⟨ cong₂ _++_ (unfold-take m x xs) (unfold-drop m x xs) ⟩
149
- (x ∷ take m xs) ++ (drop m xs)
150
- ≡⟨⟩
151
- x ∷ (take m xs ++ drop m xs)
152
- ≡⟨ cong (x ∷_) (take++drop≡id m xs) ⟩
153
- x ∷ xs
154
- ∎
109
+ take++drop≡id : ∀ (m : ℕ) (xs : Vec A (m + n)) → take m xs ++ drop m xs ≡ xs
110
+ take++drop≡id zero xs = refl
111
+ take++drop≡id (suc m) (x ∷ xs) = cong (x ∷_) (take++drop≡id m xs)
155
112
156
113
------------------------------------------------------------------------
157
114
-- truncate
@@ -216,12 +173,8 @@ lookup⇒[]= (suc i) (_ ∷ xs) p = there (lookup⇒[]= i xs p)
216
173
217
174
lookup-inject≤-take : ∀ m (m≤m+n : m ≤ m + n) (i : Fin m) (xs : Vec A (m + n)) →
218
175
lookup xs (Fin.inject≤ i m≤m+n) ≡ lookup (take m xs) i
219
- lookup-inject≤-take (suc m) m≤m+n zero (x ∷ xs)
220
- rewrite unfold-take m x xs = refl
221
- lookup-inject≤-take (suc (suc m)) (s≤s m≤m+n) (suc zero) (x ∷ y ∷ xs)
222
- rewrite unfold-take (suc m) x (y ∷ xs) | unfold-take m y xs = refl
223
- lookup-inject≤-take (suc (suc m)) (s≤s (s≤s m≤m+n)) (suc (suc i)) (x ∷ y ∷ xs)
224
- rewrite unfold-take (suc m) x (y ∷ xs) | unfold-take m y xs = lookup-inject≤-take m m≤m+n i xs
176
+ lookup-inject≤-take (suc m) m≤m+n zero (x ∷ xs) = refl
177
+ lookup-inject≤-take (suc m) (s≤s m≤m+n) (suc i) (x ∷ xs) = lookup-inject≤-take m m≤m+n i xs
225
178
226
179
------------------------------------------------------------------------
227
180
-- updateAt (_[_]%=_)
@@ -1298,3 +1251,24 @@ take-drop-id = take++drop≡id
1298
1251
"Warning: take-drop-id was deprecated in v2.0.
1299
1252
Please use take++drop≡id instead."
1300
1253
#-}
1254
+
1255
+ take-distr-zipWith = take-zipWith
1256
+ {-# WARNING_ON_USAGE take-distr-zipWith
1257
+ "Warning: take-distr-zipWith was deprecated in v2.0.
1258
+ Please use take-zipWith instead."
1259
+ #-}
1260
+ take-distr-map = take-map
1261
+ {-# WARNING_ON_USAGE take-distr-map
1262
+ "Warning: take-distr-map was deprecated in v2.0.
1263
+ Please use take-map instead."
1264
+ #-}
1265
+ drop-distr-zipWith = drop-zipWith
1266
+ {-# WARNING_ON_USAGE drop-distr-zipWith
1267
+ "Warning: drop-distr-zipWith was deprecated in v2.0.
1268
+ Please use tdrop-zipWith instead."
1269
+ #-}
1270
+ drop-distr-map = drop-map
1271
+ {-# WARNING_ON_USAGE drop-distr-map
1272
+ "Warning: drop-distr-map was deprecated in v2.0.
1273
+ Please use drop-map instead."
1274
+ #-}
0 commit comments