Definition Lindenbaum_preserves {A: Type} (P: Ensemble A -> Prop): Prop :=
  forall (CA: Countable A) init, P init -> P (LindenbaumConstruction CA init P).Definition Lindenbaum_ensures {A: Type} (P cP: Ensemble A -> Prop): Prop :=
  forall (CA: Countable A) init, P init -> cP (LindenbaumConstruction CA init P).Definition Lindenbaum_constructable {A: Type} (P cP: Ensemble A -> Prop): Prop :=
  forall Phi, P Phi -> exists Psi: sig cP, Included _ Phi (proj1_sig Psi) /\ P (proj1_sig Psi).

(* Specifications: *)
Lemma Lindenbaum_constructable_Same_set {A: Type}: forall P Q cP: Ensemble A -> Prop, Same_set _ P Q -> (Lindenbaum_constructable P cP <-> Lindenbaum_constructable Q cP).
Lemma Lindenbaum_constructable_suffice {A: Type} (P cP: Ensemble A -> Prop): Countable A -> Lindenbaum_preserves P -> Lindenbaum_ensures P cP -> Lindenbaum_constructable P cP.
Lemma Lindenbaum_preserves_by_finiteness {A: Type}: forall P: Ensemble A -> Prop, finite_captured P -> subset_preserved P -> Lindenbaum_preserves P.
Lemma Lindenbaum_ensures_by_conjunct {A: Type}: forall P cP1 cP2: Ensemble A -> Prop, Lindenbaum_ensures P cP1 -> Lindenbaum_ensures P cP2 -> Lindenbaum_ensures P (Intersection _ cP1 cP2).