Gibt es eine Turing-vollständige typisierte Lambda-Rechnung?

Antworten:

37

Ja sicher. Viele typisierte Lambda-Kalküle akzeptieren konstruktionsbedingt nur stark normalisierende Terme, sodass sie keine willkürlichen Berechnungen ausdrücken können. Aber ein Typensystem kann alles sein, was Sie wollen. Machen Sie es breit genug, und Sie können alle deterministischen Berechnungen ausdrücken.

Ein triviales Typensystem, das ein Turing-vollständiges Fragment des Lambda-Kalküls umfasst, akzeptiert jeden Ausdruck als gut typisiert (mit einem Top-Typ ).

ΓM:

Praktischerweise haben statisch typisierte funktionale Programmiersprachen im Kern eine typisierte Lambda-Rechnung, die es ermöglicht, einen Fixpunkt-Kombinator auch gut zu typisieren. Beginnen Sie zum Beispiel mit dem einfach eingegebenen Lambda-Kalkül (oder dem ML- Typensystem oder dem System F oder einem anderen Typensystem Ihrer Wahl) und fügen Sie eine Regel hinzu, die einen Fixpunkt-Kombinator wie gut geschrieben. Γ f : T TY.=λf.(λx.f(xx))(λx.f(xx)) Die oben dargestellten Regeln sind ziemlich ungeschickt, da sie Begriffe wieY enthalten

Γf:TTΓY.f:TΓf:TTΓ(λx.f(xx))(λx.f(xx)):T
gut typisiert, obwohl ihre Bestandteile nicht gut typisiert sind - sie sind nicht vollständig kompositorisch. Ein einfacher Fix besteht darin, einen Fixpunkt-Kombinator als Sprachkonstante hinzuzufügen und eine Delta-Regel dafür bereitzustellen. dann ist es eine einfache Sache, ein Typensystem und eine Reduktionssemantik mitTypbewahrung zu haben. Sie gelangen aus dem reinen Lambda-Kalkül in den Bereich des Lambda-Kalküls mit Konstanten. Y.f
ΓFix:(TT)TFixff(Fixf)

Ein interessantes Typensystem, das sich an die reine Lambda-Rechnung hält, ist die Lambda-Rechnung mit Schnitttypen.

ΓM:T1ΓM:T2ΓM:T1T2(ich)ΓM:(ich)

Schnittpunkttypen haben interessante Eigenschaften in Bezug auf die Normalisierung:

  • ich

In der Beschreibung von Lambda-Termen mit Vereinigungstypen erfahren Sie, warum Kreuzungstypen einen so bemerkenswerten Umfang haben.

Sie haben also ein Typensystem, das eine Turing-vollständige Sprache definiert (da jeder Begriff gut typisiert ist), und eine einfache Charakterisierung von Abschlussberechnungen. Da dieses Typensystem die Normalisierung kennzeichnet, ist es natürlich nicht entscheidbar.

(ich)(ich)ich

Gilles 'SO - hör auf böse zu sein'
quelle