# HG changeset patch # User nipkow # Date 1067386626 -3600 # Node ID cb32eb89bddd68acd03c00b62133e2c68d5c9446 # Parent 60d2034376bc4430db932fc9a982fdca9828ec36 *** empty log message *** diff -r 60d2034376bc -r cb32eb89bddd src/HOL/List.thy --- a/src/HOL/List.thy Fri Oct 24 01:44:12 2003 +0200 +++ b/src/HOL/List.thy Wed Oct 29 01:17:06 2003 +0100 @@ -291,6 +291,17 @@ apply (induct xs, auto) done +lemma list_induct2[consumes 1]: "\ys. + \ length xs = length ys; + P [] []; + \x xs y ys. \ length xs = length ys; P xs ys \ \ P (x#xs) (y#ys) \ + \ P xs ys" +apply(induct xs) + apply simp +apply(case_tac ys) + apply simp +apply(simp) +done subsection {* @{text "@"} -- append *} @@ -968,10 +979,8 @@ by (simp add: zip_append1) lemma zip_rev: -"!!xs. length xs = length ys ==> zip (rev xs) (rev ys) = rev (zip xs ys)" -apply (induct ys, simp) -apply (case_tac xs, simp_all) -done +"length xs = length ys ==> zip (rev xs) (rev ys) = rev (zip xs ys)" +by (induct rule:list_induct2, simp_all) lemma nth_zip [simp]: "!!i xs. [| i < length xs; i < length ys|] ==> (zip xs ys)!i = (xs!i, ys!i)" @@ -1051,11 +1060,9 @@ done lemma list_all2_append: - "\b. length a = length b \ - list_all2 P (a@c) (b@d) = (list_all2 P a b \ list_all2 P c d)" - apply (induct a, simp) - apply (case_tac b, auto) - done + "length xs = length ys \ + list_all2 P (xs@us) (ys@vs) = (list_all2 P xs ys \ list_all2 P us vs)" +by (induct rule:list_induct2, simp_all) lemma list_all2_appendI [intro?, trans]: "\ list_all2 P a b; list_all2 P c d \ \ list_all2 P (a@c) (b@d)"