Section OpsTheory.
Variable T : finType.
Implicit Types (A B C D: {pred T}) (P Q : pred T) (x y : T) (s : seq T).
Variant pick_spec : option T -> Type :=
| Pick x of P x         : pick_spec (Some x)
| Nopick of P =1 xpred0 : pick_spec None.
End EnumPick.
Hint Resolve subxx_hint : core.
Definition iinv A y fAy := s2val (@iinv_proof A y fAy).
End Image.
Prenex Implicits codom iinv.
Arguments imageP {T T' f A y}.
Arguments codomP {T T' f y}.

Lemma flatten_imageP (aT : finType) (rT : eqType)
(A : aT -> seq rT) (P : {pred aT}) (y : rT) :
reflect (exists2 x, x \in P & y \in A x) (y \in flatten [seq A x | x in P]).