Questions tagged [lambda-calculus]

For questions on the formal system in mathematical logic for expressing computation using abstract notions of functions and combining them through binding and substitution.

Lambda calculus (also written as λ-calculus) is a formal system in mathematical and theoretical for expressing computation based on function abstraction and application using variable binding and substitution. Its namesake, the Greek letter lambda (λ), is used in lambda expressions and lambda terms to denote binding a variable in a function.

It was first introduced by mathematician Alonzo Church in the 1930s as part of his research of the of mathematics. The original system was shown to be logically inconsistent because of the Kleene–Rosser paradox. Subsequently, in 1936 Church isolated and published just the portion relevant to computation, what is now called the untyped lambda calculus.

Untyped lambda calculus is Turing complete, that is, it is a universal model of computation that can be used to simulate any (see ). It may be used to model booleans, arithmetic, data structures and recursion.

Lambda calculus may be untyped or typed. In typed lambda calculus (see ), functions can be applied only if they are capable of accepting the given input's "type" of data. Typed lambda calculi are weaker than the untyped lambda calculus, in the sense that typed lambda calculi can express less than the untyped calculus can, but on the other hand typed lambda calculi allow more things to be proved; in the simply typed lambda calculus it is for example a theorem that every evaluation strategy terminates for every simply typed lambda-term, whereas evaluation of untyped lambda-terms need not terminate. One reason there are many different typed lambda calculi has been the desire to do more (of what the untyped calculus can do) without giving up on being able to prove strong theorems about the calculus.

Typed lambda calculi are closely related to mathematical and via the Curry–Howard isomorphism: types correspond to logic formulas, lambda-terms correspond to derivations in a logic system (depending on the kind of typed lambda calculus) and computation steps in the lambda calculus correspond to normalization (i.e. cut-elimination) steps for derivations.

Lambda calculus has applications in many different areas in mathematics, philosophy, linguistics, and computer science. Lambda calculus has played an important role in the development of the theory of languages, since functional programming languages implement the lambda calculus. Lambda calculus also is a current research topic in .

655 questions
3
votes
0 answers

Is there an algorithm to separate lambda calculus terms using Böhm's theorem?

Böhm's theorem says that given lambda terms $r$ and $s$ with non-equivalent normal forms, there exists $\vec{a}$ terms such that $r\vec{a}=t$ and $s\vec{a}=f$. I'm finding it hard to determine what those $\vec{a}$ are though. Even separating simple…
Thomas Ahle
  • 4,612
3
votes
1 answer

Beta normal form for the following expression

I was recently reading "Lambda calculus and combinators" by J.R. Hindley and J.P Seldin. In the book at some point we encounter the following reductions : $(\lambda x.x)v$ $(\lambda x.xxy)(\lambda x.xxy)$ Now in the first case we get : …
MFranc
  • 213
3
votes
2 answers

Lambda Calculus: Reduce $(\lambda x. (\lambda y. x \ y) \ x) \ (\lambda z.p)$

According to the answer sheet it is supposed to reduce to $p$, but I dont know how. This is what I do $$(\lambda x. (\lambda y. x \ y) \ x) \ (\lambda z.p)$$ I replace $x$ with $(\lambda z.p)$ $$\rightarrow (\lambda y. (\lambda z.p) \ y) \ (\lambda…
3
votes
1 answer

(x. (y. y)) (a. (b.a)) beta reduction

I've came across an example and I'm not quite sure on how the solution was met after performing beta-reduction on the following expression. It doesn't show any of the steps. Any help is appreciated! (x. (y. y)) (a. (b.a)) (y. y)
bldzrr
  • 51
3
votes
1 answer

what are the 5 simplest lambda calculus expresions

I'm struggling to learn lambda Calculus. I think what might really help is to see the simplest functions that you can create in lambda calculus and how they might be combined to make more complex functions. For instance I know about the Identity…
3
votes
0 answers

Lambda Calculus: Evaluating Functions

I have to evaluate two lambda functions. I have done so and will explain how I did. I'm wondering that if it is noticed that I made a mistake someone might say so. I do not want answers; but hints, tips, suggestions, etc. $[[\lambda n.\lambda…
Rusty
  • 245
3
votes
1 answer

Are common lambda calculus notation conventions sloppy?

I am supposing that the definition of a $\lambda$-term $(\Lambda)$ in the book 'Type Theory and Formal Proof: An Introduction' is a common one. In short grammar we have, with $V$ being a variable: $$ \Lambda: V|(\Lambda\Lambda)|(\lambda V. \Lambda)…
jadn
  • 459
3
votes
1 answer

How come Lambda Calculus is a calculus?

Possible Duplicate: What do Algebra and Calculus mean? Where are the numbers? derivatives? integrals? limits? If I understand it correctly, lambda calculus is all about symbols. There are no numbers or operators like addition or multiplications…
3
votes
1 answer

Is the combinator $\mathbf{SI}$ typable (à la Curry)?

Consider the combinators $\mathbf{S} \equiv \lambda xyz . xz(yz)$, $\mathbf{I} = \lambda w.w$ and their application $\mathbf{SI}$. Is this term typable à la Curry? From what I did so far, it seems it is not: I tried to construct a deduction tree…
essay
  • 1,135
3
votes
0 answers

Find recursively enumerable theory $\mathcal{T}_3$ such that $\mathcal{T}_1 \subsetneq \mathcal{T}_3\subsetneq \mathcal{T}_2$.

I am trying to solve the following problem: Let $\mathcal{T}_1, \mathcal{T}_2$ be recursively enumerable $\lambda$-theories such that $\mathcal{T}_1 \subsetneq \mathcal{T}_2$. Show that there is a recursively enumerable $\lambda$-theory …
essay
  • 1,135
3
votes
1 answer

Does $\beta \eta$ reduction preserve free variables?

It seems to be a know fact that if $M$, $N$ are $\lambda$-terms, and $M \twoheadrightarrow_{\beta\eta} N$, then $fv(N) \subseteq fv(M)$. My problem is: is it true that if $M \twoheadrightarrow_{\beta\eta} N$ then $fv(N) = fv(M)$?
essay
  • 1,135
2
votes
1 answer

Formulate boolean logic in lambda calculus

I want to formulate the boolean operator $\Leftrightarrow$ in lambda calculus. I know that the negation is formulated as $\lambda x.x F T$ and the conjugation is formulated as $\lambda x y.x y F$ as well as that $\mathtt{true} = \lambda x y.x$ and…
2
votes
1 answer

Lambda Calculus: Reducing to Normal Form

I'm having trouble understanding how to reduce lambda terms to normal form. We just got assigned a sheet with a few problems to reduce, and the only helpful thing I've found is the following example in the…
2
votes
1 answer

Lambda Calculus: beta-reduction and predecessor function

I'm taking one of my last graduate classes but have been struggling with some reductions in lambda calculus. On our last assignment one of the problems was the following: This question is on defining the predecessor function $pred$ on the Church…
dfasdfsda
  • 35
  • 1
  • 6
2
votes
1 answer

Checking equivalence of lambda terms

I was trying to develop an alternative to the Church encoding for the predecessor function for Church numerals. What I came up with was: $$pred := λn.first (n (λp.second (p)(pair (succ (first (p))) true) (pair (0 )(true))) (pair (0 )(false)))…
Soham Saha
  • 1,204
1 2
3
15 16