src/HOL/Library/Executable_Set.thy
changeset 29107 e70b9c2bee14
parent 28939 08004ce1b167
child 29110 476c46e99ada
equal deleted inserted replaced
29106:25e28a4070f3 29107:e70b9c2bee14
    26   [code del]: "eq_set = op ="
    26   [code del]: "eq_set = op ="
    27 
    27 
    28 lemma [code]: "eq_set A B \<longleftrightarrow> A \<subseteq> B \<and> B \<subseteq> A"
    28 lemma [code]: "eq_set A B \<longleftrightarrow> A \<subseteq> B \<and> B \<subseteq> A"
    29   unfolding eq_set_def by auto
    29   unfolding eq_set_def by auto
    30 
    30 
       
    31 (* FIXME allow for Stefan's code generator:
       
    32 declare set_eq_subset[code unfold]
       
    33 *)
       
    34 
    31 lemma [code]:
    35 lemma [code]:
    32   "a \<in> A \<longleftrightarrow> (\<exists>x\<in>A. x = a)"
    36   "a \<in> A \<longleftrightarrow> (\<exists>x\<in>A. x = a)"
    33   unfolding bex_triv_one_point1 ..
    37   unfolding bex_triv_one_point1 ..
    34 
    38 
    35 definition filter_set :: "('a \<Rightarrow> bool) \<Rightarrow> 'a set \<Rightarrow> 'a set" where
    39 definition filter_set :: "('a \<Rightarrow> bool) \<Rightarrow> 'a set \<Rightarrow> 'a set" where
    36   "filter_set P xs = {x\<in>xs. P x}"
    40   "filter_set P xs = {x\<in>xs. P x}"
       
    41 
       
    42 declare filter_set_def[symmetric, code unfold] 
    37 
    43 
    38 
    44 
    39 subsection {* Operations on lists *}
    45 subsection {* Operations on lists *}
    40 
    46 
    41 subsubsection {* Basic definitions *}
    47 subsubsection {* Basic definitions *}
   267   UNION ("{*map_union*}")
   273   UNION ("{*map_union*}")
   268   INTER ("{*map_inter*}")
   274   INTER ("{*map_inter*}")
   269   Ball ("{*Blall*}")
   275   Ball ("{*Blall*}")
   270   Bex ("{*Blex*}")
   276   Bex ("{*Blex*}")
   271   filter_set ("{*filter*}")
   277   filter_set ("{*filter*}")
       
   278   fold ("{* foldl *}")
       
   279 
   272 
   280 
   273 end
   281 end