diff -r f51d4a302962 -r 5386df44a037 src/Doc/Tutorial/Rules/Blast.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Doc/Tutorial/Rules/Blast.thy Tue Aug 28 18:57:32 2012 +0200 @@ -0,0 +1,37 @@ +theory Blast imports Main begin + +lemma "((\x. \y. p(x)=p(y)) = ((\x. q(x))=(\y. p(y)))) = + ((\x. \y. q(x)=q(y)) = ((\x. p(x))=(\y. q(y))))" +by blast + +text{*\noindent Until now, we have proved everything using only induction and +simplification. Substantial proofs require more elaborate types of +inference.*} + +lemma "(\x. honest(x) \ industrious(x) \ healthy(x)) \ + \ (\x. grocer(x) \ healthy(x)) \ + (\x. industrious(x) \ grocer(x) \ honest(x)) \ + (\x. cyclist(x) \ industrious(x)) \ + (\x. \healthy(x) \ cyclist(x) \ \honest(x)) + \ (\x. grocer(x) \ \cyclist(x))"; +by blast + +lemma "(\i\I. A(i)) \ (\j\J. B(j)) = + (\i\I. \j\J. A(i) \ B(j))" +by blast + +text {* +@{thm[display] mult_is_0} + \rulename{mult_is_0}} + +@{thm[display] finite_Un} + \rulename{finite_Un}} +*}; + + +lemma [iff]: "(xs@ys = []) = (xs=[] & ys=[])" + apply (induct_tac xs) + by (simp_all); + +(*ideas for uses of intro, etc.: ex/Primes/is_gcd_unique?*) +end