Parenthesization in Lambda Calculus

173 Views Asked by At

I am trying to understand how parenthesization works in $λ$-calculus. All of the resources state the following:

  • Applications are left associative;
  • Abstractions are right associative and extend as much as possible.

When it comes to applications from what I understand this means that it is not associative, that is: $$(ab)c \neq a(bc)$$ and the right way to fully parenthesize the expression $abc$ would be: $$((a b)c)$$

However I do not understand the part of abstraction, what does it mean to extend as much as possible?

1

There are 1 best solutions below

2
On BEST ANSWER

Your understanding of left associativity for applications is perfect.

Concerning abstractions, the fact that they "are right associative and extend as much as possible" means that:

  • a term $\lambda x . N_1 N_2 \dots N_n$ must be read as $\lambda x. (N_1 N_2 \dots N_n)$ ("abstractions extend as much as possible"); for instance, $\lambda x. M N P$ must be read as $\lambda x. (M N P)$, and not as $(\lambda x. (M N))P$;
  • a term $\lambda x_1 . \lambda x_2. \dots \lambda x_n. N$ must be read as $\lambda x_1. (\lambda x_2. \dots (\lambda x_n. N) \dots )$ ("abstractions are right associative"); for instance, $\lambda x. \lambda y. \lambda z. N$ must be read as $\lambda x. (\lambda y. (\lambda z. N))$; note that any other parenthesization, for instance $\lambda x. ((\lambda y.\lambda z). N)$, would not yield a term, because $(\lambda y. \lambda z.)$ is not a term.