src/HOL/Inductive.thy
changeset 51672 d5c5e088ebdf
parent 50302 9149a07a6c67
child 51673 4dfa00e264d8
equal deleted inserted replaced
51671:0d142a78fb7c 51672:d5c5e088ebdf
   271 text {* Package setup. *}
   271 text {* Package setup. *}
   272 
   272 
   273 ML_file "Tools/Datatype/datatype_aux.ML"
   273 ML_file "Tools/Datatype/datatype_aux.ML"
   274 ML_file "Tools/Datatype/datatype_prop.ML"
   274 ML_file "Tools/Datatype/datatype_prop.ML"
   275 ML_file "Tools/Datatype/datatype_data.ML" setup Datatype_Data.setup
   275 ML_file "Tools/Datatype/datatype_data.ML" setup Datatype_Data.setup
       
   276 
       
   277 consts
       
   278   case_nil :: "'a \<Rightarrow> 'b"
       
   279   case_cons :: "('a \<Rightarrow> 'b) \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'a \<Rightarrow> 'b"
       
   280   case_elem :: "'a \<Rightarrow> 'b \<Rightarrow> 'a \<Rightarrow> 'b"
       
   281   case_abs :: "('c \<Rightarrow> 'b) \<Rightarrow> 'b"
   276 ML_file "Tools/Datatype/datatype_case.ML" setup Datatype_Case.setup
   282 ML_file "Tools/Datatype/datatype_case.ML" setup Datatype_Case.setup
       
   283 
   277 ML_file "Tools/Datatype/rep_datatype.ML"
   284 ML_file "Tools/Datatype/rep_datatype.ML"
   278 ML_file "Tools/Datatype/datatype_codegen.ML" setup Datatype_Codegen.setup
   285 ML_file "Tools/Datatype/datatype_codegen.ML" setup Datatype_Codegen.setup
   279 ML_file "Tools/Datatype/primrec.ML"
   286 ML_file "Tools/Datatype/primrec.ML"
   280 
   287 
   281 text{* Lambda-abstractions with pattern matching: *}
   288 text{* Lambda-abstractions with pattern matching: *}
   288 parse_translation (advanced) {*
   295 parse_translation (advanced) {*
   289 let
   296 let
   290   fun fun_tr ctxt [cs] =
   297   fun fun_tr ctxt [cs] =
   291     let
   298     let
   292       val x = Syntax.free (fst (Name.variant "x" (Term.declare_term_frees cs Name.context)));
   299       val x = Syntax.free (fst (Name.variant "x" (Term.declare_term_frees cs Name.context)));
   293       val ft = Datatype_Case.case_tr true ctxt [x, cs];
   300       val ft = Datatype_Case.case_tr ctxt [x, cs];
   294     in lambda x ft end
   301     in lambda x ft end
   295 in [(@{syntax_const "_lam_pats_syntax"}, fun_tr)] end
   302 in [(@{syntax_const "_lam_pats_syntax"}, fun_tr)] end
   296 *}
   303 *}
   297 
   304 
   298 end
   305 end