new fastforce replacing fastsimp - less confusing name
authornipkow
Mon Sep 12 07:55:43 2011 +0200 (2011-09-12 ago)
changeset 4489022f665a2e91c
parent 44889 340df9f3491f
child 44891 0ff207302573
new fastforce replacing fastsimp - less confusing name
src/HOL/Algebra/Divisibility.thy
src/HOL/Algebra/FiniteProduct.thy
src/HOL/Algebra/Group.thy
src/HOL/Algebra/Lattice.thy
src/HOL/Algebra/UnivPoly.thy
src/HOL/Algebra/poly/UnivPoly2.thy
src/HOL/Auth/Guard/Extensions.thy
src/HOL/Auth/Kerberos_BAN_Gets.thy
src/HOL/Auth/OtwayReesBella.thy
src/HOL/Auth/Smartcard/ShoupRubin.thy
src/HOL/Auth/Smartcard/ShoupRubinBella.thy
src/HOL/Bali/AxCompl.thy
src/HOL/Bali/AxExample.thy
src/HOL/Bali/AxSound.thy
src/HOL/Bali/DefiniteAssignment.thy
src/HOL/Bali/DefiniteAssignmentCorrect.thy
src/HOL/Bali/Eval.thy
src/HOL/Bali/Evaln.thy
src/HOL/Bali/TypeSafe.thy
src/HOL/Bali/WellForm.thy
src/HOL/Big_Operators.thy
src/HOL/Decision_Procs/Cooper.thy
src/HOL/Decision_Procs/MIR.thy
src/HOL/Deriv.thy
src/HOL/Divides.thy
src/HOL/Equiv_Relations.thy
src/HOL/Finite_Set.thy
src/HOL/Fun.thy
src/HOL/GCD.thy
src/HOL/HOLCF/IMP/Denotational.thy
src/HOL/HOLCF/IOA/meta_theory/CompoTraces.thy
src/HOL/HOLCF/IOA/meta_theory/Seq.thy
src/HOL/HOLCF/IOA/meta_theory/Sequence.thy
src/HOL/HOLCF/IOA/meta_theory/TLS.thy
src/HOL/HOLCF/Library/Stream.thy
src/HOL/Hilbert_Choice.thy
src/HOL/Hoare/Arith2.thy
src/HOL/Hoare/Heap.thy
src/HOL/Hoare/Hoare_Logic_Abort.thy
src/HOL/Hoare/Pointer_Examples.thy
src/HOL/Hoare/Pointer_ExamplesAbort.thy
src/HOL/Hoare/Pointers0.thy
src/HOL/Hoare/SchorrWaite.thy
src/HOL/Hoare/SepLogHeap.thy
src/HOL/Hoare/Separation.thy
src/HOL/Hoare_Parallel/OG_Examples.thy
src/HOL/Hoare_Parallel/RG_Examples.thy
src/HOL/IMP/AbsInt0.thy
src/HOL/IMP/AbsInt0_fun.thy
src/HOL/IMP/AbsInt1.thy
src/HOL/IMP/Comp_Rev.thy
src/HOL/IMP/Compiler.thy
src/HOL/IMP/Def_Ass_Sound_Small.thy
src/HOL/IMP/Fold.thy
src/HOL/IMP/HoareT.thy
src/HOL/IMP/Hoare_Examples.thy
src/HOL/IMP/Sem_Equiv.thy
src/HOL/IMP/Types.thy
src/HOL/IMP/VC.thy
src/HOL/Imperative_HOL/Mrec.thy
src/HOL/Imperative_HOL/ex/Imperative_Quicksort.thy
src/HOL/Imperative_HOL/ex/Imperative_Reverse.thy
src/HOL/Imperative_HOL/ex/Linked_Lists.thy
src/HOL/Imperative_HOL/ex/SatChecker.thy
src/HOL/Imperative_HOL/ex/Sorted_List.thy
src/HOL/Imperative_HOL/ex/Subarray.thy
src/HOL/Imperative_HOL/ex/Sublist.thy
src/HOL/Library/Convex.thy
src/HOL/Library/Extended_Nat.thy
src/HOL/Library/Extended_Real.thy
src/HOL/Library/Infinite_Set.thy
src/HOL/Library/Multiset.thy
src/HOL/Library/Permutation.thy
src/HOL/Library/Polynomial.thy
src/HOL/Library/Predicate_Compile_Alternative_Defs.thy
src/HOL/Library/Quickcheck_Types.thy
src/HOL/Library/Ramsey.thy
src/HOL/Library/Set_Algebras.thy
src/HOL/Library/Transitive_Closure_Table.thy
src/HOL/Library/Zorn.thy
src/HOL/List.thy
src/HOL/MacLaurin.thy
src/HOL/Map.thy
src/HOL/MicroJava/BV/BVExample.thy
src/HOL/MicroJava/BV/BVNoTypeError.thy
src/HOL/MicroJava/BV/Correct.thy
src/HOL/MicroJava/BV/JType.thy
src/HOL/MicroJava/BV/Typing_Framework_JVM.thy
src/HOL/MicroJava/Comp/AuxLemmas.thy
src/HOL/MicroJava/DFA/LBVComplete.thy
src/HOL/MicroJava/DFA/Listn.thy
src/HOL/MicroJava/DFA/Semilat.thy
src/HOL/MicroJava/J/WellForm.thy
src/HOL/Multivariate_Analysis/Brouwer_Fixpoint.thy
src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy
src/HOL/Multivariate_Analysis/Derivative.thy
src/HOL/Multivariate_Analysis/Integration.thy
src/HOL/Multivariate_Analysis/Linear_Algebra.thy
src/HOL/Multivariate_Analysis/Topology_Euclidean_Space.thy
src/HOL/Nat.thy
src/HOL/Nominal/Examples/Fsub.thy
src/HOL/Nominal/Examples/Standardization.thy
src/HOL/Number_Theory/MiscAlgebra.thy
src/HOL/Old_Number_Theory/Factorization.thy
src/HOL/Old_Number_Theory/Quadratic_Reciprocity.thy
src/HOL/Predicate_Compile_Examples/Predicate_Compile_Quickcheck_Examples.thy
src/HOL/Predicate_Compile_Examples/Predicate_Compile_Tests.thy
src/HOL/Presburger.thy
src/HOL/Probability/Binary_Product_Measure.thy
src/HOL/Probability/Borel_Space.thy
src/HOL/Probability/Finite_Product_Measure.thy
src/HOL/Probability/Information.thy
src/HOL/Probability/Lebesgue_Integration.thy
src/HOL/Probability/Lebesgue_Measure.thy
src/HOL/Probability/Measure.thy
src/HOL/Probability/Probability_Measure.thy
src/HOL/Probability/Radon_Nikodym.thy
src/HOL/Probability/Sigma_Algebra.thy
src/HOL/Probability/ex/Dining_Cryptographers.thy
src/HOL/Probability/ex/Koepf_Duermuth_Countermeasure.thy
src/HOL/Proofs/Lambda/Commutation.thy
src/HOL/Proofs/Lambda/ListOrder.thy
src/HOL/Proofs/Lambda/ParRed.thy
src/HOL/Proofs/Lambda/StrongNorm.thy
src/HOL/SPARK/Examples/Liseq/Longest_Increasing_Subsequence.thy
src/HOL/SetInterval.thy
src/HOL/Statespace/DistinctTreeProver.thy
src/HOL/TLA/TLA.thy
src/HOL/TPTP/CASC_Setup.thy
src/HOL/Taylor.thy
src/HOL/Tools/SMT/smt_normalize.ML
src/HOL/Tools/SMT/z3_proof_literals.ML
src/HOL/Tools/SMT/z3_proof_reconstruction.ML
src/HOL/Tools/TFL/post.ML
src/HOL/Tools/try_methods.ML
src/HOL/Transitive_Closure.thy
src/HOL/UNITY/Transformers.thy
src/HOL/Unix/Unix.thy
src/HOL/Word/Bit_Representation.thy
src/HOL/Word/Word.thy
src/HOL/ex/Set_Algebras.thy
src/HOL/ex/While_Combinator_Example.thy
src/Provers/clasimp.ML
     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" #>