Alcune note sul lambda-calcolo Rappresentabilita' di funzioni definite ricorsivamente
Abbiamo visto come sia possibile definire nel lambda-calcolo
funzioni come la somma ed il prodotto sui numeri naturali. fact n = if (n=0) then 1 else n*fact(n-1) Come si puo' rappresentare la funzione fattoriale nel lambda calcolo? Dalle note [PS] sappiamo che if_then_else si puo' rappresentare, come anche il predicato di uguaglianza, i numeri, il prodotto e la funzione predecessore. Quindi il fattoriale si dovrebbe rappresentare con il seguente lambda-termine: \n.if_then_else (iszero n 0) 1 (mult n (fact(pred n))) Dove pero' al posto di fact dovremmo inserire un lambda-termine!! Quale? Quello stesso che abbiamo costruito! Pero' anche questo conterra' fact, e quindi il procedimento non terminerebbe mai!! Sembra una strada senza via di uscita... In realta' esistono dei lambda termini che rappresentano la nozione stessa di ricorsione e che permettono di superare il problema. Si chiamano Operatori di Punto Fisso. Nelle note [PS], per chi fosse interessato, ne e' discritto uno: l'operatore di Turing. Oltre a quello di Turing, ne esistono molti altri, come quello che viene comunemente chiamato Y. Utilizzando tali operatori si possono rappresentare funzioni definite ricorsivamente. Il fattoriale verrebbe infatti rappresentato dal lambda-termine Y(\f.\n.if_then_else (iszero n 0) 1 (mult n (f(predn))) Nel nostro corso non dimostreremo il perche' (gli interessati lo possono studiare nelle note [PS]). Intuitivamente e' come se dicessimo: nel termine che applichiamo ad Y la ricorsione si fa su f Teorema di Church-Rosser e unicita' delle forme normali Teorema di Church RosserSe un termine M si riduce in zero o piu' passi ad un termine P, e si riduce in zero o piu' passi anche ad un termine Q, allora esiste un termine R a cui si riducono in zero o piu' passi sia P che Q. Formalmente: per ogni M, P e Q tali che M -->>beta P e M -->>beta Q, esiste un termine R tale che P -->>beta R e Q -->>beta R Una immediata conseguenza di questo teorema e' il seguente Corollario Se un termine ha una forma normale, questa e' unica. Dimostrazione Supponiamo, per assurdo, che esista un termine M che abbia due forme normali. Tale cioe' che esistano due termini in forma normale N1 e N2 tali che M -->>beta N1 e M -->>beta N2. Per il Teorema di Church Rosser deve allora esistere un termine R tale che N1 -->>beta R e N2 -->>beta R. Siccome pero' N1 e N2 sono in forma normale, se N1 -->>beta R deve necessariamente essere che arrivo ad R partendo da N1 con zero passi di riduzione, cioe' R e' identico a N1! Lo stesso discorso per N2 -->>beta R. Questo significa che N1 e N2 sono termini identici, e quindi non e' vero che M possa avere due forme normali distinte. Il teorema di Church-Rosser puo' essere formulato in modo equivalente nel seguente modo: Se M =beta N allora esiste R tale che M -->>beta R e N -->>beta R Da questa versione del teorema di Church-Rosser segue immediatamente che la teoria della beta-equivalenza e' consistente (una teoria e' l'insieme di tutti i giudizi derivabili). Infatti, se prendiamo i lambda termini x e \y.y, per esempio, non e' vero che x =beta \y.y e' un giudizio valido, altrimenti dovrebbe esistere un termine R tale che x -->>beta R e \y.y -->>beta R, ma questo e' impossibile. Senza utilizzare il teorema di di Church-Rosser non sarebbe affatto semplice dimostrare la consistenza della teoria della beta-equivalenza. |