Kombinatoren für die primitiven rekursiven Funktionen


Antworten:


17

Ja, aber Sie müssen typisierte Kombinatoren berücksichtigen. Das heißt, Sie müssen und K die folgenden Typschemata geben: K : A → B → A S : ( A → B → C ) → ( A → B ) → ( A → C ) wobei A , B und C sind Metavariablen, die bei jeder Verwendung zu einem beliebigen konkreten Typ instanziiert werden können.SK

K:A→B→AS:(A→B→C)→(A→B)→(A→C)
A,BC

Dann wollen Sie den Typ hinzufügen der natürlichen Zahlen auf die Sprache der Typen und fügen Sie die folgenden combinators: z : N s u c c : N → N i t e r : N → ( N → N ) → N → NN

z:Nsucc:N→Niter:N→(N→N)→N→N

Die Gleichheitsregeln für die Zusätze sind:

iterifz=iiterif(succe)=f(iterife)

iter:A→(A→A)→N→A
iter

iter

pred′=λk.iter(z,z)(λ(n,n′).(succn,n))kpred=λk.snd(pred′k)

N≃N×N


Das ist also weniger als Turing-complete aufgrund der Beschränkung auf typisierte Kombinatoren? Können die Typvariablen (rekursiv) Funktionen über Typvariablen bezeichnen (z. B. A = D -> E für einige Typen D und E)?
— NietzscheanAI

2
SK

Neel, danke. Würde ich zu Recht annehmen, dass es möglich ist, z, succ und iter in Bezug auf S und K über die Zahlencodierung der Kirche darzustellen?
— NietzscheanAI

0↦0(succx)↦x

@Xoff: Die Vorgängerfunktion hat eine bekannte lineare Zeitdefinition in Bezug auf iter. Dies könnte Gegenstand einer Frage auf cs.stackexchange.com sein ...
— cody
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.