Library DA
Definition Ex := R (lam (lam (lam (
#0 #1 (lam I) (lam (#3 (Succ #2) #1)) I)))).
Lemma Ex_rec u n : proc u → Ex (enc n) u == u (enc n) (lam I) (lam ((lam (Ex #0)) (Succ (enc n)) u)) I.
Lemma Ex_correct_1 (u : term) n : proc u → u (enc n) == true → converges (Ex (enc n) u).
Definition n_decider u := proc u ∧ ∀ n, u (enc n) == true ∨ u (enc n) == false.
Lemma Ex_correct_3a (u : term) n : n_decider u → converges ( Ex (enc (S n)) u ) → converges ( Ex (enc n) u ).
Lemma Ex_correct_3 (u : term) n m : n_decider u → n ≥ m → converges ( Ex (enc n) u ) → converges ( Ex (enc m) u ).
Lemma Ex_correct_2 (u : term) n : n_decider u → converges (Ex (enc n) u) → ∃ n, u (enc n) == true.
Definition n_ldec P := ∃ u : term,
proc u ∧
(∀ s : nat, P s ∧ u (enc s) == true ∨ ¬ P s ∧ u (enc s) == false).
Lemma DA_nat M :
n_ldec M → lacc (fun _ ⇒ ∃ n, M n).
Theorem DA M :
ldec M → lacc (fun _ ⇒ ∃ t, M t).