src/HOL/Library/FSet.thy
changeset 60228 32dd7adba5a4
parent 58881 b9556a055632
child 60500 903bb1495239
equal deleted inserted replaced
60227:eacf75e4da95 60228:32dd7adba5a4
   999 lemmas size_fset_overloaded_simps[simp] =
   999 lemmas size_fset_overloaded_simps[simp] =
  1000   size_fset_simps[of "\<lambda>_. 0", unfolded add_0_left add_0_right,
  1000   size_fset_simps[of "\<lambda>_. 0", unfolded add_0_left add_0_right,
  1001     folded size_fset_overloaded_def]
  1001     folded size_fset_overloaded_def]
  1002 
  1002 
  1003 lemma fset_size_o_map: "inj f \<Longrightarrow> size_fset g \<circ> fimage f = size_fset (g \<circ> f)"
  1003 lemma fset_size_o_map: "inj f \<Longrightarrow> size_fset g \<circ> fimage f = size_fset (g \<circ> f)"
  1004   unfolding size_fset_def fimage_def
  1004   apply (subst fun_eq_iff)
  1005   by (auto simp: Abs_fset_inverse setsum.reindex_cong[OF subset_inj_on[OF _ top_greatest]])
  1005   including fset.lifting by transfer (auto intro: setsum.reindex_cong subset_inj_on)
  1006 
  1006   
  1007 setup {*
  1007 setup {*
  1008 BNF_LFP_Size.register_size_global @{type_name fset} @{const_name size_fset}
  1008 BNF_LFP_Size.register_size_global @{type_name fset} @{const_name size_fset}
  1009   @{thms size_fset_simps size_fset_overloaded_simps} @{thms fset_size_o_map}
  1009   @{thms size_fset_simps size_fset_overloaded_simps} @{thms fset_size_o_map}
  1010 *}
  1010 *}
  1011 
  1011 
       
  1012 lifting_update fset.lifting
       
  1013 lifting_forget fset.lifting
  1012 
  1014 
  1013 subsection {* Advanced relator customization *}
  1015 subsection {* Advanced relator customization *}
  1014 
  1016 
  1015 (* Set vs. sum relators: *)
  1017 (* Set vs. sum relators: *)
  1016 
  1018