equal
deleted
inserted
replaced
38 val mk_sum_case: term -> term -> term |
38 val mk_sum_case: term -> term -> term |
39 val mk_sum_caseN: term list -> term |
39 val mk_sum_caseN: term list -> term |
40 |
40 |
41 val mk_specN: int -> thm -> thm |
41 val mk_specN: int -> thm -> thm |
42 val mk_sum_casesN: int -> int -> thm |
42 val mk_sum_casesN: int -> int -> thm |
43 val mk_sumEN: int -> thm |
|
44 |
43 |
45 val mk_InN_Field: int -> int -> thm |
44 val mk_InN_Field: int -> int -> thm |
46 val mk_InN_inject: int -> int -> thm |
45 val mk_InN_inject: int -> int -> thm |
47 val mk_InN_not_InM: int -> int -> thm |
46 val mk_InN_not_InM: int -> int -> thm |
48 end; |
47 end; |
216 fun mk_sum_casesN 1 1 = @{thm refl} |
215 fun mk_sum_casesN 1 1 = @{thm refl} |
217 | mk_sum_casesN _ 1 = @{thm sum.cases(1)} |
216 | mk_sum_casesN _ 1 = @{thm sum.cases(1)} |
218 | mk_sum_casesN 2 2 = @{thm sum.cases(2)} |
217 | mk_sum_casesN 2 2 = @{thm sum.cases(2)} |
219 | mk_sum_casesN n m = trans OF [@{thm sum_case_step(2)}, mk_sum_casesN (n - 1) (m - 1)]; |
218 | mk_sum_casesN n m = trans OF [@{thm sum_case_step(2)}, mk_sum_casesN (n - 1) (m - 1)]; |
220 |
219 |
221 local |
|
222 fun mk_sumEN' 1 = @{thm obj_sum_step} |
|
223 | mk_sumEN' n = mk_sumEN' (n - 1) RSN (2, @{thm obj_sum_step}); |
|
224 in |
|
225 fun mk_sumEN 1 = @{thm obj_sum_base} |
|
226 | mk_sumEN 2 = @{thm sumE} |
|
227 | mk_sumEN n = (mk_sumEN' (n - 2) RSN (2, @{thm obj_sumE})) OF replicate n (impI RS allI); |
|
228 end; |
|
229 |
|
230 fun mk_rec_simps n rec_thm defs = map (fn i => |
220 fun mk_rec_simps n rec_thm defs = map (fn i => |
231 map (fn def => def RS rec_thm RS mk_nthI n i RS fun_cong) defs) (1 upto n); |
221 map (fn def => def RS rec_thm RS mk_nthI n i RS fun_cong) defs) (1 upto n); |
232 |
222 |
233 end; |
223 end; |