Package list-zip-thm: Properties of the list zip function

Information

namelist-zip-thm
version1.21
descriptionProperties of the list zip function
authorJoe Leslie-Hurd <joe@gilith.com>
licenseMIT
provenanceHOL Light theory extracted on 2014-06-12
requiresbool
list-append
list-def
list-length
list-nth
list-zip-def
natural
showData.Bool
Data.List
Data.Pair
Number.Natural

Files

Theorems

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

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

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

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

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)

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

m. ¬(m < 0)

n. 0 < suc n

(¬) = λp. p

() = λp. p = λx.

t. t

t. t t

t. t

t. t t

t. t

t. t t

n. ¬(suc n = 0)

l. [] @ l = l

f. zipWith f [] [] = []

() = λp q. p q p

l. length l = 0 l = []

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

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

l1 l2. zip l1 l2 = zipWith , l1 l2

() = λ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 h t. (h :: t) @ l = h :: t @ l

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

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

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

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

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