(***)
Opaque omit. intros E A H H1. elim H1. clear H1.
intros k H1. elim H1. clear H1. intros w H1. elim H1. clear H1.
intros wH wH1. induction k. apply wH1. unfold distinct.
intuition.
apply wH1.
unfold distinct. intros i j i_not_j. unfold not. intro wi_wj.
apply IHk with(w:=omit w i).
exact(stillsurj E A (S k) w i j wH i_not_j wi_wj). apply H.
exact(stillsurj E A (S k) w i j wH i_not_j wi_wj). Qed.
Transparent omit.

(* Specifications: *)
Lemma existbij:forall(E:Setoid)(A:part_set E)(H:is_finite_set E)
(F:MAP E A)(sF:surjective F),
exists k:Nat,exists w:seq k E,A =' seq_set w /\ distinct w.