src/Provers/hypsubst.ML
changeset 21588 cd0dc678a205
parent 21227 76d6d445d69b
child 23908 edca7f581c09
equal deleted inserted replaced
21587:a3561bfe0ada 21588:cd0dc678a205
   222 fun stac th =
   222 fun stac th =
   223   let val th' = th RS Data.rev_eq_reflection handle THM _ => th
   223   let val th' = th RS Data.rev_eq_reflection handle THM _ => th
   224   in CHANGED_GOAL (rtac (th' RS ssubst)) end;
   224   in CHANGED_GOAL (rtac (th' RS ssubst)) end;
   225 
   225 
   226 
   226 
   227 (* proof methods *)
       
   228 
       
   229 val subst_meth = Method.thm_args (Method.SIMPLE_METHOD' HEADGOAL o stac);
       
   230 val hyp_subst_meth =
       
   231   Method.no_args (Method.SIMPLE_METHOD' HEADGOAL (CHANGED_PROP o hyp_subst_tac));
       
   232 
       
   233 
       
   234 (* theory setup *)
   227 (* theory setup *)
   235 
   228 
   236 val hypsubst_setup =
   229 val hypsubst_setup =
   237   Method.add_methods
   230   Method.add_methods
   238     [("hypsubst", hyp_subst_meth, "substitution using an assumption (improper)"),
   231     [("hypsubst", Method.no_args (Method.SIMPLE_METHOD' (CHANGED_PROP o hyp_subst_tac)),
   239      ("simplesubst", subst_meth, "simple substitution")];
   232         "substitution using an assumption (improper)"),
   240 
   233      ("simplesubst", Method.thm_args (Method.SIMPLE_METHOD' o stac), "simple substitution")];
   241 end;
   234 
       
   235 end;