(** *** Search using Choose *)
Section Fix_f.
Variable u : term.
Hypothesis proc_u : proc u.
Hypothesis total_u : forall n, u (enc n) ≡ none \/ exists s, u (enc n) ≡ oenc (Some s).
Definition Re : term := Eval cbv in
.\ "s"; !C (.\ "n"; !u "n" (.\ "t"; !Eq "s" "t") !F).

(** ** The class of all terms is enumerable *)
Lemma R_enumerates (R : nat -> option term) (u : term) :
proc u -> (forall s, exists n, R n = Some s) -> (forall n, u (enc n) ▷ oenc (R n)) ->
enumerable (fun s => True).