Definition Extr := lambda (0 (lambda (lambda 1)) D I).Ltac fdecide P := let H := fresh "H" in assert (H : ~~ (P \/ ~ P)) by tauto; apply H; clear H; intros [H|H].

Lemma filter_predicate X (A : list X) (p : X -> Prop) : ~~ exists B, forall x, x el B <-> x el A /\ p x.