src/HOL/BNF_FP_Base.thy
changeset 56846 9df717fef2bb
parent 56684 d8f32f55e463
child 57279 88263522c31e
equal deleted inserted replaced
56845:691da43fbdd4 56846:9df717fef2bb
   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