Combinatori per le funzioni ricorsive primitive


Risposte:


17

Sì, ma devi considerare combinatori tipizzati. Cioè, devi dare a e K i seguenti schemi di tipi: K : A B A S : ( A B C ) ( A B ) ( A C ) dove A , B e CSK

K:UNBUNS:(UNBC)(UNB)(UNC)
UN,BC sono meta-variabili che possono essere istanziate su qualsiasi tipo concreto ad ogni utilizzo.

Quindi, si desidera aggiungere il tipo di numeri naturali alla lingua dei tipi e aggiungere i seguenti combinatori: z : N s u c c : NN i t e r : N( NN ) NNN

z:NSucc:NNioter:N(NN)NN

Le regole di uguaglianza per le aggiunte sono:

ioteriofz=ioioteriof(Succe)=f(ioteriofe)

ioter:UN(UNUN)NUN
ioter

ioter

pred'=λK.ioter(z,z)(λ(n,n').(Succn,n))Kpred=λK.Snd(pred'K)

NN×N


Quindi questo è inferiore a quello di Turing in virtù della restrizione ai combinatori tipizzati? Le variabili di tipo (ricorsivamente) possono indicare funzioni su variabili di tipo (ad es. A = D -> E per alcuni tipi D ed E)?
Nietzschean

2
SK

Neel, grazie. Avrei ragione nel pensare che è possibile rappresentare z, succ e iter in termini di S e K tramite la codifica numerica della Chiesa?
Nietzschean

00(SuccX)X

@Xoff: la funzione precedente ha una ben nota definizione di tempo lineare in termini di iter. Questo potrebbe essere l'oggetto di una domanda su cs.stackexchange.com ...
cody
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.