| author | wenzelm | 
| Mon, 17 Oct 2005 23:10:15 +0200 | |
| changeset 17877 | 67d5ab1cb0d8 | 
| parent 16774 | 515b6020cf5d | 
| child 18171 | c4f873d65603 | 
| permissions | -rw-r--r-- | 
| 7357 | 1 | |
| 2 | (*Better then ex1E for classical reasoner: needs no quantifier duplication!*) | |
| 3 | val major::prems = goal (the_context ()) | |
| 4 | "[| ?! x. P(x); \ | |
| 5 | \ !!x. [| P(x); ALL y y'. P(y) & P(y') --> y=y' |] ==> R \ | |
| 6 | \ |] ==> R"; | |
| 7 | by (rtac (major RS ex1E) 1); | |
| 8 | by (REPEAT (ares_tac (allI::prems) 1)); | |
| 9 | by (etac (dup_elim allE) 1); | |
| 10 | by (Fast_tac 1); | |
| 11 | qed "alt_ex1E"; | |
| 12 | ||
| 13 | AddSEs [alt_ex1E]; | |
| 14 | ||
| 15 | (*** Applying BlastFun to create Blast_tac ***) | |
| 16 | structure Blast_Data = | |
| 17 | struct | |
| 18 | type claset = Classical.claset | |
| 16774 
515b6020cf5d
experimental code to reduce the amount of type information in blast
 paulson parents: 
13550diff
changeset | 19 | val is_hol = true | 
| 7357 | 20 | val notE = notE | 
| 21 | val ccontr = ccontr | |
| 22 | val contr_tac = Classical.contr_tac | |
| 23 | val dup_intr = Classical.dup_intr | |
| 24 | val hyp_subst_tac = Hypsubst.blast_hyp_subst_tac | |
| 25 | val claset = Classical.claset | |
| 26 | val rep_cs = Classical.rep_cs | |
| 27 | val cla_modifiers = Classical.cla_modifiers; | |
| 28 | val cla_meth' = Classical.cla_meth' | |
| 29 | end; | |
| 30 | ||
| 31 | structure Blast = BlastFun(Blast_Data); | |
| 32 | ||
| 33 | val Blast_tac = Blast.Blast_tac | |
| 34 | and blast_tac = Blast.blast_tac; |