equal
deleted
inserted
replaced
90 |
90 |
91 val mk_Field: term -> term |
91 val mk_Field: term -> term |
92 val mk_union: term * term -> term |
92 val mk_union: term * term -> term |
93 |
93 |
94 val mk_sumEN: int -> thm |
94 val mk_sumEN: int -> thm |
|
95 val mk_sum_casesN: int -> int -> thm |
95 |
96 |
96 val mk_tactics: 'a -> 'a -> 'a -> 'a list -> 'a -> 'a -> 'a list -> 'a -> 'a -> 'a list |
97 val mk_tactics: 'a -> 'a -> 'a -> 'a list -> 'a -> 'a -> 'a list -> 'a -> 'a -> 'a list |
97 |
98 |
98 val fixpoint: ('a * 'a -> bool) -> ('a list -> 'a list) -> 'a list -> 'a list |
99 val fixpoint: ('a * 'a -> bool) -> ('a list -> 'a list) -> 'a list -> 'a list |
99 |
100 |
241 fun mk_sumEN 1 = @{thm obj_sum_base} |
242 fun mk_sumEN 1 = @{thm obj_sum_base} |
242 | mk_sumEN 2 = @{thm sumE} |
243 | mk_sumEN 2 = @{thm sumE} |
243 | mk_sumEN n = (mk_sumEN' (n - 2) RSN (2, @{thm obj_sumE})) OF replicate n (impI RS allI); |
244 | mk_sumEN n = (mk_sumEN' (n - 2) RSN (2, @{thm obj_sumE})) OF replicate n (impI RS allI); |
244 end; |
245 end; |
245 |
246 |
|
247 fun mk_sum_casesN 1 1 = @{thm refl} |
|
248 | mk_sum_casesN _ 1 = @{thm sum.cases(1)} |
|
249 | mk_sum_casesN 2 2 = @{thm sum.cases(2)} |
|
250 | mk_sum_casesN n m = trans OF [@{thm sum_case_step(2)}, mk_sum_casesN (n - 1) (m - 1)]; |
|
251 |
246 fun mk_tactics mid mcomp mcong snat bdco bdinf sbd inbd wpull = |
252 fun mk_tactics mid mcomp mcong snat bdco bdinf sbd inbd wpull = |
247 [mid, mcomp, mcong] @ snat @ [bdco, bdinf] @ sbd @ [inbd, wpull]; |
253 [mid, mcomp, mcong] @ snat @ [bdco, bdinf] @ sbd @ [inbd, wpull]; |
248 |
254 |
249 fun fp_sort lhss Ass = Library.sort (Term_Ord.typ_ord o pairself TFree) |
255 fun fp_sort lhss Ass = Library.sort (Term_Ord.typ_ord o pairself TFree) |
250 (subtract (op =) lhss (fold (fold (insert (op =))) Ass [])) @ lhss; |
256 (subtract (op =) lhss (fold (fold (insert (op =))) Ass [])) @ lhss; |