diff -r f51d4a302962 -r 5386df44a037 src/Doc/Tutorial/Rules/Force.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Doc/Tutorial/Rules/Force.thy Tue Aug 28 18:57:32 2012 +0200 @@ -0,0 +1,50 @@ +theory Force imports Main begin + (*Use Divides rather than Main to experiment with the first proof. + Otherwise, it is done by the nat_divide_cancel_factor simprocs.*) + +declare div_mult_self_is_m [simp del]; + +lemma div_mult_self_is_m: + "0 (m*n) div n = (m::nat)" +apply (insert mod_div_equality [of "m*n" n]) +apply simp +done + + +lemma "(\x. P x) \ (\x. Q x) \ (\x. P x \ Q x)" +apply clarify +oops + +text {* +proof\ {\isacharparenleft}prove{\isacharparenright}{\isacharcolon}\ step\ {\isadigit{1}}\isanewline +\isanewline +goal\ {\isacharparenleft}lemma{\isacharparenright}{\isacharcolon}\isanewline +{\isacharparenleft}{\isasymforall}x{\isachardot}\ P\ x{\isacharparenright}\ {\isasymand}\ {\isacharparenleft}{\isasymexists}x{\isachardot}\ Q\ x{\isacharparenright}\ {\isasymlongrightarrow}\ {\isacharparenleft}{\isasymforall}x{\isachardot}\ P\ x\ {\isasymand}\ Q\ x{\isacharparenright}\isanewline +\ {\isadigit{1}}{\isachardot}\ {\isasymAnd}x\ xa{\isachardot}\ {\isasymlbrakk}{\isasymforall}x{\isachardot}\ P\ x{\isacharsemicolon}\ Q\ xa{\isasymrbrakk}\ {\isasymLongrightarrow}\ P\ x\ {\isasymand}\ Q\ x +*}; + +text {* +couldn't find a good example of clarsimp + +@{thm[display]"someI"} +\rulename{someI} +*}; + +lemma "\Q a; P a\ \ P (SOME x. P x \ Q x) \ Q (SOME x. P x \ Q x)" +apply (rule someI) +oops + +lemma "\Q a; P a\ \ P (SOME x. P x \ Q x) \ Q (SOME x. P x \ Q x)" +apply (fast intro!: someI) +done + +text{* +proof\ {\isacharparenleft}prove{\isacharparenright}{\isacharcolon}\ step\ \isadigit{1}\isanewline +\isanewline +goal\ {\isacharparenleft}lemma{\isacharparenright}{\isacharcolon}\isanewline +{\isasymlbrakk}Q\ a{\isacharsemicolon}\ P\ a{\isasymrbrakk}\ {\isasymLongrightarrow}\ P\ {\isacharparenleft}SOME\ x{\isachardot}\ P\ x\ {\isasymand}\ Q\ x{\isacharparenright}\ {\isasymand}\ Q\ {\isacharparenleft}SOME\ x{\isachardot}\ P\ x\ {\isasymand}\ Q\ x{\isacharparenright}\isanewline +\ \isadigit{1}{\isachardot}\ {\isasymlbrakk}Q\ a{\isacharsemicolon}\ P\ a{\isasymrbrakk}\ {\isasymLongrightarrow}\ P\ {\isacharquery}x\ {\isasymand}\ Q\ {\isacharquery}x +*} + +end +