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.

Lemma Lindenbaum_pointwise_finite_decided': forall a n, CA a n -> Proper (Same_set A ==> iff) P -> P (Union _ (LindenbaumChain n) (Singleton _ a)) <-> (LindenbaumConstruction a).