equal
  deleted
  inserted
  replaced
  
    
    
|    225     val case_exp = Sum_Tree.mk_sumcases HOLogic.boolT Ps |    225     val case_exp = Sum_Tree.mk_sumcases HOLogic.boolT Ps | 
|    226  |    226  | 
|    227     val induct_inst = |    227     val induct_inst = | 
|    228       Thm.forall_elim (Thm.cterm_of ctxt case_exp) induct |    228       Thm.forall_elim (Thm.cterm_of ctxt case_exp) induct | 
|    229       |> full_simplify (put_simpset Sum_Tree.sumcase_split_ss ctxt) |    229       |> full_simplify (put_simpset Sum_Tree.sumcase_split_ss ctxt) | 
|    230       |> full_simplify (put_simpset HOL_basic_ss ctxt addsimps all_f_defs) |    230       |> full_simplify (put_simpset HOL_basic_ss ctxt |> Simplifier.add_simps all_f_defs) | 
|    231  |    231  | 
|    232     fun project rule (MutualPart {cargTs, i, ...}) k = |    232     fun project rule (MutualPart {cargTs, i, ...}) k = | 
|    233       let |    233       let | 
|    234         val afs = map_index (fn (j,T) => Free ("a" ^ string_of_int (j + k), T)) cargTs (* FIXME! *) |    234         val afs = map_index (fn (j,T) => Free ("a" ^ string_of_int (j + k), T)) cargTs (* FIXME! *) | 
|    235         val inj = Sum_Tree.mk_inj ST n i (foldr1 HOLogic.mk_prod afs) |    235         val inj = Sum_Tree.mk_inj ST n i (foldr1 HOLogic.mk_prod afs) | 
|    283       map (fn MutualPart {f_defthm = SOME f_def, ...} => f_def) parts |    283       map (fn MutualPart {f_defthm = SOME f_def, ...} => f_def) parts | 
|    284  |    284  | 
|    285     fun mk_mpsimp fqgar sum_psimp = |    285     fun mk_mpsimp fqgar sum_psimp = | 
|    286       in_context lthy fqgar (recover_mutual_psimp all_orig_fdefs parts) sum_psimp |    286       in_context lthy fqgar (recover_mutual_psimp all_orig_fdefs parts) sum_psimp | 
|    287  |    287  | 
|    288     val rew_simpset = put_simpset HOL_basic_ss lthy addsimps all_f_defs |    288     val rew_simpset = put_simpset HOL_basic_ss lthy |> Simplifier.add_simps all_f_defs | 
|    289     val mpsimps = map2 mk_mpsimp fqgars psimps |    289     val mpsimps = map2 mk_mpsimp fqgars psimps | 
|    290     val minducts = mutual_induct_rules lthy simple_pinduct all_f_defs m |    290     val minducts = mutual_induct_rules lthy simple_pinduct all_f_defs m | 
|    291     val mcases = map (mutual_cases_rule lthy cases_rule n ST) parts |    291     val mcases = map (mutual_cases_rule lthy cases_rule n ST) parts | 
|    292     val mtermination = full_simplify rew_simpset termination |    292     val mtermination = full_simplify rew_simpset termination | 
|    293     val mdomintros = Option.map (map (full_simplify rew_simpset)) domintros |    293     val mdomintros = Option.map (map (full_simplify rew_simpset)) domintros |