401 PREDICATI RICORSIVI PRIMITIVI Corso di Informatica Teorica - modulo 2 Prof. Settimo Termini 1
Breve richiamo Un predicato su un insieme S è una funzione totale P su S tale che a S si ha: P(a) = VERO oppure P(a) = FALSO essendo VERO e FALSO una coppia di oggetti distinti chiamati valori di verità. Per comodità identifichiamo i valori di verità con i due numeri 1 e 0: VERO = 1 FALSO = 0 Un predicato è anche chiamato funzione a valori booleani in virtù del fatto che i due valori di verità formano una semplice algebra di Boole. 2
Breve richiamo I predicati su un insieme S sono di solito specificati da espressioni che divengono enunciati, o veri e falsi, quando le variabili nell'espressione sono rimpiazzati da simboli che designano elementi finali di S. E ESEMPIO x < 5 specifica il predicato P (x) = 1 se x =1, 2, 3, 4 0 altrimenti 3
Breve richiamo Dati due predicati P e Q su S esistono anche i predicati: P che è vero quando P è falso e viceversa. P & Q che è vero quando entrambi P e Q sono veri, falso in tutti gli altri casi. P Q che è vero quando almeno uno dei due predicati P e Q è vero e falso quando sono entrambi falsi. 4
Breve richiamo Possiamo definire delle operazioni sui valori di verità: P Q PQ P_Q P P 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 0 5
Connessione tra insiemi e predicati Dato un predicato P su S, esiste un corrispondente sottoinsieme R di S che è l'insieme di tutti gli elementi a di S per cui è P(a) = 1. R = {a 2 S P (a)} Viceversa dato un sottoinsieme R di S, l'espressione un predicato su S cioè il predicato P seguente: x 2 R permette di definire P (x) = 1 se x 2 R 0 se x 62 R 6
Quantificatori limitati e non Consideriamo predicati m-ari su N. Sia P(t, x1,..., xn) un tale predicato e consideriamo il predicato seguente: ( ) P (0,x 1,...,x n ) _ _ P (y, x 1,...,x n ) Il predicato (*) è vero nel caso in cui esiste almeno un valore t y per cui P(t, x1,..., xn) è vero. Scriviamo allora (*) come: (9t) appley P (t, x 1,...,x n ) Dove (9t) appley si chiama quantificatore esistenziale limitato. 7
Quantificatori limitati e non Analogamente (8t) appley P (t, x 1,...,x n ) () P (0,x 1,...,x n )& & P (y, x 1,...,x n ) Dove (8t) appley si chiama quantificatore universale limitato. Togliendo il limite y si ottengono ovviamente i ben noti quantificatori: (universale) (esistenziale) 8
Predicati ricorsivi primitivi (Ricordiamo quello che abbiamo appena detto e cioè che i predicati sono semplicemente funzioni totali che assumono solo i valori 0 e 1 identificati rispettivamente con Falso e Vero) Sia adesso C una classe PRC (chiusa in modo ricorsivo primitivo). P PROPOSIZIONE Se P e Q sono predicati che appartengono a C allora lo stesso vale per P, P Q, P & Q. P era stato definito come vero proprio quando P è falso e viceversa. Nella nostra lista di predicati ricorsivi primitivi esiste la 1 se x =0 (0) = 1 (x) = 0 se x 6= 0 definita da (t + 1) = 0 quindi P = α(p) C. 9
Continuiamo la nostra dimostrazione: PREDICATI RICORSIVI PRIMITIVI Abbiamo poi che P&Q = P Q e quindi ovviamente P&Q C. Infine la legge di De Morgan P Q= ( P & Q) assieme ai due risultati precedenti ci permette di concludere che P Q C. Ovviamente si ha che: Corollario: Se P e Q sono - in particolare - predicati ricorsivi primitivi allora lo sono anche P, P Q, P &Q. 10
Proposizione: Sia C una classe PRC. Le funzioni g, h ed il predicato P appartengono a C e sia: g(x1,...,x f(x 1,...,x n )= n ) se P (x 1,...,x n ) h(x 1,...,x n ) altrimenti allora f C. 11
Predicati ricorsivi primitivi Dimostrazione: ovvia. Segue dal fatto di potere scrivere f(x 1,...,x n )=g(x 1,...,x n ) P (x 1,...,x n )+h(x 1,...,x n ) (P (x 1,...,x n )). Notare la somiglianza tra la f e l enunciato if... then... else di alcuni linguaggi di programmazione. 12
Predicati ricorsivi primitivi Proposizione: Sia C una classe PRC. Se f(t, x 1,..., xn) appartiene a C allora vi appartiene anche la funzione: g(y, x 1,...,x n )= yx t=0 f(t, x 1,...,x n ) 13
Predicati ricorsivi primitivi Dimostrazione: Scriviamo g per vari valori di y (poniamo x al posto di x 1,..., xn) g(0,x)= g(1,x)= g(2,x)=. g(t +1,x)= in generale avremo che: f(0,x) f(0,x)+f(1,x) = g(0,x)+f(1,x) f(0,x)+f(1,x) {z } +f(2,x) = g(1,x)+f(1,x) g(t, x)+f(t +1,x) 14
Predicati ricorsivi primitivi Possiamo quindi scrivere le equazioni di ricorsione: g(0,x)=f(0,x) g(t +1,x)=g(t, x)+f(t +1,x) che ci dimostrano l appartenenza di g a C sotto l ipotesi che f C e grazie alla ricorsività primitiva di +. In modo analogo si può dimostrare la Proposizione: Sia C una classe PRC. Se f(t,x1,...,xn) C allora vi appartiene anche yy h(y, x 1,...,x n )= f(t, x 1,...,x n ) t=0 15
Predicati ricorsivi primitivi Dimostrazione: Basta esprimere h mediante le equazioni di ricorsione h(0,x1,...,x n )=f(0,x 1,...,x n ) h(t +1,x 1,...,x n )=h(t, x 1,...,x n ) f(0,x 1,...,x n ) e ricordare che il prodotto è ricorsivo primitivo. Come prima si ha infatti che: h(0,x)= f(0,x) h(1,x)= h(2,x)= e, in generale, h(t +1,x)= f(0,x) f(1,x) (= h(0,x) f(1,x) f(0,x) f(1,x) {z } f(2,x) = h(1,x) f(1,x) 16 h(t, x) f(t +1,x)
Predicati ricorsivi primitivi Proposizione: Se il predicato P(t, x 1,..., xn) appartiene ad una qualche classe PRC C, allora vi appartengono anche i predicati (8t) appley P (t, x 1,...,x n )e(9t) appley P (t, x 1,...,x n ) Dimostrazione: Consideriamo i due casi separatamente (8t) appley Ricordiamo come si esprime il quantificatore limitato (x 1,...,x n! x) (8t) appley P (t, x 1,...,x n ) () P (0,x)& P (1,x)& & P (y, x) sappiamo che si può scrivere come: yy che è P (t, x) t=0 P (0,x) P (1,x)... P (y, x) 17
Predicati ricorsivi primitivi Abbiamo che: " y # Y (8t) appley P (t, x) èvera () P (t, x) D altro canto, dalla proposizione precedentemente dimostrata sappiamo che yy P (t, x) èunelementodic se lo è P (t, x) t=0 ( t) y la dimostrazione di questo caso procede in maniera analoga. t=0 =1 C.V.D. 18
Predicati ricorsivi primitivi Abbiamo che: (9t) appley P (t, x 1,...,x n ) () P (0,x) _ P (1,x) _ _ P (y, x) () " y X Il primo termine a sinistra ricchiede l esistenza di almeno un valore di t y per il quale P(t,x) sia vera e questo corrisponde al fatto che la somma a destra sia 0. Ricordiamo ancora la proposizione precedente che ci assicurava l appartenenza a C di una Σ i cui addendi appartenevano alla classe e possiamo concludere che (9t) appley P (t, x) 2 C t=0 P (t, x) # 6= 0 19
Che uso possiamo fare di queste proposizioni? Possiamo usarle per dimostrare qualche proprietà che ci sembra interessante o che ci potrà servire in seguito (o entrambe le cose). Ad esempio per dimostrare che sono ricorsivi primitivi i predicati che seguono: - essere divisore di - essere numero primo 20
Che uso facciamo di queste proposizioni? Ad esempio li usiamo per dimostrare la ricorsività primitiva di: y x : y è un divisore di x Possiamo esprimere tale predicato come: e quindi concludere che y x è ricorsivo primitivo (sulla base della proposizione precedente) y x, (9t) applex (y t = x) Primo(x): x è primo se è maggiore di 1 e ammette come divisori solo 1 e se stesso Primo(x), x>1&(8t) apple x {t =1_ t = x_ (t x)} L espressione precedente ci permette di concludere che x è primo è un predicato ricorsivo primitivo. 21
Possiamo usare le proposizione in questione per fare altro? Se P (t.x 1,...,x n )appartieneadunaclassec PRC data, allora appartiene a C anche la funzione g(y, x 1,...,x n )= y X u=0 uy t=0 (P (t, x 1,...,x n )) Basta applicare due volte la proposizione precedente (una volta per la somma ed una per il prodotto) e ricordare che è r i c o r s i v a p r i m i t i v a. Chiediamoci cosa fa g. Ammettiamo che esista un valore di t apple y per cui il pred- 22
Ammettiamo che esista un valore di t apple y per cui il predicato P(t,x) siaveroesiat 0 il più piccolo di tali valori se ne esiste più di uno. Cioè ammettiamo che sia: P (t, x) =0pert<t 0 e P (t 0,x)=1 23
Poiché applicato ad un predicato inverte i valori di verità avremo che: uy 8 < 1seu<t 0 t=0 (P (t, x)) = : 0seu t 0 equindidiconseguenza g(y, x) = X 1=t 0 u<t 0 La funzione g(y, x) dàilpiùpiccolovaloreditperilquale P (t, x) èvero. 8 24
Usiamo ora la funzione g per definire la nuova funzione: min tappley P (t, x) = 8 < : g(y, x) se(8t) appley P (t, x) 0altrimenti min tappley, che si chiama minimalizzazione limitata, ci fornisce il più piccolo valore di t apple y per cui il suo predicato associato è vero, se tale valore esiste, altrimenti assume il valore 0. 25
Proposizione 3 Se P (t, x) appartiene ad una classe PRC C allora vi appartiene anche l operazione di minimalizzazione limitata min tappley P (t, x). Dimostrazione La definizione * ci suggerisce di usare la proposizione precedentemente dimostrata che abbiamo detto essere simile a if... then... else oltre alle proposizioni immediatamente precedenti che ci assicurano l appartenenza a C di g(y, x) e (8t) appley P (t, x). 26
(8t) appley P (t, x). PREDICATI RICORSIVI PRIMITIVI C Discutiamo adesso brevemente l equazione di minimalizzazione senza il limite: min y P (x 1,...,x n,y) indica il minimo valore di y per cui il predicato P è vero se un tale valore esiste. Se non c è nessun valore di y per cui P (x 1,...,x n,y) è vera allora min y P (x 1,...,x n,y) non è definita. 27
Osservazioni L applicazione dell operazione di minimalizzazione non limitata può generare una funzione che non è totale come mostra il semplice esempio della sottrazione x y =min z [y + z = x] che è indefinita per x<y. Si può dimostrare che esistono predicati ricorsivi primitivi P (x, y) talichemin y P (x, y) èunafunzionetotale che non è r i c o r s i v a p r i m i t i v a. 28
(DOMANDA: Possiamo pensare di sfruttare utilmente il risultato (negativo) precedente?) Aggiungiamo l operatore di minimalizzazione non limitata aquelliammessidallateoriadellefunzioniricorsiveprimitive. Sappiamo già: che si va fuori dalla classe delle ricorsive primitive che tale operatore è calcolabile in S. 29
(DOMANDA: Possiamo pensare di sfruttare utilmente il risultato (negativo) precedente?) Aggiungiamo l operatore di minimalizzazione non limitata aquelliammessidallateoriadellefunzioniricorsiveprimitive. Sappiamo già: che si va fuori dalla classe delle ricorsive primitive che tale operatore è calcolabile in S. Dimostreremo che: Tale classe (funzioni mu-ricorsive) coincide con quelle delle funzioni calcolabili in S, delle funzioni Turing-calcolabili, etc. 30