Section Lindenbaum.
Context {A: Type}
(CA: Countable A)
(init: Ensemble A)
(P: Ensemble A -> Prop).
Fixpoint LindenbaumChain (n: nat): Ensemble A :=
match n with
| 0 => init
| S n => fun a => LindenbaumChain n a \/ CA a n /\ P (Union _ (LindenbaumChain n) (Singleton _ a))
end.
Definition LindenbaumConstruction: Ensemble A :=
fun a => exists n, LindenbaumChain n a.
Hypothesis H_init: P init.

Lemma Lindenbaum_preserve_n:
Proper (Same_set A ==> iff) P ->
forall n, P (LindenbaumChain n).