merged
authorhaftmann
Thu, 30 Sep 2010 07:34:06 +0200
changeset 39792 4b615e3ddef7
parent 39790 b1640def6d44 (current diff)
parent 39791 a91430778479 (diff)
child 39793 4bd217def154
merged
--- a/src/HOL/Library/More_List.thy	Wed Sep 29 17:59:20 2010 +0200
+++ b/src/HOL/Library/More_List.thy	Thu Sep 30 07:34:06 2010 +0200
@@ -100,8 +100,6 @@
   "fold plus xs = plus (listsum (rev xs))"
   by (induct xs) (simp_all add: add.assoc)
 
-declare listsum_foldl [code del]
-
 lemma (in monoid_add) listsum_conv_fold [code]:
   "listsum xs = fold (\<lambda>x y. y + x) xs 0"
   by (auto simp add: listsum_foldl foldl_fold fun_eq_iff)
--- a/src/Pure/Isar/code.ML	Wed Sep 29 17:59:20 2010 +0200
+++ b/src/Pure/Isar/code.ML	Thu Sep 30 07:34:06 2010 +0200
@@ -1049,8 +1049,8 @@
     val c = const_eqn thy thm;
     fun update_subsume thy (thm, proper) eqns = 
       let
-        val args_of = snd o strip_comb o map_types Type.strip_sorts
-          o fst o Logic.dest_equals o Thm.plain_prop_of;
+        val args_of = dropwhile is_Var o rev o snd o strip_comb
+          o map_types Type.strip_sorts o fst o Logic.dest_equals o Thm.plain_prop_of;
         val args = args_of thm;
         val incr_idx = Logic.incr_indexes ([], Thm.maxidx_of thm + 1);
         fun matches_args args' = length args <= length args' andalso