# HG changeset patch # User nipkow # Date 1181149979 -7200 # Node ID e26ec695c9b3375dc4357d1ff489afc2f8f172f9 # Parent 4e61c67a87e38270ae89128d98b4787f51653841 changed filter syntax from : to <- diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/Induct/SList.thy --- a/src/HOL/Induct/SList.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/Induct/SList.thy Wed Jun 06 19:12:59 2007 +0200 @@ -231,14 +231,14 @@ no_translations - "[x:xs . P]" == "filter (%x. P) xs" + "[x\xs . P]" == "filter (%x. P) xs" syntax (* Special syntax for list_all and filter *) "@Alls" :: "[idt, 'a list, bool] => bool" ("(2Alls _:_./ _)" 10) translations - "[x:xs. P]" == "CONST filter(%x. P) xs" + "[x\xs. P]" == "CONST filter(%x. P) xs" "Alls x:xs. P" == "CONST list_all(%x. P)xs" @@ -540,7 +540,7 @@ lemma mem_append [simp]: "x mem (xs@ys) = (x mem xs | x mem ys)" by (induct_tac "xs" rule: list_induct, simp_all) -lemma mem_filter [simp]: "x mem [x:xs. P x ] = (x mem xs & P(x))" +lemma mem_filter [simp]: "x mem [x\xs. P x ] = (x mem xs & P(x))" by (induct_tac "xs" rule: list_induct, simp_all) (** list_all **) diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/Library/AssocList.thy --- a/src/HOL/Library/AssocList.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/Library/AssocList.thy Wed Jun 06 19:12:59 2007 +0200 @@ -52,7 +52,7 @@ note length_filter_le [of "\p. fst p \ fst a" al] also have "\n. n \ Suc n" by simp - finally have "length [p\al . fst p \ fst a] \ Suc (length al)" . + finally have "length [p\al . fst p \ fst a] \ Suc (length al)" . with Cons show ?case by auto qed @@ -189,7 +189,7 @@ by (induct al rule: clearjunk.induct) (simp_all add: dom_clearjunk notin_filter_fst delete_def) -lemma map_of_filter: "k \ a \ map_of [q\ps . fst q \ a] k = map_of ps k" +lemma map_of_filter: "k \ a \ map_of [q\ps . fst q \ a] k = map_of ps k" by (induct ps) auto lemma map_of_clearjunk: "map_of (clearjunk al) = map_of al" @@ -204,7 +204,7 @@ case Nil thus ?case by simp next case (Cons p ps) - from Cons have "length (clearjunk [q\ps . fst q \ fst p]) \ length [q\ps . fst q \ fst p]" + from Cons have "length (clearjunk [q\ps . fst q \ fst p]) \ length [q\ps . fst q \ fst p]" by (simp add: delete_def) also have "\ \ length ps" by simp @@ -212,7 +212,7 @@ by (simp add: delete_def) qed -lemma notin_fst_filter: "a \ fst ` set ps \ [q\ps . fst q \ a] = ps" +lemma notin_fst_filter: "a \ fst ` set ps \ [q\ps . fst q \ a] = ps" by (induct ps) auto lemma distinct_clearjunk_id [simp]: "distinct (map fst al) \ clearjunk al = al" @@ -334,7 +334,7 @@ qed lemma update_filter: - "a\k \ update k v [q\ps . fst q \ a] = [q\update k v ps . fst q \ a]" + "a\k \ update k v [q\ps . fst q \ a] = [q\update k v ps . fst q \ a]" by (induct ps) auto lemma clearjunk_update: "clearjunk (update k v al) = update k v (clearjunk al)" @@ -460,7 +460,7 @@ lemma distinct_map_ran: "distinct (map fst al) \ distinct (map fst (map_ran f al))" by (induct al) (auto simp add: dom_map_ran) -lemma map_ran_filter: "map_ran f [p\ps. fst p \ a] = [p\map_ran f ps. fst p \ a]" +lemma map_ran_filter: "map_ran f [p\ps. fst p \ a] = [p\map_ran f ps. fst p \ a]" by (induct ps) auto lemma clearjunk_map_ran: "clearjunk (map_ran f al) = map_ran f (clearjunk al)" diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/Library/Multiset.thy --- a/src/HOL/Library/Multiset.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/Library/Multiset.thy Wed Jun 06 19:12:59 2007 +0200 @@ -786,11 +786,11 @@ done lemma multiset_of_compl_union [simp]: - "multiset_of [x\xs. P x] + multiset_of [x\xs. \P x] = multiset_of xs" + "multiset_of [x\xs. P x] + multiset_of [x\xs. \P x] = multiset_of xs" by (induct xs) (auto simp: union_ac) lemma count_filter: - "count (multiset_of xs) x = length [y \ xs. y = x]" + "count (multiset_of xs) x = length [y \ xs. y = x]" by (induct xs) auto diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/MicroJava/BV/Kildall.thy --- a/src/HOL/MicroJava/BV/Kildall.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/MicroJava/BV/Kildall.thy Wed Jun 06 19:12:59 2007 +0200 @@ -48,7 +48,7 @@ lemma (in semilat) nth_merges: "\ss. \p < length ss; ss \ list n A; \(p,t)\set ps. p t\A \ \ - (merges f ps ss)!p = map snd [(p',t') \ ps. p'=p] ++_f ss!p" + (merges f ps ss)!p = map snd [(p',t') \ ps. p'=p] ++_f ss!p" (is "\ss. \_; _; ?steptype ps\ \ ?P ss ps") proof (induct ps) show "\ss. ?P ss []" by simp diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/MicroJava/BV/LBVComplete.thy --- a/src/HOL/MicroJava/BV/LBVComplete.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/MicroJava/BV/LBVComplete.thy Wed Jun 06 19:12:59 2007 +0200 @@ -82,13 +82,13 @@ assume merge: "?s1 \ T" from x ss1 have "?s1 = (if \(pc', s')\set ss1. pc' \ pc + 1 \ s' <=_r c!pc' - then (map snd [(p', t')\ss1 . p'=pc+1]) ++_f x + then (map snd [(p', t') \ ss1 . p'=pc+1]) ++_f x else \)" by (rule merge_def) with merge obtain app: "\(pc',s')\set ss1. pc' \ pc+1 \ s' <=_r c!pc'" (is "?app ss1") and - sum: "(map snd [(p',t')\ss1 . p' = pc+1] ++_f x) = ?s1" + sum: "(map snd [(p',t') \ ss1 . p' = pc+1] ++_f x) = ?s1" (is "?map ss1 ++_f x = _" is "?sum ss1 = _") by (simp split: split_if_asm) from app less @@ -117,7 +117,7 @@ from x ss2 have "?s2 = (if \(pc', s')\set ss2. pc' \ pc + 1 \ s' <=_r c!pc' - then map snd [(p', t')\ss2 . p' = pc + 1] ++_f x + then map snd [(p', t') \ ss2 . p' = pc + 1] ++_f x else \)" by (rule merge_def) ultimately have ?thesis by simp @@ -196,7 +196,7 @@ ultimately have "merge c pc ?step (c!Suc pc) = (if \(pc',s')\set ?step. pc'\pc+1 \ s' <=_r c!pc' - then map snd [(p',t')\?step.p'=pc+1] ++_f c!Suc pc + then map snd [(p',t') \ ?step.p'=pc+1] ++_f c!Suc pc else \)" by (rule merge_def) moreover { fix pc' s' assume s': "(pc', s') \ set ?step" and suc_pc: "pc' \ pc+1" @@ -209,7 +209,7 @@ } hence "\(pc',s')\set ?step. pc'\pc+1 \ s' <=_r c!pc'" by auto moreover from pc have "Suc pc = length \ \ Suc pc < length \" by auto - hence "map snd [(p',t')\?step.p'=pc+1] ++_f c!Suc pc \ \" + hence "map snd [(p',t') \ ?step.p'=pc+1] ++_f c!Suc pc \ \" (is "?map ++_f _ \ _") proof (rule disjE) assume pc': "Suc pc = length \" @@ -217,7 +217,7 @@ moreover from pc' bounded pc have "\(p',t')\set ?step. p'\pc+1" by clarify (drule boundedD, auto) - hence "[(p',t')\?step.p'=pc+1] = []" by (blast intro: filter_False) + hence "[(p',t') \ ?step.p'=pc+1] = []" by (blast intro: filter_False) hence "?map = []" by simp ultimately show ?thesis by (simp add: B_neq_T) next @@ -264,7 +264,7 @@ hence "merge c pc ?step (c!Suc pc) \ \" by (simp add: wti) ultimately have "merge c pc ?step (c!Suc pc) = - map snd [(p',t')\?step.p'=pc+1] ++_f c!Suc pc" by (rule merge_not_top_s) + map snd [(p',t')\ ?step.p'=pc+1] ++_f c!Suc pc" by (rule merge_not_top_s) hence "?wti = \" (is "_ = (?map ++_f _)" is "_ = ?sum") by (simp add: wti) also { from suc_pc phi have "\!Suc pc \ A" by simp diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/MicroJava/BV/LBVCorrect.thy --- a/src/HOL/MicroJava/BV/LBVCorrect.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/MicroJava/BV/LBVCorrect.thy Wed Jun 06 19:12:59 2007 +0200 @@ -88,7 +88,7 @@ also from s2 merge have "\ \ \" (is "?merge \ _") by simp with cert_in_A step_in_A - have "?merge = (map snd [(p',t')\?step pc. p'=pc+1] ++_f (c!(pc+1)))" + have "?merge = (map snd [(p',t') \ ?step pc. p'=pc+1] ++_f (c!(pc+1)))" by (rule merge_not_top_s) finally have "s' <=_r ?s2" using step_in_A cert_in_A True step diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/MicroJava/BV/LBVSpec.thy --- a/src/HOL/MicroJava/BV/LBVSpec.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/MicroJava/BV/LBVSpec.thy Wed Jun 06 19:12:59 2007 +0200 @@ -121,7 +121,7 @@ lemma (in semilat) pp_ub1': assumes S: "snd`set S \ A" assumes y: "y \ A" and ab: "(a, b) \ set S" - shows "b <=_r map snd [(p', t')\S . p' = a] ++_f y" + shows "b <=_r map snd [(p', t') \ S . p' = a] ++_f y" proof - from S have "\(x,y) \ set S. y \ A" by auto with semilat y ab show ?thesis by - (rule ub1') @@ -180,7 +180,7 @@ "\x. x \ A \ snd`set ss \ A \ merge c pc ss x = (if \(pc',s') \ set ss. pc'\pc+1 \ s' <=_r c!pc' then - map snd [(p',t') \ ss. p'=pc+1] ++_f x + map snd [(p',t') \ ss. p'=pc+1] ++_f x else \)" (is "\x. _ \ _ \ ?merge ss x = ?if ss x" is "\x. _ \ _ \ ?P ss x") proof (induct ss) @@ -210,15 +210,15 @@ hence "\(pc', s')\set ls. pc'\pc+1 \ s' <=_r c!pc'" by auto moreover from True have - "map snd [(p',t')\ls . p'=pc+1] ++_f ?if' = - (map snd [(p',t')\l#ls . p'=pc+1] ++_f x)" + "map snd [(p',t')\ls . p'=pc+1] ++_f ?if' = + (map snd [(p',t')\l#ls . p'=pc+1] ++_f x)" by simp ultimately show ?thesis using True by simp next case False moreover - from ls have "set (map snd [(p', t')\ls . p' = Suc pc]) \ A" by auto + from ls have "set (map snd [(p', t')\ls . p' = Suc pc]) \ A" by auto ultimately show ?thesis by auto qed finally show "?P (l#ls) x" . @@ -227,7 +227,7 @@ lemma (in lbv) merge_not_top_s: assumes x: "x \ A" and ss: "snd`set ss \ A" assumes m: "merge c pc ss x \ \" - shows "merge c pc ss x = (map snd [(p',t') \ ss. p'=pc+1] ++_f x)" + shows "merge c pc ss x = (map snd [(p',t') \ ss. p'=pc+1] ++_f x)" proof - from ss m have "\(pc',s') \ set ss. (pc' \ pc+1 \ s' <=_r c!pc')" by (rule merge_not_top) @@ -315,8 +315,8 @@ assumes s0: "snd`set ss \ A" and x: "x \ A" shows "merge c pc ss x \ A" proof - - from s0 have "set (map snd [(p', t')\ss . p'=pc+1]) \ A" by auto - with x have "(map snd [(p', t')\ss . p'=pc+1] ++_f x) \ A" + from s0 have "set (map snd [(p', t')\ss . p'=pc+1]) \ A" by auto + with x have "(map snd [(p', t')\ss . p'=pc+1] ++_f x) \ A" by (auto intro!: plusplus_closed) with s0 x show ?thesis by (simp add: merge_def T_A) qed diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/MicroJava/BV/SemilatAlg.thy --- a/src/HOL/MicroJava/BV/SemilatAlg.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/MicroJava/BV/SemilatAlg.thy Wed Jun 06 19:12:59 2007 +0200 @@ -156,7 +156,7 @@ lemma ub1': includes semilat shows "\\(p,s) \ set S. s \ A; y \ A; (a,b) \ set S\ - \ b <=_r map snd [(p', t')\S. p' = a] ++_f y" + \ b <=_r map snd [(p', t')\S. p' = a] ++_f y" proof - let "b <=_r ?map ++_f y" = ?thesis @@ -175,7 +175,7 @@ lemma plusplus_empty: "\s'. (q, s') \ set S \ s' +_f ss ! q = ss ! q \ - (map snd [(p', t')\ S. p' = q] ++_f ss ! q) = ss ! q" + (map snd [(p', t') \ S. p' = q] ++_f ss ! q) = ss ! q" apply (induct S) apply auto done diff -r 4e61c67a87e3 -r e26ec695c9b3 src/HOL/ex/Qsort.thy --- a/src/HOL/ex/Qsort.thy Wed Jun 06 19:12:40 2007 +0200 +++ b/src/HOL/ex/Qsort.thy Wed Jun 06 19:12:59 2007 +0200 @@ -16,8 +16,8 @@ recdef qsort "measure (size o snd)" "qsort(le, []) = []" - "qsort(le, x#xs) = qsort(le, [y:xs . ~ le x y]) @ [x] @ - qsort(le, [y:xs . le x y])" + "qsort(le, x#xs) = qsort(le, [y\xs . ~ le x y]) @ [x] @ + qsort(le, [y\xs . le x y])" (hints recdef_simp: length_filter_le[THEN le_less_trans]) lemma qsort_permutes [simp]: @@ -43,7 +43,7 @@ recdef quickSort "measure size" "quickSort [] = []" - "quickSort (x#l) = quickSort [y:l. ~ x\y] @ [x] @ quickSort [y:l. x\y]" + "quickSort (x#l) = quickSort [y\l. ~ x\y] @ [x] @ quickSort [y\l. x\y]" (hints recdef_simp: length_filter_le[THEN le_less_trans]) lemma quickSort_permutes[simp]: