src/Pure/Isar/skip_proof.ML
changeset 28365 6249297461cb
parent 28290 4cc2b6046258
child 28446 a01de3b3fa2e
equal deleted inserted replaced
28364:0012c6e5347e 28365:6249297461cb
     2     ID:         $Id$
     2     ID:         $Id$
     3     Author:     Markus Wenzel, TU Muenchen
     3     Author:     Markus Wenzel, TU Muenchen
     4 
     4 
     5 Skipping proofs -- quick_and_dirty mode.
     5 Skipping proofs -- quick_and_dirty mode.
     6 *)
     6 *)
       
     7 
       
     8 val future_scheduler = ref false;
     7 
     9 
     8 signature SKIP_PROOF =
    10 signature SKIP_PROOF =
     9 sig
    11 sig
    10   val make_thm: theory -> term -> thm
    12   val make_thm: theory -> term -> thm
    11   val cheat_tac: theory -> tactic
    13   val cheat_tac: theory -> tactic
    32 
    34 
    33 fun cheat_tac thy st =
    35 fun cheat_tac thy st =
    34   ALLGOALS (Tactic.rtac (make_thm thy (Var (("A", 0), propT)))) st;
    36   ALLGOALS (Tactic.rtac (make_thm thy (Var (("A", 0), propT)))) st;
    35 
    37 
    36 fun prove ctxt xs asms prop tac =
    38 fun prove ctxt xs asms prop tac =
    37   Goal.prove ctxt xs asms prop (fn args => fn st =>
    39   (if ! future_scheduler then Goal.prove_promise else Goal.prove) ctxt xs asms prop
    38     if ! quick_and_dirty
    40     (fn args => fn st =>
    39     then setmp quick_and_dirty true (cheat_tac (ProofContext.theory_of ctxt)) st
    41       if ! quick_and_dirty
    40     else tac args st);
    42       then setmp quick_and_dirty true (cheat_tac (ProofContext.theory_of ctxt)) st
       
    43       else tac args st);
    41 
    44 
    42 fun prove_global thy xs asms prop tac =
    45 fun prove_global thy xs asms prop tac =
    43   Drule.standard (prove (ProofContext.init thy) xs asms prop tac);
    46   Drule.standard (prove (ProofContext.init thy) xs asms prop tac);
    44 
    47 
    45 end;
    48 end;