Module arithmetic
Implementations of natural numbers and arithmetic operators
- lambda_calculus.terms.arithmetic.ISZERO: Final = Abstraction(bound='n', body=Application(abstraction=Application(abstraction=Variable(name='n'), argument=Abstraction(bound='x', body=Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='y'))))), argument=Abstraction(bound='x', body=Abstraction(bound='y', body=Variable(name='x')))))
Term which evaluates to
lambda_calculus.terms.logic.TRUEif its argument is zero,lambda_calculus.terms.logic.FALSEotherwise
- lambda_calculus.terms.arithmetic.SUCCESSOR: Final = Abstraction(bound='n', body=Abstraction(bound='f', body=Abstraction(bound='x', body=Application(abstraction=Variable(name='f'), argument=Application(abstraction=Application(abstraction=Variable(name='n'), argument=Variable(name='f')), argument=Variable(name='x'))))))
Term evaluating to its argument incremented by one.
- lambda_calculus.terms.arithmetic.PREDECESSOR: Final = Abstraction(bound='n', body=Abstraction(bound='f', body=Abstraction(bound='x', body=Application(abstraction=Application(abstraction=Application(abstraction=Variable(name='n'), argument=Abstraction(bound='g', body=Abstraction(bound='h', body=Application(abstraction=Variable(name='h'), argument=Application(abstraction=Variable(name='g'), argument=Variable(name='f')))))), argument=Abstraction(bound='u', body=Variable(name='x'))), argument=Abstraction(bound='u', body=Variable(name='u'))))))
Term ealuating to its argument decremented by one.
- lambda_calculus.terms.arithmetic.ADD: Final = Abstraction(bound='m', body=Abstraction(bound='n', body=Abstraction(bound='f', body=Abstraction(bound='x', body=Application(abstraction=Application(abstraction=Variable(name='m'), argument=Variable(name='f')), argument=Application(abstraction=Application(abstraction=Variable(name='n'), argument=Variable(name='f')), argument=Variable(name='x')))))))
Term evaluating to the sum of its two arguments.
- lambda_calculus.terms.arithmetic.SUBTRACT: Final = Abstraction(bound='m', body=Abstraction(bound='n', body=Application(abstraction=Application(abstraction=Variable(name='n'), argument=Abstraction(bound='n', body=Abstraction(bound='f', body=Abstraction(bound='x', body=Application(abstraction=Application(abstraction=Application(abstraction=Variable(name='n'), argument=Abstraction(bound='g', body=Abstraction(bound='h', body=Application(abstraction=Variable(name='h'), argument=Application(abstraction=Variable(name='g'), argument=Variable(name='f')))))), argument=Abstraction(bound='u', body=Variable(name='x'))), argument=Abstraction(bound='u', body=Variable(name='u'))))))), argument=Variable(name='m'))))
Term evaluating to the difference of its two arguments.
- lambda_calculus.terms.arithmetic.MULTIPLY: Final = Abstraction(bound='m', body=Abstraction(bound='n', body=Abstraction(bound='f', body=Application(abstraction=Variable(name='m'), argument=Application(abstraction=Variable(name='n'), argument=Variable(name='f'))))))
Term evaluating to the product of its two arguments.
- lambda_calculus.terms.arithmetic.POWER: Final = Abstraction(bound='b', body=Abstraction(bound='e', body=Application(abstraction=Variable(name='e'), argument=Variable(name='b'))))
Term evaluating to its first argument to the power of its second argument.
- lambda_calculus.terms.arithmetic.number(n: int) Abstraction[str][source]
Encode a number as a lambda term.
- Parameters
n – number to encode
- Raises
ValueError – If the number is negative
- Returns
requested term