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

Σχετικά έγγραφα
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

x E[x] x xµº λx. E[x] λx. x 2 3x +2

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

{1 x2 }, 1 + x + + xn +

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

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

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

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

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

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

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

The λ-calculus. Lecturer: John Wickerson. Phil Wadler

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Foundations of Computer Science ENGR 3520 Fall 2013 Thursday, Nov 21, 2013

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

Κεφάλαιο 5 Αξιωματική Σημασιολογία και Απόδειξη Ορθότητας Προγραμμάτων

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

n true false if t then t else t u t t b t emptylist cons t t t t λx.t u ::= head tail isempty

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Τυποποίηση και Τερματισμός στο λ-λογισμό

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

Εισαγωγή στο Συναρτησιακό Προγραμματισμό

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

Κεφάλαιο 7: Υπορουτίνες

Πολλοί τρόποι περιγραφής αλγορίθμων. Όλοι είναι μηχανιστικά ισοδύναμοι και ειδικά ισοδύναμοι με μερικές αναδρομικές συναρτήσεις.

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

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

Ανάπτυξη και Σχεδίαση Λογισμικού

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

(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)

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

Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού

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

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

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

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

Διαδικασιακός Προγραμματισμός

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

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

Η γλώσσα προγραμματισμού Strange

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

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

8 FORTRAN 77/90/95/2003

A2. Να γράψετε για κάθε περίπτωση τον αριθμό της πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

Σύνολα, Σχέσεις, Συναρτήσεις

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

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

Πρόβλημα 29 / σελίδα 28

Pascal. 15 Νοεμβρίου 2011

Ανάπτυξη και Σχεδίαση Λογισμικού

Αρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

Α3. Ποια είναι τα πλεονεκτήματα του Δομημένου προγραμματισμού; (Μονάδες 10)

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Ανάπτυξη και Σχεδίαση Λογισμικού

Αλγόριθμοι Αναπαράσταση αλγορίθμων Η αναπαράσταση των αλγορίθμων μπορεί να πραγματοποιηθεί με:

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Outline. 4 Object-Oriented Programming

Μεταγλωττιστές Βελτιστοποίηση

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

ΑΝΑΛΥΣΗ 2. Μ. Παπαδημητράκης.

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Πολλοί τρόποι περιγραφής αλγορίθμων. Όλοι είναι μηχανιστικά ισοδύναμοι και ειδικά ισοδύναμοι με μερικές αναδρομικές συναρτήσεις

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

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

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

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

Βασικές έννοιες προγραμματισμού

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

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

Μορφές αποδείξεων. Μαθηματικά Πληροφορικής 2ο Μάθημα. Μορφές αποδείξεων (συνέχεια) Εξαντλητική μέθοδος

Πρόβλημα είναι μια κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή, ούτε προφανής.

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Αναδρομή Ανάλυση Αλγορίθμων

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ορισμός Συναρτήσεων στην ΜL

ΜΑΘΗΜΑΤΙΚΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΘΕΤΙΚΩΝ ΣΠΟΥΔΩΝ ΣΠΟΥΔΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ. Το 1ο Θέμα στις πανελλαδικές εξετάσεις

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

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

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

P(n, r) = n! P(n, r) = n r. (n r)! n r. n+r 1 r n!

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Στην εντολή while η επανάληψη συνεχίζεται όσο η λογική έκφραση έχει τιμή false.

Transcript:

Κεφάλαιο 10 Λάμβδα λογισμός Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1

Ιστορική εξέλιξη λ-λογισμού - 1 Αναπτύχθηκε αρχικά από τον Alonzo Church στις αρχές της δεκαετίας του 1930, πολύ πριν αρχίσουν να χρησιμοποιούνται οι ηλεκτρονικοί υπολογιστές. Ήταν μέρος μιας γενικότερης θεωρίας με στόχο τη θεμελίωση μαθηματικών και λογικής [Chur32, Chur33] 2

Ιστορική εξέλιξη λ-λογισμού - 2 H γενική θεωρία ήταν ασυνεπής, όπως αποδείχθηκε αργότερα [Klee35] Το τμήμα της, που ασχολήθηκε με συναρτήσεις είχε σημαντικές εφαρμογές στην πληροφορική, κυρίως μετά το 1960 Το τμήμα αυτό είναι ο λάμβδα λογισμός ή λ-λογισμός 3

λ-λογισμός Πλήρες υπολογιστικό μοντέλο Δύο πολύ σημαντικά αποτελέσματα Όλες οι αναδρομικές συναρτήσεις παριστάνονται στο λ-λογισμό [Klee35] Ως υπολογιστικό μοντέλο, ο λ-λογισμός είναι ισοδύναμος με τη μηχανή Turing [Turi37]. H μηχανή Turing αποτέλεσε τη βάση των υπολογιστών von Neumann στους οποίους ανήκουν οι σημερινοί υπολογιστές και οδήγησε στη δημιουργία των πρώτων γλωσσών προγραμματισμού 4

λ-λογισμός Σχεδιασμός νέων αρχιτεκτονικών υπολογιστών Μηχανές αναγωγής (reduction machines) και Υπολογιστές ροής δεδομένων (data-flow computers) Όταν πρωτο-δημιουργήθηκαν εκτελούσαν αποκλειστικά προγράμματα γραμμένα σε κάποια διάλεκτο του λ-λογισμού. Δημιουργία συναρτησιακού προγραμματισμού John McCarthy σχεδίασε τη γλώσσα προγραμματισμού LISP στα τέλη της δεκαετίας του 1950. Αργότερα δημιουργήθηκαν οι Scheme, ML, Miranda, Haskell, κλπ. 5

λ- Λογισμός Υπολογιστές και συναρτησιακός προγραμματισμός δεν έτυχαν ευρείας αποδοχής όπως οι υπολογιστές von Neumann και ο προστακτικός προγραμματισμός Οι επιδόσεις των πρώτων μηχανών αναγωγής και οι υλοποιήσεις των συναρτησιακών γλωσσών ήταν χειρότερες από τα παραδοσιακά συστήματα. 6

λ-λογισμός Ιδιαίτερα πρόσφορος ως συμβολισμός για την περιγραφή σημασιολογικών ιδιοτήτων των γλωσσών προγραμματισμού. Διευκόλυνε τη μελέτη και απομόνωση προβλημάτων σχεδίασης και υλοποίησης των γλωσσών προγραμματισμού Μηχανισμό κλήσης υπο-προγραμμάτων και δομή συστήματος τύπων 7

λ-λογισμός Διατύπωση θεωρίας πεδίων Θεμελίωση ερευνητικού πεδίου της σημασιολογίας γλωσσών προγραμματισμού 8

Διαισθητική εισαγωγή Ο λ-λογισμός είναι θεωρία συναρτήσεων Δύο κύριες λειτουργίες Εφαρμογή συνάρτησης F πάνω σε ένα όρισμα Α, που συμβολίζεται με F A Αφαίρεση. Έστω ότι x μεταβλητή και Ε[x] έκφραση, που εξαρτάται από τη x. Η έκφραση λx.e[x] συμβολίζει τη συνάρτηση x E[x] 9

Διαισθητική εισαγωγή Η συνάρτηση δέχεται ως όρισμα μία τιμή υ και επιστρέφει ως αποτέλεσμα την τιμή Ε[υ]. Η x δεν εμφανίζεται απαραίτητα στην έκφραση Ε[x]. Αν αυτό δεν συμβαίνει, τότε η λx.e[x] είναι μία σταθερή συνάρτηση. 10

Παράδειγμα Η λx. x 2 3x +2 συμβολίζει μία συνάρτηση, που σε κάθε τιμή x απεικονίζει την τιμή x 2 3x +2. Αν η συνάρτηση εφαρμοσθεί στο όρισμα 8, προκύπτει (λx. x 2 3x +2)8 = 8 2-3 8 +2 =42 Η τιμή του ορίσματος αντικαθιστά την παράμετρο x 11

Ελεύθερη και Δεσμευμένη Μεταβλητή Η αφαίρεση λx.e[x] δεσμεύει τη μεταβλητή x μέσα στην έκφραση Ε[x]. Μεταβλητή μη δεσμευμένη ονομάζεται ελεύθερη. Παράδειγμα: λx. x 2 3y +2 x δεσμευμένη και y ελεύθερη Παράδειγμα: (λx. x 2 3y +2)(4x + 1) H πρώτη εμφάνιση του x (στο x 2 ) είναι δεσμευμένη, γιατί είναι στο εσωτερικό της αφαίρεσης, ενώ η δεύτερη (στο 4x + 1) είναι ελεύθερη) 12

Παράδειγμα Δέσμευσης sinx +cosy cosx siny dx Η μεταβλητή x στο εσωτερικό του ολοκληρώματος είναι δεσμευμένη και κατά συνέπεια η τιμή του ολοκληρώματος δεν εξαρτάται από την τιμή του x έξω από αυτό. Η μεταβλητή y είναι ελεύθερη και η τιμή του ολοκληρώματος εξαρτάται από την τιμή του y έξω από αυτό. 13

Λάμβδα όροι Ο λ-λογισμός είναι μία τυπική γλώσσα Λ, η σύνταξη της οποίας δίνεται από τον ακόλουθο επαγωγικό ορισμό: 14

Ορισμός 10.1 Έστω V ένα αριθμήσιμο σύνολο μεταβλητών. Το σύνολο Λ των όρων του λ- λογισμού είναι το μικρότερο σύνολο, που ικανοποιεί τις παρακάτω ιδιότητες: x V x Λ Μ,Ν Λ (Μ Ν) Λ x V, Μ Λ (λx.μ) Λ 15

λ-όροι Τα στοιχεία του συνόλου Λ ονομάζονται επίσης λ-όροι (λ-terms). Υπάρχουν τριών ειδών: Μεταβλητές (Variables), δηλαδή στοιχεία του συνόλου V Εφαρμογές (Applications), με μορφή (Μ Ν), όπου Μ και Ν είναι λ-όροι Αφαιρέσεις (Abstractions), με μορφή (λx.m), όπου x μεταβλητή και Μ λ-όρος 16

λ-όροι Κατά σύμβαση χρησιμοποιούνται μικρά γράμματα του λατινικού αλφαβήτου (x,y,z κλπ) για συμβολισμό μεταβλητών και κεφαλαία (Μ,Ν,F,G, P κλπ) για λ-όρους. 17

λ-όροι Χρησιμοποιώντας αφηρημένη σύνταξη BNF και θεωρώντας ότι η συντακτική κλάση των μεταβλητών παριστάνεται με το μητερματικό σύμβολο (var), η γλώσσα Λ των λ-όρων περιγράφεται ισοδύναμα term ::= var ( term term ) ( λ var term ) 18

Παράδειγμα 10.1 Οι παρακάτω είναι λ-όροι: (x y) (λx.x) (λx.((λy.(x y)))) (((λx.x)y)(λx.z)) ((λx.(λy.z)) (λx.x)) (λx.((λy.y)(λz.x))) 19

Συμβάσεις Για απλοποίηση των λ-όρων και αποφυγή μεγάλου αριθμού παρενθέσεων (με αυστηρή τήρηση ορισμού 10.1) χρησιμοποιούνται οι συμβάσεις Εξωτερικές παρενθέσεις δεν γράφονται λx.x συντομογραφία του (λx.x) Η εφαρμογή είναι αριστερά προσεταιριστική F M 1 M 2 M n συντομογραφία του ( ((F M 1 )M 2 ) M n ) 20

Συμβάσεις Η αφαίρεση εκτείνεται όσο περισσότερο είναι δυνατό, δηλαδή ως το επόμενο κλείσιμο παρένθεσης ή το τέλος του όρου: λx. M 1 M 2 M n συντομογραφία του λx. (M 1 M 2 M n ) 21

Παράδειγμα 10.2 Ακολουθώντας τις συμβάσεις, οι λ-όροι του παραδείγματος 10.1 γράφονται x y λx.x λx.λy.x y ((λx.x)y)(λx.z) (λx.λy.z) (λx.x) λx.(λy.y)(λz.x) 22

Ορισμός 10.2 Η σχέση ταυτότητας στο σύνολο των λ- όρων ορίζεται επαγωγικά ως εξής: x y αν x = y (Μ Ν) (P Q) αν Μ Ρ και Ν Q (λx. M) (λy. N) αν x = y και M N Όπου x = y συμβολίζεται η σχέση ισότητας στο σύνολο V ( δηλαδή x και y είναι η ίδια μεταβλητή). Αν M N, οι όροι Μ,Ν Λ ονομάζονται ταυτόσημοι (identical) 23

Μεταβλητές Η μεταβλητή x στην αφαίρεση λx.μ ονομάζεται δεσμεύουσα μεταβλητή (binding variable) Η εμβέλεια (scope) της αφαίρεσης λx είναι ο λ-όρος Μ, εκτός από τυχόν αφαιρέσεις, που αυτός περιέχει και στις οποίες δεσμεύουσα μεταβλητή είναι πάλι η x. 24

Μεταβλητές Εμφανίσεις της μεταβλητής x που βρίσκονται στην εμβέλεια κάποιου λx ονομάζονται δεσμευμένες (bound). Εμφανίσεις, που δεν βρίσκονται στην εμβέλεια κανενός λx ονομάζονται ελεύθερες. 25

Ορισμός 10.3 Το σύνολο των ελεύθερων μεταβλητών (free variables) ενός λ-όρου Μ Λ συμβολίζεται με FV(M) και ορίζεται επαγωγικά ως εξής: FV(x) = {x} FV(M N) = FV(M) FV(N) FV(λx.M) = FV(M) - {x} 26

Παράδειγμα 10.3 Έστω ο παρακάτω όρος: Μ (λx. y x) (λy. x y) Ελεύθερη Δεσμευμένη Δεσμευμένη Ελεύθερη 27

Παράδειγμα 10.3 Ακολουθώντας τον ορισμό 10.3 FV(M) = FV(λx.y x)(λy.x y) = FV(λx.y x) FV (λy.x y) = (FV(y x) {x}) (FV(x y) {y}) = ((FV(y) FV(x)) {x}) ((FV(x) FV(y)) {y}) = (({y} {x}) {x}) (({x} {y}) {y}) = ({x,y} {x}) ({x,y} {y}) = {y} {x} = {x,y} 28

Ορισμός 10.4 Ένας λ-όρος Μ Λ ονομάζεται κλειστός λ-όρος (closed λ-term ή combinator) αν FV(M) =. Το σύνολο των κλειστών λ- όρων συμβολίζεται με Λ ο. 29

Παράδειγμα 10.4 Οι ακόλουθοι λ-όροι είναι κλειστοί και στη βιβλιογραφία ονομάζονται πρότυποι κλειστοί όροι (standard combinators). I λx. x K λx. λy. x K * λx. λy. y S λx. λy. λz. (x z)(y z) 30

Αντικατάσταση Βασική πράξη συμβολικής επεξεργασίας των λ-όρων Επηρεάζει ελεύθερες μεταβλητές Ο συμβολισμός Μ[x := N] παριστάνει το αποτέλεσμα αντικατάστασης στον όρο Μ όλων των ελεύθερων εμφανίσεων της μεταβλητής x με τον όρο Ν. 31

Ορισμός 10.5 Η αντικατάσταση της μεταβλητής x V στον όρο Μ Λ με τον όρο Ν Λ συμβολίζεται με Μ[x := Ν] και ορίζεται επαγωγικά ως εξής: x[x:=n] N y[x:=n] y (P Q) [x:=n] P[x:=N] Q[x:=N] (λx.p) [x:=n] λx.p (λy.p) [x:=n] λy.p [x:=n] αν (y FV(N) ή x FV(P)) (λy.p) [x:=n] λz.p [y:=z] [x:=n] αν y FV(N) και x FV(P), όπου z FV(P) FV(N) 32

Παρατηρήσεις Αντικαθίστανται μόνο οι ελεύθερες εμφανίσεις μιας μεταβλητής Στο αποτέλεσμα της αντικατάστασης καμία από τις ελεύθερες μεταβλητές του όρου Ν δεν θα γίνει δεσμευμένη Η δέσμευση ελεύθερης μεταβλητής του όρου Ν θα μπορούσε να γίνει μόνο μέσω του τελευταίου κανόνα, στην περίπτωση, που y FV(N) και x FV(P). Ο κανόνας μεριμνά για μετονομασία της δεσμεύουσας μεταβλητής, προκειμένου να αποφευχθεί αυτό το ενδεχόμενο. 33

Παρατηρήσεις Στον τελευταίο κανόνα η επιλογή της μεταβλητής z V είναι ελεύθερη υπό την προϋπόθεση ότι z FV(P) FV(N) Για τον μονοσήμαντο ορισμό του αποτελέσματος της αντικατάστασης Μ[x:=N] πρέπει σε αυτό τον κανόνα να καθορίζεται επακριβώς ο τρόπος επιλογής της μεταβλητής αυτής. Τα στοιχεία του συνόλου V είναι αριθμημένα και επιλέγεται ως z το πρώτο, που ικανοποιεί την z FV(P) FV(N) 34

Μετατροπές Τρία είδη μετατροπής (α,β και η) Κάθε είδος μετατροπής περιγράφεται από τον κανόνα Μ χ N όπου χ {α,β,η} και Μ,Ν Λ. Ο όρος Μ ονομάζεται χ-redex ή απλά redex και ο Ν όρος contractum. 35

Ορισμός 10.6 Μία σχέση πάνω στο Λ ονομάζεται συμβατή (compatible) αν για κάθε x V και για κάθε Μ,Ν,Ρ Λ ισχύουν οι παρακάτω ιδιότητες: Μ Ν (Μ Ρ) (Ν Ρ) Μ Ν (Ρ Μ) (Ρ Ν) Μ Ν (λx. M) (λx. Ν) Η σχέση ταυτότητας μεταξύ των λ-όρων είναι συμβατή. 36

Ορισμός 10.7 Μία σχέση αναγωγής (reduction relation) είναι μία συμβατή, ανακλαστική και μεταβατική σχέση πάνω στο Λ. 37

Ορισμός 10.8 Μία σχέση συμφωνίας (congruence relation) είναι μία συμβατή σχέση ισοδυναμίας πάνω στο Λ. (Μία σχέση ονομάζεται σχέση ισοδυναμίας (equivalence relation) αν είναι ανακλαστική, μεταβατική και συμμετρική.) 38

Ορισμός 10.9 Η σχέση α ορίζεται ως η μικρότερη συμβατή σχέση πάνω στο Λ για την οποία για κάθε Μ Λ και για κάθε x,y V τέτοια ώστε y FV(M) ισχύει λx.m α λy.m[x:=y] Ο περιορισμός y FV(M) εξασφαλίζει ότι η μετονομασία της δεσμεύουσας μεταβλητής δεν προκαλεί δέσμευση των μεταβλητών του όρου Μ, που ήταν αρχικά ελεύθερες. 39

Παράδειγμα 10.5 Οι παρακάτω α-μετατροπές είναι σωστές: λx.x α λy.y λx.z x α λy.z y λx.λy.z x y α λy.λw.z y w Στην τρίτη μετατροπή, η αντικατάσταση (λy.z x y)[x:=y] προκάλεσε τη μετονομασία της δεσμεύουσας μεταβλητής, προκειμένου να μη δεσμευθεί στο αποτέλεσμα της αντικατάστασης η ελεύθερη εμφάνιση της y. 40

Παράδειγμα 10.5 Η παρακάτω μετατροπή είναι λανθασμένη: λx.λz.z x y α λy.λz.z y y γιατί δεν πληρείται ο περιορισμός y FV(λz.z x y) 41

Ορισμός 10.10 Η σχέση β ορίζεται ως η μικρότερη συμβατή σχέση πάνω στο Λ για την οποία για κάθε Μ, Ν Λ και για κάθε x,y V ισχύει (λx.m)ν β M[x:=Ν] 42

Παράδειγμα 10.6 Οι παρακάτω β-μετατροπές είναι σωστές: (λx.z x) w β z w (λx.λy.z x y) w β λy.z w y (λy.z y (λx.x y)) w β z w (λx.x w) 43

Παράδειγμα 10.6 Η επόμενη μετατροπή είναι λανθασμένη (λx.λy.z x y) (w y) β λy.z (w y) y γιατί για να γίνει αντικατάσταση (λy.z x y) [x:=w y] πρέπει να μετονομασθεί η δεσμεύουσα μεταβλητή y, διαφορετικά η εμφάνιση της y στον όρο w y θα δεσμευόταν. Το σωστό αποτέλεσμα της παραπάνω β-μετατροπής είναι: (λx.λy.z x y) (w y) β λt.z (w y) t όπου t νέα μεταβλητή. 44

Ορισμός 10.11 Η σχέση n ορίζεται ως η μικρότερη συμβατή σχέση πάνω στο Λ για την οποία για κάθε Μ Λ και για κάθε x V τέτοια ώστε x FV(M) ισχύει λx.m x n M 45

Παράδειγμα 10.7 Οι παρακάτω n-μετατροπές είναι σωστές: λx.z x n z λy.z x y n z x Όχι όμως η: λx.z x x n z x γιατί δεν πληρείται το x FV(z x) 46

Μετατροπή, αναγωγή και ισότητα Οι τρεις κανόνες μετατροπής (α), (β) και (n) ορίζουν τρεις βασικές σχέσεις μετατροπής α, β, n για το λ-λογισμό. Η συνολική σχέση μετατροπής M N θα υποδηλώνει ότι ο όρος Μ μετατρέπεται σε ένα βήμα στον όρο Ν με έναν από τους τρεις κανόνες. 47

Ορισμός 10.12 Με συμβολίζεται η ένωση των σχέσεων α, β, n, δηλαδή η σχέση ορίζεται ως η μικρότερη σχέση για την οποία ισχύουν: Μ α Ν Μ Ν Μ β Ν Μ Ν Μ n Ν Μ Ν 48

Συμβολισμός Μ Ν ο Ν 1 Ν 2... Ν n-1 Ν n Ν Ο όρος Μ μετατρέπεται στον όρο Ν με ακολουθία βημάτων, πιθανώς κενή. Η σχέση συμβολίζεται Μ Ν Αν n =1 τότε η μετατροπή γίνεται σε ένα βήμα Μ Ν και άρα η σχέση εμπεριέχει την. Αν n=0, η ακολουθία είναι κενή και δε συμβαίνει μετατροπή, δηλαδή Μ Ν και άρα η σχέση εμπεριέχει την. 49

Ορισμός 10.13 Με συμβολίζεται το ανακλαστικό και μεταβατικό κλείσιμο της σχέσης. Δηλαδή, η σχέση ορίζεται ως η μικρότερη σχέση για την οποία ισχύουν: Μ Ν Μ Ν Μ Μ 50

Παρατηρήσεις Η σχέση είναι σχέση αναγωγής (ορισμός 10.7). Όταν ισχύει Μ Ν λέμε ότι ο όρος Μ ανάγεται στον όρο Ν. Όταν Μ Ν, όλα τα βήματα στην ακολουθία μετατροπής έχουν την ίδια κατεύθυνση, από αριστερά προς δεξιά. 51

Παρατηρήσεις Αν επιτραπεί η ύπαρξη «αντίστροφων βημάτων, όπως Μ Ν ο Ν 1 Ν 2 Ν 3 Ν 4 Ν 5 Ν 6 Ν Τότε οδηγούμαστε σε μία γενικότερη σχέση, που συμβολίζουμε με =. Η σχέση αυτή, εμπεριέχει τις, και. 52

Ορισμός 10.14 Με = συμβολίζεται η σχέση ισοδυναμίας, που προκύπτει από την. Δηλαδή η σχέση = ορίζεται ως η μικρότερη σχέση για την οποία ισχύουν: Μ Ν Μ = Ν Μ = Ν Ν = Μ Μ = Ν, Ν = Ρ Μ = Ν 53

Σχέσεις =, Η σχέση = είναι σχέση συμφωνίας (ορισμός 10.8). Όταν ισχύει Μ=Ν, ο όρος Μ είναι ίσος με τον όρο Ν. Με τη σχέση ισότητας Μ=Ν δεν εννοείται ότι οι δύο όροι ταυτίζονται, δηλαδή δεν ισχύει Μ Ν (ορισμός 10.2). Η διάκριση των δύο σχέσεων και η επιλογή του συμβόλου = για τη σχέση συμφωνίας του ορισμού 10.14 ενδέχεται να μπερδέψει τον αναγνώστη. 54

Κανονικές μορφές λ-λογισμός θεωρείται ως υπολογιστικό μοντέλο επεξεργασίας συναρτήσεων Σχέσεις μετατροπής παριστάνουν την πραγματοποίηση βημάτων επεξεργασίας πάνω στους λ- όρους Αποσκοπούν στον υπολογισμό κάποιου αποτελέσματος 55

β - Μετατροπή Κατ εξοχήν υπολογιστική πράξη, αφού διαισθητικά παριστάνει εφαρμογή μίας συνάρτησης σε κάποιο όρισμα 56

α - Μετατροπή Δεν προάγει τη διαδικασία υπολογισμού. Τα ονόματα των δεσμευμένων μεταβλητών δεν έχουν ουσιαστική σημασία. Η μετονομασία των μεταβλητών, που επιτελείται μέσω της α-μετατροπής δεν αποτελεί ουσιαστικό υπολογιστικό βήμα 57

η μετατροπή Δεν συμβάλλει άμεσα στην υπολογιστική διαδικασία. Υλοποιεί έναν μηχανισμό για την υλοποίηση λ-όρων, που παριστάνουν συναρτήσεις 58

Παρατηρήσεις Η σχέση μετατροπής M N παριστάνει ένα βήμα στη διαδικασία υπολογισμού Η σχέση Μ Ν παριστάνει (πιθανώς κενή) ακολουθία από τέτοια βήματα. Όταν Μ Ν μπορεί να θεωρηθεί ότι ο όρος Ν προέκυψε κατά την αποτίμηση του όρου Μ. Αποτίμηση ενός όρου είναι η διαδοχική εφαρμογή κανόνων μετατροπής σε αυτόν. 59

Κανονικές μορφές Όταν σε έναν όρο Μ δεν εφαρμόζεται κανένα αμιγώς υπολογιστικό βήμα, δηλαδή καμία β- ή η-μετατροπή, τότε η αποτίμηση του θεωρείται ολοκληρωμένη και ο όρος είναι τελικό αποτέλεσμα. Τέτοιοι πλήρως αποτιμημένοι όροι ονομάζονται κανονικές μορφές. 60

Ορισμός 10.15 Ένας όρος Μ Λ είναι σε κανονική μορφή (normal form) όταν δεν περιέχει κανένα β- redex ή n-redex. 61

Παράδειγμα 10.8 Οι όροι λx.x και λf.f (λx.x f) είναι σε κανονική μορφή. Αντίθετα ο όρος λz.(λf.λx.f z x) (λy.y) δεν είναι σε κανονική μορφή, γιατί περιέχει το β-redex: (λf.λx.f z x)(λy.y) β λx. (λy.y) z x 62

Παρατήρηση Στις κανονικές μορφές δεν λαμβάνεται υπόψη η α-μετατροπή. Αυτό είναι σύμφωνο με τη θεώρηση του λ-λογισμού ως υπολογιστικού μοντέλου. Αν δεν συνέβαινε, τότε απλοί όροι όπως ο λx.x δεν θα ήταν σε κανονική μορφή λόγω δυνατής μετονομασίας κάποιας δεσμεύουσας μεταβλητής. 63

Παρατήρηση Η σχέση συμφωνίας = α βάσει της οποίας όλοι οι όροι, που προκύπτουν με α- μετατροπές είναι ισοδύναμοι, αποτελεί θεμελιώδη σχέση ισοδυναμίας μεταξύ κανονικών μορφών. Το γεγονός αυτό αποδίδεται και από την επόμενη πρόταση. 64

Πρόταση 10.1 Αν ο όρος Μ Λ είναι σε κανονική μορφή και ισχύει Μ Ν για κάποιον όρο Ν Λ, τότε Μ = α Ν. 65

Πρόταση 10.1 - Σχόλια Υπάρχουν λ-όροι η αποτίμηση των οποίων οδηγεί, μετά από διαδοχικές μετατροπές σε κάποια κανονική μορφή. Υπάρχουν όροι για τους οποίους αυτό δεν ισχύει και η αποτίμηση τους ενδέχεται να συνεχίζεται επ άπειρον χωρίς να καταλήγει σε κανονική μορφή. 66

Ορισμός 10.16 Ένας όρος Μ Λ λέμε ότι έχει κανονική μορφή αν για κάποιον όρο Ν Λ, ισχύει Μ Ν και ο Ν είναι σε κανονική μορφή. Στην περίπτωση αυτή, ο όρος Μ ονομάζεται κανονικοποιήσιμος (normalizing). 67

Παράδειγμα 10.9 Ο όρος λz. (λf.λx.fzx)(λy.y) στο παράδειγμα 10.8 δεν είναι σε κανονική μορφή. Εφαρμόζοντας διαδοχικά βήματα λz.(λf.λx.fzx)(λy.y) β λz.λx. (λy.y)zx β λz. λx.zx η λz. z και άρα λz. (λf.λx.fzx)(λy.y) λz. z Καθώς λz.z σε κανονική μορφή και ο αρχικός όρος έχει κανονική μορφή. 68

Παράδειγμα 10.10 Έστω ο όρος Ω (λx. x x) (λx. x x) σε μη κανονική μορφή. Ο όρος περιέχει μόνο ένα β-redex και η μόνη μετατροπή, που μπορεί να εφαρμοσθεί είναι η: Ω (λx. x x) (λx. x x) β (λx. x x) (λx. x x) Ω Σε ένα βήμα μετατροπής, ο όρος Ω μετατρέπεται πάλι στον εαυτό του. Η διαδικασία αποτίμησης δεν τερματίζεται και ο όρος Ω δεν έχει κανονική μορφή. Εδώ η διαδικασία αποτίμησης δεν προοδεύει. 69

Παράδειγμα 10.11 Έστω ο όρος Μ (λx. x x y)(λx. x x y), με ένα μόνο β-redex. Η μόνη ακολουθία μετατροπών, που εφαρμόζεται είναι: Μ (λx. x x y)(λx. x x y) β (λx. x x y)(λx. x x y) y β (λx. x x y)(λx. x x y) y y M y M y y β (λx. x x y)(λx. x x y) y y y M y y y β. Κάθε αποτέλεσμα δεν είναι σε κανονική μορφή και έχει μόνο ένα β-redex. 70

Παράδειγμα 10.12 Έστω ο όρος Μ = (λx. (λy. x y) z) w με δύο β-redex για τις δύο αφαιρέσεις με δεσμεύουσες μεταβλητές x και y. Μετατρέποντας πρώτα το πρώτο από αυτά, προκύπτει η αποτίμηση: Μ β (λy. w y) z β w z Μετατρέποντας τα με την αντίστροφη σειρά προκύπτει η αποτίμηση: Μ β (λy. x z) w β w z 71

Παράδειγμα 10.13 Έστω ο όρος Μ = (λz. y) ((λx. x x)(λx. x x)) που περιέχει τον όρο Ω του παραδείγματος 10.10. Ο όρος Μ περιέχει δύο β-redex για τις δύο αφαιρέσεις με δεσμεύουσες μεταβλητές z και την πρώτη από τις δύο x. Μετατρέποντας το πρώτο, οδηγούμαστε σε κανονική μορφή: M β y Μετατρέποντας το δεύτερο, οδηγούμαστε πάλι στον ίδιο όρο, όπως με τη μετατροπή του Ω: M β (λz.y) ((λx. x x)(λx. x x)) Μ 72

Ορισμός 10.17 Ένας όρος Μ ονομάζεται ισχυρά κανονικοποιήσιμος (strongly normalizing) αν όλες οι ακολουθίες μετατροπής, που ξεκινούν με τον Μ καταλήγουν σε κανονική μορφή. 73

Ορισμός 10.18 Η στρατηγική κατά την οποία επιλέγεται για μετατροπή κάθε φορά το αριστερότερο redex ενός όρου, δηλαδή αυτό του οποίου το σύμβολο λ βρίσκεται όσο το δυνατόν πιο αριστερά, ονομάζεται στρατηγική της αναγωγής κανονικής σειράς (normal order reduction strategy) 74

Θεώρημα 10.1 (Church-Rosser) Έστω όροι Μ, Ν 1,Ν 2 Λ τέτοιοι ώστε Μ Ν 1 και Μ Ν 2.Τότε υπάρχει όρος Ν Λ τέτοιος ώστε Ν 1 Ν και Ν 2 Ν. 75

Μ Διάγραμμα Ν 1 Ν 2 Ν 76

Πρόταση 10.2 Αν Μ 1 = Μ 2, τότε υπάρχει ένας όρος Ν τέτοιος ώστε Μ 1 Ν και Μ 2 Ν. 77

Πρόταση 10.3 Κάθε όρος Μ έχει το πολύ μία κανονική μορφή. 78

Απόδειξη της πρότασης 10.3 Έστω ότι όρος Μ έχει δύο κανονικές μορφές Ν 1 και Ν 2, τότε ισχύει ς ώστε Μ Ν 1 και Μ Ν 2 και άρα Ν 1 = Ν 2. Από την πρόταση 10.2 προκύπτει ότι υπάρχει όρος Ρ τέτοιος ώστε Ν 1 Ρ και Ν 2 Ρ. Όμως από την πρόταση 10.1 συνεπάγεται ότι Ν 1 = α Ρ και Ν 2 = α Ρ και άρα Ν 1 = α Ν 2. 79

Θεώρημα 10.2 Κανονικοποίηση Normalization Αν ο όρος Μ έχει κανονική μορφή, τότε η στρατηγική της αναγωγής κανονικής σειράς οδηγεί σε αυτήν. 80

Θεώρημα 10.3 Σταθερό σημείο Fixed point ii) iii) Για κάθε όρο F Λ υπάρχει όρος Χ Λ τέτοιος ώστε να ισχύει F X = X Υπάρχει ένας τελεστής σταθερού σημείου, δηλαδή ένας όρος Υ Λ τέτοιος ώστε για κάθε F Λ να ισχύει F(Υ F)= Υ F. 81

Απόδειξη Θεωρήματος 10.3 i) Έστω W λx. F(x x) και X W W. Τότε ισχύει X W W (λx. F(x x)) W β F(W W) F X ii) Έστω ο κλειστός όρος Υ Λ, που ορίζεται ως Υ λf (λx.f (x x)) (λx.f(x x)) και έστω F Λ. Χρησιμοποιώντας την απόδειξη του i) έχουμε ΥF (λf (λx.f (x x)) (λx.f(x x))) F β (λx.f (x x)) (λx.f (x x)) X Καθώς Χ = FX, από τη συμβατότητα της σχέσης = προκύπτει Υ F=F(Υ F) 82

Ορισμός 10.19 Πως μπορούμε να αναπαραστήσουμε τις λογικές τιμές στο λάμβδα-λογισμό; true λx. λy. x false λx. λy. y 83

Ορισμός 10.20 Πως αναπαριστούμε τους λογικούς τελεστές; not λz. z false true 84

Θεώρημα 10.4 i) not true = false ii) not false = true Απόδειξη (μόνο του πρώτου, παρόμοια γίνεται και του δεύτερου) not true (λz.z false true) true β true false true (λx. λy. x) false true β false 85

Ορισμός 10.21 cond λz. λx. λy. z x y if B then N else M cond B N M Αποδεικνύεται εύκολα ότι η παραπάνω δομή πληροί τις απαιτούμενες ιδιότητες. 86

Θεώρημα 10.5 Για κάθε Ν, Μ ισχύουν τα παρακάτω ii) if true then N else M = N iii) if false then N else M = M Απόδειξη (του πρώτου) if true then N else Μ cond true N M (λz. λx. λy. z x y) true N M β true N M (λx. λy. x) N M β N 87

Διατεταγμένα ζεύγη Στον λ-λογισμό κωδικοποιούνται διατεταγμένα ζεύγη όρων (που με τη σειρά τους κωδικοποιούν άλλα μαθηματικά αντικείμενα). Μία τέτοια κωδικοποίηση γίνεται μέσω του pair. Ο συμβολισμός Ν,Μ χρησιμοποιείται για διευκόλυνση στη γραφή όρων, που κωδικοποιούν διατεταγμένα ζεύγη. 88

Ορισμοί 10.22 και 10.23 pair λx. λy. λz. z x y Ν, Μ pair N M Οι πράξεις fst και snd, που επιστρέφουν το πρώτο και το δεύτερο στοιχείο ενός διατεταγμένου ζεύγους κωδικοποιούνται ως: fst λz. z true snd λz. z false Αποδεικνύεται ότι οι πράξεις πληρούν απαιτούμενες ιδιότητες και άρα η δομή Ν,Μ χρησιμεύει ως διατεταγμένο ζεύγος. 89

Θεώρημα 10.6 Για κάθε Ν, Μ Λ ισχύουν τα εξής: i) fst Ν,Μ = N ii) snd Ν,Μ = M 90

Θεώρημα 10.6 Απόδειξη (μόνο του πρώτου) fst Ν,Μ (λz.z true) Ν,Μ β Ν,Μ true pair N M true (λz. λx. λy. z x y) N M true β true N M (λx. λy. x) N M β N 91

Φυσικοί αριθμοί Έχουν προταθεί πολλές διαφορετικές κωδικοποιήσεις των φυσικών αριθμών στον λ-λογισμό. Η πρώτη και η πιο γνωστή από αυτές είναι τα αριθμοειδή του Church. 92

Ορισμός 10.24 Έστω φυσικός αριθμός n N και όροι F, A Λ. Ο όρος F n (A) Λ ορίζεται επαγωγικά ως: F 0 (A) Α F n+1 (A) F (F n (A)) Ο ορισμός του F n (A) θα μπορούσε ισοδύναμα να δοθεί με τη μορφή F n+1 (A) F n (F A). Με επαγωγή αποδεικνύεται ότι F n (FA) F (F n (A)) και F n (F m (A)) F n+m (A). 93

Ορισμός 10.25 (Αριθμοειδή του Church Church numerals) Για κάθε φυσικό αριθμό n N ορίζεται ένας όρος c n Λ ως: c n λf. λx. f n (x) 94

Ορισμός 10.25 Το αριθμοειδές, που αντιστοιχεί στον αριθμό 0 είναι το c 0 λf. λx. x, στον αριθμό 1 το c 1 λf. λx. f x, στον αριθμό 2 το c 2 λf. λx. f (f x) κοκ. Όλα τα αριθμοειδή είναι σε β-κανονική μορφή (μάλιστα όλα εκτός του c 1 είναι και σε n-κανονική μορφή). Ούτε όλοι οι λ-όροι είναι αριθμοειδή, ούτε όλοι ανάγονται σε αριθμοειδή. 95

Ορισμός 10.26 succ λn. λf. λx. n f (f x) A + λn. λm. λf. λx. n f (m f x) A * λn. λm. λf. n (m f) A exp λn. λm. m n Το θεώρημα 10.7 αποδεικνύει την ορθότητα της κωδικοποίησης πράξεων του παραπάνω ορισμού. Για την απόδειξη του είναι χρήσιμο το ακόλουθο λήμμα. 96

Λήμμα 10.1 Για κάθε n,m N και για κάθε x,y Λ ισχύουν τα εξής: ii) iii) iv) c n f (c m f x ) = c n+m f x (c n x) m (y) = x nm (y) Αν m>0, τότε (c n ) m (x) = c n m x 97

Λήμμα 10.1 Απόδειξη i) c n f (c m f x ) (λf. λx.f n (x)) f ((λf. λx.f m (x))) f x) β (λf. λx.f n (x)) f (f m (x)) β (f n (f m (x)) f n+m (x) β (λf. λx.f n+m (x)) f x c n+m f x 98

Λήμμα 10.1 Απόδειξη ii) (c n x) m+1 (y) c n x((c n x) m (y)) = c n x(x nm (y)) (επαγωγική υπόθεση) (λf. λx.f n (x)) x (x nm (y)) β x n (x nm (y)) x n+nm (y) x n(1+m) (y) 99

Λήμμα 10.1 Απόδειξη iii) (c n ) m+1 (x) c n ((c n ) m (x)) = c n (c n m x) (επαγωγική υπόθεση) (λf. λx.f n (x)) (c n m x) β λy. (c n m x) n (y) = λy. x n m n (y) (λήμμα 10.1(ii)) λy. x n m+1 (y) β (λ f.λx. f n m+1 (x))x c n m+1 x 100

Θεώρημα 10.7 Για κάθε n,m N ισχύουν τα εξής: i) succ c n = c n+1 ii) A + c n c m = c n+m iii) A * c n c m = c nm m iv) Αν m>0 τότε A exp c n c m = c n 101

Θεώρημα 10.7 Απόδειξη i) succ c n (λn. λf. λx. n f (f x)) (λf. λx. f n (x)) β λf. λx. (λf. λx. f n (x)) f (f x) β λf. λx. f n (f x) c n+1 102

Θεώρημα 10.7 Απόδειξη ii) A + c n c m (λn. λm. λf. λx. n f (m f x)) c n c m β λf. λx. c n f (c m f x) = λf. λx. c n+m f x (λήμμα 10.1 (i)) n c n+m 103

Θεώρημα 10.7 Απόδειξη iii) A * c n c m (λn. λm. λf. λx. n (m f)) c n c m β λf. c n f (c m f) λf. (λf. λx. f n (x)) (c m f ) β λf. λx. (c m f ) n (x) = λf. λx.f mn (x) (λήμμα 10.1 (ii)) c nm 104

Θεώρημα 10.7 Απόδειξη iv) A exp c n c m (λn. λm. m n) c n c m β c m c n (λf. λx.f m (x)) (c n ) β λx.(c n ) m (x) = λx.c n m x (λήμμα 10.1 (iii)) n c n m 105

Λάμβδα λογισμός και πέρασμα παραμέτρων Η σχέση ομοιότητας του λ-λογισμού με τις γλώσσες προγραμματισμού δεν περιορίζεται στην εκφραστική του ικανότητα ως προγραμματιστικού μοντέλου. Οι στρατηγικές αναγωγής λ-όρων είναι πολύ στενά συνδεδεμένες με μεθόδους περάσματος παραμέτρων των γλωσσών προγραμματισμού. 106

Αναλογία λ-λογισμού και γλωσσών προγραμματισμού Οι λ-όροι αντιστοιχούν σε εκφράσεις ή εντολές Η αφαίρεση και η εφαρμογή αντιστοιχούν στον ορισμό και την κλήση συναρτήσεων ή διαδικασιών και Η διαδικασία της αναγωγής αντιστοιχεί στην αποτίμηση εκφράσεων ή την εκτέλεση εντολών. 107

Οκνηρή αποτίμηση (lazy evaluation) Τερματισμός της αποτίμησης μιας έκφρασης πριν προκύψει πλήρως αποτιμημένο αποτέλεσμα. Υποστήριξη από γλώσσες συναρτησιακού προγραμματισμού Haskell και Miranda 108

Οκνηρή αποτίμηση Τερματισμός όταν το αποτέλεσμα είναι τιμή (value). Η ακριβής μορφή των τιμών διαφέρει από γλώσσα σε γλώσσα Αριθμητικές και λογικές σταθερές, καθώς και συναρτησιακές αφαιρέσεις είναι τιμές. Στον λ-λογισμό μόνο οι αφαιρέσεις θεωρούνται τιμές 109

Αναγωγή Κανονικής Μορφής Η στρατηγική της αναγωγής κανονικής σειράς σχετίζεται στενά με την οκνηρή αποτίμηση. Η μετατροπή κάθε φορά του αριστερότερου β-redex σημαίνει ότι δεν έχει προηγηθεί μετατροπή μέσα στον όρο, πάνω στον οποίο εφαρμόζεται η αφαίρεση, που αντιστοιχεί σε αυτό το β redex. 110

Αναλογία με Οκνηρή Αποτίμηση Κατ αναλογία στην οκνηρή αποτίμηση μία συνάρτηση καλείται χωρίς να προηγηθεί αποτίμηση των παραμέτρων της. Στην γλώσσα προγραμματισμού Algol 60, η συμπεριφορά αυτή επιτυγχάνεται με τη μέθοδο του περάσματος παραμέτρων κατ όνομα (call by name). 111

Παράδειγμα Η στρατηγική της αναγωγής κανονικής σειράς οδηγεί τελικά την αναγωγή του όρου (λx.λy.y)ω στην τιμή λy.y Το ίδιο αποτέλεσμα προκύπτει στη γλώσσα Algol 60, αν ορισθούν οι συναρτήσεις και στη συνέχεια αποτιμηθεί η έκφραση f(g) στον επόμενο κώδικα: 112

Παράδειγμα integer procedure f (x); integer x; begin f :=42 end; integer procedure g; begin while true do g := 7 end; 113

Παράδειγμα Το αποτέλεσμα είναι 42, γιατί κατά την αποτίμηση δε χρειάζεται να γίνει η κλήση στη συνάρτηση g, που δεν τερματίζεται Η αποτίμηση όμως της έκφρασης f(g) δεν θα τερματιζόταν σε κάποιες άλλες γλώσσες προγραμματισμού Pascal, C, κλπ. 114

Πρόθυμη Αποτίμηση Στις γλώσσες αυτές το πέρασμα παραμέτρων γίνεται κατ αξία (by value) και η τιμή της παραμέτρου g αποτιμάται πριν κληθεί η συνάρτηση f. Η κλήση της g οδηγεί σε μη τερματισμό. Πρόθυμη αποτίμηση (eager evaluation) είναι η αποτίμηση κατά την οποία οι παράμετροι αποτιμώνται πριν γίνει η κλήση στη συνάρτηση. 115

Πρόθυμη αποτίμηση στο λ-λογισμό Στον λ-λογισμό, το ανάλογο της πρόθυμης αποτίμησης και του περάσματος παραμέτρων κατ αξία είναι μία στρατηγική αποτίμησης που κατά την αποτίμηση του όρου (λx.λy.y)ω θα αποτιμούσε πρώτα τον όρο Ω. 116

Πρόθυμη αποτίμηση στο λ-λογισμό Τέτοιου είδους στρατηγικές προκύπτουν υποχρεωτικά αν στον κανόνα της β- μετατροπής (λx.m) N β M[ x:=n ] Προσθέσουμε τον περιορισμό ότι ο όρος Ν πρέπει να είναι τιμή. 117