Jump to content

Lambda-mu calculus: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
AnomieBOT (talk | contribs)
m Dating maintenance tags: {{Cleanup HTML}}
No edit summary
Line 1: Line 1:
In [[mathematical logic]] and [[computer science]], the '''lambda-mu calculus''' is an extension of the [[lambda calculus]] introduced by M. Parigot.<ref>{{cite book |url=http://www.springerlink.com/content/5x552812m8150709/ |title=λμ-Calculus: An algorithmic interpretation of classical natural deduction. |author=Michel Parigot |series=Lecture Notes in Computer Science |volume=624| pages=190-201 |year=1992}}</ref> It introduces two new operators: the μ operator (which is completely different both from the [[μ operator]] found in [[computability theory]] and from the μ operator of [[modal μ-calculus]]) and the bracket operator. [[Proof theory|Proof-theoretically]], it provides a well-behaved formulation of [[Natural deduction#Classical and modal logics|classical natural deduction]].
{{cleanup HTML|date=February 2019}}
In [[mathematical logic]] and [[computer science]], the '''lambda-mu calculus''' is an extension of the [[lambda calculus]] introduced by M. Parigot.<ref>Michel Parigot. [http://www.springerlink.com/content/5x552812m8150709/ ''λμ-Calculus: An algorithmic interpretation of classical natural deduction.''] ''Lecture Notes in Computer Science'', Volume '''624''', pages 190-201, 1992.</ref> It introduces two new operators: the μ operator (which is completely different both from the [[μ operator]] found in [[computability theory]] and from the μ operator of [[modal μ-calculus]]) and the bracket operator. [[Proof theory|Proof-theoretically]], it provides a well-behaved formulation of [[Natural deduction#Classical and modal logics|classical natural deduction]].


One of the main goals of this extended calculus is to be able to describe expressions corresponding to theorems in [[classical logic]]. According to the [[Curry&ndash;Howard isomorphism]], lambda calculus on its own can express theorems in [[intuitionistic logic]] only, and several classical logical theorems can't be written at all. However with these new operators one is able to write terms that have the type of, for example, [[Peirce's law]].
One of the main goals of this extended calculus is to be able to describe expressions corresponding to theorems in [[classical logic]]. According to the [[Curry&ndash;Howard isomorphism]], lambda calculus on its own can express theorems in [[intuitionistic logic]] only, and several classical logical theorems can't be written at all. However with these new operators one is able to write terms that have the type of, for example, [[Peirce's law]].
Line 9: Line 8:


We can augment the definition of a lambda expression to gain one in the context of lambda-mu calculus. The three main expressions found in lambda calculus are as follows:
We can augment the definition of a lambda expression to gain one in the context of lambda-mu calculus. The three main expressions found in lambda calculus are as follows:
#<tt>V</tt>, a ''variable'', where <tt>V</tt> is any [[identifier]].
#<tt>V</tt>, a ''variable'', where ''V'' is any [[identifier]].
#<tt>λV.E</tt>, an ''abstraction'', where ''V'' is any identifier and ''E'' is any lambda expression.
#<tt>λV.E</tt>, an ''abstraction'', where ''V'' is any identifier and ''E'' is any lambda expression.
#<tt>(E E&prime;)</tt>, an ''application'', where <tt>E</tt> and <tt>E&prime;</tt> are any lambda expressions.
#<tt>(E E&prime;)</tt>, an ''application'', where ''E'' and ''E'''; are any lambda expressions.


For details, see the [[lambda calculus#Formal definition|corresponding article]].
For details, see the [[lambda calculus#Formal definition|corresponding article]].


In addition to the traditional λ-variables, the lambda-mu calculus includes a distinct set of μ-variables. These μ-variables can be used to ''name'' or ''freeze'' arbitrary subterms, allowing us to later abstract on those names. The set of terms contains ''unnamed'' (all traditional lambda expressions are of this kind) and ''named'' terms. The terms that are added by the lambda-mu calculus are of the form:
In addition to the traditional λ-variables, the lambda-mu calculus includes a distinct set of μ-variables. These μ-variables can be used to ''name'' or ''freeze'' arbitrary subterms, allowing us to later abstract on those names. The set of terms contains ''unnamed'' (all traditional lambda expressions are of this kind) and ''named'' terms. The terms that are added by the lambda-mu calculus are of the form:
#<tt>[α]t</tt> is a named term, where <tt>α</tt> is a μ-variable and <tt>t</tt> is an unnamed term.
#<tt>[α]t</tt> is a named term, where ''α'' is a μ-variable and ''t'' is an unnamed term.
#<tt>(μ α. E)</tt> is an unnamed term, where <tt>α</tt> is a μ-variable and <tt>E</tt> is a named term.
#<tt>(μ α. E)</tt> is an unnamed term, where ''α'' is a μ-variable and ''E'' is a named term.


==Reduction==
==Reduction==

Revision as of 12:35, 30 June 2019

In mathematical logic and computer science, the lambda-mu calculus is an extension of the lambda calculus introduced by M. Parigot.[1] It introduces two new operators: the μ operator (which is completely different both from the μ operator found in computability theory and from the μ operator of modal μ-calculus) and the bracket operator. Proof-theoretically, it provides a well-behaved formulation of classical natural deduction.

One of the main goals of this extended calculus is to be able to describe expressions corresponding to theorems in classical logic. According to the Curry–Howard isomorphism, lambda calculus on its own can express theorems in intuitionistic logic only, and several classical logical theorems can't be written at all. However with these new operators one is able to write terms that have the type of, for example, Peirce's law.

Semantically these operators correspond to continuations, found in some functional programming languages.

Formal definition

We can augment the definition of a lambda expression to gain one in the context of lambda-mu calculus. The three main expressions found in lambda calculus are as follows:

  1. V, a variable, where V is any identifier.
  2. λV.E, an abstraction, where V is any identifier and E is any lambda expression.
  3. (E E′), an application, where E and E'; are any lambda expressions.

For details, see the corresponding article.

In addition to the traditional λ-variables, the lambda-mu calculus includes a distinct set of μ-variables. These μ-variables can be used to name or freeze arbitrary subterms, allowing us to later abstract on those names. The set of terms contains unnamed (all traditional lambda expressions are of this kind) and named terms. The terms that are added by the lambda-mu calculus are of the form:

  1. [α]t is a named term, where α is a μ-variable and t is an unnamed term.
  2. (μ α. E) is an unnamed term, where α is a μ-variable and E is a named term.

Reduction

The basic reduction rules used in the lambda-mu calculus are the following:

logical reduction
structural reduction
renaming
the equivalent of η-reduction
, for α not freely occurring in u

These rules cause the calculus to be confluent. Further reduction rules could be added to provide us with a stronger notion of normal form, though this would be at the expense of confluence.

See also

References

  1. ^ Michel Parigot (1992). λμ-Calculus: An algorithmic interpretation of classical natural deduction. Lecture Notes in Computer Science. Vol. 624. pp. 190–201.

External links

  • Lambda-mu relevant discussion on Lambda the Ultimate.