End Lindenbaum.
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).