Basic = Main
n = Suc m ==> 0 < n
[| length a = length c; length b = length d |] ==> zip (a @ b) (c @ d) = zip a c @ zip b d
! i. length (xs[i := x]) = length xs
length xs = length ys ==> zip (rev xs) (rev ys) = rev (zip xs ys)
x : set (replicate n v) ==> x = v
x : set (xs[i := v]) ==> x = v | x : set xs
length xs = length ys ==> zip (xs[i := x]) (ys[i := y]) = zip xs ys[i := (x, y)]
(x # xs) ! i = nat_case x (op ! xs) i
i < length xs ==> xs ! i : set xs
! i. i < length xs --> P (xs ! i) ==> Ball (set xs) P
Ball (set xs) P = (! i. i < length xs --> P (xs ! i))