src/HOL/Tools/datatype_package.ML
changeset 8541 b0d2002f9f04
parent 8478 6053a5cd2881
child 8601 8fb3a81b4ccf
equal deleted inserted replaced
8540:3a45bc1ff175 8541:b0d2002f9f04
   199         val exh_vname = implode (tl (explode (Syntax.string_of_vname ixn)))
   199         val exh_vname = implode (tl (explode (Syntax.string_of_vname ixn)))
   200       in res_inst_tac [(exh_vname, aterm)] exhaustion i state end
   200       in res_inst_tac [(exh_vname, aterm)] exhaustion i state end
   201   end;
   201   end;
   202 
   202 
   203 
   203 
       
   204 (** Isar tactic emulations **)
       
   205 
       
   206 fun tactic_syntax tac = #2 oo Method.syntax (Args.goal_spec HEADGOAL -- Scan.lift Args.name >>
       
   207   (fn (quant, s) => Method.METHOD (fn facts => quant (Method.insert_tac facts THEN' tac s))));
       
   208 
       
   209 val tactic_emulations =
       
   210  [("induct_tac", tactic_syntax induct_tac, "induct_tac emulation (dynamic instantiation!)"),
       
   211   ("case_tac", tactic_syntax case_tac, "case_tac emulation (dynamic instantiation!)")];
       
   212 
       
   213 
   204 
   214 
   205 (** induct method setup **)
   215 (** induct method setup **)
   206 
   216 
   207 (* case names *)
   217 (* case names *)
   208 
   218 
   772 
   782 
   773 (** package setup **)
   783 (** package setup **)
   774 
   784 
   775 (* setup theory *)
   785 (* setup theory *)
   776 
   786 
   777 val setup = [DatatypesData.init] @ simproc_setup;
   787 val setup = [DatatypesData.init, Method.add_methods tactic_emulations] @ simproc_setup;
   778 
   788 
   779 
   789 
   780 (* outer syntax *)
   790 (* outer syntax *)
   781 
   791 
   782 local structure P = OuterParse and K = OuterSyntax.Keyword in
   792 local structure P = OuterParse and K = OuterSyntax.Keyword in