Ad
lsnbrFailed Tests

() _ ()

K = \ x _ . x
F = \ _ x . x
B = \ f g x . f (g x)

if = \ b y n . b y n
not = \ b . b F K


le0 = \ n . n K (B not le0) (B not le0)
ge0 = \ n . n K le0 le0

lt0 = B not ge0
gt0 = B not le0


pow' = \ b e . e 11 (\ _ . 22) (\ _ . pow' b e)

# EvalError also for e>=0
#pow = \ b e . lt0 e () (pow' b e)

# No Exception for e<0 even
# Infinite loop for e<0 odd due to some strictness evaluating (pow' b e)
#pow = \ b e . lt0 e (\ _ . ()) (pow' b e)

# Gets rid of infinite loop for e<0 odd
#pow  = \ b e . lt0 e (\ _ . ()) (\ x . pow' b e x)

# EvalError for e>=0
pow  = \ b e . lt0 e (\ _ . ()) (\ _ . pow' b e) ()






zero = \ n . n K (\ _ . F) (\ _ . F)

eq = \ m n . m ( n K (\ _ . F) (\ _ . F) )
               ( \ a . n F (\ b . eq a b) (\ _ . F) )
               ( \ a . n F (\ _ . F) (\ b . eq a b) )


# This works
# qwertz = \ n . zero n (123) ()

# This as well
# qwertz' = \ n . 123
# qwertz = \ n . zero n (qwertz' n) ()

# But this does not
qwertz' = \ n . n 123 (\ _ . 123) (\ _ . 123)
qwertz = \ n . zero n (qwertz' n) ()

# But this does again
# qwertz' = \ n . n 123 (\ _ . 123) (\ _ . 123)
# qwertz = \ n . eq 0 n (qwertz' n) ()