diff -r f40bc75b2a3f -r 0252d635bfb2 src/HOL/Library/FSet.thy --- a/src/HOL/Library/FSet.thy Tue May 16 14:16:20 2023 +0200 +++ b/src/HOL/Library/FSet.thy Tue May 16 22:23:05 2023 +0200 @@ -170,17 +170,20 @@ "{|x, xs|}" == "CONST finsert x {|xs|}" "{|x|}" == "CONST finsert x {||}" -lift_definition fmember :: "'a \ 'a fset \ bool" (infix "|\|" 50) is Set.member - parametric member_transfer . - -lemma fmember_iff_member_fset: "x |\| A \ x \ fset A" - by (rule fmember.rep_eq) - -abbreviation notin_fset :: "'a \ 'a fset \ bool" (infix "|\|" 50) where "x |\| S \ \ (x |\| S)" +abbreviation fmember :: "'a \ 'a fset \ bool" (infix "|\|" 50) where + "a |\| A \ a \ fset A" + +abbreviation notin_fset :: "'a \ 'a fset \ bool" (infix "|\|" 50) where + "x |\| S \ \ (x |\| S)" context includes lifting_syntax begin +lemma fmember_transfer0[transfer_rule]: + assumes [transfer_rule]: "bi_unique A" + shows "(A ===> pcr_fset A ===> (=)) (\) (|\|)" + by transfer_prover + lift_definition ffilter :: "('a \ bool) \ 'a fset \ 'a fset" is Set.filter parametric Lifting_Set.filter_transfer unfolding Set.filter_def by simp @@ -1011,9 +1014,6 @@ shows "fset (ffilter P xs) = Collect P \ fset xs" by transfer auto -lemma notin_fset: "x |\| S \ x \ fset S" - by (simp add: fmember_iff_member_fset) - lemma inter_fset[simp]: "fset (A |\| B) = fset A \ fset B" by (rule inf_fset.rep_eq)