Theory Blast

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 "(iI. A(i))  (jJ. B(j)) =
        (iI. jJ. 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