src/HOL/Tools/Ctr_Sugar/case_translation.ML
changeset 55444 ec73f81e49e7
parent 55392 20f282bb8371
child 55971 7644d63e8c3f
equal deleted inserted replaced
55443:3def821deb70 55444:ec73f81e49e7
   219     val constrs = Variable.polymorphic ctxt raw_constrs;
   219     val constrs = Variable.polymorphic ctxt raw_constrs;
   220     val case_key = case_comb |> dest_Const |> fst;
   220     val case_key = case_comb |> dest_Const |> fst;
   221     val constr_keys = map (fst o dest_Const) constrs;
   221     val constr_keys = map (fst o dest_Const) constrs;
   222     val data = (case_comb, constrs);
   222     val data = (case_comb, constrs);
   223     val Tname = Tname_of_data data;
   223     val Tname = Tname_of_data data;
   224     val update_constrs =
   224     val update_constrs = fold (fn key => Symtab.cons_list (key, (Tname, data))) constr_keys;
   225       fold (fn key => Symtab.insert_list (eq_fst (op =)) (key, (Tname, data))) constr_keys;
   225     val update_cases = Symtab.update (case_key, data);
   226     val update_cases = Symtab.default (case_key, data);
       
   227   in
   226   in
   228     context
   227     context
   229     |> map_constrs update_constrs
   228     |> map_constrs update_constrs
   230     |> map_cases update_cases
   229     |> map_cases update_cases
   231   end;
   230   end;