ΠΕΤΡΟΣ ΣΤΕΦΑΝΕΑΣ ΓΙΩΡΓΟΣ ΚΟΛΕΤΣΟΣ ΕΦΑΡΜΟΓΕΣ ΤΗΣ ΛΟΓΙΚΗΣ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Σχετικά έγγραφα
{1 x2 }, 1 + x + + xn +

Εφαρμογές της Λογικής στην Πληροφορική

Εφαρμογές της Λογικής στην Πληροφορική

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr

Περιεχόμενα 1 Πρωτοβάθμια Λογική Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων ) / 60

Αριθμητική Ανάλυση και Εφαρμογές

Υπολογίσιμες Συναρτήσεις

Περιεχόμενα. Πρόλογος 3

f(t) = (1 t)a + tb. f(n) =

Κατηγορηματικός Λογισμός (ΗR Κεφάλαιο )

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

M. J. Lighthill. g(y) = f(x) e 2πixy dx, (1) d N. g (p) (y) =

4. Ο,τιδήποτε δεν ορίζεται με βάση τα (1) (3) δεν είναι προτασιακός τύπος.

Σημειώσεις Λογικής I. Εαρινό Εξάμηνο Καθηγητής: Λ. Κυρούσης

ΜΕΓΙΣΤΙΚΟΣ ΤΕΛΕΣΤΗΣ 18 Σεπτεμβρίου 2014

Ε π ι μ έ λ ε ι α Κ Ο Λ Λ Α Σ Α Ν Τ Ω Ν Η Σ

Σχήματα McCarthy I. Το σχήμα McCarthy είναι ένα γενικότερο προγραμματιστικό σχήμα:

ΚΕΦΑΛΑΙΟ 3 ΤΟ ΔΙΩΝΥΜΙΚΟ ΘΕΩΡΗΜΑ

Μεταθέσεις και πίνακες μεταθέσεων

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

h(x, y) = card ({ 1 i n : x i y i

Αριθμητική Ανάλυση και Εφαρμογές

Κεφάλαιο 10 Λάμβδα λογισμός

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Ε Μέχρι 18 Μαΐου 2015.

Κεφάλαιο 5. Το Συμπτωτικό Πολυώνυμο

(ii) X P(X). (iii) X X. (iii) = (i):

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Μ Α Θ Η Μ Α Τ Α Γ Λ Υ Κ Ε Ι Ο Υ

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

Θεωρία Υπολογισμού και Πολυπλοκότητα Μαθηματικό Υπόβαθρο

ΚΕΦΑΛΑΙΟ 3: Συνθήκες Αλυσίδων

Υπολογιστικά & Διακριτά Μαθηματικά

Κανονικές Γλώσσες. Κανονικές Γλώσσες. Κανονικές Γλώσσες και Αυτόματα. Κανονικές Γλώσσες και Αυτόματα

f(x) = και στην συνέχεια

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΣΗΜΕΙΩΣΕΙΣ. x A αντιστοιχίζεται (συσχετίζεται) με ένα μόνο. = ονομάζεται εξίσωση της

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

Υπολογιστικά & Διακριτά Μαθηματικά

x < A y f(x) < B f(y).

Κεφάλαιο 9 Συναρτησιακός προγραμματισμός Υπολογισμός με συναρτήσεις

Αλγόριθμοι για αυτόματα

Μηχανές Turing (T.M) I

Υπολογιστικά & Διακριτά Μαθηματικά

Δύο λόγια από τη συγγραφέα

Κεφάλαιο 1 Πρότυπα. Στο κεφάλαιο αυτό εισάγουμε την έννοια του προτύπου πάνω από δακτύλιο.

Περιεχόμενα. Πρόλογος 3

CSC 314: Switching Theory

Αριθμήσιμα σύνολα. Μαθηματικά Πληροφορικής 5ο Μάθημα. Παραδείγματα αριθμήσιμων συνόλων. Οι ρητοί αριθμοί

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Φυσικής Σημειώσεις Ανάλυσης Ι (ανανεωμένο στις 5 Δεκεμβρίου 2012)

f(f 1 (B)) f(f 1 (B)) B. X \ (f 1 (C)) = X \ f 1 (C) = f 1 (Y \ C) X \ (f 1 (C)) f 1 (Y \ C). f 1 (Y \ C) = f 1 (Y \ C ) = X \ f 1 (C ).

Μιχάλης Παπαδημητράκης. Αρμονική Ανάλυση. Τμήμα Μαθηματικών. Πανεπιστήμιο Κρήτης

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

p p p q p q p q p q

Μαθηματική Λογική και Λογικός Προγραμματισμός

Μη επιλυσιμότητα I. Απόδειξη. Ορίζουμε # # =

Πανεπιστήμιο Αθηνών Τμήμα Φυσικής

(a + b) + c = a + (b + c), (ab)c = a(bc) a + b = b + a, ab = ba. a(b + c) = ab + ac

num(m(w 1 ;... ; w k )) = f(num(w 1 ),..., num(w k ))

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Δώστε έναν επαγωγικό ορισμό για το παραπάνω σύνολο παραστάσεων.

ΚΕΦΑΛΑΙΟ 2: Ημιαπλοί Δακτύλιοι

a = a a Z n. a = a mod n.

Αριθμητική Ανάλυση & Εφαρμογές

Ας ξεκινήσουμε υπενθυμίζοντας τον ορισμό της συνέχειας σε μετρικούς χώρους. διατυπώνεται και με τον ακόλουθο τρόπο: για κάθε σφαίρα

ΑΝΑΛΥΣΗ 1 ΠΕΜΠΤΟ ΜΑΘΗΜΑ, Μ. Παπαδημητράκης.

Τι είναι βαθμωτό μέγεθος? Ένα μέγεθος που περιγράφεται μόνο με έναν αριθμό (π.χ. πίεση)

8. Πολλαπλές μερικές παράγωγοι

(a) = lim. f y (a, b) = lim. (b) = lim. f y (x, y) = lim. g g(a + h) g(a) h g(b + h) g(b)

Ψηφιακή Σχεδίαση Εργαστήριο Τ.Ε.Ι. ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜ. ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ

Μαθηματικά. Ενότητα 2: Διαφορικός Λογισμός. Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)

Αριθμητική Ανάλυση και Εφαρμογές

ΚΕΦΑΛΑΙΟ 1: Πρότυπα. x y x z για κάθε x, y, R με την ιδιότητα 1R. x για κάθε x R, iii) υπάρχει στοιχείο 1 R. ii) ( x y) z x ( y z)

Αφαίρεση στον FP. Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός

Υποθετικές προτάσεις και λογική αλήθεια

V (F ) = {(u 1, u 2, u 3 ) P 2 K F (u 1, u 2, u 3 ) = 0}

ΕΝΟΤΗΤΑ 1: ΟΡΙΣΜΟΣ ΠΕΔΙΟ ΟΡΙΣΜΟΥ ΠΡΑΞΕΙΣ ΣΥΝΑΡΤΗΣΕΩΝ ΓΡΑΦΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ ΒΑΣΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΛΥΜΕΝΑ ΘΕΜΑΤΑ ΘΕΜΑ Α

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης

Ισότητα, Αλγεβρικές και Αναλυτικές Ιδιότητες Πραγματικών Ακολουθιών

Φ(s(n)) = s (Φ(n)). (i) Φ(1) = a.

β) 3 n < n!, n > 6 i i! = (n + 1)! 1, n 1 i=1

, για κάθε n N. και P είναι αριθμήσιμα.

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 4: Εισαγωγή / Σύνολα

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ (ΗΥ-119)

K15 Ψηφιακή Λογική Σχεδίαση 4+5: Άλγεβρα Boole

Αριθμητική Ανάλυση και Εφαρμογές

Η έννοια του συνόλου. Εισαγωγικό κεφάλαιο 27

Τα παρακάτω σύνολα θα τα θεωρήσουμε γενικά γνωστά, αν και θα δούμε πολλές από τις ιδιότητές τους: N Z Q R C

Λογική Πρώτης Τάξης. Γιώργος Κορφιάτης. Νοέµβριος Εθνικό Μετσόβιο Πολυτεχνείο

i=1 i=1 i=1 (x i 1, x i +1) (x 1 1, x k +1),

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

Εισαγωγικά Παραδείγματα: Παρατηρήσεις:

Μορφές αποδείξεων Υπάρχουν πολλά είδη αποδείξεων. Εδώ θα δούμε τα πιο κοινά: Εξαντλητική μέθοδος ή μέθοδος επισκόπησης. Οταν το πρόβλημα έχει πεπερασμ

Διαφορικές Εξισώσεις.

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Transcript:

ΠΕΤΡΟΣ ΣΤΕΦΑΝΕΑΣ ΓΙΩΡΓΟΣ ΚΟΛΕΤΣΟΣ ΕΦΑΡΜΟΓΕΣ ΤΗΣ ΛΟΓΙΚΗΣ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΠΕΤΡΟΣ ΣΤΕΦΑΝΕΑΣ ΓΕΩΡΓΙΟΣ ΚΟΛΕΤΣΟΣ Εφαρμογές της Λογικής στην Πληροφορική

Εφαρμογές της Λογικής στην Πληροφορική Συγγραφή Πέτρος Στεφανέας Γεώργιος Κολέτσος Κριτικός αναγνώστης Κωνσταντίνος Δημητρακόπουλος Συντελεστές έκδοσης Γλωσσική Επιμέλεια: Δέσποινα Λαμπαδά Τεχνική Επεξεργασία: Αικατερίνη Ξύστρα ISBN: 978-960-603-368-1 Copyright ΣΕΑΒ, 2015 Το παρόν έργο αδειοδοτείται υπό τους όρους της άδειας Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Όχι Παράγωγα Έργα 3.0. Για να δείτε ένα αντίγραφο της άδειας αυτής επισκεφτείτε τον ιστότοπο https://creativecommons.org/licenses/by-nc-nd/3.0/gr/ ΣΥΝΔΕΣΜΟΣ ΕΛΛΗΝΙΚΩΝ ΑΚΑΔΗΜΑΪΚΩΝ ΒΙΒΛΙΟΘΗΚΩΝ Εθνικό Μετσόβιο Πολυτεχνείο Ηρώων Πολυτεχνείου 9, 15780 Ζωγράφου www.kallipos.gr

Περιεχόμενα ΕΙΣΑΓΩΓΗ 2 ΕΥΧΑΡΙΣΤΙΕΣ 5 ΛΟΓΙΚΗ ΚΑΙ ΣΥΝΑΡΤΗΣΙΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 6 ΠΡΟΚΑΤΑΡΚΤΙΚΑ 6 CHURCH ROSSER 22 ΘΕΩΡΙΑ ΤΥΠΩΝ 35 λ ΛΟΓΙΣΜΟΣ ΜΕ ΑΠΛΟΥΣ ΤΥΠΟΥΣÀ LA CURRY 35 ΕΠΕΚΤΑΣΕΙΣ ΤΟΥ λ ΛΟΓΙΣΜΟΥ ΜΕ ΑΠΛΟΥΣ ΤΥΠΟΥΣ 44 ΕΞΙΣΩΤΙΚΗ ΛΟΓΙΚΗ 55 ΕΦΑΡΜΟΓΕΣ: ΟΙ ΑΛΓΕΒΡΙΚΕΣ ΠΡΟΔΙΑΓΡΑΦΕΣ 109 LISP 121 ΛΙΣΤΕΣ 121 Αποτίμηση 128 ΜΕΤΑΒΛΗΤΕΣ 129 ΣΥΝΘΗΚΕΣ 130 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΧΡΗΣΗ ΕΦΑΡΜΟΓΩΝ 134 ΑΝΑΔΡΟΜΗ 137 ΕΙΣΟΔΟΣ-ΕΞΟΔΟΣ 137 ΕΠΑΝΑΛΗΨΗ 139 Bibliography 142 1

ΕΙΣΑΓΩΓΗ Η λογική παίζει έναν ιδιαίτερα σημαντικο ρόλο τόσο στην θεωρητική, όσο και στην εφαρμοσμένη πληροφορική. Η θεωρία υπολογισμού (computability theory), για παράδειγμα, που έχει βασιστεί κυρίως στις εργασίες του Alonzo Church και του Alan Turing, αποτελεί αναπόσπαστο κομμάτι της μαθηματικής λογικής και της θεωρητικής πληροφορικής. Η αντιστοιχία Curry-Howard (Curry-Howard correspondence) περιγράφει την αντιστοίχιση μεταξύ τυπικών αποδείξεων και λογισμικού. Η σημασιολογική εκδοχή του Παγκόσμιου Ιστού (semantic web) βασίζεται στην περιγραφική λογική (description Logic). Οι αλγεβρικές προδιαγραφές (algebraic specifications) με τη βοήθεια της καθολικής άλγεβρας (universal algebra), της εξισωτικής λογικής (equational logic) και της θεωρίας κατηγοριών (category theory) προσφέρουν το θεωρητικό υπόβαθρο για μια σειρά πεδία της πληροφορικής όπως οι γλώσσες προγραμματισμού και προδιαγραφών και η σημασιολογία τους, η τεχνολογία λογισμικού, η επαλήθευση της ορθότητας προγραμμάτων κα. Στο βιβλίο αυτό παρουσιάζουμε εισαγωγικά τρεις μόνο από τις περιοχές εφαρμογών της λογικής στην πληροφορική: λογική και συναρτησιακός προγραμματισμός (functional programming), θεωρία τύπων (type theory) και εξισωτική λογική με εφαρμογές στις αλγεβρικές προδιαγραφές (algebraic specifications). Ο συναρτησιακός προγραμματισμός ειναι ένα δηλωτικό (declarative) προγραμματιστικό παράδειγμα που βασίζεται στον λ-λογισμό (λ calculus). Ο λ λογισμός είναι ένα τυπικό λογικό σύστημα για την έκφραση της υπολογισιμότητας (computability). Μετά την εισαγωγή του από τον Alonzo Church με σκοπό την τυποποίηση της αποτελεσματικής υπολογισιμότητας (effective computability) συνέβαλε στην αρνητική απάντηση στο Entscheidungsproblem 1 του Hilbert. Με τη βοήθεια του λ λογισμού με τύπους διατυπώνεται στη συνέχεια η αντιστοιχία Curry-Howard «των αποδείξεων ως προγραμμάτων (proofs as programs)». Τέλος, η εξισωτική λογική και οι αλγεβρικές προδιαγραφές δίνουν ένα βασικό πλαίσιο αναφοράς τόσο στην αυτόματη απόδειξη θεωρημάτων (automated theorem proving), όσο και στην τεχνολογία λογισμικού και 1 Entscheidungsproblem ( πρόβλημα απόφασης ) ονομάζεται μία πρόκληση που έθεσε ο Hilbert το 1928. Το Entscheidungsproblem ζητάει έναν αλγόριθμο που να παίρνει είσοδο μία πρόταση της πρωτοβάθμιας λογικής (πιθανώς με πεπερασμένο αριθμό αξιωμάτων πέρα από τα συνήθη αξιώματα της πρωτοβάθμιας λογικής) και να απαντάει Ναι ή Οχι σύμφωνα με το αν η πρόταση έχει καθολική ισχύ (υνι ερσαλλψ αλιδ), δηλαδή αν ισχύει σε κάθε δομή που ικανοποιεί τα αξιώματα. 2

ειδικότερα στις τυπικές μεθόδους (formal methods). Η καθολική άλγεβρα (universal algebra) και η θεωρία κατηγοριών (category theory) μπορούν να χρησιμοποιηθούν για να εκφράσουν με μαθηματικό τρόπο τη σημασιολογία των προγραμμάτων και των προδιαγραφών (specifications) συστημάτων. Ο λ λογισμός και η θεωρία κατηγοριών (με την εκδοχή της στη θεωρία της πληροφορικής) γεννήθηκαν και αναπτύχθηκαν μέσα από την κριτική ενασχόληση των μαθηματικών με τα θεμέλια της επιστήμης τους. Και τα δύο έχουν ως αφετηρία την έννοια της συνάρτησης ο μεν λ λογισμός τη συνάρτηση νοούμενη ως κανόνα υπολογισμού, η δε θεωρία κατηγοριών αφηρημένη, αποδεσμευμένη από κάθε ιδιαίτερη ιδιότητα και έννοια αλγεβρικού μετασχηματισμού. Η αρχική τους φιλοδοξία ήταν να δημιουργήσουν ένα γενικό πλαίσιο μέσα στο οποίο θα θεμελιώνονταν τα μαθηματικά, αντικαθιστώντας κατά κάποιο τρόπο την κυρίαρχη θεμελιωτική θεωρία, τη θεωρία συνόλων. Μπορεί να μην πέτυχαν τον αρχικό τους στόχο, αλλά δημιούργησαν ένα πλαίσιο στο οποίο μπορούν να εκφρασθούν και να αναπτυχθούν όλες οι κύριες έννοιες (εκτασιακά και δομικά) του υπολογισμού. Του λ λογισμού προϋπήρξε η θεωρία της συνδυαστικής λογικής του Schonfikel, η οποία βασίζεται στην ιδέα της απάλειψης των μεταβλητών στις συντακτικές αναπαραστάσεις των συναρτήσεων. Ο λογισμός αυτός βασίζεται σε ορισμένους συνδυαστές και η μόνη πράξη που προβλέπεται είναι η εφαρμογή. Ο Church, εκτός της εφαρμογής, εισήγαγε και την αφαίρεση την οποία συμβόλισε με λάμδα, εξ ού και το όνομα λ λογισμός. Δημιούργησε έτσι ένα λογισμό, πολύ απλό στον ορισμό και τη γραφή του, ο οποίος αποδείχτηκε, με τη συνεισφορά πολύ μεγάλων μαθηματικών όπως οι Kleene, Rosser, Turing που υπήρξαν μαθητές του Church, ότι είχε αναπάντεχες εκφραστικές ικανότητες. Πολύ γρήγορα ο λογισμός αυτός θεωρήθηκε ως το προνομιακό πλαίσιο χαρακτηρισμού της έννοιας του υπολογισμού και αποδείχτηκε το πρώτο θεώρημα αναποκρισιμότητας που αφορούσε την εντασιακή ισοδυναμία δύο συναρτήσεων. Με τη μετάφραση του προβλήματος στο λ λογισμό απαντήθηκε αρνητικά και το Entscheidungsproblem του Hilbert. Ο λ λογισμός μετά την πρώτη του εντυπωσιακή ανάπτυξη έπεσε σε μία σχετική αφάνεια, ώσπου ξαναήλθε δυναμικά στο προσκήνιο, αφενός με την εύρεση ικανοποιητικής σημασιολογίας (αρχικά τα μοντέλα του Scott) και αφετέρου με τη χρήση του στην ανάπτυξη γλωσσών προγραμματισμού. Η πρώτη γλώσσα που εμπνεύστηκε από τον λ λογισμό ήταν η Lisp. Αυτό συνέβαλε στην ανάπτυξη ολόκληρου πεδίου στη θεωρία των γλωσσών προγραμματισμού, τον συναρτησιακό προγραμματισμό. Εκτοτε η ανάπτυξη του λ λογισμού έγινε παράλληλα και αδιάσπαστα με την εξέλιξη συναφών περιοχών της πληροφορικής. Θεωρείται απο τις βασικές γνώσεις που ένας (τουλάχιστον θεωρητικός) πληροφορικής πρέπει να αποκτήσει και διδάσκεται στα περισσότερα τμήματα πληροφορικής και μαθηματικών παγκοσμίως. Σε αυτό το βιβλίο θα παρουσιάσουμε κάποιες βασικές πλευρές του λ λογισμού οι οποίες μπορούν να θεωρηθούν ως οι απαραίτητες βασικές γνώσεις για περαιτέρω 3

μελέτη. Θα παρουσιάσουμε επίσης μια σχετικά πρόσφατη ανακάλυψη, τον ισομορφισμό Curry-Howard, ο οποίος δημιουργεί ένα καινούργιο μοντέλο προγραμματισμού με τη βοήθεια της λογικής και των μαθηματικών αποδείξεων (πρωτόκολλο Curry-Howard). 4

ΕΥΧΑΡΙΣΤΙΕΣ Ευχαριστούμε την Μαρία Δημαρόγκωνα και τον Νίκο Τριανταφύλλου χωρίς την σημαντική βοήθεια τους δεν θα είχε ολοκληρωθεί το παρόν βιβλίο. Επίσης ευχαριστούμε την Δέσποινα Λαμπαδά για την γλωσσική επιμέλεια 5

ΛΟΓΙΚΗ ΚΑΙ ΣΥΝΑΡΤΗΣΙΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΚΑΤΑΡΚΤΙΚΑ Η έννοια της συνάρτησης. Η έννοια της συνάρτησης είναι κεντρική έννοια στα Μαθηματικά και στην Πληροφορική, καθώς και στην εξέλιξη αυτών των δύο επιστημών. Μπορεί να νοηθεί ως ένας «κανόνας» που συνδέει κάθε αντικείμενο στο οποίο εφαρμόζεται η συνάρτηση και το οποίο καλούμε όρισμα της συνάρτησης με ένα αντικείμενο το οποίο καλούμε τιμή της συνάρτησης γι αυτό το όρισμα. Συνήθως στα Μαθηματικά κάθε συνάρτηση 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