equal
deleted
inserted
replaced
462 let |
462 let |
463 val ([exhaust_thm], (inject_thmss, half_distinct_thmss)) = (hd thmss, chop n (tl thmss)); |
463 val ([exhaust_thm], (inject_thmss, half_distinct_thmss)) = (hd thmss, chop n (tl thmss)); |
464 |
464 |
465 val inject_thms = flat inject_thmss; |
465 val inject_thms = flat inject_thmss; |
466 |
466 |
467 val Tinst = map (pairself (certifyT lthy)) (map Logic.varifyT_global As ~~ As); |
467 val rho_As = map (pairself (certifyT lthy)) (map Logic.varifyT_global As ~~ As); |
468 |
468 |
469 fun inst_thm t thm = |
469 fun inst_thm t thm = |
470 Drule.instantiate' [] [SOME (certify lthy t)] |
470 Drule.instantiate' [] [SOME (certify lthy t)] |
471 (Thm.instantiate (Tinst, []) (Drule.zero_var_indexes thm)); |
471 (Thm.instantiate (rho_As, []) (Drule.zero_var_indexes thm)); |
472 |
472 |
473 val uexhaust_thm = inst_thm u exhaust_thm; |
473 val uexhaust_thm = inst_thm u exhaust_thm; |
474 |
474 |
475 val exhaust_cases = map base_name_of_ctr ctrs; |
475 val exhaust_cases = map base_name_of_ctr ctrs; |
476 |
476 |