# File blastdata.ML

    (*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 is_hol    = true
      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;