# HG changeset patch # User nipkow # Date 1187601498 -7200 # Node ID fff40259f3366b3c0fc76dab10bf56ce56b9e6bb # Parent 21b4350cf5ec3098e26f7961b6a40896387a4571 removed allpairs diff -r 21b4350cf5ec -r fff40259f336 src/HOL/Complex/ex/MIR.thy --- a/src/HOL/Complex/ex/MIR.thy Mon Aug 20 11:18:07 2007 +0200 +++ b/src/HOL/Complex/ex/MIR.thy Mon Aug 20 11:18:18 2007 +0200 @@ -11,11 +11,6 @@ declare real_of_int_floor_cancel [simp del] - (* All pairs from two lists *) - -lemma allpairs_set: "set (allpairs Pair xs ys) = {(x,y). x\ set xs \ y \ set ys}" -by (induct xs) auto - fun alluopairs:: "'a list \ ('a \ 'a) list" where "alluopairs [] = []" | "alluopairs (x#xs) = (map (Pair x) (x#xs))@(alluopairs xs)" @@ -3536,7 +3531,7 @@ recdef rsplit0 "measure num_size" "rsplit0 (Bound 0) = [(T,1,C 0)]" "rsplit0 (Add a b) = (let acs = rsplit0 a ; bcs = rsplit0 b - in map (\ ((p,n,t),(q,m,s)). (And p q, n+m, Add t s)) (allpairs Pair acs bcs))" + in map (\ ((p,n,t),(q,m,s)). (And p q, n+m, Add t s)) [(a,b). a\acs,b\bcs])" "rsplit0 (Sub a b) = rsplit0 (Add a (Neg b))" "rsplit0 (Neg a) = map (\ (p,n,s). (p,-n,Neg s)) (rsplit0 a)" "rsplit0 (Floor a) = foldl (op @) [] (map @@ -3692,8 +3687,8 @@ ultimately show ?ths by auto qed next - case (3 a b) thus ?case by auto -qed (auto simp add: Let_def allpairs_set split_def ring_simps conj_rl) + case (3 a b) thus ?case by auto +qed (auto simp add: Let_def split_def ring_simps conj_rl) lemma real_in_int_intervals: assumes xb: "real m \ x \ x < real ((n::int) + 1)" @@ -3710,8 +3705,8 @@ then obtain "pa" "na" "sa" where pa: "(pa,na,sa)\ ?SS a \ ?I pa" by blast from prems have "\ (pb,nb,sb) \ ?SS b. ?I pb" by auto then obtain "pb" "nb" "sb" where pb: "(pb,nb,sb)\ ?SS b \ ?I pb" by blast - from pa pb have th: "((pa,na,sa),(pb,nb,sb)) \ set (allpairs Pair (rsplit0 a) (rsplit0 b))" - by (auto simp add: allpairs_set) + from pa pb have th: "((pa,na,sa),(pb,nb,sb)) \ set[(x,y). x\rsplit0 a, y\rsplit0 b]" + by (auto) let ?f="(\ ((p,n,t),(q,m,s)). (And p q, n+m, Add t s))" from imageI[OF th, where f="?f"] have "?f ((pa,na,sa),(pb,nb,sb)) \ ?SS (Add a b)" by (simp add: Let_def) @@ -5415,7 +5410,7 @@ in if md = T then T else (let qd = evaldjf (\ t. simpfm (subst0 t q)) (remdups (map (\ (b,j). simpnum (Add b (C j))) - (allpairs Pair B js))) + [(b,j). b\B,j\js])) in decr (disj md qd)))" lemma cooper: assumes qf: "qfree p" shows "((\ (x::int). Ifm (real x#bs) p) = (Ifm bs (cooper p))) \ qfree (cooper p)" @@ -5431,8 +5426,8 @@ let ?smq = "simpfm ?mq" let ?md = "evaldjf (\ j. simpfm (subst0 (C j) ?smq)) ?js" let ?N = "\ t. Inum (real (i::int)#bs) t" - let ?bjs = "allpairs Pair ?B ?js" - let ?sbjs = "map (\ (b,j). simpnum (Add b (C j))) (allpairs Pair ?B ?js)" + let ?bjs = "[(b,j). b\?B,j\?js]" + let ?sbjs = "map (\ (b,j). simpnum (Add b (C j))) ?bjs" let ?qd = "evaldjf (\ t. simpfm (subst0 t ?q)) (remdups ?sbjs)" have qbf:"unit p = (?q,?B,?d)" by simp from unit[OF qf qbf] have pq_ex: "(\(x::int). ?I x p) = (\ (x::int). ?I x ?q)" and @@ -5448,10 +5443,10 @@ hence th: "\ j\ set ?js. bound0 (simpfm (subst0 (C j) ?smq))" by (auto simp add: simpfm_bound0) from evaldjf_bound0[OF th] have mdb: "bound0 ?md" by simp - from Bn jsnb have "\ (b,j) \ set (allpairs Pair ?B ?js). numbound0 (Add b (C j))" - by (simp add: allpairs_set) - hence "\ (b,j) \ set (allpairs Pair ?B ?js). numbound0 (simpnum (Add b (C j)))" - using simpnum_numbound0 by blast + from Bn jsnb have "\ (b,j) \ set ?bjs. numbound0 (Add b (C j))" + by simp + hence "\ (b,j) \ set ?bjs. numbound0 (simpnum (Add b (C j)))" + using simpnum_numbound0 by blast hence "\ t \ set ?sbjs. numbound0 t" by simp hence "\ t \ set (remdups ?sbjs). bound0 (subst0 t ?q)" using subst0_bound0[OF qfq] by auto @@ -5463,8 +5458,8 @@ from trans [OF pq_ex cp_thm'[OF lq uq dd dp]] B have "?lhs = (\ j\ {1.. ?d}. ?I j ?mq \ (\ b\ ?N ` set ?B. Ifm ((b+ real j)#bs) ?q))" by auto also have "\ = ((\ j\ set ?js. ?I j ?smq) \ (\ (b,j) \ (?N ` set ?B \ set ?js). Ifm ((b+ real j)#bs) ?q))" apply (simp only: iupt_set simpfm) by auto - also have "\= ((\ j\ set ?js. ?I j ?smq) \ (\ t \ (\ (b,j). ?N (Add b (C j))) ` set (allpairs Pair ?B ?js). Ifm (t #bs) ?q))" by (simp only: allpairs_set) simp - also have "\= ((\ j\ set ?js. ?I j ?smq) \ (\ t \ (\ (b,j). ?N (simpnum (Add b (C j)))) ` set (allpairs Pair ?B ?js). Ifm (t #bs) ?q))" by (simp only: simpnum_ci) + also have "\= ((\ j\ set ?js. ?I j ?smq) \ (\ t \ (\ (b,j). ?N (Add b (C j))) ` set ?bjs. Ifm (t #bs) ?q))" by simp + also have "\= ((\ j\ set ?js. ?I j ?smq) \ (\ t \ (\ (b,j). ?N (simpnum (Add b (C j)))) ` set ?bjs. Ifm (t #bs) ?q))" by (simp only: simpnum_ci) also have "\= ((\ j\ set ?js. ?I j ?smq) \ (\ t \ set ?sbjs. Ifm (?N t #bs) ?q))" by (auto simp add: split_def) also have "\ = ((\ j\ set ?js. (\ j. ?I i (simpfm (subst0 (C j) ?smq))) j) \ (\ t \ set (remdups ?sbjs). (\ t. ?I i (simpfm (subst0 t ?q))) t))" by (simp only: simpfm subst0_I[OF qfq] simpfm Inum.simps subst0_I[OF qfmq] set_remdups) diff -r 21b4350cf5ec -r fff40259f336 src/HOL/Complex/ex/ReflectedFerrack.thy --- a/src/HOL/Complex/ex/ReflectedFerrack.thy Mon Aug 20 11:18:07 2007 +0200 +++ b/src/HOL/Complex/ex/ReflectedFerrack.thy Mon Aug 20 11:18:18 2007 +0200 @@ -1766,13 +1766,6 @@ ultimately show "?E" by blast qed -consts allpairs:: "'a list \ 'b list \ ('a \ 'b) list" -primrec - "allpairs [] ys = []" - "allpairs (x#xs) ys = (map (Pair x) ys)@(allpairs xs ys)" - -lemma allpairs_set: "set (allpairs xs ys) = {(x,y). x\ set xs \ y \ set ys}" -by (induct xs) auto (* Implement the right hand side of Ferrante and Rackoff's Theorem. *) constdefs ferrack:: "fm \ fm" diff -r 21b4350cf5ec -r fff40259f336 src/HOL/ex/Reflected_Presburger.thy --- a/src/HOL/ex/Reflected_Presburger.thy Mon Aug 20 11:18:07 2007 +0200 +++ b/src/HOL/ex/Reflected_Presburger.thy Mon Aug 20 11:18:18 2007 +0200 @@ -1850,7 +1850,7 @@ md = evaldjf (\ j. simpfm (subst0 (C j) mq)) js in if md = T then T else (let qd = evaldjf (\ (b,j). simpfm (subst0 (Add b (C j)) q)) - (allpairs Pair B js) + [(b,j). b\B,j\js] in decr (disj md qd)))" lemma cooper: assumes qf: "qfree p" shows "((\ x. Ifm bbs (x#bs) p) = (Ifm bbs bs (cooper p))) \ qfree (cooper p)" @@ -1866,7 +1866,8 @@ let ?smq = "simpfm ?mq" let ?md = "evaldjf (\ j. simpfm (subst0 (C j) ?smq)) ?js" let ?N = "\ t. Inum (i#bs) t" - let ?qd = "evaldjf (\ (b,j). simpfm (subst0 (Add b (C j)) ?q)) (allpairs Pair ?B ?js)" + let ?Bjs = "[(b,j). b\?B,j\?js]" + let ?qd = "evaldjf (\ (b,j). simpfm (subst0 (Add b (C j)) ?q)) ?Bjs" have qbf:"unit p = (?q,?B,?d)" by simp from unit[OF qf qbf] have pq_ex: "(\(x::int). ?I x p) = (\ (x::int). ?I x ?q)" and B:"?N ` set ?B = ?N ` set (\ ?q)" and @@ -1881,13 +1882,13 @@ hence th: "\ j\ set ?js. bound0 (simpfm (subst0 (C j) ?smq))" by (auto simp add: simpfm_bound0) from evaldjf_bound0[OF th] have mdb: "bound0 ?md" by simp - from Bn jsnb have "\ (b,j) \ set (allpairs Pair ?B ?js). numbound0 (Add b (C j))" + from Bn jsnb have "\ (b,j) \ set ?Bjs. numbound0 (Add b (C j))" by simp - hence "\ (b,j) \ set (allpairs Pair ?B ?js). bound0 (subst0 (Add b (C j)) ?q)" + hence "\ (b,j) \ set ?Bjs. bound0 (subst0 (Add b (C j)) ?q)" using subst0_bound0[OF qfq] by blast - hence "\ (b,j) \ set (allpairs Pair ?B ?js). bound0 (simpfm (subst0 (Add b (C j)) ?q))" + hence "\ (b,j) \ set ?Bjs. bound0 (simpfm (subst0 (Add b (C j)) ?q))" using simpfm_bound0 by blast - hence th': "\ x \ set (allpairs Pair ?B ?js). bound0 ((\ (b,j). simpfm (subst0 (Add b (C j)) ?q)) x)" + hence th': "\ x \ set ?Bjs. bound0 ((\ (b,j). simpfm (subst0 (Add b (C j)) ?q)) x)" by auto from evaldjf_bound0 [OF th'] have qdb: "bound0 ?qd" by simp from mdb qdb @@ -1901,10 +1902,10 @@ by (simp only: simpfm subst0_I[OF qfmq] iupt_set) auto also have "\ = (?I i (evaldjf (\ j. simpfm (subst0 (C j) ?smq)) ?js) \ (\ j\ set ?js. \ b\ set ?B. ?I i (subst0 (Add b (C j)) ?q)))" by (simp only: evaldjf_ex subst0_I[OF qfq]) - also have "\= (?I i ?md \ (\ (b,j) \ set (allpairs Pair ?B ?js). (\ (b,j). ?I i (simpfm (subst0 (Add b (C j)) ?q))) (b,j)))" - by (simp only: simpfm set_allpairs) blast - also have "\ = (?I i ?md \ (?I i (evaldjf (\ (b,j). simpfm (subst0 (Add b (C j)) ?q)) (allpairs Pair ?B ?js))))" - by (simp only: evaldjf_ex[where bs="i#bs" and f="\ (b,j). simpfm (subst0 (Add b (C j)) ?q)" and ps="allpairs Pair ?B ?js"]) (auto simp add: split_def) + also have "\= (?I i ?md \ (\ (b,j) \ set ?Bjs. (\ (b,j). ?I i (simpfm (subst0 (Add b (C j)) ?q))) (b,j)))" + by (simp only: simpfm set_concat set_map UN_simps) blast + also have "\ = (?I i ?md \ (?I i (evaldjf (\ (b,j). simpfm (subst0 (Add b (C j)) ?q)) ?Bjs)))" + by (simp only: evaldjf_ex[where bs="i#bs" and f="\ (b,j). simpfm (subst0 (Add b (C j)) ?q)" and ps="?Bjs"]) (auto simp add: split_def) finally have mdqd: "?lhs = (?I i ?md \ ?I i ?qd)" by simp also have "\ = (?I i (disj ?md ?qd))" by (simp add: disj) also have "\ = (Ifm bbs bs (decr (disj ?md ?qd)))" by (simp only: decr [OF mdqdb])