# HG changeset patch # User Lars Hupel # Date 1470483409 -7200 # Node ID 7fb02cee1cba4f6cfa64717fd720075b4d2890b4 # Parent 854402aa9374948fb1685e63c9e368cc7ae1414b some additions to FSet diff -r 854402aa9374 -r 7fb02cee1cba src/HOL/Library/FSet.thy --- a/src/HOL/Library/FSet.thy Sat Aug 06 08:26:58 2016 +0200 +++ b/src/HOL/Library/FSet.thy Sat Aug 06 13:36:49 2016 +0200 @@ -202,6 +202,8 @@ lift_definition ffold :: "('a \ 'b \ 'b) \ 'b \ 'a fset \ 'b" is Finite_Set.fold . +lift_definition fset_of_list :: "'a list \ 'a fset" is set by (rule finite_set) + subsection \Transferred lemmas from Set.thy\ @@ -441,6 +443,10 @@ lemmas fbind_const = bind_const[Transfer.transferred] lemmas ffmember_filter[simp] = member_filter[Transfer.transferred] lemmas fequalityI = equalityI[Transfer.transferred] +lemmas fset_of_list_simps[simp] = set_simps[Transfer.transferred] +lemmas fset_of_list_append[simp] = set_append[Transfer.transferred] +lemmas fset_of_list_rev[simp] = set_rev[Transfer.transferred] +lemmas fset_of_list_map[simp] = set_map[Transfer.transferred] subsection \Additional lemmas\ @@ -483,7 +489,7 @@ lemmas minus_fset[simp] = minus_fset.rep_eq -subsubsection \\filter_fset\\ +subsubsection \\ffilter\\ lemma subset_ffilter: "ffilter P A |\| ffilter Q A = (\ x. x |\| A \ P x \ Q x)" @@ -499,6 +505,20 @@ unfolding less_fset_def by (auto simp add: subset_ffilter eq_ffilter) +subsubsection \\fset_of_list\\ + +lemma fset_of_list_filter[simp]: + "fset_of_list (filter P xs) = ffilter P (fset_of_list xs)" + by transfer (auto simp: Set.filter_def) + +lemma fset_of_list_subset[intro]: + "set xs \ set ys \ fset_of_list xs |\| fset_of_list ys" + by transfer simp + +lemma fset_of_list_elem: "(x |\| fset_of_list xs) \ (x \ set xs)" + by transfer simp + + subsubsection \\finsert\\ (* FIXME, transferred doesn't work here *) @@ -543,7 +563,11 @@ "(\x. x |\| A ==> P x) == Trueprop (fBall A (\x. P x))" apply (simp only: atomize_all atomize_imp) apply (rule equal_intr_rule) -by (transfer, simp)+ + by (transfer, simp)+ + +lemma fBall_mono[mono]: "P \ Q \ fBall S P \ fBall S Q" +by auto + end