src/HOL/Tools/BNF/bnf_gfp_rec_sugar.ML
changeset 59043 a00110bdb4a3
parent 59042 ef0074e812cd
child 59044 c04eccae1de8
equal deleted inserted replaced
59042:ef0074e812cd 59043:a00110bdb4a3
  1369           disc_thmsss' disc_eqnss disc_thmsss' disc_eqnss
  1369           disc_thmsss' disc_eqnss disc_thmsss' disc_eqnss
  1370           |> map sort_list_duplicates;
  1370           |> map sort_list_duplicates;
  1371 
  1371 
  1372         val ctr_alists = @{map 6} (fn disc_alist => maps oooo prove_ctr disc_alist) disc_alists
  1372         val ctr_alists = @{map 6} (fn disc_alist => maps oooo prove_ctr disc_alist) disc_alists
  1373           (map (map snd) sel_alists) corec_specs disc_eqnss sel_eqnss ctr_specss;
  1373           (map (map snd) sel_alists) corec_specs disc_eqnss sel_eqnss ctr_specss;
  1374         val ctr_thmss' = map (map snd) ctr_alists;
  1374         val ctr_thmss0 = map (map snd) ctr_alists;
  1375         val ctr_thmss = map (map snd o order_list) ctr_alists;
  1375         val ctr_thmss = map (map (snd o snd) o sort (int_ord o pairself fst)) ctr_alists;
  1376 
  1376 
  1377         val code_thmss =
  1377         val code_thmss =
  1378           @{map 6} prove_code exhaustives disc_eqnss sel_eqnss nchotomy_thmss ctr_thmss'
  1378           @{map 6} prove_code exhaustives disc_eqnss sel_eqnss nchotomy_thmss ctr_thmss0 ctr_specss;
  1379             ctr_specss;
       
  1380 
  1379 
  1381         val disc_iff_or_disc_thmss =
  1380         val disc_iff_or_disc_thmss =
  1382           map2 (fn [] => I | disc_iffs => K disc_iffs) disc_iff_thmss disc_thmss;
  1381           map2 (fn [] => I | disc_iffs => K disc_iffs) disc_iff_thmss disc_thmss;
  1383         val simp_thmss = map2 append disc_iff_or_disc_thmss sel_thmss;
  1382         val simp_thmss = map2 append disc_iff_or_disc_thmss sel_thmss;
  1384 
  1383