proposition: Lemma exists_list_weak_dec: forall A (l: list A) P (X: forall x, (P x) \/ (~ P x)), (exists x, In x l /\ P x) \/ (~ exists x, In x l /\ P x).
proof: Proof. intros. induction l. + right; intros [x [? ?]]. inversion H. + destruct (X a); [| destruct IHl]; [left | left | right]. - exists a; split; auto. left; auto. - destruct H0 as [? [? ?]]. exists x; split; auto. right; auto. - intros [? [? ?]]. destruct H1; [subst; tauto |]. apply H0; exists x. tauto. Qed.
imports: Coq.Lists.List Coq.micromega.Lia Coq.Sorting.Permutation Coq.ZArith.ZArith_base Coq.ZArith.Zcomplements Coq.Logic.FunctionalExtensionality CertiGraph.lib.Coqlib CertiGraph.lib.EquivDec_ext VST.zlist.sublist VST.zlist.list_solver