1.1 --- a/src/HOL/Algebra/Divisibility.thy Sun Sep 11 22:56:05 2011 +0200
1.2 +++ b/src/HOL/Algebra/Divisibility.thy Mon Sep 12 07:55:43 2011 +0200
1.3 @@ -650,7 +650,7 @@
1.4 finally have linv: "\<one> = c \<otimes> b" .
1.5
1.6 from ccarr linv[symmetric] rinv[symmetric]
1.7 - have "b \<in> Units G" unfolding Units_def by fastsimp
1.8 + have "b \<in> Units G" unfolding Units_def by fastforce
1.9 with nunit
1.10 show "False" ..
1.11 qed
1.12 @@ -710,8 +710,8 @@
1.13 fixes G (structure)
1.14 shows "properfactor G = lless (division_rel G)"
1.15 apply (rule ext) apply (rule ext) apply rule
1.16 - apply (fastsimp elim: properfactorE2 intro: weak_llessI)
1.17 -apply (fastsimp elim: weak_llessE intro: properfactorI2)
1.18 + apply (fastforce elim: properfactorE2 intro: weak_llessI)
1.19 +apply (fastforce elim: weak_llessE intro: properfactorI2)
1.20 done
1.21
1.22 lemma (in monoid) properfactor_cong_l [trans]:
1.23 @@ -751,26 +751,26 @@
1.24 and carr: "a \<in> carrier G" "b \<in> carrier G" "c \<in> carrier G"
1.25 shows "properfactor G (c \<otimes> a) (c \<otimes> b)"
1.26 using ab carr
1.27 -by (fastsimp elim: properfactorE intro: properfactorI)
1.28 +by (fastforce elim: properfactorE intro: properfactorI)
1.29
1.30 lemma (in monoid_cancel) properfactor_mult_l [simp]:
1.31 assumes carr: "a \<in> carrier G" "b \<in> carrier G" "c \<in> carrier G"
1.32 shows "properfactor G (c \<otimes> a) (c \<otimes> b) = properfactor G a b"
1.33 using carr
1.34 -by (fastsimp elim: properfactorE intro: properfactorI)
1.35 +by (fastforce elim: properfactorE intro: properfactorI)
1.36
1.37 lemma (in comm_monoid_cancel) properfactor_mult_rI [intro]:
1.38 assumes ab: "properfactor G a b"
1.39 and carr: "a \<in> carrier G" "b \<in> carrier G" "c \<in> carrier G"
1.40 shows "properfactor G (a \<otimes> c) (b \<otimes> c)"
1.41 using ab carr
1.42 -by (fastsimp elim: properfactorE intro: properfactorI)
1.43 +by (fastforce elim: properfactorE intro: properfactorI)
1.44
1.45 lemma (in comm_monoid_cancel) properfactor_mult_r [simp]:
1.46 assumes carr: "a \<in> carrier G" "b \<in> carrier G" "c \<in> carrier G"
1.47 shows "properfactor G (a \<otimes> c) (b \<otimes> c) = properfactor G a b"
1.48 using carr
1.49 -by (fastsimp elim: properfactorE intro: properfactorI)
1.50 +by (fastforce elim: properfactorE intro: properfactorI)
1.51
1.52 lemma (in monoid) properfactor_prod_r:
1.53 assumes ab: "properfactor G a b"
1.54 @@ -1811,7 +1811,7 @@
1.55 assumes "x \<in> carrier G"
1.56 shows "x \<in> assocs G x"
1.57 using assms
1.58 -by (fastsimp intro: closure_ofI2)
1.59 +by (fastforce intro: closure_ofI2)
1.60
1.61 lemma (in monoid) assocs_repr_independenceD:
1.62 assumes repr: "assocs G x = assocs G y"
1.63 @@ -2007,7 +2007,7 @@
1.64
1.65 from tm as'carr[THEN subsetD] bscarr[THEN subsetD]
1.66 have "as' [\<sim>] bs"
1.67 - by (induct as' arbitrary: bs) (simp, fastsimp dest: assocs_eqD[THEN associated_sym])
1.68 + by (induct as' arbitrary: bs) (simp, fastforce dest: assocs_eqD[THEN associated_sym])
1.69
1.70 from tp and this
1.71 show "essentially_equal G as bs" by (fast intro: essentially_equalI)
1.72 @@ -3451,7 +3451,7 @@
1.73 by (intro ih[of a']) simp
1.74
1.75 hence ee1: "essentially_equal G (ah # as) (ah # take i as' @ drop (Suc i) as')"
1.76 - apply (elim essentially_equalE) apply (fastsimp intro: essentially_equalI)
1.77 + apply (elim essentially_equalE) apply (fastforce intro: essentially_equalI)
1.78 done
1.79
1.80 from carr
2.1 --- a/src/HOL/Algebra/FiniteProduct.thy Sun Sep 11 22:56:05 2011 +0200
2.2 +++ b/src/HOL/Algebra/FiniteProduct.thy Mon Sep 12 07:55:43 2011 +0200
2.3 @@ -171,7 +171,7 @@
2.4 (EX y. (A, y) \<in> foldSetD D f e & v = f x y)"
2.5 apply auto
2.6 apply (rule_tac A1 = A in finite_imp_foldSetD [THEN exE])
2.7 - apply (fastsimp dest: foldSetD_imp_finite)
2.8 + apply (fastforce dest: foldSetD_imp_finite)
2.9 apply assumption
2.10 apply assumption
2.11 apply (blast intro: foldSetD_determ)
2.12 @@ -328,7 +328,7 @@
2.13 apply fast
2.14 apply fast
2.15 apply assumption
2.16 - apply (fastsimp intro: m_closed)
2.17 + apply (fastforce intro: m_closed)
2.18 apply simp+
2.19 apply fast
2.20 apply (auto simp add: finprod_def)
2.21 @@ -431,13 +431,13 @@
2.22 next
2.23 assume "x ~: B" "!!i. i \<in> insert x B \<Longrightarrow> f i = g i"
2.24 "g \<in> insert x B \<rightarrow> carrier G"
2.25 - thus "f \<in> B -> carrier G" by fastsimp
2.26 + thus "f \<in> B -> carrier G" by fastforce
2.27 next
2.28 assume "x ~: B" "!!i. i \<in> insert x B \<Longrightarrow> f i = g i"
2.29 "g \<in> insert x B \<rightarrow> carrier G"
2.30 - thus "f x \<in> carrier G" by fastsimp
2.31 + thus "f x \<in> carrier G" by fastforce
2.32 qed
2.33 - also from insert have "... = g x \<otimes> finprod G g B" by fastsimp
2.34 + also from insert have "... = g x \<otimes> finprod G g B" by fastforce
2.35 also from insert have "... = finprod G g (insert x B)"
2.36 by (intro finprod_insert [THEN sym]) auto
2.37 finally show ?case .
3.1 --- a/src/HOL/Algebra/Group.thy Sun Sep 11 22:56:05 2011 +0200
3.2 +++ b/src/HOL/Algebra/Group.thy Mon Sep 12 07:55:43 2011 +0200
3.3 @@ -549,7 +549,7 @@
3.4
3.5 lemma (in group) hom_compose:
3.6 "[|h \<in> hom G H; i \<in> hom H I|] ==> compose (carrier G) i h \<in> hom G I"
3.7 -by (fastsimp simp add: hom_def compose_def)
3.8 +by (fastforce simp add: hom_def compose_def)
3.9
3.10 definition
3.11 iso :: "_ => _ => ('a => 'b) set" (infixr "\<cong>" 60)
3.12 @@ -781,7 +781,7 @@
3.13 fix A
3.14 assume L: "A \<subseteq> carrier ?L" and non_empty: "A ~= {}"
3.15 then have Int_subgroup: "subgroup (\<Inter>A) G"
3.16 - by (fastsimp intro: subgroups_Inter)
3.17 + by (fastforce intro: subgroups_Inter)
3.18 show "\<exists>I. greatest ?L I (Lower ?L A)"
3.19 proof
3.20 show "greatest ?L (\<Inter>A) (Lower ?L A)"
3.21 @@ -794,13 +794,13 @@
3.22 by (rule subgroup_imp_group)
3.23 from groupH have monoidH: "monoid ?H"
3.24 by (rule group.is_monoid)
3.25 - from H have Int_subset: "?Int \<subseteq> H" by fastsimp
3.26 + from H have Int_subset: "?Int \<subseteq> H" by fastforce
3.27 then show "le ?L ?Int H" by simp
3.28 next
3.29 fix H
3.30 assume H: "H \<in> Lower ?L A"
3.31 with L Int_subgroup show "le ?L H ?Int"
3.32 - by (fastsimp simp: Lower_def intro: Inter_greatest)
3.33 + by (fastforce simp: Lower_def intro: Inter_greatest)
3.34 next
3.35 show "A \<subseteq> carrier ?L" by (rule L)
3.36 next
4.1 --- a/src/HOL/Algebra/Lattice.thy Sun Sep 11 22:56:05 2011 +0200
4.2 +++ b/src/HOL/Algebra/Lattice.thy Mon Sep 12 07:55:43 2011 +0200
4.3 @@ -644,7 +644,7 @@
4.4 show "x \<squnion> (y \<squnion> z) .= s"
4.5 proof (rule weak_le_antisym)
4.6 from sup L show "x \<squnion> (y \<squnion> z) \<sqsubseteq> s"
4.7 - by (fastsimp intro!: join_le elim: least_Upper_above)
4.8 + by (fastforce intro!: join_le elim: least_Upper_above)
4.9 next
4.10 from sup L show "s \<sqsubseteq> x \<squnion> (y \<squnion> z)"
4.11 by (erule_tac least_le)
4.12 @@ -885,7 +885,7 @@
4.13 show "x \<sqinter> (y \<sqinter> z) .= i"
4.14 proof (rule weak_le_antisym)
4.15 from inf L show "i \<sqsubseteq> x \<sqinter> (y \<sqinter> z)"
4.16 - by (fastsimp intro!: meet_le elim: greatest_Lower_below)
4.17 + by (fastforce intro!: meet_le elim: greatest_Lower_below)
4.18 next
4.19 from inf L show "x \<sqinter> (y \<sqinter> z) \<sqsubseteq> i"
4.20 by (erule_tac greatest_le)
4.21 @@ -1289,7 +1289,7 @@
4.22 show "EX s. least ?L s (Upper ?L B)"
4.23 proof
4.24 from B show "least ?L (\<Union> B) (Upper ?L B)"
4.25 - by (fastsimp intro!: least_UpperI simp: Upper_def)
4.26 + by (fastforce intro!: least_UpperI simp: Upper_def)
4.27 qed
4.28 next
4.29 fix B
4.30 @@ -1299,7 +1299,7 @@
4.31 from B show "greatest ?L (\<Inter> B \<inter> A) (Lower ?L B)"
4.32 txt {* @{term "\<Inter> B"} is not the infimum of @{term B}:
4.33 @{term "\<Inter> {} = UNIV"} which is in general bigger than @{term "A"}! *}
4.34 - by (fastsimp intro!: greatest_LowerI simp: Lower_def)
4.35 + by (fastforce intro!: greatest_LowerI simp: Lower_def)
4.36 qed
4.37 qed
4.38
5.1 --- a/src/HOL/Algebra/UnivPoly.thy Sun Sep 11 22:56:05 2011 +0200
5.2 +++ b/src/HOL/Algebra/UnivPoly.thy Mon Sep 12 07:55:43 2011 +0200
5.3 @@ -105,7 +105,7 @@
5.4 proof
5.5 fix i
5.6 assume "max n m < i"
5.7 - with boundn and boundm and UP show "p i \<oplus> q i = \<zero>" by fastsimp
5.8 + with boundn and boundm and UP show "p i \<oplus> q i = \<zero>" by fastforce
5.9 qed
5.10 then show ?thesis ..
5.11 qed
5.12 @@ -780,7 +780,7 @@
5.13 then have "EX m. deg R p <= m & coeff P p m ~= \<zero>" by (simp add: deg minus)
5.14 then show ?thesis by (auto intro: that)
5.15 qed
5.16 - with deg_belowI R have "deg R p = m" by fastsimp
5.17 + with deg_belowI R have "deg R p = m" by fastforce
5.18 with m_coeff show ?thesis by simp
5.19 qed
5.20
5.21 @@ -827,7 +827,7 @@
5.22
5.23 lemma deg_monom [simp]:
5.24 "[| a ~= \<zero>; a \<in> carrier R |] ==> deg R (monom P a n) = n"
5.25 - by (fastsimp intro: le_antisym deg_aboveI deg_belowI)
5.26 + by (fastforce intro: le_antisym deg_aboveI deg_belowI)
5.27
5.28 lemma deg_const [simp]:
5.29 assumes R: "a \<in> carrier R" shows "deg R (monom P a 0) = 0"
5.30 @@ -1061,7 +1061,7 @@
5.31 finally have "coeff P p 0 \<otimes> coeff P q 0 = \<zero>" .
5.32 with R have "coeff P p 0 = \<zero> | coeff P q 0 = \<zero>"
5.33 by (simp add: R.integral_iff)
5.34 - with p q show "p = \<zero>\<^bsub>P\<^esub> | q = \<zero>\<^bsub>P\<^esub>" by fastsimp
5.35 + with p q show "p = \<zero>\<^bsub>P\<^esub> | q = \<zero>\<^bsub>P\<^esub>" by fastforce
5.36 qed
5.37 qed
5.38
6.1 --- a/src/HOL/Algebra/poly/UnivPoly2.thy Sun Sep 11 22:56:05 2011 +0200
6.2 +++ b/src/HOL/Algebra/poly/UnivPoly2.thy Mon Sep 12 07:55:43 2011 +0200
6.3 @@ -209,7 +209,7 @@
6.4 fix i
6.5 assume "max n m < i"
6.6 with boundn and boundm show "f i + g i = 0"
6.7 - by (fastsimp simp add: algebra_simps)
6.8 + by (fastforce simp add: algebra_simps)
6.9 qed
6.10 then show "(%i. (f i + g i)) : UP"
6.11 by (unfold UP_def) fast
6.12 @@ -516,7 +516,7 @@
6.13 then have "EX m. deg p <= m & coeff p m ~= 0" by (simp add: deg minus)
6.14 then show ?thesis by (auto intro: that)
6.15 qed
6.16 - with deg_belowI have "deg p = m" by fastsimp
6.17 + with deg_belowI have "deg p = m" by fastforce
6.18 with m_coeff show ?thesis by simp
6.19 qed
6.20
6.21 @@ -564,7 +564,7 @@
6.22
6.23 lemma deg_monom [simp]:
6.24 "a ~= 0 ==> deg (monom a n::'a::ring up) = n"
6.25 -by (fastsimp intro: le_antisym deg_aboveI deg_belowI)
6.26 +by (fastforce intro: le_antisym deg_aboveI deg_belowI)
6.27
6.28 lemma deg_const [simp]:
6.29 "deg (monom (a::'a::ring) 0) = 0"
6.30 @@ -769,7 +769,7 @@
6.31 also from pq have "... = 0" by simp
6.32 finally have "coeff p 0 * coeff q 0 = 0" .
6.33 then have "coeff p 0 = 0 | coeff q 0 = 0" by (simp only: integral_iff)
6.34 - with p q show "p = 0 | q = 0" by fastsimp
6.35 + with p q show "p = 0 | q = 0" by fastforce
6.36 qed
6.37 qed
6.38
7.1 --- a/src/HOL/Auth/Guard/Extensions.thy Sun Sep 11 22:56:05 2011 +0200
7.2 +++ b/src/HOL/Auth/Guard/Extensions.thy Mon Sep 12 07:55:43 2011 +0200
7.3 @@ -198,7 +198,7 @@
7.4
7.5 lemma parts_invKey [rule_format,dest]:"X:parts {Y} ==>
7.6 X:analz (insert (Crypt K Y) H) --> X ~:analz H --> Key (invKey K):analz H"
7.7 -by (erule parts.induct, (fastsimp dest: parts.Fst parts.Snd parts.Body)+)
7.8 +by (erule parts.induct, (fastforce dest: parts.Fst parts.Snd parts.Body)+)
7.9
7.10 lemma in_analz: "Y:analz H ==> EX X. X:H & Y:parts {X}"
7.11 by (erule analz.induct, auto intro: parts.Fst parts.Snd parts.Body)
8.1 --- a/src/HOL/Auth/Kerberos_BAN_Gets.thy Sun Sep 11 22:56:05 2011 +0200
8.2 +++ b/src/HOL/Auth/Kerberos_BAN_Gets.thy Mon Sep 12 07:55:43 2011 +0200
8.3 @@ -288,7 +288,7 @@
8.4 apply (blast dest: used_evs_rev [THEN equalityD2, THEN contra_subsetD]
8.5 used_takeWhile_used)
8.6 txt{*subcase: CT before*}
8.7 -apply (fastsimp dest!: set_evs_rev [THEN equalityD2, THEN contra_subsetD, THEN takeWhile_void])
8.8 +apply (fastforce dest!: set_evs_rev [THEN equalityD2, THEN contra_subsetD, THEN takeWhile_void])
8.9 done
8.10
8.11
9.1 --- a/src/HOL/Auth/OtwayReesBella.thy Sun Sep 11 22:56:05 2011 +0200
9.2 +++ b/src/HOL/Auth/OtwayReesBella.thy Mon Sep 12 07:55:43 2011 +0200
9.3 @@ -277,7 +277,7 @@
9.4 apply disentangle
9.5 apply (drule_tac [5] Gets_imp_knows_Spy [THEN analz.Inj, THEN analz.Snd, THEN analz.Snd, THEN analz.Snd])
9.6 prefer 8 apply clarify
9.7 -apply (analz_freshCryptK, spy_analz, fastsimp)
9.8 +apply (analz_freshCryptK, spy_analz, fastforce)
9.9 done
9.10
9.11
9.12 @@ -365,7 +365,7 @@
9.13 apply (drule Gets_imp_knows_Spy [THEN analz.Inj, THEN analz.Snd], assumption)
9.14 apply (drule analz_hard, assumption, assumption, assumption, assumption)
9.15 apply (drule OR4_imp_Gets, assumption, assumption)
9.16 -apply (fastsimp dest!: Gets_imp_knows [THEN analz.Inj] analz.Decrypt)
9.17 +apply (fastforce dest!: Gets_imp_knows [THEN analz.Inj] analz.Decrypt)
9.18 done
9.19
9.20
10.1 --- a/src/HOL/Auth/Smartcard/ShoupRubin.thy Sun Sep 11 22:56:05 2011 +0200
10.2 +++ b/src/HOL/Auth/Smartcard/ShoupRubin.thy Mon Sep 12 07:55:43 2011 +0200
10.3 @@ -605,7 +605,7 @@
10.4 \<in> set evs;
10.5 evs \<in> sr \<rbrakk> \<Longrightarrow> A=A'"
10.6 apply (erule rev_mp, erule rev_mp, erule sr.induct, simp_all)
10.7 -apply (fastsimp dest: Outpts_parts_used)
10.8 +apply (fastforce dest: Outpts_parts_used)
10.9 apply blast
10.10 done
10.11
10.12 @@ -615,7 +615,7 @@
10.13 Outpts (Card B') B' \<lbrace>Nonce Nb, Key SK', Cert1', Cert2'\<rbrace> \<in> set evs;
10.14 evs \<in> sr \<rbrakk> \<Longrightarrow> B=B' \<and> SK=SK' \<and> Cert1=Cert1' \<and> Cert2=Cert2'"
10.15 apply (erule rev_mp, erule rev_mp, erule sr.induct, simp_all)
10.16 -apply (fastsimp dest: Outpts_parts_used)
10.17 +apply (fastforce dest: Outpts_parts_used)
10.18 apply blast
10.19 done
10.20
10.21 @@ -626,7 +626,7 @@
10.22 Outpts (Card B') B' \<lbrace>Nonce Nb', Key SK, Cert1', Cert2'\<rbrace> \<in> set evs;
10.23 evs \<in> sr \<rbrakk> \<Longrightarrow> B=B' \<and> Nb=Nb' \<and> Cert1=Cert1' \<and> Cert2=Cert2'"
10.24 apply (erule rev_mp, erule rev_mp, erule sr.induct, simp_all)
10.25 -apply (fastsimp dest: Outpts_parts_used)
10.26 +apply (fastforce dest: Outpts_parts_used)
10.27 apply blast
10.28 done
10.29
10.30 @@ -644,9 +644,9 @@
10.31 "\<lbrakk> Outpts (Card A) A \<lbrace>Nonce Na, rest\<rbrace> \<in> set evs; evs \<in> sr \<rbrakk>
10.32 \<Longrightarrow> Unique (Outpts (Card A) A \<lbrace>Nonce Na, rest\<rbrace>) on evs"
10.33 apply (erule rev_mp, erule sr.induct, simp_all add: Unique_def)
10.34 -apply (fastsimp dest: Outpts_parts_used)
10.35 +apply (fastforce dest: Outpts_parts_used)
10.36 apply blast
10.37 -apply (fastsimp dest: Outpts_parts_used)
10.38 +apply (fastforce dest: Outpts_parts_used)
10.39 apply blast
10.40 done
10.41
10.42 @@ -699,7 +699,7 @@
10.43 evs \<in> sr \<rbrakk>
10.44 \<Longrightarrow> Nonce (Pairkey(A,B)) \<in> analz (knows Spy evs)"
10.45 apply (case_tac "A = Spy")
10.46 -apply (fastsimp dest!: Inputs_imp_knows_Spy_secureM [THEN analz.Inj])
10.47 +apply (fastforce dest!: Inputs_imp_knows_Spy_secureM [THEN analz.Inj])
10.48 apply (blast dest!: Pairkey_Inputs_imp_Gets [THEN Pairkey_Gets_analz_knows_Spy])
10.49 done
10.50
10.51 @@ -977,7 +977,7 @@
10.52 (*fake*)
10.53 apply spy_analz
10.54 (*forge*)
10.55 -apply (fastsimp dest: analz.Inj)
10.56 +apply (fastforce dest: analz.Inj)
10.57 (*SR7: used B\<noteq>Spy*)
10.58 (*SR7F*)
10.59 apply clarify
10.60 @@ -1028,7 +1028,7 @@
10.61 (*Forge*)
10.62 apply (rotate_tac 7)
10.63 apply (drule parts.Inj)
10.64 -apply (fastsimp dest: Outpts_B_Card_form_7)
10.65 +apply (fastforce dest: Outpts_B_Card_form_7)
10.66 (*SR7*)
10.67 apply (blast dest!: Outpts_B_Card_form_7)
10.68 (*SR7F*)
10.69 @@ -1036,10 +1036,10 @@
10.70 apply (drule Outpts_parts_used)
10.71 apply simp
10.72 (*faster than
10.73 - apply (fastsimp dest: Outpts_parts_used)
10.74 + apply (fastforce dest: Outpts_parts_used)
10.75 *)
10.76 (*SR10*)
10.77 -apply (fastsimp dest: Outpts_B_Card_form_7)
10.78 +apply (fastforce dest: Outpts_B_Card_form_7)
10.79 (*SR10F - uses assumption Card A not cloned*)
10.80 apply clarify
10.81 apply (drule Outpts_B_Card_form_7, assumption)
10.82 @@ -1346,7 +1346,7 @@
10.83 Outpts (Card B) B \<lbrace>Nonce Nb, Key K, Certificate, Cert2\<rbrace> \<in> set evs"
10.84 apply (erule rev_mp)
10.85 apply (erule sr.induct)
10.86 -prefer 18 apply (fastsimp dest: Outpts_A_Card_form_10)
10.87 +prefer 18 apply (fastforce dest: Outpts_A_Card_form_10)
10.88 apply auto
10.89 done
10.90
11.1 --- a/src/HOL/Auth/Smartcard/ShoupRubinBella.thy Sun Sep 11 22:56:05 2011 +0200
11.2 +++ b/src/HOL/Auth/Smartcard/ShoupRubinBella.thy Mon Sep 12 07:55:43 2011 +0200
11.3 @@ -614,7 +614,7 @@
11.4 \<in> set evs;
11.5 evs \<in> srb \<rbrakk> \<Longrightarrow> A=A'"
11.6 apply (erule rev_mp, erule rev_mp, erule srb.induct, simp_all)
11.7 -apply (fastsimp dest: Outpts_parts_used)
11.8 +apply (fastforce dest: Outpts_parts_used)
11.9 apply blast
11.10 done
11.11
11.12 @@ -624,7 +624,7 @@
11.13 Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs;
11.14 evs \<in> srb \<rbrakk> \<Longrightarrow> B=B' \<and> A=A' \<and> SK=SK' \<and> Cert1=Cert1' \<and> Cert2=Cert2'"
11.15 apply (erule rev_mp, erule rev_mp, erule srb.induct, simp_all)
11.16 -apply (fastsimp dest: Outpts_parts_used)
11.17 +apply (fastforce dest: Outpts_parts_used)
11.18 apply blast
11.19 done
11.20
11.21 @@ -635,7 +635,7 @@
11.22 Outpts (Card B') B' \<lbrace>Nonce Nb', Agent A', Key SK, Cert1', Cert2'\<rbrace> \<in> set evs;
11.23 evs \<in> srb \<rbrakk> \<Longrightarrow> B=B' \<and> A=A' \<and> Nb=Nb' \<and> Cert1=Cert1' \<and> Cert2=Cert2'"
11.24 apply (erule rev_mp, erule rev_mp, erule srb.induct, simp_all)
11.25 -apply (fastsimp dest: Outpts_parts_used)
11.26 +apply (fastforce dest: Outpts_parts_used)
11.27 apply blast
11.28 done
11.29
11.30 @@ -654,9 +654,9 @@
11.31 "\<lbrakk> Outpts (Card A) A \<lbrace>Nonce Na, rest\<rbrace> \<in> set evs; evs \<in> srb \<rbrakk>
11.32 \<Longrightarrow> Unique (Outpts (Card A) A \<lbrace>Nonce Na, rest\<rbrace>) on evs"
11.33 apply (erule rev_mp, erule srb.induct, simp_all add: Unique_def)
11.34 -apply (fastsimp dest: Outpts_parts_used)
11.35 +apply (fastforce dest: Outpts_parts_used)
11.36 apply blast
11.37 -apply (fastsimp dest: Outpts_parts_used)
11.38 +apply (fastforce dest: Outpts_parts_used)
11.39 apply blast
11.40 done
11.41
11.42 @@ -709,7 +709,7 @@
11.43 evs \<in> srb \<rbrakk>
11.44 \<Longrightarrow> Nonce (Pairkey(A,B)) \<in> analz (knows Spy evs)"
11.45 apply (case_tac "A = Spy")
11.46 -apply (fastsimp dest!: Inputs_imp_knows_Spy_secureM [THEN analz.Inj])
11.47 +apply (fastforce dest!: Inputs_imp_knows_Spy_secureM [THEN analz.Inj])
11.48 apply (blast dest!: Pairkey_Inputs_imp_Gets [THEN Pairkey_Gets_analz_knows_Spy])
11.49 done
11.50
11.51 @@ -978,7 +978,7 @@
11.52 (*fake*)
11.53 apply spy_analz
11.54 (*forge*)
11.55 -apply (fastsimp dest: analz.Inj)
11.56 +apply (fastforce dest: analz.Inj)
11.57 (*SR_U7: used B\<noteq>Spy*)
11.58 (*SR_U7F*)
11.59 apply clarify
11.60 @@ -1018,7 +1018,7 @@
11.61 (*Forge*)
11.62 apply (rotate_tac 7)
11.63 apply (drule parts.Inj)
11.64 -apply (fastsimp dest: Outpts_B_Card_form_7)
11.65 +apply (fastforce dest: Outpts_B_Card_form_7)
11.66 (*SR_U7*)
11.67 apply (blast dest!: Outpts_B_Card_form_7)
11.68 (*SR_U7F*)
11.69 @@ -1026,10 +1026,10 @@
11.70 apply (drule Outpts_parts_used)
11.71 apply simp
11.72 (*faster than
11.73 - apply (fastsimp dest: Outpts_parts_used)
11.74 + apply (fastforce dest: Outpts_parts_used)
11.75 *)
11.76 (*SR_U10*)
11.77 -apply (fastsimp dest: Outpts_B_Card_form_7)
11.78 +apply (fastforce dest: Outpts_B_Card_form_7)
11.79 (*SR_U10F - uses assumption Card A not cloned*)
11.80 apply clarify
11.81 apply (drule Outpts_B_Card_form_7, assumption)
11.82 @@ -1345,7 +1345,7 @@
11.83 Outpts (Card B) B \<lbrace>Nonce Nb, Agent A, Key K, Certificate, Cert2\<rbrace> \<in> set evs"
11.84 apply (erule rev_mp)
11.85 apply (erule srb.induct)
11.86 -prefer 18 apply (fastsimp dest: Outpts_A_Card_form_10)
11.87 +prefer 18 apply (fastforce dest: Outpts_A_Card_form_10)
11.88 apply auto
11.89 done
11.90
12.1 --- a/src/HOL/Bali/AxCompl.thy Sun Sep 11 22:56:05 2011 +0200
12.2 +++ b/src/HOL/Bali/AxCompl.thy Mon Sep 12 07:55:43 2011 +0200
12.3 @@ -303,14 +303,14 @@
12.4 (is "G,A\<turnstile>{Normal ?P} .Init C. {?R}")
12.5 proof (rule ax_cases [where ?C="initd C"])
12.6 show "G,A\<turnstile>{Normal ?P \<and>. initd C} .Init C. {?R}"
12.7 - by (rule ax_derivs.Done [THEN conseq1]) (fastsimp intro: init_done)
12.8 + by (rule ax_derivs.Done [THEN conseq1]) (fastforce intro: init_done)
12.9 next
12.10 have "G,A\<turnstile>{Normal (?P \<and>. Not \<circ> initd C)} .Init C. {?R}"
12.11 proof (cases n)
12.12 case 0
12.13 with is_cls
12.14 show ?thesis
12.15 - by - (rule ax_impossible [THEN conseq1],fastsimp dest: nyinitcls_emptyD)
12.16 + by - (rule ax_impossible [THEN conseq1],fastforce dest: nyinitcls_emptyD)
12.17 next
12.18 case (Suc m)
12.19 with mgf_hyp have mgf_hyp': "\<And> t. G,A\<turnstile>{=:m} t\<succ> {G\<rightarrow>}"
12.20 @@ -342,7 +342,7 @@
12.21 case False
12.22 from mgf_hyp'
12.23 have "G,A\<turnstile>{?P'} .Init (super c). {?Q}"
12.24 - by (rule MGFnD' [THEN conseq12]) (fastsimp simp add: False c)
12.25 + by (rule MGFnD' [THEN conseq12]) (fastforce simp add: False c)
12.26 with False show ?thesis
12.27 by simp
12.28 qed
12.29 @@ -350,7 +350,7 @@
12.30 from Suc is_cls
12.31 show "Normal (?P \<and>. Not \<circ> initd C ;. supd (init_class_obj G C))
12.32 \<Rightarrow> ?P'"
12.33 - by (fastsimp elim: nyinitcls_le_SucD)
12.34 + by (fastforce elim: nyinitcls_le_SucD)
12.35 qed
12.36 next
12.37 from mgf_hyp'
12.38 @@ -390,7 +390,7 @@
12.39 mode: "mode = invmode statM e" and
12.40 T: "T =Inl (resTy statM)" and
12.41 eq_accC_accC': "accC=accC'"
12.42 - by cases fastsimp+
12.43 + by cases fastforce+
12.44 let ?Q="(\<lambda>Y s1 (x,s) . x = None \<and>
12.45 (\<exists>a. G\<turnstile>Norm s \<midarrow>e-\<succ>a\<rightarrow> s1 \<and>
12.46 (normal s1 \<longrightarrow> G, store s1\<turnstile>a\<Colon>\<preceq>RefT statT)
12.47 @@ -1072,7 +1072,7 @@
12.48 apply (rule MGFnD [OF mgf_e1, THEN ax_NormalD])
12.49 apply (rule allI)
12.50 apply (rule MGFnD' [OF mgf_e2, THEN conseq12])
12.51 - apply (fastsimp intro: eval.AVar)
12.52 + apply (fastforce intro: eval.AVar)
12.53 done
12.54 next
12.55 case (InsInitV c v)
12.56 @@ -1084,7 +1084,7 @@
12.57 apply (rule MGFn_NormalI)
12.58 apply (rule ax_derivs.NewC)
12.59 apply (rule MGFn_InitD [OF hyp, THEN conseq2])
12.60 - apply (fastsimp intro: eval.NewC)
12.61 + apply (fastforce intro: eval.NewC)
12.62 done
12.63 next
12.64 case (NewA T e)
12.65 @@ -1102,7 +1102,7 @@
12.66 apply (rule ax_derivs.Skip [THEN conseq1])
12.67 apply (clarsimp intro: eval.Skip)
12.68 apply (erule MGFnD' [THEN conseq12])
12.69 - apply (fastsimp intro: eval.NewA)
12.70 + apply (fastforce intro: eval.NewA)
12.71 done
12.72 next
12.73 case (Cast C e)
12.74 @@ -1110,7 +1110,7 @@
12.75 apply -
12.76 apply (rule MGFn_NormalI)
12.77 apply (erule MGFnD'[THEN conseq12,THEN ax_derivs.Cast])
12.78 - apply (fastsimp intro: eval.Cast)
12.79 + apply (fastforce intro: eval.Cast)
12.80 done
12.81 next
12.82 case (Inst e C)
12.83 @@ -1118,7 +1118,7 @@
12.84 apply -
12.85 apply (rule MGFn_NormalI)
12.86 apply (erule MGFnD'[THEN conseq12,THEN ax_derivs.Inst])
12.87 - apply (fastsimp intro: eval.Inst)
12.88 + apply (fastforce intro: eval.Inst)
12.89 done
12.90 next
12.91 case (Lit v)
12.92 @@ -1126,7 +1126,7 @@
12.93 apply -
12.94 apply (rule MGFn_NormalI)
12.95 apply (rule ax_derivs.Lit [THEN conseq1])
12.96 - apply (fastsimp intro: eval.Lit)
12.97 + apply (fastforce intro: eval.Lit)
12.98 done
12.99 next
12.100 case (UnOp unop e)
12.101 @@ -1135,7 +1135,7 @@
12.102 apply (rule MGFn_NormalI)
12.103 apply (rule ax_derivs.UnOp)
12.104 apply (erule MGFnD' [THEN conseq12])
12.105 - apply (fastsimp intro: eval.UnOp)
12.106 + apply (fastforce intro: eval.UnOp)
12.107 done
12.108 next
12.109 case (BinOp binop e1 e2)
12.110 @@ -1148,7 +1148,7 @@
12.111 apply (case_tac "need_second_arg binop v1")
12.112 apply simp
12.113 apply (erule MGFnD' [THEN conseq12])
12.114 - apply (fastsimp intro: eval.BinOp)
12.115 + apply (fastforce intro: eval.BinOp)
12.116 apply simp
12.117 apply (rule ax_Normal_cases)
12.118 apply (rule ax_derivs.Skip [THEN conseq1])
12.119 @@ -1157,7 +1157,7 @@
12.120 apply simp
12.121 apply simp
12.122 apply (rule ax_derivs.Abrupt [THEN conseq1], clarsimp simp add: Let_def)
12.123 - apply (fastsimp intro: eval.BinOp)
12.124 + apply (fastforce intro: eval.BinOp)
12.125 done
12.126 next
12.127 case Super
12.128 @@ -1165,7 +1165,7 @@
12.129 apply -
12.130 apply (rule MGFn_NormalI)
12.131 apply (rule ax_derivs.Super [THEN conseq1])
12.132 - apply (fastsimp intro: eval.Super)
12.133 + apply (fastforce intro: eval.Super)
12.134 done
12.135 next
12.136 case (Acc v)
12.137 @@ -1173,7 +1173,7 @@
12.138 apply -
12.139 apply (rule MGFn_NormalI)
12.140 apply (erule MGFnD'[THEN conseq12,THEN ax_derivs.Acc])
12.141 - apply (fastsimp intro: eval.Acc simp add: split_paired_all)
12.142 + apply (fastforce intro: eval.Acc simp add: split_paired_all)
12.143 done
12.144 next
12.145 case (Ass v e)
12.146 @@ -1184,7 +1184,7 @@
12.147 apply (erule MGFnD [THEN ax_NormalD])
12.148 apply (rule allI)
12.149 apply (erule MGFnD'[THEN conseq12])
12.150 - apply (fastsimp intro: eval.Ass simp add: split_paired_all)
12.151 + apply (fastforce intro: eval.Ass simp add: split_paired_all)
12.152 done
12.153 next
12.154 case (Cond e1 e2 e3)
12.155 @@ -1197,14 +1197,14 @@
12.156 apply (rule ax_Normal_cases)
12.157 prefer 2
12.158 apply (rule ax_derivs.Abrupt [THEN conseq1],clarsimp simp add: Let_def)
12.159 - apply (fastsimp intro: eval.Cond)
12.160 + apply (fastforce intro: eval.Cond)
12.161 apply (case_tac "b")
12.162 apply simp
12.163 apply (erule MGFnD'[THEN conseq12])
12.164 - apply (fastsimp intro: eval.Cond)
12.165 + apply (fastforce intro: eval.Cond)
12.166 apply simp
12.167 apply (erule MGFnD'[THEN conseq12])
12.168 - apply (fastsimp intro: eval.Cond)
12.169 + apply (fastforce intro: eval.Cond)
12.170 done
12.171 next
12.172 case (Call accC statT mode e mn pTs' ps)
12.173 @@ -1238,7 +1238,7 @@
12.174 apply -
12.175 apply (rule MGFn_NormalI)
12.176 apply (rule ax_derivs.Skip [THEN conseq1])
12.177 - apply (fastsimp intro: eval.Skip)
12.178 + apply (fastforce intro: eval.Skip)
12.179 done
12.180 next
12.181 case (Expr e)
12.182 @@ -1246,7 +1246,7 @@
12.183 apply -
12.184 apply (rule MGFn_NormalI)
12.185 apply (erule MGFnD'[THEN conseq12,THEN ax_derivs.Expr])
12.186 - apply (fastsimp intro: eval.Expr)
12.187 + apply (fastforce intro: eval.Expr)
12.188 done
12.189 next
12.190 case (Lab l c)
12.191 @@ -1254,7 +1254,7 @@
12.192 apply -
12.193 apply (rule MGFn_NormalI)
12.194 apply (erule MGFnD' [THEN conseq12, THEN ax_derivs.Lab])
12.195 - apply (fastsimp intro: eval.Lab)
12.196 + apply (fastforce intro: eval.Lab)
12.197 done
12.198 next
12.199 case (Comp c1 c2)
12.200 @@ -1264,7 +1264,7 @@
12.201 apply (rule ax_derivs.Comp)
12.202 apply (erule MGFnD [THEN ax_NormalD])
12.203 apply (erule MGFnD' [THEN conseq12])
12.204 - apply (fastsimp intro: eval.Comp)
12.205 + apply (fastforce intro: eval.Comp)
12.206 done
12.207 next
12.208 case (If' e c1 c2)
12.209 @@ -1277,14 +1277,14 @@
12.210 apply (rule ax_Normal_cases)
12.211 prefer 2
12.212 apply (rule ax_derivs.Abrupt [THEN conseq1],clarsimp simp add: Let_def)
12.213 - apply (fastsimp intro: eval.If)
12.214 + apply (fastforce intro: eval.If)
12.215 apply (case_tac "b")
12.216 apply simp
12.217 apply (erule MGFnD' [THEN conseq12])
12.218 - apply (fastsimp intro: eval.If)
12.219 + apply (fastforce intro: eval.If)
12.220 apply simp
12.221 apply (erule MGFnD' [THEN conseq12])
12.222 - apply (fastsimp intro: eval.If)
12.223 + apply (fastforce intro: eval.If)
12.224 done
12.225 next
12.226 case (Loop l e c)
12.227 @@ -1307,7 +1307,7 @@
12.228 apply -
12.229 apply (rule MGFn_NormalI)
12.230 apply (erule MGFnD' [THEN conseq12, THEN ax_derivs.Throw])
12.231 - apply (fastsimp intro: eval.Throw)
12.232 + apply (fastforce intro: eval.Throw)
12.233 done
12.234 next
12.235 case (TryC c1 C vn c2)
12.236 @@ -1318,10 +1318,10 @@
12.237 ?Q = " (\<lambda>Y' s' s. normal s \<and> (\<exists>s''. G\<turnstile>s \<midarrow>\<langle>c1\<rangle>\<^sub>s\<succ>\<rightarrow> (Y',s'') \<and>
12.238 G\<turnstile>s'' \<midarrow>sxalloc\<rightarrow> s')) \<and>. G\<turnstile>init\<le>n"])
12.239 apply (erule MGFnD [THEN ax_NormalD, THEN conseq2])
12.240 - apply (fastsimp elim: sxalloc_gext [THEN card_nyinitcls_gext])
12.241 + apply (fastforce elim: sxalloc_gext [THEN card_nyinitcls_gext])
12.242 apply (erule MGFnD'[THEN conseq12])
12.243 - apply (fastsimp intro: eval.Try)
12.244 - apply (fastsimp intro: eval.Try)
12.245 + apply (fastforce intro: eval.Try)
12.246 + apply (fastforce intro: eval.Try)
12.247 done
12.248 next
12.249 case (Fin c1 c2)
12.250 @@ -1345,7 +1345,7 @@
12.251 apply -
12.252 apply (rule MGFn_NormalI)
12.253 apply (rule ax_derivs.Nil [THEN conseq1])
12.254 - apply (fastsimp intro: eval.Nil)
12.255 + apply (fastforce intro: eval.Nil)
12.256 done
12.257 next
12.258 case (Cons_expr e es)
12.259 @@ -1356,7 +1356,7 @@
12.260 apply (erule MGFnD [THEN ax_NormalD])
12.261 apply (rule allI)
12.262 apply (erule MGFnD'[THEN conseq12])
12.263 - apply (fastsimp intro: eval.Cons)
12.264 + apply (fastforce intro: eval.Cons)
12.265 done
12.266 qed
12.267 }
13.1 --- a/src/HOL/Bali/AxExample.thy Sun Sep 11 22:56:05 2011 +0200
13.2 +++ b/src/HOL/Bali/AxExample.thy Mon Sep 12 07:55:43 2011 +0200
13.3 @@ -133,7 +133,7 @@
13.4 apply (tactic "ax_tac 2", tactic "ax_tac 2", tactic "ax_tac 2")
13.5 apply (tactic "ax_tac 1")
13.6 apply (tactic {* inst1_tac @{context} "R" "\<lambda>a'. Normal ((\<lambda>Vals:vs (x, s) Z. arr_inv s \<and> inited Ext (globs s) \<and> a' \<noteq> Null \<and> vs = [Null]) \<and>. heap_free two)" *})
13.7 -apply fastsimp
13.8 +apply fastforce
13.9 prefer 4
13.10 apply (rule ax_derivs.Done [THEN conseq1],force)
13.11 apply (rule ax_subst_Val_allI)
14.1 --- a/src/HOL/Bali/AxSound.thy Sun Sep 11 22:56:05 2011 +0200
14.2 +++ b/src/HOL/Bali/AxSound.thy Mon Sep 12 07:55:43 2011 +0200
14.3 @@ -459,7 +459,7 @@
14.4 show "P (In2 vf) s1 Z \<and> s1\<Colon>\<preceq>(G, L)"
14.5 proof
14.6 from eval normal_s0 obtain "s1=s0" "vf=lvar vn (store s0)"
14.7 - by (fastsimp elim: evaln_elim_cases)
14.8 + by (fastforce elim: evaln_elim_cases)
14.9 with P show "P (In2 vf) s1 Z"
14.10 by simp
14.11 next
14.12 @@ -500,7 +500,7 @@
14.13 eval_e: "G\<turnstile>s1 \<midarrow>e-\<succ>a\<midarrow>n\<rightarrow> s2" and
14.14 fvar: "(vf,s2')=fvar statDeclC stat fn a s2" and
14.15 s3: "s3 = check_field_access G accC statDeclC fn stat a s2'"
14.16 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.17 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.18 have wt_init: "\<lparr>prg=G, cls=accC, lcl=L\<rparr>\<turnstile>(Init statDeclC)\<Colon>\<surd>"
14.19 proof -
14.20 from wf wt_e
14.21 @@ -593,7 +593,7 @@
14.22 eval_e1: "G\<turnstile>s0 \<midarrow>e1-\<succ>a\<midarrow>n\<rightarrow> s1" and
14.23 eval_e2: "G\<turnstile>s1 \<midarrow>e2-\<succ>i\<midarrow>n\<rightarrow> s2" and
14.24 avar: "avar G i a s2 =(vf, s2')"
14.25 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.26 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.27 from valid_e1 P valid_A conf_s0 eval_e1 wt_e1 da_e1
14.28 obtain Q: "Q \<lfloor>a\<rfloor>\<^sub>e s1 Z" and conf_s1: "s1\<Colon>\<preceq>(G, L)"
14.29 by (rule validE)
14.30 @@ -654,7 +654,7 @@
14.31 eval_init: "G\<turnstile>s0 \<midarrow>Init C\<midarrow>n\<rightarrow> s1" and
14.32 alloc: "G\<turnstile>s1 \<midarrow>halloc CInst C\<succ>a\<rightarrow> s2" and
14.33 v: "v=Addr a"
14.34 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.35 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.36 from valid_init P valid_A conf_s0 eval_init wt_init da_init
14.37 obtain "(Alloc G (CInst C) Q) \<diamondsuit> s1 Z"
14.38 by (rule validE)
14.39 @@ -696,7 +696,7 @@
14.40 eval_e: "G\<turnstile>s1 \<midarrow>e-\<succ>i\<midarrow>n\<rightarrow> s2" and
14.41 alloc: "G\<turnstile>abupd (check_neg i) s2 \<midarrow>halloc Arr T (the_Intg i)\<succ>a\<rightarrow> s3" and
14.42 v: "v=Addr a"
14.43 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.44 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.45 obtain I where
14.46 da_init:
14.47 "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile>dom (locals (store s0)) \<guillemotright>\<langle>init_comp_ty T\<rangle>\<^sub>s\<guillemotright> I"
14.48 @@ -766,7 +766,7 @@
14.49 from eval obtain s1 where
14.50 eval_e: "G\<turnstile>s0 \<midarrow>e-\<succ>v\<midarrow>n\<rightarrow> s1" and
14.51 s2: "s2 = abupd (raise_if (\<not> G,snd s1\<turnstile>v fits T) ClassCast) s1"
14.52 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.53 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.54 from valid_e P valid_A conf_s0 eval_e wt_e da_e
14.55 have "(\<lambda>Val:v:. \<lambda>s.. abupd (raise_if (\<not> G,s\<turnstile>v fits T) ClassCast) .;
14.56 Q\<leftarrow>In1 v) \<lfloor>v\<rfloor>\<^sub>e s1 Z"
14.57 @@ -805,7 +805,7 @@
14.58 from eval obtain a where
14.59 eval_e: "G\<turnstile>s0 \<midarrow>e-\<succ>a\<midarrow>n\<rightarrow> s1" and
14.60 v: "v = Bool (a \<noteq> Null \<and> G,store s1\<turnstile>a fits RefT T)"
14.61 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.62 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.63 from valid_e P valid_A conf_s0 eval_e wt_e da_e
14.64 have "(\<lambda>Val:v:. \<lambda>s.. Q\<leftarrow>In1 (Bool (v \<noteq> Null \<and> G,s\<turnstile>v fits RefT T)))
14.65 \<lfloor>a\<rfloor>\<^sub>e s1 Z"
14.66 @@ -859,7 +859,7 @@
14.67 from eval obtain ve where
14.68 eval_e: "G\<turnstile>s0 \<midarrow>e-\<succ>ve\<midarrow>n\<rightarrow> s1" and
14.69 v: "v = eval_unop unop ve"
14.70 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.71 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.72 from valid_e P valid_A conf_s0 eval_e wt_e da_e
14.73 have "(\<lambda>Val:v:. Q\<leftarrow>In1 (eval_unop unop v)) \<lfloor>ve\<rfloor>\<^sub>e s1 Z"
14.74 by (rule validE)
14.75 @@ -912,7 +912,7 @@
14.76 eval_e2: "G\<turnstile>s1 \<midarrow>(if need_second_arg binop v1 then \<langle>e2\<rangle>\<^sub>e else \<langle>Skip\<rangle>\<^sub>s)
14.77 \<succ>\<midarrow>n\<rightarrow> (\<lfloor>v2\<rfloor>\<^sub>e, s2)" and
14.78 v: "v=eval_binop binop v1 v2"
14.79 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.80 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.81 from valid_e1 P valid_A conf_s0 eval_e1 wt_e1 da_e1
14.82 obtain Q: "Q \<lfloor>v1\<rfloor>\<^sub>e s1 Z" and conf_s1: "s1\<Colon>\<preceq>(G,L)"
14.83 by (rule validE)
14.84 @@ -994,7 +994,7 @@
14.85 by (cases "\<exists> n. var=LVar n") (insert da.LVar,auto elim!: da_elim_cases)
14.86 from eval obtain w upd where
14.87 eval_var: "G\<turnstile>s0 \<midarrow>var=\<succ>(v, upd)\<midarrow>n\<rightarrow> s1"
14.88 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.89 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.90 from valid_var P valid_A conf_s0 eval_var wt_var da_var
14.91 have "(\<lambda>Var:(v, f):. Q\<leftarrow>In1 v) \<lfloor>(v, upd)\<rfloor>\<^sub>v s1 Z"
14.92 by (rule validE)
14.93 @@ -1151,7 +1151,7 @@
14.94 from eval obtain b s1 where
14.95 eval_e0: "G\<turnstile>s0 \<midarrow>e0-\<succ>b\<midarrow>n\<rightarrow> s1" and
14.96 eval_then_else: "G\<turnstile>s1 \<midarrow>(if the_Bool b then e1 else e2)-\<succ>v\<midarrow>n\<rightarrow> s2"
14.97 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.98 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.99 from valid_e0 P valid_A conf_s0 eval_e0 wt_e0 da_e0
14.100 obtain "P' \<lfloor>b\<rfloor>\<^sub>e s1 Z" and conf_s1: "s1\<Colon>\<preceq>(G,L)"
14.101 by (rule validE)
14.102 @@ -1246,7 +1246,7 @@
14.103 mode: "mode = invmode statM e" and
14.104 T: "T =(resTy statM)" and
14.105 eq_accC_accC': "accC=accC'"
14.106 - by cases fastsimp+
14.107 + by cases fastforce+
14.108 from da obtain C where
14.109 da_e: "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile> (dom (locals (store s0)))\<guillemotright>\<langle>e\<rangle>\<^sub>e\<guillemotright> C" and
14.110 da_args: "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile> nrm C \<guillemotright>\<langle>args\<rangle>\<^sub>l\<guillemotright> E"
14.111 @@ -1635,7 +1635,7 @@
14.112 abrupt s2 = Some (Jump (Cont l))
14.113 then abupd (\<lambda>x. Some (Error CrossMethodJump)) s2 else s2)"and
14.114 s4: "s4 = abupd (absorb Ret) s3"
14.115 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.116 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.117 obtain C' where
14.118 da_c': "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile> (dom (locals (store s1)))\<guillemotright>\<langle>c\<rangle>\<^sub>s\<guillemotright> C'"
14.119 proof -
14.120 @@ -1720,7 +1720,7 @@
14.121 eval_e: "G\<turnstile>s0 \<midarrow>e-\<succ>ve\<midarrow>n\<rightarrow> s1" and
14.122 eval_es: "G\<turnstile>s1 \<midarrow>es\<doteq>\<succ>vs\<midarrow>n\<rightarrow> s2" and
14.123 v: "v=ve#vs"
14.124 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.125 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.126 from valid_e P valid_A conf_s0 eval_e wt_e da_e
14.127 obtain Q: "Q \<lfloor>ve\<rfloor>\<^sub>e s1 Z" and conf_s1: "s1\<Colon>\<preceq>(G,L)"
14.128 by (rule validE)
14.129 @@ -1768,7 +1768,7 @@
14.130 show "P \<diamondsuit> s1 Z \<and> s1\<Colon>\<preceq>(G, L)"
14.131 proof -
14.132 from eval obtain "s1=s0"
14.133 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.134 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.135 with P conf_s0 show ?thesis
14.136 by simp
14.137 qed
14.138 @@ -1796,7 +1796,7 @@
14.139 by cases simp
14.140 from eval obtain v where
14.141 eval_e: "G\<turnstile>s0 \<midarrow>e-\<succ>v\<midarrow>n\<rightarrow> s1"
14.142 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.143 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.144 from valid_e P valid_A conf_s0 eval_e wt_e da_e
14.145 obtain Q: "(Q\<leftarrow>\<diamondsuit>) \<lfloor>v\<rfloor>\<^sub>e s1 Z" and "s1\<Colon>\<preceq>(G,L)"
14.146 by (rule validE)
14.147 @@ -1827,7 +1827,7 @@
14.148 from eval obtain s1 where
14.149 eval_c: "G\<turnstile>s0 \<midarrow>c\<midarrow>n\<rightarrow> s1" and
14.150 s2: "s2 = abupd (absorb l) s1"
14.151 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.152 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.153 from valid_c P valid_A conf_s0 eval_c wt_c da_c
14.154 obtain Q: "(abupd (absorb l) .; Q) \<diamondsuit> s1 Z"
14.155 by (rule validE)
14.156 @@ -1859,7 +1859,7 @@
14.157 from eval obtain s1 where
14.158 eval_c1: "G\<turnstile>s0 \<midarrow>c1 \<midarrow>n\<rightarrow> s1" and
14.159 eval_c2: "G\<turnstile>s1 \<midarrow>c2 \<midarrow>n\<rightarrow> s2"
14.160 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.161 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.162 from wt obtain
14.163 wt_c1: "\<lparr>prg = G, cls = accC, lcl = L\<rparr>\<turnstile>c1\<Colon>\<surd>" and
14.164 wt_c2: "\<lparr>prg = G, cls = accC, lcl = L\<rparr>\<turnstile>c2\<Colon>\<surd>"
14.165 @@ -2297,7 +2297,7 @@
14.166 s3: "if G,s2\<turnstile>catch C
14.167 then G\<turnstile>new_xcpt_var vn s2 \<midarrow>c2\<midarrow>n\<rightarrow> s3
14.168 else s3 = s2"
14.169 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.170 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.171 from wt obtain
14.172 wt_c1: "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile>c1\<Colon>\<surd>" and
14.173 wt_c2: "\<lparr>prg=G,cls=accC,lcl=L(VName vn\<mapsto>Class C)\<rparr>\<turnstile>c2\<Colon>\<surd>"
14.174 @@ -2429,7 +2429,7 @@
14.175 s3: "s3 = (if \<exists>err. abr1 = Some (Error err)
14.176 then (abr1, s1)
14.177 else abupd (abrupt_if (abr1 \<noteq> None) abr1) s2)"
14.178 - using normal_s0 by (fastsimp elim: evaln_elim_cases)
14.179 + using normal_s0 by (fastforce elim: evaln_elim_cases)
14.180 from wt obtain
14.181 wt_c1: "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile>c1\<Colon>\<surd>" and
14.182 wt_c2: "\<lparr>prg=G,cls=accC,lcl=L\<rparr>\<turnstile>c2\<Colon>\<surd>"
15.1 --- a/src/HOL/Bali/DefiniteAssignment.thy Sun Sep 11 22:56:05 2011 +0200
15.2 +++ b/src/HOL/Bali/DefiniteAssignment.thy Mon Sep 12 07:55:43 2011 +0200
15.3 @@ -972,7 +972,7 @@
15.4 case (UnOp unop e)
15.5 thus ?case
15.6 by - (erule wt_elim_cases,cases unop,
15.7 - (fastsimp simp add: assignsE_const_simp)+)
15.8 + (fastforce simp add: assignsE_const_simp)+)
15.9 next
15.10 case (BinOp binop e1 e2)
15.11 from BinOp.prems obtain e1T e2T
16.1 --- a/src/HOL/Bali/DefiniteAssignmentCorrect.thy Sun Sep 11 22:56:05 2011 +0200
16.2 +++ b/src/HOL/Bali/DefiniteAssignmentCorrect.thy Mon Sep 12 07:55:43 2011 +0200
16.3 @@ -65,7 +65,7 @@
16.4 case False
16.5 with eval obtain s0' abr where "G\<turnstile>(Some abr,s0') \<midarrow>Body D c-\<succ>v\<rightarrow>s1"
16.6 "s0 = (Some abr, s0')"
16.7 - by (cases s0) fastsimp
16.8 + by (cases s0) fastforce
16.9 with this jump
16.10 show ?thesis
16.11 by (cases) (simp)
16.12 @@ -89,7 +89,7 @@
16.13 case False
16.14 with eval obtain s0' abr where "G\<turnstile>(Some abr,s0') \<midarrow>Methd D sig-\<succ>v\<rightarrow>s1"
16.15 "s0 = (Some abr, s0')"
16.16 - by (cases s0) fastsimp
16.17 + by (cases s0) fastforce
16.18 with this jump
16.19 show ?thesis
16.20 by (cases) (simp)
16.21 @@ -1102,7 +1102,7 @@
16.22 apply (rule jumpNestingOk_evalE)
16.23 apply assumption
16.24 apply simp
16.25 - apply fastsimp
16.26 + apply fastforce
16.27 done
16.28 qed
16.29
16.30 @@ -2789,7 +2789,7 @@
16.31 by blast
16.32 moreover from brk_c2' brk_c2 A
16.33 have "?BreakAssigned s1 s2 A"
16.34 - by fastsimp
16.35 + by fastforce
16.36 with True
16.37 have "?BreakAssigned (Norm s0) s2 A" by simp
16.38 moreover from res_c2 True
16.39 @@ -2874,7 +2874,7 @@
16.40 by blast
16.41 moreover from brk_c1' brk_c1 A
16.42 have "?BreakAssigned s1 s2 A"
16.43 - by fastsimp
16.44 + by fastforce
16.45 with normal_s1
16.46 have "?BreakAssigned (Norm s0) s2 A" by simp
16.47 moreover from res_c1 normal_s1 have "?ResAssigned (Norm s0) s2"
16.48 @@ -2904,7 +2904,7 @@
16.49 by blast
16.50 moreover from brk_c2' brk_c2 A
16.51 have "?BreakAssigned s1 s2 A"
16.52 - by fastsimp
16.53 + by fastforce
16.54 with normal_s1
16.55 have "?BreakAssigned (Norm s0) s2 A" by simp
16.56 moreover from res_c2 normal_s1 have "?ResAssigned (Norm s0) s2"
16.57 @@ -3025,7 +3025,7 @@
16.58 proof -
16.59 from brk_A_A' brk_A'
16.60 have "?BreakAssigned (abupd (absorb (Cont l)) s2) s3 A"
16.61 - by fastsimp
16.62 + by fastforce
16.63 moreover
16.64 from True have "normal (abupd (absorb (Cont l)) s2)"
16.65 by (cases s2) auto
16.66 @@ -3046,11 +3046,11 @@
16.67 by auto
16.68 with nrm_C_C' nrm_C' A
16.69 have "?NormalAssigned s3 A"
16.70 - by fastsimp
16.71 + by fastforce
16.72 moreover
16.73 from eq_s3_s2 brk_C_C' brk_C' normal_s1 A
16.74 have "?BreakAssigned (Norm s0) s3 A"
16.75 - by fastsimp
16.76 + by fastforce
16.77 moreover
16.78 from eq_s3_s2 res_s2 normal_s1 have "?ResAssigned (Norm s0) s3"
16.79 by simp
16.80 @@ -3275,7 +3275,7 @@
16.81 from brkAss_C2 have "?BreakAssigned (Norm s0) s3 C2'"
16.82 by (cases s2) (auto simp add: new_xcpt_var_def)
16.83 with brk_C2' A show ?thesis
16.84 - by fastsimp
16.85 + by fastforce
16.86 qed
16.87 moreover
16.88 from resAss_s3 have "?ResAssigned (Norm s0) s3"
16.89 @@ -3353,7 +3353,7 @@
16.90 by blast
16.91 moreover
16.92 from brkAss_C2' brk_C2' have "?BreakAssigned (Norm s1) s2 C2"
16.93 - by fastsimp
16.94 + by fastforce
16.95 ultimately
16.96 show ?thesis
16.97 using that resAss_s2' by simp
16.98 @@ -3379,7 +3379,7 @@
16.99 by (cases s2) (simp add: abrupt_if_def)
16.100 with normal_s3 nrmAss_C1 s3 s1_s2
16.101 show ?thesis
16.102 - by fastsimp
16.103 + by fastforce
16.104 qed
16.105 moreover
16.106 have "nrm C2 \<subseteq> dom (locals (snd s3))"
16.107 @@ -3389,7 +3389,7 @@
16.108 by (cases s2) (simp add: abrupt_if_def)
16.109 with normal_s3 nrmAss_C2 s3 s1_s2
16.110 show ?thesis
16.111 - by fastsimp
16.112 + by fastforce
16.113 qed
16.114 ultimately have "nrm C1 \<union> nrm C2 \<subseteq> \<dots>"
16.115 by (rule Un_least)
17.1 --- a/src/HOL/Bali/Eval.thy Sun Sep 11 22:56:05 2011 +0200
17.2 +++ b/src/HOL/Bali/Eval.thy Mon Sep 12 07:55:43 2011 +0200
17.3 @@ -901,7 +901,7 @@
17.4 then have "False" by induct auto
17.5 }
17.6 then show ?thesis
17.7 - by (cases s') fastsimp
17.8 + by (cases s') fastforce
17.9 qed
17.10
17.11
17.12 @@ -914,7 +914,7 @@
17.13 then have "False" by induct auto
17.14 }
17.15 then show ?thesis
17.16 - by (cases s') fastsimp
17.17 + by (cases s') fastforce
17.18 qed
17.19
17.20 lemma eval_InsInitV: "G\<turnstile>Norm s\<midarrow>InsInitV c w=\<succ>v\<rightarrow> s' = False"
17.21 @@ -926,7 +926,7 @@
17.22 then have "False" by induct auto
17.23 }
17.24 then show ?thesis
17.25 - by (cases s') fastsimp
17.26 + by (cases s') fastforce
17.27 qed
17.28
17.29 lemma eval_FinA: "G\<turnstile>Norm s\<midarrow>FinA a c\<rightarrow> s' = False"
17.30 @@ -938,7 +938,7 @@
17.31 then have "False" by induct auto
17.32 }
17.33 then show ?thesis
17.34 - by (cases s') fastsimp
17.35 + by (cases s') fastforce
17.36 qed
17.37
17.38 lemma eval_no_abrupt_lemma:
18.1 --- a/src/HOL/Bali/Evaln.thy Sun Sep 11 22:56:05 2011 +0200
18.2 +++ b/src/HOL/Bali/Evaln.thy Mon Sep 12 07:55:43 2011 +0200
18.3 @@ -305,7 +305,7 @@
18.4 then have "False" by induct auto
18.5 }
18.6 then show ?thesis
18.7 - by (cases s') fastsimp
18.8 + by (cases s') fastforce
18.9 qed
18.10
18.11 lemma evaln_InsInitE: "G\<turnstile>Norm s\<midarrow>In1l (InsInitE c e)\<succ>\<midarrow>n\<rightarrow> (v,s') = False"
18.12 @@ -317,7 +317,7 @@
18.13 then have "False" by induct auto
18.14 }
18.15 then show ?thesis
18.16 - by (cases s') fastsimp
18.17 + by (cases s') fastforce
18.18 qed
18.19
18.20 lemma evaln_InsInitV: "G\<turnstile>Norm s\<midarrow>In2 (InsInitV c w)\<succ>\<midarrow>n\<rightarrow> (v,s') = False"
18.21 @@ -329,7 +329,7 @@
18.22 then have "False" by induct auto
18.23 }
18.24 then show ?thesis
18.25 - by (cases s') fastsimp
18.26 + by (cases s') fastforce
18.27 qed
18.28
18.29 lemma evaln_FinA: "G\<turnstile>Norm s\<midarrow>In1r (FinA a c)\<succ>\<midarrow>n\<rightarrow> (v,s') = False"
18.30 @@ -341,7 +341,7 @@
18.31 then have "False" by induct auto
18.32 }
18.33 then show ?thesis
18.34 - by (cases s') fastsimp
18.35 + by (cases s') fastforce
18.36 qed
18.37
18.38 lemma evaln_abrupt_lemma: "G\<turnstile>s \<midarrow>e\<succ>\<midarrow>n\<rightarrow> (v,s') \<Longrightarrow>
18.39 @@ -602,7 +602,7 @@
18.40 moreover
18.41 from Try.hyps obtain n2 where
18.42 "if G,s2\<turnstile>catch catchC then G\<turnstile>new_xcpt_var vn s2 \<midarrow>c2\<midarrow>n2\<rightarrow> s3 else s3 = s2"
18.43 - by fastsimp
18.44 + by fastforce
18.45 ultimately
18.46 have "G\<turnstile>Norm s0 \<midarrow>Try c1 Catch(catchC vn) c2\<midarrow>max n1 n2\<rightarrow> s3"
18.47 by (auto intro!: evaln.Try le_maxI1 le_maxI2)
19.1 --- a/src/HOL/Bali/TypeSafe.thy Sun Sep 11 22:56:05 2011 +0200
19.2 +++ b/src/HOL/Bali/TypeSafe.thy Mon Sep 12 07:55:43 2011 +0200
19.3 @@ -1335,7 +1335,7 @@
19.4 proof (cases "(tab(x\<mapsto>y)) vn \<noteq> Some z")
19.5 case True
19.6 with some ys have "(tab'(x\<mapsto>y)(xs[\<mapsto>]tl)) vn = Some z"
19.7 - by (fastsimp intro: Cons.hyps)
19.8 + by (fastforce intro: Cons.hyps)
19.9 with ys show ?thesis
19.10 by simp
19.11 next
19.12 @@ -3012,7 +3012,7 @@
19.13 mode: "mode = invmode statM e" and
19.14 T: "T =Inl (resTy statM)" and
19.15 eq_accC_accC': "accC=accC'"
19.16 - by (rule wt_elim_cases) fastsimp+
19.17 + by (rule wt_elim_cases) fastforce+
19.18 from Call.prems obtain E where
19.19 da_e: "\<lparr>prg=G,cls=accC,lcl=L\<rparr>
19.20 \<turnstile> (dom (locals (store ((Norm s0)::state))))\<guillemotright>In1l e\<guillemotright> E" and
20.1 --- a/src/HOL/Bali/WellForm.thy Sun Sep 11 22:56:05 2011 +0200
20.2 +++ b/src/HOL/Bali/WellForm.thy Mon Sep 12 07:55:43 2011 +0200
20.3 @@ -2788,7 +2788,7 @@
20.4 proof -
20.5 from im statM statT isT_statT wf not_Private_statM
20.6 have "is_static im = is_static statM"
20.7 - by (fastsimp dest: wf_imethds_hiding_objmethdsD)
20.8 + by (fastforce dest: wf_imethds_hiding_objmethdsD)
20.9 with wf isT_statT statT im
20.10 have "\<not> is_static statM"
20.11 by (auto dest: wf_prog_idecl imethds_wf_mhead)
21.1 --- a/src/HOL/Big_Operators.thy Sun Sep 11 22:56:05 2011 +0200
21.2 +++ b/src/HOL/Big_Operators.thy Mon Sep 12 07:55:43 2011 +0200
21.3 @@ -503,7 +503,7 @@
21.4 thus ?case by simp
21.5 next
21.6 case insert
21.7 - thus ?case using add_mono by fastsimp
21.8 + thus ?case using add_mono by fastforce
21.9 qed
21.10 next
21.11 case False
21.12 @@ -893,11 +893,11 @@
21.13
21.14 lemma setprod_cong:
21.15 "A = B ==> (!!x. x:B ==> f x = g x) ==> setprod f A = setprod g B"
21.16 -by(fastsimp simp: setprod_def intro: fold_image_cong)
21.17 +by(fastforce simp: setprod_def intro: fold_image_cong)
21.18
21.19 lemma strong_setprod_cong[cong]:
21.20 "A = B ==> (!!x. x:B =simp=> f x = g x) ==> setprod f A = setprod g B"
21.21 -by(fastsimp simp: simp_implies_def setprod_def intro: fold_image_cong)
21.22 +by(fastforce simp: simp_implies_def setprod_def intro: fold_image_cong)
21.23
21.24 lemma setprod_reindex_cong: "inj_on f A ==>
21.25 B = f ` A ==> g = h \<circ> f ==> setprod h B = setprod g A"
21.26 @@ -1590,7 +1590,7 @@
21.27 proof -
21.28 interpret ab_semigroup_idem_mult min
21.29 by (rule ab_semigroup_idem_mult_min)
21.30 - from assms fold1_in show ?thesis by (fastsimp simp: Min_def min_def)
21.31 + from assms fold1_in show ?thesis by (fastforce simp: Min_def min_def)
21.32 qed
21.33
21.34 lemma Max_in [simp]:
21.35 @@ -1599,7 +1599,7 @@
21.36 proof -
21.37 interpret ab_semigroup_idem_mult max
21.38 by (rule ab_semigroup_idem_mult_max)
21.39 - from assms fold1_in [of A] show ?thesis by (fastsimp simp: Max_def max_def)
21.40 + from assms fold1_in [of A] show ?thesis by (fastforce simp: Max_def max_def)
21.41 qed
21.42
21.43 lemma Min_le [simp]:
21.44 @@ -1739,8 +1739,8 @@
21.45 then have A: "?A = A" using insert_Diff_single insert_absorb by auto
21.46 then have "P ?B" using `P {}` step IH[of ?B] by blast
21.47 moreover
21.48 - have "\<forall>a\<in>?B. a < Max A" using Max_ge [OF `finite A`] by fastsimp
21.49 - ultimately show "P A" using A insert_Diff_single step[OF `finite ?B`] by fastsimp
21.50 + have "\<forall>a\<in>?B. a < Max A" using Max_ge [OF `finite A`] by fastforce
21.51 + ultimately show "P A" using A insert_Diff_single step[OF `finite ?B`] by fastforce
21.52 qed
21.53 qed
21.54
22.1 --- a/src/HOL/Decision_Procs/Cooper.thy Sun Sep 11 22:56:05 2011 +0200
22.2 +++ b/src/HOL/Decision_Procs/Cooper.thy Mon Sep 12 07:55:43 2011 +0200
22.3 @@ -1657,7 +1657,7 @@
22.4 prefer 2
22.5 apply(drule minusinfinity)
22.6 apply assumption+
22.7 -apply(fastsimp)
22.8 +apply(fastforce)
22.9 apply clarsimp
22.10 apply(subgoal_tac "!!k. 0<=k \<Longrightarrow> !x. P x \<longrightarrow> P (x - k*D)")
22.11 apply(frule_tac x = x and z=z in decr_lemma)
22.12 @@ -1665,7 +1665,7 @@
22.13 prefer 2
22.14 apply(subgoal_tac "0 <= (\<bar>x - z\<bar> + 1)")
22.15 prefer 2 apply arith
22.16 - apply fastsimp
22.17 + apply fastforce
22.18 apply(drule (1) periodic_finite_ex)
22.19 apply blast
22.20 apply(blast dest:decr_mult_lemma)
23.1 --- a/src/HOL/Decision_Procs/MIR.thy Sun Sep 11 22:56:05 2011 +0200
23.2 +++ b/src/HOL/Decision_Procs/MIR.thy Mon Sep 12 07:55:43 2011 +0200
23.3 @@ -2733,7 +2733,7 @@
23.4 prefer 2
23.5 apply(drule minusinfinity)
23.6 apply assumption+
23.7 -apply(fastsimp)
23.8 +apply(fastforce)
23.9 apply clarsimp
23.10 apply(subgoal_tac "!!k. 0<=k \<Longrightarrow> !x. P x \<longrightarrow> P (x - k*D)")
23.11 apply(frule_tac x = x and z=z in decr_lemma)
23.12 @@ -2741,7 +2741,7 @@
23.13 prefer 2
23.14 apply(subgoal_tac "0 <= (\<bar>x - z\<bar> + 1)")
23.15 prefer 2 apply arith
23.16 - apply fastsimp
23.17 + apply fastforce
23.18 apply(drule (1) periodic_finite_ex)
23.19 apply blast
23.20 apply(blast dest:decr_mult_lemma)
24.1 --- a/src/HOL/Deriv.thy Sun Sep 11 22:56:05 2011 +0200
24.2 +++ b/src/HOL/Deriv.thy Mon Sep 12 07:55:43 2011 +0200
24.3 @@ -745,7 +745,7 @@
24.4 proof (rule ccontr)
24.5 assume "\<not> (\<exists>x. a \<le> x \<and> x \<le> b \<and> f x = M)"
24.6 with M1 have M3: "\<forall>x. a \<le> x & x \<le> b --> f x < M"
24.7 - by (fastsimp simp add: linorder_not_le [symmetric])
24.8 + by (fastforce simp add: linorder_not_le [symmetric])
24.9 hence "\<forall>x. a \<le> x & x \<le> b --> isCont (%x. inverse (M - f x)) x"
24.10 by (auto simp add: con)
24.11 from isCont_bounded [OF le this]
25.1 --- a/src/HOL/Divides.thy Sun Sep 11 22:56:05 2011 +0200
25.2 +++ b/src/HOL/Divides.thy Mon Sep 12 07:55:43 2011 +0200
25.3 @@ -194,7 +194,7 @@
25.4 apply (unfold dvd_def)
25.5 apply auto
25.6 apply(blast intro:mult_assoc[symmetric])
25.7 -apply(fastsimp simp add: mult_assoc)
25.8 +apply(fastforce simp add: mult_assoc)
25.9 done
25.10
25.11 lemma dvd_mod_imp_dvd: "[| k dvd m mod n; k dvd n |] ==> k dvd m"
25.12 @@ -2232,7 +2232,7 @@
25.13
25.14 lemma zmod_le_nonneg_dividend: "(m::int) \<ge> 0 ==> m mod k \<le> m"
25.15 apply (rule split_zmod[THEN iffD2])
25.16 -apply(fastsimp dest: q_pos_lemma intro: split_mult_pos_le)
25.17 +apply(fastforce dest: q_pos_lemma intro: split_mult_pos_le)
25.18 done
25.19
25.20
26.1 --- a/src/HOL/Equiv_Relations.thy Sun Sep 11 22:56:05 2011 +0200
26.2 +++ b/src/HOL/Equiv_Relations.thy Mon Sep 12 07:55:43 2011 +0200
26.3 @@ -349,7 +349,7 @@
26.4 apply(subst card_UN_disjoint)
26.5 apply assumption
26.6 apply simp
26.7 - apply(fastsimp simp add:inj_on_def)
26.8 + apply(fastforce simp add:inj_on_def)
26.9 apply simp
26.10 done
26.11
27.1 --- a/src/HOL/Finite_Set.thy Sun Sep 11 22:56:05 2011 +0200
27.2 +++ b/src/HOL/Finite_Set.thy Mon Sep 12 07:55:43 2011 +0200
27.3 @@ -124,7 +124,7 @@
27.4
27.5 lemma finite_Collect_less_nat [iff]:
27.6 "finite {n::nat. n < k}"
27.7 - by (fastsimp simp: finite_conv_nat_seg_image)
27.8 + by (fastforce simp: finite_conv_nat_seg_image)
27.9
27.10 lemma finite_Collect_le_nat [iff]:
27.11 "finite {n::nat. n \<le> k}"
27.12 @@ -2040,7 +2040,7 @@
27.13 show "A = insert b (A-{b})" using b by blast
27.14 show "b \<notin> A - {b}" by blast
27.15 show "card (A - {b}) = k" and "k = 0 \<longrightarrow> A - {b} = {}"
27.16 - using assms b fin by(fastsimp dest:mk_disjoint_insert)+
27.17 + using assms b fin by(fastforce dest:mk_disjoint_insert)+
27.18 qed
27.19 qed
27.20
27.21 @@ -2056,7 +2056,7 @@
27.22
27.23 lemma card_le_Suc_iff: "finite A \<Longrightarrow>
27.24 Suc n \<le> card A = (\<exists>a B. A = insert a B \<and> a \<notin> B \<and> n \<le> card B \<and> finite B)"
27.25 -by (fastsimp simp: card_Suc_eq less_eq_nat.simps(2) insert_eq_iff
27.26 +by (fastforce simp: card_Suc_eq less_eq_nat.simps(2) insert_eq_iff
27.27 dest: subset_singletonD split: nat.splits if_splits)
27.28
27.29 lemma finite_fun_UNIVD2:
27.30 @@ -2242,7 +2242,7 @@
27.31
27.32 lemma finite_UNIV_inj_surj: fixes f :: "'a \<Rightarrow> 'a"
27.33 shows "finite(UNIV:: 'a set) \<Longrightarrow> inj f \<Longrightarrow> surj f"
27.34 -by(fastsimp simp:surj_def dest!: endo_inj_surj)
27.35 +by(fastforce simp:surj_def dest!: endo_inj_surj)
27.36
27.37 corollary infinite_UNIV_nat[iff]: "~finite(UNIV::nat set)"
27.38 proof
28.1 --- a/src/HOL/Fun.thy Sun Sep 11 22:56:05 2011 +0200
28.2 +++ b/src/HOL/Fun.thy Mon Sep 12 07:55:43 2011 +0200
28.3 @@ -461,7 +461,7 @@
28.4 lemma surj_vimage_empty:
28.5 assumes "surj f" shows "f -` A = {} \<longleftrightarrow> A = {}"
28.6 using surj_image_vimage_eq[OF `surj f`, of A]
28.7 - by (intro iffI) fastsimp+
28.8 + by (intro iffI) fastforce+
28.9
28.10 lemma inj_vimage_image_eq: "inj f ==> f -` (f ` A) = A"
28.11 by (simp add: inj_on_def, blast)
28.12 @@ -603,7 +603,7 @@
28.13 by (rule ext, auto)
28.14
28.15 lemma inj_on_fun_updI: "\<lbrakk> inj_on f A; y \<notin> f`A \<rbrakk> \<Longrightarrow> inj_on (f(x:=y)) A"
28.16 -by (fastsimp simp:inj_on_def image_def)
28.17 +by (fastforce simp:inj_on_def image_def)
28.18
28.19 lemma fun_upd_image:
28.20 "f(x:=y) ` A = (if x \<in> A then insert y (f ` (A-{x})) else f ` A)"
29.1 --- a/src/HOL/GCD.thy Sun Sep 11 22:56:05 2011 +0200
29.2 +++ b/src/HOL/GCD.thy Mon Sep 12 07:55:43 2011 +0200
29.3 @@ -525,7 +525,7 @@
29.4
29.5 lemma Max_divisors_self_nat[simp]: "n\<noteq>0 \<Longrightarrow> Max{d::nat. d dvd n} = n"
29.6 apply(rule antisym)
29.7 - apply (fastsimp intro: Max_le_iff[THEN iffD2] simp: dvd_imp_le)
29.8 + apply (fastforce intro: Max_le_iff[THEN iffD2] simp: dvd_imp_le)
29.9 apply simp
29.10 done
29.11
29.12 @@ -1604,7 +1604,7 @@
29.13 apply simp
29.14 apply (rule Max_le_iff[THEN iffD2])
29.15 apply (metis all_not_in_conv finite_divisors_nat finite_INT)
29.16 - apply fastsimp
29.17 + apply fastforce
29.18 apply clarsimp
29.19 apply (metis Gcd_dvd_nat Max_in dvd_0_left dvd_Gcd_nat dvd_imp_le linorder_antisym_conv3 not_less0)
29.20 done
29.21 @@ -1670,9 +1670,9 @@
29.22 apply(rule Lcm_eq_Max_nat)
29.23 apply simp
29.24 apply blast
29.25 - apply fastsimp
29.26 + apply fastforce
29.27 apply clarsimp
29.28 - apply(fastsimp intro: finite_divisors_nat intro!: finite_INT)
29.29 + apply(fastforce intro: finite_divisors_nat intro!: finite_INT)
29.30 done
29.31 qed
29.32 qed
30.1 --- a/src/HOL/HOLCF/IMP/Denotational.thy Sun Sep 11 22:56:05 2011 +0200
30.2 +++ b/src/HOL/HOLCF/IMP/Denotational.thy Mon Sep 12 07:55:43 2011 +0200
30.3 @@ -48,8 +48,8 @@
30.4
30.5 lemma D_implies_eval: "!s t. D c\<cdot>(Discr s) = (Def t) --> (c,s) \<Rightarrow> t"
30.6 apply (induct c)
30.7 - apply fastsimp
30.8 - apply fastsimp
30.9 + apply fastforce
30.10 + apply fastforce
30.11 apply force
30.12 apply (simp (no_asm))
30.13 apply force
31.1 --- a/src/HOL/HOLCF/IOA/meta_theory/CompoTraces.thy Sun Sep 11 22:56:05 2011 +0200
31.2 +++ b/src/HOL/HOLCF/IOA/meta_theory/CompoTraces.thy Mon Sep 12 07:55:43 2011 +0200
31.3 @@ -299,7 +299,7 @@
31.4 apply (simp add: not_ext_is_int_or_not_act ForallTL ForallDropwhile)
31.5
31.6 (* a~: act B; a~: act A *)
31.7 -apply (fastsimp intro!: ext_is_act simp: externals_of_par)
31.8 +apply (fastforce intro!: ext_is_act simp: externals_of_par)
31.9 done
31.10
31.11 declare FiniteConc [simp]
31.12 @@ -452,7 +452,7 @@
31.13 apply (simp add: not_ext_is_int_or_not_act ForallTL ForallDropwhile)
31.14
31.15 (* Case a~:A, a~:B *)
31.16 -apply (fastsimp intro!: ext_is_act simp: externals_of_par)
31.17 +apply (fastforce intro!: ext_is_act simp: externals_of_par)
31.18 done
31.19
31.20
32.1 --- a/src/HOL/HOLCF/IOA/meta_theory/Seq.thy Sun Sep 11 22:56:05 2011 +0200
32.2 +++ b/src/HOL/HOLCF/IOA/meta_theory/Seq.thy Mon Sep 12 07:55:43 2011 +0200
32.3 @@ -275,7 +275,7 @@
32.4 lemma Finite_cons_a: "Finite x --> a~=UU --> x=a##xs --> Finite xs"
32.5 apply (intro strip)
32.6 apply (erule Finite.cases)
32.7 -apply fastsimp
32.8 +apply fastforce
32.9 apply simp
32.10 done
32.11
33.1 --- a/src/HOL/HOLCF/IOA/meta_theory/Sequence.thy Sun Sep 11 22:56:05 2011 +0200
33.2 +++ b/src/HOL/HOLCF/IOA/meta_theory/Sequence.thy Mon Sep 12 07:55:43 2011 +0200
33.3 @@ -836,7 +836,7 @@
33.4 ==> ? x bs rs. y= (bs @@ (x>>rs)) & Finite bs & Forall P bs & (~ P x)"
33.5 apply (drule divide_Seq2)
33.6 (*Auto_tac no longer proves it*)
33.7 -apply fastsimp
33.8 +apply fastforce
33.9 done
33.10
33.11 lemmas [simp] = FilterPQ FilterConc Conc_cong
34.1 --- a/src/HOL/HOLCF/IOA/meta_theory/TLS.thy Sun Sep 11 22:56:05 2011 +0200
34.2 +++ b/src/HOL/HOLCF/IOA/meta_theory/TLS.thy Mon Sep 12 07:55:43 2011 +0200
34.3 @@ -197,9 +197,9 @@
34.4 apply (tactic {* pair_tac @{context} "a" 1 *})
34.5 apply (tactic {* Seq_case_simp_tac @{context} "s" 1 *})
34.6 apply blast
34.7 -apply fastsimp
34.8 +apply fastforce
34.9 apply (tactic {* pair_tac @{context} "a" 1 *})
34.10 - apply fastsimp
34.11 + apply fastforce
34.12 done
34.13
34.14 end
35.1 --- a/src/HOL/HOLCF/Library/Stream.thy Sun Sep 11 22:56:05 2011 +0200
35.2 +++ b/src/HOL/HOLCF/Library/Stream.thy Mon Sep 12 07:55:43 2011 +0200
35.3 @@ -865,7 +865,7 @@
35.4 apply (drule ex_sconc,auto)
35.5 apply (erule contrapos_pp)
35.6 apply (insert stream_finite_i_rt)
35.7 - apply (fastsimp simp add: slen_infinite,auto)
35.8 + apply (fastforce simp add: slen_infinite,auto)
35.9 by (simp add: sconc_def)
35.10
35.11 lemma sconc_finite: "(#x~=\<infinity> & #y~=\<infinity>) = (#(x ooo y)~=\<infinity>)"
36.1 --- a/src/HOL/Hilbert_Choice.thy Sun Sep 11 22:56:05 2011 +0200
36.2 +++ b/src/HOL/Hilbert_Choice.thy Mon Sep 12 07:55:43 2011 +0200
36.3 @@ -148,7 +148,7 @@
36.4
36.5 lemma inv_into_image_cancel[simp]:
36.6 "inj_on f A ==> S <= A ==> inv_into A f ` f ` S = S"
36.7 -by(fastsimp simp: image_def)
36.8 +by(fastforce simp: image_def)
36.9
36.10 lemma inj_imp_surj_inv: "inj f ==> surj (inv f)"
36.11 by (blast intro!: surjI inv_into_f_f)
37.1 --- a/src/HOL/Hoare/Arith2.thy Sun Sep 11 22:56:05 2011 +0200
37.2 +++ b/src/HOL/Hoare/Arith2.thy Mon Sep 12 07:55:43 2011 +0200
37.3 @@ -39,12 +39,12 @@
37.4
37.5 lemma cd_diff_l: "n<=m ==> cd x m n = cd x (m-n) n"
37.6 apply (unfold cd_def)
37.7 - apply (fastsimp dest: dvd_diffD)
37.8 + apply (fastforce dest: dvd_diffD)
37.9 done
37.10
37.11 lemma cd_diff_r: "m<=n ==> cd x m n = cd x m (n-m)"
37.12 apply (unfold cd_def)
37.13 - apply (fastsimp dest: dvd_diffD)
37.14 + apply (fastforce dest: dvd_diffD)
37.15 done
37.16
37.17
38.1 --- a/src/HOL/Hoare/Heap.thy Sun Sep 11 22:56:05 2011 +0200
38.2 +++ b/src/HOL/Hoare/Heap.thy Mon Sep 12 07:55:43 2011 +0200
38.3 @@ -32,15 +32,15 @@
38.4
38.5 lemma [iff]: "Path h Null xs y = (xs = [] \<and> y = Null)"
38.6 apply(case_tac xs)
38.7 -apply fastsimp
38.8 -apply fastsimp
38.9 +apply fastforce
38.10 +apply fastforce
38.11 done
38.12
38.13 lemma [simp]: "Path h (Ref a) as z =
38.14 (as = [] \<and> z = Ref a \<or> (\<exists>bs. as = a#bs \<and> Path h (h a) bs z))"
38.15 apply(case_tac as)
38.16 -apply fastsimp
38.17 -apply fastsimp
38.18 +apply fastforce
38.19 +apply fastforce
38.20 done
38.21
38.22 lemma [simp]: "\<And>x. Path f x (as@bs) z = (\<exists>y. Path f x as y \<and> Path f y bs z)"
38.23 @@ -116,12 +116,12 @@
38.24 lemma List_hd_not_in_tl[simp]: "List h (h a) as \<Longrightarrow> a \<notin> set as"
38.25 apply (clarsimp simp add:in_set_conv_decomp)
38.26 apply(frule List_app[THEN iffD1])
38.27 -apply(fastsimp dest: List_unique)
38.28 +apply(fastforce dest: List_unique)
38.29 done
38.30
38.31 lemma List_distinct[simp]: "\<And>x. List h x as \<Longrightarrow> distinct as"
38.32 apply(induct as, simp)
38.33 -apply(fastsimp dest:List_hd_not_in_tl)
38.34 +apply(fastforce dest:List_hd_not_in_tl)
38.35 done
38.36
38.37 lemma Path_is_List:
38.38 @@ -165,7 +165,7 @@
38.39 lemma list_Ref_conv[simp]:
38.40 "islist h (h a) \<Longrightarrow> list h (Ref a) = a # list h (h a)"
38.41 apply(insert List_Ref[of h])
38.42 -apply(fastsimp simp:List_conv_islist_list)
38.43 +apply(fastforce simp:List_conv_islist_list)
38.44 done
38.45
38.46 lemma [simp]: "islist h (h a) \<Longrightarrow> a \<notin> set(list h (h a))"
39.1 --- a/src/HOL/Hoare/Hoare_Logic_Abort.thy Sun Sep 11 22:56:05 2011 +0200
39.2 +++ b/src/HOL/Hoare/Hoare_Logic_Abort.thy Mon Sep 12 07:55:43 2011 +0200
39.3 @@ -76,7 +76,7 @@
39.4 lemma CondRule:
39.5 "p \<subseteq> {s. (s \<in> b \<longrightarrow> s \<in> w) \<and> (s \<notin> b \<longrightarrow> s \<in> w')}
39.6 \<Longrightarrow> Valid w c1 q \<Longrightarrow> Valid w' c2 q \<Longrightarrow> Valid p (Cond b c1 c2) q"
39.7 -by (fastsimp simp:Valid_def image_def)
39.8 +by (fastforce simp:Valid_def image_def)
39.9
39.10 lemma While_aux:
39.11 assumes "Sem (WHILE b INV {i} DO c OD) s s'"
40.1 --- a/src/HOL/Hoare/Pointer_Examples.thy Sun Sep 11 22:56:05 2011 +0200
40.2 +++ b/src/HOL/Hoare/Pointer_Examples.thy Mon Sep 12 07:55:43 2011 +0200
40.3 @@ -23,20 +23,20 @@
40.4 DO r := p; p := p^.tl; r^.tl := q; q := r OD
40.5 {List tl q (rev Ps @ Qs)}"
40.6 apply vcg_simp
40.7 - apply fastsimp
40.8 - apply(fastsimp intro:notin_List_update[THEN iffD2])
40.9 + apply fastforce
40.10 + apply(fastforce intro:notin_List_update[THEN iffD2])
40.11 (* explicit:
40.12 apply clarify
40.13 apply(rename_tac ps b qs)
40.14 apply clarsimp
40.15 apply(rename_tac ps')
40.16 - apply(fastsimp intro:notin_List_update[THEN iffD2])
40.17 + apply(fastforce intro:notin_List_update[THEN iffD2])
40.18 apply(rule_tac x = ps' in exI)
40.19 apply simp
40.20 apply(rule_tac x = "b#qs" in exI)
40.21 apply simp
40.22 *)
40.23 -apply fastsimp
40.24 +apply fastforce
40.25 done
40.26
40.27 text{* And now with ghost variables @{term ps} and @{term qs}. Even
40.28 @@ -52,8 +52,8 @@
40.29 qs := (hd ps) # qs; ps := tl ps OD
40.30 {List next q (rev Ps @ Qs)}"
40.31 apply vcg_simp
40.32 - apply fastsimp
40.33 -apply fastsimp
40.34 + apply fastforce
40.35 +apply fastforce
40.36 done
40.37
40.38 text "A longer readable version:"
40.39 @@ -69,7 +69,7 @@
40.40 fix tl p q r
40.41 assume "List tl p Ps \<and> List tl q Qs \<and> set Ps \<inter> set Qs = {}"
40.42 thus "\<exists>ps qs. List tl p ps \<and> List tl q qs \<and> set ps \<inter> set qs = {} \<and>
40.43 - rev ps @ qs = rev Ps @ Qs" by fastsimp
40.44 + rev ps @ qs = rev Ps @ Qs" by fastforce
40.45 next
40.46 fix tl p q r
40.47 assume "(\<exists>ps qs. List tl p ps \<and> List tl q qs \<and> set ps \<inter> set qs = {} \<and>
40.48 @@ -77,12 +77,12 @@
40.49 (is "(\<exists>ps qs. ?I ps qs) \<and> _")
40.50 then obtain ps qs a where I: "?I ps qs \<and> p = Ref a"
40.51 by fast
40.52 - then obtain ps' where "ps = a # ps'" by fastsimp
40.53 + then obtain ps' where "ps = a # ps'" by fastforce
40.54 hence "List (tl(p \<rightarrow> q)) (p^.tl) ps' \<and>
40.55 List (tl(p \<rightarrow> q)) p (a#qs) \<and>
40.56 set ps' \<inter> set (a#qs) = {} \<and>
40.57 rev ps' @ (a#qs) = rev Ps @ Qs"
40.58 - using I by fastsimp
40.59 + using I by fastforce
40.60 thus "\<exists>ps' qs'. List (tl(p \<rightarrow> q)) (p^.tl) ps' \<and>
40.61 List (tl(p \<rightarrow> q)) p qs' \<and>
40.62 set ps' \<inter> set qs' = {} \<and>
40.63 @@ -91,7 +91,7 @@
40.64 fix tl p q r
40.65 assume "(\<exists>ps qs. List tl p ps \<and> List tl q qs \<and> set ps \<inter> set qs = {} \<and>
40.66 rev ps @ qs = rev Ps @ Qs) \<and> \<not> p \<noteq> Null"
40.67 - thus "List tl q (rev Ps @ Qs)" by fastsimp
40.68 + thus "List tl q (rev Ps @ Qs)" by fastforce
40.69 qed
40.70
40.71
40.72 @@ -144,7 +144,7 @@
40.73 {p = X}"
40.74 apply vcg_simp
40.75 apply blast
40.76 - apply fastsimp
40.77 + apply fastforce
40.78 apply clarsimp
40.79 done
40.80
40.81 @@ -196,7 +196,7 @@
40.82 {List tl p (splice Ps Qs)}"
40.83 apply vcg_simp
40.84 apply(rule_tac x = "[]" in exI)
40.85 - apply fastsimp
40.86 + apply fastforce
40.87 apply clarsimp
40.88 apply(rename_tac y bs qqs)
40.89 apply(case_tac bs) apply simp
40.90 @@ -208,7 +208,7 @@
40.91 apply simp
40.92 apply(rule_tac x = "qqs" in exI)
40.93 apply simp
40.94 -apply (fastsimp simp:List_app)
40.95 +apply (fastforce simp:List_app)
40.96 done
40.97
40.98
40.99 @@ -259,13 +259,13 @@
40.100 apply vcg_simp
40.101 apply (simp_all add: cand_def cor_def)
40.102
40.103 -apply (fastsimp)
40.104 +apply (fastforce)
40.105
40.106 apply clarsimp
40.107 apply(rule conjI)
40.108 apply clarsimp
40.109 apply(rule conjI)
40.110 -apply (fastsimp intro!:Path_snoc intro:Path_upd[THEN iffD2] notin_List_update[THEN iffD2] simp:eq_sym_conv)
40.111 +apply (fastforce intro!:Path_snoc intro:Path_upd[THEN iffD2] notin_List_update[THEN iffD2] simp:eq_sym_conv)
40.112 apply clarsimp
40.113 apply(rule conjI)
40.114 apply (clarsimp)
40.115 @@ -282,7 +282,7 @@
40.116 apply(clarsimp simp:eq_sym_conv)
40.117 apply(rule_tac x = "bsa" in exI)
40.118 apply(simp)
40.119 -apply (fastsimp intro!:Path_snoc intro:Path_upd[THEN iffD2] notin_List_update[THEN iffD2] simp:eq_sym_conv)
40.120 +apply (fastforce intro!:Path_snoc intro:Path_upd[THEN iffD2] notin_List_update[THEN iffD2] simp:eq_sym_conv)
40.121
40.122 apply(clarsimp simp add:List_app)
40.123 done
40.124 @@ -311,7 +311,7 @@
40.125 apply vcg_simp
40.126 apply (simp_all add: cand_def cor_def)
40.127
40.128 -apply (fastsimp)
40.129 +apply (fastforce)
40.130
40.131 apply clarsimp
40.132 apply(rule conjI)
40.133 @@ -393,8 +393,8 @@
40.134 apply vcg_simp
40.135
40.136 apply (simp_all add: cand_def cor_def)
40.137 - apply (fastsimp)
40.138 - apply (fastsimp simp: eq_sym_conv)
40.139 + apply (fastforce)
40.140 + apply (fastforce simp: eq_sym_conv)
40.141 apply(clarsimp)
40.142 done
40.143
40.144 @@ -470,7 +470,7 @@
40.145 apply clarsimp
40.146 apply clarsimp
40.147 apply (case_tac "(q = Null)")
40.148 - apply (fastsimp intro: Path_is_List)
40.149 + apply (fastforce intro: Path_is_List)
40.150 apply clarsimp
40.151 apply (rule_tac x= "bs" in exI)
40.152 apply (rule_tac x= "y # qs" in exI)
40.153 @@ -506,7 +506,7 @@
40.154 {islist next p \<and> map elem (rev(list next p)) = Xs}"
40.155 apply vcg_simp
40.156 apply (clarsimp simp: subset_insert_iff neq_Nil_conv fun_upd_apply new_notin)
40.157 -apply fastsimp
40.158 +apply fastforce
40.159 done
40.160
40.161
41.1 --- a/src/HOL/Hoare/Pointer_ExamplesAbort.thy Sun Sep 11 22:56:05 2011 +0200
41.2 +++ b/src/HOL/Hoare/Pointer_ExamplesAbort.thy Mon Sep 12 07:55:43 2011 +0200
41.3 @@ -21,9 +21,9 @@
41.4 DO r := p; (p \<noteq> Null \<rightarrow> p := p^.tl); r^.tl := q; q := r OD
41.5 {List tl q (rev Ps @ Qs)}"
41.6 apply vcg_simp
41.7 - apply fastsimp
41.8 - apply(fastsimp intro:notin_List_update[THEN iffD2])
41.9 -apply fastsimp
41.10 + apply fastforce
41.11 + apply(fastforce intro:notin_List_update[THEN iffD2])
41.12 +apply fastforce
41.13 done
41.14
41.15 end
42.1 --- a/src/HOL/Hoare/Pointers0.thy Sun Sep 11 22:56:05 2011 +0200
42.2 +++ b/src/HOL/Hoare/Pointers0.thy Mon Sep 12 07:55:43 2011 +0200
42.3 @@ -51,15 +51,15 @@
42.4
42.5 lemma [iff]: "Path h Null xs y = (xs = [] \<and> y = Null)"
42.6 apply(case_tac xs)
42.7 -apply fastsimp
42.8 -apply fastsimp
42.9 +apply fastforce
42.10 +apply fastforce
42.11 done
42.12
42.13 lemma [simp]: "a \<noteq> Null \<Longrightarrow> Path h a as z =
42.14 (as = [] \<and> z = a \<or> (\<exists>bs. as = a#bs \<and> Path h (h a) bs z))"
42.15 apply(case_tac as)
42.16 -apply fastsimp
42.17 -apply fastsimp
42.18 +apply fastforce
42.19 +apply fastforce
42.20 done
42.21
42.22 lemma [simp]: "\<And>x. Path f x (as@bs) z = (\<exists>y. Path f x as y \<and> Path f y bs z)"
42.23 @@ -110,12 +110,12 @@
42.24 lemma List_hd_not_in_tl[simp]: "List h (h a) as \<Longrightarrow> a \<notin> set as"
42.25 apply (clarsimp simp add:in_set_conv_decomp)
42.26 apply(frule List_app[THEN iffD1])
42.27 -apply(fastsimp dest: List_unique)
42.28 +apply(fastforce dest: List_unique)
42.29 done
42.30
42.31 lemma List_distinct[simp]: "\<And>x. List h x as \<Longrightarrow> distinct as"
42.32 apply(induct as, simp)
42.33 -apply(fastsimp dest:List_hd_not_in_tl)
42.34 +apply(fastforce dest:List_hd_not_in_tl)
42.35 done
42.36
42.37 subsection "Functional abstraction"
42.38 @@ -152,7 +152,7 @@
42.39 lemma list_Ref_conv[simp]:
42.40 "\<lbrakk> a \<noteq> Null; islist h (h a) \<rbrakk> \<Longrightarrow> list h a = a # list h (h a)"
42.41 apply(insert List_Ref[of _ h])
42.42 -apply(fastsimp simp:List_conv_islist_list)
42.43 +apply(fastforce simp:List_conv_islist_list)
42.44 done
42.45
42.46 lemma [simp]: "islist h (h a) \<Longrightarrow> a \<notin> set(list h (h a))"
42.47 @@ -187,8 +187,8 @@
42.48 DO r := p; p := p^.tl; r^.tl := q; q := r OD
42.49 {List tl q (rev Ps @ Qs)}"
42.50 apply vcg_simp
42.51 - apply fastsimp
42.52 - apply(fastsimp intro:notin_List_update[THEN iffD2])
42.53 + apply fastforce
42.54 + apply(fastforce intro:notin_List_update[THEN iffD2])
42.55 (* explicily:
42.56 apply clarify
42.57 apply(rename_tac ps qs)
42.58 @@ -199,7 +199,7 @@
42.59 apply(rule_tac x = "p#qs" in exI)
42.60 apply simp
42.61 *)
42.62 -apply fastsimp
42.63 +apply fastforce
42.64 done
42.65
42.66
42.67 @@ -216,19 +216,19 @@
42.68 fix tl p q r
42.69 assume "List tl p Ps \<and> List tl q Qs \<and> set Ps \<inter> set Qs = {}"
42.70 thus "\<exists>ps qs. List tl p ps \<and> List tl q qs \<and> set ps \<inter> set qs = {} \<and>
42.71 - rev ps @ qs = rev Ps @ Qs" by fastsimp
42.72 + rev ps @ qs = rev Ps @ Qs" by fastforce
42.73 next
42.74 fix tl p q r
42.75 assume "(\<exists>ps qs. List tl p ps \<and> List tl q qs \<and> set ps \<inter> set qs = {} \<and>
42.76 rev ps @ qs = rev Ps @ Qs) \<and> p \<noteq> Null"
42.77 (is "(\<exists>ps qs. ?I ps qs) \<and> _")
42.78 then obtain ps qs where I: "?I ps qs \<and> p \<noteq> Null" by fast
42.79 - then obtain ps' where "ps = p # ps'" by fastsimp
42.80 + then obtain ps' where "ps = p # ps'" by fastforce
42.81 hence "List (tl(p := q)) (p^.tl) ps' \<and>
42.82 List (tl(p := q)) p (p#qs) \<and>
42.83 set ps' \<inter> set (p#qs) = {} \<and>
42.84 rev ps' @ (p#qs) = rev Ps @ Qs"
42.85 - using I by fastsimp
42.86 + using I by fastforce
42.87 thus "\<exists>ps' qs'. List (tl(p := q)) (p^.tl) ps' \<and>
42.88 List (tl(p := q)) p qs' \<and>
42.89 set ps' \<inter> set qs' = {} \<and>
42.90 @@ -237,7 +237,7 @@
42.91 fix tl p q r
42.92 assume "(\<exists>ps qs. List tl p ps \<and> List tl q qs \<and> set ps \<inter> set qs = {} \<and>
42.93 rev ps @ qs = rev Ps @ Qs) \<and> \<not> p \<noteq> Null"
42.94 - thus "List tl q (rev Ps @ Qs)" by fastsimp
42.95 + thus "List tl q (rev Ps @ Qs)" by fastforce
42.96 qed
42.97
42.98
42.99 @@ -276,9 +276,9 @@
42.100 apply vcg_simp
42.101 apply(case_tac "p = Null")
42.102 apply clarsimp
42.103 - apply fastsimp
42.104 + apply fastforce
42.105 apply clarsimp
42.106 - apply fastsimp
42.107 + apply fastforce
42.108 apply clarsimp
42.109 done
42.110
42.111 @@ -293,7 +293,7 @@
42.112 {p = X}"
42.113 apply vcg_simp
42.114 apply blast
42.115 - apply fastsimp
42.116 + apply fastforce
42.117 apply clarsimp
42.118 done
42.119
42.120 @@ -311,7 +311,7 @@
42.121 apply(erule converse_rtranclE)
42.122 apply simp
42.123 apply(simp)
42.124 -apply(fastsimp elim:converse_rtranclE)
42.125 +apply(fastforce elim:converse_rtranclE)
42.126 done
42.127
42.128
42.129 @@ -350,7 +350,7 @@
42.130 {List tl r (merge(Ps,Qs,\<lambda>x y. hd x \<le> hd y))}"
42.131 apply vcg_simp
42.132
42.133 -apply (fastsimp)
42.134 +apply (fastforce)
42.135
42.136 apply clarsimp
42.137 apply(rule conjI)
42.138 @@ -359,7 +359,7 @@
42.139 apply(rule_tac x = "rs @ [s]" in exI)
42.140 apply simp
42.141 apply(rule_tac x = "bs" in exI)
42.142 -apply (fastsimp simp:eq_sym_conv)
42.143 +apply (fastforce simp:eq_sym_conv)
42.144
42.145 apply clarsimp
42.146 apply(rule conjI)
42.147 @@ -428,7 +428,7 @@
42.148 {islist next p \<and> map elem (rev(list next p)) = Xs}"
42.149 apply vcg_simp
42.150 apply (clarsimp simp: subset_insert_iff neq_Nil_conv fun_upd_apply new_notin)
42.151 -apply fastsimp
42.152 +apply fastforce
42.153 done
42.154
42.155
43.1 --- a/src/HOL/Hoare/SchorrWaite.thy Sun Sep 11 22:56:05 2011 +0200
43.2 +++ b/src/HOL/Hoare/SchorrWaite.thy Mon Sep 12 07:55:43 2011 +0200
43.3 @@ -295,20 +295,20 @@
43.4 proof
43.5 show "?L \<subseteq> ?R"
43.6 proof (rule still_reachable)
43.7 - show "addrs ?A \<subseteq> ?Rb\<^sup>* `` addrs ?B" by(fastsimp simp:addrs_def relS_def rel_def addr_p_eq
43.8 + show "addrs ?A \<subseteq> ?Rb\<^sup>* `` addrs ?B" by(fastforce simp:addrs_def relS_def rel_def addr_p_eq
43.9 intro:oneStep_reachable Image_iff[THEN iffD2])
43.10 show "\<forall>(x,y) \<in> ?Ra-?Rb. y \<in> (?Rb\<^sup>* `` addrs ?B)" by (clarsimp simp:relS_def)
43.11 - (fastsimp simp add:rel_def Image_iff addrs_def dest:rel_upd1)
43.12 + (fastforce simp add:rel_def Image_iff addrs_def dest:rel_upd1)
43.13 qed
43.14 show "?R \<subseteq> ?L"
43.15 proof (rule still_reachable)
43.16 show "addrs ?B \<subseteq> ?Ra\<^sup>* `` addrs ?A"
43.17 - by(fastsimp simp:addrs_def rel_defs addr_p_eq
43.18 + by(fastforce simp:addrs_def rel_defs addr_p_eq
43.19 intro:oneStep_reachable Image_iff[THEN iffD2])
43.20 next
43.21 show "\<forall>(x, y)\<in>?Rb-?Ra. y\<in>(?Ra\<^sup>*``addrs ?A)"
43.22 by (clarsimp simp:relS_def)
43.23 - (fastsimp simp add:rel_def Image_iff addrs_def dest:rel_upd2)
43.24 + (fastforce simp add:rel_def Image_iff addrs_def dest:rel_upd2)
43.25 qed
43.26 qed
43.27 with i3 have poI3: "R = reachable ?Rb ?B" by (simp add:reachable_def)
43.28 @@ -326,10 +326,10 @@
43.29 have rewrite: "\<forall>s\<in>set stack_tl. (r(p \<rightarrow> t)) s = r s"
43.30 by (auto simp add:p_notin_stack_tl intro:fun_upd_other)
43.31 show "addrs ?A \<subseteq> ?Rb\<^sup>* `` (addrs ?B \<union> addrs ?T)"
43.32 - by (fastsimp cong:map_cong simp:stack_eq addrs_def rewrite intro:self_reachable)
43.33 + by (fastforce cong:map_cong simp:stack_eq addrs_def rewrite intro:self_reachable)
43.34 show "\<forall>(x, y)\<in>?Ra-?Rb. y\<in>(?Rb\<^sup>*``(addrs ?B \<union> addrs ?T))"
43.35 by (clarsimp simp:restr_def relS_def)
43.36 - (fastsimp simp add:rel_def Image_iff addrs_def dest:rel_upd1)
43.37 + (fastforce simp add:rel_def Image_iff addrs_def dest:rel_upd1)
43.38 qed
43.39 -- "We now bring a term from the right to the left of the subset relation."
43.40 hence subset: "?Ra\<^sup>* `` addrs ?A - ?Rb\<^sup>* `` addrs ?T \<subseteq> ?Rb\<^sup>* `` addrs ?B"
43.41 @@ -404,16 +404,16 @@
43.42 have "?Ra\<^sup>* `` addrs ?A = ?Rb\<^sup>* `` addrs ?B"
43.43 proof (rule still_reachable_eq)
43.44 show "addrs ?A \<subseteq> ?Rb\<^sup>* `` addrs ?B"
43.45 - by(fastsimp simp:addrs_def rel_defs addr_p_eq intro:oneStep_reachable Image_iff[THEN iffD2])
43.46 + by(fastforce simp:addrs_def rel_defs addr_p_eq intro:oneStep_reachable Image_iff[THEN iffD2])
43.47 next
43.48 show "addrs ?B \<subseteq> ?Ra\<^sup>* `` addrs ?A"
43.49 - by(fastsimp simp:addrs_def rel_defs addr_p_eq intro:oneStep_reachable Image_iff[THEN iffD2])
43.50 + by(fastforce simp:addrs_def rel_defs addr_p_eq intro:oneStep_reachable Image_iff[THEN iffD2])
43.51 next
43.52 show "\<forall>(x, y)\<in>?Ra-?Rb. y\<in>(?Rb\<^sup>*``addrs ?B)"
43.53 - by (clarsimp simp:relS_def) (fastsimp simp add:rel_def Image_iff addrs_def fun_upd_apply dest:rel_upd1)
43.54 + by (clarsimp simp:relS_def) (fastforce simp add:rel_def Image_iff addrs_def fun_upd_apply dest:rel_upd1)
43.55 next
43.56 show "\<forall>(x, y)\<in>?Rb-?Ra. y\<in>(?Ra\<^sup>*``addrs ?A)"
43.57 - by (clarsimp simp:relS_def) (fastsimp simp add:rel_def Image_iff addrs_def fun_upd_apply dest:rel_upd2)
43.58 + by (clarsimp simp:relS_def) (fastforce simp add:rel_def Image_iff addrs_def fun_upd_apply dest:rel_upd2)
43.59 qed
43.60 with i3
43.61 have swI3: "?swI3" by (simp add:reachable_def)
43.62 @@ -428,10 +428,10 @@
43.63 have rewrite: "(\<forall>s\<in>set stack_tl. (r(addr p := l(addr p))) s = r s)"
43.64 by (auto simp add:p_notin_stack_tl intro:fun_upd_other)
43.65 show "addrs ?A \<subseteq> ?Rb\<^sup>* `` (addrs ?B \<union> addrs ?T)"
43.66 - by (fastsimp cong:map_cong simp:stack_eq addrs_def rewrite intro:self_reachable)
43.67 + by (fastforce cong:map_cong simp:stack_eq addrs_def rewrite intro:self_reachable)
43.68 next
43.69 show "\<forall>(x, y)\<in>?Ra-?Rb. y\<in>(?Rb\<^sup>*``(addrs ?B \<union> addrs ?T))"
43.70 - by (clarsimp simp:relS_def restr_def) (fastsimp simp add:rel_def Image_iff addrs_def fun_upd_apply dest:rel_upd1)
43.71 + by (clarsimp simp:relS_def restr_def) (fastforce simp add:rel_def Image_iff addrs_def fun_upd_apply dest:rel_upd1)
43.72 qed
43.73 then have subset: "?Ra\<^sup>*``addrs ?A - ?Rb\<^sup>*``addrs ?T \<subseteq> ?Rb\<^sup>*``addrs ?B"
43.74 by blast
43.75 @@ -501,16 +501,16 @@
43.76 have "?Ra\<^sup>* `` addrs ?A = ?Rb\<^sup>* `` addrs ?B"
43.77 proof (rule still_reachable_eq)
43.78 show "addrs ?A \<subseteq> ?Rb\<^sup>* `` addrs ?B"
43.79 - by(fastsimp simp:addrs_def rel_defs addr_t_eq intro:oneStep_reachable Image_iff[THEN iffD2])
43.80 + by(fastforce simp:addrs_def rel_defs addr_t_eq intro:oneStep_reachable Image_iff[THEN iffD2])
43.81 next
43.82 show "addrs ?B \<subseteq> ?Ra\<^sup>* `` addrs ?A"
43.83 - by(fastsimp simp:addrs_def rel_defs addr_t_eq intro:oneStep_reachable Image_iff[THEN iffD2])
43.84 + by(fastforce simp:addrs_def rel_defs addr_t_eq intro:oneStep_reachable Image_iff[THEN iffD2])
43.85 next
43.86 show "\<forall>(x, y)\<in>?Ra-?Rb. y\<in>(?Rb\<^sup>*``addrs ?B)"
43.87 - by (clarsimp simp:relS_def) (fastsimp simp add:rel_def Image_iff addrs_def dest:rel_upd1)
43.88 + by (clarsimp simp:relS_def) (fastforce simp add:rel_def Image_iff addrs_def dest:rel_upd1)
43.89 next
43.90 show "\<forall>(x, y)\<in>?Rb-?Ra. y\<in>(?Ra\<^sup>*``addrs ?A)"
43.91 - by (clarsimp simp:relS_def) (fastsimp simp add:rel_def Image_iff addrs_def fun_upd_apply dest:rel_upd2)
43.92 + by (clarsimp simp:relS_def) (fastforce simp add:rel_def Image_iff addrs_def fun_upd_apply dest:rel_upd2)
43.93 qed
43.94 with i3
43.95 have puI3: "?puI3" by (simp add:reachable_def)
43.96 @@ -523,11 +523,11 @@
43.97 have "?Ra\<^sup>*``addrs ?A \<subseteq> ?Rb\<^sup>*``(addrs ?B \<union> addrs ?T)"
43.98 proof (rule still_reachable)
43.99 show "addrs ?A \<subseteq> ?Rb\<^sup>* `` (addrs ?B \<union> addrs ?T)"
43.100 - by (fastsimp simp:new_stack_eq addrs_def intro:self_reachable)
43.101 + by (fastforce simp:new_stack_eq addrs_def intro:self_reachable)
43.102 next
43.103 show "\<forall>(x, y)\<in>?Ra-?Rb. y\<in>(?Rb\<^sup>*``(addrs ?B \<union> addrs ?T))"
43.104 by (clarsimp simp:relS_def new_stack_eq restr_un restr_upd)
43.105 - (fastsimp simp add:rel_def Image_iff restr_def addrs_def fun_upd_apply addr_t_eq dest:rel_upd3)
43.106 + (fastforce simp add:rel_def Image_iff restr_def addrs_def fun_upd_apply addr_t_eq dest:rel_upd3)
43.107 qed
43.108 then have subset: "?Ra\<^sup>*``addrs ?A - ?Rb\<^sup>*``addrs ?T \<subseteq> ?Rb\<^sup>*``addrs ?B"
43.109 by blast
43.110 @@ -537,7 +537,7 @@
43.111 assume a: "x \<in> R \<and> \<not> ?new_m x"
43.112 have xDisj: "x=(addr t) \<or> x\<noteq>(addr t)" by simp
43.113 with i4 a have inc: "x \<in> ?Ra\<^sup>*``addrs ?A"
43.114 - by (fastsimp simp:addr_t_eq addrs_def reachable_def intro:self_reachable)
43.115 + by (fastforce simp:addr_t_eq addrs_def reachable_def intro:self_reachable)
43.116 have exc: "x \<notin> ?Rb\<^sup>*`` addrs ?T"
43.117 using xDisj a n_m_addr_t
43.118 by (clarsimp simp add:addrs_def addr_t_eq)
44.1 --- a/src/HOL/Hoare/SepLogHeap.thy Sun Sep 11 22:56:05 2011 +0200
44.2 +++ b/src/HOL/Hoare/SepLogHeap.thy Mon Sep 12 07:55:43 2011 +0200
44.3 @@ -72,7 +72,7 @@
44.4 lemma List_hd_not_in_tl[simp]: "List h b as \<Longrightarrow> h a = Some b \<Longrightarrow> a \<notin> set as"
44.5 apply (clarsimp simp add:in_set_conv_decomp)
44.6 apply(frule List_app[THEN iffD1])
44.7 -apply(fastsimp dest: List_unique)
44.8 +apply(fastforce dest: List_unique)
44.9 done
44.10
44.11 lemma List_distinct[simp]: "\<And>x. List h x as \<Longrightarrow> distinct as"
45.1 --- a/src/HOL/Hoare/Separation.thy Sun Sep 11 22:56:05 2011 +0200
45.2 +++ b/src/HOL/Hoare/Separation.thy Mon Sep 12 07:55:43 2011 +0200
45.3 @@ -191,7 +191,7 @@
45.4 apply vcg
45.5 apply(simp_all add: star_def ortho_def singl_def)
45.6
45.7 -apply fastsimp
45.8 +apply fastforce
45.9
45.10 apply (clarsimp simp add:List_non_null)
45.11 apply(rename_tac ps')
45.12 @@ -214,7 +214,7 @@
45.13 apply(simp)
45.14 apply fast
45.15
45.16 -apply(fastsimp)
45.17 +apply(fastforce)
45.18 done
45.19
45.20 end
46.1 --- a/src/HOL/Hoare_Parallel/OG_Examples.thy Sun Sep 11 22:56:05 2011 +0200
46.2 +++ b/src/HOL/Hoare_Parallel/OG_Examples.thy Mon Sep 12 07:55:43 2011 +0200
46.3 @@ -192,7 +192,7 @@
46.4 --{* 6 subgoals left *}
46.5 prefer 6
46.6 apply(erule_tac x=i in allE)
46.7 -apply fastsimp
46.8 +apply fastforce
46.9 --{* 5 subgoals left *}
46.10 prefer 5
46.11 apply(case_tac [!] "j=k")
47.1 --- a/src/HOL/Hoare_Parallel/RG_Examples.thy Sun Sep 11 22:56:05 2011 +0200
47.2 +++ b/src/HOL/Hoare_Parallel/RG_Examples.thy Mon Sep 12 07:55:43 2011 +0200
47.3 @@ -286,7 +286,7 @@
47.4 apply force
47.5 apply(rule Basic)
47.6 apply force
47.7 - apply fastsimp
47.8 + apply fastforce
47.9 apply force
47.10 apply force
47.11 apply(rule Basic)
48.1 --- a/src/HOL/IMP/AbsInt0.thy Sun Sep 11 22:56:05 2011 +0200
48.2 +++ b/src/HOL/IMP/AbsInt0.thy Mon Sep 12 07:55:43 2011 +0200
48.3 @@ -36,7 +36,7 @@
48.4
48.5 lemma AI_sound: "(c,s) \<Rightarrow> t \<Longrightarrow> s <: S0 \<Longrightarrow> t <: AI c S0"
48.6 proof(induct c arbitrary: s t S0)
48.7 - case SKIP thus ?case by fastsimp
48.8 + case SKIP thus ?case by fastforce
48.9 next
48.10 case Assign thus ?case
48.11 by (auto simp: lookup_update aval'_sound)
49.1 --- a/src/HOL/IMP/AbsInt0_fun.thy Sun Sep 11 22:56:05 2011 +0200
49.2 +++ b/src/HOL/IMP/AbsInt0_fun.thy Mon Sep 12 07:55:43 2011 +0200
49.3 @@ -71,7 +71,7 @@
49.4 let ?F = "lift f x0"
49.5 obtain k where "pfp_above f x0 = (?F^^k) x0"
49.6 using pfp_funpow `pfp_above f x0 \<noteq> Top`
49.7 - by(fastsimp simp add: pfp_above_def)
49.8 + by(fastforce simp add: pfp_above_def)
49.9 moreover
49.10 { fix n have "(?F^^n) x0 \<sqsubseteq> p"
49.11 proof(induct n)
49.12 @@ -97,7 +97,7 @@
49.13 let ?p = "pfp_above f x0"
49.14 obtain k where 1: "?p = ((f\<up>x0)^^k) x0"
49.15 using pfp_funpow `?p \<noteq> Top`
49.16 - by(fastsimp simp add: pfp_above_def)
49.17 + by(fastforce simp add: pfp_above_def)
49.18 thus ?thesis using chain mono by simp
49.19 qed
49.20
49.21 @@ -174,7 +174,7 @@
49.22
49.23 lemma AI_sound: "(c,s) \<Rightarrow> t \<Longrightarrow> s <: S0 \<Longrightarrow> t <: AI c S0"
49.24 proof(induct c arbitrary: s t S0)
49.25 - case SKIP thus ?case by fastsimp
49.26 + case SKIP thus ?case by fastforce
49.27 next
49.28 case Assign thus ?case by (auto simp: aval'_sound)
49.29 next
50.1 --- a/src/HOL/IMP/AbsInt1.thy Sun Sep 11 22:56:05 2011 +0200
50.2 +++ b/src/HOL/IMP/AbsInt1.thy Mon Sep 12 07:55:43 2011 +0200
50.3 @@ -171,12 +171,12 @@
50.4
50.5 lemma AI_sound: "(c,s) \<Rightarrow> t \<Longrightarrow> s <:: S \<Longrightarrow> t <:: AI c S"
50.6 proof(induct c arbitrary: s t S)
50.7 - case SKIP thus ?case by fastsimp
50.8 + case SKIP thus ?case by fastforce
50.9 next
50.10 case Assign thus ?case
50.11 by (auto simp: lookup_update aval'_sound)
50.12 next
50.13 - case Semi thus ?case by fastsimp
50.14 + case Semi thus ?case by fastforce
50.15 next
50.16 case If thus ?case by (auto simp: in_rep_join_UpI bfilter_sound)
50.17 next
51.1 --- a/src/HOL/IMP/Comp_Rev.thy Sun Sep 11 22:56:05 2011 +0200
51.2 +++ b/src/HOL/IMP/Comp_Rev.thy Mon Sep 12 07:55:43 2011 +0200
51.3 @@ -41,7 +41,7 @@
51.4
51.5 lemma exec_Suc [trans]:
51.6 "\<lbrakk> P \<turnstile> c \<rightarrow> c'; P \<turnstile> c' \<rightarrow>^n c'' \<rbrakk> \<Longrightarrow> P \<turnstile> c \<rightarrow>^(Suc n) c''"
51.7 - by (fastsimp simp del: split_paired_Ex)
51.8 + by (fastforce simp del: split_paired_Ex)
51.9
51.10 lemma exec_exec_n:
51.11 "P \<turnstile> c \<rightarrow>* c' \<Longrightarrow> \<exists>n. P \<turnstile> c \<rightarrow>^n c'"
51.12 @@ -118,7 +118,7 @@
51.13 { fix p assume "p \<in> ?x \<or> p \<in> ?xs"
51.14 hence "p \<in> succs (x#xs) n"
51.15 proof
51.16 - assume "p \<in> ?x" thus ?thesis by (fastsimp simp: succs_def)
51.17 + assume "p \<in> ?x" thus ?thesis by (fastforce simp: succs_def)
51.18 next
51.19 assume "p \<in> ?xs"
51.20 then obtain i where "?isuccs p xs (1+n) i"
51.21 @@ -138,7 +138,7 @@
51.22
51.23 lemma succs_shift:
51.24 "(p - n \<in> succs P 0) = (p \<in> succs P n)"
51.25 - by (fastsimp simp: succs_def isuccs_def split: instr.split)
51.26 + by (fastforce simp: succs_def isuccs_def split: instr.split)
51.27
51.28 lemma inj_op_plus [simp]:
51.29 "inj (op + (i::int))"
51.30 @@ -227,7 +227,7 @@
51.31 case (Semi c1 c2)
51.32 from Semi.prems
51.33 show ?case
51.34 - by (fastsimp dest: Semi.hyps [THEN subsetD])
51.35 + by (fastforce dest: Semi.hyps [THEN subsetD])
51.36 next
51.37 case (If b c1 c2)
51.38 from If.prems
51.39 @@ -289,7 +289,7 @@
51.40 { assume "j0 \<in> {0 ..< isize c}"
51.41 with j0 j rest c
51.42 have ?case
51.43 - by (fastsimp dest!: Suc.hyps intro!: exec_Suc)
51.44 + by (fastforce dest!: Suc.hyps intro!: exec_Suc)
51.45 } moreover {
51.46 assume "j0 \<notin> {0 ..< isize c}"
51.47 moreover
51.48 @@ -298,7 +298,7 @@
51.49 ultimately
51.50 have "j0 \<in> exits c" by (simp add: exits_def)
51.51 with c j0 rest
51.52 - have ?case by fastsimp
51.53 + have ?case by fastforce
51.54 }
51.55 ultimately
51.56 show ?case by cases
51.57 @@ -352,7 +352,7 @@
51.58 by (rule exec1_drop_left)
51.59 also
51.60 then have "i' - isize P \<in> succs P' 0"
51.61 - by (fastsimp dest!: succs_iexec1)
51.62 + by (fastforce dest!: succs_iexec1)
51.63 with `exits P' \<subseteq> {0..}`
51.64 have "isize P \<le> i'" by (auto simp: exits_def)
51.65 from rest this `exits P' \<subseteq> {0..}`
51.66 @@ -383,7 +383,7 @@
51.67 P' \<turnstile> (0,s'',stk'') \<rightarrow>^k2 (j - isize P, s', stk')"
51.68 proof (cases "P")
51.69 case Nil with exec
51.70 - show ?thesis by fastsimp
51.71 + show ?thesis by fastforce
51.72 next
51.73 case Cons
51.74 hence "0 < isize P" by simp
51.75 @@ -398,7 +398,7 @@
51.76 then obtain j0 where "j = isize P + j0" ..
51.77 ultimately
51.78 show ?thesis using exits
51.79 - by (fastsimp dest: exec_n_drop_left)
51.80 + by (fastforce dest: exec_n_drop_left)
51.81 qed
51.82
51.83
51.84 @@ -424,7 +424,7 @@
51.85 "[ADD] \<turnstile> (0,s2,stk2) \<rightarrow>^n3 (1, s', stk')"
51.86 by (auto dest!: exec_n_split_full)
51.87
51.88 - thus ?case by (fastsimp dest: Plus.hyps simp: exec_n_simps)
51.89 + thus ?case by (fastforce dest: Plus.hyps simp: exec_n_simps)
51.90 qed (auto simp: exec_n_simps)
51.91
51.92 lemma bcomp_split:
51.93 @@ -435,7 +435,7 @@
51.94 (i' = isize (bcomp b c i) \<or> i' = i + isize (bcomp b c i)) \<and>
51.95 bcomp b c i @ P' \<turnstile> (i', s'', stk'') \<rightarrow>^m (j, s', stk') \<and>
51.96 n = k + m"
51.97 - using assms by (cases "bcomp b c i = []") (fastsimp dest!: exec_n_drop_right)+
51.98 + using assms by (cases "bcomp b c i = []") (fastforce dest!: exec_n_drop_right)+
51.99
51.100 lemma bcomp_exec_n [dest]:
51.101 assumes "bcomp b c j \<turnstile> (0, s, stk) \<rightarrow>^n (i, s', stk')"
51.102 @@ -448,7 +448,7 @@
51.103 next
51.104 case (Not b)
51.105 from Not.prems show ?case
51.106 - by (fastsimp dest!: Not.hyps)
51.107 + by (fastforce dest!: Not.hyps)
51.108 next
51.109 case (And b1 b2)
51.110
51.111 @@ -469,7 +469,7 @@
51.112 by (auto dest!: And.hyps)
51.113 with b2 j
51.114 show ?case
51.115 - by (fastsimp dest!: And.hyps simp: exec_n_end split: split_if_asm)
51.116 + by (fastforce dest!: And.hyps simp: exec_n_end split: split_if_asm)
51.117 next
51.118 case Less
51.119 thus ?case by (auto dest!: exec_n_split_full simp: exec_n_simps) (* takes time *)
51.120 @@ -490,10 +490,10 @@
51.121 next
51.122 case (Assign x a)
51.123 thus ?case
51.124 - by simp (fastsimp dest!: exec_n_split_full simp: exec_n_simps)
51.125 + by simp (fastforce dest!: exec_n_split_full simp: exec_n_simps)
51.126 next
51.127 case (Semi c1 c2)
51.128 - thus ?case by (fastsimp dest!: exec_n_split_full)
51.129 + thus ?case by (fastforce dest!: exec_n_split_full)
51.130 next
51.131 case (If b c1 c2)
51.132 note If.hyps [dest!]
51.133 @@ -518,14 +518,14 @@
51.134 "ccomp c1@JMP (isize (ccomp c2))#ccomp c2 \<turnstile>
51.135 (if bval b s then 0 else isize (ccomp c1)+1, s, stk) \<rightarrow>^m
51.136 (1 + isize (ccomp c1) + isize (ccomp c2), t, stk')"
51.137 - by (fastsimp dest: exec_n_drop_left simp: exits_Cons isuccs_def algebra_simps)
51.138 + by (fastforce dest: exec_n_drop_left simp: exits_Cons isuccs_def algebra_simps)
51.139
51.140 show ?case
51.141 proof (cases "bval b s")
51.142 case True with cs'
51.143 show ?thesis
51.144 by simp
51.145 - (fastsimp dest: exec_n_drop_right
51.146 + (fastforce dest: exec_n_drop_right
51.147 split: split_if_asm simp: exec_n_simps)
51.148 next
51.149 case False with cs'
51.150 @@ -545,7 +545,7 @@
51.151 with "1.prems"
51.152 have ?case
51.153 by simp
51.154 - (fastsimp dest!: bcomp_exec_n bcomp_split
51.155 + (fastforce dest!: bcomp_exec_n bcomp_split
51.156 simp: exec_n_simps)
51.157 } moreover {
51.158 assume b: "bval b s"
51.159 @@ -558,7 +558,7 @@
51.160 obtain k where
51.161 cs: "?cs \<turnstile> (isize ?bs, s, stk) \<rightarrow>^k (isize ?cs, t, stk')" and
51.162 k: "k \<le> n"
51.163 - by (fastsimp dest!: bcomp_split)
51.164 + by (fastforce dest!: bcomp_split)
51.165
51.166 have ?case
51.167 proof cases
52.1 --- a/src/HOL/IMP/Compiler.thy Sun Sep 11 22:56:05 2011 +0200
52.2 +++ b/src/HOL/IMP/Compiler.thy Mon Sep 12 07:55:43 2011 +0200
52.3 @@ -94,7 +94,7 @@
52.4 subsection{* Verification infrastructure *}
52.5
52.6 lemma exec_trans: "P \<turnstile> c \<rightarrow>* c' \<Longrightarrow> P \<turnstile> c' \<rightarrow>* c'' \<Longrightarrow> P \<turnstile> c \<rightarrow>* c''"
52.7 - by (induct rule: exec.induct) fastsimp+
52.8 + by (induct rule: exec.induct) fastforce+
52.9
52.10 inductive_cases iexec1_cases [elim!]:
52.11 "LOADI n \<turnstile>i c \<rightarrow> c'"
52.12 @@ -131,7 +131,7 @@
52.13 by auto
52.14
52.15 lemma exec_appendR: "P \<turnstile> c \<rightarrow>* c' \<Longrightarrow> P@P' \<turnstile> c \<rightarrow>* c'"
52.16 - by (induct rule: exec.induct) (fastsimp intro: exec1_appendR)+
52.17 + by (induct rule: exec.induct) (fastforce intro: exec1_appendR)+
52.18
52.19 lemma iexec1_shiftI:
52.20 assumes "X \<turnstile>i (i,s,stk) \<rightarrow> (i',s',stk')"
52.21 @@ -201,7 +201,7 @@
52.22
52.23 lemma acomp_correct[intro]:
52.24 "acomp a \<turnstile> (0,s,stk) \<rightarrow>* (isize(acomp a),s,aval a s#stk)"
52.25 - by (induct a arbitrary: stk) fastsimp+
52.26 + by (induct a arbitrary: stk) fastforce+
52.27
52.28 fun bcomp :: "bexp \<Rightarrow> bool \<Rightarrow> int \<Rightarrow> instr list" where
52.29 "bcomp (B bv) c n = (if bv=c then [JMP n] else [])" |
52.30 @@ -224,14 +224,14 @@
52.31 (0,s,stk) \<rightarrow>* (isize(bcomp b c n) + (if c = bval b s then n else 0),s,stk)"
52.32 proof(induct b arbitrary: c n m)
52.33 case Not
52.34 - from Not(1)[where c="~c"] Not(2) show ?case by fastsimp
52.35 + from Not(1)[where c="~c"] Not(2) show ?case by fastforce
52.36 next
52.37 case (And b1 b2)
52.38 from And(1)[of "if c then isize (bcomp b2 c n) else isize (bcomp b2 c n) + n"
52.39 "False"]
52.40 And(2)[of n "c"] And(3)
52.41 - show ?case by fastsimp
52.42 -qed fastsimp+
52.43 + show ?case by fastforce
52.44 +qed fastforce+
52.45
52.46 fun ccomp :: "com \<Rightarrow> instr list" where
52.47 "ccomp SKIP = []" |
52.48 @@ -258,15 +258,15 @@
52.49 "(c,s) \<Rightarrow> t \<Longrightarrow> ccomp c \<turnstile> (0,s,stk) \<rightarrow>* (isize(ccomp c),t,stk)"
52.50 proof(induct arbitrary: stk rule: big_step_induct)
52.51 case (Assign x a s)
52.52 - show ?case by (fastsimp simp:fun_upd_def cong: if_cong)
52.53 + show ?case by (fastforce simp:fun_upd_def cong: if_cong)
52.54 next
52.55 case (Semi c1 s1 s2 c2 s3)
52.56 let ?cc1 = "ccomp c1" let ?cc2 = "ccomp c2"
52.57 have "?cc1 @ ?cc2 \<turnstile> (0,s1,stk) \<rightarrow>* (isize ?cc1,s2,stk)"
52.58 - using Semi.hyps(2) by fastsimp
52.59 + using Semi.hyps(2) by fastforce
52.60 moreover
52.61 have "?cc1 @ ?cc2 \<turnstile> (isize ?cc1,s2,stk) \<rightarrow>* (isize(?cc1 @ ?cc2),s3,stk)"
52.62 - using Semi.hyps(4) by fastsimp
52.63 + using Semi.hyps(4) by fastforce
52.64 ultimately show ?case by simp (blast intro: exec_trans)
52.65 next
52.66 case (WhileTrue b s1 c s2 s3)
52.67 @@ -274,13 +274,13 @@
52.68 let ?cb = "bcomp b False (isize ?cc + 1)"
52.69 let ?cw = "ccomp(WHILE b DO c)"
52.70 have "?cw \<turnstile> (0,s1,stk) \<rightarrow>* (isize ?cb + isize ?cc,s2,stk)"
52.71 - using WhileTrue(1,3) by fastsimp
52.72 + using WhileTrue(1,3) by fastforce
52.73 moreover
52.74 have "?cw \<turnstile> (isize ?cb + isize ?cc,s2,stk) \<rightarrow>* (0,s2,stk)"
52.75 - by fastsimp
52.76 + by fastforce
52.77 moreover
52.78 have "?cw \<turnstile> (0,s2,stk) \<rightarrow>* (isize ?cw,s3,stk)" by(rule WhileTrue(5))
52.79 ultimately show ?case by(blast intro: exec_trans)
52.80 -qed fastsimp+
52.81 +qed fastforce+
52.82
52.83 end
53.1 --- a/src/HOL/IMP/Def_Ass_Sound_Small.thy Sun Sep 11 22:56:05 2011 +0200
53.2 +++ b/src/HOL/IMP/Def_Ass_Sound_Small.thy Mon Sep 12 07:55:43 2011 +0200
53.3 @@ -14,7 +14,7 @@
53.4 then obtain bv where "bval b s = Some bv" by (auto dest!:bval_Some)
53.5 then show ?case
53.6 by(cases bv)(auto intro: small_step.IfTrue small_step.IfFalse)
53.7 -qed (fastsimp intro: small_step.intros)+
53.8 +qed (fastforce intro: small_step.intros)+
53.9
53.10 lemma D_mono: "D A c M \<Longrightarrow> A \<subseteq> A' \<Longrightarrow> EX M'. D A' c M' & M <= M'"
53.11 proof (induct c arbitrary: A A' M)
53.12 @@ -26,7 +26,7 @@
53.13 with If.hyps `A \<subseteq> A'` obtain M1' M2'
53.14 where "D A' c1 M1'" "D A' c2 M2'" and "M1 \<subseteq> M1'" "M2 \<subseteq> M2'" by metis
53.15 hence "D A' (IF b THEN c1 ELSE c2) (M1' \<inter> M2')" and "M \<subseteq> M1' \<inter> M2'"
53.16 - using `vars b \<subseteq> A` `A \<subseteq> A'` `M = M1 \<inter> M2` by(fastsimp intro: D.intros)+
53.17 + using `vars b \<subseteq> A` `A \<subseteq> A'` `M = M1 \<inter> M2` by(fastforce intro: D.intros)+
53.18 thus ?case by metis
53.19 next
53.20 case While thus ?case by auto (metis D.intros(5) subset_trans)
54.1 --- a/src/HOL/IMP/Fold.thy Sun Sep 11 22:56:05 2011 +0200
54.2 +++ b/src/HOL/IMP/Fold.thy Mon Sep 12 07:55:43 2011 +0200
54.3 @@ -56,7 +56,7 @@
54.4
54.5 lemma approx_merge:
54.6 "approx t1 s \<or> approx t2 s \<Longrightarrow> approx (merge t1 t2) s"
54.7 - by (fastsimp simp: merge_def approx_def)
54.8 + by (fastforce simp: merge_def approx_def)
54.9
54.10 lemma approx_map_le:
54.11 "approx t2 s \<Longrightarrow> t1 \<subseteq>\<^sub>m t2 \<Longrightarrow> approx t1 s"
54.12 @@ -385,7 +385,7 @@
54.13 IF Fold.bsimp_const b t THEN bfold c1 t ELSE bfold c2 t"
54.14 by (auto intro: equiv_up_to_if_weak simp: bequiv_up_to_def)
54.15 thus ?case using If
54.16 - by (fastsimp simp: bvalsimp_const_B split: bexp.splits bool.splits
54.17 + by (fastforce simp: bvalsimp_const_B split: bexp.splits bool.splits
54.18 intro: equiv_up_to_trans)
54.19 next
54.20 case (While b c)
55.1 --- a/src/HOL/IMP/HoareT.thy Sun Sep 11 22:56:05 2011 +0200
55.2 +++ b/src/HOL/IMP/HoareT.thy Mon Sep 12 07:55:43 2011 +0200
55.3 @@ -70,7 +70,7 @@
55.4 apply (simp add: atLeastAtMostPlus1_int_conv algebra_simps)
55.5 apply clarsimp
55.6 apply arith
55.7 -apply fastsimp
55.8 +apply fastforce
55.9 apply(rule Semi)
55.10 prefer 2
55.11 apply(rule Assign)
55.12 @@ -95,7 +95,7 @@
55.13 qed
55.14 next
55.15 case If thus ?case by auto blast
55.16 -qed fastsimp+
55.17 +qed fastforce+
55.18
55.19
55.20 text{*
56.1 --- a/src/HOL/IMP/Hoare_Examples.thy Sun Sep 11 22:56:05 2011 +0200
56.2 +++ b/src/HOL/IMP/Hoare_Examples.thy Mon Sep 12 07:55:43 2011 +0200
56.3 @@ -59,8 +59,8 @@
56.4 prefer 2
56.5 apply(rule Assign)
56.6 apply(rule Assign')
56.7 -apply(fastsimp simp: atLeastAtMostPlus1_int_conv algebra_simps)
56.8 -apply(fastsimp)
56.9 +apply(fastforce simp: atLeastAtMostPlus1_int_conv algebra_simps)
56.10 +apply(fastforce)
56.11 apply(rule Semi)
56.12 prefer 2
56.13 apply(rule Assign)
57.1 --- a/src/HOL/IMP/Sem_Equiv.thy Sun Sep 11 22:56:05 2011 +0200
57.2 +++ b/src/HOL/IMP/Sem_Equiv.thy Mon Sep 12 07:55:43 2011 +0200
57.3 @@ -107,7 +107,7 @@
57.4 next
57.5 case WhileFalse
57.6 thus ?case by (auto simp: bequiv_up_to_def)
57.7 -qed (fastsimp simp: equiv_up_to_def bequiv_up_to_def hoare_valid_def)+
57.8 +qed (fastforce simp: equiv_up_to_def bequiv_up_to_def hoare_valid_def)+
57.9
57.10 lemma bequiv_context_subst:
57.11 "P \<Turnstile> b <\<sim>> b' \<Longrightarrow> (P s \<and> bval b s) = (P s \<and> bval b' s)"
57.12 @@ -128,7 +128,7 @@
57.13 lemma equiv_up_to_while_weak:
57.14 "P \<Turnstile> b <\<sim>> b' \<Longrightarrow> P \<Turnstile> c \<sim> c' \<Longrightarrow> \<Turnstile> {P} c {P} \<Longrightarrow>
57.15 P \<Turnstile> WHILE b DO c \<sim> WHILE b' DO c'"
57.16 - by (fastsimp elim!: equiv_up_to_while equiv_up_to_weaken
57.17 + by (fastforce elim!: equiv_up_to_while equiv_up_to_weaken
57.18 simp: hoare_valid_def)
57.19
57.20 lemma equiv_up_to_if:
57.21 @@ -139,7 +139,7 @@
57.22 lemma equiv_up_to_if_weak:
57.23 "P \<Turnstile> b <\<sim>> b' \<Longrightarrow> P \<Turnstile> c \<sim> c' \<Longrightarrow> P \<Turnstile> d \<sim> d' \<Longrightarrow>
57.24 P \<Turnstile> IF b THEN c ELSE d \<sim> IF b' THEN c' ELSE d'"
57.25 - by (fastsimp elim!: equiv_up_to_if equiv_up_to_weaken)
57.26 + by (fastforce elim!: equiv_up_to_if equiv_up_to_weaken)
57.27
57.28 lemma equiv_up_to_if_True [intro!]:
57.29 "(\<And>s. P s \<Longrightarrow> bval b s) \<Longrightarrow> P \<Turnstile> IF b THEN c1 ELSE c2 \<sim> c1"
58.1 --- a/src/HOL/IMP/Types.thy Sun Sep 11 22:56:05 2011 +0200
58.2 +++ b/src/HOL/IMP/Types.thy Mon Sep 12 07:55:43 2011 +0200
58.3 @@ -120,7 +120,7 @@
58.4 lemma apreservation:
58.5 "\<Gamma> \<turnstile> a : \<tau> \<Longrightarrow> taval a s v \<Longrightarrow> \<Gamma> \<turnstile> s \<Longrightarrow> type v = \<tau>"
58.6 apply(induct arbitrary: v rule: atyping.induct)
58.7 -apply (fastsimp simp: styping_def)+
58.8 +apply (fastforce simp: styping_def)+
58.9 done
58.10
58.11 lemma aprogress: "\<Gamma> \<turnstile> a : \<tau> \<Longrightarrow> \<Gamma> \<turnstile> s \<Longrightarrow> \<exists>v. taval a s v"
58.12 @@ -131,11 +131,11 @@
58.13 proof (cases v1)
58.14 case Iv
58.15 with Plus_ty(1,3,5) v show ?thesis
58.16 - by(fastsimp intro: taval.intros(4) dest!: apreservation)
58.17 + by(fastforce intro: taval.intros(4) dest!: apreservation)
58.18 next
58.19 case Rv
58.20 with Plus_ty(1,3,5) v show ?thesis
58.21 - by(fastsimp intro: taval.intros(5) dest!: apreservation)
58.22 + by(fastforce intro: taval.intros(5) dest!: apreservation)
58.23 qed
58.24 qed (auto intro: taval.intros)
58.25
58.26 @@ -148,11 +148,11 @@
58.27 proof (cases v1)
58.28 case Iv
58.29 with Less_ty v show ?thesis
58.30 - by (fastsimp intro!: tbval.intros(4) dest!:apreservation)
58.31 + by (fastforce intro!: tbval.intros(4) dest!:apreservation)
58.32 next
58.33 case Rv
58.34 with Less_ty v show ?thesis
58.35 - by (fastsimp intro!: tbval.intros(5) dest!:apreservation)
58.36 + by (fastforce intro!: tbval.intros(5) dest!:apreservation)
58.37 qed
58.38 qed (auto intro: tbval.intros)
58.39
59.1 --- a/src/HOL/IMP/VC.thy Sun Sep 11 22:56:05 2011 +0200
59.2 +++ b/src/HOL/IMP/VC.thy Mon Sep 12 07:55:43 2011 +0200
59.3 @@ -100,7 +100,7 @@
59.4 show ?case (is "\<exists>ac. ?C ac")
59.5 proof
59.6 show "?C(Asemi ac1 ac2)"
59.7 - using ih1 ih2 by (fastsimp elim!: pre_mono vc_mono)
59.8 + using ih1 ih2 by (fastforce elim!: pre_mono vc_mono)
59.9 qed
59.10 next
59.11 case (If P b c1 Q c2)
60.1 --- a/src/HOL/Imperative_HOL/Mrec.thy Sun Sep 11 22:56:05 2011 +0200
60.2 +++ b/src/HOL/Imperative_HOL/Mrec.thy Mon Sep 12 07:55:43 2011 +0200
60.3 @@ -95,11 +95,11 @@
60.4 from mrec have "P x h (snd (the (mrec x h))) (fst (the (mrec x h)))"
60.5 proof (induct arbitrary: r h' rule: mrec.pinduct[OF dom])
60.6 case (1 x h)
60.7 - obtain rr h' where "the (mrec x h) = (rr, h')" by fastsimp
60.8 + obtain rr h' where "the (mrec x h) = (rr, h')" by fastforce
60.9 show ?case
60.10 proof (cases "execute (f x) h")
60.11 case (Some result)
60.12 - then obtain a h1 where exec_f: "execute (f x) h = Some (a, h1)" by fastsimp
60.13 + then obtain a h1 where exec_f: "execute (f x) h = Some (a, h1)" by fastforce
60.14 note Inl' = this
60.15 show ?thesis
60.16 proof (cases a)
60.17 @@ -112,7 +112,7 @@
60.18 show ?thesis
60.19 proof (cases "mrec b h1")
60.20 case (Some result)
60.21 - then obtain aaa h2 where mrec_rec: "mrec b h1 = Some (aaa, h2)" by fastsimp
60.22 + then obtain aaa h2 where mrec_rec: "mrec b h1 = Some (aaa, h2)" by fastforce
60.23 moreover from this have "P b h1 (snd (the (mrec b h1))) (fst (the (mrec b h1)))"
60.24 apply (intro 1(2))
60.25 apply (auto simp add: Inr Inl')
61.1 --- a/src/HOL/Imperative_HOL/ex/Imperative_Quicksort.thy Sun Sep 11 22:56:05 2011 +0200
61.2 +++ b/src/HOL/Imperative_HOL/ex/Imperative_Quicksort.thy Mon Sep 12 07:55:43 2011 +0200
61.3 @@ -105,7 +105,7 @@
61.4 unfolding part1.simps[of a l r p]
61.5 by (elim effect_bindE effect_nthE effect_ifE effect_returnE) auto
61.6 from rec_condition have "l \<le> r - 1" by arith
61.7 - from 1(2) [OF rec_condition False rec2 `l \<le> r - 1`] show ?thesis by fastsimp
61.8 + from 1(2) [OF rec_condition False rec2 `l \<le> r - 1`] show ?thesis by fastforce
61.9 qed
61.10 qed
61.11 qed
61.12 @@ -128,7 +128,7 @@
61.13 case False (* recursive case *)
61.14 with cr 1 show ?thesis
61.15 unfolding part1.simps [of a l r p] swap_def
61.16 - by (auto elim!: effect_bindE effect_ifE effect_nthE effect_returnE effect_updE) fastsimp
61.17 + by (auto elim!: effect_bindE effect_ifE effect_nthE effect_returnE effect_updE) fastforce
61.18 qed
61.19 qed
61.20
61.21 @@ -158,7 +158,7 @@
61.22 unfolding part1.simps[of a l r p]
61.23 by (elim effect_bindE effect_nthE effect_ifE effect_returnE) auto
61.24 from 1(1)[OF rec_condition True rec1]
61.25 - show ?thesis by fastsimp
61.26 + show ?thesis by fastforce
61.27 next
61.28 case False
61.29 with rec_condition cr
61.30 @@ -170,7 +170,7 @@
61.31 "\<forall>i. i < l \<or> r < i \<longrightarrow> Array.get h a ! i = Array.get h1 a ! i"
61.32 unfolding swap_def
61.33 by (elim effect_bindE effect_nthE effect_updE effect_returnE) auto
61.34 - with 1(2) [OF rec_condition False rec2] show ?thesis by fastsimp
61.35 + with 1(2) [OF rec_condition False rec2] show ?thesis by fastforce
61.36 qed
61.37 qed
61.38 qed
61.39 @@ -205,7 +205,7 @@
61.40 unfolding part1.simps[of a l r p]
61.41 by (elim effect_bindE effect_nthE effect_ifE effect_returnE) auto
61.42 from True part_outer_remains[OF rec1] have a_l: "Array.get h' a ! l \<le> p"
61.43 - by fastsimp
61.44 + by fastforce
61.45 have "\<forall>i. (l \<le> i = (l = i \<or> Suc l \<le> i))" by arith
61.46 with 1(1)[OF False True rec1] a_l show ?thesis
61.47 by auto
61.48 @@ -220,7 +220,7 @@
61.49 unfolding swap_def
61.50 by (auto simp add: Array.length_def elim!: effect_bindE effect_nthE effect_updE effect_returnE)
61.51 with part_outer_remains [OF rec2] lr have a_r: "Array.get h' a ! r \<ge> p"
61.52 - by fastsimp
61.53 + by fastforce
61.54 have "\<forall>i. (i \<le> r = (i = r \<or> i \<le> r - 1))" by arith
61.55 with 1(2)[OF lr False rec2] a_r show ?thesis
61.56 by auto
61.57 @@ -268,7 +268,7 @@
61.58 proof -
61.59 from assms part_outer_remains part_returns_index_in_bounds show ?thesis
61.60 unfolding partition.simps swap_def
61.61 - by (elim effect_bindE effect_returnE effect_nthE effect_ifE effect_updE) fastsimp
61.62 + by (elim effect_bindE effect_returnE effect_nthE effect_ifE effect_updE) fastforce
61.63 qed
61.64
61.65 lemma partition_returns_index_in_bounds:
61.66 @@ -311,7 +311,7 @@
61.67 note middle_in_bounds = part_returns_index_in_bounds[OF part this]
61.68 from part_outer_remains[OF part] `l < r`
61.69 have "Array.get h a ! r = Array.get h1 a ! r"
61.70 - by fastsimp
61.71 + by fastforce
61.72 with swap
61.73 have right_remains: "Array.get h a ! r = Array.get h' a ! rs"
61.74 unfolding swap_def
61.75 @@ -328,7 +328,7 @@
61.76 have i_props: "i < Array.length h' a" "i \<noteq> r" "i \<noteq> rs" by auto
61.77 from i_is_left rs_equals have "l \<le> i \<and> i < middle \<or> i = middle" by arith
61.78 with part_partitions[OF part] right_remains True
61.79 - have "Array.get h1 a ! i \<le> Array.get h' a ! rs" by fastsimp
61.80 + have "Array.get h1 a ! i \<le> Array.get h' a ! rs" by fastforce
61.81 with i_props h'_def in_bounds have "Array.get h' a ! i \<le> Array.get h' a ! rs"
61.82 unfolding Array.update_def Array.length_def by simp
61.83 }
61.84 @@ -345,15 +345,15 @@
61.85 have i_props: "i < Array.length h' a" "i \<noteq> r" "i \<noteq> rs" by auto
61.86 from part_partitions[OF part] rs_equals right_remains i_is
61.87 have "Array.get h' a ! rs \<le> Array.get h1 a ! i"
61.88 - by fastsimp
61.89 - with i_props h'_def show ?thesis by fastsimp
61.90 + by fastforce
61.91 + with i_props h'_def show ?thesis by fastforce
61.92 next
61.93 assume i_is: "rs < i \<and> i = r"
61.94 with rs_equals have "Suc middle \<noteq> r" by arith
61.95 with middle_in_bounds `l < r` have "Suc middle \<le> r - 1" by arith
61.96 with part_partitions[OF part] right_remains
61.97 have "Array.get h' a ! rs \<le> Array.get h1 a ! (Suc middle)"
61.98 - by fastsimp
61.99 + by fastforce
61.100 with i_is True rs_equals right_remains h'_def
61.101 show ?thesis using in_bounds
61.102 unfolding Array.update_def Array.length_def
61.103 @@ -370,7 +370,7 @@
61.104 with swap_length_remains in_bounds middle_in_bounds rs_equals
61.105 have i_props: "i < Array.length h' a" "i \<noteq> r" "i \<noteq> rs" by auto
61.106 from part_partitions[OF part] rs_equals right_remains i_is_left
61.107 - have "Array.get h1 a ! i \<le> Array.get h' a ! rs" by fastsimp
61.108 + have "Array.get h1 a ! i \<le> Array.get h' a ! rs" by fastforce
61.109 with i_props h'_def have "Array.get h' a ! i \<le> Array.get h' a ! rs"
61.110 unfolding Array.update_def by simp
61.111 }
61.112 @@ -386,8 +386,8 @@
61.113 have i_props: "i < Array.length h' a" "i \<noteq> r" "i \<noteq> rs" by auto
61.114 from part_partitions[OF part] rs_equals right_remains i_is
61.115 have "Array.get h' a ! rs \<le> Array.get h1 a ! i"
61.116 - by fastsimp
61.117 - with i_props h'_def show ?thesis by fastsimp
61.118 + by fastforce
61.119 + with i_props h'_def show ?thesis by fastforce
61.120 next
61.121 assume i_is: "i = r"
61.122 from i_is False rs_equals right_remains h'_def
61.123 @@ -469,7 +469,7 @@
61.124 assume pivot: "l \<le> p \<and> p \<le> r"
61.125 assume i_outer: "i < l \<or> r < i"
61.126 from partition_outer_remains [OF part True] i_outer
61.127 - have "Array.get h a !i = Array.get h1 a ! i" by fastsimp
61.128 + have "Array.get h a !i = Array.get h1 a ! i" by fastforce
61.129 moreover
61.130 with 1(1) [OF True pivot qs1] pivot i_outer
61.131 have "Array.get h1 a ! i = Array.get h2 a ! i" by auto
61.132 @@ -579,7 +579,7 @@
61.133 unfolding Array.length_def subarray_def by auto
61.134 with length_remains[OF effect] have "sorted (Array.get h' a)"
61.135 unfolding Array.length_def by simp
61.136 - with quicksort_permutes [OF effect] properties_for_sort show ?thesis by fastsimp
61.137 + with quicksort_permutes [OF effect] properties_for_sort show ?thesis by fastforce
61.138 qed
61.139
61.140 subsection {* No Errors in quicksort *}
62.1 --- a/src/HOL/Imperative_HOL/ex/Imperative_Reverse.thy Sun Sep 11 22:56:05 2011 +0200
62.2 +++ b/src/HOL/Imperative_HOL/ex/Imperative_Reverse.thy Mon Sep 12 07:55:43 2011 +0200
62.3 @@ -78,7 +78,7 @@
62.4 by (auto elim: effect_elims)
62.5 from swp rev 1 True show ?thesis
62.6 unfolding swap.simps
62.7 - by (elim effect_elims) fastsimp
62.8 + by (elim effect_elims) fastforce
62.9 next
62.10 case False
62.11 with 1[unfolded rev.simps[of a i j]]
63.1 --- a/src/HOL/Imperative_HOL/ex/Linked_Lists.thy Sun Sep 11 22:56:05 2011 +0200
63.2 +++ b/src/HOL/Imperative_HOL/ex/Linked_Lists.thy Mon Sep 12 07:55:43 2011 +0200
63.3 @@ -238,7 +238,7 @@
63.4 shows "p \<notin> set rs"
63.5 proof (rule ccontr)
63.6 assume a: "\<not> (p \<notin> set rs)"
63.7 - from this obtain as bs where split:"rs = as @ p # bs" by (fastsimp dest: split_list)
63.8 + from this obtain as bs where split:"rs = as @ p # bs" by (fastforce dest: split_list)
63.9 with assms obtain q where "refs_of h q (p # bs)" by (fast dest: refs_of_append)
63.10 with assms split show "False"
63.11 by (cases q,auto dest: refs_of_is_fun)
63.12 @@ -255,7 +255,7 @@
63.13
63.14 lemma refs_of'_distinct: "refs_of' h p rs \<Longrightarrow> distinct rs"
63.15 unfolding refs_of'_def'
63.16 - by (fastsimp simp add: refs_of_distinct refs_of_next)
63.17 + by (fastforce simp add: refs_of_distinct refs_of_next)
63.18
63.19
63.20 subsection {* Interaction of these predicates with our heap transitions *}
63.21 @@ -272,7 +272,7 @@
63.22 next
63.23 case (Node a ref)
63.24 from Cons(2) Node obtain rs' where 1: "refs_of h (Ref.get h ref) rs'" and rs_rs': "rs = ref # rs'" by auto
63.25 - from Cons(3) rs_rs' have "ref \<noteq> p" by fastsimp
63.26 + from Cons(3) rs_rs' have "ref \<noteq> p" by fastforce
63.27 hence ref_eq: "Ref.get (Ref.set p v h) ref = (Ref.get h ref)" by (auto simp add: Ref.get_set_neq)
63.28 from rs_rs' Cons(3) have 2: "p \<notin> set rs'" by simp
63.29 from Cons.hyps[OF 1 2] Node ref_eq show ?thesis by simp
63.30 @@ -290,7 +290,7 @@
63.31 next
63.32 case (Node a ref)
63.33 from Cons(2) Node obtain rs' where 1: "refs_of h (Ref.get h ref) rs'" and rs_rs': "rs = ref # rs'" by auto
63.34 - from Cons(3) rs_rs' have "ref \<noteq> p" by fastsimp
63.35 + from Cons(3) rs_rs' have "ref \<noteq> p" by fastforce
63.36 hence ref_eq: "Ref.get (Ref.set p v h) ref = (Ref.get h ref)" by (auto simp add: Ref.get_set_neq)
63.37 from rs_rs' Cons(3) have 2: "p \<notin> set rs'" by simp
63.38 from Cons.hyps[OF 1 2] Node ref_eq show ?thesis by auto
63.39 @@ -308,7 +308,7 @@
63.40 next
63.41 case (Node a ref)
63.42 from Cons(2) Node have 1:"refs_of (Ref.set p v h) (Ref.get (Ref.set p v h) ref) xs" and x_ref: "x = ref" by auto
63.43 - from Cons(3) this have "ref \<noteq> p" by fastsimp
63.44 + from Cons(3) this have "ref \<noteq> p" by fastforce
63.45 hence ref_eq: "Ref.get (Ref.set p v h) ref = (Ref.get h ref)" by (auto simp add: Ref.get_set_neq)
63.46 from Cons(3) have 2: "p \<notin> set xs" by simp
63.47 with Cons.hyps 1 2 Node ref_eq show ?thesis
63.48 @@ -395,9 +395,9 @@
63.49 from Cons(2-3) Node have ref_eq: "Ref.get h x = Ref.get h' x" by auto
63.50 from ref_eq refs_of_next have 1: "refs_of h (Ref.get h' x) xs'" by simp
63.51 from Cons(2) Cons(3) have "\<forall>ref \<in> set xs'. Ref.present h ref \<and> Ref.present h' ref \<and> Ref.get h ref = Ref.get h' ref"
63.52 - by fastsimp
63.53 + by fastforce
63.54 with Cons(3) 1 have 2: "\<forall>refs. refs_of h (Ref.get h' x) refs \<longrightarrow> (\<forall>ref \<in> set refs. Ref.present h ref \<and> Ref.present h' ref \<and> Ref.get h ref = Ref.get h' ref)"
63.55 - by (fastsimp dest: refs_of_is_fun)
63.56 + by (fastforce dest: refs_of_is_fun)
63.57 from Cons.hyps[OF 1 2] have "refs_of h' (Ref.get h' x) xs'" .
63.58 with Node show ?case by simp
63.59 qed
63.60 @@ -410,10 +410,10 @@
63.61 proof -
63.62 from assms obtain prs where refs:"refs_of h (Ref.get h r) prs" and xs_def: "xs = r # prs"
63.63 unfolding refs_of'_def' by auto
63.64 - from xs_def assms have x_eq: "Ref.get h r = Ref.get h' r" by fastsimp
63.65 + from xs_def assms have x_eq: "Ref.get h r = Ref.get h' r" by fastforce
63.66 from refs assms xs_def have 2: "\<forall>refs. refs_of h (Ref.get h r) refs \<longrightarrow>
63.67 (\<forall>ref\<in>set refs. Ref.present h ref \<and> Ref.present h' ref \<and> Ref.get h ref = Ref.get h' ref)"
63.68 - by (fastsimp dest: refs_of_is_fun)
63.69 + by (fastforce dest: refs_of_is_fun)
63.70 from refs_of_invariant [OF refs 2] xs_def x_eq show ?thesis
63.71 unfolding refs_of'_def' by auto
63.72 qed
63.73 @@ -490,7 +490,7 @@
63.74 from refs_unchanged rs'_def have refs_still_present: "\<forall>ref\<in>set rs'. Ref.present h' ref" by auto
63.75 from refs_of_invariant[OF rs'_def refs_unchanged] refs_unchanged Node effect_refnew refs_still_present
63.76 have sndgoal: "\<forall>rs. refs_of h' r rs \<longrightarrow> (\<forall>ref\<in>set rs. Ref.present h' ref)"
63.77 - by (fastsimp elim!: effect_refE dest: refs_of_is_fun)
63.78 + by (fastforce elim!: effect_refE dest: refs_of_is_fun)
63.79 from fstgoal sndgoal show ?case ..
63.80 qed
63.81
63.82 @@ -516,7 +516,7 @@
63.83 by (auto elim!: effect_bindE)
63.84 from make_llist[OF makell] have "list_of h1 r1 xs" ..
63.85 from traverse [OF this] trav show ?thesis
63.86 - using effect_deterministic by fastsimp
63.87 + using effect_deterministic by fastforce
63.88 qed
63.89
63.90 section {* Proving correctness of in-place reversal *}
63.91 @@ -568,8 +568,8 @@
63.92 by (auto simp add: rev'.simps [of q p] elim!: effect_bindE effect_lookupE effect_updateE)
63.93 from Cons(3) obtain qrs where qrs_def: "refs_of' h q qrs" by (elim list_of'_refs_of')
63.94 from Cons(4) obtain prs where prs_def: "refs_of' h p prs" by (elim list_of'_refs_of')
63.95 - from qrs_def prs_def Cons(5) have distinct_pointers: "set qrs \<inter> set prs = {}" by fastsimp
63.96 - from qrs_def prs_def distinct_pointers refs_of'E have p_notin_qrs: "p \<notin> set qrs" by fastsimp
63.97 + from qrs_def prs_def Cons(5) have distinct_pointers: "set qrs \<inter> set prs = {}" by fastforce
63.98 + from qrs_def prs_def distinct_pointers refs_of'E have p_notin_qrs: "p \<notin> set qrs" by fastforce
63.99 from Cons(3) qrs_def this have 1: "list_of' (Ref.set p (Node x q) h) p (x#qs)"
63.100 unfolding list_of'_def
63.101 apply (simp)
63.102 @@ -578,7 +578,7 @@
63.103 from list_of'_refs_of'2[OF Cons(4)] p_is_Node prs_def obtain refs where refs_def: "refs_of' h ref refs" and prs_refs: "prs = p # refs"
63.104 unfolding refs_of'_def' by auto
63.105 from prs_refs prs_def have p_not_in_refs: "p \<notin> set refs"
63.106 - by (fastsimp dest!: refs_of'_distinct)
63.107 + by (fastforce dest!: refs_of'_distinct)
63.108 with refs_def p_is_Node list_of'_ref have 2: "list_of' (Ref.set p (Node x q) h) ref xs"
63.109 by (auto simp add: list_of'_set_ref)
63.110 from p_notin_qrs qrs_def have refs_of1: "refs_of' (Ref.set p (Node x q) h) p (p#qrs)"
63.111 @@ -621,7 +621,7 @@
63.112 by (auto elim!: effect_ref)
63.113 from list_of_h obtain refs where refs_def: "refs_of h r refs" by (rule list_of_refs_of)
63.114 from validHeap init refs_def have heap_eq: "\<forall>refs. refs_of h r refs \<longrightarrow> (\<forall>ref\<in>set refs. Ref.present h ref \<and> Ref.present h2 ref \<and> Ref.get h ref = Ref.get h2 ref)"
63.115 - by (fastsimp elim!: effect_ref dest: refs_of_is_fun)
63.116 + by (fastforce elim!: effect_ref dest: refs_of_is_fun)
63.117 from list_of_invariant[OF list_of_h heap_eq] have "list_of h2 r xs" .
63.118 from init this Node have a2: "list_of' h2 p xs"
63.119 apply -
63.120 @@ -642,7 +642,7 @@
63.121 with init all_ref_present have q_is_new: "q \<notin> set (p#refs)"
63.122 by (auto elim!: effect_refE intro!: Ref.noteq_I)
63.123 from refs_of_p refs_of_q q_is_new have a3: "\<forall>qrs prs. refs_of' h2 q qrs \<and> refs_of' h2 p prs \<longrightarrow> set prs \<inter> set qrs = {}"
63.124 - by (fastsimp simp only: set.simps dest: refs_of'_is_fun)
63.125 + by (fastforce simp only: set.simps dest: refs_of'_is_fun)
63.126 from rev'_invariant [OF effect_rev' a1 a2 a3] have "list_of h3 (Ref.get h3 v) (List.rev xs)"
63.127 unfolding list_of'_def by auto
63.128 with lookup show ?thesis
63.129 @@ -891,7 +891,7 @@
63.130 show ?thesis using assms(1) assms(2) assms(4) assms(5)
63.131 proof (induct arbitrary: xs ys rs rule: merge_induct3[OF ps_def qs_def assms(3)])
63.132 case 1
63.133 - from 1(5) 1(7) have "rs = ys" by (fastsimp simp add: refs_of'_is_fun)
63.134 + from 1(5) 1(7) have "rs = ys" by (fastforce simp add: refs_of'_is_fun)
63.135 thus ?case by auto
63.136 next
63.137 case 2
63.138 @@ -947,10 +947,10 @@
63.139 where pnrs_def: "prs = p#pnrs"
63.140 and refs_of'_pn: "refs_of' h pn pnrs"
63.141 by (rule refs_of'_Node)
63.142 - from prs_def qrs_def 3(9) pnrs_def refs_of'_distinct[OF prs_def] have p_in: "p \<notin> set pnrs \<union> set qrs" by fastsimp
63.143 - from prs_def qrs_def 3(9) pnrs_def have no_inter: "set pnrs \<inter> set qrs = {}" by fastsimp
63.144 + from prs_def qrs_def 3(9) pnrs_def refs_of'_distinct[OF prs_def] have p_in: "p \<notin> set pnrs \<union> set qrs" by fastforce
63.145 + from prs_def qrs_def 3(9) pnrs_def have no_inter: "set pnrs \<inter> set qrs = {}" by fastforce
63.146 from no_inter refs_of'_pn qrs_def have no_inter2: "\<forall>qrs prs. refs_of' h q qrs \<and> refs_of' h pn prs \<longrightarrow> set prs \<inter> set qrs = {}"
63.147 - by (fastsimp dest: refs_of'_is_fun)
63.148 + by (fastforce dest: refs_of'_is_fun)
63.149 from merge_unchanged[OF refs_of'_pn qrs_def 3(6) no_inter p_in] have p_stays: "Ref.get h1 p = Ref.get h p" ..
63.150 from 3(7)[OF no_inter2] obtain rs where rs_def: "refs_of' h1 r1 rs" by (rule list_of'_refs_of')
63.151 from refs_of'_merge[OF refs_of'_pn qrs_def 3(6) no_inter this] p_in have p_rs: "p \<notin> set rs" by auto
63.152 @@ -964,10 +964,10 @@
63.153 where qnrs_def: "qrs = q#qnrs"
63.154 and refs_of'_qn: "refs_of' h qn qnrs"
63.155 by (rule refs_of'_Node)
63.156 - from prs_def qrs_def 4(9) qnrs_def refs_of'_distinct[OF qrs_def] have q_in: "q \<notin> set prs \<union> set qnrs" by fastsimp
63.157 - from prs_def qrs_def 4(9) qnrs_def have no_inter: "set prs \<inter> set qnrs = {}" by fastsimp
63.158 + from prs_def qrs_def 4(9) qnrs_def refs_of'_distinct[OF qrs_def] have q_in: "q \<notin> set prs \<union> set qnrs" by fastforce
63.159 + from prs_def qrs_def 4(9) qnrs_def have no_inter: "set prs \<inter> set qnrs = {}" by fastforce
63.160 from no_inter refs_of'_qn prs_def have no_inter2: "\<forall>qrs prs. refs_of' h qn qrs \<and> refs_of' h p prs \<longrightarrow> set prs \<inter> set qrs = {}"
63.161 - by (fastsimp dest: refs_of'_is_fun)
63.162 + by (fastforce dest: refs_of'_is_fun)
63.163 from merge_unchanged[OF prs_def refs_of'_qn 4(6) no_inter q_in] have q_stays: "Ref.get h1 q = Ref.get h q" ..
63.164 from 4(7)[OF no_inter2] obtain rs where rs_def: "refs_of' h1 r1 rs" by (rule list_of'_refs_of')
63.165 from refs_of'_merge[OF prs_def refs_of'_qn 4(6) no_inter this] q_in have q_rs: "q \<notin> set rs" by auto
64.1 --- a/src/HOL/Imperative_HOL/ex/SatChecker.thy Sun Sep 11 22:56:05 2011 +0200
64.2 +++ b/src/HOL/Imperative_HOL/ex/SatChecker.thy Mon Sep 12 07:55:43 2011 +0200
64.3 @@ -83,7 +83,7 @@
64.4 proof -
64.5 from resolv_clauses interp have "(\<exists>l \<in> cli - {lit}. interpLit a l) \<or> interpLit a lit"
64.6 "(\<exists>l \<in> clj - {compl lit}. interpLit a l) \<or> interpLit a (compl lit)" by auto
64.7 - with lit_not_zero show ?thesis by (fastsimp simp add: bex_Un)
64.8 + with lit_not_zero show ?thesis by (fastforce simp add: bex_Un)
64.9 qed
64.10
64.11 lemma interpClause_resolvants:
64.12 @@ -132,7 +132,7 @@
64.13 proof -
64.14 have "set (Array.get h a[i := Some b]) \<subseteq> insert (Some b) (set (Array.get h a))" by (rule set_update_subset_insert)
64.15 with assms show ?thesis
64.16 - unfolding array_ran_def Array.update_def by fastsimp
64.17 + unfolding array_ran_def Array.update_def by fastforce
64.18 qed
64.19
64.20 lemma array_ran_upd_array_None:
64.21 @@ -243,7 +243,7 @@
64.22 case (3 l v va r)
64.23 thus ?case
64.24 unfolding resolve1.simps
64.25 - by (fastsimp dest!: res_mem)
64.26 + by (fastforce dest!: res_mem)
64.27 qed
64.28
64.29 lemma resolve2_Inv:
64.30 @@ -264,7 +264,7 @@
64.31 case (3 l v va r)
64.32 thus ?case
64.33 unfolding resolve2.simps
64.34 - by (fastsimp dest!: res_mem simp add: merge_Nil)
64.35 + by (fastforce dest!: res_mem simp add: merge_Nil)
64.36 qed
64.37
64.38 lemma res_thm'_Inv:
64.39 @@ -279,14 +279,14 @@
64.40 assume resolve2: "effect (resolve2 (compl x) xs (y # ys)) h h' r"
64.41 from resolve2_Inv [OF resolve2] cond have ?case
64.42 apply -
64.43 - by (rule exI[of _ "x"]) fastsimp
64.44 + by (rule exI[of _ "x"]) fastforce
64.45 } moreover
64.46 {
64.47 assume cond: "\<not> (x = l \<or> x = compl l)" "y = l \<or> y = compl l"
64.48 assume resolve1: "effect (resolve1 (compl y) (x # xs) ys) h h' r"
64.49 from resolve1_Inv [OF resolve1] cond have ?case
64.50 apply -
64.51 - by (rule exI[of _ "compl y"]) fastsimp
64.52 + by (rule exI[of _ "compl y"]) fastforce
64.53 } moreover
64.54 {
64.55 fix r'
64.56 @@ -317,7 +317,7 @@
64.57 apply simp
64.58 apply simp
64.59 apply simp
64.60 - apply fastsimp
64.61 + apply fastforce
64.62 done
64.63 next
64.64 case (2 l ys r)
64.65 @@ -517,7 +517,7 @@
64.66 case (Cons x xs)
64.67 {
64.68 fix h1 ret
64.69 - obtain l j where x_is: "x = (l, j)" by fastsimp
64.70 + obtain l j where x_is: "x = (l, j)" by fastforce
64.71 assume res_thm2: "effect (res_thm2 a x cli) h h1 ret"
64.72 with x_is have res_thm2': "effect (res_thm2 a (l, j) cli) h h1 ret" by simp
64.73 note step = res_thm2_Inv [OF res_thm2' Cons.prems(2) Cons.prems(3)]
64.74 @@ -616,7 +616,7 @@
64.75 have "set (xs[i := Some b]) \<subseteq> insert (Some b) (set xs)"
64.76 by (simp only: set_update_subset_insert)
64.77 with assms have "Some cl \<in> insert (Some b) (set xs)"
64.78 - unfolding list_ran_def by fastsimp
64.79 + unfolding list_ran_def by fastforce
64.80 thus ?thesis
64.81 unfolding list_ran_def by auto
64.82 qed
65.1 --- a/src/HOL/Imperative_HOL/ex/Sorted_List.thy Sun Sep 11 22:56:05 2011 +0200
65.2 +++ b/src/HOL/Imperative_HOL/ex/Sorted_List.thy Mon Sep 12 07:55:43 2011 +0200
65.3 @@ -77,7 +77,7 @@
65.4 apply (auto simp add: sorted_Cons)
65.5 apply (subgoal_tac "x \<notin> set xs")
65.6 apply (simp add: notinset_remove)
65.7 -apply fastsimp
65.8 +apply fastforce
65.9 done
65.10
65.11 lemma sorted_remove1:
66.1 --- a/src/HOL/Imperative_HOL/ex/Subarray.thy Sun Sep 11 22:56:05 2011 +0200
66.2 +++ b/src/HOL/Imperative_HOL/ex/Subarray.thy Mon Sep 12 07:55:43 2011 +0200
66.3 @@ -19,7 +19,7 @@
66.4 lemma subarray_upd2: " i < n \<Longrightarrow> subarray n m a (Array.update a i v h) = subarray n m a h"
66.5 apply (simp add: subarray_def Array.update_def)
66.6 apply (subst sublist'_update2)
66.7 -apply fastsimp
66.8 +apply fastforce
66.9 apply simp
66.10 done
66.11
67.1 --- a/src/HOL/Imperative_HOL/ex/Sublist.thy Sun Sep 11 22:56:05 2011 +0200
67.2 +++ b/src/HOL/Imperative_HOL/ex/Sublist.thy Mon Sep 12 07:55:43 2011 +0200
67.3 @@ -24,10 +24,10 @@
67.4 apply (subgoal_tac "{ja. j \<le> Suc ja \<and> Suc ja < k} = {j - Suc 0..<k - Suc 0}")
67.5 apply (subgoal_tac "{j. Suc j < k} = {0..<k - Suc 0}")
67.6 apply simp
67.7 -apply fastsimp
67.8 -apply fastsimp
67.9 -apply fastsimp
67.10 -apply fastsimp
67.11 +apply fastforce
67.12 +apply fastforce
67.13 +apply fastforce
67.14 +apply fastforce
67.15 apply (erule_tac x="i - 1" in meta_allE)
67.16 apply (erule_tac x="j - 1" in meta_allE)
67.17 apply (erule_tac x="k - 1" in meta_allE)
67.18 @@ -36,10 +36,10 @@
67.19 apply (subgoal_tac "{j. i \<le> Suc j \<and> Suc j < k} = {i - 1..<k - 1}")
67.20 apply (subgoal_tac " i - 1 \<le> j - 1 \<and> j - 1 \<le> k - 1")
67.21 apply simp
67.22 -apply fastsimp
67.23 -apply fastsimp
67.24 -apply fastsimp
67.25 -apply fastsimp
67.26 +apply fastforce
67.27 +apply fastforce
67.28 +apply fastforce
67.29 +apply fastforce
67.30 done
67.31
67.32 lemma sublist_update1: "i \<notin> inds \<Longrightarrow> sublist (xs[i := v]) inds = sublist xs inds"
67.33 @@ -143,18 +143,18 @@
67.34 apply (induct xs arbitrary: ys inds inds')
67.35 apply simp
67.36 apply (drule sym, rule sym)
67.37 -apply (simp add: sublist_Nil, fastsimp)
67.38 +apply (simp add: sublist_Nil, fastforce)
67.39 apply (case_tac ys)
67.40 -apply (simp add: sublist_Nil, fastsimp)
67.41 +apply (simp add: sublist_Nil, fastforce)
67.42 apply (auto simp add: sublist_Cons)
67.43 apply (erule_tac x="list" in meta_allE)
67.44 apply (erule_tac x="{j. Suc j \<in> inds}" in meta_allE)
67.45 apply (erule_tac x="{j. Suc j \<in> inds'}" in meta_allE)
67.46 -apply fastsimp
67.47 +apply fastforce
67.48 apply (erule_tac x="list" in meta_allE)
67.49 apply (erule_tac x="{j. Suc j \<in> inds}" in meta_allE)
67.50 apply (erule_tac x="{j. Suc j \<in> inds'}" in meta_allE)
67.51 -apply fastsimp
67.52 +apply fastforce
67.53 done
67.54
67.55 lemma sublist_eq: "\<lbrakk> \<forall>i \<in> inds. ((i < length xs) \<and> (i < length ys)) \<or> ((i \<ge> length xs ) \<and> (i \<ge> length ys)); \<forall>i \<in> inds. xs ! i = ys ! i \<rbrakk> \<Longrightarrow> sublist xs inds = sublist ys inds"
67.56 @@ -166,10 +166,10 @@
67.57 apply (auto simp add: sublist_Cons)
67.58 apply (erule_tac x="list" in meta_allE)
67.59 apply (erule_tac x="{j. Suc j \<in> inds}" in meta_allE)
67.60 -apply fastsimp
67.61 +apply fastforce
67.62 apply (erule_tac x="list" in meta_allE)
67.63 apply (erule_tac x="{j. Suc j \<in> inds}" in meta_allE)
67.64 -apply fastsimp
67.65 +apply fastforce
67.66 done
67.67
67.68 lemma sublist_eq_samelength: "\<lbrakk> length xs = length ys; \<forall>i \<in> inds. xs ! i = ys ! i \<rbrakk> \<Longrightarrow> sublist xs inds = sublist ys inds"
68.1 --- a/src/HOL/Library/Convex.thy Sun Sep 11 22:56:05 2011 +0200
68.2 +++ b/src/HOL/Library/Convex.thy Mon Sep 12 07:55:43 2011 +0200
68.3 @@ -112,7 +112,7 @@
68.4 hence "(\<Sum> j \<in> s. a j) = 0"
68.5 using asms by auto
68.6 hence "\<And> j. j \<in> s \<Longrightarrow> a j = 0"
68.7 - using setsum_nonneg_0[where 'b=real] asms by fastsimp
68.8 + using setsum_nonneg_0[where 'b=real] asms by fastforce
68.9 hence ?case using asms by auto }
68.10 moreover
68.11 { assume asm: "a i \<noteq> 1"
68.12 @@ -125,13 +125,13 @@
68.13 { fix j assume "j \<in> s"
68.14 hence "?a j \<ge> 0"
68.15 using i0 asms divide_nonneg_pos
68.16 - by fastsimp } note a_nonneg = this
68.17 + by fastforce } note a_nonneg = this
68.18 have "(\<Sum> j \<in> insert i s. a j) = 1" using asms by auto
68.19 - hence "(\<Sum> j \<in> s. a j) = 1 - a i" using setsum.insert asms by fastsimp
68.20 + hence "(\<Sum> j \<in> s. a j) = 1 - a i" using setsum.insert asms by fastforce
68.21 hence "(\<Sum> j \<in> s. a j) / (1 - a i) = 1" using i0 by auto
68.22 hence a1: "(\<Sum> j \<in> s. ?a j) = 1" unfolding setsum_divide_distrib by simp
68.23 from this asms
68.24 - have "(\<Sum>j\<in>s. ?a j *\<^sub>R y j) \<in> C" using a_nonneg by fastsimp
68.25 + have "(\<Sum>j\<in>s. ?a j *\<^sub>R y j) \<in> C" using a_nonneg by fastforce
68.26 hence "a i *\<^sub>R y i + (1 - a i) *\<^sub>R (\<Sum> j \<in> s. ?a j *\<^sub>R y j) \<in> C"
68.27 using asms[unfolded convex_def, rule_format] yai ai1 by auto
68.28 hence "a i *\<^sub>R y i + (\<Sum> j \<in> s. (1 - a i) *\<^sub>R (?a j *\<^sub>R y j)) \<in> C"
68.29 @@ -256,7 +256,7 @@
68.30 using assms(4,5) by (auto simp add: mult_left_mono add_mono)
68.31 also have "\<dots> = max (f x) (f y)" using assms(6) unfolding distrib[THEN sym] by auto
68.32 finally show ?thesis
68.33 - using assms unfolding convex_on_def by fastsimp
68.34 + using assms unfolding convex_on_def by fastforce
68.35 qed
68.36
68.37 lemma convex_distance[intro]:
68.38 @@ -363,7 +363,7 @@
68.39 hence "\<mu> > 0" "(1 - \<mu>) > 0" using asms by auto
68.40 hence "\<mu> *\<^sub>R x + (1 - \<mu>) *\<^sub>R y > 0" using asms
68.41 by (auto simp add: add_pos_pos mult_pos_pos) }
68.42 - ultimately show "(1 - \<mu>) *\<^sub>R y + \<mu> *\<^sub>R x > 0" using assms by fastsimp
68.43 + ultimately show "(1 - \<mu>) *\<^sub>R y + \<mu> *\<^sub>R x > 0" using assms by fastforce
68.44 qed
68.45
68.46 lemma convex_on_setsum:
68.47 @@ -393,7 +393,7 @@
68.48 hence "(\<Sum> j \<in> s. a j) = 0"
68.49 using asms by auto
68.50 hence "\<And> j. j \<in> s \<Longrightarrow> a j = 0"
68.51 - using setsum_nonneg_0[where 'b=real] asms by fastsimp
68.52 + using setsum_nonneg_0[where 'b=real] asms by fastforce
68.53 hence ?case using asms by auto }
68.54 moreover
68.55 { assume asm: "a i \<noteq> 1"
68.56 @@ -406,9 +406,9 @@
68.57 { fix j assume "j \<in> s"
68.58 hence "?a j \<ge> 0"
68.59 using i0 asms divide_nonneg_pos
68.60 - by fastsimp } note a_nonneg = this
68.61 + by fastforce } note a_nonneg = this
68.62 have "(\<Sum> j \<in> insert i s. a j) = 1" using asms by auto
68.63 - hence "(\<Sum> j \<in> s. a j) = 1 - a i" using setsum.insert asms by fastsimp
68.64 + hence "(\<Sum> j \<in> s. a j) = 1 - a i" using setsum.insert asms by fastforce
68.65 hence "(\<Sum> j \<in> s. a j) / (1 - a i) = 1" using i0 by auto
68.66 hence a1: "(\<Sum> j \<in> s. ?a j) = 1" unfolding setsum_divide_distrib by simp
68.67 have "convex C" using asms by auto
68.68 @@ -497,7 +497,7 @@
68.69 let ?x = "\<mu> *\<^sub>R x + (1 - \<mu>) *\<^sub>R y"
68.70 assume asm: "convex C" "x \<in> C" "y \<in> C" "\<mu> \<ge> 0" "\<mu> \<le> 1"
68.71 hence "1 - \<mu> \<ge> 0" by auto
68.72 - hence xpos: "?x \<in> C" using asm unfolding convex_alt by fastsimp
68.73 + hence xpos: "?x \<in> C" using asm unfolding convex_alt by fastforce
68.74 have geq: "\<mu> * (f x - f ?x) + (1 - \<mu>) * (f y - f ?x)
68.75 \<ge> \<mu> * f' ?x * (x - ?x) + (1 - \<mu>) * f' ?x * (y - ?x)"
68.76 using add_mono[OF mult_left_mono[OF leq[OF xpos asm(2)] `\<mu> \<ge> 0`]
68.77 @@ -550,7 +550,7 @@
68.78 THEN f', THEN MVT2[OF `x < y`, rule_format, unfolded atLeastAtMost_iff[symmetric]]]
68.79 by auto
68.80 hence "z1 \<in> C" using atMostAtLeast_subset_convex
68.81 - `convex C` `x \<in> C` `y \<in> C` `x < y` by fastsimp
68.82 + `convex C` `x \<in> C` `y \<in> C` `x < y` by fastforce
68.83 from z1 have z1': "f x - f y = (x - y) * f' z1"
68.84 by (simp add:field_simps)
68.85 obtain z2 where z2: "z2 > x" "z2 < z1" "f' z1 - f' x = (z1 - x) * f'' z2"
68.86 @@ -567,7 +567,7 @@
68.87 finally have cool': "f' y - (f x - f y) / (x - y) = (y - z1) * f'' z3" by simp
68.88 have A': "y - z1 \<ge> 0" using z1 by auto
68.89 have "z3 \<in> C" using z3 asm atMostAtLeast_subset_convex
68.90 - `convex C` `x \<in> C` `z1 \<in> C` `x < z1` by fastsimp
68.91 + `convex C` `x \<in> C` `z1 \<in> C` `x < z1` by fastforce
68.92 hence B': "f'' z3 \<ge> 0" using assms by auto
68.93 from A' B' have "(y - z1) * f'' z3 \<ge> 0" using mult_nonneg_nonneg by auto
68.94 from cool' this have "f' y - (f x - f y) / (x - y) \<ge> 0" by auto
68.95 @@ -582,7 +582,7 @@
68.96 finally have cool: "(f y - f x) / (y - x) - f' x = (z1 - x) * f'' z2" by simp
68.97 have A: "z1 - x \<ge> 0" using z1 by auto
68.98 have "z2 \<in> C" using z2 z1 asm atMostAtLeast_subset_convex
68.99 - `convex C` `z1 \<in> C` `y \<in> C` `z1 < y` by fastsimp
68.100 + `convex C` `z1 \<in> C` `y \<in> C` `z1 < y` by fastforce
68.101 hence B: "f'' z2 \<ge> 0" using assms by auto
68.102 from A B have "(z1 - x) * f'' z2 \<ge> 0" using mult_nonneg_nonneg by auto
68.103 from cool this have "(f y - f x) / (y - x) - f' x \<ge> 0" by auto
68.104 @@ -608,7 +608,7 @@
68.105 assumes f'': "\<And> x. x \<in> C \<Longrightarrow> DERIV f' x :> (f'' x)"
68.106 assumes pos: "\<And> x. x \<in> C \<Longrightarrow> f'' x \<ge> 0"
68.107 shows "convex_on C f"
68.108 -using f''_imp_f'[OF conv f' f'' pos] assms pos_convex_function by fastsimp
68.109 +using f''_imp_f'[OF conv f' f'' pos] assms pos_convex_function by fastforce
68.110
68.111 lemma minus_log_convex:
68.112 fixes b :: real
69.1 --- a/src/HOL/Library/Extended_Nat.thy Sun Sep 11 22:56:05 2011 +0200
69.2 +++ b/src/HOL/Library/Extended_Nat.thy Mon Sep 12 07:55:43 2011 +0200
69.3 @@ -487,7 +487,7 @@
69.4 proof (rule finite_subset)
69.5 show "finite (enat ` {..n})" by blast
69.6
69.7 - have "A \<subseteq> {..enat n}" using le_fin by fastsimp
69.8 + have "A \<subseteq> {..enat n}" using le_fin by fastforce
69.9 also have "\<dots> \<subseteq> enat ` {..n}"
69.10 by (rule subsetI) (case_tac x, auto)
69.11 finally show "A \<subseteq> enat ` {..n}" .
70.1 --- a/src/HOL/Library/Extended_Real.thy Sun Sep 11 22:56:05 2011 +0200
70.2 +++ b/src/HOL/Library/Extended_Real.thy Mon Sep 12 07:55:43 2011 +0200
70.3 @@ -1887,7 +1887,7 @@
70.4 proof safe case goal1
70.5 have "ereal B < ereal (B + 1)" by auto
70.6 also have "... <= f n" using goal1 N by auto
70.7 - finally show ?case using B by fastsimp
70.8 + finally show ?case using B by fastforce
70.9 qed
70.10 qed
70.11 next
70.12 @@ -1916,7 +1916,7 @@
70.13 proof safe case goal1
70.14 have "ereal (B - 1) >= f n" using goal1 N by auto
70.15 also have "... < ereal B" by auto
70.16 - finally show ?case using B by fastsimp
70.17 + finally show ?case using B by fastforce
70.18 qed
70.19 qed
70.20 next assume ?l show ?r
71.1 --- a/src/HOL/Library/Infinite_Set.thy Sun Sep 11 22:56:05 2011 +0200
71.2 +++ b/src/HOL/Library/Infinite_Set.thy Mon Sep 12 07:55:43 2011 +0200
71.3 @@ -544,7 +544,7 @@
71.4
71.5 lemma enumerate_in_set: "infinite S \<Longrightarrow> enumerate S n : S"
71.6 apply (induct n arbitrary: S)
71.7 - apply (fastsimp intro: LeastI dest!: infinite_imp_nonempty)
71.8 + apply (fastforce intro: LeastI dest!: infinite_imp_nonempty)
71.9 apply simp
71.10 apply (metis DiffE infinite_remove)
71.11 done
72.1 --- a/src/HOL/Library/Multiset.thy Sun Sep 11 22:56:05 2011 +0200
72.2 +++ b/src/HOL/Library/Multiset.thy Mon Sep 12 07:55:43 2011 +0200
72.3 @@ -218,7 +218,7 @@
72.4
72.5 lemma add_eq_conv_diff:
72.6 "M + {#a#} = N + {#b#} \<longleftrightarrow> M = N \<and> a = b \<or> M = N - {#a#} + {#b#} \<and> N = M - {#b#} + {#a#}" (is "?lhs = ?rhs")
72.7 -(* shorter: by (simp add: multiset_eq_iff) fastsimp *)
72.8 +(* shorter: by (simp add: multiset_eq_iff) fastforce *)
72.9 proof
72.10 assume ?rhs then show ?lhs
72.11 by (auto simp add: add_assoc add_commute [of "{#b#}"])
73.1 --- a/src/HOL/Library/Permutation.thy Sun Sep 11 22:56:05 2011 +0200
73.2 +++ b/src/HOL/Library/Permutation.thy Mon Sep 12 07:55:43 2011 +0200
73.3 @@ -153,7 +153,7 @@
73.4 lemma perm_distinct_iff: "xs <~~> ys ==> distinct xs = distinct ys"
73.5 apply (induct pred: perm)
73.6 apply simp_all
73.7 - apply fastsimp
73.8 + apply fastforce
73.9 apply (metis perm_set_eq)
73.10 done
73.11
73.12 @@ -171,7 +171,7 @@
73.13 apply (metis Cons Cons_eq_appendI distinct.simps(2)
73.14 distinct_remdups distinct_remdups_id perm_append_swap perm_distinct_iff)
73.15 apply (subgoal_tac "set (a#list) = set (ysa@a#zs) & distinct (a#list) & distinct (ysa@a#zs)")
73.16 - apply (fastsimp simp add: insert_ident)
73.17 + apply (fastforce simp add: insert_ident)
73.18 apply (metis distinct_remdups set_remdups)
73.19 apply (subgoal_tac "length (remdups xs) < Suc (length xs)")
73.20 apply simp
74.1 --- a/src/HOL/Library/Polynomial.thy Sun Sep 11 22:56:05 2011 +0200
74.2 +++ b/src/HOL/Library/Polynomial.thy Mon Sep 12 07:55:43 2011 +0200
74.3 @@ -1134,7 +1134,7 @@
74.4 and poly_gcd_dvd2 [iff]: "poly_gcd x y dvd y"
74.5 apply (induct x y rule: poly_gcd.induct)
74.6 apply (simp_all add: poly_gcd.simps)
74.7 - apply (fastsimp simp add: smult_dvd_iff dest: inverse_zero_imp_zero)
74.8 + apply (fastforce simp add: smult_dvd_iff dest: inverse_zero_imp_zero)
74.9 apply (blast dest: dvd_mod_imp_dvd)
74.10 done
74.11
75.1 --- a/src/HOL/Library/Predicate_Compile_Alternative_Defs.thy Sun Sep 11 22:56:05 2011 +0200
75.2 +++ b/src/HOL/Library/Predicate_Compile_Alternative_Defs.thy Mon Sep 12 07:55:43 2011 +0200
75.3 @@ -49,11 +49,11 @@
75.4
75.5 lemma subset_eq[code_pred_inline]:
75.6 "(P :: 'a => bool) < (Q :: 'a => bool) == ((\<exists>x. Q x \<and> (\<not> P x)) \<and> (\<forall> x. P x --> Q x))"
75.7 -by (rule eq_reflection) (fastsimp simp add: mem_def)
75.8 +by (rule eq_reflection) (fastforce simp add: mem_def)
75.9
75.10 lemma set_equality[code_pred_inline]:
75.11 "(A = B) = ((\<forall>x. A x \<longrightarrow> B x) \<and> (\<forall>x. B x \<longrightarrow> A x))"
75.12 -by (fastsimp simp add: mem_def)
75.13 +by (fastforce simp add: mem_def)
75.14
75.15 section {* Setup for Numerals *}
75.16
75.17 @@ -218,7 +218,7 @@
75.18 unfolding mem_def[symmetric, of _ xc]
75.19 apply auto
75.20 unfolding mem_def
75.21 - apply fastsimp
75.22 + apply fastforce
75.23 done
75.24 qed
75.25
75.26 @@ -240,7 +240,7 @@
75.27 apply auto
75.28 apply (case_tac xc)
75.29 apply auto
75.30 - apply fastsimp
75.31 + apply fastforce
75.32 done
75.33 qed
75.34
76.1 --- a/src/HOL/Library/Quickcheck_Types.thy Sun Sep 11 22:56:05 2011 +0200
76.2 +++ b/src/HOL/Library/Quickcheck_Types.thy Mon Sep 12 07:55:43 2011 +0200
76.3 @@ -353,7 +353,7 @@
76.4 }
76.5 from `x : A` this show "Inf A <= x"
76.6 unfolding Inf_flat_complete_lattice_def
76.7 - by fastsimp
76.8 + by fastforce
76.9 next
76.10 fix z A
76.11 assume z: "\<And>x. x : A ==> z <= (x :: 'a flat_complete_lattice)"
76.12 @@ -412,7 +412,7 @@
76.13 }
76.14 from `x : A` this show "x <= Sup A"
76.15 unfolding Sup_flat_complete_lattice_def
76.16 - by fastsimp
76.17 + by fastforce
76.18 next
76.19 fix z A
76.20 assume z: "\<And>x. x : A ==> x <= (z :: 'a flat_complete_lattice)"
77.1 --- a/src/HOL/Library/Ramsey.thy Sun Sep 11 22:56:05 2011 +0200
77.2 +++ b/src/HOL/Library/Ramsey.thy Mon Sep 12 07:55:43 2011 +0200
77.3 @@ -64,7 +64,7 @@
77.4 have "V = insert v (?M \<union> ?N)" using `v : V` by auto
77.5 hence "card V = card(insert v (?M \<union> ?N))" by metis
77.6 also have "\<dots> = card ?M + card ?N + 1" using `finite V`
77.7 - by(fastsimp intro: card_Un_disjoint)
77.8 + by(fastforce intro: card_Un_disjoint)
77.9 finally have "card V = card ?M + card ?N + 1" .
77.10 hence "r1+r2 \<le> card ?M + card ?N + 1" using `r1+r2 \<le> card V` by simp
77.11 hence "r1 \<le> card ?M \<or> r2 \<le> card ?N" by arith
77.12 @@ -325,7 +325,7 @@
77.13 "\<exists>Y t. Y \<subseteq> Z & infinite Y & t < s & (\<forall>x\<in>Y. \<forall>y\<in>Y. x\<noteq>y --> f{x,y} = t)"
77.14 proof -
77.15 have part2: "\<forall>X. X \<subseteq> Z & finite X & card X = 2 --> f X < s"
77.16 - using part by (fastsimp simp add: eval_nat_numeral card_Suc_eq)
77.17 + using part by (fastforce simp add: eval_nat_numeral card_Suc_eq)
77.18 obtain Y t
77.19 where "Y \<subseteq> Z" "infinite Y" "t < s"
77.20 "(\<forall>X. X \<subseteq> Y & finite X & card X = 2 --> f X = t)"
78.1 --- a/src/HOL/Library/Set_Algebras.thy Sun Sep 11 22:56:05 2011 +0200
78.2 +++ b/src/HOL/Library/Set_Algebras.thy Mon Sep 12 07:55:43 2011 +0200
78.3 @@ -356,7 +356,7 @@
78.4
78.5 lemma set_plus_image:
78.6 fixes S T :: "'n::semigroup_add set" shows "S \<oplus> T = (\<lambda>(x, y). x + y) ` (S \<times> T)"
78.7 - unfolding set_plus_def by (fastsimp simp: image_iff)
78.8 + unfolding set_plus_def by (fastforce simp: image_iff)
78.9
78.10 lemma set_setsum_alt:
78.11 assumes fin: "finite I"
79.1 --- a/src/HOL/Library/Transitive_Closure_Table.thy Sun Sep 11 22:56:05 2011 +0200
79.2 +++ b/src/HOL/Library/Transitive_Closure_Table.thy Mon Sep 12 07:55:43 2011 +0200
79.3 @@ -189,7 +189,7 @@
79.4
79.5 declare rtranclp_eq_rtrancl_tab_nil[THEN iffD2, code_pred_intro]
79.6
79.7 -code_pred rtranclp using rtranclp_eq_rtrancl_tab_nil [THEN iffD1] by fastsimp
79.8 +code_pred rtranclp using rtranclp_eq_rtrancl_tab_nil [THEN iffD1] by fastforce
79.9
79.10 subsection {* A simple example *}
79.11
80.1 --- a/src/HOL/Library/Zorn.thy Sun Sep 11 22:56:05 2011 +0200
80.2 +++ b/src/HOL/Library/Zorn.thy Mon Sep 12 07:55:43 2011 +0200
80.3 @@ -480,12 +480,12 @@
80.4 by(auto simp add:wf_eq_minimal Field_def Domain_def Range_def) metis
80.5 thus ?thesis using `wf(m-Id)` `x \<notin> Field m`
80.6 wf_subset[OF `wf ?s` Diff_subset]
80.7 - by (fastsimp intro!: wf_Un simp add: Un_Diff Field_def)
80.8 + by (fastforce intro!: wf_Un simp add: Un_Diff Field_def)
80.9 qed
80.10 ultimately have "Well_order ?m" by(simp add:order_on_defs)
80.11 --{*We show that the extension is above m*}
80.12 moreover hence "(m,?m) : I" using `Well_order m` `x \<notin> Field m`
80.13 - by(fastsimp simp:I_def init_seg_of_def Field_def Domain_def Range_def)
80.14 + by(fastforce simp:I_def init_seg_of_def Field_def Domain_def Range_def)
80.15 ultimately
80.16 --{*This contradicts maximality of m:*}
80.17 have False using max `x \<notin> Field m` unfolding Field_def by blast
80.18 @@ -501,7 +501,7 @@
80.19 using well_ordering[where 'a = "'a"] by blast
80.20 let ?r = "{(x,y). x:A & y:A & (x,y):r}"
80.21 have 1: "Field ?r = A" using wo univ
80.22 - by(fastsimp simp: Field_def Domain_def Range_def order_on_defs refl_on_def)
80.23 + by(fastforce simp: Field_def Domain_def Range_def order_on_defs refl_on_def)
80.24 have "Refl r" "trans r" "antisym r" "Total r" "wf(r-Id)"
80.25 using `Well_order r` by(simp_all add:order_on_defs)
80.26 have "Refl ?r" using `Refl r` by(auto simp:refl_on_def 1 univ)
81.1 --- a/src/HOL/List.thy Sun Sep 11 22:56:05 2011 +0200
81.2 +++ b/src/HOL/List.thy Mon Sep 12 07:55:43 2011 +0200
81.3 @@ -659,10 +659,10 @@
81.4 lemma append_eq_append_conv2: "(xs @ ys = zs @ ts) =
81.5 (EX us. xs = zs @ us & us @ ys = ts | xs @ us = zs & ys = us@ ts)"
81.6 apply (induct xs arbitrary: ys zs ts)
81.7 - apply fastsimp
81.8 + apply fastforce
81.9 apply(case_tac zs)
81.10 apply simp
81.11 -apply fastsimp
81.12 +apply fastforce
81.13 done
81.14
81.15 lemma same_append_eq [iff, induct_simp]: "(xs @ ys = xs @ zs) = (ys = zs)"
81.16 @@ -997,9 +997,9 @@
81.17 case (Cons a xs)
81.18 show ?case
81.19 proof cases
81.20 - assume "x = a" thus ?case using Cons by fastsimp
81.21 + assume "x = a" thus ?case using Cons by fastforce
81.22 next
81.23 - assume "x \<noteq> a" thus ?case using Cons by(fastsimp intro!: Cons_eq_appendI)
81.24 + assume "x \<noteq> a" thus ?case using Cons by(fastforce intro!: Cons_eq_appendI)
81.25 qed
81.26 qed
81.27
81.28 @@ -1016,7 +1016,7 @@
81.29 proof cases
81.30 assume "x = a" thus ?case using snoc by (metis List.set.simps(1) emptyE)
81.31 next
81.32 - assume "x \<noteq> a" thus ?case using snoc by fastsimp
81.33 + assume "x \<noteq> a" thus ?case using snoc by fastforce
81.34 qed
81.35 qed
81.36
81.37 @@ -1078,7 +1078,7 @@
81.38 next
81.39 assume "\<not> P x"
81.40 hence "\<exists>x\<in>set xs. P x" using snoc(2) by simp
81.41 - thus ?thesis using `\<not> P x` snoc(1) by fastsimp
81.42 + thus ?thesis using `\<not> P x` snoc(1) by fastforce
81.43 qed
81.44 qed
81.45
81.46 @@ -1216,7 +1216,7 @@
81.47 qed
81.48 next
81.49 assume "\<not> P y"
81.50 - with Cons obtain us vs where "?P (y#ys) (y#us) vs" by fastsimp
81.51 + with Cons obtain us vs where "?P (y#ys) (y#us) vs" by fastforce
81.52 then have "?Q (y#us)" by simp
81.53 then show ?thesis ..
81.54 qed
81.55 @@ -2986,7 +2986,7 @@
81.56 "k < size ns \<Longrightarrow> ns ! k \<le> listsum (ns::nat list)"
81.57 apply(induct ns arbitrary: k)
81.58 apply simp
81.59 -apply(fastsimp simp add:nth_Cons split: nat.split)
81.60 +apply(fastforce simp add:nth_Cons split: nat.split)
81.61 done
81.62
81.63 lemma listsum_update_nat:
81.64 @@ -4671,7 +4671,7 @@
81.65 \<longleftrightarrow> (xs, ys) \<in> listrel1 r \<and> x = y \<or> xs = ys \<and> (x,y) \<in> r" (is "?L \<longleftrightarrow> ?R")
81.66 proof
81.67 assume ?L thus ?R
81.68 - by (fastsimp simp: listrel1_def snoc_eq_iff_butlast butlast_append)
81.69 + by (fastforce simp: listrel1_def snoc_eq_iff_butlast butlast_append)
81.70 next
81.71 assume ?R then show ?L unfolding listrel1_def by force
81.72 qed
81.73 @@ -4734,7 +4734,7 @@
81.74 apply (induct set: acc)
81.75 apply clarify
81.76 apply (rule accI)
81.77 -apply (fastsimp dest!: in_set_conv_decomp[THEN iffD1] simp: listrel1_def)
81.78 +apply (fastforce dest!: in_set_conv_decomp[THEN iffD1] simp: listrel1_def)
81.79 done
81.80
81.81 lemma wf_listrel1_iff[simp]: "wf(listrel1 r) = wf r"
82.1 --- a/src/HOL/MacLaurin.thy Sun Sep 11 22:56:05 2011 +0200
82.2 +++ b/src/HOL/MacLaurin.thy Mon Sep 12 07:55:43 2011 +0200
82.3 @@ -190,7 +190,7 @@
82.4 (\<Sum>m=0..<n. diff m 0 / real (fact m) * h ^ m) +
82.5 diff n t / real (fact n) * h ^ n"
82.6 proof (cases "n")
82.7 - case 0 with INIT1 INIT2 show ?thesis by fastsimp
82.8 + case 0 with INIT1 INIT2 show ?thesis by fastforce
82.9 next
82.10 case Suc
82.11 hence "n > 0" by simp
82.12 @@ -198,7 +198,7 @@
82.13 f h =
82.14 (\<Sum>m = 0..<n. diff m 0 / real (fact m) * h ^ m) + diff n t / real (fact n) * h ^ n"
82.15 by (rule Maclaurin)
82.16 - thus ?thesis by fastsimp
82.17 + thus ?thesis by fastforce
82.18 qed
82.19
82.20 lemma Maclaurin2_objl:
83.1 --- a/src/HOL/Map.thy Sun Sep 11 22:56:05 2011 +0200
83.2 +++ b/src/HOL/Map.thy Mon Sep 12 07:55:43 2011 +0200
83.3 @@ -332,7 +332,7 @@
83.4
83.5 lemma inj_on_map_add_dom [iff]:
83.6 "inj_on (m ++ m') (dom m') = inj_on m' (dom m')"
83.7 -by (fastsimp simp: map_add_def dom_def inj_on_def split: option.splits)
83.8 +by (fastforce simp: map_add_def dom_def inj_on_def split: option.splits)
83.9
83.10 lemma map_upds_fold_map_upd:
83.11 "m(ks[\<mapsto>]vs) = foldl (\<lambda>m (k, v). m(k \<mapsto> v)) m (zip ks vs)"
83.12 @@ -443,7 +443,7 @@
83.13
83.14 lemma map_upds_twist [simp]:
83.15 "a ~: set as ==> m(a|->b)(as[|->]bs) = m(as[|->]bs)(a|->b)"
83.16 -using set_take_subset by (fastsimp simp add: map_upd_upds_conv_if)
83.17 +using set_take_subset by (fastforce simp add: map_upd_upds_conv_if)
83.18
83.19 lemma map_upds_apply_nontin [simp]:
83.20 "x ~: set xs ==> (f(xs[|->]ys)) x = f x"
83.21 @@ -631,7 +631,7 @@
83.22 by (force simp add: map_le_def)
83.23
83.24 lemma map_le_upd[simp]: "f \<subseteq>\<^sub>m g ==> f(a := b) \<subseteq>\<^sub>m g(a := b)"
83.25 -by (fastsimp simp add: map_le_def)
83.26 +by (fastforce simp add: map_le_def)
83.27
83.28 lemma map_le_imp_upd_le [simp]: "m1 \<subseteq>\<^sub>m m2 \<Longrightarrow> m1(x := None) \<subseteq>\<^sub>m m2(x \<mapsto> y)"
83.29 by (force simp add: map_le_def)
83.30 @@ -645,7 +645,7 @@
83.31 done
83.32
83.33 lemma map_le_implies_dom_le: "(f \<subseteq>\<^sub>m g) \<Longrightarrow> (dom f \<subseteq> dom g)"
83.34 -by (fastsimp simp add: map_le_def dom_def)
83.35 +by (fastforce simp add: map_le_def dom_def)
83.36
83.37 lemma map_le_refl [simp]: "f \<subseteq>\<^sub>m f"
83.38 by (simp add: map_le_def)
83.39 @@ -657,17 +657,17 @@
83.40 unfolding map_le_def
83.41 apply (rule ext)
83.42 apply (case_tac "x \<in> dom f", simp)
83.43 -apply (case_tac "x \<in> dom g", simp, fastsimp)
83.44 +apply (case_tac "x \<in> dom g", simp, fastforce)
83.45 done
83.46
83.47 lemma map_le_map_add [simp]: "f \<subseteq>\<^sub>m (g ++ f)"
83.48 -by (fastsimp simp add: map_le_def)
83.49 +by (fastforce simp add: map_le_def)
83.50
83.51 lemma map_le_iff_map_add_commute: "(f \<subseteq>\<^sub>m f ++ g) = (f++g = g++f)"
83.52 -by(fastsimp simp: map_add_def map_le_def fun_eq_iff split: option.splits)
83.53 +by(fastforce simp: map_add_def map_le_def fun_eq_iff split: option.splits)
83.54
83.55 lemma map_add_le_mapE: "f++g \<subseteq>\<^sub>m h \<Longrightarrow> g \<subseteq>\<^sub>m h"
83.56 -by (fastsimp simp add: map_le_def map_add_def dom_def)
83.57 +by (fastforce simp add: map_le_def map_add_def dom_def)
83.58
83.59 lemma map_add_le_mapI: "\<lbrakk> f \<subseteq>\<^sub>m h; g \<subseteq>\<^sub>m h; f \<subseteq>\<^sub>m f++g \<rbrakk> \<Longrightarrow> f++g \<subseteq>\<^sub>m h"
83.60 by (clarsimp simp add: map_le_def map_add_def dom_def split: option.splits)
84.1 --- a/src/HOL/MicroJava/BV/BVExample.thy Sun Sep 11 22:56:05 2011 +0200
84.2 +++ b/src/HOL/MicroJava/BV/BVExample.thy Mon Sep 12 07:55:43 2011 +0200
84.3 @@ -275,10 +275,10 @@
84.4 apply clarify
84.5 apply (elim pc_end pc_next pc_0)
84.6 apply simp
84.7 - apply (fastsimp simp add: match_exception_entry_def sup_state_conv subcls1)
84.8 + apply (fastforce simp add: match_exception_entry_def sup_state_conv subcls1)
84.9 apply simp
84.10 apply simp
84.11 - apply (fastsimp simp add: sup_state_conv subcls1)
84.12 + apply (fastforce simp add: sup_state_conv subcls1)
84.13 apply simp
84.14 apply (simp add: app_def xcpt_app_def)
84.15 apply simp
85.1 --- a/src/HOL/MicroJava/BV/BVNoTypeError.thy Sun Sep 11 22:56:05 2011 +0200
85.2 +++ b/src/HOL/MicroJava/BV/BVNoTypeError.thy Mon Sep 12 07:55:43 2011 +0200
85.3 @@ -294,7 +294,7 @@
85.4 }
85.5 ultimately show ?thesis using Getfield field "class" stk hconf wf
85.6 apply clarsimp
85.7 - apply (fastsimp intro: wf_prog_ws_prog
85.8 + apply (fastforce intro: wf_prog_ws_prog
85.9 dest!: hconfD widen_cfs_fields oconf_objD)
85.10 done
85.11 next
86.1 --- a/src/HOL/MicroJava/BV/Correct.thy Sun Sep 11 22:56:05 2011 +0200
86.2 +++ b/src/HOL/MicroJava/BV/Correct.thy Mon Sep 12 07:55:43 2011 +0200
86.3 @@ -241,7 +241,7 @@
86.4 "\<lbrakk> hp a = Some obj'; obj_ty obj' = obj_ty obj''; G,hp\<turnstile>obj\<surd> \<rbrakk>
86.5 \<Longrightarrow> G,hp(a\<mapsto>obj'')\<turnstile>obj\<surd>"
86.6 apply (unfold oconf_def lconf_def)
86.7 - apply (fastsimp intro: approx_val_heap_update)
86.8 + apply (fastforce intro: approx_val_heap_update)
86.9 done
86.10
86.11 section {* hconf *}
86.12 @@ -257,7 +257,7 @@
86.13 G,hp\<turnstile>v::\<preceq>T; G\<turnstile>h hp\<surd> \<rbrakk>
86.14 \<Longrightarrow> G\<turnstile>h hp(a \<mapsto> (oT, fs(X\<mapsto>v)))\<surd>"
86.15 apply (simp add: hconf_def)
86.16 - apply (fastsimp intro: oconf_heap_update oconf_field_update
86.17 + apply (fastforce intro: oconf_heap_update oconf_field_update
86.18 simp add: obj_ty_def)
86.19 done
86.20
87.1 --- a/src/HOL/MicroJava/BV/JType.thy Sun Sep 11 22:56:05 2011 +0200
87.2 +++ b/src/HOL/MicroJava/BV/JType.thy Mon Sep 12 07:55:43 2011 +0200
87.3 @@ -114,7 +114,7 @@
87.4 apply (case_tac "EX C. Class C : M")
87.5 prefer 2
87.6 apply (case_tac T)
87.7 - apply (fastsimp simp add: PrimT_PrimT2)
87.8 + apply (fastforce simp add: PrimT_PrimT2)
87.9 apply simp
87.10 apply (subgoal_tac "ref_ty = NullT")
87.11 apply simp
88.1 --- a/src/HOL/MicroJava/BV/Typing_Framework_JVM.thy Sun Sep 11 22:56:05 2011 +0200
88.2 +++ b/src/HOL/MicroJava/BV/Typing_Framework_JVM.thy Mon Sep 12 07:55:43 2011 +0200
88.3 @@ -73,44 +73,44 @@
88.4
88.5 apply (clarsimp simp add: not_Err_eq)
88.6 apply (drule listE_nth_in, assumption)
88.7 - apply fastsimp
88.8 + apply fastforce
88.9
88.10 - apply (fastsimp simp add: not_None_eq)
88.11 + apply (fastforce simp add: not_None_eq)
88.12
88.13 - apply (fastsimp simp add: not_None_eq typeof_empty_is_type)
88.14 + apply (fastforce simp add: not_None_eq typeof_empty_is_type)
88.15
88.16 apply clarsimp
88.17 apply (erule disjE)
88.18 - apply fastsimp
88.19 + apply fastforce
88.20 apply clarsimp
88.21 apply (rule_tac x="1" in exI)
88.22 - apply fastsimp
88.23 + apply fastforce
88.24
88.25 apply clarsimp
88.26 apply (erule disjE)
88.27 - apply (fastsimp dest: field_fields fields_is_type)
88.28 + apply (fastforce dest: field_fields fields_is_type)
88.29 apply (simp add: match_some_entry image_iff)
88.30 apply (rule_tac x=1 in exI)
88.31 - apply fastsimp
88.32 + apply fastforce
88.33
88.34 apply clarsimp
88.35 apply (erule disjE)
88.36 - apply fastsimp
88.37 + apply fastforce
88.38 apply (simp add: match_some_entry image_iff)
88.39 apply (rule_tac x=1 in exI)
88.40 - apply fastsimp
88.41 + apply fastforce
88.42
88.43 apply clarsimp
88.44 apply (erule disjE)
88.45 - apply fastsimp
88.46 + apply fastforce
88.47 apply clarsimp
88.48 apply (rule_tac x=1 in exI)
88.49 - apply fastsimp
88.50 + apply fastforce
88.51
88.52 defer
88.53
88.54 - apply fastsimp
88.55 - apply fastsimp
88.56 + apply fastforce
88.57 + apply fastforce
88.58
88.59 apply clarsimp
88.60 apply (rule_tac x="n'+2" in exI)
88.61 @@ -124,26 +124,26 @@
88.62 apply (rule_tac x="Suc (Suc (Suc (Suc (length ST))))" in exI)
88.63 apply simp
88.64
88.65 - apply fastsimp
88.66 - apply fastsimp
88.67 - apply fastsimp
88.68 - apply fastsimp
88.69 + apply fastforce
88.70 + apply fastforce
88.71 + apply fastforce
88.72 + apply fastforce
88.73
88.74 apply clarsimp
88.75 apply (erule disjE)
88.76 - apply fastsimp
88.77 + apply fastforce
88.78 apply clarsimp
88.79 apply (rule_tac x=1 in exI)
88.80 - apply fastsimp
88.81 + apply fastforce
88.82
88.83 apply (erule disjE)
88.84 apply clarsimp
88.85 apply (drule method_wf_mdecl, assumption+)
88.86 apply (clarsimp simp add: wf_mdecl_def wf_mhead_def)
88.87 - apply fastsimp
88.88 + apply fastforce
88.89 apply clarsimp
88.90 apply (rule_tac x=1 in exI)
88.91 - apply fastsimp
88.92 + apply fastforce
88.93 done
88.94
88.95 lemmas [iff] = not_None_eq
89.1 --- a/src/HOL/MicroJava/Comp/AuxLemmas.thy Sun Sep 11 22:56:05 2011 +0200
89.2 +++ b/src/HOL/MicroJava/Comp/AuxLemmas.thy Mon Sep 12 07:55:43 2011 +0200
89.3 @@ -81,7 +81,7 @@
89.4 "(\<forall>y\<in>set ys. y \<notin> set xs) \<Longrightarrow> map (the \<circ> f(ys[\<mapsto>]vs)) xs = map (the \<circ> f) xs"
89.5 apply (induct xs arbitrary: f vs)
89.6 apply simp
89.7 -apply fastsimp
89.8 +apply fastforce
89.9 done
89.10
89.11 lemma map_upds_distinct [simp]:
90.1 --- a/src/HOL/MicroJava/DFA/LBVComplete.thy Sun Sep 11 22:56:05 2011 +0200
90.2 +++ b/src/HOL/MicroJava/DFA/LBVComplete.thy Mon Sep 12 07:55:43 2011 +0200
90.3 @@ -102,7 +102,7 @@
90.4 by clarify (rule pp_ub1)
90.5 with sum have "\<forall>x \<in> set (?map ss1). x <=_r ?s1" by simp
90.6 with less have "\<forall>x \<in> set (?map ss2). x <=_r ?s1"
90.7 - by (fastsimp dest!: mapD lesub_step_typeD intro: trans_r)
90.8 + by (fastforce dest!: mapD lesub_step_typeD intro: trans_r)
90.9 moreover
90.10 from map1 x have "x <=_r (?sum ss1)" by (rule pp_ub2)
90.11 with sum have "x <=_r ?s1" by simp
91.1 --- a/src/HOL/MicroJava/DFA/Listn.thy Sun Sep 11 22:56:05 2011 +0200
91.2 +++ b/src/HOL/MicroJava/DFA/Listn.thy Mon Sep 12 07:55:43 2011 +0200
91.3 @@ -230,12 +230,12 @@
91.4 next
91.5 fix n l ls
91.6 assume "?list (l#ls) n"
91.7 - then obtain n' where n: "n = Suc n'" "l \<in> A" and list_n': "ls@b \<in> list n' A" by fastsimp
91.8 + then obtain n' where n: "n = Suc n'" "l \<in> A" and list_n': "ls@b \<in> list n' A" by fastforce
91.9 assume "\<And>n. ls @ b \<in> list n A \<Longrightarrow> \<exists>n1 n2. n = n1 + n2 \<and> ls \<in> list n1 A \<and> b \<in> list n2 A"
91.10 hence "\<exists>n1 n2. n' = n1 + n2 \<and> ls \<in> list n1 A \<and> b \<in> list n2 A" by this (rule list_n')
91.11 then obtain n1 n2 where "n' = n1 + n2" "ls \<in> list n1 A" "b \<in> list n2 A" by fast
91.12 with n have "?P (l#ls) n (n1+1) n2" by simp
91.13 - thus "\<exists>n1 n2. ?P (l#ls) n n1 n2" by fastsimp
91.14 + thus "\<exists>n1 n2. ?P (l#ls) n n1 n2" by fastforce
91.15 qed
91.16 moreover
91.17 assume "a@b \<in> list n A" "\<And>n1 n2. n=n1+n2 \<Longrightarrow> a \<in> list n1 A \<Longrightarrow> b \<in> list n2 A \<Longrightarrow> P"
91.18 @@ -504,7 +504,7 @@
91.19 lemma closed_lift2_sup:
91.20 "closed (err A) (lift2 f) \<Longrightarrow>
91.21 closed (err (list n A)) (lift2 (sup f))"
91.22 - by (fastsimp simp add: closed_def plussub_def sup_def lift2_def
91.23 + by (fastforce simp add: closed_def plussub_def sup_def lift2_def
91.24 coalesce_in_err_list closed_map2_list
91.25 split: err.split)
91.26
91.27 @@ -528,7 +528,7 @@
91.28 apply (unfold Listn.upto_esl_def)
91.29 apply (simp (no_asm_simp) only: split_tupled_all)
91.30 apply simp
91.31 -apply (fastsimp intro!: err_semilat_UnionI err_semilat_sup
91.32 +apply (fastforce intro!: err_semilat_UnionI err_semilat_sup
91.33 dest: lesub_list_impl_same_size
91.34 simp add: plussub_def Listn.sup_def)
91.35 done
92.1 --- a/src/HOL/MicroJava/DFA/Semilat.thy Sun Sep 11 22:56:05 2011 +0200
92.2 +++ b/src/HOL/MicroJava/DFA/Semilat.thy Mon Sep 12 07:55:43 2011 +0200
92.3 @@ -300,7 +300,7 @@
92.4 lemma is_lub_some_lub:
92.5 "\<lbrakk> single_valued r; acyclic r; (x,u)\<in>r^*; (y,u)\<in>r^* \<rbrakk>
92.6 \<Longrightarrow> is_lub (r^* ) x y (some_lub (r^* ) x y)";
92.7 - (*<*) by (fastsimp dest: single_valued_has_lubs simp add: some_lub_conv) (*>*)
92.8 + (*<*) by (fastforce dest: single_valued_has_lubs simp add: some_lub_conv) (*>*)
92.9
92.10 subsection{*An executable lub-finder*}
92.11
92.12 @@ -369,6 +369,6 @@
92.13 lemma is_lub_exec_lub:
92.14 "\<lbrakk> single_valued r; acyclic r; (x,u):r^*; (y,u):r^*; \<forall>x y. (x,y) \<in> r \<longrightarrow> f x = y \<rbrakk>
92.15 \<Longrightarrow> is_lub (r^* ) x y (exec_lub r f x y)"
92.16 - (*<*) by (fastsimp dest: single_valued_has_lubs simp add: exec_lub_conv) (*>*)
92.17 + (*<*) by (fastforce dest: single_valued_has_lubs simp add: exec_lub_conv) (*>*)
92.18
92.19 end
93.1 --- a/src/HOL/MicroJava/J/WellForm.thy Sun Sep 11 22:56:05 2011 +0200
93.2 +++ b/src/HOL/MicroJava/J/WellForm.thy Mon Sep 12 07:55:43 2011 +0200
93.3 @@ -314,7 +314,7 @@
93.4 apply( frule class_Object)
93.5 apply( clarify)
93.6 apply( frule fields_rec, assumption)
93.7 -apply( fastsimp)
93.8 +apply( fastforce)
93.9 apply( tactic "safe_tac (put_claset HOL_cs @{context})")
93.10 apply( subst fields_rec)
93.11 apply( assumption)
93.12 @@ -410,8 +410,8 @@
93.13 apply( simp add: wf_cdecl_def)
93.14 apply( drule map_of_SomeD)
93.15 apply( subgoal_tac "md = Object")
93.16 -apply( fastsimp)
93.17 -apply( fastsimp)
93.18 +apply( fastforce)
93.19 +apply( fastforce)
93.20 apply( clarify)
93.21 apply( frule_tac C = C in method_rec)
93.22 apply( assumption)
93.23 @@ -445,8 +445,8 @@
93.24 apply( simp add: ws_cdecl_def)
93.25 apply( drule map_of_SomeD)
93.26 apply( subgoal_tac "md = Object")
93.27 -apply( fastsimp)
93.28 -apply( fastsimp)
93.29 +apply( fastforce)
93.30 +apply( fastforce)
93.31 apply( clarify)
93.32 apply( frule_tac C = C in method_rec)
93.33 apply( assumption)
93.34 @@ -648,7 +648,7 @@
93.35 apply( frule fields_rec, assumption)
93.36 apply( drule class_wf_struct, assumption)
93.37 apply( simp add: ws_cdecl_def wf_fdecl_def)
93.38 -apply( fastsimp)
93.39 +apply( fastforce)
93.40 apply( subst fields_rec)
93.41 apply( fast)
93.42 apply( assumption)
94.1 --- a/src/HOL/Multivariate_Analysis/Brouwer_Fixpoint.thy Sun Sep 11 22:56:05 2011 +0200
94.2 +++ b/src/HOL/Multivariate_Analysis/Brouwer_Fixpoint.thy Mon Sep 12 07:55:43 2011 +0200
94.3 @@ -1014,7 +1014,7 @@
94.4 using reduced_labelling[of label n x] using assms by auto
94.5
94.6 lemma reduced_labelling_0: assumes "j\<in>{1..n}" "label x j = 0" shows "reduced label n x \<noteq> j - 1"
94.7 - using reduced_labelling[of label n x] using assms by fastsimp
94.8 + using reduced_labelling[of label n x] using assms by fastforce
94.9
94.10 lemma reduced_labelling_1: assumes "j\<in>{1..n}" "label x j \<noteq> 0" shows "reduced label n x < j"
94.11 using assms and reduced_labelling[of label n x] apply(erule_tac x=j in allE) by auto
94.12 @@ -1077,8 +1077,8 @@
94.13 case True then guess j .. hence "\<And>x. x\<in>f \<Longrightarrow> reduced lab (n + 1) x \<noteq> j - 1" apply-apply(rule reduced_labelling_0) apply assumption
94.14 apply(rule assms(2)[rule_format]) using sa(1)[unfolded ksimplex_def] unfolding sa by auto moreover
94.15 have "j - 1 \<in> {0..n}" using `j\<in>{1..n+1}` by auto
94.16 - ultimately have False unfolding sa(4)[THEN sym] unfolding image_iff by fastsimp thus ?thesis by auto next
94.17 - case False hence "\<exists>j\<in>{1..n + 1}. \<forall>x\<in>f. x j = p" using sa(5) by fastsimp then guess j .. note j=this
94.18 + ultimately have False unfolding sa(4)[THEN sym] unfolding image_iff by fastforce thus ?thesis by auto next
94.19 + case False hence "\<exists>j\<in>{1..n + 1}. \<forall>x\<in>f. x j = p" using sa(5) by fastforce then guess j .. note j=this
94.20 thus ?thesis proof(cases "j = n+1")
94.21 case False hence *:"j\<in>{1..n}" using j by auto
94.22 hence "\<And>x. x\<in>f \<Longrightarrow> reduced lab n x < j" apply(rule reduced_labelling_1) proof- fix x assume "x\<in>f"
95.1 --- a/src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy Sun Sep 11 22:56:05 2011 +0200
95.2 +++ b/src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy Mon Sep 12 07:55:43 2011 +0200
95.3 @@ -115,7 +115,7 @@
95.4 shows "setsum (%i. f i *\<^sub>R basis i) d = (x::'a::euclidean_space)
95.5 <-> (!i<DIM('a). (i:d --> f i = x$$i) & (i ~: d --> x $$ i = 0))"
95.6 proof- have *:"\<And>x a b P. x * (if P then a else b) = (if P then x*a else x*b)" by auto
95.7 - have **:"finite d" apply(rule finite_subset[OF assms]) by fastsimp
95.8 + have **:"finite d" apply(rule finite_subset[OF assms]) by fastforce
95.9 have ***:"\<And>i. (setsum (%i. f i *\<^sub>R ((basis i)::'a)) d) $$ i = (\<Sum>x\<in>d. if x = i then f x else 0)"
95.10 unfolding euclidean_component_setsum euclidean_component_scaleR basis_component *
95.11 apply(rule setsum_cong2) using assms by auto
95.12 @@ -1319,7 +1319,7 @@
95.13 using setsum_cong2 [of s "\<lambda>y. (\<Sum>x\<in>{x \<in> {1..card s}. f x = y}. u (f x))" u] unfolding obt(4,5) by auto
95.14
95.15 ultimately have "\<exists>k u x. (\<forall>i\<in>{1..k}. 0 \<le> u i \<and> x i \<in> p) \<and> setsum u {1..k} = 1 \<and> (\<Sum>i::nat = 1..k. u i *\<^sub>R x i) = y"
95.16 - apply(rule_tac x="card s" in exI) apply(rule_tac x="u \<circ> f" in exI) apply(rule_tac x=f in exI) by fastsimp
95.17 + apply(rule_tac x="card s" in exI) apply(rule_tac x="u \<circ> f" in exI) apply(rule_tac x=f in exI) by fastforce
95.18 hence "y \<in> ?lhs" unfolding convex_hull_indexed by auto }
95.19 ultimately show ?thesis unfolding set_eq_iff by blast
95.20 qed
95.21 @@ -2884,7 +2884,7 @@
95.22 shows "dist a (closest_point s a) < dist a x"
95.23 apply(rule ccontr) apply(rule_tac notE[OF assms(4)])
95.24 apply(rule closest_point_unique[OF assms(1-3), of a])
95.25 - using closest_point_le[OF assms(2), of _ a] by fastsimp
95.26 + using closest_point_le[OF assms(2), of _ a] by fastforce
95.27
95.28 lemma closest_point_lipschitz:
95.29 assumes "convex s" "closed s" "s \<noteq> {}"
95.30 @@ -4229,7 +4229,7 @@
95.31 ultimately
95.32 have "!i. ( (ALL i:d. 0 < x$$i) & (ALL i. i ~: d --> x$$i = 0) ) --> 0 <= x$$i" by metis
95.33 hence h2: "x : convex hull (insert 0 ?p)" using as assms
95.34 - unfolding substd_simplex[OF assms] by fastsimp
95.35 + unfolding substd_simplex[OF assms] by fastforce
95.36 obtain a where a:"a:d" using `d ~= {}` by auto
95.37 let ?d = "(1 - setsum (op $$ x) d) / real (card d)"
95.38 have "0 < card d" using `d ~={}` `finite d` by (simp add: card_gt_0_iff)
96.1 --- a/src/HOL/Multivariate_Analysis/Derivative.thy Sun Sep 11 22:56:05 2011 +0200
96.2 +++ b/src/HOL/Multivariate_Analysis/Derivative.thy Mon Sep 12 07:55:43 2011 +0200
96.3 @@ -700,7 +700,7 @@
96.4 have "\<bar>(f (x + c *\<^sub>R basis j) - f x - ?v) $$ k\<bar> \<le>
96.5 norm (f (x + c *\<^sub>R basis j) - f x - ?v)" by (rule component_le_norm)
96.6 also have "\<dots> \<le> \<bar>?D k $$ j\<bar> / 2 * \<bar>c\<bar>"
96.7 - using e'[THEN conjunct2, rule_format, OF *] and norm_basis[of j] by fastsimp
96.8 + using e'[THEN conjunct2, rule_format, OF *] and norm_basis[of j] by fastforce
96.9 finally have "\<bar>(f (x + c *\<^sub>R basis j) - f x - ?v) $$ k\<bar> \<le> \<bar>?D k $$ j\<bar> / 2 * \<bar>c\<bar>" by simp
96.10 hence "\<bar>f (x + c *\<^sub>R basis j) $$ k - f x $$ k - c * ?D k $$ j\<bar> \<le> \<bar>?D k $$ j\<bar> / 2 * \<bar>c\<bar>"
96.11 unfolding euclidean_simps euclidean_lambda_beta using j k
96.12 @@ -1285,7 +1285,7 @@
96.13 have "g' (f' a (\<chi>\<chi> i.1)) = (\<chi>\<chi> i.1)" "(\<chi>\<chi> i.1) \<noteq> (0::'n)" defer
96.14 apply(subst euclidean_eq) using f'g' by auto
96.15 hence *:"0 < onorm g'"
96.16 - unfolding onorm_pos_lt[OF assms(3)[unfolded linear_linear]] by fastsimp
96.17 + unfolding onorm_pos_lt[OF assms(3)[unfolded linear_linear]] by fastforce
96.18 def k \<equiv> "1 / onorm g' / 2" have *:"k>0" unfolding k_def using * by auto
96.19 guess d1 using assms(6)[rule_format,OF *] .. note d1=this
96.20 from `open s` obtain d2 where "d2>0" "ball a d2 \<subseteq> s" using `a\<in>s` ..
97.1 --- a/src/HOL/Multivariate_Analysis/Integration.thy Sun Sep 11 22:56:05 2011 +0200
97.2 +++ b/src/HOL/Multivariate_Analysis/Integration.thy Mon Sep 12 07:55:43 2011 +0200
97.3 @@ -133,7 +133,7 @@
97.4 case True show ?thesis proof(cases "x\<in>{a<..<b}")
97.5 case True then guess d unfolding open_contains_ball_eq[OF open_interval,rule_format] ..
97.6 thus ?thesis apply(rule_tac x=i in bexI,rule_tac x=x in exI,rule_tac x="min d e" in exI)
97.7 - unfolding ab using interval_open_subset_closed[of a b] and e by fastsimp+ next
97.8 + unfolding ab using interval_open_subset_closed[of a b] and e by fastforce+ next
97.9 case False then obtain k where "x$$k \<le> a$$k \<or> x$$k \<ge> b$$k" and k:"k<DIM('a)" unfolding mem_interval by(auto simp add:not_less)
97.10 hence "x$$k = a$$k \<or> x$$k = b$$k" using True unfolding ab and mem_interval apply(erule_tac x=k in allE) by auto
97.11 hence "\<exists>x. ball x (e/2) \<subseteq> s \<inter> (\<Union>f)" proof(erule_tac disjE)
97.12 @@ -232,7 +232,7 @@
97.13 case True thus ?thesis unfolding content_def if_P[OF True] unfolding interval_eq_empty apply-
97.14 apply(rule,erule exE) apply(rule_tac x=i in exI) by auto next
97.15 case False note this[unfolded interval_eq_empty not_ex not_less]
97.16 - hence as:"\<forall>i<DIM('a). b $$ i \<ge> a $$ i" by fastsimp
97.17 + hence as:"\<forall>i<DIM('a). b $$ i \<ge> a $$ i" by fastforce
97.18 show ?thesis unfolding content_def if_not_P[OF False] setprod_zero_iff[OF finite_lessThan]
97.19 apply(rule) apply(erule_tac[!] exE bexE) unfolding interval_bounds[OF as] apply(rule_tac x=x in exI) defer
97.20 apply(rule_tac x=i in bexI) using as apply(erule_tac x=i in allE) by auto qed
97.21 @@ -251,7 +251,7 @@
97.22
97.23 lemma content_pos_lt_eq: "0 < content {a..b::'a::ordered_euclidean_space} \<longleftrightarrow> (\<forall>i<DIM('a). a$$i < b$$i)"
97.24 apply(rule) defer apply(rule content_pos_lt,assumption) proof- assume "0 < content {a..b}"
97.25 - hence "content {a..b} \<noteq> 0" by auto thus "\<forall>i<DIM('a). a$$i < b$$i" unfolding content_eq_0 not_ex not_le by fastsimp qed
97.26 + hence "content {a..b} \<noteq> 0" by auto thus "\<forall>i<DIM('a). a$$i < b$$i" unfolding content_eq_0 not_ex not_le by fastforce qed
97.27
97.28 lemma content_empty[simp]: "content {} = 0" unfolding content_def by auto
97.29
97.30 @@ -270,7 +270,7 @@
97.31 using assms[unfolded subset_eq mem_interval,rule_format,OF ab_ab(1),of i] using i by auto qed qed
97.32
97.33 lemma content_lt_nz: "0 < content {a..b} \<longleftrightarrow> content {a..b} \<noteq> 0"
97.34 - unfolding content_pos_lt_eq content_eq_0 unfolding not_ex not_le by fastsimp
97.35 + unfolding content_pos_lt_eq content_eq_0 unfolding not_ex not_le by fastforce
97.36
97.37 subsection {* The notion of a gauge --- simply an open set containing the point. *}
97.38
97.39 @@ -343,7 +343,7 @@
97.40
97.41 lemma forall_in_division:
97.42 "d division_of i \<Longrightarrow> ((\<forall>x\<in>d. P x) \<longleftrightarrow> (\<forall>a b. {a..b} \<in> d \<longrightarrow> P {a..b}))"
97.43 - unfolding division_of_def by fastsimp
97.44 + unfolding division_of_def by fastforce
97.45
97.46 lemma division_of_subset: assumes "p division_of (\<Union>p)" "q \<subseteq> p" shows "q division_of (\<Union>q)"
97.47 apply(rule division_ofI) proof- note as=division_ofD[OF assms(1)]
97.48 @@ -621,7 +621,7 @@
97.49 next assume as:"interior {a..b} = {}" "{a..b} \<noteq> {}"
97.50 show thesis apply(rule that[of "insert {a..b} p"],rule division_ofI)
97.51 unfolding finite_insert apply(rule assm(1)) unfolding Union_insert
97.52 - using assm(2-4) as apply- by(fastsimp dest: assm(5))+
97.53 + using assm(2-4) as apply- by(fastforce dest: assm(5))+
97.54 next assume as:"p \<noteq> {}" "interior {a..b} \<noteq> {}" "{a..b}\<noteq>{}"
97.55 have "\<forall>k\<in>p. \<exists>q. (insert {a..b} q) division_of ({a..b} \<union> k)" proof case goal1
97.56 from assm(4)[OF this] guess c .. then guess d ..
97.57 @@ -763,7 +763,7 @@
97.58 proof(rule division_ofI) note assm=tagged_division_ofD[OF assms]
97.59 show "\<Union>snd ` s = i" "finite (snd ` s)" using assm by auto
97.60 fix k assume k:"k \<in> snd ` s" then obtain xk where xk:"(xk, k) \<in> s" by auto
97.61 - thus "k \<subseteq> i" "k \<noteq> {}" "\<exists>a b. k = {a..b}" using assm apply- by fastsimp+
97.62 + thus "k \<subseteq> i" "k \<noteq> {}" "\<exists>a b. k = {a..b}" using assm apply- by fastforce+
97.63 fix k' assume k':"k' \<in> snd ` s" "k \<noteq> k'" from this(1) obtain xk' where xk':"(xk', k') \<in> s" by auto
97.64 thus "interior k \<inter> interior k' = {}" apply-apply(rule assm(5)) apply(rule xk xk')+ using k' by auto
97.65 qed
97.66 @@ -967,7 +967,7 @@
97.67 subsection {* The set we're concerned with must be closed. *}
97.68
97.69 lemma division_of_closed: "s division_of i \<Longrightarrow> closed (i::('n::ordered_euclidean_space) set)"
97.70 - unfolding division_of_def by fastsimp
97.71 + unfolding division_of_def by fastforce
97.72
97.73 subsection {* General bisection principle for intervals; might be useful elsewhere. *}
97.74
97.75 @@ -1015,8 +1015,8 @@
97.76 assume "s \<noteq> t" hence "\<not> (c = e \<and> d = f)" unfolding c_d e_f by auto
97.77 then obtain i where "c$$i \<noteq> e$$i \<or> d$$i \<noteq> f$$i" and i':"i<DIM('a)" unfolding de_Morgan_conj euclidean_eq[where 'a='a] by auto
97.78 hence i:"c$$i \<noteq> e$$i" "d$$i \<noteq> f$$i" apply- apply(erule_tac[!] disjE)
97.79 - proof- assume "c$$i \<noteq> e$$i" thus "d$$i \<noteq> f$$i" using c_d(2)[of i] e_f(2)[of i] by fastsimp
97.80 - next assume "d$$i \<noteq> f$$i" thus "c$$i \<noteq> e$$i" using c_d(2)[of i] e_f(2)[of i] by fastsimp
97.81 + proof- assume "c$$i \<noteq> e$$i" thus "d$$i \<noteq> f$$i" using c_d(2)[of i] e_f(2)[of i] by fastforce
97.82 + next assume "d$$i \<noteq> f$$i" thus "c$$i \<noteq> e$$i" using c_d(2)[of i] e_f(2)[of i] by fastforce
97.83 qed have *:"\<And>s t. (\<And>a. a\<in>s \<Longrightarrow> a\<in>t \<Longrightarrow> False) \<Longrightarrow> s \<inter> t = {}" by auto
97.84 show "interior s \<inter> interior t = {}" unfolding e_f c_d interior_closed_interval proof(rule *)
97.85 fix x assume "x\<in>{c<..<d}" "x\<in>{e<..<f}"
97.86 @@ -1024,9 +1024,9 @@
97.87 apply-apply(erule_tac[!] x=i in allE)+ by auto
97.88 show False using c_d(2)[OF i'] apply- apply(erule_tac disjE)
97.89 proof(erule_tac[!] conjE) assume as:"c $$ i = a $$ i" "d $$ i = (a $$ i + b $$ i) / 2"
97.90 - show False using e_f(2)[of i] and i x unfolding as by(fastsimp simp add:field_simps)
97.91 + show False using e_f(2)[of i] and i x unfolding as by(fastforce simp add:field_simps)
97.92 next assume as:"c $$ i = (a $$ i + b $$ i) / 2" "d $$ i = b $$ i"
97.93 - show False using e_f(2)[of i] and i x unfolding as by(fastsimp simp add:field_simps)
97.94 + show False using e_f(2)[of i] and i x unfolding as by(fastforce simp add:field_simps)
97.95 qed qed qed
97.96 also have "\<Union> ?A = {a..b}" proof(rule set_eqI,rule)
97.97 fix x assume "x\<in>\<Union>?A" then guess Y unfolding Union_iff ..
97.98 @@ -1606,7 +1606,7 @@
97.99 thus "l \<subseteq> d1 x" unfolding xl' by auto
97.100 show "x\<in>l" "l \<subseteq> {a..b} \<inter> {x. x $$ k \<le> c}" unfolding xl' using p(4-6)[OF xl'(3)] using xl'(4)
97.101 using lem0(1)[OF xl'(3-4)] by auto
97.102 - show "\<exists>a b. l = {a..b}" unfolding xl' using p(6)[OF xl'(3)] by(fastsimp simp add: interval_split[OF k,where c=c])
97.103 + show "\<exists>a b. l = {a..b}" unfolding xl' using p(6)[OF xl'(3)] by(fastforce simp add: interval_split[OF k,where c=c])
97.104 fix y r let ?goal = "interior l \<inter> interior r = {}" assume yr:"(y,r)\<in>?M1"
97.105 then guess y' r' unfolding mem_Collect_eq apply- unfolding Pair_eq apply((erule exE)+,(erule conjE)+) . note yr'=this
97.106 assume as:"(x,l) \<noteq> (y,r)" show "interior l \<inter> interior r = {}"
97.107 @@ -1626,7 +1626,7 @@
97.108 thus "l \<subseteq> d2 x" unfolding xl' by auto
97.109 show "x\<in>l" "l \<subseteq> {a..b} \<inter> {x. x $$ k \<ge> c}" unfolding xl' using p(4-6)[OF xl'(3)] using xl'(4)
97.110 using lem0(2)[OF xl'(3-4)] by auto
97.111 - show "\<exists>a b. l = {a..b}" unfolding xl' using p(6)[OF xl'(3)] by(fastsimp simp add: interval_split[OF k, where c=c])
97.112 + show "\<exists>a b. l = {a..b}" unfolding xl' using p(6)[OF xl'(3)] by(fastforce simp add: interval_split[OF k, where c=c])
97.113 fix y r let ?goal = "interior l \<inter> interior r = {}" assume yr:"(y,r)\<in>?M2"
97.114 then guess y' r' unfolding mem_Collect_eq apply- unfolding Pair_eq apply((erule exE)+,(erule conjE)+) . note yr'=this
97.115 assume as:"(x,l) \<noteq> (y,r)" show "interior l \<inter> interior r = {}"
97.116 @@ -1689,11 +1689,11 @@
97.117 apply(subst setsum_Un_zero) apply(rule p1 p2)+ apply(rule) unfolding split_paired_all split_conv
97.118 proof- fix a b assume ab:"(a,b) \<in> p1 \<inter> p2"
97.119 have "(a,b) \<in> p1" using ab by auto from p1(4)[OF this] guess u v apply-by(erule exE)+ note uv =this
97.120 - have "b \<subseteq> {x. x$$k = c}" using ab p1(3)[of a b] p2(3)[of a b] by fastsimp
97.121 + have "b \<subseteq> {x. x$$k = c}" using ab p1(3)[of a b] p2(3)[of a b] by fastforce
97.122 moreover have "interior {x::'a. x $$ k = c} = {}"
97.123 proof(rule ccontr) case goal1 then obtain x where x:"x\<in>interior {x::'a. x$$k = c}" by auto
97.124 then guess e unfolding mem_interior .. note e=this
97.125 - have x:"x$$k = c" using x interior_subset by fastsimp
97.126 + have x:"x$$k = c" using x interior_subset by fastforce
97.127 have *:"\<And>i. i<DIM('a) \<Longrightarrow> \<bar>(x - (x + (\<chi>\<chi> i. if i = k then e / 2 else 0))) $$ i\<bar>
97.128 = (if i = k then e/2 else 0)" using e by auto
97.129 have "(\<Sum>i<DIM('a). \<bar>(x - (x + (\<chi>\<chi> i. if i = k then e / 2 else 0))) $$ i\<bar>) =
97.130 @@ -1790,7 +1790,7 @@
97.131 lemma monoidalI: assumes "\<And>x y. opp x y = opp y x"
97.132 "\<And>x y z. opp x (opp y z) = opp (opp x y) z"
97.133 "\<And>x. opp (neutral opp) x = x" shows "monoidal opp"
97.134 - unfolding monoidal_def using assms by fastsimp
97.135 + unfolding monoidal_def using assms by fastforce
97.136
97.137 lemma monoidal_ac: assumes "monoidal opp"
97.138 shows "opp (neutral opp) a = a" "opp a (neutral opp) = a" "opp a b = opp b a"
97.139 @@ -2721,7 +2721,7 @@
97.140 lemma integrable_spike: assumes "negligible s" "\<forall>x\<in>(t - s). g x = f x" "f integrable_on t"
97.141 shows "g integrable_on t"
97.142 using assms unfolding integrable_on_def apply-apply(erule exE)
97.143 - apply(rule,rule has_integral_spike) by fastsimp+
97.144 + apply(rule,rule has_integral_spike) by fastforce+
97.145
97.146 lemma integral_spike: assumes "negligible s" "\<forall>x\<in>(t - s). g x = f x"
97.147 shows "integral t f = integral t g"
97.148 @@ -2860,7 +2860,7 @@
97.149 proof safe show "(\<lambda>y. f x) integrable_on l" unfolding integrable_on_def l by(rule,rule has_integral_const)
97.150 fix y assume y:"y\<in>l" note fineD[OF p(2) as,unfolded subset_eq,rule_format,OF this]
97.151 note d(2)[OF _ _ this[unfolded mem_ball]]
97.152 - thus "norm (f y - f x) \<le> e" using y p'(2-3)[OF as] unfolding dist_norm l norm_minus_commute by fastsimp qed qed
97.153 + thus "norm (f y - f x) \<le> e" using y p'(2-3)[OF as] unfolding dist_norm l norm_minus_commute by fastforce qed qed
97.154 from e have "0 \<le> e" by auto from approximable_on_division[OF this division_of_tagged_division[OF p(1)] *] guess g .
97.155 thus "\<exists>g. (\<forall>x\<in>{a..b}. norm (f x - g x) \<le> e) \<and> g integrable_on {a..b}" by auto qed
97.156
97.157 @@ -3034,7 +3034,7 @@
97.158 def y \<equiv> "(\<chi>\<chi> j. if j = i then if c$$i \<le> (a$$i + b$$i) / 2 then c$$i +
97.159 min e (b$$i - c$$i) / 2 else c$$i - min e (c$$i - a$$i) / 2 else x$$j)::'a"
97.160 show "\<exists>x'\<in>\<Union>(s - {k}). x' \<noteq> x \<and> dist x' x < e" apply(rule_tac x=y in bexI)
97.161 - proof have "d \<in> {c..d}" using s(3)[OF k(1)] unfolding k interval_eq_empty mem_interval by(fastsimp simp add: not_less)
97.162 + proof have "d \<in> {c..d}" using s(3)[OF k(1)] unfolding k interval_eq_empty mem_interval by(fastforce simp add: not_less)
97.163 hence "d \<in> {a..b}" using s(2)[OF k(1)] unfolding k by auto note di = this[unfolded mem_interval,THEN spec[where x=i]]
97.164 hence xyi:"y$$i \<noteq> x$$i" unfolding y_def unfolding i xi euclidean_lambda_beta'[OF i(2)] if_P[OF refl]
97.165 apply(cases) apply(subst if_P,assumption) unfolding if_not_P not_le using as(2)
97.166 @@ -3099,7 +3099,7 @@
97.167
97.168 lemma integrable_combine: fixes f::"real \<Rightarrow> 'a::banach"
97.169 assumes "a \<le> c" "c \<le> b" "f integrable_on {a..c}" "f integrable_on {c..b}"
97.170 - shows "f integrable_on {a..b}" using assms unfolding integrable_on_def by(fastsimp intro!:has_integral_combine)
97.171 + shows "f integrable_on {a..b}" using assms unfolding integrable_on_def by(fastforce intro!:has_integral_combine)
97.172
97.173 subsection {* Reduce integrability to "local" integrability. *}
97.174
97.175 @@ -3219,7 +3219,7 @@
97.176 thus "x \<in> \<Union>{k. \<exists>x. (x, k) \<in> (\<lambda>(x, k). (g x, g ` k)) ` p}" apply-
97.177 apply(rule_tac X="g ` X" in UnionI) defer apply(rule_tac x="h x" in image_eqI)
97.178 using X(2) assms(3)[rule_format,of x] by auto
97.179 - qed note ** = d(2)[OF this] have *:"inj_on (\<lambda>(x, k). (g x, g ` k)) p" using inj(1) unfolding inj_on_def by fastsimp
97.180 + qed note ** = d(2)[OF this] have *:"inj_on (\<lambda>(x, k). (g x, g ` k)) p" using inj(1) unfolding inj_on_def by fastforce
97.181 have "(\<Sum>(x, k)\<in>(\<lambda>(x, k). (g x, g ` k)) ` p. content k *\<^sub>R f x) - i = r *\<^sub>R (\<Sum>(x, k)\<in>p. content k *\<^sub>R f (g x)) - i" (is "?l = _") unfolding algebra_simps add_left_cancel
97.182 unfolding setsum_reindex[OF *] apply(subst scaleR_right.setsum) defer apply(rule setsum_cong2) unfolding o_def split_paired_all split_conv
97.183 apply(drule p(4)) apply safe unfolding assms(7)[rule_format] using p by auto
97.184 @@ -4347,7 +4347,7 @@
97.185 shows "norm(setsum (\<lambda>(x,k). content k *\<^sub>R f x - integral k f) p) \<le> e" (is "?x \<le> e")
97.186 proof- { presume "\<And>k. 0<k \<Longrightarrow> ?x \<le> e + k" thus ?thesis by (blast intro: field_le_epsilon) }
97.187 fix k::real assume k:"k>0" note p' = tagged_partial_division_ofD[OF p(1)]
97.188 - have "\<Union>snd ` p \<subseteq> {a..b}" using p'(3) by fastsimp
97.189 + have "\<Union>snd ` p \<subseteq> {a..b}" using p'(3) by fastforce
97.190 note partial_division_of_tagged_division[OF p(1)] this
97.191 from partial_division_extend_interval[OF this] guess q . note q=this and q' = division_ofD[OF this(2)]
97.192 def r \<equiv> "q - snd ` p" have "snd ` p \<inter> r = {}" unfolding r_def by auto
97.193 @@ -4380,7 +4380,7 @@
97.194 apply(rule,rule q') using q(1) p' unfolding r_def by auto qed
97.195 moreover have "\<Union>snd ` p \<union> \<Union>r = {a..b}" "{qq i |i. i \<in> r} = qq ` r"
97.196 unfolding Union_Un_distrib[THEN sym] r_def using q by auto
97.197 - ultimately show "?p tagged_division_of {a..b}" by fastsimp qed
97.198 + ultimately show "?p tagged_division_of {a..b}" by fastforce qed
97.199
97.200 hence "norm ((\<Sum>(x, k)\<in>p. content k *\<^sub>R f x) + (\<Sum>(x, k)\<in>\<Union>qq ` r. content k *\<^sub>R f x) -
97.201 integral {a..b} f) < e" apply(subst setsum_Un_zero[THEN sym]) apply(rule p') prefer 3
97.202 @@ -5448,7 +5448,7 @@
97.203
97.204 have "\<exists>y\<in>?S. \<not> y \<ge> i + e"
97.205 proof(rule ccontr) case goal1 hence "i \<ge> i + e" apply-
97.206 - apply(rule isGlb_le_isLb[OF i]) apply(rule isLbI) unfolding setge_def by fastsimp+
97.207 + apply(rule isGlb_le_isLb[OF i]) apply(rule isLbI) unfolding setge_def by fastforce+
97.208 thus False using e by auto
97.209 qed then guess y .. note y=this[unfolded not_le]
97.210 from this(1)[unfolded mem_Collect_eq] guess N .. note N=conjunctD2[OF this]
97.211 @@ -5492,7 +5492,7 @@
97.212
97.213 have "\<exists>y\<in>?S. \<not> y \<le> i - e"
97.214 proof(rule ccontr) case goal1 hence "i \<le> i - e" apply-
97.215 - apply(rule isLub_le_isUb[OF i]) apply(rule isUbI) unfolding setle_def by fastsimp+
97.216 + apply(rule isLub_le_isUb[OF i]) apply(rule isUbI) unfolding setle_def by fastforce+
97.217 thus False using e by auto
97.218 qed then guess y .. note y=this[unfolded not_le]
97.219 from this(1)[unfolded mem_Collect_eq] guess N .. note N=conjunctD2[OF this]
98.1 --- a/src/HOL/Multivariate_Analysis/Linear_Algebra.thy Sun Sep 11 22:56:05 2011 +0200
98.2 +++ b/src/HOL/Multivariate_Analysis/Linear_Algebra.thy Mon Sep 12 07:55:43 2011 +0200
98.3 @@ -1256,7 +1256,7 @@
98.4 have "x\<in>UNIV" by auto from this[unfolded span_basis[THEN sym]]
98.5 have "\<exists>u. (\<Sum>v\<in>basis ` {..<DIM('a)}. u v *\<^sub>R v) = x"
98.6 unfolding range_basis span_insert_0 apply(subst (asm) span_finite) by auto
98.7 - thus ?thesis by fastsimp
98.8 + thus ?thesis by fastforce
98.9 qed
98.10
98.11 lemma span_basis'[simp]:"span ((basis::nat=>'a) ` {..<DIM('a::euclidean_space)}) = UNIV"
99.1 --- a/src/HOL/Multivariate_Analysis/Topology_Euclidean_Space.thy Sun Sep 11 22:56:05 2011 +0200
99.2 +++ b/src/HOL/Multivariate_Analysis/Topology_Euclidean_Space.thy Mon Sep 12 07:55:43 2011 +0200
99.3 @@ -4224,8 +4224,8 @@
99.4 unfolding compact_eq_bounded_closed
99.5 using bounded_Int and closed_Int and assms(1) by auto
99.6 ultimately obtain x where "x\<in>cball a (dist b a) \<inter> s" "\<forall>y\<in>cball a (dist b a) \<inter> s. dist a x \<le> dist a y"
99.7 - using continuous_attains_inf[of ?B "dist a"] by fastsimp
99.8 - thus ?thesis by fastsimp
99.9 + using continuous_attains_inf[of ?B "dist a"] by fastforce
99.10 + thus ?thesis by fastforce
99.11 qed
99.12
99.13
99.14 @@ -4603,7 +4603,7 @@
99.15 lemma interval_ne_empty: fixes a :: "'a::ordered_euclidean_space" shows
99.16 "{a .. b} \<noteq> {} \<longleftrightarrow> (\<forall>i<DIM('a). a$$i \<le> b$$i)" and
99.17 "{a <..< b} \<noteq> {} \<longleftrightarrow> (\<forall>i<DIM('a). a$$i < b$$i)"
99.18 - unfolding interval_eq_empty[of a b] by fastsimp+
99.19 + unfolding interval_eq_empty[of a b] by fastforce+
99.20
99.21 lemma interval_sing:
99.22 fixes a :: "'a::ordered_euclidean_space"
99.23 @@ -4672,7 +4672,7 @@
99.24 } note part1 = this
99.25 show ?th3 unfolding subset_eq and Ball_def and mem_interval
99.26 apply(rule,rule,rule,rule) apply(rule part1) unfolding subset_eq and Ball_def and mem_interval
99.27 - prefer 4 apply auto by(erule_tac x=i in allE,erule_tac x=i in allE,fastsimp)+
99.28 + prefer 4 apply auto by(erule_tac x=i in allE,erule_tac x=i in allE,fastforce)+
99.29 { assume as:"{c<..<d} \<subseteq> {a<..<b}" "\<forall>i<DIM('a). c$$i < d$$i"
99.30 fix i assume i:"i<DIM('a)"
99.31 from as(1) have "{c<..<d} \<subseteq> {a..b}" using interval_open_subset_closed[of a b] by auto
99.32 @@ -5834,7 +5834,7 @@
99.33 { assume as:"dist a b > dist (f n x) (f n y)"
99.34 then obtain Na Nb where "\<forall>m\<ge>Na. dist (f (r m) x) a < (dist a b - dist (f n x) (f n y)) / 2"
99.35 and "\<forall>m\<ge>Nb. dist (f (r m) y) b < (dist a b - dist (f n x) (f n y)) / 2"
99.36 - using lima limb unfolding h_def Lim_sequentially by (fastsimp simp del: less_divide_eq_number_of1)
99.37 + using lima limb unfolding h_def Lim_sequentially by (fastforce simp del: less_divide_eq_number_of1)
99.38 hence "dist (f (r (Na + Nb + n)) x - f (r (Na + Nb + n)) y) (a - b) < dist a b - dist (f n x) (f n y)"
99.39 apply(erule_tac x="Na+Nb+n" in allE)
99.40 apply(erule_tac x="Na+Nb+n" in allE) apply simp
99.41 @@ -5853,10 +5853,10 @@
99.42
99.43 have [simp]:"a = b" proof(rule ccontr)
99.44 def e \<equiv> "dist a b - dist (g a) (g b)"
99.45 - assume "a\<noteq>b" hence "e > 0" unfolding e_def using dist by fastsimp
99.46 + assume "a\<noteq>b" hence "e > 0" unfolding e_def using dist by fastforce
99.47 hence "\<exists>n. dist (f n x) a < e/2 \<and> dist (f n y) b < e/2"
99.48 using lima limb unfolding Lim_sequentially
99.49 - apply (auto elim!: allE[where x="e/2"]) apply(rule_tac x="r (max N Na)" in exI) unfolding h_def by fastsimp
99.50 + apply (auto elim!: allE[where x="e/2"]) apply(rule_tac x="r (max N Na)" in exI) unfolding h_def by fastforce
99.51 then obtain n where n:"dist (f n x) a < e/2 \<and> dist (f n y) b < e/2" by auto
99.52 have "dist (f (Suc n) x) (g a) \<le> dist (f n x) a"
99.53 using dist[THEN bspec[where x="f n x"], THEN bspec[where x="a"]] and fs by auto
99.54 @@ -5869,7 +5869,7 @@
99.55 have [simp]:"\<And>n. f (Suc n) x = f n y" unfolding f_def y_def by(induct_tac n)auto
99.56 { fix x y assume "x\<in>s" "y\<in>s" moreover
99.57 fix e::real assume "e>0" ultimately
99.58 - have "dist y x < e \<longrightarrow> dist (g y) (g x) < e" using dist by fastsimp }
99.59 + have "dist y x < e \<longrightarrow> dist (g y) (g x) < e" using dist by fastforce }
99.60 hence "continuous_on s g" unfolding continuous_on_iff by auto
99.61
99.62 hence "((snd \<circ> h \<circ> r) ---> g a) sequentially" unfolding continuous_on_sequentially
100.1 --- a/src/HOL/Nat.thy Sun Sep 11 22:56:05 2011 +0200
100.2 +++ b/src/HOL/Nat.thy Mon Sep 12 07:55:43 2011 +0200
100.3 @@ -320,7 +320,7 @@
100.4
100.5 lemma one_eq_mult_iff [simp,no_atp]: "(Suc 0 = m * n) = (m = Suc 0 & n = Suc 0)"
100.6 apply (rule trans)
100.7 - apply (rule_tac [2] mult_eq_1_iff, fastsimp)
100.8 + apply (rule_tac [2] mult_eq_1_iff, fastforce)
100.9 done
100.10
100.11 lemma nat_mult_eq_1_iff [simp]: "m * n = (1::nat) \<longleftrightarrow> m = 1 \<and> n = 1"
101.1 --- a/src/HOL/Nominal/Examples/Fsub.thy Sun Sep 11 22:56:05 2011 +0200
101.2 +++ b/src/HOL/Nominal/Examples/Fsub.thy Mon Sep 12 07:55:43 2011 +0200
101.3 @@ -665,7 +665,7 @@
101.4
101.5 nominal_inductive subtype_of
101.6 apply (simp_all add: abs_fresh)
101.7 - apply (fastsimp simp add: valid_ty_dom_fresh dest: subtype_implies_ok)
101.8 + apply (fastforce simp add: valid_ty_dom_fresh dest: subtype_implies_ok)
101.9 apply (force simp add: closed_in_fresh dest: subtype_implies_closed subtype_implies_ok)+
101.10 done
101.11
101.12 @@ -1030,7 +1030,7 @@
101.13 case (SA_all T\<^isub>1 S\<^isub>1 Y S\<^isub>2 T\<^isub>2 \<Gamma> X \<Delta>)
101.14 have IH_inner\<^isub>1: "(\<Delta>@[(TVarB X P)]@\<Gamma>) \<turnstile> T\<^isub>1 <: S\<^isub>1"
101.15 and IH_inner\<^isub>2: "(((TVarB Y T\<^isub>1)#\<Delta>)@[(TVarB X P)]@\<Gamma>) \<turnstile> S\<^isub>2 <: T\<^isub>2"
101.16 - by (fastsimp intro: SA_all)+
101.17 + by (fastforce intro: SA_all)+
101.18 then show "(\<Delta>@[(TVarB X P)]@\<Gamma>) \<turnstile> (\<forall>Y<:S\<^isub>1. S\<^isub>2) <: (\<forall>Y<:T\<^isub>1. T\<^isub>2)" by auto
101.19 qed
101.20 }
101.21 @@ -1401,7 +1401,7 @@
101.22 show ?case using h1 h2 by auto
101.23 next
101.24 case (SA_all T1 S1 X S2 T2)
101.25 - have h1:"((TVarB X T1 # \<Gamma>) @ \<Delta>)\<turnstile>S2<:T2" by (fastsimp intro: SA_all)
101.26 + have h1:"((TVarB X T1 # \<Gamma>) @ \<Delta>)\<turnstile>S2<:T2" by (fastforce intro: SA_all)
101.27 have h2:"(\<Gamma> @ \<Delta>)\<turnstile>T1<:S1" using SA_all by auto
101.28 then show ?case using h1 h2 by auto
101.29 qed (auto)
101.30 @@ -1421,16 +1421,16 @@
101.31 then show ?case by force
101.32 next
101.33 case (T_Abs x T1 t2 T2 P D)
101.34 - then show ?case by (fastsimp dest: typing_ok)
101.35 + then show ?case by (fastforce dest: typing_ok)
101.36 next
101.37 case (T_Sub t S T P D)
101.38 - then show ?case using subtype_narrow by fastsimp
101.39 + then show ?case using subtype_narrow by fastforce
101.40 next
101.41 case (T_TAbs X' T1 t2 T2 P D)
101.42 - then show ?case by (fastsimp dest: typing_ok)
101.43 + then show ?case by (fastforce dest: typing_ok)
101.44 next
101.45 case (T_TApp X' t1 T2 T11 T12 P D)
101.46 - then have "D @ TVarB X P # \<Gamma> \<turnstile> t1 : Forall X' T12 T11" by fastsimp
101.47 + then have "D @ TVarB X P # \<Gamma> \<turnstile> t1 : Forall X' T12 T11" by fastforce
101.48 moreover have "(D @ [TVarB X Q] @ \<Gamma>) \<turnstile> T2<:T11" using T_TApp by auto
101.49 then have "(D @ [TVarB X P] @ \<Gamma>) \<turnstile> T2<:T11" using `\<Gamma>\<turnstile>P<:Q`
101.50 by (rule subtype_narrow)
101.51 @@ -1474,7 +1474,7 @@
101.52 case (T_TAbs X T1 t2 T2 x u D)
101.53 from `TVarB X T1 # D @ VarB x U # \<Gamma> \<turnstile> t2 : T2` have "X \<sharp> T1"
101.54 by (auto simp add: valid_ty_dom_fresh dest: typing_ok intro!: closed_in_fresh)
101.55 - with `X \<sharp> u` and T_TAbs show ?case by fastsimp
101.56 + with `X \<sharp> u` and T_TAbs show ?case by fastforce
101.57 next
101.58 case (T_TApp X t1 T2 T11 T12 x u D)
101.59 then have "(D@\<Gamma>) \<turnstile>T2<:T11" using T_TApp by (auto dest: strengthening)
102.1 --- a/src/HOL/Nominal/Examples/Standardization.thy Sun Sep 11 22:56:05 2011 +0200
102.2 +++ b/src/HOL/Nominal/Examples/Standardization.thy Mon Sep 12 07:55:43 2011 +0200
102.3 @@ -296,7 +296,7 @@
102.4 apply (erule exE)
102.5 apply (rename_tac ts)
102.6 apply (case_tac ts)
102.7 - apply fastsimp
102.8 + apply fastforce
102.9 apply force
102.10 apply (erule disjE)
102.11 apply blast
103.1 --- a/src/HOL/Number_Theory/MiscAlgebra.thy Sun Sep 11 22:56:05 2011 +0200
103.2 +++ b/src/HOL/Number_Theory/MiscAlgebra.thy Mon Sep 12 07:55:43 2011 +0200
103.3 @@ -259,7 +259,7 @@
103.4 apply blast
103.5 apply (erule finite_UN_I)
103.6 apply blast
103.7 - apply (fastsimp)
103.8 + apply (fastforce)
103.9 apply (auto intro!: funcsetI finprod_closed)
103.10 done
103.11
104.1 --- a/src/HOL/Old_Number_Theory/Factorization.thy Sun Sep 11 22:56:05 2011 +0200
104.2 +++ b/src/HOL/Old_Number_Theory/Factorization.thy Mon Sep 12 07:55:43 2011 +0200
104.3 @@ -128,7 +128,7 @@
104.4 "primel xs \<Longrightarrow> xs \<noteq> [] \<Longrightarrow> Suc 0 < prod xs"
104.5 apply (induct xs)
104.6 apply simp
104.7 - apply (fastsimp simp: primel_def prime_def elim: one_less_mult)
104.8 + apply (fastforce simp: primel_def prime_def elim: one_less_mult)
104.9 done
104.10
104.11 lemma primel_prod_gz: "primel xs ==> 0 < prod xs"
105.1 --- a/src/HOL/Old_Number_Theory/Quadratic_Reciprocity.thy Sun Sep 11 22:56:05 2011 +0200
105.2 +++ b/src/HOL/Old_Number_Theory/Quadratic_Reciprocity.thy Mon Sep 12 07:55:43 2011 +0200
105.3 @@ -527,7 +527,7 @@
105.4 ultimately have "int(card (S1)) = setsum (%j. int(card (f1 j))) P_set"
105.5 by auto
105.6 also have "... = setsum (%j. q * j div p) P_set"
105.7 - using aux3a by(fastsimp intro: setsum_cong)
105.8 + using aux3a by(fastforce intro: setsum_cong)
105.9 finally show ?thesis .
105.10 qed
105.11
105.12 @@ -551,7 +551,7 @@
105.13 ultimately have "int(card (S2)) = setsum (%j. int(card (f2 j))) Q_set"
105.14 by auto
105.15 also have "... = setsum (%j. p * j div q) Q_set"
105.16 - using aux3b by(fastsimp intro: setsum_cong)
105.17 + using aux3b by(fastforce intro: setsum_cong)
105.18 finally show ?thesis .
105.19 qed
105.20
106.1 --- a/src/HOL/Predicate_Compile_Examples/Predicate_Compile_Quickcheck_Examples.thy Sun Sep 11 22:56:05 2011 +0200
106.2 +++ b/src/HOL/Predicate_Compile_Examples/Predicate_Compile_Quickcheck_Examples.thy Mon Sep 12 07:55:43 2011 +0200
106.3 @@ -283,8 +283,8 @@
106.4
106.5 code_pred [random_dseq inductify] matrix
106.6 apply (cases x)
106.7 - unfolding matrix_def apply fastsimp
106.8 - apply fastsimp done
106.9 + unfolding matrix_def apply fastforce
106.10 + apply fastforce done
106.11
106.12
106.13 values [random_dseq 2, 2, 15] 6 "{(M::int list list, n, m). matrix M n m}"
107.1 --- a/src/HOL/Predicate_Compile_Examples/Predicate_Compile_Tests.thy Sun Sep 11 22:56:05 2011 +0200
107.2 +++ b/src/HOL/Predicate_Compile_Examples/Predicate_Compile_Tests.thy Mon Sep 12 07:55:43 2011 +0200
107.3 @@ -244,7 +244,7 @@
107.4 from alt_nil nil show thesis by auto
107.5 next
107.6 case cons
107.7 - from alt_cons cons show thesis by fastsimp
107.8 + from alt_cons cons show thesis by fastforce
107.9 qed
107.10 qed
107.11
107.12 @@ -469,7 +469,7 @@
107.13 next
107.14 fix xs ys zs x
107.15 assume "xa = x # xs" "xb = ys" "xc = x # zs" "append2 xs ys zs"
107.16 - from this append2(2) show thesis by fastsimp
107.17 + from this append2(2) show thesis by fastforce
107.18 qed
107.19 qed
107.20
107.21 @@ -913,7 +913,7 @@
107.22 assume "has_length xs i" "has_length ys i" "r (x, y)"
107.23 from this has_length show "lexn r (Suc i) (x # xs, y # ys)"
107.24 unfolding lexn_conv Collect_def mem_def
107.25 - by fastsimp
107.26 + by fastforce
107.27 next
107.28 assume "lexn r i (xs, ys)"
107.29 thm lexn_conv
107.30 @@ -935,8 +935,8 @@
107.31 apply (auto simp add: has_length)
107.32 apply (case_tac xys)
107.33 apply auto
107.34 - apply fastsimp
107.35 - apply fastsimp done
107.36 + apply fastforce
107.37 + apply fastforce done
107.38 qed
107.39
107.40 values [random_dseq 1, 2, 5] 10 "{(n, xs, ys::int list). lexn (%(x, y). x <= y) n (xs, ys)}"
108.1 --- a/src/HOL/Presburger.thy Sun Sep 11 22:56:05 2011 +0200
108.2 +++ b/src/HOL/Presburger.thy Mon Sep 12 07:55:43 2011 +0200
108.3 @@ -28,7 +28,7 @@
108.4 "\<exists>z.\<forall>(x::'a::{linorder,plus,Rings.dvd})<z. (d dvd x + s) = (d dvd x + s)"
108.5 "\<exists>z.\<forall>(x::'a::{linorder,plus,Rings.dvd})<z. (\<not> d dvd x + s) = (\<not> d dvd x + s)"
108.6 "\<exists>z.\<forall>x<z. F = F"
108.7 - by ((erule exE, erule exE,rule_tac x="min z za" in exI,simp)+, (rule_tac x="t" in exI,fastsimp)+) simp_all
108.8 + by ((erule exE, erule exE,rule_tac x="min z za" in exI,simp)+, (rule_tac x="t" in exI,fastforce)+) simp_all
108.9
108.10 lemma pinf:
108.11 "\<lbrakk>\<exists>(z ::'a::linorder).\<forall>x>z. P x = P' x; \<exists>z.\<forall>x>z. Q x = Q' x\<rbrakk>
108.12 @@ -44,7 +44,7 @@
108.13 "\<exists>z.\<forall>(x::'a::{linorder,plus,Rings.dvd})>z. (d dvd x + s) = (d dvd x + s)"
108.14 "\<exists>z.\<forall>(x::'a::{linorder,plus,Rings.dvd})>z. (\<not> d dvd x + s) = (\<not> d dvd x + s)"
108.15 "\<exists>z.\<forall>x>z. F = F"
108.16 - by ((erule exE, erule exE,rule_tac x="max z za" in exI,simp)+,(rule_tac x="t" in exI,fastsimp)+) simp_all
108.17 + by ((erule exE, erule exE,rule_tac x="max z za" in exI,simp)+,(rule_tac x="t" in exI,fastforce)+) simp_all
108.18
108.19 lemma inf_period:
108.20 "\<lbrakk>\<forall>x k. P x = P (x - k*D); \<forall>x k. Q x = Q (x - k*D)\<rbrakk>
108.21 @@ -342,7 +342,7 @@
108.22
108.23 lemma simp_from_to: "{i..j::int} = (if j < i then {} else insert i {i+1..j})"
108.24 apply(simp add:atLeastAtMost_def atLeast_def atMost_def)
108.25 -apply(fastsimp)
108.26 +apply(fastforce)
108.27 done
108.28
108.29 theorem unity_coeff_ex: "(\<exists>(x::'a::{semiring_0,Rings.dvd}). P (l * x)) \<equiv> (\<exists>x. l dvd (x + 0) \<and> P x)"
109.1 --- a/src/HOL/Probability/Binary_Product_Measure.thy Sun Sep 11 22:56:05 2011 +0200
109.2 +++ b/src/HOL/Probability/Binary_Product_Measure.thy Mon Sep 12 07:55:43 2011 +0200
109.3 @@ -106,7 +106,7 @@
109.4 apply - apply (rule bexI[of _ "space M1"]) apply (rule bexI[of _ X])
109.5 using M2.sets_into_space by force+ }
109.6 ultimately have "?fst \<and> ?snd"
109.7 - by (fastsimp simp: measurable_def sets_sigma space_pair_measure
109.8 + by (fastforce simp: measurable_def sets_sigma space_pair_measure
109.9 intro!: sigma_sets.Basic)
109.10 then show ?fst ?snd by auto
109.11 qed
109.12 @@ -437,7 +437,7 @@
109.13 show ?thesis unfolding space_pair_measure
109.14 proof (intro exI[of _ ?F] conjI allI)
109.15 show "range ?F \<subseteq> sets E" using F1 F2
109.16 - by (fastsimp intro!: pair_measure_generatorI)
109.17 + by (fastforce intro!: pair_measure_generatorI)
109.18 next
109.19 have "space M1 \<times> space M2 \<subseteq> (\<Union>i. ?F i)"
109.20 proof (intro subsetI)
110.1 --- a/src/HOL/Probability/Borel_Space.thy Sun Sep 11 22:56:05 2011 +0200
110.2 +++ b/src/HOL/Probability/Borel_Space.thy Mon Sep 12 07:55:43 2011 +0200
110.3 @@ -127,7 +127,7 @@
110.4 "\<forall>S\<in>sets borel. ?f -` S \<inter> A \<in> op \<inter> A ` sets M"
110.5 then have "?f -` S \<inter> A \<in> op \<inter> A ` sets M" by auto
110.6 then have f: "?f -` S \<inter> A \<in> sets M"
110.7 - using `A \<in> sets M` sets_into_space by fastsimp
110.8 + using `A \<in> sets M` sets_into_space by fastforce
110.9 show "?f -` S \<inter> space M \<in> sets M"
110.10 proof cases
110.11 assume "0 \<in> S"
111.1 --- a/src/HOL/Probability/Finite_Product_Measure.thy Sun Sep 11 22:56:05 2011 +0200
111.2 +++ b/src/HOL/Probability/Finite_Product_Measure.thy Mon Sep 12 07:55:43 2011 +0200
111.3 @@ -477,7 +477,7 @@
111.4 proof (unfold measurable_def, intro CollectI conjI ballI)
111.5 fix A assume "A \<in> sets (M i)"
111.6 then have "(\<lambda>x. x i) -` A \<inter> space (Pi\<^isub>M I M) = (\<Pi>\<^isub>E j\<in>I. if i = j then A else space (M j))"
111.7 - using M.sets_into_space `i \<in> I` by (fastsimp dest: Pi_mem split: split_if_asm)
111.8 + using M.sets_into_space `i \<in> I` by (fastforce dest: Pi_mem split: split_if_asm)
111.9 then show "(\<lambda>x. x i) -` A \<inter> space (Pi\<^isub>M I M) \<in> sets (Pi\<^isub>M I M)"
111.10 using `A \<in> sets (M i)` by (auto intro!: product_algebraI)
111.11 qed (insert `i \<in> I`, auto)
111.12 @@ -641,8 +641,8 @@
111.13 show "?m (Pi\<^isub>E (insert i I) A) = (\<Prod>i\<in>insert i I. M.\<mu> i (A i))"
111.14 unfolding * using A
111.15 apply (subst P.pair_measure_times)
111.16 - using A apply fastsimp
111.17 - using A apply fastsimp
111.18 + using A apply fastforce
111.19 + using A apply fastforce
111.20 using `i \<notin> I` `finite I` prod[of A] A by (auto simp: ac_simps) }
111.21 note product = this
111.22 have *: "sigma I'.G\<lparr> measure := ?\<nu> \<rparr> = I'.P\<lparr> measure := ?\<nu> \<rparr>"
112.1 --- a/src/HOL/Probability/Information.thy Sun Sep 11 22:56:05 2011 +0200
112.2 +++ b/src/HOL/Probability/Information.thy Mon Sep 12 07:55:43 2011 +0200
112.3 @@ -35,7 +35,7 @@
112.4 have "convex_on {0 <..} (\<lambda> x. - log b x)"
112.5 by (rule minus_log_convex[OF `b > 1`])
112.6 hence "- log b (\<Sum> i \<in> s. a i * y i) \<le> (\<Sum> i \<in> s. a i * - log b (y i))"
112.7 - using convex_on_setsum[of _ _ "\<lambda> x. - log b x"] assms pos_is_convex by fastsimp
112.8 + using convex_on_setsum[of _ _ "\<lambda> x. - log b x"] assms pos_is_convex by fastforce
112.9 thus ?thesis by (auto simp add:setsum_negf le_imp_neg_le)
112.10 qed
112.11
112.12 @@ -1327,7 +1327,7 @@
112.13 shows "finite (g`A)"
112.14 proof -
112.15 from subvimage_translator_image[OF svi]
112.16 - obtain h where "g`A = h`f`A" by fastsimp
112.17 + obtain h where "g`A = h`f`A" by fastforce
112.18 with fin show "finite (g`A)" by simp
112.19 qed
112.20
113.1 --- a/src/HOL/Probability/Lebesgue_Integration.thy Sun Sep 11 22:56:05 2011 +0200
113.2 +++ b/src/HOL/Probability/Lebesgue_Integration.thy Mon Sep 12 07:55:43 2011 +0200
113.3 @@ -216,7 +216,7 @@
113.4 shows "simple_function M f \<longleftrightarrow> finite (f`space M) \<and> f \<in> borel_measurable M"
113.5 using simple_function_borel_measurable[of f]
113.6 borel_measurable_simple_function[of f]
113.7 - by (fastsimp simp: simple_function_def)
113.8 + by (fastforce simp: simple_function_def)
113.9
113.10 lemma (in sigma_algebra) simple_function_const[intro, simp]:
113.11 "simple_function M (\<lambda>x. c)"
113.12 @@ -462,7 +462,7 @@
113.13 have f: "finite (f`A) \<longleftrightarrow> finite (?f`space M)"
113.14 proof cases
113.15 assume "A = space M"
113.16 - then have "f`A = ?f`space M" by (fastsimp simp: image_iff)
113.17 + then have "f`A = ?f`space M" by (fastforce simp: image_iff)
113.18 then show ?thesis by simp
113.19 next
113.20 assume "A \<noteq> space M"
114.1 --- a/src/HOL/Probability/Lebesgue_Measure.thy Sun Sep 11 22:56:05 2011 +0200
114.2 +++ b/src/HOL/Probability/Lebesgue_Measure.thy Mon Sep 12 07:55:43 2011 +0200
114.3 @@ -18,7 +18,7 @@
114.4 unfolding cube_def by auto
114.5
114.6 lemma cube_subset[intro]: "n \<le> N \<Longrightarrow> cube n \<subseteq> cube N"
114.7 - by (fastsimp simp: eucl_le[where 'a='a] cube_def)
114.8 + by (fastforce simp: eucl_le[where 'a='a] cube_def)
114.9
114.10 lemma cube_subset_iff:
114.11 "cube n \<subseteq> cube N \<longleftrightarrow> n \<le> N"
114.12 @@ -26,9 +26,9 @@
114.13 assume subset: "cube n \<subseteq> (cube N::'a set)"
114.14 then have "((\<chi>\<chi> i. real n)::'a) \<in> cube N"
114.15 using DIM_positive[where 'a='a]
114.16 - by (fastsimp simp: cube_def eucl_le[where 'a='a])
114.17 + by (fastforce simp: cube_def eucl_le[where 'a='a])
114.18 then show "n \<le> N"
114.19 - by (fastsimp simp: cube_def eucl_le[where 'a='a])
114.20 + by (fastforce simp: cube_def eucl_le[where 'a='a])
114.21 next
114.22 assume "n \<le> N" then show "cube n \<subseteq> (cube N::'a set)" by (rule cube_subset)
114.23 qed
114.24 @@ -873,7 +873,7 @@
114.25 show "Int_stable ?E" using Int_stable_cuboids .
114.26 show "range cube \<subseteq> sets ?E" unfolding cube_def_raw by auto
114.27 show "incseq cube" using cube_subset_Suc by (auto intro!: incseq_SucI)
114.28 - { fix x have "\<exists>n. x \<in> cube n" using mem_big_cube[of x] by fastsimp }
114.29 + { fix x have "\<exists>n. x \<in> cube n" using mem_big_cube[of x] by fastforce }
114.30 then show "(\<Union>i. cube i) = space ?E" by auto
114.31 { fix i show "lborel.\<mu> (cube i) \<noteq> \<infinity>" unfolding cube_def by auto }
114.32 show "A \<in> sets (sigma ?E)" "sets (sigma ?E) = sets lborel" "space ?E = space lborel"
114.33 @@ -997,7 +997,7 @@
114.34 proof (rule measure_unique_Int_stable[where X=X, OF Int_stable_atLeastAtMost], unfold * **)
114.35 show "X \<in> sets (sigma ?E)"
114.36 unfolding borel_eq_atLeastAtMost[symmetric] by fact
114.37 - have "\<And>x. \<exists>xa. x \<in> cube xa" apply(rule_tac x=x in mem_big_cube) by fastsimp
114.38 + have "\<And>x. \<exists>xa. x \<in> cube xa" apply(rule_tac x=x in mem_big_cube) by fastforce
114.39 then show "(\<Union>i. cube i) = space ?E" by auto
114.40 show "incseq cube" by (intro incseq_SucI cube_subset_Suc)
114.41 show "range cube \<subseteq> sets ?E"
115.1 --- a/src/HOL/Probability/Measure.thy Sun Sep 11 22:56:05 2011 +0200
115.2 +++ b/src/HOL/Probability/Measure.thy Mon Sep 12 07:55:43 2011 +0200
115.3 @@ -940,7 +940,7 @@
115.4 proof (intro exI[of _ "\<lambda>n. \<Union>i\<le>n. F i"] conjI allI)
115.5 from F have "\<And>x. x \<in> space M \<Longrightarrow> \<exists>i. x \<in> F i" by auto
115.6 then show "(\<Union>n. \<Union> i\<le>n. F i) = space M"
115.7 - using F by fastsimp
115.8 + using F by fastforce
115.9 next
115.10 fix n
115.11 have "\<mu> (\<Union> i\<le>n. F i) \<le> (\<Sum>i\<le>n. \<mu> (F i))" using F
116.1 --- a/src/HOL/Probability/Probability_Measure.thy Sun Sep 11 22:56:05 2011 +0200
116.2 +++ b/src/HOL/Probability/Probability_Measure.thy Mon Sep 12 07:55:43 2011 +0200
116.3 @@ -989,8 +989,8 @@
116.4 also have "\<dots> = real_of_nat (card (space M)) * prob {x}" by simp
116.5 finally have one: "1 = real (card (space M)) * prob {x}"
116.6 using real_eq_of_nat by auto
116.7 - hence two: "real (card (space M)) \<noteq> 0" by fastsimp
116.8 - from one have three: "prob {x} \<noteq> 0" by fastsimp
116.9 + hence two: "real (card (space M)) \<noteq> 0" by fastforce
116.10 + from one have three: "prob {x} \<noteq> 0" by fastforce
116.11 thus ?thesis using one two three divide_cancel_right
116.12 by (auto simp:field_simps)
116.13 qed
117.1 --- a/src/HOL/Probability/Radon_Nikodym.thy Sun Sep 11 22:56:05 2011 +0200
117.2 +++ b/src/HOL/Probability/Radon_Nikodym.thy Mon Sep 12 07:55:43 2011 +0200
117.3 @@ -32,7 +32,7 @@
117.4 show ?thesis
117.5 proof (safe intro!: bexI[of _ ?h] del: notI)
117.6 have "\<And>i. A i \<in> sets M"
117.7 - using range by fastsimp+
117.8 + using range by fastforce+
117.9 then have "integral\<^isup>P M ?h = (\<Sum>i. n i * \<mu> (A i))" using pos
117.10 by (simp add: positive_integral_suminf positive_integral_cmult_indicator)
117.11 also have "\<dots> \<le> (\<Sum>i. (1 / 2)^Suc i)"
117.12 @@ -640,7 +640,7 @@
117.13 have Union: "(SUP i. \<mu> (?O i)) = \<mu> (\<Union>i. ?O i)"
117.14 proof (rule continuity_from_below[of ?O])
117.15 show "range ?O \<subseteq> sets M" using Q' by (auto intro!: finite_UN)
117.16 - show "incseq ?O" by (fastsimp intro!: incseq_SucI)
117.17 + show "incseq ?O" by (fastforce intro!: incseq_SucI)
117.18 qed
117.19 have Q'_sets: "\<And>i. Q' i \<in> sets M" using Q' by auto
117.20 have O_sets: "\<And>i. ?O i \<in> sets M"
117.21 @@ -654,7 +654,7 @@
117.22 also have "\<dots> < \<infinity>" using Q' by (simp add: setsum_Pinfty)
117.23 finally show "\<nu> (?O i) \<noteq> \<infinity>" by simp
117.24 qed auto
117.25 - have O_mono: "\<And>n. ?O n \<subseteq> ?O (Suc n)" by fastsimp
117.26 + have O_mono: "\<And>n. ?O n \<subseteq> ?O (Suc n)" by fastforce
117.27 have a_eq: "?a = \<mu> (\<Union>i. ?O i)" unfolding Union[symmetric]
117.28 proof (rule antisym)
117.29 show "?a \<le> (SUP i. \<mu> (?O i))" unfolding a_Lim
117.30 @@ -676,7 +676,7 @@
117.31 show ?thesis
117.32 proof (intro bexI exI conjI ballI impI allI)
117.33 show "disjoint_family Q"
117.34 - by (fastsimp simp: disjoint_family_on_def Q_def
117.35 + by (fastforce simp: disjoint_family_on_def Q_def
117.36 split: nat.split_asm)
117.37 show "range Q \<subseteq> sets M"
117.38 using Q_sets by auto
117.39 @@ -697,7 +697,7 @@
117.40 proof (rule continuity_from_below[of "\<lambda>i. ?O i \<union> A", symmetric, simplified])
117.41 show "range (\<lambda>i. ?O i \<union> A) \<subseteq> sets M"
117.42 using `\<nu> A \<noteq> \<infinity>` O_sets A by auto
117.43 - qed (fastsimp intro!: incseq_SucI)
117.44 + qed (fastforce intro!: incseq_SucI)
117.45 also have "\<dots> \<le> ?a"
117.46 proof (safe intro!: SUP_leI)
117.47 fix i have "?O i \<union> A \<in> ?Q"
117.48 @@ -734,14 +734,14 @@
117.49 case 0 then show ?case by (simp add: Q_def)
117.50 next
117.51 case (Suc j)
117.52 - have eq: "\<And>j. (\<Union>i\<le>j. ?O i) = (\<Union>i\<le>j. Q' i)" by fastsimp
117.53 + have eq: "\<And>j. (\<Union>i\<le>j. ?O i) = (\<Union>i\<le>j. Q' i)" by fastforce
117.54 have "{..j} \<union> {..Suc j} = {..Suc j}" by auto
117.55 then have "(\<Union>i\<le>Suc j. Q' i) = (\<Union>i\<le>j. Q' i) \<union> Q (Suc j)"
117.56 by (simp add: UN_Un[symmetric] Q_def del: UN_Un)
117.57 then show ?case using Suc by (auto simp add: eq atMost_Suc)
117.58 qed }
117.59 then have "(\<Union>j. (\<Union>i\<le>j. ?O i)) = (\<Union>j. (\<Union>i\<le>j. Q i))" by simp
117.60 - then show "space M - ?O_0 = space M - (\<Union>i. Q i)" by fastsimp
117.61 + then show "space M - ?O_0 = space M - (\<Union>i. Q i)" by fastforce
117.62 qed
117.63 qed
117.64
118.1 --- a/src/HOL/Probability/Sigma_Algebra.thy Sun Sep 11 22:56:05 2011 +0200
118.2 +++ b/src/HOL/Probability/Sigma_Algebra.thy Mon Sep 12 07:55:43 2011 +0200
118.3 @@ -810,7 +810,7 @@
118.4 assumes "sets E \<subseteq> Pow (space E)" and "f \<in> space M \<rightarrow> space E"
118.5 shows "f \<in> measurable M (sigma E) \<longleftrightarrow> (\<forall>A\<in>sets E. f -` A \<inter> space M \<in> sets M)"
118.6 using measurable_sigma[OF assms]
118.7 - by (fastsimp simp: measurable_def sets_sigma intro: sigma_sets.intros)
118.8 + by (fastforce simp: measurable_def sets_sigma intro: sigma_sets.intros)
118.9
118.10 section "Disjoint families"
118.11
118.12 @@ -1426,7 +1426,7 @@
118.13 assumes "sigma_algebra M" shows "dynkin_system M"
118.14 proof -
118.15 interpret sigma_algebra M by fact
118.16 - show ?thesis using sets_into_space by (fastsimp intro!: dynkin_systemI)
118.17 + show ?thesis using sets_into_space by (fastforce intro!: dynkin_systemI)
118.18 qed
118.19
118.20 subsection "Intersection stable algebras"
118.21 @@ -1481,13 +1481,13 @@
118.22 { fix D assume "A \<in> D" and d: "dynkin_system \<lparr> space = space M, sets = D \<rparr>"
118.23 then have "A \<subseteq> space M" by (auto simp: dynkin_system_def subset_class_def) }
118.24 moreover have "{D. dynkin_system \<lparr> space = space M, sets = D\<rparr> \<and> sets M \<subseteq> D} \<noteq> {}"
118.25 - using assms dynkin_system_trivial by fastsimp
118.26 + using assms dynkin_system_trivial by fastforce
118.27 ultimately show "A \<subseteq> space (dynkin M)"
118.28 unfolding dynkin_def using assms
118.29 by simp (metis dynkin_system_def subset_class_def in_mono)
118.30 next
118.31 show "space (dynkin M) \<in> sets (dynkin M)"
118.32 - unfolding dynkin_def using dynkin_system.space by fastsimp
118.33 + unfolding dynkin_def using dynkin_system.space by fastforce
118.34 next
118.35 fix A assume "A \<in> sets (dynkin M)"
118.36 then show "space (dynkin M) - A \<in> sets (dynkin M)"
118.37 @@ -1532,7 +1532,7 @@
118.38 assume "disjoint_family A" "range A \<subseteq> {Q. Q \<subseteq> space M \<and> Q \<inter> D \<in> sets M}"
118.39 then have "\<And>i. A i \<subseteq> space M" "disjoint_family (\<lambda>i. A i \<inter> D)"
118.40 "range (\<lambda>i. A i \<inter> D) \<subseteq> sets M" "(\<Union>x. A x) \<inter> D = (\<Union>x. A x \<inter> D)"
118.41 - by ((fastsimp simp: disjoint_family_on_def)+)
118.42 + by ((fastforce simp: disjoint_family_on_def)+)
118.43 then show "(\<Union>x. A x) \<subseteq> space M \<and> (\<Union>x. A x) \<inter> D \<in> sets M"
118.44 by (auto simp del: UN_simps)
118.45 qed
119.1 --- a/src/HOL/Probability/ex/Dining_Cryptographers.thy Sun Sep 11 22:56:05 2011 +0200
119.2 +++ b/src/HOL/Probability/ex/Dining_Cryptographers.thy Mon Sep 12 07:55:43 2011 +0200
119.3 @@ -201,7 +201,7 @@
119.4 have *: "\<And>j. j < n \<Longrightarrow>
119.5 (x ! j = x ! (Suc j mod n)) = (y ! j = y ! (Suc j mod n))"
119.6 using inv unfolding inversion_def map_eq_conv payer_def coin_def
119.7 - by fastsimp
119.8 + by fastforce
119.9 show "x = y"
119.10 proof (rule nth_equalityI, simp, rule allI, rule impI)
119.11 fix j assume "j < length x" hence "j < n" using `length xs = n` by simp
120.1 --- a/src/HOL/Probability/ex/Koepf_Duermuth_Countermeasure.thy Sun Sep 11 22:56:05 2011 +0200
120.2 +++ b/src/HOL/Probability/ex/Koepf_Duermuth_Countermeasure.thy Mon Sep 12 07:55:43 2011 +0200
120.3 @@ -476,11 +476,11 @@
120.4 also have "\<dots> = -(\<Sum>obs\<in>t`OB`msgs. \<P>(t\<circ>OB) {obs} * ?Ht obs)"
120.5 apply (subst SIGMA_image_vimage[symmetric, of "OB`msgs" t])
120.6 apply (subst setsum_reindex)
120.7 - apply (fastsimp intro!: inj_onI)
120.8 + apply (fastforce intro!: inj_onI)
120.9 apply simp
120.10 apply (subst setsum_Sigma[symmetric, unfolded split_def])
120.11 - using finite_space apply fastsimp
120.12 - using finite_space apply fastsimp
120.13 + using finite_space apply fastforce
120.14 + using finite_space apply fastforce
120.15 apply (safe intro!: setsum_cong)
120.16 using P_t_sum_P_O
120.17 by (simp add: setsum_divide_distrib[symmetric] field_simps **
121.1 --- a/src/HOL/Proofs/Lambda/Commutation.thy Sun Sep 11 22:56:05 2011 +0200
121.2 +++ b/src/HOL/Proofs/Lambda/Commutation.thy Mon Sep 12 07:55:43 2011 +0200
121.3 @@ -68,7 +68,7 @@
121.4 lemma square_rtrancl_reflcl_commute:
121.5 "square R S (S^**) (R^==) ==> commute (R^**) (S^**)"
121.6 apply (unfold commute_def)
121.7 - apply (fastsimp dest: square_reflcl square_sym [THEN square_rtrancl])
121.8 + apply (fastforce dest: square_reflcl square_sym [THEN square_rtrancl])
121.9 done
121.10
121.11
122.1 --- a/src/HOL/Proofs/Lambda/ListOrder.thy Sun Sep 11 22:56:05 2011 +0200
122.2 +++ b/src/HOL/Proofs/Lambda/ListOrder.thy Mon Sep 12 07:55:43 2011 +0200
122.3 @@ -49,7 +49,7 @@
122.4 apply (erule exE)
122.5 apply (rename_tac ts)
122.6 apply (case_tac ts)
122.7 - apply fastsimp
122.8 + apply fastforce
122.9 apply force
122.10 apply (erule disjE)
122.11 apply blast
123.1 --- a/src/HOL/Proofs/Lambda/ParRed.thy Sun Sep 11 22:56:05 2011 +0200
123.2 +++ b/src/HOL/Proofs/Lambda/ParRed.thy Mon Sep 12 07:55:43 2011 +0200
123.3 @@ -58,7 +58,7 @@
123.4
123.5 lemma par_beta_lift [simp]:
123.6 "t => t' \<Longrightarrow> lift t n => lift t' n"
123.7 - by (induct t arbitrary: t' n) fastsimp+
123.8 + by (induct t arbitrary: t' n) fastforce+
123.9
123.10 lemma par_beta_subst:
123.11 "s => s' \<Longrightarrow> t => t' \<Longrightarrow> t[s/n] => t'[s'/n]"
123.12 @@ -67,8 +67,8 @@
123.13 apply (erule par_beta_cases)
123.14 apply simp
123.15 apply (simp add: subst_subst [symmetric])
123.16 - apply (fastsimp intro!: par_beta_lift)
123.17 - apply fastsimp
123.18 + apply (fastforce intro!: par_beta_lift)
123.19 + apply fastforce
123.20 done
123.21
123.22
124.1 --- a/src/HOL/Proofs/Lambda/StrongNorm.thy Sun Sep 11 22:56:05 2011 +0200
124.2 +++ b/src/HOL/Proofs/Lambda/StrongNorm.thy Mon Sep 12 07:55:43 2011 +0200
124.3 @@ -158,7 +158,7 @@
124.4 (is "listsp IT (?ls as)")
124.5 proof induct
124.6 case Nil
124.7 - show ?case by fastsimp
124.8 + show ?case by fastforce
124.9 next
124.10 case (Cons b bs)
124.11 hence I: "?R b" by simp
124.12 @@ -197,7 +197,7 @@
124.13 hence "listsp IT (map (\<lambda>x. x[u/i]) rs)"
124.14 proof induct
124.15 case Nil
124.16 - show ?case by fastsimp
124.17 + show ?case by fastforce
124.18 next
124.19 case (Cons a as)
124.20 hence I: "?R a" by simp
124.21 @@ -214,7 +214,7 @@
124.22 assume "e\<langle>i:T\<rangle> \<turnstile> Abs r : T'"
124.23 and "\<And>e T' u i. PROP ?Q r e T' u i T"
124.24 with uIT uT show "IT (Abs r[u/i])"
124.25 - by fastsimp
124.26 + by fastforce
124.27 next
124.28 case (Beta r a as e_ T'_ u_ i_)
124.29 assume T: "e\<langle>i:T\<rangle> \<turnstile> Abs r \<degree> a \<degree>\<degree> as : T'"
125.1 --- a/src/HOL/SPARK/Examples/Liseq/Longest_Increasing_Subsequence.thy Sun Sep 11 22:56:05 2011 +0200
125.2 +++ b/src/HOL/SPARK/Examples/Liseq/Longest_Increasing_Subsequence.thy Mon Sep 12 07:55:43 2011 +0200
125.3 @@ -110,7 +110,7 @@
125.4 js \<noteq> {} \<Longrightarrow> (\<And>js'. js' \<in> iseq xs (Suc i) \<Longrightarrow> Max js' = i \<Longrightarrow> finite js' \<Longrightarrow>
125.5 js' \<noteq> {} \<Longrightarrow> card js' \<le> card js) \<Longrightarrow>
125.6 j = liseq' xs i"
125.7 - by (fastsimp simp add: liseq'_def iseq_finite
125.8 + by (fastforce simp add: liseq'_def iseq_finite
125.9 intro: Max_eqI [symmetric])
125.10
125.11 lemma liseq_ge:
125.12 @@ -122,7 +122,7 @@
125.13 (\<And>js'. js' \<in> iseq xs i \<Longrightarrow> finite js' \<Longrightarrow>
125.14 js' \<noteq> {} \<Longrightarrow> card js' \<le> card js) \<Longrightarrow>
125.15 j = liseq xs i"
125.16 - by (fastsimp simp add: liseq_def iseq_finite
125.17 + by (fastforce simp add: liseq_def iseq_finite
125.18 intro: Max_eqI [symmetric])
125.19
125.20 lemma max_notin: "finite xs \<Longrightarrow> Max xs < x \<Longrightarrow> x \<notin> xs"
126.1 --- a/src/HOL/SetInterval.thy Sun Sep 11 22:56:05 2011 +0200
126.2 +++ b/src/HOL/SetInterval.thy Mon Sep 12 07:55:43 2011 +0200
126.3 @@ -657,7 +657,7 @@
126.4 case (insert b A)
126.5 moreover hence "b ~: A" by auto
126.6 moreover have "A <= {k..<k+card A}" and "b = k+card A"
126.7 - using `b ~: A` insert by fastsimp+
126.8 + using `b ~: A` insert by fastforce+
126.9 ultimately show ?case by auto
126.10 qed
126.11 next
126.12 @@ -688,7 +688,7 @@
126.13 lemma UN_le_add_shift:
126.14 "(\<Union>i\<le>n::nat. M(i+k)) = (\<Union>i\<in>{k..n+k}. M i)" (is "?A = ?B")
126.15 proof
126.16 - show "?A <= ?B" by fastsimp
126.17 + show "?A <= ?B" by fastforce
126.18 next
126.19 show "?B <= ?A"
126.20 proof
126.21 @@ -899,7 +899,7 @@
126.22 lemma card_less_Suc2: "0 \<notin> M \<Longrightarrow> card {k. Suc k \<in> M \<and> k < i} = card {k \<in> M. k < Suc i}"
126.23 apply (rule card_bij_eq [of Suc _ _ "\<lambda>x. x - Suc 0"])
126.24 apply simp
126.25 -apply fastsimp
126.26 +apply fastforce
126.27 apply auto
126.28 apply (rule inj_on_diff_nat)
126.29 apply auto
126.30 @@ -1020,7 +1020,7 @@
126.31 apply(rule ccontr)
126.32 apply(insert linorder_le_less_linear[of i n])
126.33 apply(clarsimp simp:linorder_not_le)
126.34 -apply(fastsimp)
126.35 +apply(fastforce)
126.36 done
126.37
126.38
127.1 --- a/src/HOL/Statespace/DistinctTreeProver.thy Sun Sep 11 22:56:05 2011 +0200
127.2 +++ b/src/HOL/Statespace/DistinctTreeProver.thy Mon Sep 12 07:55:43 2011 +0200
127.3 @@ -141,7 +141,7 @@
127.4 case None
127.5 with l'_l Some x_l_Some del
127.6 show ?thesis
127.7 - by (fastsimp split: split_if_asm)
127.8 + by (fastforce split: split_if_asm)
127.9 qed
127.10 next
127.11 case None
127.12 @@ -154,12 +154,12 @@
127.13 by simp
127.14 with Some x_l_None del
127.15 show ?thesis
127.16 - by (fastsimp split: split_if_asm)
127.17 + by (fastforce split: split_if_asm)
127.18 next
127.19 case None
127.20 with x_l_None del
127.21 show ?thesis
127.22 - by (fastsimp split: split_if_asm)
127.23 + by (fastforce split: split_if_asm)
127.24 qed
127.25 qed
127.26 qed
127.27 @@ -198,12 +198,12 @@
127.28
127.29 with dist_l' dist_r' l'_l Some x_l_Some del d dist_l_r
127.30 show ?thesis
127.31 - by fastsimp
127.32 + by fastforce
127.33 next
127.34 case None
127.35 with l'_l dist_l' x_l_Some del d dist_l_r dist_r
127.36 show ?thesis
127.37 - by fastsimp
127.38 + by fastforce
127.39 qed
127.40 next
127.41 case None
127.42 @@ -218,12 +218,12 @@
127.43 have "set_of r' \<subseteq> set_of r".
127.44 with Some dist_r' x_l_None del dist_l d dist_l_r
127.45 show ?thesis
127.46 - by fastsimp
127.47 + by fastforce
127.48 next
127.49 case None
127.50 with x_l_None del dist_l dist_r d dist_l_r
127.51 show ?thesis
127.52 - by (fastsimp split: split_if_asm)
127.53 + by (fastforce split: split_if_asm)
127.54 qed
127.55 qed
127.56 qed
128.1 --- a/src/HOL/TLA/TLA.thy Sun Sep 11 22:56:05 2011 +0200
128.2 +++ b/src/HOL/TLA/TLA.thy Mon Sep 12 07:55:43 2011 +0200
128.3 @@ -251,7 +251,7 @@
128.4 assumes prem: "|- F --> G"
128.5 shows "|- <>F --> <>G"
128.6 apply (unfold dmd_def)
128.7 - apply (fastsimp intro!: prem [temp_use] elim!: STL4E [temp_use])
128.8 + apply (fastforce intro!: prem [temp_use] elim!: STL4E [temp_use])
128.9 done
128.10
128.11 lemma DmdImplE: "[| sigma |= <>F; |- F --> G |] ==> sigma |= <>G"
128.12 @@ -262,7 +262,7 @@
128.13 apply auto
128.14 apply (subgoal_tac "sigma |= [] (G --> (F & G))")
128.15 apply (erule normalT [temp_use])
128.16 - apply (fastsimp elim!: STL4E [temp_use])+
128.17 + apply (fastforce elim!: STL4E [temp_use])+
128.18 done
128.19
128.20 (* rewrite rule to split conjunctions under boxes *)
128.21 @@ -322,7 +322,7 @@
128.22
128.23 lemma DmdOr: "|- (<>(F | G)) = (<>F | <>G)"
128.24 apply (auto simp add: dmd_def split_box_conj [try_rewrite])
128.25 - apply (erule contrapos_np, merge_box, fastsimp elim!: STL4E [temp_use])+
128.26 + apply (erule contrapos_np, merge_box, fastforce elim!: STL4E [temp_use])+
128.27 done
128.28
128.29 lemma exT: "|- (EX x. <>(F x)) = (<>(EX x. F x))"
128.30 @@ -343,7 +343,7 @@
128.31 apply auto
128.32 apply (erule notE)
128.33 apply merge_box
128.34 - apply (fastsimp elim!: STL4E [temp_use])
128.35 + apply (fastforce elim!: STL4E [temp_use])
128.36 done
128.37
128.38 lemma InfImpl:
128.39 @@ -354,7 +354,7 @@
128.40 apply (insert 1 2)
128.41 apply (erule_tac F = G in dup_boxE)
128.42 apply merge_box
128.43 - apply (fastsimp elim!: STL4E [temp_use] DmdImpl2 [temp_use] intro!: 3 [temp_use])
128.44 + apply (fastforce elim!: STL4E [temp_use] DmdImpl2 [temp_use] intro!: 3 [temp_use])
128.45 done
128.46
128.47 (* ------------------------ STL6 ------------------------------------------- *)
128.48 @@ -365,7 +365,7 @@
128.49 apply (erule dup_boxE)
128.50 apply merge_box
128.51 apply (erule contrapos_np)
128.52 - apply (fastsimp elim!: STL4E [temp_use])
128.53 + apply (fastforce elim!: STL4E [temp_use])
128.54 done
128.55
128.56 (* weaker than BoxDmd, but more polymorphic (and often just right) *)
128.57 @@ -373,14 +373,14 @@
128.58 apply (unfold dmd_def)
128.59 apply clarsimp
128.60 apply merge_box
128.61 - apply (fastsimp elim!: notE STL4E [temp_use])
128.62 + apply (fastforce elim!: notE STL4E [temp_use])
128.63 done
128.64
128.65 lemma BoxDmd2_simple: "|- []F & <>G --> <>(G & F)"
128.66 apply (unfold dmd_def)
128.67 apply clarsimp
128.68 apply merge_box
128.69 - apply (fastsimp elim!: notE STL4E [temp_use])
128.70 + apply (fastforce elim!: notE STL4E [temp_use])
128.71 done
128.72
128.73 lemma DmdImpldup:
128.74 @@ -406,7 +406,7 @@
128.75 apply (drule BoxDmd [temp_use])
128.76 apply assumption
128.77 apply (erule thin_rl)
128.78 - apply (fastsimp elim!: DmdImplE [temp_use])
128.79 + apply (fastforce elim!: DmdImplE [temp_use])
128.80 done
128.81
128.82
128.83 @@ -467,7 +467,7 @@
128.84 (* ------------------------ Miscellaneous ----------------------------------- *)
128.85
128.86 lemma BoxOr: "!!sigma. [| sigma |= []F | []G |] ==> sigma |= [](F | G)"
128.87 - by (fastsimp elim!: STL4E [temp_use])
128.88 + by (fastforce elim!: STL4E [temp_use])
128.89
128.90 (* "persistently implies infinitely often" *)
128.91 lemma DBImplBD: "|- <>[]F --> []<>F"
128.92 @@ -487,7 +487,7 @@
128.93 apply assumption
128.94 apply (subgoal_tac "sigma |= <>[]~F")
128.95 apply (force simp: dmd_def)
128.96 - apply (fastsimp elim: DmdImplE [temp_use] STL4E [temp_use])
128.97 + apply (fastforce elim: DmdImplE [temp_use] STL4E [temp_use])
128.98 done
128.99
128.100
128.101 @@ -498,7 +498,7 @@
128.102
128.103 (* ------------------------ TLA2 ------------------------------------------- *)
128.104 lemma STL2_pr: "|- []P --> Init P & Init P`"
128.105 - by (fastsimp intro!: STL2_gen [temp_use] primeI [temp_use])
128.106 + by (fastforce intro!: STL2_gen [temp_use] primeI [temp_use])
128.107
128.108 (* Auxiliary lemma allows priming of boxed actions *)
128.109 lemma BoxPrime: "|- []P --> []($P & P$)"
128.110 @@ -523,7 +523,7 @@
128.111
128.112 lemma DmdPrime: "|- (<>P`) --> (<>P)"
128.113 apply (unfold dmd_def)
128.114 - apply (fastsimp elim!: TLA2E [temp_use])
128.115 + apply (fastforce elim!: TLA2E [temp_use])
128.116 done
128.117
128.118 lemmas PrimeDmd = InitDmd_gen [temp_use, THEN DmdPrime [temp_use], standard]
128.119 @@ -557,7 +557,7 @@
128.120 lemma StableT:
128.121 "!!P. |- $P & A --> P` ==> |- []A --> stable P"
128.122 apply (unfold stable_def)
128.123 - apply (fastsimp elim!: STL4E [temp_use])
128.124 + apply (fastforce elim!: STL4E [temp_use])
128.125 done
128.126
128.127 lemma Stable: "[| sigma |= []A; |- $P & A --> P` |] ==> sigma |= stable P"
128.128 @@ -617,7 +617,7 @@
128.129 apply (clarsimp dest!: BoxPrime [temp_use])
128.130 apply merge_box
128.131 apply (erule contrapos_np)
128.132 - apply (fastsimp elim!: Stable [temp_use])
128.133 + apply (fastforce elim!: Stable [temp_use])
128.134 done
128.135
128.136
128.137 @@ -627,7 +627,7 @@
128.138 (* Recursive expansions of [] and <> for state predicates *)
128.139 lemma BoxRec: "|- ([]P) = (Init P & []P`)"
128.140 apply (auto intro!: STL2_gen [temp_use])
128.141 - apply (fastsimp elim!: TLA2E [temp_use])
128.142 + apply (fastforce elim!: TLA2E [temp_use])
128.143 apply (auto simp: stable_def elim!: INV1 [temp_use] STL4E [temp_use])
128.144 done
128.145
128.146 @@ -645,12 +645,12 @@
128.147 apply (rule classical)
128.148 apply (rule DBImplBD [temp_use])
128.149 apply (subgoal_tac "sigma |= <>[]P")
128.150 - apply (fastsimp elim!: DmdImplE [temp_use] TLA2E [temp_use])
128.151 + apply (fastforce elim!: DmdImplE [temp_use] TLA2E [temp_use])
128.152 apply (subgoal_tac "sigma |= <>[] (<>P & []~P`)")
128.153 apply (force simp: boxInit_stp [temp_use]
128.154 elim!: DmdImplE [temp_use] STL4E [temp_use] DmdRec2 [temp_use])
128.155 apply (force intro!: STL6 [temp_use] simp: more_temp_simps3)
128.156 - apply (fastsimp intro: DmdPrime [temp_use] elim!: STL4E [temp_use])
128.157 + apply (fastforce intro: DmdPrime [temp_use] elim!: STL4E [temp_use])
128.158 done
128.159
128.160 lemma InfiniteEnsures:
128.161 @@ -666,12 +666,12 @@
128.162 (* alternative definitions of fairness *)
128.163 lemma WF_alt: "|- WF(A)_v = ([]<>~Enabled(<A>_v) | []<><A>_v)"
128.164 apply (unfold WF_def dmd_def)
128.165 - apply fastsimp
128.166 + apply fastforce
128.167 done
128.168
128.169 lemma SF_alt: "|- SF(A)_v = (<>[]~Enabled(<A>_v) | []<><A>_v)"
128.170 apply (unfold SF_def dmd_def)
128.171 - apply fastsimp
128.172 + apply fastforce
128.173 done
128.174
128.175 (* theorems to "box" fairness conditions *)
128.176 @@ -679,19 +679,19 @@
128.177 by (auto simp: WF_alt [try_rewrite] more_temp_simps3 intro!: BoxOr [temp_use])
128.178
128.179 lemma WF_Box: "|- ([]WF(A)_v) = WF(A)_v"
128.180 - by (fastsimp intro!: BoxWFI [temp_use] dest!: STL2 [temp_use])
128.181 + by (fastforce intro!: BoxWFI [temp_use] dest!: STL2 [temp_use])
128.182
128.183 lemma BoxSFI: "|- SF(A)_v --> []SF(A)_v"
128.184 by (auto simp: SF_alt [try_rewrite] more_temp_simps3 intro!: BoxOr [temp_use])
128.185
128.186 lemma SF_Box: "|- ([]SF(A)_v) = SF(A)_v"
128.187 - by (fastsimp intro!: BoxSFI [temp_use] dest!: STL2 [temp_use])
128.188 + by (fastforce intro!: BoxSFI [temp_use] dest!: STL2 [temp_use])
128.189
128.190 lemmas more_temp_simps = more_temp_simps3 WF_Box [temp_rewrite] SF_Box [temp_rewrite]
128.191
128.192 lemma SFImplWF: "|- SF(A)_v --> WF(A)_v"
128.193 apply (unfold SF_def WF_def)
128.194 - apply (fastsimp dest!: DBImplBD [temp_use])
128.195 + apply (fastforce dest!: DBImplBD [temp_use])
128.196 done
128.197
128.198 (* A tactic that "boxes" all fairness conditions. Apply more_temp_simps to "unbox". *)
128.199 @@ -716,13 +716,13 @@
128.200 apply (unfold leadsto_def)
128.201 apply auto
128.202 apply (simp add: more_temp_simps)
128.203 - apply (fastsimp elim!: DmdImplE [temp_use] STL4E [temp_use])
128.204 - apply (fastsimp intro!: InitDmd [temp_use] elim!: STL4E [temp_use])
128.205 + apply (fastforce elim!: DmdImplE [temp_use] STL4E [temp_use])
128.206 + apply (fastforce intro!: InitDmd [temp_use] elim!: STL4E [temp_use])
128.207 apply (subgoal_tac "sigma |= []<><>G")
128.208 apply (simp add: more_temp_simps)
128.209 apply (drule BoxDmdDmdBox [temp_use])
128.210 apply assumption
128.211 - apply (fastsimp elim!: DmdImplE [temp_use] STL4E [temp_use])
128.212 + apply (fastforce elim!: DmdImplE [temp_use] STL4E [temp_use])
128.213 done
128.214
128.215 lemma leadsto_infinite: "|- []<>F & (F ~> G) --> []<>G"
128.216 @@ -880,7 +880,7 @@
128.217 apply clarsimp
128.218 apply (subgoal_tac "sigma |= (B | C) ~> D")
128.219 apply (erule_tac G = "LIFT (B | C)" in LatticeTransitivity [temp_use])
128.220 - apply (fastsimp intro!: LatticeDisjunctionIntro [temp_use])+
128.221 + apply (fastforce intro!: LatticeDisjunctionIntro [temp_use])+
128.222 done
128.223
128.224 lemma LatticeTriangle: "|- (A ~> D | B) & (B ~> D) --> (A ~> D)"
129.1 --- a/src/HOL/TPTP/CASC_Setup.thy Sun Sep 11 22:56:05 2011 +0200
129.2 +++ b/src/HOL/TPTP/CASC_Setup.thy Mon Sep 12 07:55:43 2011 +0200
129.3 @@ -141,7 +141,7 @@
129.4 ORELSE
129.5 SOLVE_TIMEOUT (max_secs div 10) "force" (ALLGOALS (force_tac ctxt))
129.6 ORELSE
129.7 - SOLVE_TIMEOUT max_secs "fastsimp" (ALLGOALS (fast_simp_tac ctxt))
129.8 + SOLVE_TIMEOUT max_secs "fastforce" (ALLGOALS (fast_force_tac ctxt))
129.9 *}
129.10
129.11 method_setup isabellep = {*
130.1 --- a/src/HOL/Taylor.thy Sun Sep 11 22:56:05 2011 +0200
130.2 +++ b/src/HOL/Taylor.thy Mon Sep 12 07:55:43 2011 +0200
130.3 @@ -50,8 +50,8 @@
130.4 let ?H = "x + c"
130.5 from X have "c<?H & ?H<b \<and> f b = (\<Sum>m = 0..<n. diff m c / real (fact m) * (b - c) ^ m) +
130.6 diff n ?H / real (fact n) * (b - c) ^ n"
130.7 - by fastsimp
130.8 - thus ?thesis by fastsimp
130.9 + by fastforce
130.10 + thus ?thesis by fastforce
130.11 qed
130.12 qed
130.13
130.14 @@ -90,8 +90,8 @@
130.15 let ?H = "x + c"
130.16 from X have "a<?H & ?H<c \<and> f a = (\<Sum>m = 0..<n. diff m c / real (fact m) * (a - c) ^ m) +
130.17 diff n ?H / real (fact n) * (a - c) ^ n"
130.18 - by fastsimp
130.19 - thus ?thesis by fastsimp
130.20 + by fastforce
130.21 + thus ?thesis by fastforce
130.22 qed
130.23 qed
130.24
130.25 @@ -107,7 +107,7 @@
130.26 note INIT
130.27 moreover from DERIV and INTERV
130.28 have "\<forall>m t. m < n \<and> x \<le> t \<and> t \<le> b \<longrightarrow> DERIV (diff m) t :> diff (Suc m) t"
130.29 - by fastsimp
130.30 + by fastforce
130.31 moreover note True
130.32 moreover from INTERV have "c \<le> b" by simp
130.33 ultimately have EX: "\<exists>t>x. t < c \<and> f x =
130.34 @@ -120,7 +120,7 @@
130.35 note INIT
130.36 moreover from DERIV and INTERV
130.37 have "\<forall>m t. m < n \<and> a \<le> t \<and> t \<le> x \<longrightarrow> DERIV (diff m) t :> diff (Suc m) t"
130.38 - by fastsimp
130.39 + by fastforce
130.40 moreover from INTERV have "a \<le> c" by arith
130.41 moreover from False and INTERV have "c < x" by arith
130.42 ultimately have EX: "\<exists>t>c. t < x \<and> f x =
131.1 --- a/src/HOL/Tools/SMT/smt_normalize.ML Sun Sep 11 22:56:05 2011 +0200
131.2 +++ b/src/HOL/Tools/SMT/smt_normalize.ML Mon Sep 12 07:55:43 2011 +0200
131.3 @@ -475,7 +475,7 @@
131.4 "op * = (%a b. nat (int a * int b))"
131.5 "op div = (%a b. nat (int a div int b))"
131.6 "op mod = (%a b. nat (int a mod int b))"
131.7 - by (fastsimp simp add: nat_mult_distrib nat_div_distrib nat_mod_distrib)+}
131.8 + by (fastforce simp add: nat_mult_distrib nat_div_distrib nat_mod_distrib)+}
131.9
131.10 val ints = map mk_meta_eq @{lemma
131.11 "int 0 = 0"
132.1 --- a/src/HOL/Tools/SMT/z3_proof_literals.ML Sun Sep 11 22:56:05 2011 +0200
132.2 +++ b/src/HOL/Tools/SMT/z3_proof_literals.ML Mon Sep 12 07:55:43 2011 +0200
132.3 @@ -276,7 +276,7 @@
132.4
132.5 local
132.6 val cp1 = @{lemma "(~P) = (~Q) ==> P = Q" by simp}
132.7 - val cp2 = @{lemma "(~P) = Q ==> P = (~Q)" by fastsimp}
132.8 + val cp2 = @{lemma "(~P) = Q ==> P = (~Q)" by fastforce}
132.9 val cp3 = @{lemma "P = (~Q) ==> (~P) = Q" by simp}
132.10 in
132.11 fun contrapos1 prove (ct, cu) = prove (negate ct, negate cu) COMP cp1
133.1 --- a/src/HOL/Tools/SMT/z3_proof_reconstruction.ML Sun Sep 11 22:56:05 2011 +0200
133.2 +++ b/src/HOL/Tools/SMT/z3_proof_reconstruction.ML Mon Sep 12 07:55:43 2011 +0200
133.3 @@ -385,7 +385,7 @@
133.4 val apply_rules = [
133.5 @{lemma "(~n | P) & (n | ~P) ==> P == n" by (atomize(full)) fast},
133.6 @{lemma "(~P | n = s) & (P | n = t) ==> (if P then s else t) == n"
133.7 - by (atomize(full)) fastsimp} ]
133.8 + by (atomize(full)) fastforce} ]
133.9
133.10 val inst_rule = Z3_Proof_Tools.match_instantiate Thm.dest_arg
133.11
134.1 --- a/src/HOL/Tools/TFL/post.ML Sun Sep 11 22:56:05 2011 +0200
134.2 +++ b/src/HOL/Tools/TFL/post.ML Mon Sep 12 07:55:43 2011 +0200
134.3 @@ -40,7 +40,7 @@
134.4 terminator =
134.5 asm_simp_tac (simpset_of ctxt) 1
134.6 THEN TRY (Arith_Data.arith_tac ctxt 1 ORELSE
134.7 - fast_simp_tac (ctxt addSDs [@{thm not0_implies_Suc}]) 1),
134.8 + fast_force_tac (ctxt addSDs [@{thm not0_implies_Suc}]) 1),
134.9 simplifier = Rules.simpl_conv (simpset_of ctxt) []};
134.10
134.11
135.1 --- a/src/HOL/Tools/try_methods.ML Sun Sep 11 22:56:05 2011 +0200
135.2 +++ b/src/HOL/Tools/try_methods.ML Mon Sep 12 07:55:43 2011 +0200
135.3 @@ -101,7 +101,7 @@
135.4 [("simp", ((false, true), simp_attrs)),
135.5 ("auto", ((true, true), full_attrs)),
135.6 ("fast", ((false, false), clas_attrs)),
135.7 - ("fastsimp", ((false, false), full_attrs)),
135.8 + ("fastforce", ((false, false), full_attrs)),
135.9 ("force", ((false, false), full_attrs)),
135.10 ("blast", ((false, true), clas_attrs)),
135.11 ("metis", ((false, true), metis_attrs)),
136.1 --- a/src/HOL/Transitive_Closure.thy Sun Sep 11 22:56:05 2011 +0200
136.2 +++ b/src/HOL/Transitive_Closure.thy Mon Sep 12 07:55:43 2011 +0200
136.3 @@ -487,7 +487,7 @@
136.4 lemmas trancl_converseD = tranclp_converseD [to_set]
136.5
136.6 lemma tranclp_converse: "(r^--1)^++ = (r^++)^--1"
136.7 - by (fastsimp simp add: fun_eq_iff
136.8 + by (fastforce simp add: fun_eq_iff
136.9 intro!: tranclp_converseI dest!: tranclp_converseD)
136.10
136.11 lemmas trancl_converse = tranclp_converse [to_set]
136.12 @@ -730,7 +730,7 @@
136.13
136.14 lemma rel_pow_Suc_I2:
136.15 "(x, y) \<in> R \<Longrightarrow> (y, z) \<in> R ^^ n \<Longrightarrow> (x, z) \<in> R ^^ Suc n"
136.16 - by (induct n arbitrary: z) (simp, fastsimp)
136.17 + by (induct n arbitrary: z) (simp, fastforce)
136.18
136.19 lemma rel_pow_0_E:
136.20 "(x, y) \<in> R ^^ 0 \<Longrightarrow> (x = y \<Longrightarrow> P) \<Longrightarrow> P"
136.21 @@ -821,7 +821,7 @@
136.22 apply (clarsimp simp: rtrancl_is_UN_rel_pow)
136.23 apply (rule_tac x="Suc n" in exI)
136.24 apply (clarsimp simp: rel_comp_def)
136.25 - apply fastsimp
136.26 + apply fastforce
136.27 apply clarsimp
136.28 apply (case_tac n, simp)
136.29 apply clarsimp
136.30 @@ -942,7 +942,7 @@
136.31
136.32 lemma rtrancl_finite_eq_rel_pow:
136.33 "finite R \<Longrightarrow> R^* = (UN n : {n. n <= card R}. R^^n)"
136.34 -by(fastsimp simp: rtrancl_power dest: rel_pow_finite_bounded)
136.35 +by(fastforce simp: rtrancl_power dest: rel_pow_finite_bounded)
136.36
136.37 lemma trancl_finite_eq_rel_pow:
136.38 "finite R \<Longrightarrow> R^+ = (UN n : {n. 0 < n & n <= card R}. R^^n)"
137.1 --- a/src/HOL/UNITY/Transformers.thy Sun Sep 11 22:56:05 2011 +0200
137.2 +++ b/src/HOL/UNITY/Transformers.thy Mon Sep 12 07:55:43 2011 +0200
137.3 @@ -440,7 +440,7 @@
137.4 apply (rule subsetI)
137.5 apply (erule wens_set.induct)
137.6 txt{*Basis*}
137.7 - apply (fastsimp simp add: wens_single_finite_def)
137.8 + apply (fastforce simp add: wens_single_finite_def)
137.9 txt{*Wens inductive step*}
137.10 apply (case_tac "acta = Id", simp)
137.11 apply (simp add: wens_single_eq)
138.1 --- a/src/HOL/Unix/Unix.thy Sun Sep 11 22:56:05 2011 +0200
138.2 +++ b/src/HOL/Unix/Unix.thy Mon Sep 12 07:55:43 2011 +0200
138.3 @@ -450,7 +450,7 @@
138.4 with root' show ?thesis by cases auto
138.5 next
138.6 case readdir
138.7 - with root' show ?thesis by cases fastsimp+
138.8 + with root' show ?thesis by cases fastforce+
138.9 qed
138.10
138.11 text {*
138.12 @@ -1028,7 +1028,7 @@
138.13 also have "\<dots> \<noteq> None"
138.14 proof -
138.15 from ys obtain us u where rev_ys: "ys = us @ [u]"
138.16 - by (cases ys rule: rev_cases) fastsimp+
138.17 + by (cases ys rule: rev_cases) fastforce+
138.18 with tr path
138.19 have "lookup root ((path @ [y]) @ (us @ [u])) \<noteq> None \<or>
138.20 lookup root ((path @ [y]) @ us) \<noteq> None"
139.1 --- a/src/HOL/Word/Bit_Representation.thy Sun Sep 11 22:56:05 2011 +0200
139.2 +++ b/src/HOL/Word/Bit_Representation.thy Mon Sep 12 07:55:43 2011 +0200
139.3 @@ -856,7 +856,7 @@
139.4 shows "0 < length y \<Longrightarrow> P"
139.5 apply (cases y, simp)
139.6 apply (rule y)
139.7 - apply fastsimp
139.8 + apply fastforce
139.9 done
139.10
139.11 lemma list_exhaust_size_eq0:
140.1 --- a/src/HOL/Word/Word.thy Sun Sep 11 22:56:05 2011 +0200
140.2 +++ b/src/HOL/Word/Word.thy Mon Sep 12 07:55:43 2011 +0200
140.3 @@ -655,7 +655,7 @@
140.4
140.5 lemma to_bl_use_of_bl:
140.6 "(to_bl w = bl) = (w = of_bl bl \<and> length bl = length (to_bl w))"
140.7 - by (fastsimp elim!: word_bl.Abs_inverse [simplified])
140.8 + by (fastforce elim!: word_bl.Abs_inverse [simplified])
140.9
140.10 lemma to_bl_word_rev: "to_bl (word_reverse w) = rev (to_bl w)"
140.11 unfolding word_reverse_def by (simp add: word_bl.Abs_inverse)
140.12 @@ -3702,7 +3702,7 @@
140.13 apply (case_tac "word_split c")
140.14 apply (frule test_bit_split)
140.15 apply (erule trans)
140.16 - apply (fastsimp intro ! : word_eqI simp add : word_size)
140.17 + apply (fastforce intro ! : word_eqI simp add : word_size)
140.18 done
140.19
140.20 -- {* this odd result is analogous to @{text "ucast_id"},
141.1 --- a/src/HOL/ex/Set_Algebras.thy Sun Sep 11 22:56:05 2011 +0200
141.2 +++ b/src/HOL/ex/Set_Algebras.thy Mon Sep 12 07:55:43 2011 +0200
141.3 @@ -321,7 +321,7 @@
141.4
141.5 lemma set_plus_image:
141.6 fixes S T :: "'n::semigroup_add set" shows "S \<oplus> T = (\<lambda>(x, y). x + y) ` (S \<times> T)"
141.7 - unfolding set_plus_def by (fastsimp simp: image_iff)
141.8 + unfolding set_plus_def by (fastforce simp: image_iff)
141.9
141.10 lemma set_setsum_alt:
141.11 assumes fin: "finite I"
142.1 --- a/src/HOL/ex/While_Combinator_Example.thy Sun Sep 11 22:56:05 2011 +0200
142.2 +++ b/src/HOL/ex/While_Combinator_Example.thy Mon Sep 12 07:55:43 2011 +0200
142.3 @@ -25,7 +25,7 @@
142.4 apply assumption
142.5 apply clarsimp
142.6 apply (blast dest: monoD)
142.7 - apply (fastsimp intro!: lfp_lowerbound)
142.8 + apply (fastforce intro!: lfp_lowerbound)
142.9 apply (blast intro: wf_finite_psubset Int_lower2 [THEN [2] wf_subset])
142.10 apply (clarsimp simp add: finite_psubset_def order_less_le)
142.11 apply (blast dest: monoD)
143.1 --- a/src/Provers/clasimp.ML Sun Sep 11 22:56:05 2011 +0200
143.2 +++ b/src/Provers/clasimp.ML Mon Sep 12 07:55:43 2011 +0200
143.3 @@ -23,7 +23,7 @@
143.4 val mk_auto_tac: Proof.context -> int -> int -> tactic
143.5 val auto_tac: Proof.context -> tactic
143.6 val force_tac: Proof.context -> int -> tactic
143.7 - val fast_simp_tac: Proof.context -> int -> tactic
143.8 + val fast_force_tac: Proof.context -> int -> tactic
143.9 val slow_simp_tac: Proof.context -> int -> tactic
143.10 val best_simp_tac: Proof.context -> int -> tactic
143.11 val iff_add: attribute
143.12 @@ -169,12 +169,14 @@
143.13
143.14 (* basic combinations *)
143.15
143.16 -val fast_simp_tac = Classical.fast_tac o addss;
143.17 +fun fast_simp_tac ctxt i =
143.18 + let val _ = legacy_feature "Old name 'fastsimp' - use 'fastforce' instead"
143.19 + in Classical.fast_tac (addss ctxt) i end;
143.20 +
143.21 +val fast_force_tac = Classical.fast_tac o addss;
143.22 val slow_simp_tac = Classical.slow_tac o addss;
143.23 val best_simp_tac = Classical.best_tac o addss;
143.24
143.25 -
143.26 -
143.27 (** concrete syntax **)
143.28
143.29 (* attributes *)
143.30 @@ -215,7 +217,8 @@
143.31
143.32 val clasimp_setup =
143.33 Attrib.setup @{binding iff} iff_att "declaration of Simplifier / Classical rules" #>
143.34 - Method.setup @{binding fastsimp} (clasimp_method' fast_simp_tac) "combined fast and simp" #>
143.35 + Method.setup @{binding fastsimp} (clasimp_method' fast_simp_tac) "combined fast and simp (legacy name)" #>
143.36 + Method.setup @{binding fastforce} (clasimp_method' fast_force_tac) "combined fast and simp" #>
143.37 Method.setup @{binding slowsimp} (clasimp_method' slow_simp_tac) "combined slow and simp" #>
143.38 Method.setup @{binding bestsimp} (clasimp_method' best_simp_tac) "combined best and simp" #>
143.39 Method.setup @{binding force} (clasimp_method' force_tac) "force" #>