src/HOL/HoareParallel/OG_Tactics.thy
changeset 21588 cd0dc678a205
parent 15425 6356d2523f73
child 23894 1a4167d761ac
equal deleted inserted replaced
21587:a3561bfe0ada 21588:cd0dc678a205
   462 
   462 
   463 text {* The so defined ML tactics are then ``exported'' to be used in
   463 text {* The so defined ML tactics are then ``exported'' to be used in
   464 Isabelle proofs. *}
   464 Isabelle proofs. *}
   465 
   465 
   466 method_setup oghoare = {*
   466 method_setup oghoare = {*
   467   Method.no_args
   467   Method.no_args (Method.SIMPLE_METHOD' oghoare_tac) *}
   468     (Method.SIMPLE_METHOD' HEADGOAL (oghoare_tac)) *}
       
   469   "verification condition generator for the oghoare logic"
   468   "verification condition generator for the oghoare logic"
   470 
   469 
   471 method_setup annhoare = {*
   470 method_setup annhoare = {*
   472   Method.no_args
   471   Method.no_args (Method.SIMPLE_METHOD' annhoare_tac) *}
   473     (Method.SIMPLE_METHOD' HEADGOAL (annhoare_tac)) *}
       
   474   "verification condition generator for the ann_hoare logic"
   472   "verification condition generator for the ann_hoare logic"
   475 
   473 
   476 method_setup interfree_aux = {*
   474 method_setup interfree_aux = {*
   477   Method.no_args
   475   Method.no_args (Method.SIMPLE_METHOD' interfree_aux_tac) *}
   478     (Method.SIMPLE_METHOD' HEADGOAL (interfree_aux_tac)) *}
       
   479   "verification condition generator for interference freedom tests"
   476   "verification condition generator for interference freedom tests"
   480 
   477 
   481 text {* Tactics useful for dealing with the generated verification conditions: *}
   478 text {* Tactics useful for dealing with the generated verification conditions: *}
   482 
   479 
   483 method_setup conjI_tac = {*
   480 method_setup conjI_tac = {*
   484   Method.no_args
   481   Method.no_args (Method.SIMPLE_METHOD' (conjI_Tac (K all_tac))) *}
   485     (Method.SIMPLE_METHOD' HEADGOAL (conjI_Tac (K all_tac))) *}
       
   486   "verification condition generator for interference freedom tests"
   482   "verification condition generator for interference freedom tests"
   487 
   483 
   488 ML {*
   484 ML {*
   489 fun disjE_Tac tac i st = st |>
   485 fun disjE_Tac tac i st = st |>
   490        ( (EVERY [etac disjE i,
   486        ( (EVERY [etac disjE i,
   491           disjE_Tac tac (i+1),
   487           disjE_Tac tac (i+1),
   492           tac i]) ORELSE (tac i) )
   488           tac i]) ORELSE (tac i) )
   493 *}
   489 *}
   494 
   490 
   495 method_setup disjE_tac = {*
   491 method_setup disjE_tac = {*
   496   Method.no_args
   492   Method.no_args (Method.SIMPLE_METHOD' (disjE_Tac (K all_tac))) *}
   497     (Method.SIMPLE_METHOD' HEADGOAL (disjE_Tac (K all_tac))) *}
       
   498   "verification condition generator for interference freedom tests"
   493   "verification condition generator for interference freedom tests"
   499 
   494 
   500 end
   495 end