equal
deleted
inserted
replaced
193 setup Size.setup |
193 setup Size.setup |
194 |
194 |
195 lemma size_bool[code]: "size (b\<Colon>bool) = 0" |
195 lemma size_bool[code]: "size (b\<Colon>bool) = 0" |
196 by (cases b) auto |
196 by (cases b) auto |
197 |
197 |
198 lemma nat_size[simp, code]: "size (n\<Colon>nat) = n" |
198 lemma size_nat[simp, code]: "size (n\<Colon>nat) = n" |
199 by (induct n) simp_all |
199 by (induct n) simp_all |
200 |
200 |
201 declare prod.size[no_atp] |
201 declare prod.size[no_atp] |
202 |
202 |
203 lemma sum_size_o_map: "sum_size g1 g2 \<circ> map_sum f1 f2 = sum_size (g1 \<circ> f1) (g2 \<circ> f2)" |
203 lemma size_sum_o_map: "size_sum g1 g2 \<circ> map_sum f1 f2 = size_sum (g1 \<circ> f1) (g2 \<circ> f2)" |
204 by (rule ext) (case_tac x, auto) |
204 by (rule ext) (case_tac x, auto) |
205 |
205 |
206 lemma prod_size_o_map: "prod_size g1 g2 \<circ> map_prod f1 f2 = prod_size (g1 \<circ> f1) (g2 \<circ> f2)" |
206 lemma size_prod_o_map: "size_prod g1 g2 \<circ> map_prod f1 f2 = size_prod (g1 \<circ> f1) (g2 \<circ> f2)" |
207 by (rule ext) auto |
207 by (rule ext) auto |
208 |
208 |
209 setup {* |
209 setup {* |
210 BNF_LFP_Size.register_size_global @{type_name sum} @{const_name sum_size} @{thms sum.size} |
210 BNF_LFP_Size.register_size_global @{type_name sum} @{const_name size_sum} @{thms sum.size} |
211 @{thms sum_size_o_map} |
211 @{thms size_sum_o_map} |
212 #> BNF_LFP_Size.register_size_global @{type_name prod} @{const_name prod_size} @{thms prod.size} |
212 #> BNF_LFP_Size.register_size_global @{type_name prod} @{const_name size_prod} @{thms prod.size} |
213 @{thms prod_size_o_map} |
213 @{thms size_prod_o_map} |
214 *} |
214 *} |
215 |
215 |
216 end |
216 end |