diff -r a627d67434db -r cee0b9fccf6f src/HOL/Library/FSet.thy --- a/src/HOL/Library/FSet.thy Wed Oct 12 14:50:24 2022 +0200 +++ b/src/HOL/Library/FSet.thy Thu Oct 13 10:44:27 2022 +0200 @@ -556,6 +556,31 @@ lemma subset_fimage_iff: "(B |\| f|`|A) = (\ AA. AA |\| A \ B = f|`|AA)" by transfer (metis mem_Collect_eq rev_finite_subset subset_image_iff) +lemma fimage_strict_mono: + assumes "inj_on f (fset B)" and "A |\| B" + shows "f |`| A |\| f |`| B" + \ \TODO: Configure transfer framework to lift @{thm Fun.inj_on_strict_subset}.\ +proof (rule pfsubsetI) + from \A |\| B\ have "A |\| B" + by (rule pfsubset_imp_fsubset) + thus "f |`| A |\| f |`| B" + by (rule fimage_mono) +next + from \A |\| B\ have "A |\| B" and "A \ B" + by (simp_all add: pfsubset_eq) + + have "fset A \ fset B" + using \A \ B\ + by (simp add: fset_cong) + hence "f ` fset A \ f ` fset B" + using \A |\| B\ + by (simp add: inj_on_image_eq_iff[OF \inj_on f (fset B)\] less_eq_fset.rep_eq) + hence "fset (f |`| A) \ fset (f |`| B)" + by (simp add: fimage.rep_eq) + thus "f |`| A \ f |`| B" + by (simp add: fset_cong) +qed + subsubsection \bounded quantification\