Fact xchoose_subproof P exP : {x | find P (ex_minn (@complete P exP)) = Some x}.Implicit Type T : countType.Local Notation dc := decode.Implicit Types P Q : pred T.Definition xchoose P exP := sval (@xchoose_subproof T P exP).

(* Specifications: *)
Lemma xchooseP P exP : P (@xchoose P exP).
Lemma eq_xchoose P Q exP exQ : P =1 Q -> @xchoose P exP = @xchoose Q exQ.
Lemma sigW P : (exists x, P x) -> {x | P x}.
Lemma sig2W P Q : (exists2 x, P x & Q x) -> {x | P x & Q x}.
Lemma sig_eqW (vT : eqType) (lhs rhs : T -> vT) : (exists x, lhs x = rhs x) -> {x | lhs x = rhs x}.
Lemma sig2_eqW (vT : eqType) (P : pred T) (lhs rhs : T -> vT) : (exists2 x, P x & lhs x = rhs x) -> {x | P x & lhs x = rhs x}.
Lemma chooseP P x0 : P x0 -> P (choose P x0).
Lemma choose_id P x0 y0 : P x0 -> P y0 -> choose P x0 = choose P y0.
Lemma eq_choose P Q : P =1 Q -> choose P =1 choose Q.
Lemma PcanChoiceMixin f' : pcancel f f' -> choiceMixin sT.