proposition: Fact fin_t_dec_choose_one : (exists x, Q x /\ P x) -> { x | Q x /\ P x }.
proof: Proof. Proof using HQ Pdec. revert HQ; intros (l & Hl) H. destruct (list_dec_choose_one l) as (x & H1 & H2). + destruct H as (x & ? & ?); exists x; rewrite <- Hl; auto. + exists x; rewrite Hl; auto. Qed.
imports: List Arith Lia Undecidability.Shared.Libs.DLW.Utils(utils_tac utils_list utils_nat fin_base) Undecidability.Shared.Libs.DLW.Vec(pos vec)