(((if true) YES) NO) let if = \a.\b.\c.((a b) c) let false = \a.\b.b let true = \a.\b.a let ident = \x.x Interpreting: (((if true) YES) NO) NotFound(e) NotFound(e) Eval: (((\\\((2 1) 0) \\1) YES) NO) Eval: ((\\\((2 1) 0) \\1) YES) Eval: (\\\((2 1) 0) \\1) Beta: \\\((2 1) 0) \\1 Alpha 0: \\1 -> \\((2 1) 0) Alpha 1: \\1 -> \((2 1) 0) Alpha 2: \\1 -> ((2 1) 0) Alpha 2: \\1 -> 0 Alpha 2: \\1 -> (2 1) Alpha 2: \\1 -> 1 Alpha 2: \\1 -> 2 Beta: \\((\\1 1) 0) YES Alpha 0: YES -> \((\\1 1) 0) Alpha 1: YES -> ((\\1 1) 0) Alpha 1: YES -> 0 Alpha 1: YES -> (\\1 1) Alpha 1: YES -> 1 Alpha 1: YES -> \\1 Alpha 2: YES -> \1 Alpha 3: YES -> 1 Beta: \((\\1 YES) 0) NO Alpha 0: NO -> ((\\1 YES) 0) Alpha 0: NO -> 0 Alpha 0: NO -> (\\1 YES) Alpha 0: NO -> YES NotFound(a) Alpha 0: NO -> \\1 Alpha 1: NO -> \1 Alpha 2: NO -> 1 Result: ((\\1 YES) NO)