{
var Y = (rec_fn =>
(gen_rec => U(gen_rec))
(gen_rec => rec_fn((n,a,b) => U(gen_rec)(n,a,b)))
)
var do_fib = fib_next => n => ((n,a,b) => n < 1 ? a : fib_next(n-1,b,a+b))(n,0,1);
var do_fact = fact_next => n => n < 2 ? 1 : n * fact_next(n-1);
var fact1 = Y(do_fact);
var fact2 = do_fact(Y(do_fact));
var fib1 = Y(do_fib);
var fib2 = do_fib(Y(do_fib));
return {
y_combinator_test_1_satisfied : fact1(5) === fact2(5),
y_combinator_test_2_satisfied : fib1(20) === fib2(20)
}
}