Module combinators

Common combinators

lambda_calculus.terms.combinators.Y: Final = Abstraction(bound='g', body=Application(abstraction=Abstraction(bound='x', body=Application(abstraction=Variable(name='g'), argument=Application(abstraction=Variable(name='x'), argument=Variable(name='x')))), argument=Abstraction(bound='x', body=Application(abstraction=Variable(name='g'), argument=Application(abstraction=Variable(name='x'), argument=Variable(name='x'))))))

Y combinator used to define recursive terms.

lambda_calculus.terms.combinators.S: Final = Abstraction(bound='x', body=Abstraction(bound='y', body=Abstraction(bound='z', body=Application(abstraction=Application(abstraction=Variable(name='x'), argument=Variable(name='z')), argument=Application(abstraction=Variable(name='y'), argument=Variable(name='z'))))))

S combinator of the SKI combinator calculus.

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

K combinator of the SKI combinator calculus.

lambda_calculus.terms.combinators.I: Final = Abstraction(bound='x', body=Variable(name='x'))

I combinator of the SKI combinator calculus.

lambda_calculus.terms.combinators.B: Final = Abstraction(bound='x', body=Abstraction(bound='y', body=Abstraction(bound='z', body=Application(abstraction=Variable(name='x'), argument=Application(abstraction=Variable(name='y'), argument=Variable(name='z'))))))

B combinator of the BCKW combinator calculus.

lambda_calculus.terms.combinators.C: Final = Abstraction(bound='x', body=Abstraction(bound='y', body=Abstraction(bound='z', body=Application(abstraction=Application(abstraction=Variable(name='x'), argument=Variable(name='z')), argument=Variable(name='y')))))

C combinator of the BCKW combinator calculus.

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

W combinator of the BCKW combinator calculus.

lambda_calculus.terms.combinators.DELTA: Final = Abstraction(bound='x', body=Application(abstraction=Variable(name='x'), argument=Variable(name='x')))

Term applying its argument to itself.

lambda_calculus.terms.combinators.OMEGA: Final = Application(abstraction=Abstraction(bound='x', body=Application(abstraction=Variable(name='x'), argument=Variable(name='x'))), argument=Abstraction(bound='x', body=Application(abstraction=Variable(name='x'), argument=Variable(name='x'))))

Smallest term with no beta normal form.