# HG changeset patch # User huffman # Date 1323434536 -3600 # Node ID 16e8e4d33c426d5753459e8ec9dbf3b448b87b5e # Parent 331ebffe0593a3210cfcbbcc93977bd7c45a1ef0 add induction rule for list_all2 diff -r 331ebffe0593 -r 16e8e4d33c42 src/HOL/List.thy --- a/src/HOL/List.thy Fri Dec 09 12:21:03 2011 +0100 +++ b/src/HOL/List.thy Fri Dec 09 13:42:16 2011 +0100 @@ -2202,6 +2202,15 @@ "list_all2 P xs (y # ys) = (\z zs. xs = z # zs \ P z y \ list_all2 P zs ys)" by (cases xs) auto +lemma list_all2_induct + [consumes 1, case_names Nil Cons, induct set: list_all2]: + assumes P: "list_all2 P xs ys" + assumes Nil: "R [] []" + assumes Cons: "\x xs y ys. \P x y; R xs ys\ \ R (x # xs) (y # ys)" + shows "R xs ys" +using P +by (induct xs arbitrary: ys) (auto simp add: list_all2_Cons1 Nil Cons) + lemma list_all2_rev [iff]: "list_all2 P (rev xs) (rev ys) = list_all2 P xs ys" by (simp add: list_all2_def zip_rev cong: conj_cong)