Module logic

Implementations of boolean values and logical operators

lambda_calculus.terms.logic.TRUE: Final = Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='x')))

Term representing True.

lambda_calculus.terms.logic.FALSE: Final = Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='y')))

Term representing False

lambda_calculus.terms.logic.AND: Final = Abstraction(bound='p', body=Abstraction(bound='q', body=Application(abstraction=Application(abstraction=Variable(name='p'), argument=Variable(name='q')), argument=Variable(name='p'))))

Term implementing logical conjunction between its two arguments.

lambda_calculus.terms.logic.OR: Final = Abstraction(bound='p', body=Abstraction(bound='q', body=Application(abstraction=Application(abstraction=Variable(name='p'), argument=Variable(name='p')), argument=Variable(name='q'))))

Term implementing logical disjunction between its two arguments.

lambda_calculus.terms.logic.NOT: Final = Abstraction(bound='p', body=Application(abstraction=Application(abstraction=Variable(name='p'), argument=Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='y')))), argument=Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='x')))))

Term performing logical negation of its argument.

lambda_calculus.terms.logic.IF_THEN_ELSE: Final = Abstraction(bound='p', body=Abstraction(bound='a', body=Abstraction(bound='b', body=Application(abstraction=Application(abstraction=Variable(name='p'), argument=Variable(name='a')), argument=Variable(name='b')))))

Term evaluating to its second argument if its first argument is TRUE or its third argument otherwise.