ΛΟΓΙΚΗ ΚΑΙ ΣΥΝΑΡΤΗΣΙΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΚΑΤΑΡΚΤΙΚΑ Η έννοια της συνάρτησης. Η έννοια της συνάρτησης είναι κεντρική έννοια στα Μαθηματικά και στην Πληροφορική, καθώς και στην εξέλιξη αυτών των δύο επιστημών. Μπορεί να νοηθεί ως ένας «κανόνας» που συνδέει κάθε αντικείμενο στο οποίο εφαρμόζεται η συνάρτηση και το οποίο καλούμε όρισμα της συνάρτησης με ένα αντικείμενο το οποίο καλούμε τιμή της συνάρτησης γι αυτό το όρισμα. Συνήθως στα Μαθηματικά κάθε συνάρτηση f συνδέεται με ένα (ορισμένο από πριν) σύνολο επιτρεπτών ορισμάτων A, το οποίο αποκαλείται το πεδίο ορισμού της f, και με ένα σύνολο B, το οποίο αποτελείται από όλες τις τιμές που μπορεί μια συνάρτηση να πάρει για όλες τις δυνατές τιμές των ορισμάτων της και το οποίο καλείται το πεδίο τιμών της f. Γράφουμε τότε f : A B. Συνήθως τα αντικείμενα στο σύνολο A είναι απλά αντικείμενα (π.χ. αριθμοί), δεν είναι δηλαδή συναρτήσεις. Τίποτα όμως δεν αποκλείει τα αντικείμενα στο A να είναι και συναρτήσεις. Για παράδειγμα, η έκφραση 1 f (x) dx, όταν το πεδίο των ορισμάτων είναι ολοκληρώσιμες πραγματικές 0 συναρτήσεις που ορίζονται στο [0, 1], ορίζει μία συνάρτηση με ορίσματα συναρτήσεις και τιμές πραγματικούς αριθμούς. Αξίζει να σημειωθεί εδώ ότι ο τρόπος με τον οποίο έχει νοηθεί η συνάρτηση στα μαθηματικά δίνει δύο διαφορετικές εκδοχές αυτής της έννοιας που, αρκετά σχηματικά, θα τις ονομάσουμε συναρτήσεις κατά Euler και συναρτήσεις κατά Riemann. Αντιστοιχούν δε στην ιστορική εξέλιξη της έννοιας με κύριους σταθμούς τους δύο αυτούς μεγάλους μαθηματικούς. Για τον Euler η συνάρτηση δίνεται από μία «φόρμουλα» η οποία επιτρέπει ή όχι τον υπολογισμό της, π.χ. οι φόρμουλες ή μαθηματικοί τύποι 2 x 2, 1 {1 x2 }, 1 + x + + xn + θεωρούνται συναρτήσεις μιας μεταβλητής x. εκ των προτέρων. Το πεδίο ορισμού δεν προσδιορίζεται Οι φόρμουλες αυτές είναι μάλλον μια «απόπειρα» υπολογισμού 2 Θα χρησιμοποιούμε τον όρο «φόρμουλα» γι αυτό που συνήθως ονομάζουμε «μαθηματικό τύπο», επειδή τον όρο «τύπο» θα τον χρησιμοποιήσουμε για την αντίστοιχη έννοια της πληροφορικής. 6
της συνάρτησης, απόπειρα που μπορεί και να μην καταλήγει σε αποτέλεσμα. παράδειγμα, η φόρμουλα 1+x+ +x n + αναπαριστά την συνάρτηση 1 1 x ακόμα και στην περίπτωση που x > 1, οπότε η ως άνω σειρά δεν συγκλίνει. Η αντίληψη αυτή για τη συνάρτηση, αντίληψη πηγαία και διασθητικά ισχυρή, στάθηκε αδύνατο να αποτελέσει το αντικείμενο ακριβών λογικομαθηματικών ορισμών. Η συνάρτηση είναι συνδεδεμένη με τη μαθηματική φόρμουλα που την εκφράζει και κάθε αντιμετώπιση γίνεται για την κάθε περίπτωση ξεχωριστά φαίνεται δύσκολο να ασχοληθούμε με γενικές ιδιότητες ολόκληρων κλάσεων από συναρτήσεις. Δεν στάθηκε δυνατό ποτέ να δοθεί ένας ακριβής ορισμός των συναρτήσεων κατά Euler. Η έννοια αυτή εγκαταλείφτηκε, εδώ και πολύ καιρό, προς όφελος της έννοιας της συνάρτησης που εισήγαγε ο Riemann. Για Με τον Riemann έχουμε μια ριζική μετατόπιση της αντίληψης για τη συνάρτηση, σε κατευθύνσεις που σήμερα θα ονομάζαμε λογικομαθηματικές-αξιωματικές. Κάθε ιδέα υπολογισμού εξαφανίζεται μια συνάρτηση π.χ. από το R (σύνολο πραγματικών αριθμών) στο R είναι ένα «μαύρο κουτί», δηλαδή ένα απροσδιόριστο αντικείμενο (εδώ η φόρμουλα που την υπολογίζει εξαφανίζεται), για το οποίο το μόνο που ξέρουμε είναι ότι αν δώσουμε έναν πραγματικό αριθμό θα μας επιστρέψει επίσης έναν πραγματικό αριθμό. Επιπλέον, δεν μας επιτρέπεται να μελετήσουμε την έννοια της συνάρτησης παρά μόνο με βάση αυτή την ιδιότητα. Η μετατόπιση αυτή της αντίληψης για τη συνάρτηση επιτρέπει να αποδεικνύουμε ιδιότητες που αφορούν κλάσεις συναρτήσεων και όχι μόνο μεμονωμένες συναρτήσεις, όπως στην περίπτωση του Euler. Η ακόμη να αποδεικνύουμε και αρνητικές ιδιότητες π.χ. ποιές συναρτήσεις στο R είναι συνεχείς ή ποιές δεν είναι παραγωγίσιμες. Η ουσία της απομάκρυνσης από την αντίληψη του Euler είναι ότι η καινούργια έννοια είναι επιδεκτή μιας λογικομαθηματικής ανάλυσης με ολοένα και μεγαλύτερους βαθμούς μαθηματικής αυστηρότητας. Η καινούργια αντίληψη επιτρέπει τον ακριβή ορισμό του πότε μια συνάρτηση είναι συνεχής, παραγωγίσιμη, αναλυτική κ.λ.π. Μέσω της αυστηρότητας τα μαθηματικά αναπτύσσονται, γενικεύονται, αποκτούν υπόσταση. Εμφανίζονται περιοχές που θα ήταν αδύνατο να τις φανταστούμε διαφορετικά. Οπως για παράδειγμα η θεωρία των αναλυτικών συναρτήσεων αλλά και επεκτάσεις της έννοιας της συνάρτησης, όπως η θεωρία μέτρου, οι κατανομές, οι χώροι Hilbert και ποικίλοι χώροι συναρτήσεων... Η αντίληψη της συνάρτησης κατά Riemann δημιούργησε το εντυπωσιακό οικοδόμημα των μοντέρνων θεωρητικών μαθηματικών αλλά η εμφάνιση και ανάπτυξη της πληροφορικής ανέσυρε από τη λήθη, με απροσδόκητο τρόπο, την αντίληψη της συνάρτησης κατά Euler. Κι αυτό γιατί η συνάρτηση θα είναι πλέον ένας καταγεγραμμένος (υπό μορφή προγράμματος) κανόνας υπολογισμού. Η έννοια αυτή της συνάρτησης ως πρόγραμμα θα αποκρυσταλλωθεί κυρίως στο λ-λογισμό. 7
Ας εξετάσουμε τώρα μερικές από τις επιπτώσεις αυτής της πιο «ελεύθερης» αντίληψης για τη συνάρτηση. Είναι δυνατόν μια συνάρτηση f να «εφαρμόζεται» στον εαυτό της; Είναι δηλαδή δυνατόν ένα από τα δυνατά ορίσματα της f να είναι η ίδια η f; Αν θεωρήσουμε ότι το σύνολο ορισμάτων της f έχει οριστεί πριν από τον ορισμό της f, για προφανείς λόγους, αυτό είναι αδύνατο (διότι τότε αν f : A B θα έχουμε f / A, εφόσον το A «δίδεται» πριν από το f). Μπορούμε όμως να φανταστούμε ότι η συνάρτηση ορίζεται αρχικά ως ένας κανόνας (απεικόνισης) και (μόνον) εκ των υστέρων προσδιορίζονται, με βάση αυτόν τον κανόνα, τα αντικείμενα στα οποία η συνάρτηση μπορεί να «εφαρμοστεί». Αυτό μπορεί να φαντάζει ως μία απομάκρυνση από την κλασική, καθιερωμένη άποψη για τη συνάρτηση, αλλά στη σύγχρονη, κυρίως, πληροφορική πρακτική, είναι σύνηθες π.χ. ένα πρόγραμμα που «καλεί» τον εαυτό του και υπολογίζει μία τιμή ή ένα άλλο πρόγραμμα. Η χαρακτηριστικότερη περίπτωση είναι η ταυτοτική συνάρτηση I. Ο κανόνας ορισμού αυτής της συνάρτησης είναι ότι η τιμή 3 (Ix) είναι το x. Οπότε τίποτε δεν αποκλείει την I να εφαρμοστεί στον εαυτό της, οπότε το (II) είναι το I. Ως άλλο παράδειγμα, αν θεωρήσουμε ότι η H ορίζεται έτσι ώστε, για κάθε x, η τιμή (Hx) να είναι το I, τότε το (HH) είναι το I. Στα παραπάνω παραδείγματα, τα πεδία ορισμού των συναρτήσεων I και H αποτελούνται από όλα τα δυνατά αντικείμενα δηλαδή από όλες τις δυνατές συναρτήσεις, συμπεριλαμβανομένων και των ιδίων. Εκταση και Ενταση. Πότε είναι δύο συναρτήσεις ίδιες; Π.χ. είναι οι συναρτήσεις f(x) = 2 x και g(x) = x + x (όπου x αριθμός) ίδιες; Η άμεση (συνολοθεωρητική) απάντηση είναι ότι δύο συναρτήσεις f και g είναι ίδιες όταν έχουν το ίδιο πεδίο ορισμού και όταν για κάθε x που ανήκει σ αυτό το (fx) είναι ίδιο με το (gx). Αυτή η άποψη είναι η άποψη της ισότητας των συναρτήσεων ως προς την έκταση. Σύμφωνα με την άποψη αυτή (συνολοθεωρητική άποψη) η συνάρτηση είναι ένα σύνολο (η έκταση της συνάρτησης) με στοιχεία διατεταγμένα ζεύγη της μορφής x, y, όπου x είναι όρισμα της συνάρτησης και y η τιμή της σ αυτό το όρισμα. Οπότε δύο συναρτήσεις ταυτίζονται όταν ταυτίζονται ως σύνολα, δηλαδή όταν έχουν τα ίδια στοιχεία. Ομως, είναι δυνατόν να θεωρήσουμε ότι δύο συναρτήσεις f και g μπορεί να είναι ίδιες ως προς την έκταση άλλα να μην είναι ίδιες όσον αφορά τον τρόπο με τον οποίο υπολογίζουν τις τιμές τους. Υπό αυτή τη θεώρηση οι συναρτήσεις νοούνται ως συναρτήσεις ως προς την ένταση. Π.χ. οι συναρτήσεις f(x) = 2 x και g(x) = x + x ενώ είναι ίδιες ως προς την έκταση δεν μπορούν να θεωρηθούν ίδιες ως προς την ένταση, μια και ο τρόπος που υπολογίζονται οι τιμές τους είναι διαφορετικός. 3 Αν f η συνάρτηση και x ένα όρισμά της, γράφουμε ως (fx) την τιμή της συνάρτησης γι αυτό το όρισμα. 8
Θα πρέπει στα διάφορα (υπολογιστικά) πλαίσια και με διάφορα κριτήρια να αποφασίζουμε πότε δύο συναρτήσεις είναι ίδιες ως προς την ένταση (ισότητα ως προς την ένταση). Συναρτήσεις πολλών μεταβλητών. Η μέχρι τώρα σιωπηρή παραδοχή είναι ότι οι συναρτήσεις μας είναι συναρτήσεις μιας μεταβλητής. Είναι βέβαια επιθυμητό να έχουμε στη διάθεσή μας και την έννοια, για κάθε φυσικό n 1, της συνάρτησης n μεταβλητών (n N). Αυτό μπορούμε να το κάνουμε χωρίς να αποστούμε από την παραδοχή μας ότι οι συναρτήσεις μας είναι συναρτήσεις μιας μεταβλητής. Η ιδέα οφείλεται στον Sch οnfinkel [Sch οnfinkel,1924] αλλά ονομάζεται currying από τον H. B. Curry που την εισήγαγε και αυτός ανεξάρτητα. Οταν π.χ. το n = 2, δηλαδή όταν θέλουμε η f να είναι συνάρτηση δύο μεταβλητών, τότε μπορούμε να θεωρήσουμε ότι για αντικείμενα x και y η τιμή f(x, y) είναι η ((fx) y), δηλαδή η συνάρτηση δύο μεταβλητών μπορεί να θεωρηθεί ως συνάρτηση μιας μεταβλητής της οποίας οι τιμές είναι συναρτήσεις μίας μεταβλητής. Και αυτό μπορεί να επεκταθεί σε οποιοδήποτε n. Ως παράδειγμα, εάν θέλουμε να θεωρήσουμε τη συνάρτηση Κ δύο μεταβλητών έτσι ώστε K(x, y) = x μπορούμε να την αναπαραστήσουμε στον κόσμο των συναρτήσεων μιας μεταβλητής ως Κ που έχει την ιδιότητα ((Kx)y) = x. Αφαίρεση. Είναι αναγκαίο να διαχωρίζουμε μεταξύ ενός συμβόλου ή έκφρασης που δηλώνει μια συνάρτηση και μιας έκφρασης που περιέχει μια μεταβλητή και δηλώνει με αμφίβολο τρόπο κάποια τιμή της συνάρτησης. Αυτή η διάκριση συσκοτίζεται στη συνήθη γλώσσα των μαθηματικών. Οταν λέμε π.χ. ότι ξ 2 + 1 είναι μεγαλύτερο από το 1000 διατυπώνουμε κάτι το οποίο δεν έχει νόημα παρά μόνον αν το ξ πάρει την τιμή ενός συγκεκριμένου αριθμού. Ενώ όταν λέμε ότι «x 2 +1 είναι μία πρωτογενής αναδρομική συνάρτηση», διατυπώνουμε κάτι οριστικό, κάτι που δεν εξαρτάται από τον προσδιορισμό του x, δηλαδή εδώ το x επέχει θέση φαινομενικής ή δεσμευμένης μεταβλητής. Η διαφορά λοιπόν είναι ότι στην πρώτη περίπτωση η έκφραση x 2 +1 χρησιμοποιείται ως διφορούμενη ή μεταβλητή δήλωση ενός φυσικού αριθμού ενώ στη δεύτερη μιας συγκεκριμένης συνάρτησης. Γι αυτό στη δεύτερη περίπτωση θα παριστάνουμε τη συνάρτηση που αντιστοιχεί στην έκφραση x 2 + 1 ως (λx.x 2 + 1) (λ-αφαίρεση). Το νόημα μίας τέτοιας γραφής (λ-αφαίρεσης) είναι ότι όταν η συνάρτηση (λx.x 2 + 1) εφαρμοστεί σε ένα συγκεκριμένο όρισμα, έστω 3, τότε η τιμή της συνάρτησης θα παραχθεί από τη «μεταβλητή» έκφραση x 2 + 1 όπου όμως το x αντικαθίσταται με 3, δηλαδή ( λx.x 2 + 1 ) 3 = 3 2 + 1 (= 10) Χρησιμοποιώντας διαφορετική φρασεολογία θα λέγαμε ότι στην έννοια της συνάρτησης αντιστοιχούν δύο πράξεις. 9
Η πρώτη πράξη που ονομάζεται εφαρμογή αντιστοιχεί σ αυτό που κάνει η συνάρτηση όταν ενεργεί. Εάν έχω μια συνάρτηση f μπορώ να την «εφαρμόσω» στο όρισμα g (το οποίο είδαμε ότι είναι κι αυτό συνάρτηση) και να πάρω το f(g) (που με τη σειρά του είναι συνάρτηση). Η δεύτερη πράξη (για τις συναρτήσεις που ορίζονται ή υπολογίζονται μέσω μιας φόρμουλας - κανόνα, δηλαδή μιας συνάρτησης κατά Euler) ονομάζεται αφαίρεση και χρειάζεται για την κατανόησή της μεγαλύτερη προσοχή. Αν θέλουμε να δώσουμε έναν συνοπτικό ορισμό της πράξης θα λέγαμε ότι αντιστοιχεί στην «αναγόρευση» μιας φόρμουλας υπολογισμού (όπως η φόρμουλα του Euler) σε μαθηματικό αντικείμενο, σε συνάρτηση. Αυτή είναι μια πράξη που γίνεται με άτυπο τρόπο στα μαθηματικά όταν λέμε «θεωρούμε τη συνάρτηση που ορίζεται από τον τύπο x 2 +1» ή επίσης με διαφορετική φρασεολογία «θεωρούμε τη συνάρτηση x x 2 + 1». Ο Church για να παραστήσει αυτή τη συνάρτηση εισήγαγε το συμβολισμό λx.x 2 + 1 Δηλαδή ο τύπος υπολογισμού «x 2 +1» αναγορεύεται με τη χρήση του τελεστή λ (από όπου προέρχεται και ο όρος λ-λογισμός) στη συνάρτηση λx.x 2 + 1. Η ουσία αυτού του ορισμού (αυτής της πράξης) είναι ότι για να «υπάρξει» μια συνάρτηση πρέπει να υπάρχει μια αναφορά σ έναν ορισμό της συνάρτησης που γίνεται μέσω μιας «φόρμουλας», δηλαδή μέσω μιας καταγραφής στο συντακτικό της μαθηματικής μας γλώσσας. Εάν πούμε ότι το f είναι η συνάρτηση x x 0 d t 1 + t 2 τότε λx. x d t 0 1+t είναι η συνάρτηση f. Εάν έχουμε ορίσει μια συνάρτηση φ(x) σ ένα 2 μαθηματικό κείμενο μέσω της αναφοράς Ορισμός 56 τότε η συνάρτηση λx.φ(x) είναι ο «Ορισμός 56». Γενικά στα μαθηματικά δεν ισχύει ότι κάθε συνάρτηση έχει μια αναφορά σε έναν ορισμό, σε μια φόρμουλα. Στο λ-λογισμό (όπως και στις συναρτήσεις κατά Euler) περιοριζόμαστε στις συναρτήσεις που έχουν τέτοιες αναφορές. Αυτός ο «περιορισμός» είναι απαραίτητος εάν θέλουμε να θεωρήσουμε τις συναρτήσεις ως προγράμματα, δηλαδή να περιοριστούμε στις συναρτήσεις που είναι προγράμματα. Θα προχωρήσουμε τώρα στον ορισμό του συστήματος του καθαρού (χωρίς τύπους) λ-λογισμού. Ορισμός. Το σύνολο Λ των λ-όρων είναι το σύνολο των εκφράσεων που σχηματίζεται ξεκινώντας από ένα άπειρο σύνολο μεταβλητών V = {v, v, v,...} (αριθμήσιμο σύνολο) με τη χρήση των τελεστών της εφαρμογής και της λ-αφαίρεσης. Ο γενικευμένος ορισμός είναι ο εξής: 10
(1) x V x Λ (2) M, N Λ (M N) Λ (3) M Λ, x V (λx. M) Λ ή χρησιμοποιώντας αφηρημένη σύνταξη μπορούμε να γράψουμε: V v V Λ V (Λ Λ) (λv. Λ) Κάθε όρος της μορφής (MN) θα λέγεται εφαρμογή (του M στο N ) ενώ κάθε όρος της μορφής (λx.m) θα λέγεται λ-αφαίρεση (στο x). Για το κατ αρχήν νόημα αυτών των παραστάσεων ισχύουν οι παρατηρήσεις που διατυπώθηκαν παραπάνω για τις πράξεις της εφαρμογής και της αφαίρεσης. Ας σημειωθεί ότι οι λ-όροι είναι συντακτικά αντικείμενα και ότι η οποιαδήποτε ερμηνεία αποδίδεται εκ των υστέρων. Μπορούμε να νοούμε τους λ-όρους ως προγράμματα υπολογισμού που γράφονται στη γλώσσα του λ-λογισμού. Ας σημειωθεί επίσης ότι ο τρόπος με τον οποίο οριζονται οι λ-όροι στον παραπάνω ορισμό ονομάζεται γενικευμένος επαγωγικός ορισμός και το νόημά του είναι (εδώ και σε όλους τους επαγωγικούς ορισμούς στη συνέχεια) ότι ως λ-όρος θα νοείται κάθε συμβολοσειρά που ορίζεται μόνον με διαδοχική εφαρμογή των κανόνων 1,2 και 3. Με πιο μαθηματικό τρόπο μπορούμε να πούμε ότι οι λ-όροι είναι το ελάχιστο σύνολο εκφράσεων της γλώσσας του λ-λογισμού [της οποίας το αλφάβητο είναι οι μεταβλητές, το σύμβολο λ καθώς και τα βοηθητικά σύμβολα της τελείας. και των παρενθέσεων ( και ) ] το οποίο είναι κλειστό για τους κανόνες 1,2 και 3. Παράδειγμα. Οι κάτωθι εκφράσεις είναι λ-όροι: v (v v ) (λv. (v v )) ((λv. (v v )) v ) ((λv. ((λv. (v v )) v ))v ) Συμβολισμοί: (1) Τα x, y, z,... θα δηλώνουν τυχαίες μεταβλητές (μεταμεταβλητές). Τα M, N, L,... θα δηλώνουν τυχαίους λ-όρους. (2) Για ευκολία, οι εξωτερικές παρενθέσεις δεν αναγράφονται. Γράφουμε F M 1 M 2... M n αντί του πλήρους ( ((F M 1 ) M 2 )... M n ). [προσεταιρισμός από αριστερά στις εφαρμογές] Γράφουμε λx 1 x 2... x n. M ή λx 1 λx 2 λx n.m αντί του (λx 1. (λx 2. ( (λx n. M) ))). [προσεταιρισμός από δεξιά στις λ-αφαιρέσεις] 11
Παράδειγμα. Οι όροι του [αδείγματος]εξ:λαμβδα-τερμς γράφονται με βάση τις παραπάνω συνθήκες: v v v λv. v v (λv. v v ) v (λv. (λv. v v ) v )v Σχόλιο. Ο τρόπος με τον οποίο έχουν οριστεί οι λ-όροι δίνει μοναδική αναγνωσιμότητα, δηλαδή κάθε όρος t είναι ένα και μόνον ένα από τα ακόλουθα: (1) μια μεταβλητή (t = x για κάποιο x), (2) μια εφαρμογή, όπου υπάρχουν μοναδικά M και N ώστε t = (MN), (3) μια λ αφαίρεση, όπου υπάρχουν μοναδικά x και N ώστε t = (λx.n). Για τη γραφή των όρων θα προτιμούμε τις απλουστεύσεις που περιγράψαμε παραπάνω αλλά και επιπλέον κάθε γραφή που θα υποδεικνύεται από την απλότητα ή από τη σαφήνεια και η οποία δε θα οδηγεί σε λάθος ανάγνωση του όρου. περιπτώσεις, αντί του σωστού (λx.m) θα γράφουμε λxm. Σε πολλές Ελεύθερες και δεσμευμένες μεταβλητές. Οταν σχηματίζεται ο όρος λx.m ο τελεστής λx δεσμεύει τη μεταβλητή x στον όρο M. Για παράδειγμα, λέμε ότι στον όρο λx.yx η x είναι δεσμευμένη ενώ η y ελεύθερη μεταβλητή. Η αντικατάσταση [xn] εκτελείται μόνο στις ελεύθερες εμφανίσεις της x. Π.χ. στον όρο 3 x + y x=1 η x είναι δεσμευμένη μεταβλητή και η y ελεύθερη. Δεν έχει νόημα να αντικαταστήσουμε τη x με κάποιο αριθμό, έχει όμως νόημα να αντικαταστήσουμε την y με π.χ. το 5 αποκτώντας την παράσταση 3 x=1 x + 5. Ομοίως στην παράσταση x f(t) dt η x 0 είναι ελεύθερη μεταβλητή ενώ η t δεσμευμένη. Και στις δύο περιπτώσεις υπάρχει ένας τελεστής που δεσμεύει τις εμφανίσεις των μεταβλητών στις αντίστοιχες παραστάσεις π.χ. ο τελεστής 3 x=1 δεσμεύει την εμφάνιση της x στην παράσταση x+y, οπότε στην παράσταση 3 x=1 x+y η εμφάνιση της x είναι δεσμευμένη. Οι δεσμευμένες εμφανίσεις των μεταβλητών στην πραγματικότητα έχουν χάσει το status των μεταβλητών. Λειτουργούν μόνον ως αναφορές για τις οποίες σημασία δεν έχει το όνομα αλλά η θέση. Ετσι μπορούμε να αλλάξουμε το όνομά τους χωρίς να διαταράξουμε τη σημασία της παράστασης στην οποία εμφανίζονται. Για παράδειγμα αν αντικαταστήσουμε την x με την z στην 3 x=1 x+y παίρνουμε την 3 z=1 z+y που και στις δύο περιπτώσεις είναι το ίδιο (1+y)+(2+y)+(3+y). Προσοχή όμως, δεν μπορούμε να την αντικαταστήσουμε με y γιατί τότε θα παίρναμε την παράσταση 3 y=1 y + y που είναι ένας όρος τελείως 12
διαφορετικός. ρα επιτρέπεται να αλλάξουμε το όνομα των δεσμευμένων μεταβλητών χωρίς όμως να αλλάξουμε τη φύση των ελεύθερων μεταβλητών. Για λόγους «συντακτικής υγιεινής» θα θεωρούμε ότι οι μεταβλητές που είναι δεσμευμένες σ έναν όρο θα είναι διαφορετικές από τις ελεύθερες μεταβλητές. Για παράδειγμα, δε θα επιτρέπουμε όρους της μορφής zx (λx.x). Αυτό το επιτυγχάνουμε με τη μετονομασία των δεσμευμένων μεταβλητών, π.χ. ο όρος λx.x μπορεί να γίνει λy.y. Σημειωτέον ότι οι όροι λx.x και λy.y δρουν κατά τον ίδιο ακριβώς τρόπο, δηλαδή δηλώνουν τον ίδιο αλγόριθμο: (λx.x) a = a = (λy.y) a Συμβολισμός: M α N ή απλώς M N σημαίνει ότι οι όροι M και N είτε είναι ίδιοι ή ότι ο ένας μπορεί να αποκτηθεί από τον άλλο με μετονομασία των δεσμευμένων μεταβλητών. Για παράδειγμα (λx.x) z (λy.y) z (λx.x) z (λx.x) z (λx.x) z (λx.y) z Οταν έχουμε M α N λέμε (ακολουθώντας τον Church) ότι M και N είναι α- ισοδύναμοι. Η σχέση της α-ισοδυναμίας είναι σχέση ισοδυναμίας, δηλαδή αυτοπαθής, συμμετρική και μεταβατική. Σε ό,τι ακολουθεί θα ταυτίζουμε κάθε δύο όρους που είναι α-ισοδύναμοι, θα θεωρούμε δηλαδή ότι δεν διαφέρουν ο ένας από τον άλλον. Στην πραγματικότητα, με μαθηματικούς όρους, οι λ-όροι μας θα είναι κλάσεις ισοδυναμίας της σχέσης α. Οι παρατηρήσεις για την αλλαγή του ονόματος των δεσμευμένων μεταβλητών ενός λ-όρου ισχύουν όπως και παραπάνω. Εάν σε οποιοδήποτε όρο (ή υποόρο) λxm θέλουμε να αλλάξουμε το όνομα του x με το z θα πρέπει να τον μετατρέψουμε σε λzm, όπου M έχει προκύψει από το M με την αλλαγή όλων των ελεύθερων x με z και με την προϋπόθεση ότι το z δεν εμφανίζεται (ελεύθερο) στο M, είναι δηλαδή μια φρέσκια (καινούργια) μεταβλητή. Ορισμός. Ακολουθούν κάποιοι σημαντικοί ορισμοί: (1) Το σύνολο των ελεύθερων μεταβλητών του λ-όρου M (συμβολίζεται με F V (M)) ορίζεται αναδρομικά ως: FV (x) = {x} FV (MN) = FV (M) FV (N) FV (λx.m) = FV (M) {x} (2) Ο M είναι κλειστός λ-όρος (ή συνδυαστής) αν FV (M) =. Το σύνολο των κλειστών λ-όρων συμβολίζεται με Λ 0. 13
(3) Το σύνολο των δεσμευμένων μεταβλητών του λ-όρου M (συμβολίζεται με BV (M)) ορίζεται ως το σύνολο των μεταβλητών που εμφανίζονται στον όρο M αλλά δεν είναι ελεύθερες στον M, δηλαδή δεν ανήκουν στο FV (M). Ας σημειωθεί ότι στις δεσμευμένες μεταβλητές περιλαμβάνονται και οι εμφανίσεις αμέσως μετά το λ, δηλαδή η x είναι δεσμευμένη στον λx.y. (4) Το αποτέλεσμα της αντικατάστασης (των ελεύθερων εμφανίσεων) του x από το N στον όρο M, συμβολίζεται με M [xn], ορίζεται με αναδρομή στον τρόπο που σχηματίζεται ο M ως ακολούθως (θεωρούμε x y): x [xn] N y [xn] y (P Q) [xn] (P [xn]) (Q [xn]) (λy.p ) [xn] λy. (P [xn]) (λx.p ) [xn] λx.p Σχόλιο. Είναι εύκολο να ελέγξουμε, με επαγωγή στον όρο M, ότι αν x / FV (M) τότε M [xn] = M. Διότι αν M είναι μεταβλητή y τότε M = y x [διότι x / {y} = FV (M)] και το αποτέλεσμα προκύπτει από τον ορισμό. Αν M = P Q τότε x / FV (P ) FV (Q) οπότε x / FV (P ) και x / FV (Q) οπότε προκύπτει από τον ορισμό και την επαγωγική υπόθεση. Και αν M = λy.p τότε είτε x = y είτε x y και x / FV (P ). Και στις δύο περιπτώσεις το αποτέλεσμα προκύπτει από τον ορισμό και την επαγωγική υπόθεση. Παραδείγματα και επιπλέον παρατηρήσεις σε σχέση με τους παραπάνω ορισμούς: Στον λ-όρο y (λxy.xyz) οι y και z εμφανίζονται ως ελεύθερες μεταβλητές, διότι η πρώτη εμφάνιση της y είναι ελεύθερη καθώς και η μοναδική εμφάνιση της z, ενώ οι x και y ως δεσμευμένες διότι η δεύτερη εμφάνιση της y είναι δεσμευμένη καθώς και η μοναδική εμφάνιση της x. Ο όρος λxy.xxy είναι κλειστός. Τα ονόματα των δεσμευμένων μεταβλητών σε έναν όρο θα επιλέγονται πάντα ώστε να διαφέρουν από τα ονόματα των ελεύθερων μεταβλητών. Άρα γράφουμε y (λxy.xy z) για τον y (λxy.xyz). Η σύμβαση αυτή μπορεί να επεκταθεί και σε περισσότερους από έναν όρους. Αν π.χ. έχουμε τους όρους M 1, M 2,... M n μπορούμε να φανταστούμε ότι όλες οι δεσμευμένες μεταβλητές που εμφανίζονται στους όρους αυτούς είναι διαφορετικές από τις ελεύθερες μεταβλητές αυτών των όρων. Αυτό βέβαια μπορεί να επιτευχθεί με μετονομασία των δεσμευμένων (και όχι βέβαια των ελεύθερων) μεταβλητών. Άρα λοιπόν και στην περίπτωση της αντικατάστασης όταν σχηματίζουμε τον όρο M [xn] μπορούμε να φανταστούμε ότι αυτή η «σύμβαση των μεταβλητών» ισχύει για τους M και N έτσι ώστε πραγματοποιούμενης της αντικατάστασης καμμία ελεύθερη 14
μεταβλητή του N δε μπορεί να δεσμευτεί (μετά την αντικατάσταση) από κάποιο λ- τελεστή του M. Π.χ. δεν μπορεί να υπάρξει (λx.xy) [yx] = λx.xx διότι αυτό πρέπει να γίνει (λx.xy) [yx] = (λz.zy) [yx] = λz.zx. Η «σύμβαση των μεταβλητών» επιτρέπει να ορίζουμε την αντικατάσταση στο λ- λογισμό χωρίς να λαμβάνουμε κάποια ειδική πρόνοια για τις ελεύθερες και δεσμευμένες μεταβλητές. Και για να μην υπάρχει παρεξήγηση, λ-όροι είναι μόνο οι εκφράσεις (συμβολοσειρές) που σχηματίζονται με βάση τον ορισμό. Οι ταυτίσεις, μέσω της σχέσης, γίνονται εκ των υστέρων, αφού δημιουργηθούν οι όροι και επίσης η «σύμβαση των μεταβλητών» θα ικανοποιείται μετά την αντικατάσταση κάποιων όρων με ισοδύναμούς τους. Αν θέλουμε να αναλύσουμε τη διαδικασία της αντικατάστασης ως προς το λειτουργικό τρόπο εφαρμογής της, μπορούμε να παρατηρήσουμε τα εξής: Κατ αρχάς μπορούμε να ορίσουμε την απλή αντικατάσταση. Εστω όροι M και N και x μεταβλητή. Τότε η απλή αντικατάσταση του x στον M από τον N είναι η αντικατάσταση κάθε ελεύθερης εμφάνισης του x στον M από τον όρο N. Αυτό που θα προκύψει θα είναι ένας όρος τον οποίο συμβολίζουμε με M x := N ή με M N/x. Δηλαδή η διαδικασία της απλής αντικατάστασης είναι «αντικατάσταση και ό,τι προκύψει». Μπορούμε να επεκτείνουμε την απλή αντικατάσταση και στην περίπτωση πολλών μεταβλητών. Εστωσαν x 1... x k ξεχωριστές μεταβλητές και N 1... N k όροι. Τότε ο M N 1 /x 1,, N k /x k είναι το αποτέλεσμα της παράλληλης ή ταυτόχρονης αντικατάστασης των x 1,..., x k από, αντιστοίχως, τα N 1,..., N k. Ας προσέξουμε ιδιαίτερα τον περιορισμό ταυτόχρονα. Διότι αν κάνουμε την αντικατάσταση εν σειρά τότε το αποτέλεσμα θα είναι πιθανώς διαφορετικό διότι μπορεί κατά τη σειριακή αντικατάσταση να δημιουργηθούν καινούργιες θέσεις μεταβλητών που θα πρέπει να αντικατασταθούν στη συνέχεια π.χ. xy y/x, z/y = yz, αλλά αν εκτελέσουμε την αντικατάσταση εν σειρά xy y/x z/y = yy z/y = zz. Η απλή αντικατάσταση δεν είναι βέβαια η σωστή αντικατάσταση διότι π.χ. (λy.xy) y/x = λy.yy ενώ η σωστή κίνηση θα ήταν να αλλάξουμε το όνομα της δεσμευμένης μεταβλητής στο (λy.xy) σε π.χ. z παίρνοντας το (λy.xy) y/x (λz.xz) y/x = λz.yz. Το αποτέλεσμα αυτής της ενέργειας το ονομάζουμε αντικατάσταση και είναι το ίδιο με αυτό που ορίσαμε ως (λy.xy)[y/x]. Η σύμβαση των μεταβλητών μας «απαλλάσσει» από την υποχρέωση της μετονομασίας των δεσμευμένων μεταβλητών αφού υποτίθεται ότι ένα μαγικό ραβδάκι εκτελεί για εμάς αυτές τις μετονομασίες. Από την άποψη της υλοποίησης όμως η διαδικασία της αντικατάστασης δεν είναι καθόλου απλή και υπάρχει εκτεταμένη έρευνα για αυτό το ζήτημα. Με τον ίδιο τρόπο θα μπορούσαμε να ορίσουμε και τη (σωστή) αντικατάσταση M[N 1 /x 1,..., N k /x k ] των x 1,,... x k από τα N 1,..., N k στον όρο M. Ο όρος M [N 1 /x 1,..., N k /x k ] θα είναι ο M N 1 /x 1,..., N k /x k όπου M είναι 15
ένας α-ισοδύναμος όρος με τον M έτσι ώστε στον M καμία από τις δεσμευμένες του μεταβλητές δεν εμφανίζεται ελεύθερη σε κάποιο από τα N 1,..., N k, πράγμα που η διευρυμένη σύμβαση των μεταβλητών μας το εξασφαλίζει. M[N/x] ταυτίζεται με το M [xn]. Ας σημειωθεί ότι το Πρόταση ([Λήμμα αντικατάστασης Substitution lemma]). Εστω M, N, L Λ. Υποθέτουμε ότι x y και x / FV (L). Τότε M [xn] [yl] M [yl] [xn [yl]] Προοφ. Οπως και σε πολλές άλλες περιπτώσεις, η απόδειξη θα γίνει με επαγωγή στον όρο M, δηλαδή στον τρόπο με τον οποίο «κατασκευάζεται» ο όρος M μέσω του ορισμού, με την υπόθεση ότι η ιδιότητα που θέλουμε να αποδείξουμε ισχύει για όλους τους όρους που κατασκευάστηκαν σε ένα προηγούμενο στάδιο (για τους γνήσιους υποόρους του M). Αυτό το λέμε επαγωγική υπόθεση ή Ε. Υ. Διακρίνουμε τις ακόλουθες περιπτώσεις [έστω A = M [xn] [yl] και B = M [yl] [xn [yl]]. (1) Ο M είναι μεταβλητή. Υπάρχουν υποπεριπτώσεις: (α) M = x, τότε A ορ = N [yl] και B ορ = x [xn [yl]] = N [yl] (άρα A = B). (β) M = y τότε A ορ = y [yl] = L και B ορ = L [xn [yl]] = L (εφόσον x / FV (L)). (ς) M = z x, y τότε A ορ = z [yl] = z και B = z [xn [yl]] = z. (2) M = P Q τότε A ορ = (P [xn] Q [xn]) [yl] ορ = (P [xn] [yl]) (Q [xn] [yl]) Ε. Υ. (P [yl] [xn [yl]]) (Q [yl] [xn [yl]]) ορ = ((P [yl]) (Q [yl])) [xn [yl]] (P Q) [yl] [xn [yl]] = B (3) M = λz.p τότε υπάρχουν οι εξής περιπτώσεις (α) M = λx.p και A ορ = λx.p [yl] και B = λx.p [yl] [xn [yl]] ορ = (λx.p [yl]) [xn [yl]] ορ = λx.p [yl] (β) M = λy.p τότε A = λy.p [xn] [yl] ορ = (λy.p [xn]) [yl] = λy.p [xn] B = (λy.p ) [yl] [xn [yl]] = (λy.p ) [xn [yl]] = λy. (P [xn [yl]]) Εδώ ας σημειωθεί ότι το N [yl] είναι ενδεχομένως διαφορετικό από το N μόνον στην περίπτωση που y FV (N). Αλλά σύμφωνα με τη σύμβαση των μεταβλητών επειδή η y έχει χρησιμοποιηθεί ως δεσμευμένη μεταβλητή στο M δεν μπορεί να εμφανίζεται ως ελεύθερη στον όρο N, άρα y / FV (N) οπότε N [yl] = N, πράγμα που δίνει τελικά ότι B = λy. (P [xn]). 16
(ς) M = λz.p (z x, y) τότε A = (λz.p ) [xn] [yl] ορ = λz. (P [xn]) [yl] ορ = λz. (P [xn] [yl]) Ε.Υ. = λz.p [yl] [xn [yl]] (λz.p ) [yl] [xn [yl]] = B Παρατηρήσεις: (1) Η απόδειξη, όπως είδαμε, ήταν σχοινοτενής και άμεση. Ουσιαστικά το μόνο που χρειάστηκε ήταν να γίνει ο έλεγχος σε κάθε περίπτωση, χρησιμοποιώντας προσηκόντως τον ορισμό ή την επαγωγική υπόθεση. Τέτοιου είδους αποδείξεις θα αποφεύγουμε στη συνέχεια να τις παρουσιάσουμε στην πληρότητά τους. Η συμπλήρωσή τους θα επαφίεται στον αναγνώστη. (2) Στους προηγούμενους ορισμούς ταυτίσαμε τους όρους που διαφέρουν μόνον ως προς τα ονόματα των δεσμευμένων μεταβλητών τους. Μια εναλλακτική και πιο ακριβής μαθηματικά προσέγγιση θα ήταν να ορίζαμε ως προόρους (pre-terms) αυτά που τώρα ορίσαμε ως όρους και μετά να ορίζαμε με συστηματικό και ακριβή τρόπο μία σχέση ισοδυναμίας, την α-ισοδυναμία. Μέσω αυτής της προσέγγισης θα θεωρούσαμε ως όρους τις κλάσεις ισοδυναμίας (δηλαδή ταύτιση των α-ισοδύναμων προόρων). Προτιμήσαμε να έχουμε τις ταυτίσεις στο συντακτικό επίπεδο. Αυτές οι ταυτίσεις γίνονται στο μυαλό μας και όχι στα χαρτιά. (3) Στο επίπεδο γραφής των όρων θα πρέπει, όταν κάνουμε αντικαταστάσεις, να ικανοποιούμε την (επεκτεταμένη) «σύμβαση μεταβλητών». Π.χ. αν έχουμε τους όρους λx.m και N οι οποίοι ο καθένας ξεχωριστά ικανοποιούν τη «σύμβαση μεταβλητών» τότε αν θεωρήσουμε τον (λx.m)n και θέλουμε να τον αναγάγουμε (με β-αναγωγή [βλ. πιο κάτω]) θα πρέπει να φροντίσουμε ώστε καμμία ελεύθερη μεταβλητή του N να μην είναι δεσμευμένη στον λx.m. Π.χ. έστω ω λx.xx και J λyz.yz. Τότε οι διαδοχικές αναγωγές είναι: ωj (λx.xx)(λyz.yz) = β (λyz.yz)(λyz.yz) = β λz.(λyz.yz)z λz.(λyz.yz )z = β λzz.zz λyz.yz J 17
Αναγωγή. Παρακάτω δίνεται ο ορισμός για τη σχέση της αναγωγής στους λ-όρους. Ορισμός. β είναι η μικρότερη διμελής σχέση στο Λ ώστε να ισχύει ότι (λx.p )Q β P [xq] και η οποία είναι κλειστή για τους ακόλουθους κανόνες: P β P = x V : λx.p β λx.p P β P = Z Λ : P Z β P Z P β P = Z Λ : ZP β ZP Σχόλιο. Η σχέση β ορίζεται εκτασιακά, δηλαδή ως σύνολο διατεταγμένων ζευγών με συντεταγμένες από το Λ. Σημείωση: Αν στη θέση της σχέσης β βάλουμε μια οποιαδήποτε διμελή σχέση R στο Λ τότε αν η R ικανοποιεί τις παραπάνω ιδιότητες θα λέμε ότι η R περνάει στα συμφραζόμενα. Ενας όρος της μορφής (λx.p )Q ονομάζεται β redex και ο P [xq] ονομάζεται το β contractum του. N. Ενας όρος M είναι μία β κανονική μορφή εάν δεν υπάρχει όρος N ώστε M β Ορισμός. Η έννοια του υποόρου ορίζεται ως εξής: (1) οι υποόροι του x είναι το x, (2) οι υποόροι του (MN) είναι ο (MN), οι υποόροι του M και οι υποόροι του N, (3) οι υποόροι του (λx.m) είναι ο (λx.m) καθώς και οι υποόροι του M. Πρόταση. Ισχύει η ακόλουθη πρόταση: M β N Ακριβώς ένας υποόρος του M που είναι contractum έχει αντικατασταθεί με το redex του και προέκυψε ο N. Προοφ. Εστω red η σχέση μεταξύ δύο λ-όρων που ορίζεται από το δεύτερο σκέλος της ισοδυναμίας. Ειναι εύκολο να δείξουμε ότι η σχέση red ικανοποιεί τις ιδιότητες της β. Οπότε ισχύει β red, επειδή β είναι η μικρότερη τέτοια σχέση. Εστω τώρα MredN. Τότε υπάρχει υποόρος t του M της μορφής redex και t του N ώστε ο N προέκυψε από τον M με την αντικατάσταση του t με το t, που είναι το contractum του t. Αλλά φανερά έχουμε t β t. Και επειδή η δημιουργία του όρου M (μαζί και του N) ακολουθεί τους κανόνες για τους οποίους είναι κλειστή 18
η β, τελικά θα έχουμε και M β N 4. Οπότε red β, οπότε οι δύο σχέσεις ταυτίζονται. Πόρισμα. Ο όρος M είναι β-κανονική μορφή τότε και μόνον εάν δεν περιέχει (ως υποόρο) κανένα redex. Προοφ. Διότι αν περιείχε, τότε θα υπήρχε όρος N, σύμφωνα με την παραπάνω πρόταση, ώστε M β N. Ορισμός. Η σχέση β είναι η μεταβατική και αυτοπαθής κλειστότητα της σχέσης β. Δηλαδή είναι η μικρότερη διμελής σχέση στο Λ που είναι κλειστή για τους ακόλουθους κανόνες: P β P P β P P β P P β P P β P P β P Πρόταση. Ισχύει η ακόλουθη πρόταση: M β N Είτε M N είτε υπάρχουν όροι M 1, M 2,... M n ώστε M M 1 και N M n και για κάθε i (1 i n 1), M i β M i+1, δηλαδή M β M 2 β β M n 1 β N Προοφ. Εστω R η σχέση που ορίζεται στο Λ μέσω του δεύτερου σκέλους της ισοδυναμίας. Είναι προφανές ότι η R είναι αυτοπαθής, μεταβατική και περιέχει τη σχέση β. Οπότε β R. Εστω τώρα MRN. Εάν M N τότε M β N, διότι η β είναι αυτοπαθής. Διαφορετικά, υπάρχουν M β M 2 β β M n 1 β N. Αλλά τότε M β M 2β β M n 1 β N και λόγω της μεταβατικότητας της β παίρνουμε M β N. Οπότε R β. Η αναγωγή ενός όρου είναι ο «υπολογισμός» του. Οταν στον όρο M υπάρχει ένα redex τότε «υπολογίζουμε» το redex αντικαθιστώντας το με το contractum του. Η μετάβαση δηλαδή από τον M στον N (M β N) είναι μία διαδικασία υπολογισμού που μας οδηγεί από τον M στον N. Ο λ-λογισμός με την πράξη της β-αναγωγής εκφράζει απόλυτα, στο μαθηματικό επίπεδο, αυτό που γίνεται σε έναν υπολογιστή. Η μνήμη του υπολογιστή χωρίζεται σε μικρά κελλιά ή θέσεις μνήμης. Κάθε κελλί μνήμης περιέχει μια λέξη, 5 και κάθε κελλί έχει επίσης έναν αριθμό που είναι η διεύθυνσή του. κάθε κελλί λοιπόν έχει μια σταθερή διεύθυνση και ένα μεταβλητό περιεχόμενο. Το Το 4 Μπορούμε να αποδείξουμε με επαγωγή στο M ότι αν το N προκύπτει με την αντικατάσταση ενός redex που είναι υποόρος του M με το contractum του τότε M β Ν. 5 Λέξη είναι κάθε πεπερασμένη ακολουθία συμβόλων. 19
περιεχόμενο ενός κελλιού a μπορεί να είναι και η διεύθυνση ενός κελλιού b. Λέμε τότε ότι το κελλί της μνήμης a είναι ένας δείκτης στο b. Ας θεωρήσουμε τώρα ένα πρόγραμμα. Θα το συμβολίζουμε P (x) για να δείξουμε ότι ενεργεί σε μια μεταβλητή x η οποία δεν είναι τίποτε άλλο παρά ένα κελλί μνήμης (οι μεταβλητές εκπροσωπούν κελλιά μνήμης). Το πρόγραμμα αυτό καλύπτει ένα μεγάλο μέρος της μνήμης, δηλαδή μια μεγάλη ακολουθία από κελλιά μνήμης. Εάν το πρόγραμμα αυτό πρόκειται να γίνει όρισμα ενός άλλου προγράμματος Q(y) θα πρέπει να μπορούμε να το δηλώσουμε με μια ποσότητα που αντιστοιχεί σε ένα μόνο κελλί μνήμης, δηλαδή με μία διεύθυνση (θα μπορούσε π.χ. να είναι η διεύθυνση του αρχικού κελλιού της ζώνης της μνήμης που καταλαμβάνει το πρόγραμμα P (x)). Αυτήν την διεύθυνση την ονομάζουμε λxp (x), δηλαδή είναι «η διεύθυνση του προγράμματος P (x) που εξαρτάται από τη μεταβλητή x». Αυτή ακριβώς η λειτουργία μέσα στον υπολογιστή δηλώνεται με τη λ-αφαίρεση στο λ-λογισμό. Μπορούμε τώρα να βάλουμε αυτή τη διεύθυνση στο κελλί μνήμης y η οποία πια γίνεται ένας δείκτης για το πρόγραμμα P (x). Δεν μένει τώρα παρά να ενεργοποιήσουμε το πρόγραμμα Q(y). Τι γίνεται τώρα με την πράξη της αναγωγής; Για την αναγωγή έχουμε τον όρο (λxp (x))t ο οποίος μετασχηματίζεται στον P [x := t]. Ποιά είναι η αντίστοιχη διεργασία στον υπολογιστή; Για να εφαρμόσουμε το πρόγραμμα με διεύθυνση λxp (x) στο πρόγραμμα (όρισμα) με διεύθυνση t, θέτουμε στο κελλί μνήμης x τη διεύθυνση t (μετασχηματίζουμε το x σε δείκτη στο t) και εκτελούμε το πρόγραμμα P. Αφού ο λ-λογισμός αναπαριστά αυτό που γίνεται σε μια υπολογιστική μηχανή δεν είναι καθόλου παράξενο το ότι μπορεί να αναπαραστήσει όλες τις συναρτήσεις που μπορούμε να θεωρήσουμε υπολογίσιμες. Αυτό θα το δούμε λίγο αργότερα. Ας εξετάσουμε τώρα το θέμα της ισότητας μεταξύ δύο όρων. Μπορούμε να θεωρήσουμε ότι δύο όροι είναι «ίσοι» εάν έχουν προκύψει και οι δύο από διαδικασία εκτέλεσης υπολογισμών με την ίδια αφετηρία. Αυτή η έννοια γενικεύεται και στην περίπτωση της αναγωγής β δίνει τη β-ισότητα. Ορισμός. Η σχέση = β (β-ισότητα) είναι η μεταβατική, αυτοπαθής, συμμετρική κλειστότητα της σχέσης β, δηλαδή η = β είναι η μικρότερη σχέση που είναι κλειστή για τους ακόλουθους κανόνες: P β P P = β P P = β P P = β P P = β P P = β P P = β P P = β P Πρόταση. Ισχύει η πρόταση: M = β N Υπάρχουν M 1, M 2,... M n με M M 1 και N M n και για κάθε i (1 i n 1) έχουμε M iβ M i+1 ή M i+1β M i 20
Προοφ. Οπως και στις προηγούμενες περιπτώσεις. Παράδειγμα. Ισχύουν τα παρακάτω: (λx. x x) λz. z β x x[x := λz. z] = (λz. z)λy. y (λz. z) λy. y β z[z := λy. y] = λy. y (λx. x x) λz. z β λy. y (λx. x) y z = β y ((λx. x) z) redex {}}{ διότι (λx. x) y z β y z και y ((λx. x) z) }{{} redex Κάποια επιπρόσθετα σχόλια β Η απλή διαισθητική ερμηνεία των λ-όρων είναι ότι εκφράζουν συναρτήσεις και εφαρμογές συναρτήσεων σε μία καθαρή μορφή. Για παράδειγμα, ο λ-όρος I = λx. x εκφράζει την ταυτοτική συνάρτηση που περιγράφτηκε στην εισαγωγή (προκαταρκτικά). Βέβαια, ως όρος είναι μία τυπική έκφραση που γράφεται με τη χρήση συμβόλων ενός δεδομένου αλφαβήτου, τα σύμβολα λ, x, κ.λπ. Η διαφορά μεταξύ ενός όρου και της συνάρτησης που εκφράζει είναι ανάλογη αυτής που υπάρχει μεταξύ ενός προγράμματος που γράφεται σε μία γλώσσα και της συνάρτησης (δηλ. ενός συνόλου ζευγών) που υπολογίζει. Η συνάρτηση H που για κάθε αντικείμενο - όρισμα επιστρέφει την ταυτοτική συνάρτηση μπορεί να θεωρηθεί ότι εκφράζεται από τον όρο K = λy. λx. x επειδή ακριβώς K M = β λx.x I. Αυτό το φαινόμενο είναι βέβαια γνωστό από τον προγραμματισμό όπου μια συνάρτηση μπορεί να επιστρέφει ως αποτέλεσμα μια συνάρτηση. Ο όρος K = λy. λx. y δηλώνει τη συνάρτηση που σε κάθε όρισμα επιστρέφει τη συνάρτηση η οποία σε κάθε όρισμα επιστρέφει το προηγούμενο όρισμα, δηλαδή αν M είναι το όρισμα τότε K M β λx. M και αν N ένα οποιοδήποτε όρισμα τότε K M N β (λx. M) Ν β Μ. Επίσης, μπορεί να θεωρηθεί ως μία συνάρτηση «2 μεταβλητών» (currying) όπου σε κάθε ζεύγος ορισμάτων επιστρέφεται το πρώτο όρισμα. Η διαδικασία υπολογισμού τυποποιείται με τη β-αναγωγή. Δηλαδή, το redex που υπάρχει σε ένα όρο «υπολογίζεται» όταν το αντικαταστήσουμε με το contractum. Η σχέση β τυποποιεί τη διαδικασία ενός συνολικότερου υπολογισμού. Επίσης, η σχέση = β «ταυτίζει» δύο όρους που διαισθητικά μπορούν να θεωρηθούν υπολογιστικά ισοδύναμοι, δηλαδή ισοδύναμοι ως προς την ένταση. Ενας όρος μπορεί να ανάγεται και στον εαυτό του π.χ. αν ω = λx. x x. Τότε Ω = ω ω και έχουμε Ω = ω ω = (λx. x x) λx. x x β ω ω = Ω. Οπότε y z Ω β Ω β Ω β Ω β... 21
Το Ω είναι ένα παράδειγμα όρου, όπου ένας υπολογισμός που έχει αφετηρία αυτόν τον όρο δεν τερματίζει ποτέ. όρος ΤΟ ΘΕΩΡΗΜΑ CHURCH ROSSER Κάθε όρος M μπορεί να περιέχει αρκετά (περισσότερα του ενός) β-redex, π.χ. ο redex {}}{ K (I I) = λy. λx. y ((λz. z) λw. w) }{{} redex Μπορούμε να έχουμε K (I I) β λx. (I I), αλλά και K (I I) β K I. Οπότε με αφετηρία έναν όρο M μπορούμε να έχουμε διαφορετικά «μονοπάτια υπολογισμού» M β M 1 και M β M 2. Πώς σχετίζονται οι όροι M 1 και M 2 Το θεώρημα Church Rosser λέει πως σε αυτή την περίπτωση υπάρχει πάντοτε ένας (κοινός) όρος M 3, στον οποίο οι M 1 και M 2 μπορούν να συγκλίνουν, δηλαδή M 1β M 3 και M 2β M 3. Θεώρημα. [Church Rosser] Εάν M β M 1 και M β M 2, τότε υπάρχει M 3 ώστε M 1β M 3 και M 2β M 3. Ορισμός. Εστω M β N και N είναι β-κανονική μορφή. Τότε ο όρος N λέγεται β-κανονική μορφή του M. Πόρισμα. Κάθε όρος μπορεί να έχει (αν έχει) μόνον μία κανονική μορφή. Προοφ. Αν M 1 και M 2 δύο κανονικές μορφές του M, τότε από το τη:ςηυρςηροσσερ θα υπήρχε όρος M 3 ώστε M 1β M 3 και M 2β M 3. Αλλά επειδή M 1 κανονική μορφή τότε M 1 M 3 και ομοίως M 2 M 3. Οπότε M 1 M 2. Σχόλιο. Δεν έχουν όλοι οι όροι κανονικές μορφές, π.χ. ο όρος Ω. Αν όμως υπάρχει, τότε θα είναι μοναδική. Αν φανταστούμε μία διαδικασία υπολογισμού (αναγωγή) της κανονικής μορφής τότε το θεώρημα Church Rosser εξασφαλίζει ότι η κανονική μορφή που υπολογίζεται είναι ανεξάρτητη από τον τρόπο υπολογισμού. Το φαινόμενο είναι ανάλογο με τον υπολογισμό αριθμητικών-αλγεβρικών εκφράσεων στα μαθηματικά. Π.χ. όταν υπολογίζουμε την έκφραση (5 + 3) (4 + 7) (11 + 3) το αποτέλεσμα θα είναι ανεξάρτητο από τη σειρά και από τον τρόπο που θα επιλέξουμε να την υπολογίσουμε. Το θεώρημα Church Rosser μας δίνει την δυνατότητα ενός χαρακτηρισμού της β-ισότητας. Πόρισμα. Ισχύει το παρακάτω: M = β N Υπάρχει όρος L ώστε Μ β L και N β L. 22
Προοφ. ( ) Προφανές από προπ:βετα-εχυ. ( ) Εστω R διμελής σχέση στο L που ορίζεται από το δεξιό σκέλος της πρότασης, δηλαδή M R N αν και μόνο αν υπάρχει L ώστε M β L και N β L. Η σχέση R είναι προφανώς αυτοπαθής και συμμετρική. Επίσης, περιέχει τη σχέση β, διότι αν M β N τότε υπάρχει L(L N) ώστε M β L και N β L. Η σχέση R είναι και μεταβατική, διότι έστω M R N και N R N. Τότε M β L και N β L, για κάποιο L, και N β L και N β L, για κάποιο L. Από το θεώρημα Church Rosser, υπάρχει L ώστε L β L και L β L. Οπότε και τελικά (επειδή β μεταβατική) M β L και N β L, δηλαδή M R N. Συμπεραίνουμε ότι η R είναι αυτοπαθής, συμμετρική, μεταβατική και περιέχει τη β, άρα περιέχει και την = β ως μικρότερη τέτοια σχέση. Πόρισμα. N είναι η (μοναδική) β-κανονική μορφή του M N είναι κανονική μορφή και M = β N. Πόρισμα. Αν M β N, M β L και N, L κανονικές μορφές, τότε N L. Πόρισμα. Ο λ-λογισμός ως θεωρία της β-ισότητας είναι συνεπής θεωρία, δηλαδή υπάρχει ένα ζεύγος M και N λ-όρων που δεν είναι β-ισοδύναμοι 6. Προοφ. λx. x β λx. λy. x. * ΕΚΦΡΑΣΙΜΟΤΗΤΑ ΚΑΙ ΑΝΑΠΟΚΡΙΣΙΜΟΤΗΤΑ Στο λ-λογισμό μπορούμε να ορίσουμε τα στοιχεία (αριθμούς, συναρτήσεις) που αφορούν στους συνήθεις υπολογισμούς. Με αυτή την έννοια ο λ-λογισμός μπορεί να νοηθεί ως μία εναλλακτική τυποποίηση της θεωρίας αναδρομής. Ορισμός. Αν F, A Λ για κάθε n N ορίζουμε το F n (M) Λ ως ακολούθως: F 0 (M) = M F n+1 (M) = F (F n (M)) Π.χ. F 3 (M) = F (F (F M)). Το F n (M) μπορεί να θεωρηθεί ως n διαδοχικές εφαρμογές της συνάρτησης F στο όρισμα M. Ορισμός. [Νούμερα του Church] Για n N, τα νούμερα του Church c 0, c 1, c 2,... ορίζονται ως: c n λfx. f n (x) Τα νούμερα του Church c n είναι οι αναπαραστάσεις των αριθμών n N στον λ-λογισμό. Τα c n είναι όλα σε κανονική μορφή. Παράδειγμα. Ακολουθούν μερικά νούμερα του Church: 6 Το εντελώς ανάλογο ισχύει και στη λογική. Αν ορίσουμε τη συνέπεια ως αδυναμία να αποδείξουμε στην τυπική θεωρία μία αντίφαση της μορφής p p, τότε ο ορισμός αυτός είναι ισοδύναμος με την ιδιότητα να υπάρχει τουλάχιστον μία πρόταση που να μην αποδεικνύεται σ αυτό το σύστημα. 23
c 0 λf. λx. x c 1 λf. λx. f x c 2 λf. λx. f (f x) Μπορούμε να ορίσουμε αναπαραστάσεις των συνήθων αριθμητικών συναρτήσεων; Η ακόλουθη πρόταση μας λέει πώς ναι. Πρόταση. Υπάρχουν όροι A +, A, A exp για τους οποίους ισχύει: 1. A + c n c m = β c n+m (A + αναπαριστά την πρόσθεση) 2. A c n c m = β c nm (A αναπαριστά τον πολλαπλασιασμό) 3. Αν m > 0 τότε A exp c n c m = β c (n m ) (A exp αναπαριστά την ύψωση σε δύναμη) Προοφ. (Rosser): Ορίζουμε τους όρους ως εξής: 1. A + λxypq. x p (y p q) 2. A λxyz. x (y z) 3. A exp λxy. y x Εχουμε λοιπόν: (1) Για το A + : A + c n c m = β λp. λq. c n p (c m p q) = β λp. λq. (λx. p n (x)) p m (q) = β λp. λq. p n (p m (q)) = β λp. λq. p n+m (q) (2) Για το A : c n+m A c n c m = β λz. c n (λw. z m (w)) = β λz. (λf. λx. (f (f ( (f x) )))) (λw. z m (w)) }{{} n φορές = β λz. λx. ((λw. z m (w)) ((λw. z m (w)) ( ((λw. z m (w)) x) ))) }{{} n φορές = β λz. λx. ((λw. z m (w)) ((λw. z m (w)) ( ((λw. z m (w)) z m (x)) ))) }{{} n 1 φορές = β λz. λx. ((λw. z m (w)) ((λw. z m (w)) ( ((λw. z m (w)) z m+m (x)) ))) }{{} n φορές {}}{ = β λz. λx. zm + + m (x) = β λz. λx. z nm (x) (3) Για το A exp, με m 1: c nm 24 n 2 φορές
A exp c n c m = β c m c n (λz. λf. z m (f)) (λz. λw. z n (w)) = β λf. (λz. λw. z n (w)) (λz. λw. z n (w)) f }{{} m φορές = β λf. (λz. λw. z n (w)) (λz. λw. z n (w)) λw. f n (w) }{{} m 1 φορές = β λf. (λz. λw. z n (w)) (λz. λw. z n (w)) λw. f nn (w) }{{} m φορές {}}{ = β λf. λw. fn n (w) m 2 φορές c (nm ) Σχόλιο. Η ισότητα = β δηλώνει μάλλον την ισότητα των συναρτήσεων ως προς την ένταση. Βέβαια, αν M = β N, τότε οι M και N δηλώνουν ως προς την έκταση την ίδια συνάρτηση, γιατί τότε M Z = β N Z, για κάθε Z. Θεωρείστε τώρα τους όρους A s λx. λs. λz. s (x s z) και A s λx. λs. λz. x s (s z). Ισχύει ότι A s c n = β c n+1 A s c n = β c n+1 Δηλαδή και οι δύο όροι αναπαριστούν στον λ-λογισμό τη συνάρτηση S του επόμενου (S(n) = n + 1). Αλλά A s β A s Στη συνέχεια, θα δούμε ότι μπορούμε να αναπτύξουμε στον λ-λογισμό όλες τις προγραμματιστικές τεχνικές, δηλαδή να ορίσουμε τις αληθοτιμές Boole, το if...then...else, τα ζεύγη κ.λπ. Ορισμός. true λx. λy. x false λx. λy. y Ορισμός. Ορίζουμε (B, P, Q όροι) if B then P else Q B P Q Τότε βέβαια έχουμε ότι if true then P else Q = β P if false then P else Q = β Q Δηλαδή στον όρο «if B then P else Q» εάν το B υπολογιστεί να είναι true «επιστρέφεται» το P, αν το B υπολογιστεί να είναι false «επιστρέφεται» το Q. Ορισμός. Ορίζουμε 25
[P, Q] λx. x P Q π 1 λx. λy. x true (πρώτη προβολή) π 2 λx. λy. y false (δεύτερη προβολή) Τότε έχουμε ότι [P, Q] π 1 = β P [P, Q] π 2 = β Q Οντως, [P, Q] π 1 (λx. x P Q) (λx. λy. x) = β (λx. λy. x) P Q = β (λy. P ) Q = β P Ομοίως για τη δεύτερη προβολή. Ορισμός. Ορίζουμε (i) Αριθμητική συνάρτηση είναι μια συνάρτηση f : N m N (ii) Μία αριθμητική συνάρτηση f : N m N (m μεταβλητών) είναι λ-ορίσιμη ή λ-αναπαραστάσιμη εάν υπάρχει όρος F Λ έτσι ώστε F c n1 c n2 c nm = β c f(n1,n 2,...n m) για όλα τα n 1, n 2,... n m N.Λέμε τότε ότι ο F ορίζει ή αναπαριστά (στο λ-λογισμό) την συνάρτηση f Σχόλιο. Εάν F c n1 c n2 c nm = β c f(n1,n 2,...n m) και επειδή c f(n1,n 2,...n m) είναι σε κανονική μορφή, από το θεώρημα Church Rosser θα έχουμε ότι F c n1 c n2 c nm βc f(n1,n 2,...n m) Στη συνέχεια θα ορίσουμε την κλάση των αναδρομικών συναρτήσεων. Ορισμός. Η κλάση των αναδρομικών συναρτήσεων είναι η μικρότερη κλάση των αριθμητικών συναρτήσεων που περιλαμβάνει τις αρχικές συναρτήσεις: (i) προβολές: Ui m (n 1,... n m ) = n i, για όλα τα i με 1 i m (ii) επόμενος: S(n) = n + 1 (iii) μηδενική: Z(n) = 0 και είναι κλειστή για τη σύνθεση, την πρωτογενή αναδρομή και την ελαχιστοποίηση: (i) σύνθεση: αν g : N k N και h 1,... h k : N m N είναι αναδρομικές, τότε είναι αναδρομική και η f : N m N που ορίζεται από το ακόλουθο σχήμα f(n 1,... n m ) = g(h 1 (n 1,... n m ),... h k (n 1,... n m )) (ii) πρωτογενής αναδρομή: αν g : N m N και h : N m+2 N είναι αναδρομικές, τότε και η f : N m+1 N που ορίζεται από το ακόλουθο σχήμα είναι αναδρομική 26
f(0, n 1,... n m ) = g(n 1,... n m ) f(n + 1, n 1,... n m ) = h(f(n, n 1,... n m ), n, n 1,... n m ) (iii) ελαχιστοποίηση: αν g : N m+1 N είναι αναδρομική και αν για όλα τα n 1,... n m υπάρχει n ώστε g(n, n 1,... n m ) = 0, τότε και η f : N m N που ορίζεται από το παρακάτω σχήμα είναι αναδρομική f(n 1,... n m ) = µn.g(n, n 1,... n m ) = 0 όπου µn.g(n, n 1,... n m ) = 0 δηλώνει τον μικρότερο αριθμό n για τον οποίο ισχύει η g(n, n 1,... n m ) = 0. Σημειώνεται ότι έχουμε προϋποθέσει την ύπαρξη ενός τέτοιου n για κάθε n 1,... n m, άρα και την ύπαρξη ενός τέτοιου ελάχιστου. Σχόλιο. Η μικρότερη κλάση αριθμητικών συναρτήσεων που περιλαμβάνει τις αρχικές συναρτήσεις και είναι κλειστή για τη σύνθεση και την πρωτογενή αναδρομή είναι η κλάση των πρωτογενών αναδρομικών συναρτήσεων. Ενώ αυτή που περιλαμβάνει τις αρχικές συναρτήσεις και είναι κλειστή για τη σύνθεση και την ελαχιστοποίηση (χωρίς το σχήμα της πρωτογενούς αναδρομής) αποδεικνύεται ότι είναι ίση με την κλάση των αναδρομικών συναρτήσεων που ορίστηκε πιο πάνω, δηλαδή το σχήμα της αναδρομής μπορεί να οριστεί με βάση το σχήμα της ελαχιστοποίησης. Η κλάση των πρωτογενών αναδρομικών συναρτήσεων είναι γνήσια υποκλάση των αναδρομικών συναρτήσεων, π.χ. η συνάρτηση Ackermann 7 είναι αναδρομική χωρίς να είναι πρωτογενής αναδρομική. Η κλάση των αναδρομικών συναρτήσεων γενικά πιστεύεται ότι συμπίπτει με την κλάση των υπολογίσιμων συναρτήσεων, δηλαδή των συναρτήσεων που μπορούν να υπολογιστούν με βάση ένα αλγόριθμο ή αλλιώς με τη χρήση οδηγιών μηχανικού υπολογισμού (Αίτημα του Church). Στη συνέχεια, θα δούμε ότι όλες οι αναδρομικές συναρτήσεις είναι λ-ορίσιμες. Λήμμα. Οι αρχικές συναρτήσεις είναι λ-ορίσιμες. Προοφ. Εστω g : N k N είναι λ-ορίσιμη από τον όρο G Λ και h 1,... h k : N m N είναι λ-ορίσιμες από τους H 1,... H k Λ, αντίστοιχα. Τότε η f(n 1,... n m ) = g(h 1 (n 1,... n m ),... h k (n 1,... n m )) είναι λ-ορίσιμη από τον F λx 1... λx m. G (H 1 x 1 x m ) (H k x 1 x m ) 7 Η συνάρτηση Ackermann A (x, y) ορίζεται για κάθε x, y R ως εξής: y + 1 αν x = 0 A (x, y) = A (x 1, 1) αν y = 0 A (x 1, A (x, y 1)) διαφορετικά 27
Λήμμα. Οι λ-ορίσιμες συναρτήσεις είναι κλειστές για το σχήμα της πρωτογενούς αναδρομής. Προοφ. Η απόδειξη είναι αρκετά ευφάνταστη. Εστω g : N m N είναι λ-ορίσιμη από τον G Λ και h : N m+2 N είναι λ-ορίσιμη από τον H Λ. Τότε πρέπει να βρούμε F Λ που να ορίζει στο λ-λογισμό τη συνάρτηση f(0, n 1,... n m ) = g(n 1,... n m ) f(n + 1, n 1,... n m ) = h(f(n, n 1,... n m ), n, n 1,... n m ) Η ιδέα είναι να παραστήσουμε με διατεταγμένα ζεύγη τα ζεύγη [n, f(n)], όπου f(n) η τιμή της συνάρτησης στο όρισμα n. Για να το πετύχουμε αυτό θα πρέπει να αρχίσουμε από το ζεύγος [0, g(n 1,... n m )] και να επαναλάβουμε n φορές έναν τελεστή next που θα έχει την ιδιότητα next ([n, x]) = [n + 1, h(x, n, n 1,... n m )] Ο λ-όρος που θα έχει αυτή την ιδιότητα μπορεί να είναι ο next λp. [S(p π 1 ), H (p π 2 )(p π 1 )x 1 x m ] Η επανάληψη κατά n φορές του next μπορεί να επιτευχθεί χρησιμοποιώντας το νούμερο c n, διότι c n next N = β (next) n (N). Οπότε αν ξεκινήσουμε με N [c 0, G x 1 x m ] (που παριστάνει το [0, g(n 1,... n m )]) τότε το c n next N θα είναι η επανάληψη του [0, g(n 1,... n m )] κατά n φορές, άρα το ζεύγος [n, f(n)]. Και σάυτό το ζεύγος μπορούμε να εξαγάγουμε τη δεύτερη συνιστώσα χρησιμοποιώντας το π 2. Οπότε τελικά ο όρος F θα είναι F λx. λx 1.... λx m. x next [c 0, G x 1 x m ] π 2 28
Πριν προχωρήσουμε στο να αποδείξουμε ότι το σχήμα της ελαχιστοποίησης μπορεί να οριστεί στο λ-λογισμό, θα δούμε πρώτα πώς μπορεί να εκφραστεί γενικότερα η αναδρομή στο λ-λογισμό. Θεώρημα. [Θεώρημα του Σταθερού Σημείου] (i) Για κάθε F Λ υπάρχει ένας X Λ ώστε F X = β X (X είναι σταθερό σημείο του F ) (ii) Υπάρχει ένας συνδυαστής σταθερού σημείου Y Λ ώστε για όλα τα F Λ F (Y F ) = β Y F [δηλαδή για κάθε F, Y F είναι σταθερό σημείο του F ] Προοφ. Εστω Y λf. (λx. f (x x)) λx. f (x x). Τότε Y F (λf. (λx. f (x x)) λx. f (x x)) F = β (λx. F (x x)) λx. F (x x) = β F ((λx. F (x x)) λx. F (x x)) = β F (Y F ) [διότι Y F β (λx. F (x x)) λx. F (x x)] Πόρισμα. Δοθέντος λ-όρου M M[f] που ενδεχομένως έχει ως ελεύθερη μεταβλητή την f, υπάρχει F Λ ώστε Προοφ. Πρέπει F = β M[f := F ] = β (λf. M) F F = β M[f := F ] Οπότε αρκεί να επιλέξουμε τον F ως το σταθερό σημείο του λf. M, δηλαδή F Y (λf. M) Σχόλιο. Το ως άνω πόρισμα μπορεί να διατυπωθεί ως εξής: Η εξίσωση x = β M μπορεί να λυθεί ως προς x, ή γενικότερα η εξίσωση x y 1 y n = β M μπορεί να λυθεί ως προς x, δηλαδή υπάρχει F ώστε Y 1,... Y n, F Y 1 Y n = β M [x := F ][y 1 := Y 1 ] [y n := Y n ] Αρκεί να ορίσουμε F Y (λx y 1... y n. M). Ως μία εφαρμογή, μπορούμε να κατασκευάσουμε όρους F και G ώστε για κάθε X, Y Λ να ισχύουν 29
F X = β X F G X Y = β Y G (Y X G) Λήμμα. Οι λ-ορίσιμες συναρτήσεις είναι κλειστές για την ελαχιστοποίηση. Προοφ. Εστω g : N m+1 N λ-ορίσιμη από τον G Λ και έστω ότι για όλα τα n 1,... n m υπάρχει n ώστε g(n, n 1,... n m ) = 0. Θέλουμε να ορίσουμε στον λ-λογισμό την f(n 1,... n m ) = µm. g(m, n 1,... n m ) = 0 Ορίζουμε μία συνάρτηση zero που ελέγχει αν ένα αριθμητικό όρισμα είναι 0 ή όχι zero λn. n (true false) true Τότε zero c 0 = β true zero c n+1 = β false Η ιδέα είναι η εξής: Θα ξεκινήσουμε από το g(0, n 1,... n m ) και θα ελέγχουμε το κάθε g(n, n 1,... n m ). Αν αυτό είναι 0, τότε θα επιστρέφουμε το n (δηλαδή το πρώτο n που θα ικανοποιεί την g(n, n 1,... n m ) = 0). Αν όχι θα ελέγχουμε το g(n + 1, n 1,... n m ). Η διαδικασία αυτή του διαδοχικού ελέγχου επιτυγχάνεται μέσω μίας συνάρτησης H, η οποία θα ικανοποιεί το ακόλουθο σχήμα H y x 1 x m = β if (zero (G y x 1 x m )) then y else H (S y) x 1 x m Από το θεώρημα του σταθερού σημείου υπάρχει όρος H που ικανοποιεί την ως άνω εξίσωση. Ορίζουμε F λx 1 x n. H c x 1 x n, οπότε F c n1 c nm = β H { c 0 c n1 c nm c 0, αν G c 0 c n1 c nm = β c 0 = β { H c 1 c n1 c nm, διαφορετικά c 1, αν G c 1 c n1 c nm = β c 0 = β H c 2 c n1 c nm, διαφορετικά κ.ο.κ [κάποτε θα σταματήσει στο ελάχιστο] Θεώρημα. Ολες οι αναδρομικές συναρτήσεις είναι λ-ορίσιμες. Προοφ. Από τα προηγούμενα λήμματα. 30
Σχόλιο. Το αντίστροφο επίσης ισχύει. Δηλαδή κάθε λ-ορίσιμη αριθμητική συνάρτηση είναι αναδρομική. Το αποτέλεσμα μπορεί να επεκταθεί και στις μερικές συναρτήσεις. Ετσι, λοιπόν, έχουμε μία πλήρη ταύτιση μεταξύ των (μερικών) αναδρομικών συναρτήσεων και των λ-ορίσιμων συναρτήσεων. Και οι δύο αυτοί φορμαλισμοί σκοπεύουν να ορίσουν με ακριβή τρόπο την έννοια της υπολογίσιμης συνάρτησης. Μία άλλη προσέγγιση, είναι ο φορμαλισμός του Turing και οι Turing-υπολογίσιμες συναρτήσεις. Η ισοδυναμία όλων αυτών των προσεγγίσεων ενισχύει την πεποίθηση ότι οι αναδρομικές συναρτήσεις ταυτίζονται με τις (είναι ο σωστός τρόπος να οριστούν οι) υπολογίσιμες συναρτήσεις. Στη συνέχεια, θα δώσουμε κάποια αποτελέσματα αναποκρισιμότητας. Εστω η συνάρτηση, : N 2 N, μία 1 1 και επί αναδρομική απεικόνιση. Δηλαδή κάθε ζεύγος (n, m) φυσικών αριθμών παίρνει ένα μοναδικό κωδικό αριθμό n, m. Παράδειγμα. Ορίστε μία τέτοια συνάρτηση. Υπόδειξη: Για κάθε n διατάξτε τα ζεύγη (x, y) ώστε x + y = n. Δηλαδή (0, 0), (0, 1), (1, 0), (0, 2), (1, 1), (2, 0), κ.ο.κ. }{{}}{{}}{{} x+y=0 x+y=1 x+y=2 και ορίστε τη συνάρτηση διάταξης. Θα δώσουμε τώρα σε κάθε όρο L Λ ένα μοναδικό κωδικό #(L). Με επαγωγή στους όρους: n φορές n φορές {}}{{}}{ #(u ) = 0, n, όπου u είναι η n οστή μεταβλητή #(M N) = 2, #(M), #(N) #(λx. M) = 3, #(x), #(M) Συμβολίζουμε με M το c #(M) δηλαδή το M είναι ο όρος (νούμερο Church) που αναπαριστά στο λ-λογισμό τον κωδικό του M. Ορισμός. Εστω A Λ. (1) A είναι κλειστό για το = β αν M A, M = β N N A (2) A είναι μη-τετριμμένο αν A και A Λ (3) A είναι αναδρομικό αν το σύνολο #A = {#M M A} είναι αναδρομικό 8 Θεώρημα. Εστω A Λ μη-τετριμμένο και κλειστό για την ισότητα = β. Τότε το A δεν είναι αναδρομικό. 8 Ενα υποσύνολο των φυσικών αριθμών A είναι αναδρομικό εάν η χαρακτηριστική του συνάρτηση fa, που ορίζεται ως f A = 0 αν x A και f A = 1 αν x / A, είναι αναδρομική. Σύμφωνα με το αίτημα του Church ένα σύνολο είναι αναδρομικό στην περίπτωση που μπορούμε να αποφασίσουμε αλγοριθμικά αν ένας αριθμός ανήκει στο σύνολο ή όχι.} 31