% % Example queries % % ceval (app (lam [x] (vl x)) z) V. % %query 1 * (sqnt rnil rnil rnil rnil (^(return V) =>> % ^(ev (appm (lamm [x] (vl x)) z)))). %query 1 1 (sqnt rnil rnil rnil rnil (^(return V) =>> ^(ev (appm (lamm [x] (vl x)) z)))). % Doubling 3 % ceval (app (fix [double] lamm [x] % case (vl x) z % [x'] s (s (appm double (vl x')))) (s (s (s z)))) % V. % % this query has successfully completed on my machine (~ 4 minutes to run) % % %query 1 * (sqnt rnil rnil rnil rnil (^(return V) =>> % ^(ev (appm (fix [double] lamm [x] % case (vl x) z % [x'] s (s (appm double (vl x')))) (s (s (s z)))) ))). % Computing 2 * 3 % ceval (letv (lam [x] fix [add] lam [y] % case (vl y) (vl x) [y'] s (app add (vl y'))) [add] % (letv (lam [x] fix [mult] lam [y] % case (vl y) z ([y'] (app (app (vl add) (vl x)) % (app mult (vl y'))))) [mult] % (app (app (vl mult) (s (s z))) (s (s (s z)))))) % V. % % this has produced one right answer, but after 2 hours it still hadn't decided % if there were any others on my machine. % % has successfully run, in about 5 hours. % % %query 1 * (sqnt rnil rnil rnil rnil (^(return V) =>> % ^(ev (letv (lamm [x] fix [add] lamm [y] % case (vl y) (vl x) [y'] s (appm add (vl y'))) [add] % (letv (lamm [x] fix [mult] lamm [y] % case (vl y) z ([y'] (appm (appm (vl add) (vl x)) % (appm mult (vl y'))))) [mult] % (appm (appm (vl mult) (s (s z))) (s (s (s z)))))) ))).