Package list-zip: The list zip functions

Information

namelist-zip
version1.31
descriptionThe list zip functions
authorJoe Leslie-Hurd <joe@gilith.com>
licenseMIT
checksuma46998adf1a558a80d81ce979c9728a8aac97b81
requiresbool
list-append
list-def
list-dest
list-fold
list-length
list-map
list-nth
list-thm
natural
pair
showData.Bool
Data.List
Data.Pair
Number.Natural

Files

Defined Constants

Theorems

zip [] [] = []

unzip [] = ([], [])

f. zipWith f [] [] = []

l1 l2. zip l1 l2 = zipWith , l1 l2

l. unzip l = (map fst l, map snd l)

x y. zip (x :: []) (y :: []) = (x, y) :: []

xs ys. length xs = length ys map fst (zip xs ys) = xs

xs ys. length xs = length ys map snd (zip xs ys) = ys

l xs. unzip l = (xs, []) l = [] xs = []

l ys. unzip l = ([], ys) l = [] ys = []

f x y. zipWith f (x :: []) (y :: []) = f x y :: []

l1 l2 n. length l1 = n length l2 = n length (zip l1 l2) = n

l xs ys. unzip l = (xs, ys) length xs = length ys l = zip xs ys

f l1 l2 n. length l1 = n length l2 = n length (zipWith f l1 l2) = n

x y xs ys.
    length xs = length ys zip (x :: xs) (y :: ys) = (x, y) :: zip xs ys

f h1 h2 t1 t2.
    length t1 = length t2
    zipWith f (h1 :: t1) (h2 :: t2) = f h1 h2 :: zipWith f t1 t2

unzip = foldr (λ(x, y) (xs, ys). (x :: xs, y :: ys)) ([], [])

x1 x2 y1 y2.
    length x1 = length y1 length x2 = length y2
    zip (x1 @ x2) (y1 @ y2) = zip x1 y1 @ zip x2 y2

l1 l2 n i.
    length l1 = n length l2 = n i < n
    nth (zip l1 l2) i = (nth l1 i, nth l2 i)

h x y t xs ys.
    unzip (h :: t) = (x :: xs, y :: ys) h = (x, y) unzip t = (xs, ys)

f l1 l2 n i.
    length l1 = n length l2 = n i < n
    nth (zipWith f l1 l2) i = f (nth l1 i) (nth l2 i)

f x1 x2 y1 y2.
    length x1 = length y1 length x2 = length y2
    zipWith f (x1 @ x2) (y1 @ y2) = zipWith f x1 y1 @ zipWith f x2 y2

External Type Operators

External Constants

Assumptions

¬

length [] = 0

p. p

t. t ¬t

m. ¬(m < 0)

n. 0 < suc n

(¬) = λp. p

() = λp. p ((select) p)

t. (x. t) t

t. (λx. t x) = t

() = λp. p = λx.

t. ( t) t

t. (t ) t

t. t

t. t t

t. t

t. t t

t. t

t. t t

t. t

n. ¬(suc n = 0)

l. [] @ l = l

f. map f [] = []

t. ( t) ¬t

t. t ¬t

() = λp q. p q p

t. (t ) (t )

x. (fst x, snd x) = x

h t. ¬(h :: t = [])

h t. head (h :: t) = h

h t. tail (h :: t) = t

p x. p x p ((select) p)

f b. foldr f b [] = b

l. length l = 0 l = []

x. a b. x = (a, b)

x y. x = y y = x

h t. nth (h :: t) 0 = h

h t. length (h :: t) = suc (length t)

() = λp q. (λf. f p q) = λf. f

() = λp. q. (x. p x q) q

m n. suc m = suc n m = n

m n. suc m < suc n m < n

l1 l2. length (l1 @ l2) = length l1 + length l2

l. l = [] h t. l = h :: t

() = λp q. r. (p r) (q r) r

f. fn. a b. fn (a, b) = f a b

t1 t2 t3. (t1 t2) t3 t1 t2 t3

l h t. (h :: t) @ l = h :: t @ l

f h t. map f (h :: t) = f h :: map f t

p. p 0 (n. p n p (suc n)) n. p n

p. p [] (h t. p t p (h :: t)) l. p l

f b h t. foldr f b (h :: t) = f h (foldr f b t)

h t n. n < length t nth (h :: t) (suc n) = nth t n

h1 h2 t1 t2. h1 :: t1 = h2 :: t2 h1 = h2 t1 = t2

a b a' b'. (a, b) = (a', b') a = a' b = b'

l n. length l = suc n h t. l = h :: t length t = n

b f. fn. fn [] = b h t. fn (h :: t) = f h t (fn t)