The set of lambda expressions is generated by what we would, in modern day computer science terminology, call a context-free grammar.
Let Var be a countably infinite set of variables. We define the set of lambda expressions as follows:
where and .
Thus, the syntax of lambda expressions contains two ways to generate new expressions from old ones. The construction is called abstraction, while the construction is called application.
The intention is that is an expression representing a function of whose body (or rule for computation) is given by . Thus, ``abstracts'' the computation rule described in M to operate on arbitrary input values . This is analogous to writing without having to assign an unnecessary ``name'' to the function (after all, and are clearly the same function, so the names and carry no significance.)
The expression is intended to represent the action of ``applying'' the function encoded by to the argument .