Definition finite_captured (P: Ensemble A -> Prop): Prop :=
  forall (Phi: Ensemble A),
    (forall xs: list A, Forall Phi xs -> P (fun x => In x xs)) ->
      P Phi.Definition finite_witnessed (P: Ensemble A -> Prop): Prop :=
  forall (Phi: Ensemble A), P Phi ->
    exists xs: list A, Forall Phi xs /\ P (fun x => In x xs).Definition subset_preserved (P: Ensemble A -> Prop): Prop :=
  forall (Phi Psi: Ensemble A),
    Included _ Phi Psi -> P Psi -> P Phi.Definition superset_preserved (P: Ensemble A -> Prop): Prop :=
  forall (Phi Psi: Ensemble A),
    Included _ Phi Psi -> P Phi -> P Psi.

(* Specifications: *)
Lemma not_finite_witnessed_finite_captured: forall P, finite_witnessed P -> finite_captured (fun X => ~ P X).
Lemma not_superset_preserved_subset_preserved: forall P, superset_preserved P -> subset_preserved (fun X => ~ P X).
Lemma superset_preserved_same_set_preserved: forall P, superset_preserved P -> Proper (Same_set _ ==> iff) P.
Lemma subset_preserved_same_set_preserved: forall P, subset_preserved P -> Proper (Same_set _ ==> iff) P.