# Traditional question Evaluate the following lambda application $$ (\lambda c.\lambda x. \lambda y. cxy)(\lambda x. \lambda y. x)ab $$ # Authentic Assessment question ### Lambda calculus expressions One of the most interesting consequences of the Lambda calculus system is it's surprising importance in computability theory. It's importance in computing has led to the formulation of the Church-Turing Thesis which conjectures that the Lambda Calculus System and the hypothetical Turing machine rules as complete representations of any algorithm. The lambda calculus system is said to be **Turing Complete**, which means that the system can simulate any conceivable Turing machine. In this seatwork we will demonstrate its Turing completeness by figuring out lambda representations together To lay groundwork, lets start with the simplest form of data, a Boolean value. These values are represented by the following lambdas - **True:** $T=\lambda x. \lambda y. x$ - **False:** $F=\lambda x. \lambda y. y$ True and false values are simply represented by a selection between two values when the first value is selected, it means true, and when the second value is selected it means false. This way of encoding makes these Boolean values perfect for `if-then-else` statements which can represent by a short lambda expression: $$ \lambda c.\lambda x. \lambda y. cxy $$ **To demonstrate this, evaluate the following lambda expression.** $$ (\lambda c.\lambda x. \lambda y. cxy)(\lambda x. \lambda y. x)ab $$ **Write a small snippet of C code that behaves in the exact same manner as the lambda expression above (Hint: this is an `if-then-else`)** ...