# Predicato T di Kleene

In teoria della computabilità, il predicato T, studiato per la prima volta dal matematico Stephen Cole Kleene, è una particolare relazione ternaria sui numeri naturali, che viene utilizzata per rappresentare funzioni calcolabili all'interno delle teorie formali dell'aritmetica. Intuitivamente, il predicato T dice se un particolare programma per computer si fermerà se eseguito su un particolare input, e la corrispondente funzione U viene utilizzata per ottenere i risultati della computazione se il programma si ferma. Come per il teorema s$_{mn}$, la notazione originale usata da Kleene è diventata una terminologia standard per il concetto.

## Definizione

La definizione dipende da un'opportuna numerazione di Gödel che assegni numeri naturali a funzioni calcolabili (date come macchine di Turing). Questa numerazione deve essere tale per cui, dato un indice di una funzione calcolabile e un input per la funzione, sia possibile simulare effettivamente il calcolo della funzione su quell'input. Il predicato $T$ si ottiene formalizzando questa simulazione.
La relazione ternaria $T_{1}(e,i,x)$ prende tre numeri naturali come argomenti. $T_{1}(e,i,x)$ è vero se $x$ codifica una sequenza di passi di computazione della funzione calcolabile con indice $e$ eseguita sull'input $i$, e il programma si interrompe all'ultimo passo di questa sequenza. Ovvero:
* $T_{1}$ prima chiede se $x$ è il numero di Gödel di una sequenza finita $\langle x_{j}\rangle$ di configurazioni complete della macchina di Turing con indice $e$, che esegue un calcolo sull'input $i$.
* Se ciò è vero, $T_{1}$ chiede poi se questa sequenza inizia con la configurazione iniziale e se ogni successivo elemento della sequenza corrisponde a un singolo passo della macchina di Turing.
* Se ciò è vero, $T_{1}$ chiede infine se la sequenza $\langle x_{j}\rangle$ si conclude con la macchina in stato di terminazione.
Se tutte e tre le domande hanno una risposta affermativa, allora $T_{1}(e,i,x)$ è vero, altrimenti è falso.
Il predicato $T_{1}$ è ricorsivo primitivo nel senso che esiste una funzione ricorsiva primitiva che, dati gli input per il predicato, determina correttamente il valore di verità del predicato su quegli input.
Esiste una corrispondente funzione ricorsiva primitiva $U$ tale che, se $T_{1}(e,i,x)$ è vero, allora $U(x)$ restituisce l'output della funzione con indice $e$ calcolata sull'input $i$.
Poiché il formalismo di Kleene assegna un numero di input a ciascuna funzione, il predicato $T_{1}$ può essere utilizzato solo per funzioni unarie. Esistono predicati aggiuntivi per funzioni con più input; la relazione
    $T_{k}(e,i_{1},\dots ,i_{k},x)$
è vera se $x$ codifica una computazione terminante della funzione con indice $e$ sugli ingressi $i_{1},\dots ,i_{k}$.
Come $T_{1}$, tutti i predicati $T_{k}$ sono primitivi ricorsivi. Per questo motivo, qualsiasi teoria dell'aritmetica che sia in grado di rappresentare ogni funzione ricorsiva primitiva è in grado di rappresentare $T$ e $U$. Esempi di tali teorie aritmetiche includono l'aritmetica di Robinson e teorie più forti come l'aritmetica di Peano.

## Teorema della forma normale

I predicati $T_{k}$ possono essere usati per ottenere il teorema della forma normale di Kleene per funzioni calcolabili (Soare 1987, p. 15; Kleene 1943, pp. 52—53). Ciò afferma che esiste una funzione ricorsiva primitiva fissa $U$ tale per cui una funzione $f:\mathbb {N} ^{k}\rightarrow \mathbb {N}$ è calcolabile se e solo se esiste un numero $e$ tale che per ogni $n_{1},\ldots ,n_{k}$ si ha
    $f(n_{1},\ldots ,n_{k})\simeq U(\mu x\,T_{k}(e,n_{1},\ldots ,n_{k},x))$
dove μ è l'operatore di minimizzazione ($\mu x\,\phi (x)$ è il più piccolo numero naturale per il quale $\phi (x)$ è vero) e $\simeq$ è vero se entrambi i membri sono indefiniti o se sono entrambi uguali. Per il teorema, la definizione di ogni funzione ricorsiva generale $f$ può essere riscritta in una forma normale tale che l'operatore μ sia usato una sola volta, come argomento dell'occorrenza più esterna di $U$, che è indipendente dalla funzione calcolabile $f$.

## Gerarchia aritmetica

Oltre a codificare la computabilità, il predicato T può essere utilizzato per generare insiemi Turing-completi nella gerarchia aritmetica. In particolare, l'insieme
    $K=\{e\mid \exists xT_{1}(e,0,x)\}$
che è dello stesso grado di Turing del problema dell'arresto, è una relazione unaria $\Sigma _{1}^{0}$-completa (Soare 1987, pp. 28, 41). Più in generale, il set
    $K_{n+1}=\{\langle e,a_{1},\ldots ,a_{n}\rangle \mid \exists xT_{n}(e,a_{1},\ldots ,a_{n},x)\}$
è un predicato (n+1)-ario $\Sigma _{1}^{0}$-completo. Così, una volta ottenuta una rappresentazione del predicato T$_n$ in una teoria dell'aritmetica, una rappresentazione di un predicato $\Sigma _{1}^{0}$-completo può essere ottenuta da essa.
Questa costruzione può essere estesa più in alto nella gerarchia aritmetica, come nel teorema di Post (confronta Hinman 2005, p. 397). Ad esempio, se un insieme $A\subseteq \mathbb {N} ^{k+1}$ è $\Sigma _{n}^{0}$-completo, allora l'insieme
    $\{\langle a_{1},\ldots ,a_{k}\rangle \mid \forall x(\langle a_{1},\ldots ,a_{k},x)\in A)\}$
è $\Pi _{n+1}^{0}$-completo.