proposition: Lemma filter_image (T U : Type) (f : T -> U) (F : set_system T) : Filter F -> f @` setT = setT -> Filter [set f @` A | A in F].
proof: Proof. move=> FF fsurj; split. - by exists setT => //; apply: filterT. - move=> _ _ [A FA <-] [B FB <-]. exists (f @^-1` (f @` A `&` f @` B)); last by rewrite image_preimage. have sAB : A `&` B `<=` f @^-1` (f @` A `&` f @` B). by move=> x [Ax Bx]; split; exists x. by apply: filterS sAB _; apply: filterI. - move=> A B sAB [C FC fC_eqA]. exists (f @^-1` B); last by rewrite image_preimage. by apply: filterS FC => p Cp; apply: sAB; rewrite -fC_eqA; exists p. Qed.
imports: HB(structures) mathcomp(all_ssreflect all_algebra finmap generic_quotient) mathcomp(boolp classical_sets functions) mathcomp(cardinality mathcomp_extra fsbigop) reals signed