src/HOL/blastdata.ML
author wenzelm
Fri, 30 Dec 2005 16:56:58 +0100
changeset 18524 57b489b54914
parent 18171 c4f873d65603
child 20944 34b2c1bb7178
permissions -rw-r--r--
provide equality_name, not_name;


(*Better then ex1E for classical reasoner: needs no quantifier duplication!*)
val major::prems = goal (the_context ())
    "[| ?! x. P(x);                                              \
\       !!x. [| P(x);  ALL y y'. P(y) & P(y') --> y=y' |] ==> R  \
\    |] ==> R";
by (rtac (major RS ex1E) 1);
by (REPEAT (ares_tac (allI::prems) 1));
by (etac (dup_elim allE) 1);
by (Fast_tac 1);
qed "alt_ex1E";

AddSEs [alt_ex1E];

(*** Applying BlastFun to create Blast_tac ***)
structure Blast_Data = 
  struct
  type claset	= Classical.claset
  val equality_name = "op ="
  val not_name = "Not"
  val notE	= notE
  val ccontr	= ccontr
  val contr_tac = Classical.contr_tac
  val dup_intr	= Classical.dup_intr
  val hyp_subst_tac = Hypsubst.blast_hyp_subst_tac
  val claset	= Classical.claset
  val rep_cs    = Classical.rep_cs
  val cla_modifiers = Classical.cla_modifiers;
  val cla_meth' = Classical.cla_meth'
  end;

structure Blast = BlastFun(Blast_Data);

val Blast_tac = Blast.Blast_tac
and blast_tac = Blast.blast_tac;