src/Provers/classical.ML
changeset 62939 ef8d840f39fb
parent 61853 fb7756087101
child 64556 851ae0e7b09c
equal deleted inserted replaced
62938:79f41fbdf74a 62939:ef8d840f39fb
   939 
   939 
   940 fun standard_tac ctxt facts =
   940 fun standard_tac ctxt facts =
   941   HEADGOAL (some_rule_tac ctxt facts) ORELSE
   941   HEADGOAL (some_rule_tac ctxt facts) ORELSE
   942   Class.standard_intro_classes_tac ctxt facts;
   942   Class.standard_intro_classes_tac ctxt facts;
   943 
   943 
   944 fun default_tac ctxt facts st =
       
   945   (if Method.detect_closure_state st then
       
   946     legacy_feature
       
   947       ("Old method \"default\"; use \"standard\" instead" ^ Position.here (Position.thread_data ()))
       
   948    else ();
       
   949    standard_tac ctxt facts st);
       
   950 
       
   951 end;
   944 end;
   952 
   945 
   953 
   946 
   954 (* automatic methods *)
   947 (* automatic methods *)
   955 
   948 
   971 
   964 
   972 val _ =
   965 val _ =
   973   Theory.setup
   966   Theory.setup
   974    (Method.setup @{binding standard} (Scan.succeed (METHOD o standard_tac))
   967    (Method.setup @{binding standard} (Scan.succeed (METHOD o standard_tac))
   975       "standard proof step: classical intro/elim rule or class introduction" #>
   968       "standard proof step: classical intro/elim rule or class introduction" #>
   976     Method.setup @{binding default} (Scan.succeed (METHOD o default_tac))
       
   977       "standard proof step: classical intro/elim rule or class introduction (legacy)" #>
       
   978     Method.setup @{binding rule}
   969     Method.setup @{binding rule}
   979       (Attrib.thms >> (fn rules => fn ctxt => METHOD (HEADGOAL o rule_tac ctxt rules)))
   970       (Attrib.thms >> (fn rules => fn ctxt => METHOD (HEADGOAL o rule_tac ctxt rules)))
   980       "apply some intro/elim rule (potentially classical)" #>
   971       "apply some intro/elim rule (potentially classical)" #>
   981     Method.setup @{binding contradiction}
   972     Method.setup @{binding contradiction}
   982       (Scan.succeed (fn ctxt => Method.rule ctxt [Data.not_elim, Drule.rotate_prems 1 Data.not_elim]))
   973       (Scan.succeed (fn ctxt => Method.rule ctxt [Data.not_elim, Drule.rotate_prems 1 Data.not_elim]))