proposition: Lemma fdomain_pr1 x: inc x (domain f) -> inc (J x (Vg f x)) f.
proof: Proof. move: fgf => [p1 p2] /funI_P [z zf ->]. have q1: exists2 y, inc y (range f) & inc (J (P z) y) f. exists (Q z); [ apply /funI_P; ex_tac | by rewrite (p1 _ zf)]. apply:(select_pr1 q1) => a b pa ar pb br. have aux: (P (J (P z) a) = P (J (P z) b)) by aw. by move: (pr2_def (p2 _ _ ar br aux)). Qed.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat)