equal
deleted
inserted
replaced
99 val dest_sumTN: int -> typ -> typ list |
99 val dest_sumTN: int -> typ -> typ list |
100 val dest_sumTN_balanced: int -> typ -> typ list |
100 val dest_sumTN_balanced: int -> typ -> typ list |
101 val dest_tupleT: int -> typ -> typ list |
101 val dest_tupleT: int -> typ -> typ list |
102 |
102 |
103 val mk_Field: term -> term |
103 val mk_Field: term -> term |
|
104 val mk_If: term -> term -> term -> term |
104 val mk_union: term * term -> term |
105 val mk_union: term * term -> term |
105 |
106 |
106 val mk_sumEN: int -> thm |
107 val mk_sumEN: int -> thm |
107 val mk_sumEN_balanced: int -> thm |
108 val mk_sumEN_balanced: int -> thm |
108 val mk_sum_casesN: int -> int -> thm |
109 val mk_sum_casesN: int -> int -> thm |
256 end; |
257 end; |
257 |
258 |
258 val mk_sum_caseN = Library.foldr1 mk_sum_case; |
259 val mk_sum_caseN = Library.foldr1 mk_sum_case; |
259 val mk_sum_caseN_balanced = Balanced_Tree.make mk_sum_case; |
260 val mk_sum_caseN_balanced = Balanced_Tree.make mk_sum_case; |
260 |
261 |
|
262 fun mk_If p t f = |
|
263 let val T = fastype_of t; |
|
264 in Const (@{const_name If}, HOLogic.boolT --> T --> T --> T) $ p $ t $ f end; |
|
265 |
261 fun mk_Field r = |
266 fun mk_Field r = |
262 let val T = fst (dest_relT (fastype_of r)); |
267 let val T = fst (dest_relT (fastype_of r)); |
263 in Const (@{const_name Field}, mk_relT (T, T) --> HOLogic.mk_setT T) $ r end; |
268 in Const (@{const_name Field}, mk_relT (T, T) --> HOLogic.mk_setT T) $ r end; |
264 |
269 |
265 val mk_union = HOLogic.mk_binop @{const_name sup}; |
270 val mk_union = HOLogic.mk_binop @{const_name sup}; |