Definition cntabl(U:Type)(C:Ensemble(Ensemble U)):=
exists f:nat->Ensemble U,forall c,C c->exists i:nat,f i=c.

(* Specifications: *)
Lemma aaron_stump_cse545(Q:nat->Prop): (forall n:nat,(forall n':nat,n'<n->Q n')->Q n)-> forall n:nat,forall n':nat,n'<=n->Q n'.
Lemma first_sat(Q:nat->Prop):forall k:nat,Q k ->exists m:nat,Q m/\forall n:nat,Q n->m<=n.
Lemma cntabl_P0(U:Type)(C:Ensemble(Ensemble U)) :cntabl _ C-> exists g:forall c,C c->nat, (forall c c' c'',g c c'=g c c'') /\forall c cc c' cc',g c c'=g cc cc'->c=cc.
Lemma cntabl_P1(U:Type)(C:Ensemble(Ensemble U)) :forall g:forall c,C c->nat, (forall c c' c'',g c c'=g c c'')-> (forall c cc c' cc',g c c'=g cc cc'->c=cc)->cntabl _ C.