Combinatory logic describes computation by application and fixed combinator constants, eliminating bound variables through bracket abstraction. Its intensional weak reduction does not identify every pair of terms that becomes beta-equivalent after translation into lambda calculus.
Bracket abstraction removes a free variable from a combinatory logic term. The displayed clauses are applied in that order, giving and . Under the standard lambda expansions of , the result is beta-equivalent to . The recursive translation of lambda terms therefore preserves variables and application and reflects weak equivalence, but need not preserve all beta equivalences.
A finite applicative expression over free variables and the combinator constants , with application associating to the left. One may instead take as the abbreviation . There is no variable binder in this syntax.
Weak combinatory reduction closes the displayed contractions under application contexts. Weak equivalence is its reflexive, symmetric, transitive closure. The adjective distinguishes this syntactic reduction from an extensional rule equating functions that agree after an extra argument. A weak normal form has no subexpression matching a contraction rule; a partially applied combinator can be such a normal form.

Articles by others on the same topic (1)

Combinatory logic is a branch of mathematical logic and theoretical computer science that deals with the study of combinators, which are basic, higher-order functions that can be combined to manipulate and transform data. It was introduced by the mathematician Haskell Curry and is closely related to lambda calculus. Key concepts include: 1. **Combinators**: These are abstract entities that combine arguments to produce results without needing to reference variables.