src/HOL/Library/AssocList.thy
changeset 20503 503ac4c5ef91
parent 19333 99dbefd7bc2e
child 21404 eb85850d3eb7
--- a/src/HOL/Library/AssocList.thy	Mon Sep 11 14:35:30 2006 +0200
+++ b/src/HOL/Library/AssocList.thy	Mon Sep 11 21:35:19 2006 +0200
@@ -332,7 +332,7 @@
   by (induct al) auto
 
 lemma update_eqD: "update k v al = update k v' al' \<Longrightarrow> v=v'"
-proof (induct al fixing: al') 
+proof (induct al arbitrary: al') 
   case Nil thus ?case 
     by (cases al') (auto split: split_if_asm)
 next
@@ -364,7 +364,7 @@
 (* ******************************************************************************** *)
 
 lemma updates_conv: "map_of (updates ks vs al) k = ((map_of al)(ks[\<mapsto>]vs)) k"
-proof (induct ks fixing: vs al)
+proof (induct ks arbitrary: vs al)
   case Nil
   thus ?case by simp
 next
@@ -387,11 +387,11 @@
   assumes "distinct (map fst al)"
   shows "distinct (map fst (updates ks vs al))"
   using prems
-by (induct ks fixing: vs al) (auto simp add: distinct_update split: list.splits)
+by (induct ks arbitrary: vs al) (auto simp add: distinct_update split: list.splits)
 
 lemma clearjunk_updates:
  "clearjunk (updates ks vs al) = updates ks vs (clearjunk al)"
-  by (induct ks fixing: vs al) (auto simp add: clearjunk_update split: list.splits)
+  by (induct ks arbitrary: vs al) (auto simp add: clearjunk_update split: list.splits)
 
 lemma updates_empty[simp]: "updates vs [] al = al"
   by (induct vs) auto 
@@ -401,12 +401,12 @@
 
 lemma updates_append1[simp]: "size ks < size vs \<Longrightarrow>
   updates (ks@[k]) vs al = update k (vs!size ks) (updates ks vs al)"
-  by (induct ks fixing: vs al) (auto split: list.splits)
+  by (induct ks arbitrary: vs al) (auto split: list.splits)
 
 lemma updates_list_update_drop[simp]:
  "\<lbrakk>size ks \<le> i; i < size vs\<rbrakk>
    \<Longrightarrow> updates ks (vs[i:=v]) al = updates ks vs al"
-  by (induct ks fixing: al vs i) (auto split:list.splits nat.splits)
+  by (induct ks arbitrary: al vs i) (auto split:list.splits nat.splits)
 
 lemma update_updates_conv_if: "
  map_of (updates xs ys (update x y al)) =
@@ -425,11 +425,11 @@
 
 lemma updates_append_drop[simp]:
   "size xs = size ys \<Longrightarrow> updates (xs@zs) ys al = updates xs ys al"
-  by (induct xs fixing: ys al) (auto split: list.splits)
+  by (induct xs arbitrary: ys al) (auto split: list.splits)
 
 lemma updates_append2_drop[simp]:
   "size xs = size ys \<Longrightarrow> updates xs (ys@zs) al = updates xs ys al"
-  by (induct xs fixing: ys al) (auto split: list.splits)
+  by (induct xs arbitrary: ys al) (auto split: list.splits)
 
 (* ******************************************************************************** *)
 subsection {* @{const map_ran} *}
@@ -455,13 +455,13 @@
 (* ******************************************************************************** *)
 
 lemma dom_merge: "fst ` set (merge xs ys) = fst ` set xs \<union> fst ` set ys"
-  by (induct ys fixing: xs) (auto simp add: dom_update)
+  by (induct ys arbitrary: xs) (auto simp add: dom_update)
 
 lemma distinct_merge:
   assumes "distinct (map fst xs)"
   shows "distinct (map fst (merge xs ys))"
   using prems
-by (induct ys fixing: xs) (auto simp add: dom_merge distinct_update)
+by (induct ys arbitrary: xs) (auto simp add: dom_merge distinct_update)
 
 lemma clearjunk_merge:
  "clearjunk (merge xs ys) = merge (clearjunk xs) ys"