src/HOL/Tools/datatype_abs_proofs.ML
changeset 30345 76fd85bbf139
parent 30280 eb98b49ef835
child 30364 577edc39b501
equal deleted inserted replaced
30344:10a67c5ddddb 30345:76fd85bbf139
   233         (reccomb_names ~~ recTs ~~ rec_result_Ts);
   233         (reccomb_names ~~ recTs ~~ rec_result_Ts);
   234 
   234 
   235     val (reccomb_defs, thy2) =
   235     val (reccomb_defs, thy2) =
   236       thy1
   236       thy1
   237       |> Sign.add_consts_i (map (fn ((name, T), T') =>
   237       |> Sign.add_consts_i (map (fn ((name, T), T') =>
   238           (NameSpace.base_name name, reccomb_fn_Ts @ [T] ---> T', NoSyn))
   238           (Binding.name (NameSpace.base_name name), reccomb_fn_Ts @ [T] ---> T', NoSyn))
   239           (reccomb_names ~~ recTs ~~ rec_result_Ts))
   239           (reccomb_names ~~ recTs ~~ rec_result_Ts))
   240       |> (PureThy.add_defs false o map Thm.no_attributes) (map (fn ((((name, comb), set), T), T') =>
   240       |> (PureThy.add_defs false o map Thm.no_attributes) (map (fn ((((name, comb), set), T), T') =>
   241           (Binding.name (NameSpace.base_name name ^ "_def"), Logic.mk_equals (comb, absfree ("x", T,
   241           (Binding.name (NameSpace.base_name name ^ "_def"), Logic.mk_equals (comb, absfree ("x", T,
   242            Const ("The", (T' --> HOLogic.boolT) --> T') $ absfree ("y", T',
   242            Const ("The", (T' --> HOLogic.boolT) --> T') $ absfree ("y", T',
   243              set $ Free ("x", T) $ Free ("y", T'))))))
   243              set $ Free ("x", T) $ Free ("y", T'))))))