Ist der Satz von smn dasselbe Konzept wie das Curry?

12

Ich studiere den smn-Satz und das Konzept erinnerte mich an Curry.

Aus dem Wikipedia-Artikel über den Satz von smn :

Der Satz besagt, dass es für eine gegebene Programmiersprache und positive ganze Zahlen m und n einen bestimmten Algorithmus gibt, der den Quellcode eines Programms mit m + n freien Variablen zusammen mit m Werten als Eingabe akzeptiert. Dieser Algorithmus generiert einen Quellcode, der die Werte für die ersten m freien Variablen effektiv ersetzt und den Rest der Variablen frei lässt.

Aus einem Artikel über Curry :

Intuitiv sagt Currying: "Wenn Sie einige Argumente korrigieren, erhalten Sie eine Funktion der verbleibenden Argumente."

Scheint mir die gleiche Idee zu sein. Der einzige Grund, warum ich mir nicht sicher bin, ist, dass die Materialien, auf die ich bei smn gestoßen bin, kein Curry erwähnen (und umgekehrt). Deshalb wollte ich es konsultieren, um sicherzustellen, dass ich es tatsächlich bekomme.

Emanek
quelle
Tatsächlich. Einige Berechenbarkeitsnachweise haben einen lambdischen Geschmack. Der smn-Satz erlaubt sehr grob vorzutäuschen, dass Indizes rekursiver Funktionen Lambda-Terme sind, so dass wir mit das informelle g ( x ) = # λ y herstellen können . ϕ i ( x , y ) und behaupten, dass g primitiv rekursiv ist. Sogar der zweite Beweis des Rekursionssatzes (der smn ausnutzt) ist Churchs verdeckter Fixpunktkombinator, der hinter s ( ) versteckt ist.ϕi(,)g(x)=#λy.ϕi(x,y)gs()Verwendet. Der entscheidende Punkt hierbei ist, dass wir , selbst wenn die Aufzählung definiert ist, die beispielsweise TMs (oder Java oder ...) auflistet, immer noch so tun können, als hätten wir Lambdas! ϕi
Chi
Nun, smn gibt eine existenzielle Aussage ab, während die Existenz einer Curry-Funktion den "Compiler" liefert . Aber die Idee ist dieselbe.
Raphael

Antworten:

15

Ja, es ist das gleiche.

Currying ist ein Konzept aus Kalkül. Es ist eine Transformation zwischen A × B C und A ( B C ) . Stellen Sie sich dies als "Wenn wir eine Funktion von zwei Argumenten vom Typ A und B haben , können wir das erste Argument (vom Typ A ) korrigieren und erhalten eine Funktion des verbleibenden Arguments (vom Typ B )". Tatsächlich ist diese Transformation ein Isomorphismus. Dies wird mathematisch präzisiert durch mathematische Modelle des (typisierten) λ- Kalküls, die kartesische geschlossene Kategorien sind .λEIN×B.C.EIN(B.C.)EINB.EINB.λ

Es gibt eine Kategorie von nummerierten Sätzen. Eine nummerierte Menge ist ein Paar wobei A eine Menge ist und ν A : NA eine partielle Surjektion ist, dh eine Abbildung von Zahlen auf A , die auch undefiniert sein kann. Wenn ν A ( n ) = x ist, dann sagen wir, dass n φ von teilweise berechenbaren Funktionen ist, so dass φ n ( k ) die Zahl ist, die durch die von n codierte teilweise berechenbare Funktion berechnet wird(EIN,νEIN)EINνEIN::N.EINEINνEIN(n)=xn ein Code von . In der Berechenbarkeitstheorie gibt es viele Beispiele. Immer wenn wir Informationen mit einer Nummer codieren, erhalten wir einen nummerierten Satz. Zum Beispiel gibt es eine Standardnummerierungxφφn(k)n wenn sie auf angewendet wird . (Das Ergebnis ist möglicherweise undefiniert.)k

Ein Morphismus nummerierter Mengen ist eine realisierte Abbildung , was bedeutet, dass n N existiert, so dass f ( ν A ( k ) ) = ν B ( φ n ( k ) ) für alle k in der Domäne von ν Af::(EIN,νEIN)(B.,νB.)nN.f(νEIN(k))=νB.(φn(k))kνEIN . Das sieht kompliziert aus, aber alles, was es sagt, ist, dass φntut, um zu codieren, was mit Elementen macht. Es ist die mathematische Art zu sagen, dass "Programm ϕ n die Funktion f implementiert ".fϕnf

Hier ist die Pointe: Die Kategorie der nummerierten Sätze ist kartesisch geschlossen. Wir können daher den typisierten Kalkül darin interpretieren und fragen, welches Programm die Currying-Operation implementiert. Die Antwort lautet: das vom smn-Theorem gegebene Programm.λ

Andrej Bauer
quelle
Interessant. Ist diese Kategorie eng mit ? ν A scheint einen PER zu induzieren. P.E.R.(EIN)νEIN
Chi
1
Ja, die beiden Kategorien sind äquivalent, und die dritte äquivalente Version ist die von bescheidenen Mengen (suchen Sie nach "bescheidenen Mengen und Baugruppen").
Andrej Bauer