You are on page 1of 146

ΠΕΤΡΟΣ ΣΤΕΦΑΝΕΑΣ

ΓΙΩΡΓΟΣ ΚΟΛΕΤΣΟΣ

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

ΓΕΩΡΓΙΟΣ ΚΟΛΕΤΣΟΣ

Εφαρμογές της Λογικής


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

Συγγραφή
Πέτρος Στεφανέας
Γεώργιος Κολέτσος

Κριτικός αναγνώστης
Κωνσταντίνος Δημητρακόπουλος

Συντελεστές έκδοσης
Γλωσσική Επιμέλεια: Δέσποινα Λαμπαδά
Τεχνική Επεξεργασία: Αικατερίνη Ξύστρα

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) συνέβαλε στην αρνητική απάντηση στο
Entscheidungsproblem1 του Hilbert. Με τη βοήθεια του λ−λογισμού με τύπους
διατυπώνεται στη συνέχεια η αντιστοιχία Curry-Howard «των αποδείξεων ως προ-
γραμμάτων (proofs as programs)». Τέλος, η εξισωτική λογική και οι αλγεβρικές προ-
διαγραφές δίνουν ένα βασικό πλαίσιο αναφοράς τόσο στην αυτόματη απόδειξη θεω-
ρημάτων (automated theorem proving), όσο και στην τεχνολογία λογισμικού και

1Entscheidungsproblem (πρόβλημα απόφασης) ονομάζεται μία πρόκληση που έθεσε ο Hilbert


το 1928. Το Entscheidungsproblem ζητάει έναν αλγόριθμο που να παίρνει είσοδο μία πρόταση της
πρωτοβάθμιας λογικής (πιθανώς με πεπερασμένο αριθμό αξιωμάτων πέρα από τα συνήθη αξιώματα
της πρωτοβάθμιας λογικής) και να απαντάει Ναι ή ΄Οχι σύμφωνα με το αν η πρόταση έχει
καθολική ισχύ (υνιvερσαλλψ vαλιδ), δηλαδή αν ισχύει σε κάθε δομή που ικανοποιεί τα αξιώματα.

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 να είναι και συναρτήσεις. Για παράδειγμα, η
R1
έκφραση 0 f (x) dx, όταν το πεδίο των ορισμάτων είναι ολοκληρώσιμες πραγματικές
συναρτήσεις που ορίζονται στο [0, 1], ορίζει μία συνάρτηση με ορίσματα συναρτήσεις
και τιμές πραγματικούς αριθμούς.
Αξίζει να σημειωθεί εδώ ότι ο τρόπος με τον οποίο έχει νοηθεί η συνάρτηση στα
μαθηματικά δίνει δύο διαφορετικές εκδοχές αυτής της έννοιας που, αρκετά σχηματικά,
θα τις ονομάσουμε συναρτήσεις κατά Euler και συναρτήσεις κατά Riemann. Αντισ-
τοιχούν δε στην ιστορική εξέλιξη της έννοιας με κύριους σταθμούς τους δύο αυτούς
μεγάλους μαθηματικούς.

Για τον Euler η συνάρτηση δίνεται από μία «φόρμουλα» η οποία επιτρέπει ή όχι
2
τον υπολογισμό της, π.χ. οι φόρμουλες ή μαθηματικοί τύποι
1
x2 , p , 1 + x + · · · + xn + · · ·
{1 − x2 }
θεωρούνται συναρτήσεις μιας μεταβλητής x. Το πεδίο ορισμού δεν προσδιορίζεται
εκ των προτέρων. Οι φόρμουλες αυτές είναι μάλλον μια «απόπειρα» υπολογισμού
2Θα χρησιμοποιούμε τον όρο «φόρμουλα» γι΄ αυτό που συνήθως ονομάζουμε «μαθηματικό τύπο»,
επειδή τον όρο «τύπο» θα τον χρησιμοποιήσουμε για την αντίστοιχη έννοια της πληροφορικής.

6
της συνάρτησης, απόπειρα που μπορεί και να μην καταλήγει σε αποτέλεσμα. Για
1
παράδειγμα, η φόρμουλα 1+x+· · ·+xn +· · · αναπαριστά την συνάρτηση 1−x ακόμα και
στην περίπτωση που |x| > 1, οπότε η ως άνω σειρά δεν συγκλίνει. Η αντίληψη αυτή για
τη συνάρτηση, αντίληψη πηγαία και διασθητικά ισχυρή, στάθηκε αδύνατο να αποτελέ-
σει το αντικείμενο ακριβών λογικομαθηματικών ορισμών. Η συνάρτηση είναι συνδ-
εδεμένη με τη μαθηματική φόρμουλα που την εκφράζει και κάθε αντιμετώπιση γίνεται
για την κάθε περίπτωση ξεχωριστά· φαίνεται δύσκολο να ασχοληθούμε με γενικές
ιδιότητες ολόκληρων κλάσεων από συναρτήσεις. Δεν στάθηκε δυνατό ποτέ να δοθεί
ένας ακριβής ορισμός των συναρτήσεων κατά Euler. Η έννοια αυτή εγκαταλείφτηκε,
εδώ και πολύ καιρό, προς όφελος της έννοιας της συνάρτησης που εισήγαγε ο Rie-
mann.

Με τον Riemann έχουμε μια ριζική μετατόπιση της αντίληψης για τη συνάρτηση,
σε κατευθύνσεις που σήμερα θα ονομάζαμε λογικομαθηματικές-αξιωματικές. Κάθε
ιδέα υπολογισμού εξαφανίζεται· μια συνάρτηση π.χ. από το R (σύνολο πραγματικών
αριθμών) στο R είναι ένα «μαύρο κουτί», δηλαδή ένα απροσδιόριστο αντικείμενο (εδώ
η φόρμουλα που την υπολογίζει εξαφανίζεται), για το οποίο το μόνο που ξέρουμε είναι
ότι αν δώσουμε έναν πραγματικό αριθμό θα μας επιστρέψει επίσης έναν πραγματικό
αριθμό. Επιπλέον, δεν μας επιτρέπεται να μελετήσουμε την έννοια της συνάρτησης
παρά μόνο με βάση αυτή την ιδιότητα. Η μετατόπιση αυτή της αντίληψης για τη
συνάρτηση επιτρέπει να αποδεικνύουμε ιδιότητες που αφορούν κλάσεις συναρτήσεων
και όχι μόνο μεμονωμένες συναρτήσεις, όπως στην περίπτωση του Euler. ΄Η ακόμη να
αποδεικνύουμε και αρνητικές ιδιότητες π.χ. ποιές συναρτήσεις στο R είναι συνεχείς ή
ποιές δεν είναι παραγωγίσιμες. Η ουσία της απομάκρυνσης από την αντίληψη του Eu-
ler είναι ότι η καινούργια έννοια είναι επιδεκτή μιας λογικομαθηματικής ανάλυσης με
ολοένα και μεγαλύτερους βαθμούς μαθηματικής αυστηρότητας. Η καινούργια αντίλ-
ηψη επιτρέπει τον ακριβή ορισμό του πότε μια συνάρτηση είναι συνεχής, παραγωγίσιμη,
αναλυτική κ.λ.π. Μέσω της αυστηρότητας τα μαθηματικά αναπτύσσονται, γενικεύον-
ται, αποκτούν υπόσταση. Εμφανίζονται περιοχές που θα ήταν αδύνατο να τις φαντασ-
τούμε διαφορετικά. ΄Οπως για παράδειγμα η θεωρία των αναλυτικών συναρτήσεων αλλά
και επεκτάσεις της έννοιας της συνάρτησης, όπως η θεωρία μέτρου, οι κατανομές, οι
χώροι 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 που ανήκει σ΄ αυτό το (f x) είναι
ίδιο με το (gx). Αυτή η άποψη είναι η άποψη της ισότητας των συναρτήσεων ως προς
την έκταση. Σύμφωνα με την άποψη αυτή (συνολοθεωρητική άποψη) η συνάρτηση
είναι ένα σύνολο (η έκταση της συνάρτησης) με στοιχεία διατεταγμένα ζεύγη της
μορφής hx, yi, όπου x είναι όρισμα της συνάρτησης και y η τιμή της σ΄ αυτό το όρισμα.
Οπότε δύο συναρτήσεις ταυτίζονται όταν ταυτίζονται ως σύνολα, δηλαδή όταν έχουν
τα ίδια στοιχεία.
΄Ομως, είναι δυνατόν να θεωρήσουμε ότι δύο συναρτήσεις f και g μπορεί να εί-
ναι ίδιες ως προς την έκταση άλλα να μην είναι ίδιες όσον αφορά τον τρόπο με τον
οποίο υπολογίζουν τις τιμές τους. Υπό αυτή τη θεώρηση οι συναρτήσεις νοούνται ως
συναρτήσεις ως προς την ένταση. Π.χ. οι συναρτήσεις f (x) = 2 ∗ x και g(x) = x + x
ενώ είναι ίδιες ως προς την έκταση δεν μπορούν να θεωρηθούν ίδιες ως προς την
ένταση, μια και ο τρόπος που υπολογίζονται οι τιμές τους είναι διαφορετικός.

3Αν f η συνάρτηση και x ένα όρισμά της, γράφουμε ως (f x) την τιμή της συνάρτησης γι΄ αυτό το
όρισμα.

8
Θα πρέπει στα διάφορα (υπολογιστικά) πλαίσια και με διάφορα κριτήρια να απο-
φασίζουμε πότε δύο συναρτήσεις είναι ίδιες ως προς την ένταση (ισότητα ως προς την
ένταση).

Συναρτήσεις πολλών μεταβλητών. Η μέχρι τώρα σιωπηρή παραδοχή είναι


ότι οι συναρτήσεις μας είναι συναρτήσεις μιας μεταβλητής. Είναι βέβαια επιθυμητό να
έχουμε στη διάθεσή μας και την έννοια, για κάθε φυσικό n ≥ 1 , της συνάρτησης
n μεταβλητών (n ∈ N). Αυτό μπορούμε να το κάνουμε χωρίς να αποστούμε από
την παραδοχή μας ότι οι συναρτήσεις μας είναι συναρτήσεις μιας μεταβλητής. Η ιδέα
οφείλεται στον Schο̈nfinkel [Schο̈nfinkel,1924] αλλά ονομάζεται ”currying” από τον
H. B. Curry που την εισήγαγε και αυτός ανεξάρτητα. ΄Οταν π.χ. το n = 2, δηλαδή
όταν θέλουμε η f να είναι συνάρτηση δύο μεταβλητών, τότε μπορούμε να θεωρήσουμε
ότι για αντικείμενα x και y η τιμή f (x, y) είναι η ((f x) y), δηλαδή η συνάρτηση δύο
μεταβλητών μπορεί να θεωρηθεί ως συνάρτηση μιας μεταβλητής της οποίας οι τιμές
είναι συναρτήσεις μίας μεταβλητής. Και αυτό μπορεί να επεκταθεί σε οποιοδήποτε n.
Ως παράδειγμα, εάν θέλουμε να θεωρήσουμε τη συνάρτηση Κ δύο μεταβλητών έτσι
ώστε K(x, y) = x μπορούμε να την αναπαραστήσουμε στον κόσμο των συναρτήσεων
μιας μεταβλητής ως Κ που έχει την ιδιότητα ((Kx)y) = x.

Αφαίρεση. Είναι αναγκαίο να διαχωρίζουμε μεταξύ ενός συμβόλου ή έκφρασης


που δηλώνει μια συνάρτηση και μιας έκφρασης που περιέχει μια μεταβλητή και δηλώνει
με αμφίβολο τρόπο κάποια τιμή της συνάρτησης. Αυτή η διάκριση συσκοτίζεται στη
συνήθη γλώσσα των μαθηματικών.
΄Οταν λέμε π.χ. ότι ξ 2 + 1 είναι μεγαλύτερο από το 1000 διατυπώνουμε κάτι το
οποίο δεν έχει νόημα παρά μόνον αν το ξ πάρει την τιμή ενός συγκεκριμένου αριθμού.
Ενώ όταν λέμε ότι «x2 +1 είναι μία πρωτογενής αναδρομική συνάρτηση», διατυπώνουμε
κάτι οριστικό, κάτι που δεν εξαρτάται από τον προσδιορισμό του x, δηλαδή εδώ το
x επέχει θέση φαινομενικής ή δεσμευμένης μεταβλητής. Η διαφορά λοιπόν είναι ότι
στην πρώτη περίπτωση η έκφραση x2 + 1 χρησιμοποιείται ως διφορούμενη ή μεταβλητή
δήλωση ενός φυσικού αριθμού ενώ στη δεύτερη μιας συγκεκριμένης συνάρτησης. Γι΄
αυτό στη δεύτερη περίπτωση θα παριστάνουμε τη συνάρτηση που αντιστοιχεί στην
έκφραση x2 + 1 ως (λx.x2 + 1) (λ-αφαίρεση).
Το νόημα μίας τέτοιας γραφής (λ-αφαίρεσης) είναι ότι όταν η συνάρτηση (λx.x2 +
1) εφαρμοστεί σε ένα συγκεκριμένο όρισμα, έστω 3, τότε η τιμή της συνάρτησης θα
παραχθεί από τη «μεταβλητή» έκφραση x2 + 1 όπου όμως το x αντικαθίσταται με 3,
δηλαδή
λx.x2 + 1 3 = 32 + 1 (= 10)


Χρησιμοποιώντας διαφορετική φρασεολογία θα λέγαμε ότι στην έννοια της συνάρτησης


αντιστοιχούν δύο πράξεις.
9
Η πρώτη πράξη που ονομάζεται εφαρμογή αντιστοιχεί σ΄ αυτό που κάνει η συνάρτηση
όταν ενεργεί. Εάν έχω μια συνάρτηση f μπορώ να την «εφαρμόσω» στο όρισμα g (το
οποίο είδαμε ότι είναι κι αυτό συνάρτηση) και να πάρω το f (g) (που με τη σειρά του
είναι συνάρτηση).
Η δεύτερη πράξη (για τις συναρτήσεις που ορίζονται ή υπολογίζονται μέσω μιας
φόρμουλας - κανόνα, δηλαδή μιας συνάρτησης κατά Euler) ονομάζεται αφαίρεση και
χρειάζεται για την κατανόησή της μεγαλύτερη προσοχή. Αν θέλουμε να δώσουμε
έναν συνοπτικό ορισμό της πράξης θα λέγαμε ότι αντιστοιχεί στην «αναγόρευση» μιας
φόρμουλας υπολογισμού (όπως η φόρμουλα του Euler) σε μαθηματικό αντικείμενο,
σε συνάρτηση. Αυτή είναι μια πράξη που γίνεται με άτυπο τρόπο στα μαθηματικά όταν
λέμε
«θεωρούμε τη συνάρτηση που ορίζεται από τον τύπο x2 +1 »
ή επίσης με διαφορετική φρασεολογία «θεωρούμε τη συνάρτηση x 7−→ x2 + 1».
Ο Church για να παραστήσει αυτή τη συνάρτηση εισήγαγε το συμβολισμό

λx.x2 + 1

Δηλαδή ο τύπος υπολογισμού «x2 + 1» αναγορεύεται με τη χρήση του τελεστή λ (από


όπου προέρχεται και ο όρος λ-λογισμός) στη συνάρτηση λx.x2 + 1.
Η ουσία αυτού του ορισμού (αυτής της πράξης) είναι ότι για να «υπάρξει» μια
συνάρτηση πρέπει να υπάρχει μια αναφορά σ΄ έναν ορισμό της συνάρτησης που γίνεται
μέσω μιας «φόρμουλας», δηλαδή μέσω μιας καταγραφής στο συντακτικό της μαθη-
ματικής μας γλώσσας. Εάν πούμε ότι το f είναι η συνάρτηση
Z x
dt
x 7−→ 2
0 1+t
R x dt
τότε λx. 0 1+t2 είναι η συνάρτηση f . Εάν έχουμε ορίσει μια συνάρτηση φ(x) σ΄ ένα
μαθηματικό κείμενο μέσω της αναφοράς Ορισμός 56 τότε η συνάρτηση λx.φ(x) είναι
ο «Ορισμός 56».
Γενικά στα μαθηματικά δεν ισχύει ότι κάθε συνάρτηση έχει μια αναφορά σε έναν
ορισμό, σε μια φόρμουλα. Στο λ-λογισμό (όπως και στις συναρτήσεις κατά Euler)
περιοριζόμαστε στις συναρτήσεις που έχουν τέτοιες αναφορές. Αυτός ο «περιορισ-
μός» είναι απαραίτητος εάν θέλουμε να θεωρήσουμε τις συναρτήσεις ως προγράμματα,
δηλαδή να περιοριστούμε στις συναρτήσεις που είναι προγράμματα.
Θα προχωρήσουμε τώρα στον ορισμό του συστήματος του καθαρού (χωρίς τύπους)
λ-λογισμού.

Ορισμός. Το σύνολο Λ των λ-όρων είναι το σύνολο των εκφράσεων που σχη-
ματίζεται ξεκινώντας από ένα άπειρο σύνολο μεταβλητών V = {v, v 0 , v 00 , . . .} (αρι-
θμήσιμο σύνολο) με τη χρήση των τελεστών της εφαρμογής και της λ-αφαίρεσης. Ο
γενικευμένος ορισμός είναι ο εξής:
10
(1) x∈V ⇒ x∈Λ
(2) M, N ∈ Λ ⇒ (M N ) ∈ Λ
(3) M ∈ Λ, x ∈ V ⇒ (λx. M ) ∈ Λ
ή χρησιμοποιώντας αφηρημένη σύνταξη μπορούμε να γράψουμε:
V v |V0
Λ V | (Λ Λ) | (λV. Λ)
Κάθε όρος της μορφής (M N ) θα λέγεται εφαρμογή (του M στο N ) ενώ κάθε
όρος της μορφής (λx.M ) θα λέγεται λ-αφαίρεση (στο x). Για το κατ΄ αρχήν νόημα
αυτών των παραστάσεων ισχύουν οι παρατηρήσεις που διατυπώθηκαν παραπάνω για
τις πράξεις της εφαρμογής και της αφαίρεσης.

Ας σημειωθεί ότι οι λ-όροι είναι συντακτικά αντικείμενα και ότι η οποιαδήποτε


ερμηνεία αποδίδεται εκ των υστέρων. Μπορούμε να νοούμε τους λ-όρους ως προ-
γράμματα υπολογισμού που γράφονται στη γλώσσα του λ-λογισμού. Ας σημειωθεί
επίσης ότι ο τρόπος με τον οποίο οριζονται οι λ-όροι στον παραπάνω ορισμό ονομάζε-
ται γενικευμένος επαγωγικός ορισμός και το νόημά του είναι (εδώ και σε όλους τους
επαγωγικούς ορισμούς στη συνέχεια) ότι ως λ-όρος θα νοείται κάθε συμβολοσειρά
που ορίζεται μόνον με διαδοχική εφαρμογή των κανόνων 1,2 και 3. Με πιο μαθη-
ματικό τρόπο μπορούμε να πούμε ότι οι λ-όροι είναι το ελάχιστο σύνολο εκφράσεων
της γλώσσας του λ-λογισμού [της οποίας το αλφάβητο είναι οι μεταβλητές, το σύμ-
βολο λ καθώς και τα βοηθητικά σύμβολα της τελείας . και των παρενθέσεων ( και ) ]
το οποίο είναι κλειστό για τους κανόνες 1,2 και 3.

Παράδειγμα. Οι κάτωθι εκφράσεις είναι λ-όροι:


v
(v v 00 )
(λv. (v v 00 ))
((λv. (v v 00 )) v 0 )
((λv 0 . ((λv. (v v 00 )) v 0 ))v 000 )
Συμβολισμοί:
(1) Τα x, y, z, . . . θα δηλώνουν τυχαίες μεταβλητές (μεταμεταβλητές). Τα M, N, L, . . .
θα δηλώνουν τυχαίους λ-όρους.
(2) Για ευκολία, οι εξωτερικές παρενθέσεις δεν αναγράφονται.
Γράφουμε F M1 M2 . . . Mn
αντί του πλήρους (· · · ((F M1 ) M2 ) . . . Mn ).
[προσεταιρισμός από αριστερά στις εφαρμογές]
Γράφουμε λx1 x2 . . . xn . M ή λx1 λx2 · · · λxn .M αντί του (λx1 . (λx2 . (· · · (λxn . M ) · · · ))).

[προσεταιρισμός από δεξιά στις λ-αφαιρέσεις]

11
Παράδειγμα. Οι όροι του [αδείγματος]εξ:λαμβδα-τερμς γράφονται με βάση τις
παραπάνω συνθήκες:
v
v v 00
λv. v v 00
(λv. v v 00 ) v 0
(λv 0 . (λv. v v 00 ) v 0 )v 000

Σχόλιο. Ο τρόπος με τον οποίο έχουν οριστεί οι λ-όροι δίνει μοναδική αναγν-
ωσιμότητα, δηλαδή κάθε όρος t είναι ένα και μόνον ένα από τα ακόλουθα:
(1) μια μεταβλητή (t = x για κάποιο x),
(2) μια εφαρμογή, όπου υπάρχουν μοναδικά M και N ώστε t = (M N ),
(3) μια λ−αφαίρεση, όπου υπάρχουν μοναδικά x και N ώστε t = (λx.N ).

Για τη γραφή των όρων θα προτιμούμε τις απλουστεύσεις που περιγράψαμε παρα-
πάνω αλλά και επιπλέον κάθε γραφή που θα υποδεικνύεται από την απλότητα ή από
τη σαφήνεια και η οποία δε θα οδηγεί σε λάθος ανάγνωση του όρου. Σε πολλές
περιπτώσεις, αντί του σωστού (λx.M ) θα γράφουμε λxM .

Ελεύθερες και δεσμευμένες μεταβλητές. ΄Οταν σχηματίζεται ο όρος


λx.M ο τελεστής λx δεσμεύει τη μεταβλητή x στον όρο M . Για παράδειγμα, λέμε ότι
στον όρο λx.yx η x είναι δεσμευμένη ενώ η y ελεύθερη μεταβλητή. Η αντικατάσταση
[xN ] εκτελείται μόνο στις ελεύθερες εμφανίσεις της x. Π.χ. στον όρο
3
X
x+y
x=1

η x είναι δεσμευμένη μεταβλητή και η y ελεύθερη. Δεν έχει νόημα να αντικαταστή-


σουμε τη x με κάποιο αριθμό, έχει όμως νόημα να αντικαταστήσουμε την y με π.χ.
P3 Rx
το 5 αποκτώντας την παράσταση x=1 x + 5. Ομοίως στην παράσταση 0 f (t) dt η x
είναι ελεύθερη μεταβλητή ενώ η t δεσμευμένη. Και στις δύο περιπτώσεις υπάρχει ένας
τελεστής που δεσμεύει τις εμφανίσεις των μεταβλητών στις αντίστοιχες παραστάσεις
P3
π.χ. ο τελεστής x=1 δεσμεύει την εμφάνιση της x στην παράσταση x+y, οπότε στην
P3
παράσταση x=1 x+y η εμφάνιση της x είναι δεσμευμένη. Οι δεσμευμένες εμφανίσεις
των μεταβλητών στην πραγματικότητα έχουν χάσει το status των μεταβλητών. Λει-
τουργούν μόνον ως αναφορές για τις οποίες σημασία δεν έχει το όνομα αλλά η θέση.
΄Ετσι μπορούμε να αλλάξουμε το όνομά τους χωρίς να διαταράξουμε τη σημασία της
παράστασης στην οποία εμφανίζονται. Για παράδειγμα αν αντικαταστήσουμε την x με
P3 P3
την z στην x=1 x+y παίρνουμε την z=1 z +y που και στις δύο περιπτώσεις είναι το
ίδιο (1+y)+(2+y)+(3+y). Προσοχή όμως, δεν μπορούμε να την αντικαταστήσουμε
P3
με y γιατί τότε θα παίρναμε την παράσταση 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 6≡ (λx.y) z

΄Οταν έχουμε M ≡α N λέμε (ακολουθώντας τον Church) ότι M και N είναι α-


ισοδύναμοι. Η σχέση της α-ισοδυναμίας είναι σχέση ισοδυναμίας, δηλαδή αυτοπαθής,
συμμετρική και μεταβατική. Σε ό,τι ακολουθεί θα ταυτίζουμε κάθε δύο όρους που είναι
α-ισοδύναμοι, θα θεωρούμε δηλαδή ότι δεν διαφέρουν ο ένας από τον άλλον. Στην
πραγματικότητα, με μαθηματικούς όρους, οι λ-όροι μας θα είναι κλάσεις ισοδυναμίας
της σχέσης ≡α . Οι παρατηρήσεις για την αλλαγή του ονόματος των δεσμευμένων
μεταβλητών ενός λ-όρου ισχύουν όπως και παραπάνω. Εάν σε οποιοδήποτε όρο (ή
υποόρο) λxM θέλουμε να αλλάξουμε το όνομα του x με το z θα πρέπει να τον
μετατρέψουμε σε λzM 0 , όπου M 0 έχει προκύψει από το M με την αλλαγή όλων των
ελεύθερων x με z και με την προϋπόθεση ότι το z δεν εμφανίζεται (ελεύθερο) στο M ,
είναι δηλαδή μια φρέσκια (καινούργια) μεταβλητή.

Ορισμός. Ακολουθούν κάποιοι σημαντικοί ορισμοί:

(1) Το σύνολο των ελεύθερων μεταβλητών του λ-όρου M (συμβολίζεται με


F V (M )) ορίζεται αναδρομικά ως:

FV (x) = {x}
FV (M N ) = 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 6= 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 6= 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 6= y
και x ∈
/ FV (P ). Και στις δύο περιπτώσεις το αποτέλεσμα προκύπτει από τον ορισμό
και την επαγωγική υπόθεση.

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


Στον λ-όρο y (λxy.xyz) οι y και z εμφανίζονται ως ελεύθερες μεταβλητές, διότι
η πρώτη εμφάνιση της y είναι ελεύθερη καθώς και η μοναδική εμφάνιση της z, ενώ οι
x και y ως δεσμευμένες διότι η δεύτερη εμφάνιση της y είναι δεσμευμένη καθώς και η
μοναδική εμφάνιση της x. Ο όρος λxy.xxy είναι κλειστός.
Τα ονόματα των δεσμευμένων μεταβλητών σε έναν όρο θα επιλέγονται πάντα
ώστε να διαφέρουν από τα ονόματα των ελεύθερων μεταβλητών. ΄Αρα γράφουμε
y (λxy 0 .xy 0 z) για τον y (λxy.xyz). Η σύμβαση αυτή μπορεί να επεκταθεί και σε περισ-
σότερους από έναν όρους. Αν π.χ. έχουμε τους όρους M1 , M2 , . . . Mn μπορούμε να
φανταστούμε ότι όλες οι δεσμευμένες μεταβλητές που εμφανίζονται στους όρους αυ-
τούς είναι διαφορετικές από τις ελεύθερες μεταβλητές αυτών των όρων. Αυτό βέβαια
μπορεί να επιτευχθεί με μετονομασία των δεσμευμένων (και όχι βέβαια των ελεύθερων)
μεταβλητών.
΄Αρα λοιπόν και στην περίπτωση της αντικατάστασης όταν σχηματίζουμε τον όρο
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 hx := N i ή με M hN/xi. Δηλαδή
η διαδικασία της απλής αντικατάστασης είναι «αντικατάσταση και ό,τι προκύψει».
Μπορούμε να επεκτείνουμε την απλή αντικατάσταση και στην περίπτωση πολλών
μεταβλητών. ΄Εστωσαν x1 . . . xk ξεχωριστές μεταβλητές και N1 . . . Nk όροι. Τότε
ο M hN1 /x1 , · · · , Nk /xk i είναι το αποτέλεσμα της παράλληλης ή ταυτόχρονης αν-
τικατάστασης των x1 , . . . , xk από, αντιστοίχως, τα N1 , . . . , Nk . Ας προσέξουμε ιδι-
αίτερα τον περιορισμό ταυτόχρονα. Διότι αν κάνουμε την αντικατάσταση εν σειρά
τότε το αποτέλεσμα θα είναι πιθανώς διαφορετικό διότι μπορεί κατά τη σειριακή αν-
τικατάσταση να δημιουργηθούν καινούργιες θέσεις μεταβλητών που θα πρέπει να αν-
τικατασταθούν στη συνέχεια π.χ. xyhy/x, z/yi = yz, αλλά αν εκτελέσουμε την αν-
τικατάσταση εν σειρά xyhy/xihz/yi = yyhz/yi = zz. Η απλή αντικατάσταση δεν
είναι βέβαια η σωστή αντικατάσταση διότι π.χ. (λy.xy)hy/xi = λy.yy ενώ η σωστή
κίνηση θα ήταν να αλλάξουμε το όνομα της δεσμευμένης μεταβλητής στο (λy.xy) σε
π.χ. z παίρνοντας το (λy.xy)hy/xi 6≡ (λz.xz)hy/xi = λz.yz. Το αποτέλεσμα αυτής
της ενέργειας το ονομάζουμε αντικατάσταση και είναι το ίδιο με αυτό που ορίσαμε ως
(λy.xy)[y/x]. Η σύμβαση των μεταβλητών μας «απαλλάσσει» από την υποχρέωση της
μετονομασίας των δεσμευμένων μεταβλητών αφού υποτίθεται ότι ένα μαγικό ραβδάκι
εκτελεί για εμάς αυτές τις μετονομασίες. Από την άποψη της υλοποίησης όμως η δι-
αδικασία της αντικατάστασης δεν είναι καθόλου απλή και υπάρχει εκτεταμένη έρευνα
για αυτό το ζήτημα. Με τον ίδιο τρόπο θα μπορούσαμε να ορίσουμε και τη (σωστή)
αντικατάσταση M [N1 /x1 , . . . , Nk /xk ] των x1 , , . . . xk από τα N1 , . . . , Nk στον όρο
M . Ο όρος M 0 [N1 /x1 , . . . , Nk /xk ] θα είναι ο M hN1 /x1 , . . . , Nk /xk i όπου M 0 είναι
15
ένας α-ισοδύναμος όρος με τον M έτσι ώστε στον M 0 καμία από τις δεσμευμένες
του μεταβλητές δεν εμφανίζεται ελεύθερη σε κάποιο από τα N1 , . . . , Nk , πράγμα που
η διευρυμένη σύμβαση των μεταβλητών μας το εξασφαλίζει. Ας σημειωθεί ότι το
M [N/x] ταυτίζεται με το M [xN ].

Πρόταση ([Λήμμα αντικατάστασης – Substitution lemma]). ΄Εστω M, N, L ∈ Λ.


Υποθέτουμε ότι x 6= 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 6= 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 6= 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 0 .yz 0 )z
=β λzz 0 .zz 0
≡ λyz.yz
≡ J
17
Αναγωγή. Παρακάτω δίνεται ο ορισμός για τη σχέση της αναγωγής στους
λ-όρους.

Ορισμός. →β είναι η μικρότερη διμελής σχέση στο Λ ώστε να ισχύει ότι

(λx.P )Q →β P [xQ]

και η οποία είναι κλειστή για τους ακόλουθους κανόνες:

P →β P 0 =⇒ ∀x ∈ V : λx.P →β λx.P 0
P →β P 0 =⇒ ∀Z ∈ Λ : P Z →β P 0 Z
P →β P 0 =⇒ ∀Z ∈ Λ : ZP →β ZP 0

Σχόλιο. Η σχέση →β ορίζεται  εκτασιακά, δηλαδή ως σύνολο διατεταγμένων


ζευγών με συντεταγμένες από το Λ.

Σημείωση: Αν στη θέση της σχέσης →β βάλουμε μια οποιαδήποτε διμελή σχέση
R στο Λ τότε αν η R ικανοποιεί τις παραπάνω ιδιότητες θα λέμε ότι η R περνάει στα
συμφραζόμενα.
΄Ενας όρος της μορφής (λx.P )Q ονομάζεται β − redex και ο P [xQ] ονομάζεται
το β − contractum του.
΄Ενας όρος M είναι μία β−κανονική μορφή εάν δεν υπάρχει όρος N ώστε M →β
N.

Ορισμός. Η έννοια του υποόρου ορίζεται ως εξής:


(1) οι υποόροι του x είναι το x,
(2) οι υποόροι του (M N ) είναι ο (M N ), οι υποόροι του M και οι υποόροι του
N,
(3) οι υποόροι του (λx.M ) είναι ο (λx.M ) καθώς και οι υποόροι του M .

Πρόταση. Ισχύει η ακόλουθη πρόταση:

M →β N ⇔ Ακριβώς ένας υποόρος του M που είναι contractum


έχει αντικατασταθεί με το redex του και προέκυψε ο N .

Προοφ. ΄Εστω red η σχέση μεταξύ δύο λ-όρων που ορίζεται από το δεύτερο
σκέλος της ισοδυναμίας. Ειναι εύκολο να δείξουμε ότι η σχέση red ικανοποιεί τις
ιδιότητες της →β . Οπότε ισχύει →β ⊆ red, επειδή →β είναι η μικρότερη τέτοια
σχέση. ΄Εστω τώρα M redN . Τότε υπάρχει υποόρος t του M της μορφής redex και
t0 του N ώστε ο N προέκυψε από τον M με την αντικατάσταση του t με το t0 , που
είναι το contractum του t. Αλλά φανερά έχουμε t →β t0 . Και επειδή η δημιουργία
του όρου M (μαζί και του N ) ακολουθεί τους κανόνες για τους οποίους είναι κλειστή
18
η →β , τελικά θα έχουμε και M →β N 4. Οπότε red ⊆→β , οπότε οι δύο σχέσεις
ταυτίζονται. 

Πόρισμα. Ο όρος M είναι β-κανονική μορφή τότε και μόνον εάν δεν περιέχει (ως
υποόρο) κανένα redex.

Προοφ. Διότι αν περιείχε, τότε θα υπήρχε όρος N , σύμφωνα με την παραπάνω


πρόταση, ώστε M →β N . 

Ορισμός. Η σχέση β είναι η μεταβατική και αυτοπαθής κλειστότητα της σχέσης


→β . Δηλαδή είναι η μικρότερη διμελής σχέση στο Λ που είναι κλειστή για τους
ακόλουθους κανόνες:
P →β P 0 ⇒ Pβ P 0
0
Pβ P ∧ Pβ0 P 00 ⇒ Pβ P 00
Pβ P

Πρόταση. Ισχύει η ακόλουθη πρόταση:


Mβ N ⇔ Είτε M ≡ N είτε υπάρχουν όροι M1 , M2 , . . . Mn ώστε
M ≡ M1 και N ≡ Mn και για κάθε i (1 ≤ i ≤ n − 1),
Mi →β Mi+1 , δηλαδή M →β M2 →β · · · →β Mn−1 →β N

Προοφ. ΄Εστω R η σχέση που ορίζεται στο Λ μέσω του δεύτερου σκέλους της
ισοδυναμίας. Είναι προφανές ότι η R είναι αυτοπαθής, μεταβατική και περιέχει τη
σχέση →β . Οπότε β ⊆ R. ΄Εστω τώρα M RN . Εάν M ≡ N τότε Mβ N , διότι η β
είναι αυτοπαθής. Διαφορετικά, υπάρχουν M →β M2 →β · · · →β Mn−1 →β N . Αλλά
τότε Mβ M2β · · ·β Mn−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 0 ⇒ P =β P 0
P =β P 0 ∧ P 0 =β P 00 ⇒ P =β P 00
P =β P
P =β P 0 ⇒ P 0 =β P

Πρόταση. Ισχύει η πρόταση:


M =β N ⇔ Υπάρχουν M1 , M2 , . . . Mn με M ≡ M1 και N ≡ Mn
και για κάθε i (1 ≤ i ≤ n − 1) έχουμε Miβ Mi+1
ή Mi+1β Mi
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
z }| {
διότι (λx. x) y z →β yz
και y ((λx. x) z) →β yz
| {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 →β ω ω = Ω. Οπότε
Ω →β Ω →β Ω →β Ω →β . . .
21
Το Ω είναι ένα παράδειγμα όρου, όπου ένας υπολογισμός που έχει αφετηρία αυτόν
τον όρο δεν τερματίζει ποτέ.

ΤΟ ΘΕΩΡΗΜΑ CHURCH–ROSSER

Κάθε όρος M μπορεί να περιέχει αρκετά (περισσότερα του ενός) β-redex, π.χ. ο
όρος
redex
z }| {
K (I I) = λy. λx. y ((λz. z) λw. w)
| {z }
redex
Μπορούμε να έχουμε K (I I) →β λx. (I I), αλλά και K (I I) →β K I.
Οπότε με αφετηρία έναν όρο M μπορούμε να έχουμε διαφορετικά «μονοπάτια
υπολογισμού» Mβ M1 και Mβ M2 . Πώς σχετίζονται οι όροι M1 και M2 · Το θεώρημα
Church–Rosser λέει πως σε αυτή την περίπτωση υπάρχει πάντοτε ένας (κοινός) όρος
M3 , στον οποίο οι M1 και M2 μπορούν να συγκλίνουν, δηλαδή M1β M3 και M2β M3 .

Θεώρημα. [Church–Rosser]
Εάν Mβ M1 και Mβ M2 , τότε υπάρχει M3 ώστε M1β M3 και M2β M3 .

Ορισμός. ΄Εστω Mβ N και N είναι β-κανονική μορφή. Τότε ο όρος N λέγεται


β-κανονική μορφή του M .

Πόρισμα. Κάθε όρος μπορεί να έχει (αν έχει) μόνον μία κανονική μορφή.

Προοφ. Αν M1 και M2 δύο κανονικές μορφές του M , τότε από το τη:ςηυρςη-


ροσσερ θα υπήρχε όρος M3 ώστε M1β M3 και M2β M3 . Αλλά επειδή M1 κανονική
μορφή τότε M1 ≡ M3 και ομοίως M2 ≡ M3 . Οπότε M1 ≡ M2 . 

Σχόλιο. Δεν έχουν όλοι οι όροι κανονικές μορφές, π.χ. ο όρος Ω. Αν όμως υπ-
άρχει, τότε θα είναι μοναδική. Αν φανταστούμε μία διαδικασία υπολογισμού (αναγωγή)
της κανονικής μορφής τότε το θεώρημα 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 0 . Τότε Mβ L και Nβ L, για κάποιο L, και Nβ L0 και
Nβ0 L0 , για κάποιο L0 . Από το θεώρημα Church–Rosser, υπάρχει L00 ώστε Lβ L00 και
L0β L00 . Οπότε και τελικά (επειδή β μεταβατική) Mβ L00 και Nβ0 L00 , δηλαδή M R N 0 .
Συμπεραίνουμε ότι η R είναι αυτοπαθής, συμμετρική, μεταβατική και περιέχει τη β,
άρα περιέχει και την =β ως μικρότερη τέτοια σχέση. 

Πόρισμα. N είναι η (μοναδική) β-κανονική μορφή του M ⇔ N είναι κανονική


μορφή και M =β N .

Πόρισμα. Αν Mβ N , Mβ L και N, L κανονικές μορφές, τότε N ≡ L.

Πόρισμα. Ο λ-λογισμός ως θεωρία της β-ισότητας είναι συνεπής θεωρία, δηλαδή


υπάρχει ένα ζεύγος M και N λ-όρων που δεν είναι β-ισοδύναμοι 6.

Προοφ. λx. x 6=β λ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 c0 , c1 , c2 , . . . ορίζονται ως:
cn ≡ λf x. f n (x)
Τα νούμερα του Church cn είναι οι αναπαραστάσεις των αριθμών n ∈ N στον
λ-λογισμό. Τα cn είναι όλα σε κανονική μορφή.

Παράδειγμα. Ακολουθούν μερικά νούμερα του Church:


6Το εντελώς ανάλογο ισχύει και στη λογική. Αν ορίσουμε τη συνέπεια ως αδυναμία να αποδείξουμε
στην τυπική θεωρία μία αντίφαση της μορφής p ∧ ¬p, τότε ο ορισμός αυτός είναι ισοδύναμος με την
ιδιότητα να υπάρχει τουλάχιστον μία πρόταση που να μην αποδεικνύεται σ΄ αυτό το σύστημα.

23
c0 ≡ λf. λx. x
c1 ≡ λf. λx. f x
c2 ≡ λf. λx. f (f x)

Μπορούμε να ορίσουμε αναπαραστάσεις των συνήθων αριθμητικών συναρτήσεων;


Η ακόλουθη πρόταση μας λέει πώς ναι.

Πρόταση. Υπάρχουν όροι A+ , A∗ , Aexp για τους οποίους ισχύει:

1. A+ cn cm =β cn+m (A+ αναπαριστά την πρόσθεση)


2. A∗ cn cm =β cnm (A∗ αναπαριστά τον πολλαπλασιασμό)
3. Αν m > 0 τότε Aexp cn cm =β c (nm ) (Aexp αναπαριστά την ύψωση σε δύναμη)

Προοφ. (Rosser): Ορίζουμε τους όρους ως εξής:

1. A+ ≡ λxypq. x p (y p q)
2. A∗ ≡ λxyz. x (y z)
3. Aexp ≡ λxy. y x
΄Εχουμε λοιπόν:
(1) Για το A+ :
A+ cn cm =β λp. λq. cn p (cm p q)
=β λp. λq. (λx. pn (x)) pm (q)
=β λp. λq. pn (pm (q))
=β λp. λq. pn+m (q)
≡ cn+m
(2) Για το A∗ :

A∗ cn cm =β λz. cn (λw. z m (w))


=β λz. (λf. λx. (f (f (· · · (f x) · · · )))) (λw. z m (w))
| {z }
n φορές
=β λz. λx. ((λw. z (w)) ((λw. z m (w)) (· · · ((λw. z m (w)) x) · · · )))
m
| {z }
n φορές
=β λz. λx. ((λw. z m (w)) ((λw. z m (w)) (· · · ((λw. z m (w)) z m (x)) · · · )))
| {z }
n−1 φορές
=β λz. λx. ((λw. z m (w)) ((λw. z m (w)) (· · · ((λw. z m (w)) z m+m (x)) · · · )))
| {z }
n−2 φορές
n φορές
z }| {
=β λz. λx. z m + · · · + m (x)
=β λz. λx. z nm (x)
≡ cnm
(3) Για το Aexp , με m ≥ 1:
24
Aexp cn cm =β cm cn
≡ (λz. λf. z m (f )) (λz. λw. z n (w))
=β λf. (λz. λw. z n (w)) · · · (λz. λw. z n (w)) f
| {z }
m φορές
=β λf. (λz. λw. z (w)) · · · (λz. λw. z n (w)) λw. f n (w)
n
| {z }
m−1 φορές
=β λf. (λz. λw. z n (w)) · · · (λz. λw. z n (w)) λw. f nn (w)
| {z }
m−2 φορές
m φορές
z }| {
=β λf. λw. f n · · · n (w)
≡ c(nm )


Σχόλιο. Η ισότητα =β δηλώνει μάλλον την ισότητα των συναρτήσεων ως προς


την ένταση. Βέβαια, αν M =β N , τότε οι M και N δηλώνουν ως προς την έκταση την
ίδια συνάρτηση, γιατί τότε M Z =β N Z, για κάθε Z. Θεωρείστε τώρα τους όρους
As ≡ λx. λs. λz. s (x s z) και A0s ≡ λx. λs. λz. x s (s z). Ισχύει ότι
As cn =β cn+1
A0s cn =β cn+1
Δηλαδή και οι δύο όροι αναπαριστούν στον λ-λογισμό τη συνάρτηση S του επό-
μενου (S(n) = n + 1). Αλλά
As 6=β A0s
Στη συνέχεια, θα δούμε ότι μπορούμε να αναπτύξουμε στον λ-λογισμό όλες τις
προγραμματιστικές τεχνικές, δηλαδή να ορίσουμε τις αληθοτιμές Boole, το if . . .then. . .else,
τα ζεύγη κ.λπ.

Ορισμός. true ≡ λx. λy. x


false ≡ λx. λy. y

Ορισμός. Ορίζουμε (B, P, Q όροι)


if B then P else Q ≡ BP 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 : Nm → N
(ii) Μία αριθμητική συνάρτηση f : Nm → N (m μεταβλητών) είναι λ-ορίσιμη ή
λ-αναπαραστάσιμη εάν υπάρχει όρος F ∈ Λ έτσι ώστε
F cn1 cn2 · · · cnm =β cf (n1 ,n2 ,...nm )
για όλα τα n1 , n2 , . . . nm ∈ N.Λέμε τότε ότι ο F ορίζει ή αναπαριστά
(στο λ-λογισμό) την συνάρτηση f

Σχόλιο. Εάν F cn1 cn2 · · · cnm =β cf (n1 ,n2 ,...nm ) και επειδή cf (n1 ,n2 ,...nm ) είναι
σε κανονική μορφή, από το θεώρημα Church–Rosser θα έχουμε ότι F cn1 cn2 · · · cnm β cf (n1 ,n2 ,...nm )

Στη συνέχεια θα ορίσουμε την κλάση των αναδρομικών συναρτήσεων.

Ορισμός. Η κλάση των αναδρομικών συναρτήσεων είναι η μικρότερη κλάση των


αριθμητικών συναρτήσεων που περιλαμβάνει τις αρχικές συναρτήσεις:
(i) προβολές: Uim (n1 , . . . nm ) = ni , για όλα τα i με 1 ≤ i ≤ m
(ii) επόμενος: S(n) = n + 1
(iii) μηδενική: Z(n) = 0
και είναι κλειστή για τη σύνθεση, την πρωτογενή αναδρομή και την ελαχιστοποίηση:
(i) σύνθεση: αν g : Nk → N και h1 , . . . hk : Nm → N είναι αναδρομικές, τότε
είναι αναδρομική και η f : Nm → N που ορίζεται από το ακόλουθο σχήμα
f (n1 , . . . nm ) = g(h1 (n1 , . . . nm ), . . . hk (n1 , . . . nm ))
(ii) πρωτογενής αναδρομή: αν g : Nm → N και h : Nm+2 → N είναι αναδρομικές,
τότε και η f : Nm+1 → N που ορίζεται από το ακόλουθο σχήμα είναι
αναδρομική
26
f (0, n1 , . . . nm ) = g(n1 , . . . nm )
f (n + 1, n1 , . . . nm ) = h(f (n, n1 , . . . nm ), n, n1 , . . . nm )
m+1
(iii) ελαχιστοποίηση: αν g : N → N είναι αναδρομική και αν για όλα τα
n1 , . . . nm υπάρχει n ώστε g(n, n1 , . . . nm ) = 0, τότε και η f : Nm → N που
ορίζεται από το παρακάτω σχήμα είναι αναδρομική
f (n1 , . . . nm ) = µn.g(n, n1 , . . . nm ) = 0
όπου µn.g(n, n1 , . . . nm ) = 0 δηλώνει τον μικρότερο αριθμό n για τον
οποίο ισχύει η g(n, n1 , . . . nm ) = 0. Σημειώνεται ότι έχουμε προϋποθέσει
την ύπαρξη ενός τέτοιου n για κάθε n1 , . . . nm , άρα και την ύπαρξη ενός
τέτοιου ελάχιστου.

Σχόλιο. Η μικρότερη κλάση αριθμητικών συναρτήσεων που περιλαμβάνει τις αρ-


χικές συναρτήσεις και είναι κλειστή για τη σύνθεση και την πρωτογενή αναδρομή είναι
η κλάση των πρωτογενών αναδρομικών συναρτήσεων. Ενώ αυτή που περιλαμβάνει
τις αρχικές συναρτήσεις και είναι κλειστή για τη σύνθεση και την ελαχιστοποίηση
(χωρίς το σχήμα της πρωτογενούς αναδρομής) αποδεικνύεται ότι είναι ίση με την
κλάση των αναδρομικών συναρτήσεων που ορίστηκε πιο πάνω, δηλαδή το σχήμα
της αναδρομής μπορεί να οριστεί με βάση το σχήμα της ελαχιστοποίησης. Η κλάση
των πρωτογενών αναδρομικών συναρτήσεων είναι γνήσια υποκλάση των αναδρομικών
συναρτήσεων, π.χ. η συνάρτηση Ackermann7 είναι αναδρομική χωρίς να είναι πρω-
τογενής αναδρομική. Η κλάση των αναδρομικών συναρτήσεων γενικά πιστεύεται ότι
συμπίπτει με την κλάση των υπολογίσιμων συναρτήσεων, δηλαδή των συναρτήσεων
που μπορούν να υπολογιστούν με βάση ένα αλγόριθμο ή αλλιώς με τη χρήση οδηγιών
μηχανικού υπολογισμού (Αίτημα του Church).
Στη συνέχεια, θα δούμε ότι όλες οι αναδρομικές συναρτήσεις είναι λ-ορίσιμες.
Λήμμα. Οι αρχικές συναρτήσεις είναι λ-ορίσιμες.
Προοφ. ΄Εστω g : Nk → N είναι λ-ορίσιμη από τον όρο G ∈ Λ και h1 , . . . hk :
Nm → N είναι λ-ορίσιμες από τους H1 , . . . Hk ∈ Λ, αντίστοιχα. Τότε η

f (n1 , . . . nm ) = g(h1 (n1 , . . . nm ), . . . hk (n1 , . . . nm ))

είναι λ-ορίσιμη από τον

F ≡ λx1 . . . λxm . G (H1 x1 · · · xm ) · · · (Hk x1 · · · xm )

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 : Nm → N είναι λ-ορίσιμη


από τον G ∈ Λ και h : Nm+2 → N είναι λ-ορίσιμη από τον H ∈ Λ. Τότε πρέπει να
βρούμε F ∈ Λ που να ορίζει στο λ-λογισμό τη συνάρτηση

f (0, n1 , . . . nm ) = g(n1 , . . . nm )
f (n + 1, n1 , . . . nm ) = h(f (n, n1 , . . . nm ), n, n1 , . . . nm )
Η ιδέα είναι να παραστήσουμε με διατεταγμένα ζεύγη τα ζεύγη [n, f (n)], όπου
f (n) η τιμή της συνάρτησης στο όρισμα n. Για να το πετύχουμε αυτό θα πρέπει να
αρχίσουμε από το ζεύγος [0, g(n1 , . . . nm )] και να επαναλάβουμε n φορές έναν τελεστή
next που θα έχει την ιδιότητα

next ([n, x]) = [n + 1, h(x, n, n1 , . . . nm )]

Ο λ-όρος που θα έχει αυτή την ιδιότητα μπορεί να είναι ο

next ≡ λp. [S(p π1 ), H (p π2 )(p π1 )x1 · · · xm ]

Η επανάληψη κατά n φορές του next μπορεί να επιτευχθεί χρησιμοποιώντας το


νούμερο cn , διότι cn next N =β (next)n (N ). Οπότε αν ξεκινήσουμε με N ≡
[c0 , G x1 · · · xm ] (που παριστάνει το [0, g(n1 , . . . nm )]) τότε το cn next N θα είναι
η επανάληψη του [0, g(n1 , . . . nm )] κατά n φορές, άρα το ζεύγος [n, f (n)]. Και σάυτό
το ζεύγος μπορούμε να εξαγάγουμε τη δεύτερη συνιστώσα χρησιμοποιώντας το π2 .
Οπότε τελικά ο όρος F θα είναι

F ≡ λx. λx1 . . . . λxm . x next [c0 , G x1 · · · xm ] π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). Τότε

YF ≡ (λ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 ] =β (λf. M ) F

Οπότε αρκεί να επιλέξουμε τον F ως το σταθερό σημείο του λf. M , δηλαδή

F ≡ Y (λf. M )

Σχόλιο. Το ως άνω πόρισμα μπορεί να διατυπωθεί ως εξής:


Η εξίσωση x =β M μπορεί να λυθεί ως προς x, ή γενικότερα η εξίσωση x y1 · · · yn =β
M μπορεί να λυθεί ως προς x, δηλαδή υπάρχει F ώστε
∀Y1 , . . . Yn , F Y1 · · · Yn =β M [x := F ][y1 := Y1 ] · · · [yn := Yn ]
Αρκεί να ορίσουμε F ≡ Y (λx y1 . . . yn . M ).
Ως μία εφαρμογή, μπορούμε να κατασκευάσουμε όρους F και G ώστε για κάθε
X, Y ∈ Λ να ισχύουν
29
FX =β XF
GX Y =β Y G (Y X G)

Λήμμα. Οι λ-ορίσιμες συναρτήσεις είναι κλειστές για την ελαχιστοποίηση.

Προοφ. ΄Εστω g : Nm+1 → N λ-ορίσιμη από τον G ∈ Λ και έστω ότι για όλα τα
n1 , . . . nm υπάρχει n ώστε g(n, n1 , . . . nm ) = 0. Θέλουμε να ορίσουμε στον λ-λογισμό
την

f (n1 , . . . nm ) = µm. g(m, n1 , . . . nm ) = 0

Ορίζουμε μία συνάρτηση zero που ελέγχει αν ένα αριθμητικό όρισμα είναι 0 ή όχι

zero ≡ λn. n (true false) true

Τότε

zero c0 =β true
zero cn+1 =β false

Η ιδέα είναι η εξής: Θα ξεκινήσουμε από το g(0, n1 , . . . nm ) και θα ελέγχουμε


το κάθε g(n, n1 , . . . nm ). Αν αυτό είναι 0, τότε θα επιστρέφουμε το n (δηλαδή το
πρώτο n που θα ικανοποιεί την g(n, n1 , . . . nm ) = 0). Αν όχι θα ελέγχουμε το
g(n + 1, n1 , . . . nm ). Η διαδικασία αυτή του διαδοχικού ελέγχου επιτυγχάνεται μέσω
μίας συνάρτησης H, η οποία θα ικανοποιεί το ακόλουθο σχήμα

H y x1 · · · xm =β if (zero (G y x1 · · · xm )) then y else H (S y) x1 · · · xm

Από το θεώρημα του σταθερού σημείου υπάρχει όρος H που ικανοποιεί την ως
άνω εξίσωση. Ορίζουμε F ≡ λx1 · · · xn . H c x1 · · · xn , οπότε

F cn1 · · · cnm =β ( c0 cn1 · · · cnm


H
c0 , αν G c0 cn1 · · · cnm =β c0

( H c1 cn1 · · · cnm , διαφορετικά
c1 , αν G c1 cn1 · · · cnm =β c0

H c2 cn1 · · · cnm , διαφορετικά
κ.ο.κ
[κάποτε θα σταματήσει στο ελάχιστο]

Θεώρημα. ΄Ολες οι αναδρομικές συναρτήσεις είναι λ-ορίσιμες.

Προοφ. Από τα προηγούμενα λήμματα. 


30
Σχόλιο. Το αντίστροφο επίσης ισχύει. Δηλαδή κάθε λ-ορίσιμη αριθμητική συνάρτηση
είναι αναδρομική. Το αποτέλεσμα μπορεί να επεκταθεί και στις μερικές συναρτή-
σεις. ΄Ετσι, λοιπόν, έχουμε μία πλήρη ταύτιση μεταξύ των (μερικών) αναδρομικών
συναρτήσεων και των λ-ορίσιμων συναρτήσεων. Και οι δύο αυτοί φορμαλισμοί σκοπεύουν
να ορίσουν με ακριβή τρόπο την έννοια της υπολογίσιμης συνάρτησης. Μία άλλη
προσέγγιση, είναι ο φορμαλισμός του Turing και οι Turing-υπολογίσιμες συναρτή-
σεις. Η ισοδυναμία όλων αυτών των προσεγγίσεων ενισχύει την πεποίθηση ότι οι
αναδρομικές συναρτήσεις ταυτίζονται με τις (είναι ο σωστός τρόπος να οριστούν οι)
υπολογίσιμες συναρτήσεις.

Στη συνέχεια, θα δώσουμε κάποια αποτελέσματα αναποκρισιμότητας. ΄Εστω η


συνάρτηση h· , ·i : N2 → N, μία 1 − 1 και επί αναδρομική απεικόνιση. Δηλαδή κάθε
ζεύγος (n, m) φυσικών αριθμών παίρνει ένα μοναδικό κωδικό αριθμό hn , mi.

Παράδειγμα. Ορίστε μία τέτοια συνάρτηση.


Υπόδειξη: Για κάθε n διατάξτε τα ζεύγη (x, y) ώστε x + y = n. Δηλαδή
(0, 0) , (0, 1), (1, 0), (0, 2), (1, 1), (2, 0), κ.ο.κ.
| {z } | {z } | {z }
x+y=0 x+y=1 x+y=2
και ορίστε τη συνάρτηση διάταξης.

Θα δώσουμε τώρα σε κάθε όρο L ∈ Λ ένα μοναδικό κωδικό #(L). Με επαγωγή


στους όρους:
n φορές n φορές
z }| { z }| {
00 0 00 0
#(u · · · ) = h0 , ni, όπου u · · · είναι η n− οστή μεταβλητή
#(M N ) = h2 , h#(M ) , #(N )ii
#(λx. M ) = h3 , h#(x) , #(M )ii
Συμβολίζουμε με pMq το c#(M ) δηλαδή το pMq είναι ο όρος (νούμερο Church) που
αναπαριστά στο λ-λογισμό τον κωδικό του M .

Ορισμός. ΄Εστω A ⊆ Λ.
(1) A είναι κλειστό για το =β αν
M ∈ A, M =β N ⇒ N ∈ A
(2) A είναι μη-τετριμμένο αν A =
6 ∅ και A =
6 Λ
(3) A είναι αναδρομικό αν το σύνολο #A = {#M |M ∈ A} είναι αναδρομικό 8

Θεώρημα. ΄Εστω A ⊆ Λ μη-τετριμμένο και κλειστό για την ισότητα =β . Τότε


το A δεν είναι αναδρομικό.
8΄Ενα υποσύνολο των φυσικών αριθμών A είναι αναδρομικό εάν η χαρακτηριστική του συνάρτηση f ,
A
που ορίζεται ως fA = 0 αν x ∈ A και fA = 1 αν x ∈
/ A, είναι αναδρομική. Σύμφωνα με το αίτημα του
Church ένα σύνολο είναι αναδρομικό στην περίπτωση που μπορούμε να αποφασίσουμε αλγοριθμικά
αν ένας αριθμός ανήκει στο σύνολο ή όχι.}

31
Προοφ. Ορίζουμε B = {M |M pMq ∈ A}. Εάν A είναι αναδρομικό τότε και B
είναι αναδρομικό (γιατί·). Οπότε είναι αναπαραστάσιμο στο λ-λογισμό δηλαδή υπάρχει
F ∈ Λ ώστε

M ∈B ⇔ F pMq =β c0
M 6∈ B ⇔ F pMq =β c1

΄Εστω M0 ∈ A και M1 6∈ A. Μπορούμε να ορίσουμε G ∈ Λ ώστε

M ∈B ⇔ G pMq =β M1 6∈ A
M 6∈ B ⇔ G pMq =β M0 ∈ A
[π.χ. παίρνουμε G x ≡ if zero (F x) then M1 else M0 ]
G∈B ⇔ GpGq =β M1 ⇒ GpGq 6∈ A ⇒ G 6∈ B
p q p q
G 6∈ B ⇔ G G =β M0 ⇒ GG ∈ A ⇒ G∈B

Πόρισμα. [Church]
Το σύνολο {M ∈ Λ|M =β true} δεν είναι αναδρομικό.

Πόρισμα. Το σύνολο {M ∈ Λ|M έχει β-κανονική μορφή} δεν είναι αναδρομικό.

32
*ΑΣΚΗΣΕΙΣ

(1)΄Εχουν οι ακόλουθοι όροι κανονική μορφή·


(1) I = λx.x
(2) Ω ≡ ω ω, όπου ω ≡ λx.xx
(3) KIΩ, K ≡ λxλy.x
(4) (λx.KI(xx)) λy.KI(yy)
(5) (λx.z(xx)) λy.z(yy)

(2) Μονοπάτι αναγωγής από τον όρο M είναι κάθε πεπερασμένη ή άπειρη ακολου-
θία της μορφής

M →β M1 →β M2 →β · · ·

Ο όρος M λέγεται κανονικοποιήσιμος αν υπάρχει ένα μονοπάτι αναγωγής από τον


M που οδηγεί σε μία κανονική μορφή (του M ). Λέγεται ισχυρά κανονικοποιήσιμος
αν κάθε μονοπάτι αναγωγής απο τον M τερματίζει σε μια κανονική μορφή. Από τους
πέντε όρους της προηγούμενης άσκησης ποιοί είναι κανονικοποιήσιμοι και ποιοί ισχυρά
κανονικοποιήσιμοι;

(3)Ποιά από τα ακόλουθα είαι αληθή·


(1) (λxλyλz.(xz)(yz)) λu.u =β ((λv.v)λyλzλu.u) λx.x
(2) (λxλy.x(λz.z)) λa.a =β (λy.y) λbλz.z
(3) λx.Ω =β Ω

(4) Ο όρος λx1 x2 · · · xn .M συμβολίζει τον λx1 λx2 · · · λxn .M .


΄Εστω ο όρος

? ≡ λαβγδεζηθικλµνξoπρστ υϕχψως.ς (στ αθερoυσηµειoυσυνδυαστ ης)

και έστω
$ =?????????????????????????
Αποδείξτε ότι ο $ είναι συνδυαστής σταθερού σημείου δηλ. ότι

$F =β F ($F )

για κάθε F ∈ Λ.

(5) Χρησιμοποιείστε την ίδια τεχνική με την απόδειξη ότι το σχήμα της πρω-
τογενούς αναδρομής είναι αναπαραστάσιμο στο λ−λογισμό για να ορίσετε λ−όρο P
33
(predecessor) ώστε
P cn+1 =β cn

(6) Ορίστε λ−όρο eq? τέτοιο ώστε για όλα τα n, m ∈ N



true αν m = n
eq? cn cm =β
false διαφορετικα

34
ΘΕΩΡΙΑ ΤΥΠΩΝ

τον καθαρό λ-λογισμό θεωρήσαμε ότι μία συνάρτηση δεν έχει προκαθορισμένο
πεδίο ορισμού και πεδίο τιμών. Δεν υπάρχουν απαιτήσεις προκαθορισμένου προσ-
διορισμού ότι π.χ. μία συνάρτηση (όπως η n 7→ n3 ) δέχεται ως ορίσματα φυσικούς
αριθμούς και επιστρέφει φυσικούς αριθμούς. Η επιβολή τέτοιου είδους απαιτήσεων
γίνεται μέσω των τύπων. Ο κάθε όρος (πρόγραμμα) συνοδεύεται από ένα τύπο, ο
οποίος μπορεί να θεωρηθεί ως ένας προσδιορισμός ή σχόλιο (specification) για το τι
κάνει ένα πρόγραμμα. Ο Curry και ο Church εισήγαγαν τέτοιες εκδοχές λ-λογισμού
με τύπους.

λ− ΛΟΓΙΣΜΟΣ ΜΕ ΑΠΛΟΥΣ ΤΥΠΟΥΣÀ LA CURRY

Το πρώτο σύστημα που εισάγουμε είναι το σύστημα του Curry.


[Τύποι]
΄Εστω U ένα αριθμήσιμο πλήθος συμβόλων που θα ονομάζονται ατομικοί τύποι ή
και μεταβλητές τύπων. Το σύνολο των τύπων T ορίζεται επαγωγικά ως εξής:
(1) Κάθε στοιχείο του U είναι τύπος.
(2) Αν σ και τ τύποι τότε η έκφραση (σ → τ ) είναι τύπος.
΄Η χρησιμοποιώντας εναλλακτικό ορισμό

T U | (T → T )

Θα χρησιμοποιήσουμε τα α, β, γ . . . για ατομικούς τύπους και τα σ, τ, ρ . . . γενικά


για τύπους. Θα παραλείπουμε τις εξωτερικές παρενθέσεις στη γραφή των τύπων.
Περιβάλλον ή Βάση θα είναι κάθε σύνολο της μορφής

{x1 : t1 , . . . , xn : tn }
όπου x1 , . . . xn ∈ Λ δηλαδή είναι μεταβλητές-όροι του λ-λογισμού και t1 , . . . , tn
τύποι.
Θα πρέπει xi 6= xj για i 6= j, δηλαδή δεν μπορεί να έχουμε αντιστοιχήσει στην
ίδια μεταβλητή δύο διαφορετικούς τύπους. Εάν Γ = {x1 : t1 , . . . , xn : tn }, τότε
dom(F) = {x1 , . . . , xn }. Το dom(F) είναι το πεδίο του Γ. Κάθε περιβάλλον Γ
μπορεί να θεωρηθεί ως μία απονομή ενός τύπου σε κάθε μεταβλητή του πεδίου του
35
(αν x : τ ∈ Γ τότε ο τύπος t απονέμεται στη μεταβλητή x). Συνήθως γράφουμε
x1 : t1 , . . . xn : tn αντί του {x1 : t1 , . . . xn : tn } και Γ, x : τ αντί του Γ ∪ {x : τ }. Στην
τελευταία περίπτωση, προϋπόθεση για να γράψουμε αυτό είναι ότι x : τ 6∈ Γ, δηλαδή
η μεταβλητή x δεν έχει απονομή στο Γ.
Κανόνες Τυποποίησης: Ορίζουμε τη σχέση Γ ` M : σ, όπου Γ περιβάλλον, M
λ-όρος και σ τύπος, ορίζοντας επαγωγικά τα αξιώματα και τους κανόνες απαγωγής.

Αξίωμα: Γ, x : τ ` x : τ

Γ,x:σ`M :τ Γ`M :σ→τ Γ`N :σ


Κανόνες: Γ`λx. M :σ→τ Γ`M N :τ

Σχόλιο. 1. Το Γ ` M : σ θα ισχύει αν έχει προκύψει από τα αξιώματα με


διαδοχικές εφαρμογές των κανόνων απαγωγής.
2. Στον πρώτο κανόνα η μεταβλητή x μπορεί να θεωρηθεί ως ιδιομεταβλητή. Αν
υποθέσουμε ότι έχουμε αποδείξει το Γ ` λx. M : σ → τ θα θεωρούμε ότι η x δεν
εμφανίζεται στο Γ (αλλιώς παίρνουμε ένα α-ισοδύναμο του λx. M ) ώστε να μπορούμε
να σχηματίζουμε το Γ, x : σ ` M : τ (π.χ. ως επαγωγική υπόθεση) το οποίο απαιτεί
x : σ 6∈ Γ. ΄Οταν γράφουμε ` M : σ εννοούμε ότι ο όρος M τυποποιείται με κενό
περιβάλλον (Γ = ∅).
3. Το σύστημα τυποποίησης που περιγράφτηκε είναι ο λ-λογισμός με απλούς
τύπους a la Curry. Μέσω του μηχανισμού αυτού τυποποίησης αποδίδεται ένας τύπος
σ σε έναν (αλλά όχι και σε κάθε) λ-όρο M .

x:σ`x:σ
` λx. x : σ → σ διότι υπάρχει η απαγωγή
` λx. x : σ → σ
x : σ, y : τ ` x : σ
` λx y. x : σ → (τ → σ) διότι x : σ ` λy. x : τ → σ
` λx y. x : σ → (τ → σ)
΄Εστω M λ-όρος. Εάν υπάρχουν Γ και σ ώστε Γ ` M : σ τότε ο M λέγεται
τυποποιήσιμος.

Σχόλιο. ΄Ενας όρος ο οποίος μπορεί να τυποποιηθεί με τύπο σ → τ μπορεί να


νοηθεί ότι αναπαριστά μία (κατασκευαστική) συνάρτηση, η οποία δέχεται ορίσματα
(όρους) τύπου σ και επιστρέφει τιμές τύπου τ . Αυτό αντανακλάται στους κανόνες
απαγωγής όπου όταν απονέμεται ο τύπος σ → τ δημιουργείται μία αφαίρεση λx. M
(το x «έχει» τύπο σ και το M τύπο τ ) και όταν απονέμεται ο τύπος τ στην εφαρμογή
M N προϋποτίθεται ότι η «συνάρτηση» M που «έχει» τύπο σ → τ εφαρμόζεται στην
N που «έχει» τύπο σ.
36
΄Εστω Γ ` M : σ. Τότε:
(1) Γ ⊆ Γ0 ⇒ Γ0 ` M : σ
(2) FV (M ) ⊆ dom(Γ)
(3) Αν Γ0 ⊆ Γ και dom(Γ0 ) = FV (M ) τότε Γ0 ` M : σ. (Δηλαδή σε μία
τυποποίηση ενός όρου μπορούμε να αρκεστούμε σε απονομές τύπων μόνο
για τις ελεύθερες μεταβλητές αυτού του όρου).

Προοφ. Με επαγωγή στην τυποποίηση του Γ ` M : σ (αφήνεται ως άσκηση).


Π.χ. έστω ότι θέλουμε να αποδείξουμε το 1, στην περίπτωση που Γ ` λx. M : σ →
τ . Τότε μπορούμε να θεωρήσουμε ότι το x δεν εμφανίζεται στο dom(Γ0 ). Επειδή
Γ, x : σ ` M : τ από Ε.Υ. (Επαγωγική Υπόθεση) έχουμε Γ0 , x : σ ` M : τ (διότι
Γ, x : σ ⊆ Γ0 , x : σ). Οπότε Γ0 ` λx. M : σ → τ . 

Οι τύποι που αποδίδονται σε κάποιο όρο εξαρτώνται από τη μορφή του όρου,
σύμφωνα με το παρακάτω λήμμα.
[Λήμμα Δημιουργίας]
Ισχύουν τα παρακάτω:
(1) Γ ` x : σ ⇒ x : σ ∈ Γ
(2) Γ ` M N : σ ⇒ Υπάρχει τύπος τ ώστε Γ ` M : τ → σ και Γ ` N : τ .
(3) Γ ` λx. M : σ ⇒ Υπάρχουν τύποι τ και ρ ώστε Γ, x : τ ` M : ρ και
σ = τ → ρ.

Προοφ. Εύκολη επαγωγή στο μήκος της τυποποίησης του όρου. 

΄Ενας τύπος δημιουργείται με αφετηρία τις μεταβλητές τύπων (ατομικοί τύποι).


Αν σ τύπος τότε με σ[α := τ ] συμβολίζουμε τον τύπο που προκύπτει από το σ
αφού αντικαταστήσουμε κάθε εμφάνιση του α στον σ με τον τύπο τ . Αν Γ = {x1 :
σ1 , . . . , xn : σn } τότε Γ[α := τ ] = {x1 : σ1 [α := τ ], . . . , xn : σn [α := τ ]}.
[Λήμμα της αντικατάστασης]
Ισχύουν τα παρακάτω:
(1) Αν Γ ` M : σ, τότε Γ[α := τ ] ` M : σ[α := τ ].
(2) Αν Γ, x : τ ` M : σ και Γ ` N : τ , τότε Γ ` M [x := N ] : σ.

Προοφ. {Απόδειξη του 2:} Με επαγωγή στο Γ, x : τ ` M : σ. Αν είναι


αξίωμα, τότε M ≡ x και τ = σ ή M ≡ y ∈ dom(Γ) (y 6= x). Στην πρώτη
περίπτωση, M [x := N ] ≡ N οπότε Γ ` N : σ (= τ ) εξ υποθέσεως, ενώ στη δεύτερη
M [x := N ] ≡ y άρα, επειδή Γ, x : τ ` y : σ, θα πρέπει και Γ ` y : σ.

Αν έχει προκύψει από κανόνα απαγωγής.

Περίπτωση:
37
Γ, x : τ, y : σ1 ` P : σ2
Γ, x : τ ` λy. P : σ1 → σ2

όπου M ≡ λy. P και σ = σ1 → σ2 και y καινούργια μεταβλητή.


Από Ε.Υ. Γ, y : σ1 ` P [x := N ] : σ2 έπεται επειδή Γ, y : σ1 ` N : τ ), άρα
Γ ` λy. P [x := N ] : σ1 → σ2 οπότε το ζητούμενο επειδή (λy. P )[x := N ] ≡
λy. P [x := N ]. Η άλλη περίπτωση παρομοίως. 

Το λήμμα της αντικατάστασης έχει ως σημαντικό αποτέλεσμα την ακόλουθη πρό-


ταση.
[Subject reduction]
Εάν Γ ` M : σ και Mβ N τότε Γ ` N : σ.

Προοφ. Αρκεί να αποδείξουμε την πρόταση στην περίπτωση του M →β N .


Μπορούμε να εργαστούμε με επαγωγή στον τρόπο με τον οποίο δημιουργείται η σχέση
M →β N . Η αρχική περίπτωση είναι όταν M ≡ (λx. P )Q και N ≡ P [x := Q]. Από
Γ ` (λx. P ) Q : σ παίρνουμε ότι Γ ` (λx. P ) : ρ → σ και Γ ` Q : ρ, για κάποιο ρ
(Λήμμα δημιουργίας). Επίσης από λήμμα δημιουργίας Γ, x : ρ ` P : τ . Οπότε από το
λήμμα αντικατάστασης Γ ` P [x := Q] : σ.
Οι υπόλοιπες περιπτώσεις με παρόμοιο (και πιο εύκολο) τρόπο. 

Σχόλιο. Η ιδιότητα Γ ` N : σ ∧ Mβ N ⇒ Γ ` M : σ (Subject Expansion) δεν


ισχύει για το σύστημα τυποποίησης à la Curry .

[Church–Rosser για τους τυποποιήσιμους όρους]


΄Εστω Γ ` N : σ και έστω Mβ M 0 και Mβ M 00 . Τότε υπάρχει όρος L ώστε
Mβ0 L και Mβ00 L και Γ ` L : σ.

Προοφ. Από το θεώρημα Church–Rosser για το λ-λογισμό και την ιδιότητα Sub-
ject Expansion. 

*λ−ΛΟΓΙΣΜΟΣ ΜΕ ΑΠΛΟΥΣ ΤΥΠΟΥΣ À LA CHURCH


το σύστημα τυποποίησης του Curry υπάρχει ήδη ο όρος του λ-λογισμού και «εκ
των υστέρων» τυποποιείται. Γι΄ αυτό και είναι γνωστό ως σύστημα απονομής τύπων.
Στο σύστημα του Church ο όρος δημιουργείται ταυτόχρονα με την τυποποίησή του.
Σε κάθε στάδιο της κατασκευής του «φέρει» τον τύπο του και μόνον όροι με τους
σωστούς τύπους μπορούν να συνθέσουν ένα καινούριο όρο.
[Τύπος]
Οι τύποι είναι ίδιοι με το σύστημα του Curry.
Θα παρουσιάσουμε δύο τρόπους δημιουργίας λ-όρων με τύπους. Ο πρώτος είναι ο
αρχικός τρόπος σχηματισμού που χρησιμοποίησε ο Church (αρχικό σύστημα Church)
38
και ο δεύτερος μία προσαρμογή του πρώτου στον τρόπο τυποποίησης à la Curry. (Θα
αναφέρεται απλά ως σύστημα à la Church).

*Αρχικό σύστημα Church


εταβλητές όρων: Για κάθε τύπο σ υπάρχει ένα αριθμήσιμο πλήθος μεταβλητών
τύπου σ. Οι μεταβλητές τύπου σ θα γράφονται ως xσ (θα νοούνται δηλαδή ως ζεύγη
(x, σ), όπου x είναι ένα σύμβολο μεταβλητής. Υποθέτουμε ότι αν σ 6= τ τότε στις xσ
και y τ έχουμε x 6≡ y, δηλαδή χρησιμοποιούμε διαφορετικά σύμβολα μεταβλητών για
τους διαφορετικούς τύπους. Αν λοιπόν Vσ είναι το σύνολο των συμβόλων μεταβλητών
για κάθε τύπο σ [δηλαδή (i). x ∈ Vσ ⇒ xσ είναι μεταβλητή τύπου σ και (ii). σ 6= τ ⇒
Vσ ∩ Vτ = ∅], τότε V = ∪σ∈T Vσ είναι το σύνολο όλων των συμβόλων μεταβλητών.
[΄Οροι]
Το σύνολο των όρων ορίζεται αναδρομικά ως εξής:
(1) Κάθε μεταβλητή xσ είναι όρος τύπου σ.
(2) Αν M είναι όρος τύπου σ → τ και N όρος τύπου σ τότε (M N ) είναι όρος
τύπου τ .
(3) Αν M είναι όρος τύπου τ και xσ μεταβλητή τύπου σ τότε (λxσ . M ) είναι
όρος τύπου σ → τ .
Συμβολισμός: Αν M είναι ένας όρος τύπου σ θα γράφουμε πολλές φορές M ∈ σ ή
και M σ . Πολλές φορές θα παραλείπουμε τον τύπο στις μεταβλητές, δηλαδή μπορούμε
να γράψουμε λx. M . Θα παραλείπουμε τις εξωτερικές παρενθέσεις. Οι όροι του παρα-
πάνω ορισμού θα λέγονται και όροι Church.

Σχόλιο. ΄Οσον αφορά την α-ισοδυναμία θα ισχύουν τα ίδια με την περίπτωση του
λ-λογισμού. ΄Οταν αλλάζουμε το όνομα μιας δεσμευμένης μεταβλητής xσ αλλάζουμε
μόνο το σύμβολο x σε y και διατηρούμε τον ίδιο τύπο σ. Δηλαδή το λxσ . M μετα-
τρέπεται σε λy σ . M [xσ := y σ ], όπου y είναι σύμβολο μεταβλητής για τον τύπο σ
(y ∈ Vσ ). Η αντικατάσταση ορίζεται επίσης με τον ίδιο τρόπο αλλά με την προϋπό-
θεση ότι μία (ελεύθερη) μεταβλητή τύπου σ αντικαθίσταται μόνο από όρο τύπου σ.
Δηλαδή ορίζεται μόνο το M [xσ := N ] όπου N ∈ σ, ως εξής:
(1) xσ [xσ := N ] ≡ N
(2) y τ [xσ := N ] ≡ y τ , αν xσ 6≡ y τ
(3) (P Q)[xσ := N ] ≡ (P [xσ := N ]) (Q[xσ := N ])
(4) (λxσ . P )[xσ := N ] ≡ λxσ . P
(5) (λy τ . P )[xσ := N ] ≡ λy τ . P [xσ := N ], αν xσ 6≡ y τ
΄Ενα redex έχει τη μορφή (λxσ . M ) N , όπου βέβαια ο λxσ . M έχει τύπο σ →
τ (M ∈ τ ) και N ∈ σ (αναγκαστικά για να μπορέσει να σχηματιστεί ο όρος). Το
39
contractum θα είναι το M [xσ := N ]. Είναι προφανές ότι ο όρος που προκύπτει από
μία τέτοια αντικατάσταση έχει τον ίδιο τύπο με τον M .
΄Ενας όρος του αρχικού συστήματος Church είναι σαν ένας όρος του καθαρού
λ-λογισμού με τη διαφορά ότι σε όλες τις μεταβλητές, ελεύθερες και δεσμευμένες,
υπάρχει μία απονομή-αναγραφή τύπων. Αν «σβήσουμε» αυτές τις απονομές ο όρος
αυτός μετατρέπεται σε όρο του λ-λογισμού χωρίς τύπους.

΄Εστω M όρος του αρχικού συστήματος Church. Ορίζουμε αναδρομικά το |M |,


το σβήσιμο των τύπων του M , ως εξής:
(1) |xσ | = x
(2) |M N | = |M | |N |
(3) |λxσ . M | = λx. |M |

Σχόλιο. ΄Εστω V = ∪σ∈T Vσ . Μπορούμε να θεωρήσουμε ότι το σύνολο V εί-


ναι το σύνολο των μεταβλητών στο σχηματισμό των όρων του καθαρού λ-λογισμού.
Δηλαδή, ουσιαστικά, έχουμε διαμερίσει τις μεταβλητές του καθαρού λ-λογισμού σε ένα
αριθμήσιμο σύνολο (ένα για κάθε τύπο σ) από αριθμήσιμα σύνολα (τα σύμβολα μεταβλ-
ητών για τον τύπο σ). Με αυτήν την παραδοχή ο λ-λογισμός παραμένει ως έχει (ίδιοι
όροι). Επιπλέον, μπορούμε να τροποποιήσουμε ελαφρώς την έννοια της α-ισοδυναμίας
και να δεχόμαστε ότι οι α-ισοδύναμοι όροι παράγονται μόνο με αντικατάσταση των
δεσμευμένων μεταβλητών, που αντιστοιχούν σε σύμβολα μεταβλητών του ίδιου τύπου,
π.χ. λx. x είναι α-ισοδύναμος με το λy. y μόνο εάν x, y ∈ Vσ για κάποιο τύπο σ. Αυτή
η παραδοχή έχει την έννοια ότι, αν για κάποιο όρο M του λ-λογισμού χρειαστεί να
θεωρήσουμε έναν α-ισοδύναμό του M 0 , τότε ο M 0 δημιουργείται από τον M εφαρμό-
ζοντας την περιοριστική α-ισοδυναμία, δηλαδή αντικαθιστώντας δεσμευμένες μεταβλ-
ητές μόνο με σύμβολα μεταβλητών που αντιστοιχούν στον ίδιο τύπο. ΄Ολες οι ιδιότητες
του λ-λογισμού παραμένουν σε ισχύ με βάση αυτήν την παρατήρηση.
Το αποτέλεσμα της διαμέρισης V = ∪σ∈T Vσ είναι ότι ο όρος |M | «θυμάται» την
απονομή τύπων στις μεταβλητές του. Υπάρχει πάντα μία συνάρτηση T : V → T που
ορίζεται ως
T (x) = ο μοναδικός σ ώστε x ∈ Vσ

Αν M όρος, ορίζουμε τον τυποποιημένο C(M ) ως εξής:

C(x) = xT (x)
C(M N ) = C(M ) C(N )
C(λx. M ) = λxT (x) . C(M )

Ο C(M ) προκύπτει αν σε κάθε μεταβλητή x του M (ελεύθερη ή δεσμευμένη)


προσθέσουμε τον αντίστοιχο τύπο σ (αν x ∈ Vσ ). Για τυχόντα M ο C(M ) δεν
είναι όρος Church. Εύκολα βλέπουμε ότι, αν M και N είναι α-ισοδύναμοι με την
40
περιοριστική έννοια που αναφέρθηκε πιο πάνω, τότε C(M ) και C(N ) είναι α-ισοδύναμοι
ως όροι Church.
Αν M είναι όρος Church, τότε C(|M |) = M .

Προοφ. Επαγωγή στον M . 

Αν M και N και L είναι όροι Church, τότε


(1) |M [xσ := N ]| = |M |[x := |N |]
(2) M →β N συνεπάγεται |M | →β |N |
(3) αν |M | →β L τότε M →β C(L) και C(L) είναι όρος Church
(4) αν |M |β L τότε Mβ C(L)

Προοφ. (1). Επαγωγή στον M .

M ≡ xσ → |M [xσ := N ]| = |N | = x[x := |N |] = |M |[x := |N |]


M ≡ y τ (xσ 6≡ y τ ) → |M [xσ := N ]| = |y τ | = y = y[x := |N |]
σ
M ≡ λx . M1 → |M [xσ := N ]| = |λxσ . M1 | = |M | = λx. |M1 | = λx. |M1 |[x := |N |]
M ≡ λy τ . M1 → |M [xσ := N ]| = |λy τ . M1 [xσ := N ]| = λy. |M1 [xσ := N ]| =
λy. (|M1 |[x := |N |]) = λy. |M1 |[x := |N |] = |M |[x := |N |]

(3). Η κυριότερη περίπτωση είναι όταν |M | ≡ |(λxσ . P ) Q|.


Τότε |M | = (λx. |P |) |Q| →β |P |[x := |Q|] ≡ |P [xσ := Q]| άρα
|M | →β |P [xσ := Q]| οπότε M →β P [xσ := Q] = C(L), όπου
L ≡ |P |[x := |Q|]. 

Η ιδιότητα Church–Rosser ικανοποιείται από τους όρους Church.

Προοφ. Αν Mβ M1 και Mβ M2 , τότε |M |β |M1 | και |M |β |M2 |. Από το θεώρημα


Church–Rosser για το λ-λογισμό, υπάρχει λ-όρος L ώστε |M1 |β L και |M2 |β L και
κατά συνέπεια από παραπάνω πρόταση M1β C(L) και M2β C(L). 

Ισχύουν οι παρακάτω προτάσεις:


(1) Αν M είναι όρος Church τύπου σ και οι ελεύθερες μεταβλητές του |M |
είναι μεταξύ των x1 , . . . xk και αν Γ = {x1 : T (x1 ), . . . xk : T (xk )}, τότε
Γ ` |M | : σ.
(2) Αν M είναι λ-όρος και Γ ` M : σ (όπου υποθέτουμε ότι αν x : τ ∈ Γ τότε
T (x) = τ ) τότε C(M ) είναι όρος Church τύπου σ.
[Η πρόταση αυτή παρουσιάζει την σχέση μεταξύ των όρων Church και την τυποποίηση των
λ-όρων στο σύστημα Curry.

41
*Σύστημα Church
πορούμε να διαφοροποιήσουμε το αρχικό σύστημα Church και να το παρουσιά-
σουμε με τον τρόπο με τον οποίο τυποποιούνται οι λ-όροι στο σύστημα Curry. Θα
χρειαστούμε την έννοια του προόρου.
΄Εστω T το σύνολο των τύπων. Ορίζουμε ως προόρους τις εκφράσεις ΛT που
σχηματίζονται από τον ακόλουθο ορισμό:

ΛT V | (λx : T. ΛT ) | (ΛT ΛT )

Η σχέση τυποποίησης `∗ ορίζεται από:

Γ, x : σ `∗ x : σ

Γ, x : σ `∗ M : τ Γ `∗ M : σ → τ Γ `∗ N : σ
Γ `∗ λx : σ. M ; σ → τ Γ `∗ M N : τ

Η σχέση Γ `∗ M : σ τυποποιεί τον προόρο M με τύπο σ στο περιβάλλον Γ.


Η α-ισοδυναμία, η αντικατάσταση και η αναγωγή ορίζονται με προφανή τρόπο
στους προόρους.
Εάν M είναι προόρος, τότε μπορούμε να ρυθμίσουμε τα σύμβολα μεταβλητών
ώστε, αν λx : σ. . . . εμφανίζεται στο M , τότε T (x) = σ. Με αυτήν την προϋπόθεση
μπορούμε, εάν έχουμε επίσης φροντίσει για το ακόλουθο:

x : τ ∈ Γ → T (x) = τ

να μετατρέψουμε κάθε Γ `∗ M : σ σε έναν όρο Church M C ως εξής:


Κάθε εμφάνιση λx : σ στον M αντικαθίσταται με λxσ .
Κάθε άλλη εμφάνιση μεταβλητής x αντικαθίσταται από xT (x) .
Αν Γ `∗ M : σ (κάτω από τις προϋποθέσεις μεταβλητών που αναπτύχθηκαν πιο
πανω), τότε M C είναι όρος Church.
Το αντίστροφο ισχύει επίσης.
Αν M είναι όρος Church τύπου ρ και M π είναι ο προόρος που αποκτάται από
τον M αντικαθιστώντας κάθε εμφάνιση του λxσ στον M με λx : σ και κάθε άλλη
εμφάνιση μεταβλητής xτ στον M με x και αν xσ1 1 , . . . xσk k περιέχουν τις ελεύθερες
μεταβλητές του M , θα έχουμε ότι:

x1 : σ1 , . . . xk : σk `∗ M : ρ

Για την τυποποίηση `∗ ισχύουν τα παρακάτω:


Αν Γ `∗ M : σ, τότε:
(1) Γ ⊆ Γ0 ⇒ Γ0 `∗ M : σ
42
(2) FV (M ) ⊆ dom(Γ)
(3) Γ0 `∗ M : σ, όπου dom(Γ0 ) = FV (M ) και Γ0 ⊆ Γ

[Δημιουργίας]
Ισχύουν τα ακόλουθα:

(1) Γ `∗ x : σ ⇒ x : σ ∈ Γ
(2) Γ `∗ M N : σ ⇒ υπάρχει τ ώστε Γ `∗ M : τ → σ και Γ `∗ N : τ
(3) Γ `∗ λx : τ. M : σ ⇒ υπάρχει ρ ώστε σ = τ → ρ και Γ, x : τ `∗ M : ρ

[Αντικατάσταση]
Ισχύουν τα ακόλουθα:

(1) Γ `∗ M : σ ⇒ Γ[α := τ ] `∗ M : σ[α := τ ]


(2) Γ, x : τ `∗ M : σ και Γ `∗ N : τ ⇒ Γ `∗ M [x := N ] : σ

[Subject reduction]
Αν Γ `∗ M και M →β N τότε Γ `∗ N .
[Church–Rosser]
Αν Γ `∗ M : σ και Mβ M1 και Mβ M2 , τότε υπάρχει L ώστε M1β L και M2β L και

Γ ` L : σ.
[Μοναδικότητα τυποποίησης]
Ισχύουν τα ακόλουθα:

(1) Γ `∗ M : σ και Γ `∗ M : τ ⇒ σ = τ
(2) Γ `∗ M : σ και Γ `∗ N : τ και M ≡ βN ⇒ σ = τ

Προοφ. (1). Επειδή όταν Γ `∗ M : σ ο υπολογισμός του M C γίνεται μόνο με


βάση τα Γ και M , ο όρος M C θα είναι κοινός και για τις δύο περιπτώσεις άρα θα έχει
κοινό τύπο σ = τ .
(2). Από θεώρημα Church–Rosser. 

Η σχέση των τυποποίησεων `∗ και ` θα είναι ανάλογη με αυτή μεταξύ των όρων
Church M και των Γ ` M : σ.
΄Εστω M, N ∈ ΛT .

(1) Αν M →β N , τότε |M | →β |N |.
(2) Γ `∗ M : σ ⇒ Γ ` |M | : σ

[΄Υψωση]
Για όλα τα M, N ∈ Λ (λ-όροι):

(1) |M 0 | →β N ⇒ υπάρχει N 0 ∈ ΛT με |N 0 | = N ώστε M 0 →β N 0


(2) Αν Γ ` M : σ, τότε υπάρχει M 0 ∈ ΛT με |M 0 | = M ώστε Γ `∗ M 0 : σ.

43
ΕΠΕΚΤΑΣΕΙΣ ΤΟΥ λ−ΛΟΓΙΣΜΟΥ ΜΕ ΑΠΛΟΥΣ ΤΥΠΟΥΣ

ο σύστημα του λ-λογισμού με απλούς τύπους που μελετήσαμε, και το οποίο μας
έδωσε τη δυνατότητα να αναπτύξουμε τη γενική μορφή των συστημάτων με τύπους,
είναι αρκετά «φτωχό». Δεν μπορούμε λόγου χάριν να ορίσουμε το ζεύγος hP, Qi
όταν μας δίνονται δύο όροι P και Q. Μια λοιπόν προφανής επέκταση θα είναι να
προσθέσουμε στο μηχανισμό δημιουργίας των τύπων τη δυνατότητα δημιουργίας του
γινομένου τύπων σ × τ , όταν σ και τ είναι τύποι. Αυτό θα μας επιτρέψει να ορίσουμε
το ζεύγος hP, Qi. Αργότερα θα μελετήσουμε επεκτάσεις που θα μας επιτρέπουν να
αυξήσουμε αξιοσημείωτα την εκφραστική δυνατότητα του συστήματος.
Οι επεκτάσεις που θα μελετήσουμε θα είναι στο αρχικό σύστημα Church.

*Επέκταση του αρχικού συστήματος Church με γινόμενο τύπων


ύποι: Στον ορισμό των τύπων προσθέτουμε την ακόλουθη πρόταση.

• Αν σ και τ είναι τύποι τότε σ × τ είναι τύπος.

Σημείωση: Ο τύπος σ × τ είναι το (καρτεσιανό) γινόμενο των τύπων σ και τ .


Οροι: Στον ορισμό των όρων προσθέτουμε τα ακόλουθα.

• Αν M είναι όρος τύπου σ και N όρος τύπου τ τότε hM, N i είναι όρος τύπου
σ × τ . (Δημιουργία ζεύγους)
• Αν M είναι όρος τύπου σ × τ τότε π 1 M είναι όρος τύπου σ και π 2 M είναι
όρος τύπου τ .

Σημείωση: Ο όρος π 1 M είναι η «πρώτη προβολή» του M και ο π 2 M η «δεύτερη


προβολή».
44
*Υπολογιστική σημασία
ι καινούργιοι ορισμοί εισάγουν νέες μορφές από redex και contractum. Στα ήδη
υπάρχοντα προστίθενται τα εξής:

π 1 hM, N i →β M

π 2 hM, N i →β N
Οι δύο προαναφερθείσες σχέσεις που έχουν τη μορφή P →β Q σημαίνουν ότι P
είναι ένα redex και Q είναι το contractum του.
Με προφανή τρόπο, ακριβώς όπως στην περίπτωση των απλών τύπων (και του
καθαρού λ-λογισμού) μπορούμε να επεκτείνουμε τη σχέση →β σε β καθώς και να
ορίσουμε τη σχέση =β . Παραμένουν οι ιδιότητες Church-Rosser καθώς και η ιδιότητα
της ισχυρής κανονικοποίησης.

*ΤΟ ΣΥΣΤΗΜΑ T ΤΟΥ GÖDEL


το κεφάλαιο αυτό θα ορίσουμε μια επέκταση του συστήματος με τύπους που θα
διευρύνει εντυπωσιακά την εκφραστική του δυνατότητα, δηλαδή την δυνατότητα ανα-
παράστασης συναρτήσεων.
[Τύποι]
Διατηρούμε τους ίδιους τύπους με το αρχικό σύστημα Church με απλούς τύπους
και γινόμενο τύπων εκτός του ότι προσθέτουμε δύο ατομικούς τύπους τον Nat και
τον Bool ως σταθερές.
[΄Οροι]
Εκτός από τους συνήθεις όρους του αρχικού συστήματος Church με απλούς
τύπους και γινόμενο τύπων έχουμε τα ακόλουθα
(1) • O είναι όρος (σταθερά) τύπου Nat.
• Αν t είναι όρος τύπου Nat τότε St είναι όρος τύπου Nat.
(2) Αν u, v, t είναι όροι με τύπους αντίστοιχα σ, σ → (Nat → σ) και Nat τότε
R u v t είναι όρος τύπου σ.
(3) T και F είναι (σταθεροί) όροι τύπου Bool.
(4) Αν u, v, t είναι όροι με τύπους αντίστοιχα σ, σ και Bool τότε D u v t είναι
όρος τύπου σ.
Η διαισθητική σημασία που αποδίδεται σ΄ αυτά που έχουμε εισαγάγει είναι η εξής:
(1) Τα O και S είναι αντίστοιχα το μηδέν και η συνάρτηση του επόμενου.
(2) R είναι ο τελεστής αναδρομής: R u v O = u, R u v (n + 1) = v(R u v n)n.
(3) Τα T και F είναι οι τιμές αληθείας.
45
(4) Το D είναι ο τελεστής «if. . . then. . . else» δηλαδή ο ορισμός με περιπτώσεις:
D u v T = u και D u v F = v .
[Αναγωγή]
Στα redex που έχουμε ήδη στη διάθεσή μας προσθέτουμε τα ακόλουθα:
R u v O →β u
R u v (St) →β v(R u v t)t
D u v T →β u
D u v F →β v
Δηλαδή αυτά που είναι αριστερά είναι τα redex και αυτά που είναι δεξιά είναι τα
contractum τους. Με βάση αυτά μπορούμε να ορίσουμε όπως συνήθως την έννοια
της αναγωγής β .
[Ισχυρή κανονικοποίηση]
Για τους όρους του συστήματος T ισχύει το θεώρημα της ισχυρής κανονικοποίησης,
δηλαδή κάθε αναγωγή τερματίζει πάντα σε μοναδική κανονική μορφή.

*Εκφραστική δύναμη: παραδείγματα


πορούμε να ορίσουμε τους λογικούς συνδέσμους:
neg για την άρνηση, disj για τη διάζευξη και conj για τη σύζευξη. Οι ορισμοί
είναι

neg (u) = D F T u disj (u, v) = D T v u conj (u, v) = D v F u

Για παράδειγμα, disj (u, v)β T και conj (F, x)β x. Είναι εύκολο να δούμε ότι και
με τους υπόλοιπους συνδέσμους ικανοποιούνται οι επιθυμητές ιδιότητες.
Για να αναπαραστήσουμε συναρτήσεις πρέπει πρώτα να αναπαραστήσουμε τους
φυσικούς αριθμούς. Η φυσική επιλογή είναι ο όρος n = S n (O) να αναπαριστά τον
φυσικό αριθμό n ∈ N. (S n (O) είναι ο όρος S(S(· · · (S (O) · · · )).
| {z }
n φορές
Οι αναδρομικές συναρτήσεις δίνονται με ορισμούς του τύπου

x+0=x x + Sy = S(x + y)
Αυτοί οι ορισμοί μπορούν να μεταφερθούν στο σύστημα T χρησιμοποιώντας τον
τελεστή R. Θα δώσουμε το παράδειγμα για την πρόσθεση. Ορίζουμε

t[x, y] = R x(λz Nat .λz 0Nat .Sz) y

Τότε έχουμε
t[x, O]β [β]x και
t[x, Sy]β [β](λz Nat .λz 0Nat .Sz)(t[x, y])yβ [β]St[x, y]
46
πράγμα που σημαίνει ότι μπορούμε να θεωρήσουμε τον όρο t[x, y] ως ορισμό της
πρόσθεσης x + y.

Παράδειγμα. Ορίστε τον πολ/σμό και την εκθετική συνάρτηση.

Το σύστημα T έχει πολύ μεγάλη εκφραστική δυνατότητα. Μπορούμε να ορί-


σουμε όλες τις πρωτογενείς αναδρομικές συναρτήσεις και πολλές περισσότερες. Το
σύστημα T συνδέεται με το αξιωματικό σύστημα της αριθμητικής του Peano με τον
ακόλουθο τρόπο. Αν υποθέσουμε την αρχή της κανονικοποίησης για τους όρους του
συστήματος T τότε μπορούμε να αποδείξουμε τη συνέπεια της αριθμητικής του Peano
μεταφράζοντάς το κατάλληλα στο σύστημα T (μετάφραση Gödel). ΄Ενα πόρισμα αυτού
του αποτελέσματος είναι το ακόλουθο
Οι συναρτήσεις που μπορούν να αναπαρασταθούν στο σύστημα T είναι ακριβώς
αυτές των οποίων ο τερματισμός μπορεί να αποδειχθεί στην αριθμητική του Peano.

*ΛΟΓΙΚΗ ΚΑΙ ΙΣΟΜΟΡΦΙΣΜΟΣ CURRY-HOWARD


τη Λογική κατασκευάζουμε αποδείξεις. Ξεκινώντας από υποθέσεις, με διαδο-
χικά (λογικά) βήματα οδηγούμαστε στο συμπέρασμα. Αν οι υποθέσεις ταυτίζον-
ται με τα αξιώματα μιας θεωρίας τότε το συμπέρασμα θα είναι ένα θεώρημα αυτής
της θεωρίας. Αν το συμπέρασμα αποδειχθεί χωρίς να βασιζόμαστε σε καμμία υπό-
θεση τότε η πρόταση-συμπέρασμα είναι λογικά ορθή δηλαδή έχει μια γενική λογική
αναγκαιότητα (ταυτολογία ή λογικά έγκυρη πρόταση). Οι μελέτες μεγάλων μαθη-
ματικών λογικών, όπως των Frege, Russell, Hilbert, Gentzen και πολλών άλλων,
επέτρεψαν την τυποποίηση της έννοιας της απόδειξης. Οι εργασίες του Gentzen και
ειδικά ο τρόπος που παρουσίασε τις αποδείξεις στο σύστημα της φυσικής απαγωγής
επέτρεψαν να διαπιστωθεί μια συγκλονιστική ισομορφία μεταξύ των αποδείξεων και
των όρων του λ-λογισμού (προγραμμάτων). Αυτή η αντιστοιχία αποτελεί το κλειδί
της δομικής σύνδεσης της λογικής (εν γένει των μαθηματικών) και της πληροφορικής.
Στη συνέχεια θα παρουσιάσουμε το σύστημα της φυσικής απαγωγής στην απλή
περίπτωση ενός μέρους του προτασιακού λογισμού.
[Προτασιακές φόρμουλες]
Ξεκινάμε με ένα αριθμήσιμο σύνολο προτασιακών μεταβλητών
π.χ. A, B, C, . . ., A1 , B1 , C1 , . . . θα είναι προτασιακές μεταβλητές
και ορίζουμε
(1) Κάθε προτασιακή μεταβλητή είναι προτασιακή φόρμουλα.
(2) Αν φ και ψ είναι προτασιακές φόρμουλες τότε (φ → ψ) και (φ ∧ ψ) είναι
προτασιακές φόρμουλες.
Σημείωση: Προτασιακή φόρμουλα είναι κάθε έκφραση (συμβολοσειρά) που κατασκευάζε-
ται με διαδοχικές εφαρμογές των κανόνων 1 και 2.
47
Η φόρμουλα (φ → ψ) είναι η συνεπαγωγή με υπόθεση τη φ και συμπέρασμα την
ψ και η φόρμουλα (φ ∧ ψ) είναι η σύζευξη των φ και ψ. Για λόγους απλότητας θα
παραλείπουμε πολλές φορές τις παρενθέσεις.
(1) Η προτασιακή μεταβλητή A είναι προτασιακή φόρμουλα.
(2) Η έκφραση (((A → A) → C) ∧ B) είναι προτασιακή φόρμουλα (ελέγξτε αν
έχει κατασκευαστεί σωστά σύμφωνα με τις προδιαγραφές του ορισμού).

*Σύστημα αποδείξεων φυσικής απαγωγής


ι αποδείξεις στο σύστημα φυσικής απαγωγής θα είναι δέντρα όπου στους κόμβους
των δέντρων θα υπάρχουν προτασιακές φόρμουλες, στη ρίζα των δέντρων θα υπάρχει
η προτασιακή φόρμουλα που αποδεικνύεται και στα φύλλα των δέντρων θα υπάρχουν
(αν παραμένουν ζωντανές) οι υποθέσεις στις οποίες βασίζεται η αποδεικνυόμενη φόρ-
μουλα. Οι υποθέσεις στα φύλλα του δέντρου θα είναι ομαδοποιημένες σε πακέτα
υποθέσεων (όπου κάθε πακέτο θα αποτελείται από εμφανίσεις της ίδιας φόρμουλας
σε διαφορετικά φύλλα). Επίσης θα υπάρχουν και πακέτα υποθέσεων που έχουν εκ-
φορτιστεί (κατά την πορεία της απόδειξης) και τα οποία δεν θα μετράνε ως (ζωντανές)
αποδείξεις.
Τα παραπάνω γίνονται πιο ακριβή και πιο κατανοητά με τους ακόλουθους ορισμούς.
Θα ονομάζουμε δέντρο με φόρμουλες κάθε δέντρο, με μονή ή διπλή διακλάδωση,
στους κόμβους του οποίου υπάρχουν προτασιακές φόρμουλες
π.χ.

AB
A∧B
A → (A ∧ B)
είναι δέντρο με φόρμουλες.
Τα δέντρα που εξετάζουμε διακλαδώνονται προς τα πάνω π.χ. όταν γράφουμε φ
ψ χ έχουμε διπλή διακλάδωση, ενώ όταν γράφουμε φ χ έχουμε μονή διακλάδωση.
΄Ενα δέντρο με φόρμουλες και με πακέτα υποθέσεων είναι ένα δέντρο με φόρμουλες
όπου στα φύλλα του δέντρου σε κάθε φόρμουλα έχει αντιστοιχηθεί ένας φυσικός αρ-
ιθμός. Ο περιορισμός είναι ότι σε διαφορετικές φόρμουλες πρέπει να αντιστοιχούν
διαφορετικοί αριθμοί ενώ σε διαφορετικές εμφανίσεις της ίδιας φόρμουλας (ίδια φόρ-
μουλα σε διαφορετικά φύλλα) μπορεί να αντιστοιχηθεί ο ίδιος αριθμός. Το πολυσύνολο
όλων των εμφανίσεων στα φύλλα του δέντρου μιας φόρμουλας φ στην οποία έχει αντι-
στοιχηθεί ο αριθμός i λέγεται πακέτο υποθέσεων i. Τα πακέτα υποθέσεων χωρίζονται
σε δύο ξεχωριστές κατηγορίες. Τα {ζωντανά} πακέτα υποθέσεων και τα εκφορτισμένα
πακέτα υποθέσεων. ΄Οταν θέλουμε να παρουσιάσουμε ότι μια συγκεκριμένη εμφάνιση
μιας φόρμουλας φ σε ένα φύλλο ανήκει στο ζωντανό πακέτο i γράφουμε φi ενώ όταν
ανήκει στο εκφορτισμένο πακέτο i γράφουμε iφ . Επίσης, στα δέντρα με φόρμουλες και
48
πακέτα υποθέσεων, επιτρέπουμε να υπάρχουν φυσικοί αριθμοί και στις διακλαδώσεις
φ ψ χ και φ χ δηλαδή επιτρέπουμε το δέντρο να έχει στους κόμβους τη μορφή

φψiχήφiχ.
Το παρακάτω είναι ένα δέντρο με φόρμουλες και πακέτα υποθέσεων
1 A 1 A A∧B 1 A → (A ∧ B) A2 (A → (A ∧ B)) ∧ A
Ας επισημάνουμε ότι το πολυσύνολο με μοναδική εμφάνιση την A2 στην ανα-
παράσταση του δέντρου είναι το ανοικτό πακέτο υποθέσεων 2 ενώ το πολυσύνολο με
τις δύο εμφανίσεις 1A στην αναπαράσταση του δέντρου είναι το εκφορτισμένο πακέτο
υποθέσεων 1.
Θα συμβολίζουμε τα ανοικτά πακέτα υποθέσεων i με μέλη κάποιες φόρμουλες φόρ-
μουλα φ με [φ]i . Δηλαδή [φ]i θα συγκεντρώνει όλες τις φόρμουλες φ στα φύλλα του
δέντρου στις οποίες έχει αντιστοιχηθεί ο αριθμός i (και οι οποίες συγκροτούν ανοικτό
πακέτο). Αντίστοιχα τα εκφορτισμένα πακέτα τα συμβολίζουμε με [φ]i . Σημειώστε
ότι [φ]i είναι διαφορετικό από το [φ]j αν i 6= j. Το ίδιο συμβαίνει και για τα εκφορ-
τισμένα πακέτα. Ενα πακέτο υποθέσεων είναι πάντα προσδιορισμένο είτε ως ανοικτό
είτε ως εκφορτισμένο πακέτο υποθέσεων. Αν αποφασίσουμε για ένα ανοικτό πακέτο
υποθέσεων [φ]i να αλλάξουμε τον προσδιορισμό του σε εκφορτισμένο τότε το συμ-
βολίζουμε (το μετατρέπουμε σε) [φ]i .
Στη συνέχεια θα ορίσουμε την «Π είναι απόδειξη της φόρμουλας φ από τα πακέτα
υποθέσεων [φ1 ]j1 , . . . , [φk ]jk ». Η απόδειξη Π θα είναι ένα δέντρο με φόρμουλες και
πακέτα υποθέσεων στο οποίο τα ανοικτά πακέτα υποθέσεων θα είναι τα [φ1 ]j1 , . . . , [φk ]jk
και για τα εκφορτισμένα θα υπάρχει μια καταγραφή «σε ποια σημεία» της απόδειξης
έχει γίνει η εκφόρτισή τους. Η απόδειξη-δέντρο κατασκευάζεται με βάση τον ακόλουθο
αναδρομικό ορισμό:
(1) Για κάθε φόρμουλα φ και κάθε i ∈ N το δέντρο

φ
με μοναδικό κόμβο την φ είναι απόδειξη της φ από το πακέτο υποθέσεων
[φ]i . Σ΄ αυτήν την περίπτωση το (ζωντανό) πακέτο υποθέσεων [φ]i (πακέτο
i) αποτελείται αποκλειστικά από τη φ και η απόδειξη μπορεί να παρασταθεί
επίσης με φi .
(2) Αν Π1 είναι απόδειξη της φ και Π2 απόδειξη της ψ (και στις δύο περιπτώσεις
αντίστοιχα από κάποια πακέτα υποθέσεων έτσι ώστε να μην είναι δυνατόν
για πακέτο υποθέσεων [φ]i της Π1 και [ψ]i της Π2 να έχουμε φ 6= ψ) τότε
το δέντρο
Π1 Π2 φ ∧ ψ
είναι απόδειξη της φ ∧ ψ από πακέτα υποθέσεων που καθορίζονται από
τους αριθμούς που έχουν αποδοθεί στα φύλλα του ενιαίου δέντρου Π1 Π2
49
φ ∧ ψ και οι οποίοι έχουν κληρονομηθεί από τα δέντρα Π1 και Π2 (δηλαδή
κάθε πακέτο υποθέσεων [φ]i του Π1 Π2 φ ∧ ψείναι πακέτο υποθέσεων είτε
του Π1 είτε του Π2 , εκτός από την περίπτωση που έχουμε για κάποιο i
να υπάρχει πακέτο [φ]i της Π1 και [φ]i της Π2 και στην οποία περίπτωση
ενοποιούμε το πακέτο [φ]i , δηλαδή σ΄ αυτό το πακέτο θα περιλαμβάνονται
όλες οι εμφανίσεις της φi και στα δύο δέντρα Π1 και Π2 .
[Σχηματικά την κατασκευή της νέας απόδειξης θα την εμφανίζουμε ως
..
.
φ
..
.
ψ φ∧ψ
.. ..
. .
όπου φ είναι η απόδειξη Π1 και ψ η απόδειξη Π2 .]
(3) Αν Π είναι απόδειξη της φ ∧ ψ από κάποια πακέτα υποθέσεων τότε Πφείναι
απόδειξη της φ και Πψείναι απόδειξη της ψ, και οι δύο με τα ίδια πακέτα
υποθέσεων.
.. ..
. .
[Παριστάνουμε αυτές τις αποδείξεις με φ ∧ ψφκαι φ ∧ ψψαντίστοιχα.]
(4) Αν Π είναι απόδειξη της ψ από πακέτα υποθέσεων στα οποία περιλαμβάνεται
το πακέτο [φ]i τότε Πiφ → ψ είναι απόδειξη της φ → ψ από τα ίδια πακέτα
υποθέσεων εκτός του ότι το πακέτο [φ]i έχει μεταταχθεί στα εκφορτισμένα,
δηλαδή το [φ]i έχει πάψει να είναι ανοικτό πακέτο (άρα είναι εκφορτισμένο).
[φ]i
..
.
[Σχηματικά μπορούμε να περιγράψουμε τα πιο πάνω λέγοντας ότι αν ψ
[φ]i
..
.
είναι απόδειξη της ψ τότε ψ i φ → ψ είναι απόδειξη της φ → ψ.]
(5) Αν Π είναι απόδειξη της ψ από κάποια πακέτα υποθέσεων και φ μια φόρμουλα
τότε το δέντρο Πφ → ψείναι απόδειξη της φ → ψ από τα ίδια πακέτα
υποθέσεων.
[Ο μηχανισμός αυτός αντιστοιχεί κατά μία έννοια στην εκφόρτιση ενός
«φαινομενικού» πακέτου υποθέσεων [φ]i , όπου το i δεν υπάρχει στα πακέτα
υποθέσεων της απόδειξης Π.]
(6) Με τη συμβολική αναπαράσταση και τις ίδιες προδιαγραφές του ορισμού που
.. ..
. .
χρησιμοποιήσαμε για τη σύζευξη το δέντρο φ → ψ φ ψ είναι απόδειξη της ψ
.. ..
. .
στην περίπτωση που φ → ψ είναι απόδειξη της φ → ψ και φ είναι απόδειξη
της φ.

50
*Παρατηρήσεις - Συμβολισμοί
δημιουργία της απόδειξης Π της φόρμουλας φ δημιουργεί ένα δέντρο στο οποίο
κρατούνται σημειώσεις για τις υποθέσεις (ζωντανές ή εκφορτισμένες) και της ακριβούς
θέσης όπου εκφορτίζεται ένα πακέτο υποθέσεων.
[φ]i
Π Π
Αν με ψ συμβολίσουμε την απόδειξη Π της φόρμουλας ψ και με ψ την απόδειξη
[φ]i
Π
Π της ψ όπου μεταξύ των πακέτων υποθέσεων υπάρχει το [φ]i , ομοίως δε με ψ την
απόδειξη της ψ όπου το πακέτο [φ]i έχει «καταστεί» εκφορτισμένο (έχει εκφορτιστεί)
τότε μπορούμε να διατυπώσουμε συνοπτικά τον ορισμό των αποδείξεων:
[ψ]i
ψ Π1 Π2
π.χ. η ψ είναι απόδειξη, η φ ψ φ ∧ ψ είναι απόδειξη (αφού έχουμε ενοποιήσει
[φ]i
Π1 Π2 Π
τα πακέτα υποθέσεων των φ και ψ ) η ψ i φ → ψείναι απόδειξη κ.ο.κ.
(1) 1 Α 1 A → A . Δηλαδή το A είναι απόδειξη από την υπόθεση A (δηλ. το
πακέτο [A]1 ). ¶ρα μπορούμε να εκφορτίσουμε το πακέτο A1 και να πάρουμε
το A → A χωρίς υποθέσεις.
(2) 1 Α B → A 1 A → (B → A) . (Η εισαγωγή του B αντιστοιχεί στην
περίπτωση 5 του ορισμού. Δηλαδή το B → A εισάγεται στην πορεία της
απόδειξης χωρίς το B να περιέχεται στα ανοικτά πακέτα υποθέσεων).
(3) 2 Α 1 Β A∧B 1 (B → (A ∧ B) 2 A → (B → (A ∧ B)) είναι απόδειξη του
A → (B → (A ∧ B)) χωρίς υποθέσεις.
Σημειώστε ότι όλες οι υποαποδείξεις
A2 , B 1 , A2 B 1 A ∧ B, A2 1 B A∧B 1 B → (A ∧ B), είναι αποδείξεις
των αντίστοιχων φορμουλών από τα αντίστοιχα πακέτα υποθέσεων.
Ως ένα άλλο παράδειγμα απόδειξης θεωρήστε το ακόλουθο δέντρο
1 A → (B → C) 2 AB →C 3 A→B 2 A B C 2 A → C 3 (A → B) → (A → C)
1 (A → (B → C)) → ((A → B) → (A → C))

*Κανόνες σχηματισμού των αποδείξεων


ι κανόνες μπορούν να χωριστούν σε δύο κατηγορίες. Τους κανόνες εισαγωγής
και του κανόνες απαλοιφής.
• Κανόνες εισαγωγής:
[φ]i
.. .. ..
. . .
Οι κανόνες φ ψ φ ∧ ψ και ψ i φ→ψ .
• Κανόνες απαλοιφής:
51
.. .. .. ..
. . . .
Οι κανόνες φ ∧ ψφ, φ ∧ ψψκαι φ → ψ φψ.
Οι κανόνες εισαγωγής εισάγουν τον σύνδεσμο στην φόρμουλα του συμπεράσματός
τους ενώ οι κανόνες απαλοιφής τον απομακρύνουν.

Redex και Contractum στις αποδείξεις φυσικής απαγωγής. Η παρουσίαση


των αποδείξεων με το σύστημα της φυσικής απαγωγής εισάγει μια έννοια redex και
την αντίστοιχη του contractum.
Κάθε απόδειξη της μορφής στο αριστερό μέρος είναι redex και η αντίστοιχη μορφή
στο δεξιό μέρος είναι το contractum αυτού του redex.
Redex Contractum
Π2
[φ]i [φ]i
Π Π2 Π
ψ i φ→ψ φ ψ ψ
Π1 Π2 Π1
φ ψ φ∧ψ φ φ
Π1 Π2 Π2
φ ψ φ∧ψ ψ ψ
Π2
[φ]i [φ]i
Π Π
Σημείωση: Για να σχηματιστεί η απόδειξη ψ κάθε φύλλο φ στην απόδειξη ψ
Π2
που ανήκει στο πακέτο υποθέσεων i έχει αντικατασταθεί με την απόδειξη φ . Είναι
εύκολο να δούμε ότι αυτό που προκύπτει είναι απόδειξη.

Σχόλιο. Το redex δημιουργείται όταν έχουμε την εφαρμογή ενός κανόνα εισαγ-
ωγής και αμέσως μετά την εφαρμογή ενός κανόνα απαλοιφής (και στις δύο περιπτώσεις
για τον ίδιο σύνδεσμο). Κατά μία έννοια μια τέτοια ακολουθία είναι μια άσκοπη εναλ-
λαγή αποδείξεων (detour) η οποία δημιουργεί απόδειξη κατά ένα έμμεσο τρόπο. Η
αποκατάσταση έρχεται όταν η απόδειξη αυτή (το redex) αντικατασταθεί με την ευθεία
απόδειξη (που είναι το contractum).

Μια απόδειξη που δεν περιέχει redex λέγεται κανονική απόδειξη.


Αν υπάρχει απόδειξη μιας φόρμουλας τότε υπάρχει και κανονική απόδειξη της ίδιας
φόρμουλας. Μάλιστα, όπως θα δούμε και από τον ισομορφισμό των Curry-Howard,
ισχύει το ισχυρότερο αποτέλεσμα ότι κάθε απόδειξη μιας φόρμουλας φ μετατρέπεται
σε κανονική απόδειξη της φ με οποιαδήποτε διαδοχική αντικατάσταση ενός redex με
το αντίστοιχο contractum (ισχυρή κανονικοποίηση).

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

ΑΠΟΔΕΙΞΕΙΣ ←− ——— −→ ΠΡΟΓΡΑΜΜΑΤΑ

ΦΟΡΜΟΥΛΕΣ ←−—————— −→ ΤΥΠΟΙ

Δηλαδή κάθε απόδειξη μιας φόρμουλας μπορεί να νοηθεί ως ένα πρόγραμμα ενός
τύπου. Η φόρμουλα περιγράφει το τι αποδεικνύει η απόδειξη ενώ ο τύπος περιγράφει
το τι κάνει το πρόγραμμα (το specification του προγράμματος).
Στη συνέχεια δίνεται η περιγραφή του ισομορφισμού.
Αν ταυτίσουμε τους ατομικούς τύπους και τις προτασιακές μεταβλητές και στην
συνέχεια κάθε φόρμουλα (φ → ψ) την ταυτίσουμε με τον τύπο (φ → ψ) και κάθε
φόρμουλα (φ ∧ ψ) με τον τύπο (φ × ψ) μπορούμε να θεωρήσουμε ότι οι φόρμουλες
και οι τύποι ταυτίζονται.
Για παράδειγμα η προτασιακή φόρμουλα (A → B) ∧ (C → A) είναι ο τύπος
(A → B) × (C → A) όπου A, B, C είναι προτασιακές μεταβλητές (ή ατομικοί τύποι).
Θα χρησιμοποιούμε τα γράμματα A, B, C για τις προτασιακές μεταβλητές (το ίδιο
για τους ατομικούς τύπους) και τα φ, ψ,. . . για τις προτασιακές φόρμουλες (ή το ίδιο
για τους τύπους του συστήματος Church).
Σε κάθε απόδειξη Π της φόρμουλας φ από τα πακέτα υποθέσεων [φ1 ]i1 , . . . , [φk ]ik
θα αντιστοιχήσουμε με μοναδικό τρόπο έναν όρο N τύπου φ (δηλ. N φ ) με ελεύθερες
μεταβλητές xφi11 , . . . , xφikk του αρχικού συστήματος Church με γινόμενο τύπων, ως
εξής:
(ο ορισμός θα δίνει και την αντίστροφη αντιστοιχία δηλαδή για κάθε όρο N μια
απόδειξη του συστήματος Church. Για να έχουμε την ακριβή αντιστοιχία θα υποθέ-
σουμε ότι αν xσi και xτj είναι μεταβλητές του συστήματος με τύπους και αν σ 6= τ
τότε και οι δείκτες i και j θα είναι διαφορετικοί, δηλαδή i 6= j. Εδώ π.χ. το i είναι ο
δείκτης σε μια αρίθμηση των συμβόλων μεταβλητών του αρχικού συστήματος Church.

(1) Σε κάθε απόδειξη φi (από το πακέτο υποθέσεων [φ]i ) αντιστοιχούμε τη


μεταβλητή xφi (και αντιστρόφως).
Π1 Π2 Π1 Π2
(2) Αν φ και ψ αντιστοιχούν στα N φ και M ψ τότε η απόδειξη φ ψ φ ∧ ψ
αντιστοιχεί στον όρο hN φ , M ψ i (τύπου φ ∧ ψ).
Π Π
(3) Αν η φ ∧ ψ αντιστοιχεί στον M φ∧ψ τότε η απόδειξη φ ∧ ψ φαντιστοιχεί στον
Π
π 1 M και η φ ∧ ψ ψαντιστοιχεί στον π 2 M .
[φ]i [φ]i
Π Π
ψ
(4) Αν ψ αντιστοιχεί στον όρο M τότε η απόδειξη ψ i φ → ψαντιστοιχεί
στον όρο λxφi M ψ .
53
Π Π
(5) Αν ψ αντιστοιχεί στον όρο M ψ τότε ψ φ → ψαντιστοιχεί στον όρο λxφ M ψ
τύπου (φ → ψ), (όπου x μπορεί να είναι το πρώτο νέο σύμβολο μεταβλ-
ητής). Εδώ στην απόδειξη δεν εκφορτίζουμε κανένα πακέτο υποθέσεων και
αντίστοιχα στον όρο χρησιμοποιούμε τη μεταβλητή xφ που δεν εμφανίζεται
ελεύθερη στον M ψ .
Η αντιστοιχία που ορίσαμε είναι ισομορφισμός διότι σέβεται την «πράξη» της αναγ-
ωγής, δηλαδή αν μία απόδειξη Q προκύψει από την P με την αναγωγή ενός redex
τότε ο αντίστοιχος της Q όρος N προκύπτει από τον αντίστοιχο της P όρο M με την
αναγωγή του αντίστοιχου redex. Θα παρουσιάσουμε την ισοδυναμία σε μία χαρακ-
τηριστική περίπτωση.
[φ]i
Π2 Π2
΄Εστω ότι η απόδειξη φ αντιστοιχεί στον όρο N και η απόδειξη ψ στον όρο M ψ
φ

(που έχει ελεύθερη μεταβλητή xφi ). Τότε σύμφωνα με την αντιστοιχία Curry-Howard
[φ]i [φ]i
Π1 Π1
η απόδειξη ψ i φ → ψαντιστοιχεί στον όρο λxφi M ψ και η απόδειξη ψ i φ → ψ
Π2
φ ψ (που είναι redex ) αντιστοιχεί στον όρο (λxφi M ψ )N φ (που κι΄ αυτός είναι – το
[φ]i
Π1 Π2
αντίστοιχο – redex ). Είναι εύκολο να δούμε ότι το contractum της ψ i φ→ψ φ ψ
Π2
[φ]1
Π1
που είναι η απόδειξη ψ αντιστοιχεί στον όρο M ψ [xφi := N ] που είναι το contractum
του (λxφi M ψ )N φ .

54
ΕΞΙΣΩΤΙΚΗ ΛΟΓΙΚΗ

Η λογική βρίσκει εφαρμογή στην πληροφορική μέσω συγκεκριμένων λογικών


συστημάτων, όπως η εξισωτική λογική (equational logic), η πρωτοβάθμια λογική
(first-order logic), η χρονική λογική (temporal logic) κ.α. Τόσο η χρήση λογικών
συστημάτων όσο και ο αριθμός εκείνων που αξιοποιούνται από την πληροφορική αναπ-
τύσσεται ταχύτατα. Η εξισωτική λογική συγκεκριμένα, μπορεί να χρησιμοποιηθεί για
την προδιαγραφή και επαλήθευση δηλωτικών προγραμμάτων. Επίσης, η εξισωτική
απαγωγή είναι σημαντικά απλούστερη συγκριτικά με την πρωτοβάθμια απαγωγή και
έχει πολλά πλεονεκτήματα σχετικά με τις ενδεχόμενες εφαρμογές της στην πληρο-
φορική. Η εξισωτική λογική χρησιμοποιείται ήδη για πολλά προβλήματα στις προδια-
γραφές υλικού και λογισμικού. Μπορεί επίσης να χρησιμοποιηθεί σαν μια μεταγλώσσα
για την περιγραφή άλλων λογικών συστημάτων. Κάτι τέτοιο έχει γίνει ήδη για το
λογικό πλαίσιο 2OBJ σψστεμ, ένα μετα-λογικό σύστημα που υποστηρίζει απαγωγές
σε όλα τα λογικά συστήματα που μπορούν να κωδικοποιηθούν στην εξισωτική λογική.
Ιδιαίτερο λόγο στη σχέση πληροφορικής και λογικής παίζει η άλγεβρα. Η θεω-
ρία πεδίων (domain theory), η θεωρία κατηγοριών (category theory), ο σχεσιακός
λογισμός (relational calculus) και οι άλγεβρες Boole (Booleanalgebras) αποτελούν
χαρακτηριστικά παραδείγματα εφαρμοσμένων αλγεβρικών θεωριών που σχετίζονται
άμεσα με τη λογική και έχουν βρει σημαντικές εφαρμογές στην πληροφορική. Πριν
παρουσιάσουμε, λοιπόν, τη θεωρία της εξισωτικής λογικής θα κάνουμε μια εισαγωγή
στη θεωρία κατηγοριών και τις εφαρμογές της στη λογική της πληροφορικής, που θα
μας φανεί ιδιαίτερα χρήσιμη στην ουσιαστική κατανόηση της εξισωτικής λογικής και
των εφαρμογών της.

*Η ΛΟΓΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΟΙ ΚΑΤΗΓΟΡΙΕΣ


θεωρία των κατηγοριών [14, 15] προτείνει μια ιδιαίτερη οπτική αναφορικά με την
περιγραφή των μαθηματικών αντικειμένων. Σύμφωνα με αυτή οι ιδιότητες των μαθη-
ματικών δομών προκύπτουν μέσα από τη μελέτη των μορφισμών που τις διατηρούν. Η
προαναφερθείσα μέθοδος επεκτείνεται και στη συμβολική λογική εξαιτίας της μαθη-
ματικής φύσης της τελευταίας. ΄Ετσι, η θεωρία των κατηγοριών έχει εφαρμοστεί σε
περιοχές της λογικής όπως η θεωρία αλγορίθμων, η θεωρία τύπων, η θεωρία αποδείξ-
εων, η αφηρημένη θεωρία μοντέλων και η εξισωτική λογική. Οι εφαρμογές αυτές
55
τοποθετούνται σε μια ολόκληρη σχολή έρευνας που σκοπό της έχει την αλγεβροποίηση
της συμβολικής λογικής. Τα τελευταία χρόνια η κατηγοριακή προσέγγιση της συμβο-
λικής λογικής έχει γνωρίσει ιδιαίτερη άνθιση κυρίως λόγω των ευρύτατων εφαρμογών
της στη θεωρητική πληροφορική. Η θεωρία κατηγοριών μπορεί να μας βοηθήσει να
απαντήσουμε το ερώτημα:
Σε τι συνίσταται ένα λογικό σύστημα;
Στο τέλος αυτής της ενότητας παρουσιάζονται συνοπτικά οι δύο πιο σημαντικές
σχετικές θεωρίες:
• η κατηγορική λογική (categorical logic) κατά J. Lambek
• η αφηρημένη θεωρία μοντέλων κατά J. Goguen και R.Burstall, ή θεωρία
θεσμών (theory of institutions)
αφού πρώτα παρουσιαστούν οι βασικές έννοιες και κατασκευές της θεωρίας κατη-
γοριών.
Οι έννοιες από τη θεωρία κατηγοριών που χρησιμοποιούμε αποκτούν περιεχό-
μενο συμβατό με τη συμβολική λογική μόνο όταν ερμηνευτούν και ονομαδοτηθούν
κατάλληλα. ΄Ετσι, για παράδειγμα, μια κατηγορία μπορεί άλλοτε να ερμηνευτεί ως
κατηγορία προτάσεων και άλλοτε ως κατηγορία μοντέλων ενός λογικού συστήματος,
ανάλογα με το πώς θα ονομαστούν τα αντικείμενα και οι μορφισμοί της.

Θεωρία Κατηγοριών : Ορισμοί - Βασικές Κατασκευές.

Ορισμός. Μία κατηγορία C αποτελείται από:


(1) μία συλλογή από αντικείμενα
(2) μία συλλογή από μορφισμούς
(3) τελεστές που επισυνάπτουν σε κάθε μορφισμό f ένα αντικείμενο domf
(πεδίο ορισμού του f ) και ένα αντικείμενο codf (πεδίο τιμών του f ). Συμ-
βολίζουμε με f : A → B, ή A → B τους μορφισμούς f με domf = A και
codf = B.
(4) έναν τελεστή σύνθεσης που επισυνάπτει σε κάθε ζεύγος μορφισμών f και
g με codf = domg τη σύνθεσή τους, έτσι ώστε να ικανοποιείται η προσε-
ταιριστική ιδιότητα, δηλαδή για κάθε f : A → B, g : B → C και h : C → D
να ισχύει ότι:
h ◦ (g ◦ f ) = (h ◦ g) ◦ f
(5) έναν ταυτοτικό μορφισμό idA : A → A για κάθε αντικείμενο A που ικανοποιεί
τον ταυτοτικό νόμο, δηλαδή για κάθε μορφισμό f : A → B, ισχύει ότι:

idB ◦ f = f και f ◦ idA = f

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

Παράδειγμα. Η κατηγορία των μερικά διατεταγμένων συνόλων ΡοΣετ.


Μια μερική διάταξη ≤P σε ένα σύνολο P είναι μια σχέση με τις εξής ιδιότητες:
(1) p ≤ p
(2) p ≤ p0 ≤ p00 ⇒ p ≤ p00 για κάθε p, p0 , p00 ∈ P
(3) p ≤ p0 και p0 ≤ p ⇒ p = p0 για κάθε p, p0 ∈ P
Μια συνάρτηση f : P → Q από το (P, ≤P ) στο (Q, ≤P ) ονομάζεται συνάρτηση
που διατηρεί τη μερική διάταξη εάν ισχύει ότι:

Εάν p ≤P p0 τότε f (p) ≤Q f (p0 )

Η κατηγορία PoSet έχει ως αντικείμενα μερικά διατεταγμένα σύνολα και ως


μορφισμούς συναρτήσεις που διατηρούν τη μερική διάταξη (αύξουσες συνρτήσεις).
Πιο συγκεκριμένα, ένας μορφισμός f : (P, ≤P ) → (Q, ≤Q )στην PoSet είναι μία
συνάρτηση από το P στο Q που διατηρεί τη διάταξη του P , δηλαδή εάν p ≤P p0 ⇒
f (p) ≤Q f (p0 ).

domf = (P, ≤P )
codf = (Q, ≤Q )
f ∈ P oSet((P, ≤P ), (Q, ≤Q ))
Επίσης, για κάθε μερική διάταξη (P, ≤P ) η ταυτοτική συνάρτηση idP διατηρεί τη
διάταξη στο P και ικανοποιεί τον ταυτοτικό νόμο.
Η σύνθεση δύο συναρτήσεων που διατηρούν τη μερική διάταξη είναι μια συνάρτηση
που διατηρεί τη μερική διάταξη. Πράγματι, έστω οι συναρτήσεις f : P → Q, g : Q → R
που διατηρούν τη μερική διάταξη. Τότε εάν p ≤P p0 , επειδή η f διατηρεί τη μερική
διάταξη, ισχύει ότι
f (p) ≤Q f (p0 )
και επειδή η g διατηρεί κι αυτή τη μερική διάταξη έχουμε

g (f (p)) ≤Q g (f (p0 ))

΄Αρα η σύνθεσή τους g ◦ f διατηρεί τη μερική διάταξη.

Παράδειγμα. Η κατηγορία των μονοειδών (μονοιδς) Mon με αντικείμενα τα


μονοειδή και μορφισμούς τους ομομορφισμούς μεταξύ μονοειδών.

Ορισμός. ΄Ενα μονοειδές (M, ·, e) αποτελείται από ένα σύνολο M , μια διμελή
πράξη · και ένα ουδέτερο στοιχείο e τέτοια ώστε να ισχύει:

x · (y · z) = (x · y) · z για κάθε x, y, z ∈ M
57
και
e · x = x = x · e για κάθε x ∈ M

΄Ενας ομομορφισμός μονοειδών από το (M, ·, e) στο (M 0 , ·0 , e0 ) είναι μια συνάρτηση


f : M → M 0 τέτοια ώστε f (e) = e0 και f (x · y) = f (x) ·0 f (y).

Παράδειγμα. Κατηγορική Λογική (categorical logic)


Θεωρούμε μια κατηγορία της οποίας τα αντικείμενα αντιστοιχούν σε προτάσεις και
οι μορφισμοί σε αποδείξεις. ΄Ενας μορφισμός f : A → B είναι στην ουσία η «απόδειξη»
του B από το A. Επίσης εάν f : A → B και g : B → C τότε ισχύει ότι g ◦ f : A → C
.

΄Εστω μια απλή συναρτησιακή γλώσσα προγραμματισμού με τους εξής τύπους:

Int integers (ακέραιοι)


Real reals (πραγματικοί)
Bool truth values (αληθοτιμές)
U nit a one − element type (μονοσύνολο)

τους εξής τελεστές:

isZero : Int → Bool έλεγχος εάν κάτι είναι μηδέν


not : Bool → Bool άρνηση
succInt : Int → Int επόμενος ακέραιος
succReal : Real → Real «επόμενος» πραγματικός
toReal : Int → Real μετατροπέας των ακεραίων σε πραγματικούς

και τις παρακάτω σταθερές:

zero : Int
true : Bool
f alse : Bool
unit : U nit

Με βάση τα παραπάνω σχηματίζεται η κατηγορία FPL, που έχει ως αντικείμενα


τους τύπους Int, Real, Bool και U nit και μορφισμούς τους τελεστές isZero, not,
succInt , succReal .
58
Φιγυρε 0.0.1. Κατηγορία FPL

Οι σταθερές zero, true, f alse, και unit είναι μορφισμοί από το αντικείμενο U nit
στα αντικείμενα Int, Bool, Bool, και U nit αντίστοιχα, οι οποίοι συνδέουν το μοναδικό
στοιχείο του U nit με τα αντίστοιχα στοιχεία αυτών των τύπων.
Ο παρακάτω πίνακας περιέχει μερικές βασικές κατηγορίες:

Κατηγορία Αντικείμενα Μορφισμοί


Set σύνολα συναρτήσεις
Pfn σύνολα μερικές συναρτήσεις
FinSet πεπερασμένα σύνολα πεπερασμένες συναρτήσεις
Mon μονοειδή ομομορφισμοί μονοειδών
PoSet μερικά διατεταγμένα σύνολα μονότονες συναρτήσεις
Grp ομάδες ομομορφισμοί ομάδων
Ω − Alg Ω−άλγεβρες Ω−ομομορφισμοί
CPO πλήρεις μερικές διατάξεις συνεχείς συναρτήσεις
Vect διανυσματικοί χώροι γραμμικοί μετασχηματισμοί
Top τοπολογικοί χώροι συνεχείς συναρτήσεις
Ταβλε 1

Παράδειγμα. Μια ομάδα (G, ·, −1, e) είναι ένα σύνολο G μαζί με μία δυαδική
πράξη ·, ένα μοναδιαίο τελεστή −1, και ένα διακεκριμένο στοιχείο e τέτοια ώστε:

(x · y) · z = x · (y · z) για κάθε x, y, z ∈ G
e·x = x · e για κάθε x ∈ G
x · x−1 = e = x−1 · x για κάθε x ∈ G

Δείξτε ότι μια ομάδα μπορεί να θεωρηθεί ως κατηγορία.


59
Διαγράμματα - Γραφική Αναπαράσταση Ιδιοτήτων.

Ορισμός. ΄Ενα διάγραμμα σε μια κατηγορία C είναι μια συλλογή από «ακμές»
και «κόμβους» που αντιστοιχούν σε μορφισμούς και αντικείμενα της C με συνεπή
τρόπο. Αυτό σημαίνει ότι εάν μια «ακμή» σε ένα διάγραμμα αντιστοιχεί σε ένα μορ-
φισμό f και αυτός έχει τη μορφή f : A → B τότε οι κόμβοι αυτής της ακμής είναι το
A και το B.

Σχόλιο. Τα διαγράμματα χρησιμοποιούνται για να τεθούν και να αποδειχθούν


ιδιότητες κατηγορικών κατασκευών.

Ορισμός. ΄Ενα διάγραμμα σε μια κατηγορία C ονομάζεται μεταθετικό εάν για


κάθε ζεύγος από κόμβους X και Y , όλα τα «μονοπάτια» στο διάγραμμα από το X
στο Y είναι ίσα, με την έννοια ότι κάθε μονοπάτι καθορίζει ένα μορφισμό και αυτοί οι
μορφισμοί είναι ίσοι στη C.

Φιγυρε 0.0.2

Για παράδειγμα, λέγοντας ότι το παραπάνω διάγραμμα είναι μεταθετικό, εννοούμε


ότι f ◦ g 0 = g ◦ f 0 . Αντίστοιχα, λέγοντας ότι το παρακάτω διάγραμμα είναι μεταθετικό,
εννοούμε ότι h ◦ f = h ◦ g (αυτό δε σημαίνει ότι f = g).

Φιγυρε 0.0.3

Παράδειγμα. Στην κατηγορία Set· τα αντικείμενα είναι οι μορφισμοί f : A → B


της κατηγορίας Set. ΄Ενας Set · −μορφισμός από τον f : A → B στον f 0 : A0 → B 0
είναι ένα ζεύγος (a, b) από Set−μορφισμούς ώστε το παρακάτω διάγραμμα να είναι
μεταθετικό στην Set (κατηγορία των συνόλων).

Παράδειγμα. Η σύνθεση των Set · −μορφισμών

(a, b) : (f : A → B) → (f 0 : A0 → B 0 )
(a0 , b0 ) : (f 0 : A0 → B 0 ) → (f 00 : A00 → B 00 )
60
Φιγυρε 0.0.4

για την οποία ισχύει ότι

(a0 , b0 ) ◦ (a, b) = (a0 ◦ a, b0 ◦ b)

αντιστοιχεί στο παρακάτω διάγραμμα, το οποίο θα πρέπει να είναι μεταθετικό.

Φιγυρε 0.0.5

Πρόταση. Εάν και τα δύο εσωτερικά τετράγωνα είναι μεταθετικά, τότε το αυτό
συμβαίνει και με το εξωτερικό ¨παραλληλόγραμμο¨.

Φιγυρε 0.0.6

Προοφ. ΄Εστω τα εσωτερικά τετράγωνα όπως στο σχήμα. ΄Εχουμε ότι

(g 0 ◦ g) ◦ a = g 0 ◦ (g ◦ a) προσεταιριστική ιδιότητα
= g 0 ◦ (b ◦ f ) μεταθετικότητα 1ου τετραγώνου
= (g 0 ◦ b) ◦ f προσεταιριστική ιδιότητα
= (c ◦ f 0 ) ◦ f μεταθετικότητα 2ου τετραγώνου
= c ◦ (f 0 ◦ f ) προτεταιριστική ιδιότητα


61
Παράδειγμα. Στην κατηγορία FPL το παρακάτω διάγραμμα είναι μεταθετικό.

Φιγυρε 0.0.7

Αυτό σημαίνει ότι στην κατηγορία FPL το αποτέλεσμα του μετασχηματισμού


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

Μονομορφισμοί - Επιμορφισμοί - Ισομορφισμοί.

Ορισμός. ΄Ενας μορφισμός f : B → C σε μια κατηγορία C είναι ένας μονομορ-


φισμός εάν για κάθε ζεύγος C− μορφισμών g : A → B και h : A → B η ισότητα
f ◦ g = f ◦ h συνεπάγεται ότι g = h.

Πρόταση. Στην κατηγορία των συνόλων Set οι μονομορφισμοί είναι οι (1 – 1)


συναρτήσεις (δηλαδή οι συναρτήσεις f για τις οποίες ισχύει ότι f (x) = f (y) ⇒ x =
y).

Ορισμός. ΄Ενας μορφισμός f : A → B είναι επιμορφισμός εάν για κάθε ζεύγος


μορφισμών g : B → C και h : B → C, η ισότητα g ◦ f = h ◦ f συνεπάγεται ότι g = h.

Πρόταση. Στην κατηγορία Set οι επιμορφισμοί είναι οι επί συναρτήσεις. (Μία


συνάρτηση f : A → B είναι επί εάν για κάθε b ∈ B υπάρχει ένα a ∈ A τέτοιο ώστε
f (a) = b).

Ορισμός. ΄Ενας μορφισμός f : A → B είναι ισομορφισμός εάν υπάρχει ένας


μορφισμός f −1 : A → B (αντίστροφος του f ) τέτοιος ώστεf −1 ◦f = idA και f ◦f −1 =
idB .
Δύο αντικείμενα A και B είναι ισομορφικά εάν υπάρχει ένας ισομορφισμός
μεταξύ τους.

Αρχικά και Τελικά Αντικείμενα.

Ορισμός. ΄Ενα αντικείμενο O καλείται αρχικό, εάν για κάθε αντικείμενο A


υπάρχει ένας ακριβώς μορφισμός από το O στο A. ΄Ενα αντικείμενο 1 καλείται
62
τελικό εάν για κάθε αντικείμενο A υπάρχει ακριβώς ένας μορφισμός από το A στο
!
1(συμβολικά γράφουμε A −→ 1.

Παράδειγμα. Στην Set το κενό σύνολο {} είναι το μόνο αρχικό αντικείμενο για
κάθε σύνολο S και η κενή συνάρτηση είναι ο μόνος μορφισμός από το {} στο S.
Κάθε σύνολο με ένα μόνο στοιχείο {x} είναι ένα τελικό αντικείμενο, αφού για
κάθε σύνολο S υπάρχει συνάρτηση από το S στο {x} που στέλνει κάθε στοιχείο του
S στο x και αυτή είναι ο μοναδικός μορφισμός από το S στο {x}.

Παράδειγμα. Στην κατηγορία Ω − Alg των αλγεβρών με χαρακτηριστική Ω, το


αρχικό αντικείμενο είναι η αρχική άλγεβρα (ή άλγεβρα όρων), της οποίας οι φορείς
αποτελούνται από όλα τα πεπερασμένα δένδρα όπου κάθε κόμβος αντιστοιχεί σε ένα
τελεστή από το Ω.
Ο μοναδικός ομομορφισμός από την άλγεβρα όρων σε μια άλλη Ω−άλγεβρα συνιστά
μια συνάρτηση σημασιολογικής ερμηνείας.

Γινόμενα. Το καρτεσιανό γινόμενο δύο συνόλων A και B ορίζεται ως εξής:

A × B = {(a, b) |a ∈ A & b ∈ B}

Τα στοιχεία ενός συνόλου S μπορούν να αναπαρασταθούν από μορφισμούς που στέλ-


νουν τα μονοσύνολα του S στο S, οι οποίοι είναι βέβαια σε (1 − 1) αντιστοιχία με τα
στοιχεία του συνόλου S:
{x : {x} → S|x ∈ S}
Δηλαδή εάν x είναι ένα στοιχείο του S με x : 1 → S, 1: σύνολο με ένα στοιχείο και
f : S → T , τότε το στοιχείο f (x) είναι το μοναδικό στοιχείο του T που είναι στην
εικόνα της σύνθετης συνάρτησης f ◦ x.
Χρειαζόμαστε ένα χαρακτηρισμό των γινομένων μέσα από μορφισμούς μεταξύ
αντικειμένων.
΄Οταν ορίζουμε το γινόμενο μεταξύ δύο συνόλων A και B, ορίζουμε επίσης τις
συναρτήσεις προβολής π1 : A × B → A και π2 : A × B → B. Στην ουσία, ορίζουμε
επίσης τριάδες της μορφής (A × B, π1 , π2 ).
Εάν ορίσουμε όλες τις τριάδες (X, f1 , f2 ) που αποτελούνται από ένα σύνολο X
και δύο συναρτήσεις f1 : X → A και f2 : X → B, τότε η τριάδα (A × B, π1 , π2 ) είναι
ο «βέλτιστος αντιπρόσωπος» αυτών των συνόλων με την εξής έννοια:
Ας υποθέσουμε ότι για κάποιο σύνολο C, υπάρχουν δύο συναρτήσεις f : C → A
και g : C → B. Τότε, σχηματίζουμε μια συνάρτηση γινόμενο hf, gi : C → A × B,
63
που ορίζεται ως εξής:

hf, gi (x) = (f (x) , g (x)) όπου


f = π1 ◦ hf, gi και
g = π2 ◦ hf, gi

Η συνάρτηση hf, gi είναι η μόνη συνάρτηση από το C στο A × B με αυτή την


ιδιότητα.

Ορισμός. ΄Ενα γινόμενο (προδυςτ) δύο αντικειμένων A και B είναι ένα αντικεί-
μενο A×B , μαζί με δύο μορφισμούς προβολής π1 : A×B → A και π2 : A×B → B, τέ-
τοιους ώστε για κάθε αντικείμενο C και ζεύγος μορφισμών f : C → A και g : C → B
υπάρχει ακριβώς ένας ενδιάμεσος μορφισμός hf, gi : C → A × B ο οποίος κάνει το
παρακάτω διάγραμμα μεταθετικό,

Φιγυρε 0.0.8

έτσι ώστε
π1 ◦ hf, gi = f
και
π2 ◦ hf, gi = g
Εάν μια κατηγορία C έχει ένα γινόμενο A × B για κάθε ζεύγος αντικειμένων λέμε ότι
η κατηγορία έχει γινόμενα.

Ορισμός. Εάν A × C και B × D είναι δύο γινόμενα, τότε για κάθε ζεύγος από
μορφισμούςf : A → B και g : C → D, η απεικόνιση γινόμενο

f ×g :A×C →B×D

είναι η απεικόνιση-μορφισμός
hf ◦ π1 , g ◦ π2 i

Η δυϊκή έννοια του γινομένου είναι το συν-γινόμενο (ςο-προδυςτ).

Ορισμός. ΄Ενα συν-γινόμενο (ςο-προδυςτ) δύο αντικειμένων A και B είναι


ένα αντικείμενο A + B, μαζί με δύο μορφισμούς

i1 : A → A + B
64
και
i2 : B → A + B
τέτοιους ώστε για κάθε αντικείμενο C και ζεύγος μορφισμών f : A → C και g : B →
C υπάρχει ακριβώς ένας μορφισμός

[f, g] : A + B → C

που κάνει το παρακάτω διάγραμμα μεταθετικό.

Φιγυρε 0.0.9

Ορισμός. ΄Ενα γινόμενο μιας οικογένειας (Ai ) από αντικείμενα


! !
Y
πi : Ai → Ai
i∈I i∈I
Q
αποτελείται από ένα αντικείμενο Ai και μια οικογένεια από προβολικούς μορφισμούς
    i∈I
Q
πi : Ai → Ai τέτοια ώστε για κάθε αντικείμενο C και κάθε οικογένεια
i∈I i∈I
μορφισμών (fi : C → A)i∈I υπάρχει ένας μοναδικός μορφισμός
!
Y
hfi ii∈I : C → Ai
i∈I

έτσι ώστε το παρακάτω διάγραμμα να είναι μεταθετικό για κάθε i ∈ I.

Φιγυρε 0.0.10

65
Ορισμός. ΄Εστω f, g : A → B. ΄Ενας μορφισμός e : X → A καλείται εξισωτής
(εχυαλιζερ) των f, g αν
(1) f ◦ e = g ◦ e
(2) ∀e0 : X 0 → A τέτοιο ώστε f ◦ e0 = g ◦ e0 , ∃!k : X 0 → X με e ◦ k = e0 .

Παράδειγμα. Θεωρούμε τις συναρτήσεις

f : R × R → R, f (x, y) = x2 − y 2

g : R × R → R, g (x, y) = 1
ως μορφισμούς της κατηγορίας Set και τον μοναδιαίο κύκλο

X = (x, y) |x2 + y 2 = 1


Τότε ο μορφισμός
i:X →R×R
είναι εξισωτής των f, g.

Πρόταση. Κάθε εξισωτής είναι μονομορφισμός.

Φιγυρε 0.0.11

Προοφ. ΄Εστω e ◦ h = e ◦ k = 1.Τότε

f ◦ 1 = f ◦ (e ◦ h) = (f ◦ e) ◦ h = (g ◦ e) ◦ h = g ◦ (e ◦ h) = g ◦ 1

δηλαδή ∃!m : C → X τέτοιο ώστε e ◦ m = 1 (e : εξισωτής), που σημαίνει ότι


m = h = k. 

Πρόταση. ΄Εστω e : X → A, e0 : X 0 → A εξισωτές των f, g : A → B. Τότε


υπάρχει μοναδικός ισομορφισμός j : X → X 0 τέτοιος ώστε: e0 ◦ j = e.

Φιγυρε 0.0.12

66
Προοφ. ∃!j 0 : X 0 → X τέτοιος ώστε e0 = e ◦ j 0 (e : εξισωτής),
∃!j : X → X 0 τέτοιος ώστε e = e0 ◦ j (e0 : εξισωτής).
e ◦ j 0 ◦ j = e0 ◦ j = e = e ◦ idX
δηλαδή j 0 ◦ j = idX .
Ομοίως j ◦ j 0 = idX , δηλαδή ο j είναι ισομορφισμός. 

Πρόταση. ΄Ενας εξισωτής που είναι επιμορφισμός είναι και ισομορφισμός.

Φιγυρε 0.0.13

Προοφ. f ◦ e = g ◦ e [e : εξισωτής]
⇒ f = g [e : επιμορφισμός]
⇒ f ◦ idA = g ◦ idA
⇒ ∃!k : A → X τέτοιο ώστε e ◦ k = idA
⇒ e ◦ k ◦ e = idA ◦ e = e = e ◦ idX
⇒ k ◦ e = idX [e : μονομορφισμός] 

Ορισμός. ΄Εστω f, g : A → B. ΄Ενας μορφισμός e : B → C καλείται συνεξ-


ισωτής (coequalizer) των f, g αν και μόνο εάν:
(1) e ◦ f = e ◦ g
(2) ∀e0 : B → B τέτοια ώστε e0 ◦ f = e0 ◦ g, ∃!k : C → D τέτοιο ώστε k ◦ e = e0 .

Φιγυρε 0.0.14

Ορισμός. Εφέλκυση (πυλλβαςκ) των μορφισμών f : A → C, g : B → C


καλείται ένα αντικείμενο P με μορφισμούς f 0 : P → B, g 0 : P → A τέτοιο ώστε
f ◦ g 0 = g ◦ f 0 και αν i : X → A, j : X → B είναι τέτοια ώστε f ◦ i = g ◦ j τότε
υπάρχει μοναδικό k : X → P τέτοιο ώστε i = g 0 ◦ k, j = f 0 ◦ k.
67
Φιγυρε 0.0.15

Φιγυρε 0.0.16

Παράδειγμα. Αντίστροφη εικόνα συνόλου:

Παράδειγμα. Τομή A, B ⊆ C

Φιγυρε 0.0.17

Παράδειγμα. Περιορισμένο γινόμενο

Φιγυρε 0.0.18

P op = {(a, b) ∈ A × B|f (a) = g (b)}


68
Παράδειγμα. ΄Εστω C κατηγορία με τελικό αντικείμενο 1. Αν το παρακάτω
διάγραμμα είναι εφέλκυση, τότε P = A × B, g = π1 , f = π2 .

Φιγυρε 0.0.19

Παράδειγμα. ΄Εστω τυχούσα κατηγορία C. Αν το παρακάτω διάγραμμα είναι


εφέλκυση, τότε e εξισωτής των f, g.

Φιγυρε 0.0.20

Λήμμα. Εφέλκυσης ΄Εστω το ακόλουθο μεταθετικό σχήμα.

Φιγυρε 0.0.21

(1) Αν τα εσωτερικά τετράγωνα I και II είναι εφελκύσεις, τότε κα το εξωτερικό


τετράγωνο είναι εφέλκυση.
(2) Αν το εξωτερικό τετράγωνο και το δεξί τετράγωνο είναι εφελκύσεις τότε και
το αριστερό τετράγωνο είναι εφέλκυση

Προοφ. ΄Ασκηση. 

Πρόταση. ΄Εστω εφέλκυση και g ομομορφισμός. Τότε g 0 μονομορφισμός.

Παράδειγμα. Επαλήθευση προγραμμάτων (Φλοψδ-Ηοαρε λογική).


(1) {x < 3} προσυνθήκη
(2) xx + 1
69
Φιγυρε 0.0.22

(3) x < 24 μετασυνθήκη,


ασθενέστερη προσυνθήκη: {x < 23}.
Για κάθε μετασυνθήκη υπάρχει ασθενέστερη προσυνθήκη.

Φιγυρε 0.0.23

Καθολικές Κατασκευές. Μια καθολική κατασκευή (universal con-


struction) περιλαμβάνει μια κλάση αντικειμένων και μορφισμών που τα συνοδεύουν,
τα οποία χαρακτηρίζονται από μια κοινή ιδιότητα και επιλέγει τα αντικείμενα τα οποία
είναι «τελικά» όταν αυτή η κλάση θεωρηθεί σαν κατηγορία.
Για παράδειγμα, ο ορισμός των γινομένων των A και B στη C περιγράφει μία
κλάση τριάδων (X, x1 , x2 ), με x1 : X → A και x2 : X → B .

Φιγυρε 0.0.24

Οι τριάδες (X, x1 , x2 ) μπορούν να θεωρηθούν ως αντικείμενα μιας κατηγορίας με


μορφισμούς m : (W, w1 , w2 ) → (X, x1 , x2 ), που είναι C−μορφισμοί m : W → X
τέτοιοι ώστε w1 = x1 ◦ m και w2 = x2 ◦ m .
΄Ενα τελικό αντικείμενο σε αυτή την κατηγορία είναι η τριάδα (P, p1 , p2 ):
Το αντικείμενο P γράφεται συνήθως A × B, ενώ τα βέλη p1 , p2 γράφονται π1 , π2 .
Ο μοναδικός μορφισμός από την τριάδα (W, w1 , w2 ) στην (A × B, π1 , π2 ), του οποίου
70
Φιγυρε 0.0.25

Φιγυρε 0.0.26

η ύπαρξη είναι εξασφαλισμένη από το γεγονός ότι (A × B, π1 , π2 ) είναι τελικό αντικεί-


μενο, γράφεται hw1 , w2 i.
Οι μορφισμοί που ορίζονται με μια καθολική κατασκευή ονομάζονται καθο-
λικοί, ή λέμε ότι ικανοποιούν την καθολική ιδιότητα.
Μία συν-καθολική κατασκευή (co-universal construction) έχει την ίδια
μορφή με μια καθολική κατασκευή, με τη διαφορά ότι τα βέλη αντιστρέφονται και
διαλέγει το ¨αρχικό’ - αντί του τελικού - αντικείμενο με την καθορισμένη ιδιότητα.

΄Ορια. Οι μέχρι τώρα έννοιες που εξετάσαμε - αρχικά και τελικά αντικείμενα,
εξισωτές, συν-εξισωτές, εφελκύσεις και εξωθήσεις - αποτελούν παραδείγματα καθο-
λικών κατασκευών. Αποτελούν δε ειδικές περιπτώσεις των πιο γενικών εννοιών του
ορίου και του συν – ορίου ενός διαγράμματος.

Ορισμός. ΄Εστω C μια κατηγορία και D ένα διάγραμμα στη C. ΄Ενας κώνος
(ςονε) του D είναι ένα C−αντικείμενο X και οι μορφισμοί fi : X → Di (ένας για
κάθε αντικείμενο Di στο D) τέτοιοι ώστε για κάθε μορφισμό g στο D, το ακόλουθο
διάγραμμα να είναι μεταθετικό.
Χρησιμοποιούμε το σύμβολο {fi : X → Di } για τους κώνους.

Ορισμός. ΄Ενα όριο για το διάγραμμα D είναι ένας κώνος {fi : X → Di } με την
ιδιότητα ότι εάν {fi0 : X 0 → Di } είναι ένας άλλος κώνος για το D τότε υπάρχει ένας
μοναδικός μορφισμός k : X 0 → X έτσι ώστε το διάγραμμα
να είναι μεταθετικό για κάθε Di ∈ D.
71
Φιγυρε 0.0.27

Φιγυρε 0.0.28

«Οι κώνοι για ένα διάγραμμα Δ αποτελούν μια κατηγορία».


΄Ενα όριο είναι ένα τελικό αντικείμενο σε αυτή την κατηγορία.

Παράδειγμα. ΄Εστω δύο C−αντικείμενα A και B, και έστω D το διάγραμμαμε


δύο κορυφές (A, B) και καθόλου ακμές ΄Ενας κώνος γιάυτό το διάγραμμα είναι ένα
αντικείμενο X με δύο μορφισμούς f και g της μορφής:

Φιγυρε 0.0.29

΄Ενας κώνος όριο των παραπάνω είναι ένα γινόμενο των A και B.

Παράδειγμα. ΄Εστω D το παρακάτω διάγραμμα με τρεις κόμβους και δύο ακμές.

Φιγυρε 0.0.30

΄Ενας κώνος για το D είναι ένα αντικείμενο R και τρεις μορφισμοί f 0 , g 0 και h
τέτοια ώστε το διάγραμμα του σχήματος 0.0.31 να είναι μεταθετικό.
Επειδή f ◦ g 0 = h = g ◦ f 0 , το διάγραμμα του σχήματος 0.0.31 είναι ισοδύναμο με
αυτό του σχήματος 0.0.32.
72
Φιγυρε 0.0.31.

Φιγυρε 0.0.32.

Ορισμός. ΄Ενας συν-κώνος (ςο-ςονε) για ένα διάγραμμα D μιας κατηγορίας


C είναι ένα C−αντικείμενο X μαζί με μια συλλογή από μορφισμούς fi : Di → X
τέτοιους ώστεfi ◦g = fi για κάθε g στο D. ΄Ενα συν-όριο (ςολιμιτ), ή αντίστροφο
όριο, για το D είναι τότε ένας συν-κώνος fi : Di → X με την συν-καθολική ιδιότητα
ότι για κάθε άλλο συν-κώνο fi0 : Di → X 0 υπάρχει ένας μοναδικός μορφισμός k : X →
X 0 τέτοιος ώστε το διάγραμμα

Φιγυρε 0.0.33

να είναι μεταθετικό για κάθε Di ∈ D.

Ορισμός. Διακριτές κατηγορίες είναι οι κατηγορίες με μόνους μορφισμούς


τους ταυτοτικούς.

Θεώρημα. (Ορίων) ΄Εστω D ένα διάγραμμα σε μια κατηγορία C, με V το


σύνολο των ακμών και E το σύνολο των κορυφών. Εάν κάθε E−οικογένεια από
αντικείμενα στη C έχει ένα γινόμενο και κάθε ζεύγος μορφισμών στη C έχει έναν
εξισωτή, τότε το D έχει ένα όριο.
73
Εκθετικότητα. Η έννοια της εκθετικότητας δίνει τη θεωρητική ερμηνεία του
ςυρρψινγ (μια συνάρτηση με πεδίο ορισμού ένα καρτεσιανό γινόμενο A × B ανάγεται
σε μια συνάρτηση που έχει πεδίο ορισμού το A ή το B).
Εάν τα A και B είναι σύνολα, η συλλογή

B A = {f : A → B}

όλων των συναρτήσεων από το A στο B είναι ένα σύνολο.


Εάν θέλουμε να χαρακτηρίσουμε το B A με τη βοήθεια μορφισμών, τότε έχουμε
ότι σε κάθε B A αντιστοιχεί ένας μορφισμός

eval : B A × A

→ B
eval (f, a) = f (a)

Δηλαδή, για f : A → B και a ∈ A συνεπάγεται ότι f (a) ∈ B. Η eval ικανοποιεί


την καθολική ιδιότητα μεταξύ όλων των συναρτήσεων g : (C × A) → B. Για κάθε
g, υπάρχει ακριβώς μια συνάρτηση curry (g) : C → B A τέτοια ώστε το ακόλουθο
διάγραμμα να είναι μεταθετικό:

Φιγυρε 0.0.34

gc (a) = g (c, a)
curry (g) (c) = gc
Δηλαδή για κάθε (c, a) ∈ C × A ισχύει:

(eval ◦ (curry (g) × idA )) (c, a) = eval (curry (g) (c) , a)


= eval (g, a)
= gc (a)
= g (c, a)

΄Ετσι το διάγραμμα είναι μεταθετικό.

Ορισμός. ΄Εστω C μια κατηγορία με γινόμενα A και B αντικείμενα στη C. ΄Ενα


αντικείμενο B A είναι ένα εκθετικό αντικείμενο (εξπονεντιαλ οβθεςτ) εάν
υπάρχει ένας μορφισμός evalAB : (B A × A) → B τέτοιος ώστε για κάθε αντικείμενο
74
C και μορφισμό g : (C × A) → B υπάρχει ένας μοναδικός μορφισμός curry (g) : C →
B A που κάνει το ακόλουθο διάγραμμα μεταθετικό:

Φιγυρε 0.0.35

δηλαδή υπάρχει μοναδικό curry (g) τέτοιο ώστε:

evalAB ◦ (curry (g) × idA ) = g

Ορισμός. Μια καρτεσιανά κλειστή κατηγορία είναι μια κατηγορία με:


• τελικό αντικείμενο
• (δυαδικό) γινομενο
• εκθετικότητα

Παράδειγμα. Η κατηγορία Set είναι καρτεσιανά κλειστή, με B A = Set(A, B).


Η κατηγορία CPO διατάξεων και συνεχών συναρτήσεων είναι καρτεσιανά κλειστή,
με B A το μερικά διατεταγμένο σύνολο των συνεχών συναρτήσεψν από το A στο B.

Συναρτητές.

Ορισμός. ΄Εστω B1 και B2 δύο κατηγορίες. Τότε, ένας συναρτητής (φυνςτορ)


F : B1 → B2 αποτελείται από:
(1) μια απεικόνιση FO : |O1 | → |O2 |, που στέλνει κάθε o1 από το B1 στο
FO (o1 ) του B2 ,
(2) και μια απεικόνιση FA : |I1 | → |I2 |, που στέλνει κάθε μορφισμό f : o1 → o2
του B1 σε ένα μορφισμό FA (f ) : FA (o1 ) → FA (o2 ) του B2 , έτσι ώστε:
(α) FA (1o ) = 1Fo (o) και
(β) FA (g ◦ f ) = FA (g)◦FA (f ), όταν ορίζεται η σύνθεση μορφισμών g ◦f .

Παράδειγμα. Δοθέντος ενός συνόλου S, μπορούμε να σχηματίσουμε το σύνολο


List(S) από πεπερασμένες λίστες με στοιχεία από το S. Η απεικόνιση List μπορεί να
θεωρηθεί ως συνάρτηση που στέλνει αντικείμενα από το Set στο Set (στέλνει σύνολα
σε σύνολα από πεπερασμένες λίστες συμβόλων). Επίσης, κάθε συνάρτηση f : S → S 0
αντιστοιχεί σε μια συνάρτηση List(f ) : List(S) → List(S 0 ) η οποία δοθείσης μιας λίσ-
τας L = [s1 , s2 , . . . , sn ], την απεικονίζει στην List(f )(L) = [f (s1 ), f (s2 ), . . . , f (sn )].
75
Η Κατηγορική Λογική κατά Θ.Λαμβεκ. Η κατηγοριακή λογική κατά
J. Lambek αποτελεί μια από τις πιο γενικές θεωρίες απόδείξεων. Ασχολείται με
λογικές παραγωγές (δεδυςτιονς) της μορφής : A1 A2 . . . An → An+1 , όπου οι τύποι
(φορμυλας) A1 . . . An (δηλαδή οι υποθέσεις) παράγουν λογικά το An+1 . Παρακάτω
παρουσιάζεται ένα σύστημα κανόνων λογικής παραγωγής τύπου Γεντζεν, με τη βοή-
θεια της κατηγοριακής λογικής του Θ.Λαμβεκ.

Ορισμός. ΄Ενα πολυγράφημα (μυλτιγραπη αποτελείται από:


(1) μια κλάση A από βέλη (αρροως), που θα τα καλούμε επίσης λογικές παραγ-
ωγές,
(2) μια κλάση O από αντικείμενα (οβθεςτς), που θα τα καλούμε επίσης τύπους
και
(3) δύο απεικονίσεις:
(α) θ0 : A → O∗
(β) θ1 : A → O
Η θ0 ονομάζεται αρχή (δομαιν) και η θ1 τέλος (ςοδομαιν). Το O∗ αποτελείται
από λίστες της μορφής Ai1 Ai2 . . . Aik , όπου Ai1 Ai2 . . . Aik ∈ O. ΄Ετσι, για κάθε βέλος
του πολυγραφήματος
f : A1 A2 . . . An → An+1
έχουμε ότι
θ0 (f ) = A1 A2 . . . An και θ1 (f ) = An+1

Ορισμός. ΄Ενα σύστημα λογικής παραγωγής (deductive system) κατά


J. Lambek είναι ένα πολυγράφημα, τέτοιο ώστε για κάθε αντικείμενο A υπάρχει ένας
ταυτοτικός μορφισμός 1A : A → A και για κάθε δύο μορφισμούς f : Θ ff:ΓAA→B
i :ΓA→B → A

και g : ΓA∆ → B, υπάρχει ένας μορφισμός g (f ) : ΓΘ∆ → B έτσι ώστε να ισχύει:


f : Θ → Ag : ΓA∆ → B
g (f ) : ΓΘ∆ → B
Η παραπάνω ιδιότητα καλείται τομή κατά Gentzen.

Εάν ένα λογικό σύστημα κατά Λαμβεκ εμπλουτιστεί και με τους εξής τρεις κανόνες:
f :ΓAB∆→C
(1) f i :ΓBA∆→C (εναλλαγή - ιντερςηανγε)
f :ΓAA→B
(2) f i :ΓA→B (συστολή - ςοντραςτιον)
f :Γ→B
(3) f i :ΓA→B (εκλέπτυνση - τηινινγ)

τότε καλείται σύστημα κατά Γεντζεν.

Ο Αλγεβρικός Προγραμματισμός. Είναι ιδιαίτερα επιθυμητό, δεδομένης


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

Η παραπάνω ιδέα οδήγησε τους J. Goguen και R.Burstall να εισάγουν την αφηρημένη
θεωρία μοντέλων στην πληροφορική, υπό τη μορφή της θεωρίας θεσμών (theory of in-
stitutions). Η θεωρία θεσμών προτείνει μια γενική έννοια λογικού συστήματος η οποία
μας επιτρέπει την ανάπτυξη μιας σειράς εφαρμογών της πληροφορικής ανεξάρτητα από
ένα συγκεκριμένο λογικό σύστημα. Η θεωρία θεσμών προτείνει καταρχήν ένα αλ-
γεβρικό ορισμό της αφηρημένης έννοιας του λογικού συστήματος. Οι θεσμοί είναι
δηλαδή μια αλγεβρική συνεισφορά στο ανοικτό φιλοσοφικό ζήτημα του ορισμού μιας
έννοιας αφηρημένου λογικού συστήματος. Στη φιλοσοφία βέβαια, η πιο διαδεδομένη
απάντηση στο παραπλήσιο ερώτημα τι είναι η λογική· είναι εκείνη που υποστηρίζει πως
λογική είναι η επιστήμη που έχει ως αντικείμενο μελέτης το συλλογισμό και τους νό-
μους της λογικής παραγωγής (deduction). ΄Αλλες απαντήσεις είναι πιο ειδικές δίνοντας
μεγαλύτερη έμφαση σε συγκεκριμένες συλλογιστικές πρακτικές ή ορισμούς λογικών
συστημάτων, ή υποστηρίζουν πως η λογική συνδέεται με πτυχές του φαινομένου της
αντίληψης και της συνείδησης (ψυχολογισμός - psychologism).
Πολλές φορές στην πληροφορική υπάρχει η ανάγκη χρησιμοποίησης περισσότερων
από ένα λογικών συστημάτων ταυτόχρονα, κατά τρόπο παράλληλο και οργανωμένο σ΄
αυτό που διαισθητικά αντιλαμβανόμαστε σαν δομή ή σύστημα. Ειδικά στην περίπτωση
των προδιαγραφών είναι επιθυμητή η χρησιμοποίηση περισσότερων από ένα λογικών
συστημάτων μια και έτσι μπορούν να αξιοποιηθούν τα ξεχωριστά πλεονεκτήματα που
έχει το καθένα, με σκοπό τη βελτιστοποίηση της προδιαγραφής του συστήματος
που μας ενδιαφέρει. Ακόμα, τα οργανωμένα με αυτό τον τρόπο λογικά συστήματα
μας επιτρέπουν και τη δυνατότητα ορθής μετάφρασης προδιαγραφών από ένα λογικό
σύστημα σε ένα άλλο. Η θεωρία θεσμών προσφέρει κατάλληλο μαθηματικό πλαίσιο
για την αξιοποίηση από την τεχνολογία λογισμικού περισσοτέρων του ενός λογικών
συστημάτων.
Συνοψίζοντας, μπορεί να διακρίνει κανείς τρεις τουλάχιστον φάσεις στη σχέση
λογικής και πληροφορικής:

(1) Πρώτη φάση: Οι έννοιες του αλγορίθμου, οι άλγεβρες του Βοολε, η λ-


ορισιμότητα, οι μηχανές Τυρινγ και τα αυτόματα του JohnvonN eumann
παίζουν ξεχωριστό ρόλο.
(2) Δεύτερη φάση: Η πληροφορική αξιοποιεί συγκεκριμένα λογικά συστήματα
όπως αυτά της λογικής του Horn, της εξισωτικής λογικής, του λ-λογισμού,
κ.τ.λ.
77
(3) Τρίτη φάση: Εδώ τον κύριο ρόλο παίζει μια αφηρημένη έννοια λογικού
συστήματος (π.χ. ένας θεσμός). Τα συγκεκριμένα λογικά συστήματα αν-
τιμετωπίζονται σαν ειδικές περιπτώσεις αυτής της αφηρημένης έννοιας, ενώ
οι εφαρμογές διατυπώνονται στη μέγιστη δυνατή γενικότητά τους.
Η Θεωρία Θεσμών. Η θεωρία θεσμών αποτελεί γενίκευση της αφηρημένης θεω-
ρίας μοντέλων του Barwise με καταρχήν στόχο να καλύψει όλο το εύρος των λογικών
συστημάτων που χρησιμοποιούνται στην πληροφορική. ΄Ομως, παρά τη γενετική σχέση
τους, η αφηρημένη θεωρία μοντέλων και η θεωρία θεσμών κάθε άλλο παρά έχουν
την ίδια φιλοσοφία. Πιο συγκεκριμένα, τα βασικά συστατικά στοιχεία ενός λογικού
συστήματος (συντακτικό, σημασιολογία, σχέση αλήθειας) σύμφωνα με την αφηρημένη
θεωρία μοντέλων κινούνται μέσα στο πνεύμα της πρωτοβάθμιας ή της δευτεροβάθμιας
λογικής. Αντίθετα, τα ίδια στοιχεία αντιμετωπίζονται από τη θεωρία θεσμών στο
επίπεδο γενικότητας της θεωρίας κατηγοριών.
• Η παρατήρηση ότι
πολλές από τις πιο σημαντικές εφαρμογές της πληροφορικής είναι ανεξάρτητες
από κάθε συγκεκριμένο λογικό σύστημα
• η ανάγκη ορθών μεταφράσεων των προτάσεων ενός λογικού συστήματος σε
προτάσεις ενός άλλου συστήματος
• ο μεγάλος αριθμός λογικών συστημάτων που χρησιμοποιείται από την πληρο-
φορική και η συνακόλουθη ανάγκη οργάνωσης και ταξινόμησής τους μέσα
σε ένα ενιαίο λογικό πλαίσιο
• η ανάγκη για σύνθεση νέων λογικών συστημάτων από τη συνένωση δύο ή
και περισσότερων άλλων παλαιοτέρων, όπως έχουν αποδείξει ότι απαιτούν οι
ανάγκες της πληροφορικής.
Οι θεσμοί προσπαθούν να συμπεριλάβουν ως ειδικές περιπτώσεις όλα τα λογικά
συστήματα που χρησιμοποιούνται στην πληροφορική καθώς και όλα εκείνα που είναι
πιθανόν να χρησιμοποιηθούν στο μέλλον.

*ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΤΗΣ ΑΛΓΕΒΡΑΣ ΠΟΛΛΑΠΛΩΝ ΤΥΠΩΝ

Καθολική ΄Αλγεβρα.
ε αυτή την υπό-ενότητα θα παρουσιάσουμε τις βασικές αρχές της Καθολικής ΄Αλ-
γεβρας (GeneralAlgebra) [11, 12, 13], που είναι η βάση της ΄Αλγεβρας με πολλούς
Τύπους και Διάταξη (OrderSortedAlgebra) .
Μια άλγεβρα Birkhof f αποτελείται από ένα σύνολο (μη κενό), που καλείται
φορέας της άλγεβρας και από μία οικογένεια από συναρτήσεις ορισμένες πάνω σε
καρτεσιανά γινόμενα του φορέα και τιμές στο φορέα. Πιο συγκεκριμένα:
78
Ορισμός. Μία άλγεβρα Birkhof f είναι κάθε ζεύγος (A, B), όπου A είναι ένα
μη κενό σύνολο και B είναι μία οικογένεια συναρτήσεων της μορφής

f : A × A × ... × A → A

Πολλές από τις πιο γνωστές αλγεβρικές δομές ικανοποιούν τον παραπάνω ορισμό,
όπως οι ομάδες, τα σώματα, οι δακτύλιοι και οι ημιομάδες. Από την άλλη μεριά όμως
είναι φανερό ότι άλλες αλγεβρικές δομές, για παράδειγμα τα αυτόματα (ακολουθιακές
μηχανές), ή τα modules (“διανυσματικοί χώροι πάνω σε δακτύλιο”) δεν είναι άλγεβρες.
Ακολουθούν μερικοί προκαταρκτικοί ορισμοί.

Ορισμός. ΄Εστω S ένα μη κενό σύνολο (το σύνολο των τύπων). Ονομάζουμε
τότεS−σύνολο κάθε οικογένεια συνόλων της μορφής {As |s ∈ S}, όπου σε κάθε
στοιχείο s του S αντιστοιχεί και ένα σύνολο A.

Παράδειγμα. ΄Εστω S = {N at, Real}, όπου N at είναι το σύνολο των φυσικών


αριθμών (Νατυραλ Νυμβερς) και Real το σύνολο των πραγματικών αριθμών (Ρεαλ
Νυμβερς) (η πιο συνήθης περίπτωση στην καθολική άλγεβρα είναι το S να αποτελείται
από ονόματα ή συντμήσεις ονομάτων γι’ αυτό και πολλές φορές ονομάζεται και σύνολο
ονομάτων) και
AN at = N (το σύνολο των φυσικών αριθμών)
BReal = R (το σύνολο των πραγματικών αριθμών)

Ορισμός. Μια S−συνάρτηση F : A → B μεταξύ δύο S−συνόλων A και B,


είναι μια οικογένεια fs |s ∈ S από συναρτήσεις της μορφής fs : As → Bs .
΄Εστω δύο S−συναρτήσεις F : A → B και g : B → C. Ορίζουμε σαν σύνθεσή
τους την οικογένεια συναρτήσεων fs ◦ gs |s ∈ S όπου fs ◦ gs είναι η συνήθης σύνθεση
των συναρτήσεων fs και gs . Η ταυτοτική S−συνάρτηση 1A : A → A ορίζεται ως
ένα σύνολο 1As |s ∈ S από ταυτοτικές συναρτήσεις. Μία S−συνάρτηση f : A → B
λέγεται (1 − 1) (αντ. επί) εάν κάθε fs : As → Bs είναι (1 − 1) (αντ. επί).

Ορισμός. Καλούμε S−χαρακτηριστική (S−σορτεδ σιγνατυρε) Σ κάθε S ×


S ∗−οικογένεια όπου S∗ είναι το σύνολο που αποτελείται από όλες τις (πεπερασμένες)
λίστες στοιχείων του S (δηλαδή w = s1 . . . sn, όπου s1, . . . , sn ∈ S). Τα στοιχεία
σw,s των Σhw,si ονομάζονται συναρτησιακά σύμβολα τύπου hW, Si. Τα στοιχεία
των Σh[,]Si (όπου [, ] η κενή λίστα) ονομάζονται σταθερές τύπου s.

Ορισμός. ΄Εστω Σ μια S−χαρακτηριστική. Τότε μια Σ−άλγεβρα (many−sortedalgebra)


A αποτελείται από ένα S−σύνολο {As |s ∈ S} (τα στοιχεία του καλούνται φορείς της
άλγεβρας) και μια S ∗ ×S−οικογένεια a = {aw,s |w ∈ S∗, s ∈ S} όπου aw,s είναι
απεικονίσεις της μορφής
Aw,s : Σhw,si → [Aw As ]
79
(οι απεικονίσεις αυτές λέγονται και ερμηνείες των συναρτησιακών συμβόλων) και
Aw = As1 × . . . × Asn όπουw = s1 . . . sn, ενώ [Aw → As ] είναι το σύνολο όλων
των συναρτήσεων από το Aw στο A. Θα συμβολίσουμε με σA το ahw,si (σ).

Παράδειγμα. Αυτόματα
΄Ενα αυτόματο αποτελείται από τρία σύνολα X, S, Y , τα οποία καλούμε σύνολο
εισόδου, σύνολο καταστάσεων και σύνολο εξόδου αντίστοιχα, ένα στοιχείο
s0 ∈ S που καλείται αρχική κατάσταση και δύο συναρτήσεις f : X × S → S και
g : S → Y τις οποίες ονομάζουμε συνάρτηση μεταφοράς και συνάρτηση
εξόδου αντίστοιχα.
΄Εστω S AU T = {Input (Είσοδος) , State(Κατάσταση) , Output (΄Εξοδος) } το
σύνολο των ειδών. Τότε η S AU T −χαρακτηριστική ΣAU T ορίζεται ως εξής:

ΣAU T
h[,],Statei = {S0 } (Η S0 καλείται αρχική κατάσταση)

ΣAU T
hInput,State,Statei = {f }

ΣAU T
hState,Outputi = {g} και Σw,s = ∅ για όλα τα άλλα w ∈ S
AU T
και s ∈ S AU T

Συνεπώς τα αυτόματα είναι ΣAU T −άλγεβρες.

Παράδειγμα. M odules
΄Εστω ΣM OD είναι μία S M OD −χαρακτηριστική με S M OD = {∆1 , ∆2 }, όπου
∆1 :Δακτύλιος και ∆2 :Διανύσματα και

ΣM OD
h∆1 ,∆2 i = {+, −, 0, ×, 1} ,

ΣM OD
h∆1 ,∆2 i = {+, −, 0} ,

ΣM OD
h∆1 ,∆2 ,∆3 i = {ν} , (βαθμωτό γινόμενο)

Τότε ένα module πάνω στο δακτύλιο R είναι μια ΣM OD −άλγεβρα M όπου M∆1 =
R και M∆2 = V (ένα σύνολο διανυσμάτων).

΄Αλλα παραδείγματα αλγεβρών πολλαπλών τύπων είναι τα γραφήματα (γραπης), οι


φυσικοί αριθμοί κατά Πεανο, τα μονοειδή δρώντα επί συνόλων και άλλα.

Σχόλιο. Εάν A και B είναι Σ−άλγεβρες, τότε A ⊆ B σημαίνει As ⊆ Bs για όλα


τα s ∈ S.

Ορισμός. Μια Σ−άλγεβρα B θα καλείται υποάλγεβρα της Σ−άλγεβρας A εάν


A ⊆ B για όλα τα s ∈ S και για κάθε σ ∈ Σ ισχύει σA (a1 , . . . , an ) = σB (a1 , . . . , an )
όπου ai ∈ Asi με i = 1, . . . , n.

Ορισμός. ΄Εστω A και B δύο Σ−άλγεβρες, τότε ένας Σ−ομομορφισμός h :


A → B είναι μια οικογένεια συναρτήσεων {hs : As → Bs }s∈S τέτοια ώστε
80
(1) Εάν σ ∈ Σh[s],Si τότε hs (σA ) = σB , και
(2) Εάν σ ∈ Σhs1 ...sn ,si και ha1 , . . . , an i ∈ As1 × . . . × Asn τότε

hs [σA (a1 , . . . , an )] = σB [hs1 (a1 ) , . . . , hsn (an )]

΄Ενας Σ−ομομορφισμός h : A → B θα καλείται (1Γ1) (αντ. επί) όταν κάθε


hs : As → Bs είναι (1Γ1) (αντ. επί) για κάθε s ∈ S.

Η σύνθεση δύο ομομορφισμών είναι επίσης ομομορφισμός. Μάλιστα η σύνθεση


ομομορφισμών είναι προσεταιριστική. Ο ταυτοτικός ομομορφισμός από μια Σ−άλγεβρα
στον εαυτό της είναι η ταυτοτική συνάρτηση από το φορέα A στον εαυτό του.
Είναι προφανές πως μια κλάση |C| αποτελούμενη από Σ−άλγεβρες μαζί με την
κλάση όλωνΣ−ομομορφισμών μεταξύ αυτών έχουν τη δομή κατηγορίας. Ας ονομά-
σουμε αυτή την κατηγορία C.

Ορισμός. Μια Σ−άλγεβρα A καλείται αρχική (ινιτιαλ) σε σχέση με μια κατη-


γορία Σ−πολυειδών αλγεβρών C εάν και μόνο εάν για κάθε Σ−πολυειδή άλγεβρα B
της C υπάρχει ένας και μόνο ένας ομομορφισμός h : A → B.

*Η Κατασκευή της ΄Αλγεβρας των Λέξεων


στω μια S−χαρακτηριστική Σ. Τότε ορίζουμε τα σύνολα TΣ,S όλων των Σ−όρων
τύπου s ως εξής:
(1) Σh[s],Si ⊆ TΣ,S για κάθε s ∈ S και
(2) σ (t1 , . . . , tn ) ∈ TΣ,S για κάθε σ ∈ ΣS1 ...Sn ,S και ti ∈ TΣ,S για i =
1, 2, . . . , n.
Η S−οικογένεια T = hTΣ,S |s ∈ Si συνιστά μια Σ−άλγεβρα που καλείται άλ-
γεβρα λέξεων ή σύμπαν κατά Herbrand. Οι συναρτήσεις ερμηνείας aw,s για
w
κάθε σ ∈ Σ και w = [] στέλνουν τις n−άδες (t1 , . . . , tn ) από το (TΣ ) στον όρο
σ (t1 , . . . , tn ) ∈ T . Στην περίπτωση δε που w = [] στέλνουν τα σ ∈ Σ στο σύμβολο
σ ∈ T.

Το ακόλουθο θεώρημα έχει ιδιαίτερη σημασία.

Θεώρημα. Η άλγεβρα TΣ είναι αρχική στην κατηγορία AlgΣ όλων των Σ−αλγεβρών.
S [n] [n]
Προοφ. Η S−οικογένεια T γράφεται και ως εξής: TΣ = TΣ , όπου τα TΣ
n
ορίζονται αναδρομικά ως εξής:
[0]

TΣ = Σh[,],Si |s ∈ S
[n+1] [0]
TΣ = TΣ ∪
Dn   o E
[n]
σ (t1 , . . . , tn ) |σ ∈ ΣS1 ...Sn ,S , ti ∈ TΣ | i = 1, . . . , n, s1 , . . . , sn ∈ S |s ∈ S
s


81
΄Εστω μία τυχαία Σ−άλγεβρα A και δύο ομομορφισμοί h, h0 : TΣ → A. Θα
δείξουμε ότι h = h0 δια της επαγωγής επί του n. ΄Οταν n = 0 οι ομομορφισμοί h και
h0 ταυτίζονται επειδή h (σ) = σ = h0 (σ).
[n]
Ας υποθέσουμε ότι οι ομομορφισμοί h και h0 ταυτίζονται επί του TΣ . Τότε
επειδή
h (σ (t1 , . . . , tn )) = σ (h0 (t1 ) , . . . , h0 (tn )) = h0 (σ (t1 , . . . , tn )) ,
[n+1]
οι ομομορφισμοί h και h0 ταυτίζονται και επί του TΣ . Συνεπώς οι h και h0
ταυτίζονται επί του TΣ .
Η ύπαρξη του ομομορφισμού h εξασφαλίζεται πάλι δια της επαγωγής επί του n.
[0]
Είναι προφανές ότι μπορούμε να ορίσουμε τον h τόσο επί του TΣ σαν h (σ) = σ όσο
[n+1]
και επί του TΣ αφού h (σ (t1 , . . . , tn )) = σ (h (t1 ) , . . . , h (tn )) και έχουμε υποθέσει
[n]
λόγω επαγωγής ότι ο h έχει ήδη ορισθεί επί του TΣ .

Η παρακάτω πρόταση έχει οδηγήσει στον ορισμό της ιδιαίτερα σημαντικής για
την πληροφορική έννοιας του αφηρημένου τύπου δεδομένων (abstractdatatype). Ο
ορισμός οφείλεται στην ομάδα ADJ.

Πρόταση. ΄Εστω δύο Σ−άλγεβρες A και A0 . Εάν και οι δύο είναι αρχικές σε
σχέση με την κατηγορία AlgΣ όλων των Σ−αλγεβρών, τότε οι A και A0 είναι ισό-
μορφες. Εάν μια άλγεβρα A00 στην AlgΣ είναι ισόμορφη με μια άλγεβρα A που είναι
αρχική σε σχέση με την AlgΣ, τότε και η A00 θα είναι επίσης αρχική.

Προοφ. Αφού οι άλγεβρες A και A0 είναι αρχικές σε σχέση με την κατηγορία


AlgΣ όλων των Σ−αλγεβρών, έπεται ότι υπάρχουν δύο (μοναδικοί) ομομορφισμοί
h : A → A0 και h0 : A0 → A . Κατά συνέπεια και εξαιτίας της μοναδικότητας τους
h : h0 = 1A : A → A. Ομοίως h0 = 1A0 : A0 → A0 . ΄Αρα ο h είναι ένας ισομορφισμός.
΄Εστω h : A → A0 ένας ισομορφισμός με αντίστροφο g’ : A00 → A και A αρχική
στην AlgΣ.
΄Εστω A0 μια τυχαία Σ−πολυειδής άλγεβρα. Επειδή η A είναι αρχική έπεται ότι
υπάρχει h : A → A0 και κατά συνέπεια έχουμε ένα ομομορφισμό h00 = h◦g : A00 → A0 .
Εάν υπάρχει ομομορφισμός h0 : A00 → A τότε h0 ◦ f : A → A00 και h0 ◦ f = h.
Επίσης h00 ◦ f = h. Κατά συνέπεια h0 ◦ f = h00 έτσι ώστε h00 ◦ f ◦ g = h00 άρα h = h0 .
Δηλαδή η A00 είναι αρχική.


Είναι προφανές ότι οι ισομορφισμοί ορίζουν μια σχέση ισοδυναμίας επί της κλάσης
των Σ−αλγεβρών. Καλούμε κλάση ισομορφισμού Σ−αλγεβρών κάθε κλάση ισο-
δυναμίας Σ−αλγεβρών που προκύπτει από τους ισομορφισμούς.

Ορισμός. Καλούμε αφηρημένο τύπο δεδομένων (αβστραςτ δατα τψπε)


κάθε κλάση ισομορφισμού που περιλαμβάνει μια αρχική άλγεβρα από την κατηγορία
AlgΣ των Σ−αλγεβρών.
82
*΄Αλγεβρα με πολλούς Τύπους και Διάταξη
άλγεβρα με πολλούς τύπους και διάταξη (ordersortedalgebra), [1, 2, 3, 4, 5]
αποτελεί τη βάση για τον ορισμό της κρυφής άλγεβρας (ηιδδεν αλγεβρα) που είναι ο
φορμαλισμός των τεχνικών αλγεβρικών προδιαγραφών. Συγκεκριμένα η κρυφή άλ-
γεβρα αποτελεί μια επέκταση της άλγεβρας με πολλούς τύπους και διάταξη η οποία
επτιρέπει τον διαχωρισμό μεταξύ τύπων δεδομένων και καταστάσεων μίας αφηρημένης
μηχανής, επιτρέποντας έτσι τον ορισμό μίας νέας έννοιας ικανοποιησιμότητας που
διευκολύνει σε μεγάλο βαθμό - όπως θα δούμε - την επαλήθευση των προδιαγραφών,
επιτρέπει την ιεραρχική σύνθεση προδιαγραφών και αποδείξεων και τέλος επιτρέπει τη
φυσική έκφραση του μη-ντετερμινισμού.
Η ΄Αλγεβρα με διάταξη και Τύπους (OrderSortedAlgebra) αποτελεί μία γενίκευση
της γενικής άλγεβρας που είδαμε στη προηγούμενη υποενότητα. Η γενίκευση αυτή
επιτυγχάνεται με την εισαγωγή μίας σχέσης διάταξης στους τύπους (sorts) της γενικής
άλγεβρας. Μέσω αυτής της γενίκευσης μπορούμε να δώσουμε τυπική σημασιολογία
σε τύπους δεδομένων με πολλαπλά επίπεδα κληρονομικότητας (υπο την έννοια της
κληρονομικότητας του αντικειμενοστρεφούς προγραμματισμού) καθώς και διάφορες
μορφές πολυμορφισμού, να ορίσουμε μή ολικούς τελεστές (partialoperators) και
σημασιολογία με βάση την αναγραφή όρων.

Παράδειγμα. [Η χαρακτηριστική της Λίστας Ακεραίων] Υποθέτουμε ότι ο τύπος


των ακεραίων (Int) είναι ήδη ορισμένος. Ορίζουμε τον List για λίστες και τον
υποτύπο (συβσορτ) N eList για τις μη-κενές λίστες έτσι ώστε να μπορέσουμε να
ορίσουμε τους κλασσικούς τελεστές, κεφαλή(head) και ουρά(tail), ως ολικούς αντί
για μερικούς τελεστές. ΄Εχουμε λοιπόν ότι S = {Int, N eList, List} και ορίζουμε
την < ώς Int < N eList < List. Μπορούμε τώρα να ορίσουμε τους τελεστές ως
F = {concat, head, tail} όπου head ∈ FN eList→Int και tail ∈ FN eList→List .

Μία χαρακτηριστική Σ θα καλείται κανονική αν και μόνο αν για κάθε σ ∈ Fw1 →s1
αν w0 ≤ w1 τότε υπάρχει ένα ελάχιστο < w, s >∈ S ∗ × S τέτοιο ώστε w0 ≤ w και
σ ∈ Fw→s . Δεδομένης μιας χαρακτηριστικής (S, F, ≤) μια (S, F, ≤)-άλγεβρα Α, είναι
απλά μια (S, F )-άλγεβρα για την οποία ισχύουν οι ακόλουθες συνθήκες:
• Αν s ≤ s0 τότε As ⊆ As0
• Αν σ ∈ Σw1 →s1 ∩ Σw2→s2 και w1 ≤ w2 τότε Aσ : Aw1 → As1 είναι ίσο με
το Aσ : Aw2 → As2 πάνω στο w1 .
΄Οπως και στη περίπτωση χωρίς διάταξη έτσι και εδώ θα ορίσουμε τώρα τα μοντέλα
μας, δηλαδή τις άλγεβρες, ώστε να ερμηνεύσουμε τα σύμβολα τελεστών με πραγματικές
συναρτήσεις και τους τύπους με σύνολα.
83
΄Εστω (S, F, ≤) είναι μια χαρακτηριστική. Τότε μία (S, F, ≤)-άλγεβρα Α είναι
και πάλι μία οικογένεια από σύνολα {As |s ∈ S} τα οποία καλούμε φορείς του Α και
μία οικογένεια συναρτήσεων {Aσ : Aw → As |σ ∈ Fw→s } όπου w = s1 . . . sn και
Aw = As1 × Asn , τέτοια ώστε:
(1) αν s ≤ s0 τότε As ⊆ As0
(2) αν σ ∈ Σw1 →s1 ∩ Σw2 →s2 και w1 ≤ w2 τότε η Aσ : Aw1 → Aw2 ταυτίζεται
με την Aσ : Aw2 → As2 στο Aw1 .
Με παρόμοιο τρόπο θα επεκτείνουμε τώρα και τους ορισμούς για τους ομομορφισμούς
ανάμεσα σε δύο άλγεβρες. ΄Ενας (S, ≤, F )-ομομορφισμός ανάμεσα σε δύο άλγεβρες
Α και Β, h : A → B, ορίζεται απλά ώς ένας (S, F )-ομομορφισμός ο οποίος ικανοποιεί
την ακόλουθη συνθήκη μονοτονίας:
• Αν s ≤ s0 και a ∈ As τότε ισχύει ότι hs (a) = h0s (a)
Και πάλι οι (S, F, ≤)-άλγεβρες ως αντικείμενα και οι (S, F, ≤)-ομομορφισμοί ως βέλη
ορίζουν μία κατηγορία η οποία συμβολίζεται με OSAlg(S,F,≤) . Οι άλγεβρες των όρων
ορίζονται με παρόμοιο τρόπο και στην ΑΔΤ: ΄Εστω λοιπόν μια χαρακτηριστική Σ =
(S, F, ≤) η άλγεβρα των Σ-όρων TΣ ορίζεται ως η ελάχιστη οικογένεια {TΣ,s |s ∈ S}
η οποία ικανοποιεί τις ακόλουθες συνθήκες:
• F[]→s ⊆ TΣ,s για κάθε s ∈ S
• TΣ,s ⊆ TΣ,s0 αν s ≤ s0
• Αν σ ∈ Fw→s και ti ∈ TΣ,si με w = s1 . . . sn τότε σ(t1 . . . tn ) ∈ TΣ,s .
• για κάθε σ ∈ Fw→s ορίζουμε την Tσ : TΣ,w → TΣ,s που απεικονίζει τα
t1 . . . tn στη (συμβολοακολουθία) σ(t1 . . . tn )
Είναι προφανές ότι η TΣ είναι μία ΑΔΤ. ΄Ομως στη γενική περίπτωση δεν ισχύει ότι
S
TΣ,s = TΣ,s0 ούτε καν ότι TΣ,s = s≤s0 TΣ,s . Επίσης είναι πιθανόν ότι TΣ,s = ∅
για κάποιο τύπο s, δηλαδή να μην ορίζονται επίπεδοι όροι γι΄ αυτόν τον τύπο. Το
ακόλουθο αποτέλεσμα αποτελεί γενίκευση αυτού της γενικής άλγεβρας με πολλούς
τύπους.

Θεώρημα. Αν Σ = (S, F, ≤) είναι μία χαρακτηριστική τότε η TΣ αποτελεί μια


πρωταρχική ΑΔΤ Σ-άλγεβρα.

Ο ορισμός της συνάρτησης απονομής παραμένει ο ίδιος με αυτόν της γενικής


άλγεβρας χωρίς διάταξη. Ο ορισμός μιας εξίσωσης στην ΑΔΤ τροποποιείται ελάχιστα
εξαιτίας της ταξινόμησης των τύπων. ΄Ετσι μία εξίσωση χωρίς συνθήκες μίας (S, F, ≤)-
χαρακτηριστικής ορίζεται ως μία τριάδα X, t, t0 , την οποία συμβολίζουμε ως (∀X)t =
t0 , τέτοια ώστε τα t και t0 να συνδέονται με μία σχέση υποτύπου, δηλαδή είτε t ≤ t0 είτε
t0 ≤ t. Ομοίως επεκτείνεται και ο ορισμός στη περίπτωση των εξισώσεων υπό-συνθήκη
καθώς και της ικανοποιησιμότητας μίας εξίσωσης από μια άλγεβρα. Παρόλο που οι
84
ορισμοί αυτοί είναι διαισθητικά σωστοί χρειάζεται προσοχή γιατί η ικανοποιησιμότητα
δεν είναι κλειστή ως προς τον ισομορφισμό.

Παράδειγμα. ΄Εστω S = {A, B, C}, F = {a, b, c} με a ∈ F→A , b ∈ F→B και


c ∈ F→c , B < AC και τέλος έστω η εξίσωση (∀∅)a = c. Τότε, από την άλγεβρα των
όρων TΣ έχουμε ότι (TΣ )A = {a, b}, (TΣ )C = {c, b} και (TΣ )B = {b}. Τότε είναι
προφανές ότι η TΣ δεν ικανοποιεί την εξίσωση a = c. Παρόλ΄ αυτά μία νέα ΑΔΤ η
H με HA = HC = {b, d} και HB = {b} η οποία ερμηνεύει τις σταθερές ως d, b, d
ικανοποιεί την εξίσωση παρόλο που ο ομομορφισμός h : TΣ → H είναι ισομορφισμός.

Για να απαλλαγούμε από τέτοιες ανωμαλίες ορίζουμε πότε μία ΑΔΤ είναι συνεπής(ςοηερεντ)
και στη συνέχεια θα υποθέτουμε ότι ασχολούμαστε μόνον με τέτοιες Σ-άλγεβρες.
΄Ενα σύνολο με διάταξη (S, ≤) λέγεται ότι είναι (προς τα επάνω) φιλτραρισμένο
ανν για κάθε δύο στοιχεία s, s0 ∈ S υπάρχει ένα τρίτο s00 ∈ S τέτοιο ώστε s, s0 ≤ s00 .
Το S λέγεται τοπικά φιλτραρισμένο αν και μόνο αν τα συνδεδεμένα στοιχεία του
είναι φιλτραρισμένα. Μία χαρακτηριστική λέγεται συνεπής ανν το (S, ≤) είναι τοπικά
φιλτραρισμένο και κανονικό.

Πρόταση. Αν η χαρακτηριστική Σ είναι συνεπής και Α και Β δύο ισομορφικές


Σ-άλγεβρες με διάταξη τότε η Α ικανοποιεί την εξίσωση (∀X)t = t0 ανν την ικανοποιεί
και η Β.

΄Εχοντας απαλλαγεί από τις ανωμαλίες αυτές μπορούμε τώρα να ορίσουμε τους
κανόνες επαγωγής νέων εξισώσεων από ήδη υπάρχουσες, δηλαδή τη λογική της ΑΔΤ.
΄Εστω λοιπόν μία χαρακτηριστική Σ η οποία είναι συνεπής και Ε ένα σύνολο Σ-
εξισώσεων.
(1) Ανακλαστικότητα. Η εξίσωση (∀X)t = t επάγεται πάντα
(2) Συμμετρία. Αν η εξίσωση (∀X)t = t0 επάγεται, τότε επάγεται και η (∀X)t0 =
t
(3) Μεταβατικότητα. Αν επάγονται οι εξισώσεις (∀X)t = t0 και (∀X)t0 = t00 ,
τότε επάγεται η εξίσωση (∀X)t = t00 .
(4) Ισοδυναμία. Αν επάγονται οι εξίσωσεις (∀X)ti = t0i όπου ti , t0i ∈ (TΣ )si ,
i = 1 . . . n τότε για κάθε σ ∈ Fw→s με w = s1 . . . sn , επάγεται η εξίσωση
(∀X)σ(t1 . . . tn ) = σ(t01 . . . t0n )
(5) Αντικαταστασιμότητα. ΄Εστω η εξίσωση (∀Y )t = t0 αν t1 = t01 , . . . tn = t0n
στο Ε και έστω μία αντικατάσταση θ : Y → TΣ τέτοια ώστε για κάθε
i = 1, . . . n να επάγεται ότι (∀X)θ∗ (ti ) = θ∗ (t0i ). Τότε επάγεται και η
εξίσωση (∀X)θ∗ (t) = θ∗ (t0 ).

*Κρυφή ΄Αλγεβρα (HiddenAlgebra)


85
ι Προδιαγραφές Συμπεριφοράς (ΠΣ) παρέχουν μία νέα κατεύθυνση στις συνηθισ-
μένες αλγεβρικές προδιαγραφές. Η διαφορά τους έγκειται στο ότι οι ΠΣ χαρακ-
τηρίζουν το πώς διάφορα συστήματα (ή αντικείμενα) συμπεριφέρονται και όχι το
πώς υλοποιούνται. Αυτό το επίπεδο αφαίρεσης είναι ιδιαίτερα χρήσιμο όταν επιθυ-
μούμε να αναλύσουμε τη συμπεριφορά συστημάτων λογισμικού γιατί μας επιτρέπει να
χρησιμοποιήσουμε με φυσικό τρόπο έννοιες όπως μη-ντετερμινισμός, αντικειμενοσ-
τράφεια, παραλληλισμός κτλ. Ο λογικός φορμαλισμός με βάση τον οποίο ορίζονται
οι ΠΣ είναι η Κρυφή ΄Αλγεβρα με πολλούς τύπους και διάταξη [6, 7, 8, 9, 10]
(OrderSortedHiddenAlgebra), η οποία είναι μία επέκταση της γενικής άλγεβρας με
διάταξη και πολλούς τύπους. Για λόγους απλότητας των συμβολισμών όμως θα πε-
ριοριστούμε στην χωρίς διάταξη Κρυφή ΄Αλγεβρα με πολλούς τύπους, ή πιο απλά
κρυφή άλγεβρα. Αυτός ο διαχωρισμός προέκυψε από μία στοιχειώδη παρατήρηση: οι
τύποι των δεδομένων ενός συστήματος πρέπει να είναι διαφορετικοί από τους τύπους
των καταστάσεών τους. Αυτή η προφανής διατύπωση χαρίζει σε αυτό το φορμαλ-
ισμό μία διαφορετική έννοια ισοδυναμίας και ικανοποιησιμότητας όπως θα δούμε, την
καλούμενη συμπεριφοριακή ισότητα (behaviouralequivalence) και συμπεριφοριακή
ικανοποιησιμότητα (behaviouralsatisf action).

Ορισμός. [Κρυφή Χαρακτηριστική] Υποθέτουμε ένα σύνολο τύπων V και


μία χαρακτηριστική για αυτούς την οποία θα συμβολίζουμε με Ψ. Ακόμα υποθέτουμε
ότι υπάρχει μία V -άλγεβρα με πολλούς τύπους D. Τέλος έστω H ένα σύνολο τύπων
τέτοιο ώστε V ∩ H = ∅. Τότε μία κρυφή χαρακτηριστική Σ , ορίζεται ως μία τριάδα
(Ψ, D, Σ) την οποία συνήθως θα συμβολίζουμε με Σ, όπου:
• Σ είναι μία V ∪ H-χαρακτηριστική η οποία επεκτείνει την Ψ, έτσι ώστε κάθε
τελεστής της Σ του οποίου το πεδίο ορισμού και το σύνολο τιμών είναι
εξολοκλήρου στην Ψ ανήκει κι αυτός στη Ψ.
Τους τύπους του H τους ονομάζουμε κρυφούς τύπους (hiddensorts) και αυτούς
του V ορατούς (visiblesorts).

Τα στοιχεία που είναι κρυφού τύπου δηλώνουν καταστάσεις ενός συστήματος


αυτού του τύπου, ενώ τα στοιχεία ορατού τύπου τιμές κάποιου τύπου δεδομένων. Στην
συνέχεια για τεχνικούς λόγους υποθέτουμε ότι για κάθε στοιχείο d ∈ D υπάρχει και
ένα σύμβολο σταθεράς στη Ψ το οποίο πάλι θα συμβολίζουμε με d. Τους τελεστές
της Σ με ένα στοιχείο του πεδίου ορισμού τους στο H και τύπο του συνόλου τιμής
στο V θα τους καλούμε παρατηρήσεις (ή ιδιότητες) και αυτούς με με ένα στοιχείο
του πεδίου ορισμού τους στο H και τύπο του συνόλου τιμής στο H μεθόδους (ή
τελεστές πράξης). Τέλος αυτούς που έχουν πεδίο ορισμού εξολοκλήρου στο V και
τύπο συνόλου τιμών στο H θα τους λέμε κρυφές σταθερές.
Μία κρυφή υπό-χαρακτηριστική της Σ ορίζεται απλά ώς μία κρυφή χαρακτηριστική
(Ψ, D, Γ) τέτοια ώστε Γ ⊆ Σ.
86
Ορισμός. [Σ-προδιαγραφή] Δεδομένου ενός συνόλου Ε από Σ-εξισώσεις μία
Σ-προδιαγραφή (ή Σ-θεωρία) ορίζεται ως η τριπλέτα (Σ, Γ, E) όπου Σ είναι μία κρυφή-
χαρακτηριστική και Γ είναι μία υπό-χαρακτηριστική της Σ. Οι τελεστές στο Γ \ Ψ
καλούνται συμπεριφοριακοί τελεστές (βεηαvιοραλ οπερατιονς).

΄Οσο αφορά τα μοντέλα των κρυφών χαρακτηριστικών έχουμε ότι μία κρυφή Σ-
άλγεβρα είναι απλά μία Σ-άλγεβρα Α με πολλούς τύπους τέτοια ώστε AΨ = D.
Η διαίσθηση πίσω από τους συμπεριφοριακούς τελεστές είναι ότι αυτοί ορίζουν
διάφορα «πειράματα» που επιστρέφουν αποτελέσματα ορατού τύπου και μέσω των
αποτελεσμάτων των πειραμάτων αυτών μπορούμε να ορίσουμε ισότητες στις καταστά-
σεις του συστήματός μας. Δηλαδή, δεν μας ενδιαφέρει τόσο η εσωτερική κατάσταση
ενός συστήματος όσο η συμπεριφορά που μπορούμε εμείς να παρατηρήσουμε.

Παράδειγμα. [Σ-προδιαγραφή ενός συνόλου φυσικών αριθμών] Υποθέτουμε ότι


έχουμε δύο ορατές θεωρίες, μία για τους φυσικούς αριθμούς την οποία θα συμβολί-
σουμε με N at και μία για την άλγεβρα Bool που θα συμβολίσουμε με Bool. Τότε
μπορούμε να ορίσουμε τη Σ-προδιαγραφή ενός συνόλου από φυσικούς αριθμούς. Οι
ορατοί τύποι λοιπόν θα είναι V = {N at, Bool} ενώ οι κρυφοί H = {Set}. Γιά σύμ-
βολα τελεστών έχουμε Sigma = {0, s, in, empty, add, union, and, or, implies,
true, f alse} με 0 ∈ Σ→N at , s ∈ ΣN at→N at , in ∈ ΣN atSet→Bool , empty ∈ Σ→Set ,
add ∈ ΣN atSet→Set , union ∈ ΣSetSet→Set . Ενώ οι εξισώσεις της Σ-προδιαγραφής
του συνόλου ακεραίων οριζονται ως: (∀N ∈ N at)N in empty = f alse, (∀N, N 0 ∈
N at, S ∈ Set) N in add(N 0 , S) = (N = N 0 ) or (N in S), (∀N ∈ N at, S, S 0 ∈
Set) N in union(S, S 0 ) = N in S or N in S 0 . ΄Ετσι λοιπόν μπορούμε να προδιαγράψ-
ουμε ένα σύνολο φυσικών αριθμών όχι με βάση το ποια είναι η εσωτερική δομή
του (δηλαδή, από ποιά στοιχεία αποτελείται) αλλά με βάση το τι μπορούμε εμείς
να παρατηρήσουμε γι΄ αυτό (δηλαδή με βάση το πότε ένα στοιχείο ανήκει σε αυτό).
Παρατηρήστε ότι με βάση αυτή τη προδιαγραφή δεν μπορούμε να διακρίνουμε το S
από το δυναμοσύνολο του.

Στη συνέχεια επεκτείνουμε τον ορισμό το περιεχομένου, C[z], σε περιεχόμενο


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

Ορισμός. [Γ-περιεχόμενο] ΄Εστω μία κρυφή χαρακτηριστική Σ και μία υπό-


χαρακτηριστική της Γ. ΄Ενα Γ-περιεχόμενο τύπου s, είναι ένας οποιοσδήποτε ορατού
τύπου όρος από την άλγεβρα των όρων που μπορούμε να παράγουμε από το Γ, TΓ ({z}∪
X), c[z] ο οποίος έχει μία μοναδική εμφάνιση της μεταβλητής z που είναι τύπου s. Στη
συνέχεια θα συμβολίζουμε με CΓ [z : s] όλα τα Γ-περιεχόμενα τύπου s και με var(c)
το πεπερασμένου πλήθους σύνολο μεταβλητών του c εκτός της z.
87
Δεδομένης μιας Σ-άλγεβρας Α, ένα Γ-περιεχόμενο τύπου s ορίζει μία απεικόνιση
Ac : As → (Avar(c)→D ) τέτοια ώστε Ac (a)(θ) = a∗θ (c) όπου a∗θ είναι η μοναδική
επέκταση της απεικόνισης aθ , που στέλνει το z στο a και κάθε μεταβλητή z 0 ∈ var(c)
στην αποτίμηση της θ(z 0 ).

Ορισμός. [Γ-Συμπεριφοριακή Ισότητα] Δεδομένης μίας κρυφής χαρακ-


τηριστικής Σ και μίας Σ-άλγεβρας A, η ισότητα που ορίζεται από τη σχέση a ≡Σ,Γ a0
αν και μόνο αν για κάθε Γ-περιεχόμενο c, Ac (a) = Ac (a0 ) καλείται Γ-συμπεριφοριακή
ισότητα (Γ-βεηαvιοραλ εχυιvαλενςε) στην A.

Από τον προηγούμενο ορισμό είναι εμφανές ότι στην περίπτωση των ορατών τύπων
η Γ-συμπεριφοριακή ισότητα ταυτίζεται με την κανονική ισότητα. Ειναί πολύ σημαντικό
να προσέξουμε ότι η ≡Σ,Γ εξαρτάται τόσο από τη Σ όσο και από την υποχαρακτηρισ-
τική της Γ. Στη συνέχεια όταν το Σ δεν είναι απαραίτητο θα τη συμβολίζουμε και ως
≡Γ

Ορισμός. ΄Εστω τελεστής σ ∈ Σw→s όπου w = s1 . . . sn , θα λέμε ότι ο σ είναι


συμπεριφοριακά διατηρητικός (βεηαvιοραλλψ ςονγρυεντ)ανν για κάθε
ai , a0i με i = 1 . . . n για τους οποίους ισχύει ότι ai ≡Σ,Γ a0i τότε Aσ (a1 . . . an ) ≡Σ,Γ
Aσ (a01 . . . a0n ) .

[Γ-Συμπεριφοριακή Ισοδυναμία]
Μια Γ-Συμπεριφοριακή Ισοδυναμία (Γ-behavioralcongruence) σε μία κρυφή άλ-
γεβρα Α, για μία κρυφή υπό-χαρακτηριστική Γ ορίζεται ως οποιαδήποτε σχέση ισο-
δυναμίας που είναι ισότητα για τους ορατού τύπου όρους και κάθε τελεστής στο Γ
είναι διατηρητικός ως προς αυτή.

Θεώρημα. [Θεμελιώδες Θεώρημα Κρυφής ΄Αλγεβρας] Δεδομένης


μιας υπό-χαρακτηριστικής Γ της Σ και μίας Σ-άλγεβρας Α, η Γ-συμπεριφοριακή
Ισότητα είναι η μεγαλύτερη Γ-συμπεριφοριακή ισοδυναμία πάνω στην Α.

Το παραπάνω θεώρημα αποτελέι τη βάση για πολλά από τα αποτελέσματα της


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

Ορισμός. [Γ-συμπεριφοριακή ικανοποιησιμότητα] Μια κρυφή Σ-άλγεβρα


Α Γ-συμπεριφοριακά ικανοποιεί μια υπό-συνθήκη Σ-εξίσωση e = (∀X)t = t0 αν t1 =
88
t01 , . . . tn = t0n αν και μόνο αν για κάθε απονομή θ : X → A αν θ(ti ) ≡Σ,Γ theta(t0i ) για
i = 1 . . . n τότε θ(t) ≡Σ,Γ θ(t0 ). Σε αυτή τη περίπτωση θα γράφουμε ότι A |=Σ,Γ e.
Αν τώρα Ε είναι ένα σύνολο από τέτοιες Γ-εξισώσεις θα γράφουμε ότι A |=Σ,Γ E
αν και μόνο αν το Α Γ-συμπεριφοριακά ικανοποιεί όλες τις εξισώσεις του Ε. Ακόμα
θα λέμε ότι το Α συμπεριφοριακά ικανοποιεί ή είναι μοντέλο μιας Σ-προδιαγραφής
B = (Σ, Γ, E) ανν A |=Σ,Γ E. Σε αυτές τις περιπτώσεις μπορεί να γράφουμε και
A |= B. Τέλος ένα τελεστής σ ∈ Σ είναι συμπεριφοριακά διατηρητικός για μία προδι-
αγραφή B αν και μόνο αν ο σ είναι διατηριτικός για κάθε A |= B.

Στις περιπτώσεις όπου το Γ και το Σ είναι προφανή απο τα συμφραζόμενα μπορεί


να γράφουμε ≡ και |= αντι για ≡Σ,Γ και |=Σ,Γ αντίστοιχα. Ακόμα (κατα αντιστοιχεία
με τις αλγεβρές με πολλούς τύπους) θα λέμε ότι μία κρυφή Σ-άλγεβρα Α είναι προσιτή
(reachable), αν και μόνο αν ο μοναδικός Σ-ομομορφισμός από την πρωταρχική Σ-
άλγεβρα TΣ είναι επί.

Παράδειγμα. Η εισαγωγή της έννοια της συμπεριφοριακή ικανοποιησιμότητας


μας επιτρέπει να χρησιμοποιούμε διάφορα μοντέλα τα οποία αν και χρησιμοποιούνται
καθημερινά στη πράξη για την αναπαράσταση των προδιαγραφών δεν τις ικανοποιούν
με την πίο αυστηρή έννοια της ικανοποιησιμότηας που είχαμε δει μέχρι τώρα. Για
παράδειγμα έστω SET είναι η προδιαγραφή από το παράδειγμα 3. Στη πράξη (από
προγραμματιστικής σκοπιάς) ένα σύνηθες μοντέλο (δηλαδή υλοποίηση) αυτής προδι-
αγραφής είναι η αναπαράσταση του συνόλου με μία πεπερασμένη λίστα από φυσικούς
αριθμούς με τον τελεστή in να επιστρέφει πότε ένα στοιχείο ανήκει στη λίστα, τη στα-
θερά empty να σηματοδοτεί τη κενή λίστα, τον τελεστή add να προσθέτει ένα στοιχείο
στη κεφαλή της λίστας και ο τελεστής union να αναπαρίσταται από τη συνήθη συνέν-
ωση λιστών (concatenation), δηλαδή την εναπόθεση της μίας λίστας στο τέλος της
άλλης. Με βάση αυτή τη προδιαγραφή είναι απολύτως επιτρεπτή η εμφάνιση πολ-
λαπλών ομοίων φυσικών αριθμών σε μία τέτοια λίστα (η οποία αναπαριστά σύνολο!).
Κάτι τέτοιο δεν θα ήταν επιτρεπτό αν είχαμε προσπαθήσει να προδιαγράψουμε με
πρωταρχική σημασιολογία τα σύνολα των φυσικών αριθμών. Ακόμα βασικές ιδιότητες
των συνόλων όπως η αντιμεταθετικότητα της ένωσης με βάση αυτό το μοντέλο δεν
ικανοποιούνται αυστηρά παρά μόνον συμπεριφοριακά.

Πρόταση. Δεδομένης μιας συμπεριφοριακής προδιαγραφής B = (Σ, Γ, E) όλοι


οι τελεστές του Γ είναι διατρητικοί.

Η απόδειξη της παραπάνω πρότασης είναι προφανής αφού η συμπεριφοριακή ισο-


δυναμία για τη B ορίζεται με βάση τους τελεστές του Γ.
Η ακόλουθη πρόταση μετατρέπει τον έλεγχο της διατηρητικότητα ενός τελεστή
στον έλεγχο της ικανοποιησιμότητα μιας συγκεκριμένης εξίσωσης και έτσι παρέχει
ένα εύχρηστο κριτήριο.
89
Πρόταση. Δεδομένης μιας συμπεριφοριακής προδιαγραφής B = (Σ, Γ, E) και
ενός τελεστή σ ∈ Sv1 ...vm h1 ...hn →s συμβολίζουμε με eσ την ακόλουθη εξίσωση:
(∀y1 , . . . ym , x1 . . . xn ) σ(y1 , . . . , ym , x1 , . . . , xn ) = σ(y1 , . . . , ym , x01 , . . . , x0n ) αν x1 =
x01 , xn = x0n .
Τότε ο σ είναι Γ-διατηρητικός για μία κρυφή Σ-άλγεβρα Α ανν: A |=Σ,Γ eσ και είναι
διατηρητικός για την προδιαγραφή ανν B |= eσ .

Κατά τη διάρκεια των αποδείξεων ιδιοτήτων συμπεριφοριακών προδιαγραφών οι


καθολικοί ποσοδείκτες εισάγουν μια επιπλέον πολυπλοκότητα από την οποία μπορούμε
να απαλλαγούμε όπως δείχνει και το ακόλουθο θεώρημα:

Θεώρημα. [Θεώρημα κρυφών σταθερών] ΄Εστων B = (Σ, Γ, E) είναι


μια συμπεριφοριακή προδιαγραφή και e μία Σ-εξίσωση της μορφής (∀Y X) t = t0 αν
t1 = t01 , . . . , tn = t0n . Αν συμβολίζουμε με ex την (Σ ∪ X)-εξίσωση (∀Y ) t = t0
αν t1 = t01 , . . . , tn = t0n όπου με (Σ ∪ X) συμβολίζουμε τη χαρακτηριστική η οποία
προέρχεται από τη Σ με την εισαγωγή των συμβόλων μεταβλητών του Χ ώς ’φρέσκες’
σταθερές. Τότε ισχύει:
B |= e ανν BX |= ex .

΄Εχοντας ορίσει τις κρυφές άλγεβρες, εξισώσεις και την ικανοποιησιμότητα αυτών
είμαστε έτοιμοι να μελετήσουμε τους κανόνες επαγωγής εξισώσεων για την κρυφή
άλγεβρα. Παρόλ΄ αυτά χρειάζεται ιδιαίτερη προσοχή όπως θα δούμε γιατί εν γένει δεν
ισχύει ότι όλοι οι τελεστές είναι διατηριτικοί, επομένως θα χρειαστεί να τροποποιή-
σουμε τον κανόνα της ισοδυναμίας που είχαμε για την άλγεβρα με πολλούς τύπους
(και διάταξη).

Πρόταση. Για δεδομένη συμπεριφοριακή προδιαγραφή B = (Σ, Γ, E) ισχύουν τα


ακόλουθα:
(1) B |= (∀X)t = t
(2) Αν B |= (∀X)t = t0 τότε B |= (∀X)t0 = t
(3) Αν B |= (∀X)t = t0 και B |= (∀X)t0 = t00 τότε B |= (∀X)t = t00
(4) Αν B |= (∀Y )t = t όταν t1 = t01 , . . . tn = t0n και θ : Y → TΣ (X) μία
αντικατάσταση τέτοια ώστε B |= (∀X)θ(ti ) = θ(t0i ) για i = 1 . . . n τότε
B |= (∀X)θ(t) = θ(t0 ).
(5) Αν σ ∈ Σs1 ...sn →s και t, t0 ∈ TΣ (X)sj για 1 ≤ j ≤ n τέτοιοι ώστε B |=
(∀X)t = t0 , τότε:
• Αν sj ∈ V B |= (∀Xy1 , . . . , yj−1 , yj+1 , yn ) σ(y1 , . . . , yj−1 , t, yj+1 , . . . yn )
= σ(y1 , . . . , yj−1 , t0 , yj+1 , . . . yn ). Δηλαδή όλα τα σύμβολα τελεστών
διατηρούν την ισοδυναμία στους ορατούς όρους
• Αν sj ∈ H και ο σ είναι διατηρητικός τότε, B |= (∀Xy1 , . . . , yj−1 , yj+1 , yn )
σ(y1 , . . . , yj−1 , t, yj+1 , . . . yn ) = σ(y1 , . . . , yj−1 , t0 , yj+1 , . . . yn ). Δηλαδή
90
μόνο οι διατηρητικοί τελεστές διατηρούν την ισοδυναμία μεταξύ των
κρυφών όρων.

Ο τελευταίος κανόνας μπορεί εύκολα να γενικευθεί ώς εξής: Αν σ ∈ Σs1 ...sn →s


και είναι διατηρητικός, τότε αν ti , t0i ∈ (TΣ (X))si με si ∈ H τέτοιοι ώστε να ισχύει
ότι B |= (∀X)ti = t0i , τότε B |= (∀XZ)σ(Z, t1 , . . . , tn ) = σ(Z, t01 , . . . , t0n ), όπου Ζ
είναι ένα σύνολο από ορατές μεταβλητές. Στη χρήση του πέμπτου κανόνα χρειάζεται
ιδιαίτερη προσοχή γιατί όπως είναι φανερό η αντικατάσταση ισοδύναμων όρων δεν
είναι πάντα ορθή (sound) όσο αφορά την συμπεριφοριακή ισοδυναμία. Οι ακόλουθοι
κανόνες επαγωγής το λαμβάνουν αυτό υπόψιν με το να επιτρέπουν τον κανόνα της
ισοδυναμίας να εφαρμόζεται σε κρυφούς τελεστές μόνο όταν αυτοί είναι διατηρητικοί.
• Ανακλαστικότητα (Ref lexivity): Για κάθε όρο t μπορούμε να επάγουμε την
εξίσωση (∀X)t = t
• Συμμετρικότητα (Symmetry): Αν μπορούμε να επάγουμε την εξίσωση (∀X)t =
t0 τότε επάγεται και η εξίσωση (∀X)t0 = t
• Μεταβατικότητα (T ransitivity): Αν μπορούμε να επάγουμε τις εξισώσεις
(∀X)t = t0 και (∀X)t0 = t00 τότε επάγεται και η εξίσωση (∀X)t = t00 .
• Αντικαταστισιμότητα «Substitutivity): ΄Εστω η εξίσωση (∀Y )t = t0 με
t1 = t01 , . . . tn = t0n στο Ε και έστω μία αντικατάσταση θ : Y → TΣ (X)
τέτοια ώστε για κάθε i = 1, . . . n να επάγεται ότι (∀X)θ∗ (ti ) = θ∗ (t0i ). Τότε
επάγεται και η εξίσωση (∀X)θ∗ (t) = θ∗ (t0 ).
• Ισοδυναμία (Congruence): Αν επάγεται η εξίσωση (∀X)t = t0 τότε:
- Αν t, t0 ∈ V επάγεται και η εξίσωση (∀XZ) σ(Z, t) = σ(Z, t0 ) για κάθε
σ∈Σ
- Αν t, t0 ∈ H επάγεται και η εξίσωση (∀XZ) σ(Z, t) = σ(Z, t0 ) για κάθε
διατηριτικό σ ∈ Σ
Ο τελευταίος κανόνας (5β) δεν είναι συντακτικός αφού πρώτα πρέπει να γνωρίζουμε
πότε ένας τελεστής είναι διατηρητικός γεγονός που εμπίπτει στη σημασιολογία του
τελεστή (εξαρτάται από τη Σ-άλγεβρα τη προδιαγραφή κτλ.). Παρόλα αυτά από τη πρό-
ταση 2 έχουμε αρκετούς τελεστές για τους οποίους γνωρίζουμε ότι είναι διατηρητικοί,
έτσι ο κανόνας (5β) στην πράξη είναι αρκετά χρήσιμος. Στη συνέχεια θα δούμε πώς
μπορούμε να αποδείξουμε οτι και άλλοι τελεστές είναι διατηρητικοί. Το σύνολο των
κανόνων (1) με (5) είναι ορθό όπως δείχνει και η ακόλουθη πρόταση:

Πρόταση. Δεδομένης μια συμπεριοφοριακής προδιαγραφής B Σ-εξίσωσης e =


(∀X)t = t0 αν μπορούμε να επάγουμε την e με βάση τους κανόνες (1) εώς (5) τότε
E |=Σ,Γ (∀X)t = t0 .

Στη συνέχεια με τη βοήθεια ενός παραδείγματος θα δούμε τη μεθοδολογία της


συν-επαγωγής (ςοινδυςτιον).
91
Παράδειγμα. [Συν-επαγωγή(Coinduction)] ΄Εστω η προδιαγραφή ενός συνόλου
φυσικώ αριθμών, δηλαδή η προδιαγραφή από το παράδειγμα 3 με δύο επιπλέον τελεστές
τον & ∈ ΣSetSet→Set και τόν neg ∈ ΣSet→Set και τα αντίστοιχα για αυτούς αξιώματα.

Τηεορψ: ΣΕΤ
ηιδδεν σορτ: Σετ
οπερατιονς:
ιν : Νατ Σετ -᾿ Βοολ
εμπτψ : -᾿ Σετ
αδδ : Νατ Σετ -᾿ Σετ
υνιον : Σετ Σετ -᾿ Σετ
· : Σετ Σετ -᾿ Σετ
νεγ : Σετ -᾿ Σετ

αξιομς:
φοραλλ Σ,Σ΄.Σετ, Ν, Ν΄.Νατ
Ν ιν εμπτψ = φαλσε
Ν ιν αδδ(Ν΄,Σ) = (Ν = Ν) ορ (Ν ιν Σ)
Ν ιν υνιον(Σ,Σ΄) = (Ν ιν Σ) ορ (Ν ιν Σ΄)
Ν ιν ·(Σ,Σ΄) = (Ν ιν Σ) ανδ (Ν ιν Σ΄)
Ν ιν νεγ(Σ) = νοτ (Ν ιν Σ)

Και θέλουμε να δείξουμε ότι για κάθε Σ-άλγεβρα Α που είναι μοντέλο της προ-
διαγραφής SET, ∀S, S 0 ∈ ASet union(S, S 0 ) = union(S 0 , S) δηλαδή ισχύει η αν-
τιμεταθετικότητα της ένωσης των συνόλων. Ας θυμηθούμε ότι δύο κρυφοί όροι
είναι συμπεριφοριακά ισοδύναμοι ανν για κάθε ορατό περιεχόμενο η αντικατάσταση
των όρων στο περιεχόμενο αυτό δίνει ίσους όρους. Παρόλ΄ αυτά μία τέτοια απόδειξη
θα απαιτούσε επαγωγή στα πιθανά Γ-περιεχόμενα γεγονός που αυξάνει κατα πολύ
την πολυπλοκότητα της. Μέσω αυτού του παραδείγματος θα δούμε μια μεθοδολογία
απόδειξης που μειώνει δραματικά τη πολυπλοκότητα αυτή.
΄Εστω ότι R είναι μία σχέση πάνω στο σύνολο φορέα ASet . Αν δείξουμε ότι η
R είναι είναι μία Γ-ισοδυναμία τότε από το θεμελιώδες θεώρημα της κρυφής άλγεβρας
(Θεώρημα 5) θα ισχύει ότι R ⊆≡Σ,Γ . ΄Ετσι μπορούμε να δείξουμε τη σχέση μας
χρησιμοποιώντας την R και αποφεύγοντας την επαγωγή στα περιεχόμενα.
Για παράδειγμα στη προδιαγραφή SET μπορούμε να ορίσουμε ώς R = {S, S 0 |
∀intn.(ninS) ↔ (ninS 0 )}. Πρέπει να δείξουμε τώρα ότι η R είναι μία κρυφή Γ-
ισοδυναμία. ΄Εστω λοιπόν ότι R(S, S 0 ). Θα δείξουμε ότι ο τελεστής add ∈ Γ διατηρεί
την R όλες οι άλλες περιπτώσεις μπορούν να δειχθούν με παρόμοια επιχειρήματα.
92
΄Εστω n ∈ AN at , τότε (∀N ∈ AN at )N in add(n, S) από την εξίσωση Ν ιν αδδ(Ν΄,Σ)
= (Ν = Ν) ορ (Ν ιν Σ) θα ισχύει ότι είτε n = N είτε N in S. Αλλά αφού R(S, S 0 ) τότε
αν N in S → N in S 0 .Οπότε (∀N ∈ AN at )N in add(n, S) → N in add(n, S 0 ). Με αν-
τίστροφα επιχειρήματα καταλήγουμε (∀N ∈ AN at )N in add(n, S 0 ) → N in add(n, S),
άρα ο τελεστής add διατηρεί την R.
Αφού λοιπόν η R είναι Γ-ισοδυναμία περιλαμβάνεται στη Γ-ισότητα και έτσι μπορούμε
να δείξουμε την ιδιότητα που μας ενδιαφέρει με αυτή. Θέλουμε λοιπόν να δείξουμε ότι
union(S, S 0 ) R union(S 0 , S) το οποίο συνεπάγεται ότι ∀n.N at αν n in union(S, S 0 )
τότε n in union(S 0 , S). Αλλά από την εξίσωση Ν ιν υνιον(Σ,Σ΄) = (Ν ιν Σ) ορ
(Ν ιν Σ΄) προφανώς και ισχύει αυτό, άρα ισχύει και η ζητούμενη ιδιότητα. ΄Ετσι
λοιπόν έχουμε ότι A |=Σ,Γ union(S, S 0 ) = union(S 0 , S) και επειδή η Σ-άλγεβρα Α
επιλέχθηκε τυχαία έχουμε ότι B |= union(S, S 0 ) = union(S 0 , S), δηλαδή η ιδιότητα
ισχύει για κάθε μοντέλο της προδιαγραφής.

Αυτή η μεθοδολογία μετατρέπει τις πολύπλοκες αποδείξεις επαγωγής στο περιεχό-


μενο σε πολύ απλούστερες αποδείξεις. Μάλιστα όσο μικρότερο είναι το Γ (το σύνολο
των τελεστών δηλαδή που ορίζουν τη συμπεριφοριακή ισότητα) τόσο απλούστερες εί-
ναι και οι αποδείξεις αυτές. Στη συνέχεια θα δούμε ένα τρόπο μείωσης του μεγέθους
του Γ.
Η μεθοδολογία που θα δούμε σε αυτή τη παράγραφο καλείται συντηρητική και
αποσκοπεί στη απλοποίηση της απόδειξης συμπεριφοριακών ισοδυναμιών μεταξύ κρυφών
όρων. Εν συντομία η μεθοδολογία μπορεί να περιγραφεί ώς εξής: έστω B = (Σ, Γ, E)
και B0 = (Σ, Γ0 , E) όπου Γ0 = Γ \ {σ}, σ ∈ Γ. Αν μπορέσουμε να δείξουμε ότι ο σ
είναι συμπεριφοριακά διατηρητικός για τη ≡Σ,Γ0 τότε οι συμπεριφοριακές ισοδυναμίες
των δύο προδιαγραφών θα ταυτίζονται (δηλαδή, ≡Σ,Γ ⊆≡Σ,Γ0 και ≡Σ,Γ0 ⊆≡Σ,Γ ). ΄Ετσι,
μπορούμε να χρησιμοποιήσουμε τη δεύτερη και απλούστερη ισοδυναμία για την απόδειξη
των ιδιοτήτων που μας ενδιαφέρουν. Θα εξηγήσουμε αυτή τη μεθοδολογία με ένα
παράδειγμα:
΄Εστω η προδιαγραφή ενός καναλιού (buf f er) το οποίο περιέχει φυσικούς αριθ-
μούς,

Τηεορψ: ΒΥΦ1
ηιδδεν σορτ: Βυφ
οπερατιονς:
ινιτ : -᾿ Βυφ
πυτ : Νατ Βυφ -᾿ Νατ
γετ : Βυφ -᾿ Νατ
τακε : Βυφ -᾿ Βυφ
εμπτψ; : Βυφ -᾿ Βοολ
93
αξιομς:
φοραλλ Β.Βυφφερ, Ν.Νατ
εμπτψ;(ινιτ) = τρυε
εμπτψ;(τακε(Β» = τρυε ιφ εμπτψ;(Β)
εμπτψ;(πυτ(Ν,Β» = φαλσε
εμπτψ;(Β) = τρυε ιφ γετ(Β) = ερρ
τακε(πυτ(Ν,Β» = πυτ(Ε,τακε(Β» ιφ νοτ εμπτψ;(Β)
τακε(πυτ(Ν,Β» = τακε(Β) ιφ εμπτψ;(Β)
γετ(Β) = ερρ ιφ εμπτψ;(Β)
γετ(πυτ(Ε,Β» = Ε ιφ εμπτψ;(Β)
γετ(πυτ(Ε,Β» = γετ(Β) ιφ νοτ εμπτψ;(Β)

Η παραπάνω αναπαράσταση ορίζει BUF1 = (Σ, Γ, E), όπου init ∈ Σ→Buf , put ∈
ΣN atBuf →Buf , get ∈ ΣBuf →N at , take ∈ ΣBuf →Buf και empty? ∈ ΣBuf →Bool και
τις υπο-συνθήκη εξισώσεις (∀∅)empty?(true) = true, (∀B.Buf ) empty?(take(B)) =
true αν empty?(B) = true κ.ο.κ. Με Γ = {put, get, take, empty?}. Θα δείξουμε
ότι οι τελεστές put και empty? είναι συμπεριφοριακά διατηρητικοί για την ≡Σ,Γ0 όπου
Γ0 = Γ\ {put, empty?} δηλαδή Γ0 = {get, take}.
΄Εστω λοιπόν μία Σ-άλγεβρα Α τέτοια ώστε να είναι μοντέλο της προδιαγραφής
Buf10 = (, 0 , E), για να δείξουμε ότι ο τελεστής empty? είναι συμπεριφοριακά διατηρητικός
πρέπει να δείξουμε ότι ∀b, b0 ∈ ABuf αν b ≡Σ,Γ0 b0 τότε empty?(b) ≡Σ,Γ0 empty?(b0 ).
Αφού b ≡Σ,Γ0 b0 και το Aget ορίζει ένα ορατό περιεχόμενο τότε θα ισχύει ότι Aget (b) =
Aget (b0 ). Αν τώρα Aget (b) = Aerr = Aget (b0 ) τότε από την εξίσωση εμπτψ;(Β) =
τρυε ιφ γετ(Β) = ερρ θα έχουμε ότι Aempty? (b) = Aempty? (b0 ) = Atrue . Αλλιώς, αν
Ag et(b) 6= Aerr τότε Aempty? (b) = Aempty? (b0 ) = Af alse από την εξίσωση γετ(Β) =
ερρ ιφ εμπτψ;(Β). Ανάλογα μπορούμε να και για τον τελεστή put.
΄Ετσι μπορούμε να χρησιμοποιήσουμε την Γ΄-ισοδυναμία στη θέση της Γ, γεγονός
που απλουστεύει την απόδειξη των συμπεριφοριακών ιδιοτήτων.
Με βάση τα προηγούμενα αποτελέσματα μπορούμε να ορίσουμε κάποιες σχέσεις
μεταξύ Σ-προδιαγραφών.

Ορισμός. Δύο Σ-προδιαγραφές B1 = (Σ, Γ1 , E) και B2 = (Σ, Γ2 , E) πάνω στην


ίδια χαρακτηριστική Σ, θα λέγονται ισοδύναμες ανν για κάθε Σ-άλγεβρα Α, A |= B1
ανν A |= B2 και σε αυτή τη περίπτωση οι δύο συμπεριφοριακές ισότητες ταυτίζονται
πάνω στην Α.

Ορισμός. ΄Εστω B1 και B2 όπως στο προηγούμενο παράδειγμα μόνο που εδώ
έχουμε ότι Γ1 ⊆ Γ2 και υποθέτουμε ότι οι Σ-εξισώσεις του Ε δεν έχουν συνθήκες
για κρυφούς τύπους. Τότε οι προδιαγραφές B1 και B2 είναι ισοδύναμες ανν όλοι οι
τελεστές του Γ2 είναι συμπεριφοριακά διατηρητικοί για την B1 .
94
Πριν κλείσουμε αυτή την εισαγωγή στις έννοιες της κρυφή άλγεβρας θα πρέπει
να αναφερθούμε λιγάκι στο κατα πόσο η προσέγγιση αυτή μπορεί να χρησιμοποιηθεί
για τη περιγραφή μη-ντετερμινιστικών συστημάτων. Τα σημερινά συστήματα υπολο-
γιστών βασίζονται όλο και περισσότερο σε αρχιτεκτονικές δικτύων για να επιτύχουν
τους σκοπούς τους. Παρόλ΄ αυτά επειδή οι κόμβοι ενός δικτύου εν γένει δεν εί-
ναι δυνατόν να γνωρίζουν ποια είναι η κατάσταση των άλλων κόμβων του δικτύου,
είναι απαραίτητο ο φορμαλισμός τέτοιων συστημάτων να μπορεί να υποστηρίξει έν-
νοιες όπως ο μη-ντετερμινισμός με απλό και φυσικό τρόπο ώστε να είναι εφαρμόσιμος
από τους μηχανικούς του λογισμικού. Δυστυχώς οι περισσότεροι διαθέσιμοι λογισμοί
εισάγουν την έννοια του μη-ντετερμινισμού με σύνθετους και αφύσικους τρόπους.
Στο πλαίσιο της κρυφής άλγεβρα η έννοια του μη-ντετερμινισμού είναι ήδη φυσικά
ενσωματωμένη στο φορμαλισμό. Μη-ντετερμινισμό έχουμε οποτεδήποτε οι τιμές ενός
ορατού τελεστή δεν είναι ορισμένες από τη προδιαγραφή. Για να κατανοήσουμε
καλύτερα αυτή την εισαγωγή του μη-ντετερμινισμού είναι χρήσιμο να θεωρήσουμε τα
μοντέλα (τις Σ-άλγεβρες δηλαδή) μία Σ-προδιαγραφής ως «πιθανούς κόσμους» στους
οποίους διαφορετικοί συνδυασμοί αυτών των μη ντετερμινιστικών επιλογών μπορεί να
εμφανιστούν σε διαφορετικούς κόσμους. Βέβαια κάθε τέτοιο μοντέλο είναι ντετερμιν-
ιστικό, απλά δεδομένης μίας Σ-προδιαγραφής μπορεί να υπάρχουν πολλά διαφορετικά
μοντέλα που την ικανοποιούν. Στη συνέχεια θα ορίσουμε τυπικά αυτές τις έννοιες.

Ορισμός. Δεδομένης μιας Σ-προδιαγραφής B = (Σ, Γ, E) θα λέμε ότι ένας επίπε-


δος όρος t είναι ορισμένος αν και μόνο αν για κάθε περιεχόμενο c[z] υπάρχει κάποιο
d ∈ D (στην ορατή Ψ−άλγεβρα δηλαδή ) τέτοιο ώστε B |=Σ,Γ c[t] = d. Διαφορετικά
θα λέμε ότι ο t δεν είναι ορισμένος. Τέλος θα λέμε ότι η B είναι λεξικογραφική (lexic)
αν και μόνο αν όλοι οι επίπεδοι όροι είναι ορισμένοι.

Πρόταση. Τα ακόλουθα ισχύουν:


• ΄Ενας ορατός όρος είναι ορισμένος ανν υπάρχει d ∈ D τέτοιο ώστε B |=Σ,Γ
t=d
• το B είναι λεξικογραφική ανν όλοι οι ορατοί επίπεδοι όροι είναι ορισμένοι.
• ΄Ολοι οι αόρατοι όροι είναι ορισμένοι, όπου ένας επίπεδος όρος καλείται αόρα-
τος ανν είναι κρυφού τύπου και δεν έχει περιεχόμενο.
• το B είναι λεξικογραφική αν δεν έχει κρυφές σταθερές.

΄Οταν δεν έχουμε μη ορισμένους όρους έχουμε μία μη-ντετερμινιστική προδια-


γραφή. Παρόλ΄ αυτά δεν απαιτείται κάτι τέτοιο από μία συμπεριφοριακή προδιαγραφή
το αντίθετο. Οι μη-ορισμένοι όροι μπορούν να είναι πολύ χρήσιμοι κατα το σχεδιασμό
ενός συστήματος. Αντί να ορίζουμε αυστηρά ότι κάτι δεν είναι ορισμένο μπορούμε
απλά να μην το ορίσουμε, έτσι μπορεί να πάρει οποιαδήποτε τιμή (κατά την υλοποίηση)
η οποία είναι συνεπής με την υπόλοιπη προδιαγραφή.
95
Παράδειγμα. Για να κατανοήσουμε καλύτερα την έννοια του μη-ντετερμινισμού
ας θεωρήσουμε μία πολύ απλή προδιαγραφή όπου έχουμε μόνο ένα κρυφό τύπο s, για
ορατή χαρακτηριστική αυτή των φυσικών αριθμών (με ορατό τύπο N at) και τέλος μία
κρυφή σταθερά τη c ∈ Σ→s και ένα τελεστή a ∈ Σs→N at .
Με βάση αυτή τη προδιαγραφή υπάρχει ακριβώς ένας μη-ορισμένος ορατός όρος ο
a(c). ΄Ετσι σημασιολογικά αυτή η προδιαγραφή ορίζει μια μη-ντετερμινιστική επιλογή
ενός φυσικού αριθμού και πράγματι ως προς τη συμπεριφοριακή ισοδυναμία υπάρχει
μόνο μία προσιτή Σ-άλγεβρα για κάθε τέτοια επιλογή (οι οποίες είναι άπειρες).
Αν προσθέσουμε και ένα αξίωμα στη θεωρία μας, για παράδειγμα ότι a(c) <
sss0 = true (όπου s ∈ §N at→N at , ένας τελεστής που σηματοδοτεί τον επόμενο ενός
φυσικού αριθμού) τότε η μη-ντετερμινιστική επιλογή μας περιορίζεται έτσι ώστε να
υπάρχουν μόνο τέσσερα προσιτά μοντέλα, καθένα από τα οποία ορίζει ένα κόσμο
όπου το a(c) παίρνει τις τιμές 0, 1, 2, 3.

Τα πράγματα γίνονται πιο ενδιαφέροντα όταν εκτός από παρατηρήσεις (τελεστές


με ορατό σύνολο τιμών) έχουμε και μεθόδους (τελεστές με κρυφό σύνολο τιμών).
Τα στοιχεία κρυφού τύπου αναπαριστούν τις καταστάσεις ενός συστήματος. ΄Ετσι, αν
εφαρμόσουμε μία μέθοδο σε ένα στοιχείο κρυφού τύπου παίρνουμε μία νέα κατάσταση.

Παράδειγμα. ΄Εστω η προδιαγραφή N DST ACK μιας στοίβας η οποία βάζει


μη-ντετερμινιστικά ένα φυσικό αριθμό στην κορυφή της στοίβας.

Τηεορψ, ΝΔΣΤΑ῝Κ
ηιδδεν σορτ, σταςκ
οπερατιονς, εμπτψ : -᾿ σταςκ
πυση : σταςκ -᾿ σταςκ
ποπ : ποπ -᾿ σταςκ
τοπ : σταςκ -᾿ Νατ
αξιομς: φοραλλ Σ.σταςκ,
ποπ πυση Σ = Σ
ποπ εμπτψ = εμπτψ

Στην παραπάνω προδιαγραφή όροι όπως ο top(push(empty)) δεν είναι ορισμένοι,


δηλαδή είναι μη-ντετερμινιστικοί και μπορούν να πάρουν οποιαδήποτε τιμή. Επειδή
τα μοντέλα όμως είναι ντετερμινιστικά αναπαριστούν ένα από τους πιθανούς τρόπους
επίλυσης αυτού του μη ντετερμινισμού. Η συμπεριφοριακή ικανοποίηση της εξίσωσης
pop(push(S)) = S συνεπάγεται ότι για οποιοδήποτε μοντέλο της προδιαγραφής μας
αυτής όταν ένας αριθμός μπαίνει στη κεφαλή της στοίβας θα παραμένει εκέι μέχρι να
γίνει pop, δηλαδή θα ισχύει ότι top(pop(push(S))) = top(S) κ.ο.κ. Παρόλα αυτά δεν
96
θα ισχύει ότι top(push(pop(S))) = top(S) γιατί εξαιτίας του μη-ντετερμινισμού του
pop μπορεί να εισαχθεί διαφορετικό στοιχείο στη στοίβα από αυτό που είχε αρχικά.

* Η ΚΛΑΣΣΙΚΗ ΕΞΙΣΩΤΙΚΗ ΛΟΓΙΚΗ ΜΕ ΤΥΠΟΥΣ


στω I ένα σύνολο δεικτών· τότε ένα I−σύνολο με δείκτες A επισυνάπτει ένα
σύνολο Ai σε κάθε δείκτη i του I. ΄Εστω ότι A και B είναι δύο I−σύνολα με δείκτες·
τότε καλούμε απεικόνιση ή μορφισμό μεταξύ των δύο I−συνόλων με δείκτες, (και
συμβολίζουμε με f : A → B), την I−οικογένεια συναρτήσεων fi : Ai → Bi για κάθε
i ∈ I. Η σύνθεση μεταξύ δύο I−οικογενειών συναρτήσεων ορίζεται με τον προφανή
τρόπο (f ◦ g)i = fi ◦ gi για κάθε δείκτη i ∈ I. ΄Ετσι, ορίζουμε την κατηγορία SetI
των I−συνόλων με δείκτες. Θα συμβολίσουμε με A =< Ai |i ∈ I > ένα I−σύνολο
με δείκτες και στοιχεία Ai και με f =< fi |i ∈ I > μια I−οικογένεια συναρτήσεων
A → B μεταξύ I−συνόλων με δείκτες όπου fi : Ai → Bi . ΄Ολες οι βασικές έννοιες
της θεωρίας συνόλων επεκτείνονται άμεσα στα I−σύνολα με δείκτες. Για παράδειγμα,
A ⊆ B =< Ai ⊆ Bi |i ∈ I > , A ∩ B =< Ai ∩ Bi |i ∈ I > , κ.τ.λ.

Τα μη Λογικά Σύμβολα της Εξισωτικής Λογικής με Τύπους.


Χαρακτηριστικές (Σιγνατυρες). Τα μη λογικά σύμβολα της εξισωτικής λογικής
με τύπους προέρχονται από ένα ζεύγος hΣ, Σi, όπου S είναι ένα σύνολο τύπων και
Σ είναι μια S ∗ ×S οικογένεια συνόλων τελεστών. Τα ζεύγη αυτά για λόγους συν-
τομίας θα τα καλούμε από εδώ και στο εξής εξισωτικές χαρακτηριστικές (εχυατιοναλ
σιγνατυρες). Για λόγους απλότητας πολλές φορές γράφουμε Σ αντί για hΣ, Σi. Τα
σύμβολα σ του Σu,s λέμε ότι έχουν αρχή u, τέλος s, και ίχνος u, s. Θα τα
συμβολίζουμε δε με σ : u → s.
΄Ενας μορφισμός ϕ μεταξύ των χαρακτηριστικών hΣ, Σi και hΣ΄, Σ΄i, είναι ένα
ζεύγος hf, gi, αποτελούμενο από μία απεικόνιση f : S → S’ μεταξύ των συνόλων των
τύπων και μια S ∗ ×S−οικογένεια μορφισμών gu,s : Σu,s → Σf ∗ (u),f (s) μεταξύ συμ-
βόλων τελεστών, όπου f ∗ : S∗ → (S’) είναι η επέκταση του f σε αλυσίδες συμβόλων9.
Συχνά χρησιμοποιούμε τους συμβολισμούς ϕ(s) αντί για f (s), ϕ(u) αντί για f ∗ (u),
και ϕ(σ) αντί για gu,s (σ) όταν σ ∈ Σu,s .
Η κατηγορία των χαρακτηριστικών, έστω Sig, έχει τις χαρακτηριστικές ως αν-
τικείμενα, και τους μορφισμούς μεταξύ χαρακτηριστικών ως μορφισμούς.
Σ-΄Αλγεβρες. ΄Εστω μια χαρακτηριστική Σ· μια Σ−άλγεβρα ερμηνεύει κάθε τύπο
σαν ένα σύνολο και κάθε τελεστή σαν μια συνάρτηση. Οι Σ− άλγεβρες αντιστοιχούν
στην προγραμματιστική έννοια των διακριτών τύπων δεδομένων (δισςρετε δατα τψπες).
΄Εστω μια χαρακτηριστική hΣ,Σi. Τότε μια Σ−άλγεβρα A αποτελείται από μια
S−οικογένεια συνόλων |A| = hAs |s ∈ Si (από φορείς του Α), μαζί με μια S ∗ ×
9Το f ∗ : S∗ → (S’) ορίζεται ως ακολούθως: f ∗ ([, ]) = [, ] , όπου [, ] συμβολίζει την κενή αλυσίδα
συμβόλων και f ∗ (ωs) = f ∗ (ω)f (s), για κάθε s ∈ S.

97
S−οικογένεια a συναρτήσεων au,s : Σu,s → [Au → As ] για u ∈ S∗ και s ∈ S, όπου
As1...sn = As1 × . . . × Asn και [A → b] δηλώνει το σύνολο όλων των συναρτήσεων
από το A στο B. Για u = s1 . . . sn , σ ∈ Σu,s και (a1 , . . . , an ) ∈ Au θα γράφουμε
(a1 , ..., an ) αντί για au,s (σ) (a1 , . . . , an ).
΄Εστω μια χαρακτηριστική Σ, τότε ένας Σ−ομομορφισμός από μια Σ−άλγεβρα
hA, ai σε μια άλλη Σ−άλγεβρα hA0 , a0 i είναι μια S−οικογένεια f : A → A0 έτσι ώστε
για κάθε σ ∈ Σu,s και κάθε a = (a1 , . . . , an ) ∈ Au να ισχύει η εξής συνθήκη
ομομορφισμού:

fs (a (σ) (a1 , ..., an )) = a0 (σ) (fs1 (a1 ) , ..., (an ))

Η κατηγορία AlgΣ των Σ−αλγεβρών έχει τις Σ−άλγεβρες ως αντικείμενα και τους
Σ−ομομορφισμούς ως μορφισμούς.

Ο συναρτητής Alg : Sig → Catοπ στέλνει κάθε χαρακτηριστική Σ στην κατη-


γορία Alg(Σ) όλων των Σ−αλγεβρών, και κάθε μορφισμό φ = hf : S → S 0 , g : Σ → Σ0 i
στο συναρτητή Alg(φ) : AlgΣ΄ → AlgΣ στέλνοντας

(1) κάθε Σ−άλγεβρα hA0 , a0 i στη Σ−άλγεβρα hA, ai με As = A0f (S) , a = g ◦ a0


και
(2) κάθε Σ0 −ομομορφισμό h0 : A0 → B 0 στο Σ−ομομορφισμό

Alg (φ) (h0 ) = h : Alg (φ) (A0 ) → Alg (φ) (B 0 ) οριζόμενο μέσω hs = hf (s).

Πολλές φορές συμβολίζουμε με φ (A0 ) την Alg (φ) (A0 ) και με φ (h0 ) τον Alg (φ) (h0 ).
΄Εστω S το σύνολο των τύπων μιας χαρακτηριστικής Σ, τότε υπάρχει ένας συναρτητής
πουξεχνάει (φοργετφυλ φυνςτορ) U : AlgΣ → SetS , ο οποίος στέλνει κάθε
άλγεβρα στην S−οικογένεια φορέων της, και κάθε Σ−ομομορφισμό στην αντίστοιχη
S−οικογένεια απεικονίσεων.
Για κάθε S−σύνολο με δείκτες Q, μπορούμε να ορίσουμε μια ελεύθερη άλγε-
βρα, ή άλγεβρα όρων, που θα συμβολίζουμε με TΣ (Q), όπου |TΣ (X)|s αποτελείται
από όλους τους Σ−όρους τύπου s με μεταβλητές από το Q, δηλαδή κάθε φορέας
(TΣ (X))s αποτελείται από όλους τους όρους τύπου s που χρησιμοποιούν μεταβλητές
από το Q και κατασκευάζονται με τη βοήθεια τελεστών από το Σ. Το S−σύνολο
με δείκτες TΣ (X) σχηματίζει μια Σ−άλγεβρα. Ορίζουμε τους φορείς (TΣ )s ως το
ελάχιστο σύνολο από αλυσίδες συμβόλων τέτοιο ώστε:

(1) ΣX,s ⊆ TΣ,s και


(2) Σs1 ...sn ,s και ti ∈ TΣ,si , έπεται ότι η αλυσίδα συμβόλων σ(t1 , . . . , tn ) ανήκει
στην TΣ,s .

Ορίζουμε τη συνάρτηση a που επιτρέπει στην TΣ (Q) να σχηματίζει μια Σ−άλγεβρα


ως ακολούθως:
98
(1) για κάθε a ∈ ΣX,s έστω α(σ) η αλυσίδα που περιλαμβάνει μόνο το σύμβολο
σ μήκους 1 και ανήκει στο TΣ,s και
(2) για κάθε σ ∈ Σs1 ...sn ,s και ti ∈ TΣ,si έστω ότι a(σ)(t1 , . . . , tn ) είναι η
αλυσίδα συμβόλων σ(t1 , . . . , tn ) στο TΣ,s .
Ορίζουμε Σ(Q) να είναι η χαρακτηριστική που ορίζεται ως (Σ (Q))[,],s = Σ[,],s ∪Xs
και (Σ (X))u,s = Σu,s εάν u 6= [, ]. Τότε, ως TΣ (X) ορίζουμε τη Σ−άλγεβρα TΣ(X) .
Η Σ−άλγεβρα TΣ(X) είναι ελεύθερη όπως προκύπτει από το παρακάτω θεώρημα.

Θεώρημα. ΄Εστω ότι ο μορφισμός iX : X → U (TΣ (X)) δηλώνει το περιέχεσ-


θαι του Q στο U (TΣ (X)). Τότε, ισχύει η εξής καθολική (υνιvερσαλ) ιδιότητα για
κάθε ΣΓάλγεβρα B: κάθε S−οικογένεια συναρτήσεων f : X → B, (που καλείται
συνάρτηση επισύναψης(ασσιγνμεντ φυνςτιον), επεκτείνεται μοναδικά σε

ένα Σ−ομομορφισμό f # : TΣ (X) → B έτσι ώστε iX : U f # = f .

΄Οταν X = ∅, τότε υπάρχει ένας μοναδικός Σ−ομομορφισμός από την TΣ σε κάθε


άλλη ΣΓάλγεβρα. Συνεπώς, η TΣ είναι αρχική (ινιτιαλ) Σ−άλγεβρα.

Εξισώσεις και Σχέση Ικανοποίησης. Ορίζουμε τώρα την έννοια της


εξίσωσης και της ικανοποίησης μιας εξίσωσης από μία Σ−άλγεβρα. Καταρχήν, έστω
ένα άπειρο σύνολο X από μεταβλητές. Τότε μια συνάρτηση επισύναψης τύπων
(σορτ ασσιγνμεντ φυνςτιον) είναι μια μερική συνάρτηση X : X → S όπου S εί-
ναι ένα σύνολο τύπων. ΄Εστω επίσης ότι το X δηλώνει το S−σύνολο δεικτών με
Qs = {x ∈ X | X (x) = s}.

Ορισμός. Μία Σ−εξίσωση e είναι μια τριάδα hX, t1 , t2 i, όπου X : X → S είναι


μια συνάρτηση επισύναψης τύπων, S είναι το σύνολο τύπων του Σ, και t1 , t2 ∈ |TΣ (X)|
έχουν τον ίδιο τελικό τύπο s ∈ S. Μια τέτοια εξίσωση τη γράφουμε πολλές φορές ως
(∀X) t1 = t2 .

Ορισμός. Μία Σ−άλγεβρα A ικανοποιεί μια Σ−εξίσωση (∀Q)t1 = t2


αν και μόνο αν a(t1 ) = a(t2 ) για κάθε συνάρτηση επισύναψης a : X → |A|. Σ΄ αυτή
την περίπτωση γράφουμε Ae.

Ορισμός. ΄Εστω φ : Σ → Σ0 ένας μορφισμός χαρακτηριστικών. Επίσης έστω Χ :


Χ → S μια συνάρτηση επισύναψης τύπων και X 0 η συνάρτηση επισύναψης τύπων Q◦f .
Στη συνέχεια ορίζουμε την S−οικογένεια απεικονίσεων φ : |TΣ (X)| → |φ (TΣ0 (X 0 ))|
ως εξής: καταρχήν Χ ⊆ |(TΣ0 (X 0 ))| αφού εάν x ∈ Xs τότε x ∈ Xf0 (s) και Xf0 (s) ⊆
|TΣ0 (X 0 )|f (s) = |φ (TΣ0 (X 0 ))|s . ΄Εστω j : X → |φ (TΣ0 (X 0 ))| δηλώνει το περιέχεσθαι
του X στο |φ (TΣ0 (X 0 ))|. Τότε ο j επεκτείνεται μοναδικά σε έναν Σ−ομομορφισμό

j # : TΣ (X) → |φ (TΣ0 (X 0 ))| και έτσι ορίζουμε ϕ∼ = j # .

Ορισμός. Ο συναρτητής Eqn : Sig → Set στέλνει κάθε χαρακτηριστική Σ στο


σύνολο Eqn (Σ) όλων των Σ−εξισώσεων και κάθε ζεύγος φ = hf, gi : Σ → Σ0 στη
99
συνάρτηση Eqn (φ) : Eqn (Σ) → Eqn (Σ0 ) που ορίζεται ως εξής:

Eqn (φ) (hX, t1 , t2 i) = hX ◦ f, φ∼ (t1 ) , φ∼ (t2 )i .

Αντί για Eqn (φ) (e) θα γράφουμε πολλές φορές απλά φ (e).

Πρόταση. ΄Εστω φ : Σ → Σ0 ένας μορφισμός χαρακτηριστικών, e μια Σ−εξίσωση


και A0 μια Σ0 −άλγεβρα. Τότε ισχύει η εξής συνθήκη ικανοποίησης:

A0 φ (e) εάν και μόνο εάν φ (A0 ) e.

Παραδείγματα από τον Αλγεβρικό Προγραμματισμό.


Χαρακτηριστικές.

Παράδειγμα. Οι τύποι (sorts) αντιστοιχούν σε διάφορους τύπους δεδομένων


(datatypes) όπως ακέραιοι, μεταβλητές, πίνακες, μπουλιανές εκφράσεις, κ.τ.λ.
Οι τελεστές (operators) ορίζονται ως «συναρτήσεις» με τη βοήθεια των τύπων.
Για παράδειγμα
όπου V ar οι μεταβλητές ως τύπος
Exp οι εκφράσεις ως τύπος
P gm τα προγράμματα ως τύπος.
Ο τελεστής
opV arExp → P gm
έχει ως «είσοδο» μια μεταβλητή και μια έκφραση και ως «έξοδο» ένα πρόγραμμα.
Δηλαδή για παράδειγμα το
XX + 1
έχει τύπο P gm με την υπόθεση ότι το M έχει τύπο V ar και ότι οι εκφράσεις με τύπο
Exp περιλαμβάνουν εκφράσεις όπως X + 1.

Ορισμός. Μια χαρακτηριστική Σ αποτελείται από ένα σύνολο τύπων S και μια
οικογένεια {Σω,s |ω ∈ Σ∗ , s ∈ S} από σύνολα τελεστών.

Το αντικείμενο των φυσικών αριθμών

οβθ · Νατ · ισ῏῏


· σορτ · Νατ῏῏
· οπ · Ο:῏ριγηταρροω Νατ῏῏
· οπ · Σ:Νατ῏ριγηταρροω Νατ῏῏
ενδο.

Μια θεωρία για τα αυτόματα


100
τη · ΑΥΤΟΜ · ισ῏῏
· σορτς · Ινπυτ῏,Ουτπυτ῏῏
· οπ · ι:῏ριγηταρροω Στατε῏῏
· οπ · φ:Ινπυτ῏,Στατε῏ριγηταρροω Στατε῏῏
· οπ · γ:Στατε῏ριγηταρροω Ουτπυτ῏῏
ενδτη

Φιγυρε 0.0.36

΄Ενα αντικείμενο για τις εκφράσεις των φυσικών αριθμών είναι:

οβθ · ΝΑΤΕΞΠ · ισ῏῏


· οπ · Ο:῏ριγηταρροω Εξπ῏῏
· οπ · Σ:Εξπ῏ριγηταρροω Εξπ῏῏
· οπ · ὖνδερβαρ«»*ὖνδερβαρ«»:Εξπ῏:Εξπ῏ριγηταρροω Εξπ῏῏
ενδο

Φιγυρε 0.0.37

Η θεωρία των γραφημάτων


101
τη · ΓΡΑΠΗ · ισ῏῏
· σορτς · Εδγε῏,Νοδε῏῏
· οπς · ῏λεφτ(σὖνδερβαρ«»῏ριγητ)῏λεφτ(τὖνδερβαρ«»῏ριγητ):Εδγε῏,Νοδε῏῏
ενδτη

Φιγυρε 0.0.38

subsort t1 < t2
Τα σύνολα που αντιστοιχούν στους τύπους t1 και t2 σχετίζονται με τη σχέση του
περιέχεσθαι. Π.χ.

subsort N at < Int


subsort N at < Int < Rat < Real

Σ-΄Αλγεβρες.
AV ar × AExp → AP gm
είναι η συνάρτηση που ερμηνεύει τον τελεστή που χρησιμοποιήσαμε ως παράδειγμα:
AV ar :το σύνολο των αντικειμένων με τύπο V ar
AExp :το σύνολο των αντικειμένων με τύπο Exp (το σύνολο των εκφράσεων)
AP gm :το σύνολο των αντικειμένων με τύπο P gm (το σύνολο των προγραμμάτων)
΄Εστω μια χαρακτηριστική Σ με σύνολο τύπων S· μια Σ−άλγεβρα A αποτελείται
από σύνολα φορέων (ςαρριερ σετ) AS για κάθε τύπο s ∈ S, μαζί με μια συνάρτηση

Aσ : As1 × . . . × Asn → As

για κάθε τελεστή σ : s1 . . . sn ∈ Σω,s όπου ω = s1 . . . sn 6= ∅ και μια σταθερά Aσ ∈ As


για κάθε σ ∈ Σ[],s .
Η ΄Αλγεβρα είναι η ερμηνεία ή το μοντέλο για τη χαρακτηριστική Σ.
΄Εστω, για παράδειγμα, ΣN AT η χαρακτηριστική του αντικειμένου N AT . Τότε οι
φυσικοί αριθμοί είναι μια ΣN AT −άλγεβρα με τον εξής τρόπο:

AN at =ω= {0, 1, 2, . . .}
A0 = 0
As (n) = n + 1
102
Η παραπάνω ερμηνεία δεν είναι όμως η μοναδική. Ιδού τα εξής παραδείγματα:
Ας ορίσουμε την άλγεβρα B ως εξής

BN at = {0, 1}
B0 = 0
Bs (n) = 1−n

Ομοίως ορίζουμε την άλγεβρα C ως εξής

CN at = {0}
C0 = 0
Cs (0) = 0

΄Οροι. Το σύνολο των Σ−όρων τύπου S, συμβολικά TΣ,s για s ∈ S ορίζεται από
τις εξής δύο συνθήκες:

(1) εάν σ ∈ Σ[],s τότε σ ∈ TΣ,s


(2) εάν σ ∈ Tω,s όπου ω = s1 . . . sn 6= ∅ και εάν ti ∈ TΣ,si για i = 1, . . . , n τότε
σ (t1 , . . . , tn ) ∈ TΣ,s

TΣ = (TΣ,s )s∈S
όπου TΣ η αρχική άλγεβρα στην κατηγορία των Σ−αλγεβρών (ονομάζεται άλγεβρα
όρων).
Το TΣ είναι άλγεβρα ως εξής:

s → (TΣ )s
σ ∈ Σ[],s → σ ∈ TΣ,s
σ ∈ Tω,s : (t1 , . . . , tn ) → σ (t1 , . . . , tn )

όπου t1 , . . . , tn → σ (t1 , . . . , tn ), ti ∈ TΣ,si , i = 1, . . . , n.


Χρησιμοποιώντας τη χαρακτηριστική ΣN AT EXP σχηματίζουμε τους παρακάτω
όρους τύπου Exp:

(ss0) ∗ (ss0)
(ss0) + ((s0) ∗ (sss))
(ss ((ss0) ∗ (ssss0))) + ((sss0 ∗ (sss0)))

Για τα αυτόματα η αρχική άλγεβρα είναι


103
TΣAU T OM ,Input = ∅
TΣAU T OM ,State = {i}
TΣAU T OM ,Output = {g (i)}

Μεταβλητές και Συναρτήσεις Επισύναψης


Δηλώνουμε τις μεταβλητές ως εξής: var X, Y, Z : Exp

Ορισμός. ΄Εστω μια χαρακτηριστική Σ, μια χαρακτηριστική που αποτελείται μόνο


από σταθερές (γρουνδ σιγνατυρε) Ξ ξεχωριστή από τη Σ και μια Σ−άλγεβρα A·
τότε μια επισύναψη τιμών από το A σε «μεταβλητές» από την Ξ είναι μια οικογένεια
συναρτήσεων
Θs : Ξ Σ[],,s → As
μία για κάθε s ∈ S.
Η Θ είναι μια ερμηνεία (ιντερπρετατιον) Θ : Ξ → A την οποία ορίζουμε ως εξής

Θs : (TΣ∪Ξ )s → As

δηλαδή
(1) Θs (X) = Θ (X) για X στο Ξ[],,s και Θs (c) = Ac για c στο Σ[],,s .
(2) ΄Εστω σ ∈ Σs1 ,...,sn,s και ti ∈ TΣ,si με Θ (ti ) = ai για i = 1, . . . , n, τότε
Θ (σ (t1 , . . . , tn )) = Aσ (a1 , . . . , an )

Θ : TΣ∪Ξ → A

όπου Θs : Σ−ομομορφισμός, TΣ∪Ξ :άλγεβρα όρων.

Εξισώσεις. eq X + Y = Y + X (στην OBJ).

Ορισμός. Μία Σ−εξίσωση αποτελείται από μια χαρακτηριστική που αποτελείται


μόνο από σταθερές Ξ (ξεχωριστά από τη Σ) και δύο (Σ ∪ Ξ) −όρους του ίδιου τύπου
που τους ονομάζουμε αριστερό και δεξιό σκέλος της εξίσωσης.

Συμβολισμός: (∀Ξ) t1 = t2 με t1 , t2 ∈ (TΣ∪Ξ )s .


Χρειαζόμαστε ένα ακριβή ορισμό για το πότε μια άλγεβρα ικανοποιεί μια εξίσωση.

Ορισμός. ΄Εστω μια Σ−εξίσωση e της μορφής (∀Ξ) t = t0 και μια Σ−άλγεβρα
A. Λέμε ότι η A ικανοποιεί την e αν και μόνο αν Θ (t) = Θ (t0 ) για κάθε ερμηνεία
Θ : Ξ → A.

Παράδειγμα. Για παράδειγμα eq X = Y αν

X ∗Z == Y ∗Z
Z =/= 0
104
Μια Σ−εξίσωση υπό συνθήκη αποτελείται από τρεις Σ−όρους, έστω t1 , t2 , t3 με
μεταβλητές από κάποια χαρακτηριστική Ξ που αποτελείται μόνο από σταθερές, έτσι
ώστε οι σταθερές να είναι του ιδίου τύπου t1 , t2 και t3 να είναι τύπου Bool

(∀Ξ) t1 = t2 if t3

Μια Σ−εξίσωση και συνθήκη ικανοποιείται από μια Σ−άλγεβρα A αν και μόνο αν
για κάθε αντικατάσταση Θ : Ξ → A έχουμε ότι Θ (t1 ) = Θ (t2 ) όταν Θ (t3 ) = true.

Παράδειγμα. Η αλγεβρική δομή της ομάδας

th GROU P
sort Elt
op e :→ Elt
−1
op : Elt → Elt
op : Elt Elt → Elt
vars X, Y, Z : Elt
eq X ∗e=X
eq X ∗ (X − 1) = e
eq (X ∗ Y ) ∗ Z = X ∗ (Y ∗ Z)
endth

Παράδειγμα. Η δομή της λίστας


105
obj N AT LIST is
sorts N a N eList List
subsorts N at < N eList < List
op O :→ N at
op s : N at → N at
op nil :→ List
op ∗ : List List → List
op ∗ : N eList List → N eList
op ∗ : List N eList → N eList
op head : N eList → N at
op tail : N eList → List
vars X, Y, Z : List
V ar N : N at
eq X ∗ nil = X
eq nil ∗ X = X
eq (X ∗ Y ) ∗ Z = X ∗ (Y ∗ Z)
eq head (N ∗ X) = N
eq tail (N ∗ X) = X
eq head N = N
eq tail N = nil
endo

Η Λογική Προτάσεων του Ηορν (Ηορν ῝λαυσε Λογις). Η λογική


προτάσεων του Horn(HCL) αποτελεί τη βάση για τη γλώσσα λογικού προγραμμα-
τισμού Προλογ.

Ορισμός. Μια πρωτοβάθμια χαρακτηριστική (φιρστ-ορδερ σιγνα-


τυρε) Ω αποτελείται από την εξής τριάδα hS, Σ, Πi, όπου
(1) Σ είναι ένα σύνολο (από τύπους),
(2) Σ είναι μια S∗×S−οικογένεια συνόλων (από συναρτησιακά σύμβολα),
και
(3) Π είναι μια S ∗ −οικογένεια συνόλων (από κατηγορηματικά ή σχεσι-
ακά σύμβολα).
106
΄Ενας μορφισμός πρωτοβάθμιων χαρακτηριστικών, από το Ω στο Ω0 , είναι μια
τριάδα hφ1 , φ2 , φ3 i , όπου
(1) φ1 : S → S 0 είναι μια συνάρτηση
(2) φ2 : Σ → Σ0 είναι μια S ∗ ×S−οικογένεια συναρτήσεων

(φ2 )u,s : Σu,s → Σφi∗(u), φ1 (s)

(3) φ3 : Π → Π0 είναι μια S ∗ −οικογένεια συναρτήσεων

(φ3 )u : Πu → Πφ∗ (u)

΄Εστω FoSig ή κατηγορία με αντικείμενα πρωτοβάθμιες χαρακτηριστικές και μορ-


φισμούς τους μορφισμούς μεταξύ πρωτοβάθμιων χαρακτηριστικών.

Ορισμός. ΄Εστω Ω μια πρωτοβάθμια χαρακτηριστική, τότε ένα Ω−μοντέλο (ή


μια Ω−δομή) Α αποτελείται από:
(1) μια S−οικογένεια |A| αποτελούμενη από μη κενά σύνολα hAs |s ∈ Si, όπου
As καλείται φορέας τύπου s, και
(2) μια S ∗ ×S−οικογένεια a από συναρτήσεις au,s : Σu,s → [Au → As ] που
επισυνάπτει συναρτήσεις/μια συνάρτηση σε κάθε συναρτησιακό σύμβολο και
μια S∗−οικογένεια β από συναρτήσεις βu : Πu → P ow(Au ) που επισυνάπτει
μια σχέση σε κάθε κατηγορηματικό σύμβολο, όπου P ow (A) δηλώνει το
σύνολο όλων των υποσυνόλων του A (δυναμοσύνολο του A).
΄Ενας μορφισμός πρωτοβάθμιων μοντέλων h : M → M 0 μεταξύ των
(Σ, Π) μοντέλων M και M 0 είναι ένας ΣΓομομορφισμός τέτοιος ώστε για κάθε κατη-
γορηματικό σύμβολο pi , εάν m ∈ πM δίνει h (m) ∈ πM 0 .

΄Εστω FoMod η κατηγορία πρωτοβάθμιων μοντέλων με αντικείμενα πρωτοβάθμια


μοντέλα και μορφισμούς πρωτοβάθμιων μοντέλων ως μορφισμούς. Η FoMod επεκ-
τείνεται σε ένα συναρτητή FoSig → Catop ως ακολούθως: ΄Εστω ένας μορφισμός
μεταξύ πρωτοβάθμιων χαρακτηριστικών φ : Ω → Ω0 , τότε ορίζουμε το συναρτητή (ως
εξής):
FoMod (φ) : FoMod(Ω0 ) → FoMod(Ω)
να στέλνει καταρχήν τα A0 ∈ |FoMod(Ω0 )| στο A = ϕA0 όπου
(1) As = A0s0 για s ∈S με s’ = ϕ1 (s)0 ,
(2) au,s (σ) = a0u0 ,s0 (φ2 )u,s (σ) για u ∈ S∗, s ∈ S και σ ∈ Σu,s όπου u0 =
φ ∗1 (u) και s0 = ϕ1 (s), 
(3) βu (π) = βu0 0 (φ3 )u,s (σ) για u ∈ S∗ και π ∈ Πu με u0 όπως παραπάνω,
και στη συνέχεια, να στέλνει κάθε f 0 : A0 → B 0 από το FoMod(Ω0 ) στο f = φf 0 :
A → B του FoMod(Ω), όπου A = φA0 και B = φB 0 , οριζόμενο ως fs = fs0 0 όπου
s’ = φ1 (s).
107
Οι προτάσεις κατά Horn ορίζονται πάνω σε μια πρωτοβάθμια χαρακτηριστική Ω.
΄Εστω ένα άπειρο σύνολο μεταβλητών, και έστω X : X → S μια μερική συνάρτηση που
επισυνάπτει τύπους στις μεταβλητές. Το Q επίσης δηλώνει το S−σύνολο με Xs =
{x ∈ X|X (x) = s}. Επίσης ορίζουμε την S−οικογένεια termX (Ω) αποτελούμενη
από (Ω, X)−όρους που ανήκουν στους φορείς του TΣ (X) (την ελεύθερη Σ−άλγεβρα
με γεννήτορες X). Ορίζουμε τώρα το σύνολο term (Ω) ως τη ξεχωριστή (δισθοιντ)
ένωση όλων των termX (Ω).

Ορισμός. Μία καλώς ορισμένη (Ω, X) −πρόταση Ηορν (Ηορν–ςλαυσε


σεντενςε) έχει τη μορφή:

π (t1, . . . , tn) |π ∈ Πu όπου u = s1 . . . sn και ti ∈ termX (Ω)si .

΄Εστω HCL (Ω) το σύνολο όλων των Ω−προτάσεων Ηορν, δηλαδή η διακριτή
ένωση των συνόλων HCLX (Ω) από κλειστές (Ω, X) Γπροτάσεις.

Τώρα ορίζουμε τη σχέση ικανοποίησης . ΄Εστω A ένα πρωτοβάθμιο μοντέλο,


και έστω AsgnX (A) το σύνολο όλων των συναρτήσεων επισύναψης τιμών
του A σε μεταβλητές X, δηλαδή το σύνολο [X → A], όλων των S−οικογενειών
συναρτήσεων f : X → A.

Ορισμός. ΄Εστω R μια πρόταση Ηορν, ορίζουμε ως AsgnX (A, P ), το σύνολο


των συναρτήσεων επισύναψης στο A για το οποίο η P είναι αληθινή, αναδρομικά ως
εξής:
• εάν P = π (t1, . . . , tn) τότε f ∈ AsgnX (A, P ) αν και μόνο αν (f 0 (t1) , . . . , f 0 (tn)) ∈
β (π), όπου f 0 (t) δηλώνει την εκτίμηση (εvαλυατιον) του Σ−όρου t στην
Σ−άλγεβρα – μέρος του A όπως ακριβώς στην περίπτωση της κλασικής
εξισωτικής λογικής με πολλούς τύπους.
΄Ενα μοντέλο A ικανοποιεί μια πρόταση Ηορν P με μεταβλητές από το X αν και
μόνο αν AsgnX (A) = AsgnX (A, P ) (θα το γράφουμε AP ).

108
ΕΦΑΡΜΟΓΕΣ: ΟΙ ΑΛΓΕΒΡΙΚΕΣ
ΠΡΟΔΙΑΓΡΑΦΕΣ

Τμήματα. Στο προηγούμενο κομμάτι του κώδικα με τη λέξη κλειδί mod δηλώ-
νουμε την αρχή μίας προδιαγραφής που θα βρίσκεται μέσα στο σώμα του mod, δηλαδή
ανάμεσα από τα «». Ο χαρακτήρας ! ή * μετά από τη λέξη κλειδί mod δηλώνει ότι η
προδιαγραφή που θα ακολουθήσει θα έχει είτε πρωταρχική είτε ’χαλαρή’ σημασιολογία
(δηλαδή θα δηλώνει όλα τα μοντέλα που ικανοποιούν την προδιαγραφή και όχι μόνο
τα ισομορφικά με το πρωταρχικό μοντέλο).
Τύποι. Τα ονόματα των τύπων που ορίζει η προδιαγραφή δηλώνονται μέσα σε
αγκύλες (π.χ. [SN at]). ΄Ενα σύμβολο <, ανάμεσα στα ονόματα δύο τύπων δηλώνει
ότι ο ένας είναι υποτύπος του άλλου.
Τελεστές. Η λέξη κλειδί op ξεκινά τη δήλωση ενός τελεστή του οποίου το πεδίο
ορισμού δηλώνεται πριν την άνω και κάτω τελεία και ο τύπος του συνόλου τιμών μετά
το βέλος. Συνήθως τον τύπο του συνόλου τιμών μαζί με αυτόν του πεδίου ορισμού
τους ονομάζουμε τάξη (rank) του τελεστή. Η γλώσσα υποστηρίζει την δήλωση δι-
αφόρων ιδιοτήτων των τελεστών μέσα σε {} με τη χρήση διαφόρων λέξεων κλειδιών,
για παράδειγμα η δήλωση ότι ο τελεστής είναι αντιμεταθετικός γίνεται χρησιμοποιών-
τας τη λέξη κλειδί assoc.
Εξισώσεις. Η λέξη κλειδί eq σηματοδοτεί την έναρξη του ορισμού μίας εξίσωσης,
στην οποία το δεξί της μέρος δηλώνεται πριν από το σύμβολο ’=’ ενώ το αριστερό
μετά από αυτό. Το τέλος της δήλωσης μιας εξίσωσης σηματοδοτείται από μία τελεία
’.’.
Μεταβλητές. Οι μεταβλητές δηλώνονται χρησιμοποιώντας τη λέξη κλειδί var ακολου-
θούμενη από το όνομα της μεταβλητής, μία άνω και κάτω τελεία και το τύπο της
μεταβλητής. Είναι δυνατόν να συμπτύξουμε τους ορισμούς πολλών μεταβλητών ίδιου
τύπου σε μία γραμμή χρησιμοποιώντας τη λέξη κλειδί vars. ΄Ετσι για παράδειγμα η έκ-
φραση vars N M : SNat σηματοδοτεί τη δήλωση δύο μεταβλητών με ονόματα N, M
που είναι τύπου SN at. Ακόμα είναι δυνατό να χρησιμοποιήσουμε σε μία εξίσωση
μεταβλητές που δεν έχουν οριστεί προηγουμένως, απλά δηλώνοντας το τύπο και το
όνομα της μεταβλητής μέσα στην εξίσωση. Αυτή η μεθοδολογία καλείται επιτόπου

109
δήλωση μεταβλητών. ΄Ετσι οι ακόλουθες δύο εξισώσεις έχουν ταυτόσημη σημασι-
ολογία: var N : SNat . eq (s(N) = 0) = false . και eq (s(N: SNat) =
0) = false .
Εξισώσεις υπό συνθήκη. Ακόμα η δήλωση μίας υπό-συνθήκης εξίσωσης γίνεται
με τη χρήση της κωδικής λέξης ceq, που ακολουθείται από μία εξίσωση στο τέλος
της οποίας βρίσκεται μία έκφραση της μορφής if P , όπου P είναι κάποιο κατηγόρημα.
΄Ετσι για παράδειγμα η δήλωση ceq (S(M) = S(N)) = true if (M = N) ορίζει
ότι ο όρος S(N ) είναι ίσος με τον όρο S(M ) αν οι όροι M, N είναι ίσοι (όπου Μ,Ν
μεταβλητές του ίδιου τύπου).
Ισότητες. Τέλος στη γλώσσα ορίζονται δύο ειδών ισότητες μέσω δύο κατηγορημάτων.
Ο πρώτος τελεστής ισότητας ορίζεται ως = , ενώ ο δεύτερος ως ==. Και οι δύο
τελεστές επιστρέφουν true αν τα δύο τους ορίσματα μπορούν να αναγραφούν (με βάση
το σύστημα αναγραφής της γλώσσας) στο ίδιο όρο. Αλλά ο όρος L : S == L0 : S
επιστρέφει f alse αν ο L αναγράφεται σε t1 και ο L0 σε t2 ενώ ο ορός L : S = L0 : S
θα επιστρέψει t1 = t2.
Σχόλια. Τέλος οι γραμμές που αρχίζουν με −− αποτελούν σχόλια και αγνοούνται
από τη μηχανή.
Θα εξετάσουμε τώρα εν συντομία πώς η γλώσσα υποστηρίζει τα διάφορα χαρακ-
τηριστικά που αναφέραμε προηγουμένως.

Τμηματικό σύστημα προδιαγραφών (Module System). Οι αρχές του


τμηματικού συστήματος της Caf eOBJ κληρονομούνται από την OBJ και βασίζον-
ται σε ιδέες οι οποίες για πρώτη φορά εμφανίστηκαν στη γλώσσα Clear και κυρίως
στη θεωρία θεσμών. Το τμηματικό σύστημα της γλώσσας μας επιτρέπει τη χρήση
διαφόρων ειδών εισαγωγής άλλων προδιαγραφών στη θεωρία που ορίζουμε (μέσω των
λέξεων κλειδιών pr, ex, . . . ) και παραμετρικού προγραμματισμού:
• πολλαπλές παραμέτρους σε μία προδιαγραφή
• views για την αρχικοποίηση των παραμέτρων
Για παράδειγμα ο παρακάτω κώδικας ορίζει μία παραμετρική προδιαγραφή ενός συνόλου:
mod* Elt{
[Elt]
op _=_ : Elt Elt -> Bool {comm}
eq (E:Elt = E) = true .
}

mod! SET(D :: Elt) {


[Elt.D < Set]
op _ _ : Set Set -> Set {assoc comm}
110
pred _in_ : Elt.D Set
vars X Y : Elt.D
var B : Set
eq X in Y = (X = Y) .
eq X in Y B = (X = Y) or (X in B) .
}
view Elt2Nat from EQL-Elt to NAT {
sort Elt -> Nat,
vars X Y : Elt,
op (X = Y) -> (X >= Y) and (X <= Y)
}
Η πρώτη προδιαγραφή (ELT) ορίζει με χαλαρή σημασιολογία μία πολύ απλή δομή
δεδομένων, αυτή του τυχαίου στοιχείου. Στη συνέχεια ορίζεται η παραμετρική προδι-
αγραφή του συνόλου από αυτά τα τυχαία στοιχεία (SET). Η παραμετρική προδιαγραφή
δίνεται μέσω της έκφρασης SET(D :: EQL-Elt) η οποία δηλώνει ότι η προδιαγραφή
SET έχει παράμετρο D που είναι μία θεωρία για την ELT . Στη συνέχεια μπορούμε
να αρχικοποιήσουμε αυτή τη παράμετρο με μία άλλη θεωρία που επεκτείνει την ELT
όπως η θεωρία για τους ακεραίους N AT . Αυτό επιτυγχάνεται μέσω του ορισμού ενός
μορφισμού τον οποίο καλούμε Elt2N at ο οποίος απεικονίζει το τύπο Elt στον N at
και το τελεστή = της ELT στη έκφραση (X >= Y) and (X <= Y) .

Σύστημα τύπων. Το σύστημα τύπων της Caf eOBJ είναι βασισμένο στην
άλγεβρα με πολλούς τύπους και διάταξη (ΑΤΔ) έτσι επιτρέπει τον ορισμό υποτύπων.
Αυτό προσφέρει αυστηρό έλεγχο των τύπων της προδιαγραφής καθώς και μία μεθοδολογία
για τον χειρισμό σφαλμάτων βασισμένη σε αυτό. Ακόμα αυτό το σύστημα επιτρέπει
συντακτική ευελιξία στη γλώσσα συγκρίσιμη με αυτή των γλωσσών χωρίς τύπους ενώ
ταυτόχρονα διατηρεί όλα τα πλεονεκτήματα των τύπων. Η Caf eOBJ δεν επιτρέπει
τον απευθείας ορισμό μερικών τελεστών. Για να μπορέσουμε να ορίσουμε τέτοιους
τελεστές μπορούμε να χρησιμοποιήσουμε το σύστημα των υποτύπων που μας προσ-
φέρει η γλώσσα. Για παράδειγμα αν επιθυμούσαμε να ορίσουμε μια προδιαγραφή για
τη δομή της στοίβας στην οποία δεν επιτρέπεται η εξαγωγή στοιχείου από την κενή
στοίβα (δηλαδή ο τελεστής pop να είναι μερικά ορισμένος), τότε θα μπορούσαμε να το
επιτύχουμε με την παρακάτω προδιαγραφή:
mod* Elt{
[Elt < EltErr]
op err : -> EltErr
op _=_ : Elt Elt -> Bool {comm}
eq (E:Elt = E) = true .
eq (E:Elt = err) = false .
111
}

mod! Stack(D :: Elt) {


pr(EQL)
[Elt.D <EltErr < Stack < StackErr]

op push : Stack Elt.D -> Stack {constr}


op pop : Stack -> StackErr
op head : Stack -> Elt.D
op empty : -> Stack
--
vars X Y : Elt.D
var S : Stack
var B : Set
--
eq pop(empty) = err .
ceq pop(push(S,X)) = err if (S = empty) .
}
΄Οπου EltErr είναι ένας υπερτύπος του Elt και δηλώνει ένα ’λάθος’ στοιχείο. Ακόμα
err είναι μία σταθερά αυτού του ’λάθος’ τύπου που είναι διαφορετική από κάθε στοιχείο
τύπου Elt. Χρησιμοποιώντας αυτά μπορούμε να ορίσουμε τον pop σαν μερικό τελεστή
δηλώνοντας με την εξίσωση eq pop(empty) = err και ceq pop(push(S,X)) = err
if (S = empty). οτι η εφαρμογή του σε μία κενή στοίβα επιστρέφει ακριβώς αυτό
το λάθος στοιχείο.
Βεηαvιουραλ Σπεςιφιςατιονς. Η CafeOBJ υποστηρίζει απευθείας τις συμπεριφορια-
κές προδιαγραφές και την θεωρία αποδείξεών τους που αναπτύξαμε στη προηγούμενη
ενότητα μέσω ειδικών κατασκευασμάτων της γλώσσας. Πιο συγκεκριμένα ένας κρυ-
φός τύπος ορίζεται μέσα σε αγκύλες περιβαλόμενες από αστερίσκους, δηλαδή *[hid-
densortnames]*. Η σημασιολογία ενός τέτοιου τύπου είναι αυτή της κρυφής άλγε-
βρας δηλαδή αυτή των καταστάσεων ενός συστήματος. Οι συμπεριφοριακοί τελεστές
(behavioral operations) που όπως είπαμε περιέχουν στο πεδίο ορισμού τους ένα
κρυφό τύπο ορίζονται με τη λέξη κλειδί bop. Αυτοί οι τελεστές κατά αντιστοιχία
με τη κρυφή άλγεβρα μπορούν να διαχωριστούν σε ¨παρατηρήσεις’ όταν ο τύπος του
συνόλου τιμών τους είναι ορατός και σε ¨πράξεις’ όταν είναι κρυφός.
Η CafeOBJ διευκολύνει τις αποδείξεις που γίνονται με τη μέθοδο της συνεπαγω-
γής ορίζοντας απευθείας μία σχέση ισοδυναμίας σε κάθε κρυφή προδιαγραφή η οποία
συμβολίζεται ώς = ∗ =. Στη συνέχεια η μηχανή της γλώσσας προσπαθεί να αποδείξει
αυτόματα ότι η σχέση αυτή είναι Γ-διατηρητική (χρησιμοποιώντας ώς Γ όλους τους
συμπεριφοριακούς τελεστές) και ενημερώνει για το αποτέλεσμα της απόδειξης. Αν η
112
μηχανή επιτύχει στην απόδειξή της τότε η σχέση = ∗ = μπορεί να χρησιμοποιηθεί
σαν κρυφή ισοδυναμία για την απόδειξη συμπεριφοριακών ιδιοτήτων με τη μέθοδο της
συνεπαγωγής. Για παράδειγμα ο ακόλουθος κώδικας αποτελεί μία συμπεριφοριακή
προδιαγραφή μίας δομής στοίβας ακεραίων
mod* IntStack{
pr(EQL + NAT)
*[iStack]*
-- operations
bop head : iStack -> Nat .
bop push : iStack Nat -> iStack .
bop pop : iStack -> iStack .
-- initial state
bop empty : -> iStack
-- variables
var S : iStack .
vars N M : Nat
--
eq head(push(S, N)) = N .
ceq pop(S) = empty if S = empty .
}
Εκτός από τα ειδικά κατασκευάσματα η Caf eOBJ υποστηρίζει τις συμπεριφορια-
κές προδιαγραφές και την απόδειξη ιδιοτήτων γι΄ αυτές με διάφορες άλλες μεθοδο-
λογίες και συγκεκριμένα κυρίως μέσω της συμπεριφοριακής αναγραφής (behavioral
rewriting). Δηλαδή η μηχανή υλοποιεί τους κανόνες αναγραφής που αναπτύξαμε
στη προηγούμενη ενότητα (ο πιο σημαντικός από τους οποίους είναι η χρήση του
κανόνα της ισοδυναμίας μόνο σε συμπεριφοριακά διατηρητικούς τελεστές) εξασφα-
λίζοντας έτσι την ορθότητα των αποδείξεων που δημιουργούνται χρησιμοποιώντας το
σύστημα αναγραφής.
Η χρήση της Caf eOBJ έχει δείξει ότι οι συμπεριφοριακές προδιαγραφές μπορο-
ύν να εφαρμοστούν αποτελεσματικά και σαν αντικειμενοσταφής εναλλακτική για τις
παραδοσιακές προσανατολισμένες στα δεδομένα αλγεβρικές προδιαγραφές. Μάλιστα,
τα μέχρι στιγμής αποτελέσματα δείχνουν ότι μία τέτοια προσέγγιση μπορεί να μειώσει
δραματικά το κόστος της προδιαγραφής των συστημάτων και της επαλήθευσής τους.

Προδιαγραφές βασισμένες σε λογική αναγραφής. Η λογική του συ-


στήματος αναγραφής της Caf eOBJ βασίζεται στη λογική αναγραφής (RW L) του
M eseguer η οποία δίνει μία μη τετριμμένη επέκταση στις παραδοσιακές αλγεβρικές
προδιαγραφές επιτρέποντας έννοιες όπως ο παραλληλισμός των υπολογισμών. Η RW L
ενσωματώνει πολλά διαφορετικά μοντέλα παραλληλισμού με ένα απλό και φυσικό τρόπο
113
και έτσι παρέχει στη Caf eOBJ ευρύ πεδίο εφαρμογών. Η γλώσσα επιτρέπει την α-
πόδειξη ιδιοτήτων για την ύπαρξη μεταβάσεων ανάμεσα από καταστάσεις συστημάτων
μέσω του τελεστή ==> ο οποίος ενσωματώνει τη θεωρίας αποδείξεων της RW L με
την εξισωτική λογική.

Συστήματα Παρατηρήσεων Μεταβάσεων (Observational Transi-


tion Systems) - Αναλλοίωτες ιδιότητες (Invariant properties). Τα Συ-
στήματα Παρατηρήσεων Μεταβάσεων (ΣΠΜ) αποτελούν μία γνήσια υπό-κλάση των
συμπεριφοριακών προδιαγραφών. Παρόλ΄ αυτά είναι ικανά να περιγράψουν μία πληθώρα
προβλημάτων και για αυτό το λόγο έχουν χρησιμοποιηθεί πολύ στη βιβλιογραφία. Πιο
συγκεκριμένα, υποθέτουμε ότι υπάρχει ένας χώρος καταστάσεων, τον οποίο συνήθως
συμβολίζουμε με Υ. Ακόμα υποθέτουμε ότι όλοι οι τύποι δεδομένων που θα χρεια-
στεί να χρησιμοποιήσουμε έχουν οριστεί εκ των προτέρων συμπεριλαμβανομένης και
της ισότητας μεταξύ των στοιχείων του ίδιου τύπου δεδομένων. ΄Ενα σύστημα πε-
ριγράφεται σαν ένα ΣΠΜ παρατηρώντας από κάποιο εξωτερικό ως προς το σύστημα
σημείο την κατάσταση του. Δηλαδή, το μόνο που μπορούμε να παρατηρήσουμε είναι
οι τιμές κάποιων πειραμάτων που μπορούμε να διεξάγουμε και το πώς αυτές οι τιμές
αλλάζουν όταν εφαρμοστούν οι κανόνες μετάβασης του συστήματος. Η αντιστοιχία με
τις συμπεριφοριακές προδιαγραφές είναι προφανής, τα διάφορα πειράματα αντιστοιχούν
στους τελεστές παρατήρησης ενώ οι κανόνες μετάβασης στις μεθόδους. Τυπικά ένα
ΣΠΜ ορίζεται ώς μία τριάδα, ΣΠΜ S =< O, I, T > όπου:

• O, είναι ένα σύνολο από πειράματα, κάθε τέτοιο πείραμα, o ∈ O, ορίζει μία
συνάρτηση o : Y → D όπου D είναι κάποιος τύπος δεδομένων που μπορεί να
είναι διαφορετικός για κάθε πείραμα. Δεδομένου τώρα ενός ΣΠΜ και δύο
καταστάσεων u1 , u2 ∈ Y η ισότητα ανάμεσα σε αυτές τις δύο καταστάσεις,
συμβολίζεται ως u1 =S u2 , και ορίζεται ως ∀o ∈ O.o(u1 ) =D o(u2 ) όπου
=D συμβολίζει την ισότητα ανάμεσα σε όρους του ίδιου τύπου δεδομένων
D.
• I, αποτελεί ένα υποσύνολο του συνόλου όλων των πιθανών καταστάσεων
του συστήματος, Y , το οποίο συνήθως ονομάζουμε σύνολο των αρχικών
καταστάσεων.
• T , ένα σύνολο από υπό-συνθήκη κανόνες μετάβασης. Κάθε τέτοιος κανόνας
τ ∈ T ορίζει μία συνάρτηση πάνω στις κλάσεις ισοδυναμίας του χώρου των
καταστάσεων με βάση το ΣΠΜ, (Y /=S ). Στη συνέχεια με τ (u) θα συμβο-
λίζουμε οποιοδήποτε από τα στοιχεία του τ [u], δηλαδή όλες τις ισοδύναμες
με τη u καταστάσεις στις οποίες εφαρμόζουμε τον κανόνα μετάβασης τ .
Τότε η τ (u) θα καλείται η διάδοχος κατάσταση της u με βάση τον κανόνα
τ . Ακόμα μαζί με κάθε κανόνα μετάβασης ορίζεται και μία συνθήκη που τη
114
συμβολίζουμε συνήθως ως c-τ η οποία είναι στη πραγματικότητα ένα κατη-
γόρημα πάνω στις καταστάσεις του Y τέτοιο ώστε να ισχύει ότι τ (u) =S u
αν ¬c-τ (u).

΄Ενα ΣΠΜ μπορεί να περιγραφεί με φυσικό τρόπο στη Caf eOBJ. Τα πειράματα α-
ναπαριστώνται από τελεστές παρατήρησης στη Caf eOBJ και οι κανόνες μετάβασης
με συμπεριφοριακούς τελεστές της Caf eOBJ με κρυφό τύπο. Συνήθως οι παρατη-
ρήσεις αυτές και οι κανόνες μετάβασης είναι παραμετρικοί, και σε αυτή τη περίπτωση
υποθέτοντας ότι υπάρχουν Dk με k = i1 , . . . , im , j1 , . . . , jn τους συμβολίζουμε ως
oi1 , . . . , oim και τj1 , . . . , τjn όπου m, n ≥ 0 αντίστοιχα. Για παράδειγμα ένα πείραμα
που επιστέφει το στοιχείο στη θέση n ∈ N ενός πίνακα θα μπορούσε να συμβολιστεί
ως on και ένας κανόνας μετάβασης που αυξάνει κατά x την τιμή του στοιχείο αυτό
θα μπορούσε να συμβολιστεί ως incn,x . Δεδομένου τώρα ενός ΣΠΜ θα αποκαλούμε
εκτέλεση μια άπειρη ακολουθία από καταστάσεις u0 , . . . , un , . . . οι οποίες ικανοποιούν
τις ακόλουθες συνθήκες:

• (Αρχικοποίηση) u0 ∈ I
• (Διαδοχή) για κάθε i ∈ {0, 1, . . . } ui+1 =S τ (ui ), για κάποιο τ ∈ T ,
δηλαδή όλες οι καταστάσεις προκύπτουν από την προηγούμενη κατάσταση
της ακολουθίας εφαρμόζοντας κάποιο κανόνα μετάβασης.

Θα λέμε ότι μία κατάσταση είναι προσβάσιμη (reachable) ανν εμφανίζεται ως μέρος
κάποιας εκτέλεσης του S. Με RS θα συμβολίζουμε το σύνολο όλων των προσβάσιμων
καταστάσεων του S. Μια ιδιότητα θα καλείται αναλλοίωτη (invariant), όσο αφορά
το S, ανν ισχύει για όλες τις προσιτές καταστάσεις του S. Τυπικά αυτό συμβολίζεται
ώς:
invariant(p) ανν (∀u ∈ I, p(u)) και (∀u ∈ RS ∧ τ ∈ T .p(u) → p(τ (u)))
Ας δούμε τώρα πώς περιγράφουμε ένα ΣΠΜ στην Caf eOBJ. Το σύνολο των
καταστάσεων περιγράφεται από ένα κρυφό τύπο, H. ΄Ενα πείραμα oi1 ,...,im ∈ O όπως
είπαμε με ένα τελεστή παρατήρησης. Υποθέτουμε ότι οι τύποι δεδομένων που θα
χρειαστούμε οι Di1 , . . . Dim και D έχουν προδιαγραφεί σαν πρωταρχικές άλγεβρες
έτσι ώστε να υπάρχουν οι αντίστοιχοι ορατοί τύποι Vi1 , . . . Vim και V . Τότε:

• Ο τελεστής της CafeOBJ που αντιστοιχεί στο πείραμα oi1 ,...,im ορίζεται ως,
βοπ ο : Η Vi1 . . . Vim -> V
• κάθε αρχική κατάσταση u ∈ I αναπαρίσταται από μία κρυφή σταθερά op uinit :
− > H. Αν η τιμή του oi1 ,...,im στην αρχική κατάσταση u ορίζεται ώς
f (i1 , . . . , im ) τότε αυτό ορίζεται στην CafeOBJ ως o(ui nit, Xi1 , . . . , Xim ) =
f (Xi1 , . . . Xim ) όπου Xi1 , . . . , Xim είναι μεταβλητές τύπων Vi1 , . . . Vim α-
ντίστοιχα ορισμένες στη CafeOBJ.
115
• ένας κανόνας μετάβασης τj1 ,...,jn αναπαρίσταται από μία μέθοδο στη Caf eOBJ,
bop a : H Vj1 . . . , Vjn − > H. Αν ένας κανόνας μετάβασης εφαρμοστε-
ί σε μία κατάσταση όπου η συνθήκη του ισχύει η τιμή ενός πειράματος
του ΣΠΜ, έστω oi1 ,...,im , μπορεί να αλλάξει το οποίο περιγράφεται στην
Caf eOBJ με μία εξίσωση, ceq o(a(u, Xj1 , . . . , Xjn )), (Xi1 , . . . , Xim ) =
c − a(u, Xj1 , . . . , Xjn , Xi1 , Xim ) if c − a(u, Xj1 ,...,Xjn ). Τέλος αν ένας
κανόνας a εφαρμοστεί σε μία κατάσταση στην οποία δεν ισχύει η συνθήκη
του τότε η νέα κατάσταση πρέπει να είναι ισοδύναμη με τη προηγούμενη
όσο αφορά την =S . Αυτό δηλώνεται στη Caf eOBJ πάλι με μία εξίσωση,
ceqa(u, Xj1 ,...,Xjn ) = u if not c-α(υ,Xj1 , . . . , Xjn ).

Η μέθοδος των Proof Scores. Η επαλήθευση ότι ο σχεδιασμός ενός συ-


στήματος (ΣΠΜ) πληρεί κάποιες ιδιότητες ασφαλείας τις περισσότερες φορές ανάγεται
στην απόδειξη οτι η προδιαγραφή ικανοποιεί ένα σύνολο από αναλλοίωτες ιδιότητες
(invariant properties), δηλαδή ιδιότητες που ισχύουν σε κάθε κατάσταση του
συστήματος. ΄Ετσι η απόδειξη αναλλοίωτων ιδιοτήτων έχει μελετηθεί εκτενώς. Σε
αυτή την ενότητα θα παρουσιάσουμε μία ολοκληρωμένη μεθοδολογία για την απόδειξη
τέτοιων ιδιοτήτων για συμπεριφοριακές προδιαγραφές ορισμένες με όρους της Cafe-
OBJ, που ονομάζεται Proof Scores [24] [25] [26] [27] [28] [29].
Η μεθοδολογία των Proof Scores χαρακτηρίζεται ως διαδραστική μεταξύ του
χρήστη και του υπολογιστή. Ο χρήστης γράφει με κατάλληλο τρόπο το πλάνο της
απόδειξης και ο υπολογιστής την ’εκτελεί’ αναλαμβάνοντας όλους τους κουραστικούς
υπολογισμούς και απαντάει με true ή f alse ανάλογα με το αν επιτυγχάνει το πλάνο
της απόδειξης. Σε αντίθεση με τα πλήρως αυτοματοποιημένα συστήματα αποδείξεων
αυτός ο τρόπος έχει σαν πλεονεκτήματα ότι:

• επιστρέφει επαρκείς πληροφορίες σε περίπτωση που κάποιο πλάνο αποτύχει,


έναντι ενός απλού ναι ή όχι που επιστρέφουν τα αυτοματοποιημένα συστήμα-
τα αποδείξεων
• επιτρέπει την καλύτερη κατανόηση του συστήματος (της προδιαγραφής) σε
περίπτωση που δεν ικανοποιεί τις ιδιότητες που μας ενδιαφέρον, γεγονός που
κάνει τον επανασχεδιασμό του πιο εύκολο.

Για παράδειγμα ας υποθέσουμε ότι επιθυμούμε να αποδείξουμε ότι η ιδιότητα pred1(s, x1)
η οποία είναι γραμμένη σε όρους της Caf eOBJ είναι αναλλοίωτη για μία προδια-
γραφή ΣΠΜ γραμμένη πάλι σε όρους της Caf eOBJ, όπου s είναι μια ελεύθερη
μεταβλητή τύπου των καταστάσεων του συστήματος και x1 ένα σύνολο από ελε-
ύθερες πάλι μεταβλητές. Συχνά δεν είναι δυνατόν να καταφέρουμε την απόδειξη ε-
νός κατηγορήματος χρησιμοποιώντας μόνο τους κανόνες αναγραφής που έχουμε ανα-
πτύξει. Εξαιτίας όμως της δομή μίας ΣΠΜ μπορούμε να χρησιμοποιήσουμε επαγωγή
116
(induction) στις καταστάσεις για να δείξουμε ότι η ιδιότητα pred1(s, x1) είναι αναλ-
λοίωτη. Αυτό γίνεται δείχνοντας ότι η ιδιότητα ισχύει για κάθε αρχική κατάσταση,
∀u ∈ I.pred(u, x1), και στη συνέχεια υποθέτοντας ότι ισχύει για την τυχαία κατάστα-
ση s δείχνουμε οτι ισχύει για κάθε διαδοχική κατάσταση για κάθε κανόνα μετάβασης,
∀τ ∈ T .pred1(s, x1) → pred1(τ (s), x1). Τις περισσότερες φορές όμως η απόδειξη
του pred1(s, x1) χρησιμοποιώντας μόνο επαγωγή είναι αδύνατη. Παρόλ΄ αυτά είναι
δυνατή η απόδειξη ότι το pred1 μαζί με άλλα n-1 κατηγορήματα είναι αναλλοίωτα για
τη ΣΠΜ προδιαγραφή (αυτά τα κατηγορήματα θα τα συμβολίζουμε με pred2(s, x2),
. . . , predn(s, xn)). Για παράδειγμα έστω ότι κατά την επαγωγική απόδει-
ξη του pred1(s, x1) προσπαθούμε να δείξουμε ότι ισχύει το επαγωγικό βήμα για τον
κανόνα μετάβασης τ , δηλαδή ότι: pred1(s, x1) → pred1(τ (s), x1). Πολλές φορές η
απόδειξη αυτή είναι αδύνατη, αλλά παρόλ΄ αυτά μπορούμε να αποδείξουμε τη διατήρηση
της ιδιότητας από το κανόνα μετάβασης χρησιμοποιώντας μία πιό ισχυρή υπόθεση για
παράδειγμα: pred1(s, x1) ∧ predi(s, xi) ∧ · · · ∧ predj(s, xj) → pred1(τ (s), x1), όπου
1 ≤ i, j ≤ n. Επιπλέον είναι δυνατόν η απόδειξη των επιπλέον κατηγορημάτων να
είναι επίσης αδύνατη χωρίς τη χρήση των υπολοίπων. Δηλαδή να μπορούμε να δείξου-
με μόνο ότι: pred1(s, x1) ∧ predi(s, xi) ∧ · · · ∧ predj(s, xj) → predi(τ (s), xi), όπου
1 ≤ i, j ≤ n. Θα συμβολίζουμε αυτή την ισχυροποιημένη υπόθεση ώς SHi . Ακόμα για
την απόδειξη των pred1(s, x1)∧predi(s, xi)∧· · ·∧predj(s, xj) → pred1(τ (s), x1), τις
περισσότερες φορές χρειάζεται να διακρίνουμε περιπτώσεις (Case Splitting). Δη-
λαδή, η κατάσταση s να διακριθεί σε l υποκαταστάσεις οι οποίες να ορίζονται από τις
φόρμουλες casek , 1 ≤ k ≤ l ώστε να είναι εξαντλητικές, δηλαδή: (case1 ∨· · ·∨casel ) =
true. Με αυτό το τρόπο η απόδειξη του pred1(s, x1)∧predi(s, xi)∧ . . . ∧predj(s, xj)
→ predi(τ (s), xi) ¨σπάει’ σε l αποδείξεις:
casei1 ∧ pred1(s, x1) ∧ predi(s, xi) ∧ · · · ∧ predj(s, xj) → predi(τ (s), xi)
...
caseil ∧ pred1(s, x1) ∧ predi(s, xi) ∧ · · · ∧ predj(s, xj) → predi(τ (s), xi)
Δηλαδή αντί να δείξουμε ότι η ιδιότητα pred1(s, x1) είναι αναλοίωτη δείχνουμε ότι
η ιδιότητα pred1(s, x1) ∧ pred2(s, x2) ∧ · · · ∧ predn(s, xn) είναι αναλλοίωτη. Η με-
θοδολογία αυτή καλείται ταυτόχρονη επαγωγή (Simultaneous Induction) και είναι
η κύρια μεθοδολογία απόδειξης μίας αναλλοίωτης ιδιότητας για μια ΣΠΜ/CafeOBJ
προδιαγραφής. Προφανώς αν μπορούμε να αποδείξουμε τη σύζευξη τότε ισχύει και το
pred1(s, x1). Τα κατηγορήματα pred2(s, x2), . . . , predn(s, xn)) θα τα
λέμε λήμματα. Ακόμα θα συμβολίσουμε με pred(s, x1, ..., xn) τη σύζευξη των κατη-
γορημάτων.
Υλοποίηση των Proof Scores στην CafeOBJ. Θα δούμε τώρα πώς μπορούμε
να ορίσουμε μία τέτοια απόδειξη στη Caf eOBJ. Πρώτα ορίζουμε ένα module το
οποίο συνήθως το καλούμε IN V όπου τα κατηγορήματα εκφράζονται με όρους της
CafeOBJ.

117
module INV{
op inv1 : H V1 -> Bool
· · ·
op invn : H Vn -> Bool
eq inv1(W,X1) = pred1(W,X1) .
· · ·
eq invn(W,Xn) = predn(W,Xn) .
}
όπου W είναι μια Caf eOBJ μεταβλητή του τύπου ΣΠΜ και Xn ένα σύνολο από
Caf eOBJ μεταβλητές για τις xi. Τέλος ο όρος predn(W, Xi) εκφράζει σε όρους
της γλώσσας το κατηγόρημα predn(s, xn). Επίσης στο module δηλώνουμε σταθερές
xi , (i = 1, . . . , n) που είναι του ίδιου τύπου με τα Xi. Στο σώμα μίας απόδειξης μία
σταθερά χρησιμοποιείται για να δηλώσει ένα τυχαίο αντικείμενο του συγκεκριμένου
τύπου. Για παράδειγμα αν δηλώσουμε μια σταθερά τύπο N at την x η x μπορεί να χρη-
σιμοποιηθεί για να σηματοδοτήσουμε ένα τυχαίο φυσικό αριθμό. Μέσω αυτών των
σταθερών και χρησιμοποιώντας κατάλληλες εξισώσεις μπορούμε να κάνουμε τον δια-
χωρισμό των καταστάσεων που αναφέραμε προηγουμένως. Για παράδειγμα αν θέλουμε
να θεωρήσουμε δύο καταστάσεις στις οποίες ένας τυχαίος φυσικός είναι μεγαλύτερος
από το μηδέν στη μία και μικρότερος, ίσος στην άλλη θα μπορούσαμε να το δηλώσουμε
με τις ακόλουθες εξισώσεις:
eq (x > 0) = true .
eq (x <= 0) = true .
Είμαστε τώρα σε θέση να περιγράψουμε το proof score του i-οστού κατηγορήματος.
΄Εστω ότι init είναι μια σταθερά η οποία συμβολίζει μια τυχαία αρχική κατάσταση του
συστήματος. Το μόνο που χρειάζεται να κάνουμε για να δείξουμε ότι το κατηγόρημα
predi(s, xi) ισχύει σε κάθε αρχική κατάσταση είναι να γράψουμε τον ακόλουθο κώδικα
στη Caf eOBJ:
open INV
red invi(init, xi) .
close
Στη συνέχεια γράφουμε ένα module, το οποίο συνήθως το συμβολίζουμε με IST EP ,
στο οποίο δηλώνουμε δύο σταθερές την s και την s0 , οι οποίες αντιστοιχούν σε μία
τυχαία κατάσταση του ΣΠΜ και στην διαδοχική της, δηλαδή στην επόμενη κατάσταση
από την s μετά από την εφαρμογή κάποιου κανόνα μετάβασης. Τα κατηγορήματα που
πρέπει να αποδείξουμε στην περίπτωση αυτή είναι:
op istep1 : V1 -> Bool
· · ·
op istepn : Vn -> Bool
118
eq istep1(X) = inv1(s,X1) implies inv1(s’,X1) .
· · ·
eq istepn(X) = invn(s,Xn) implies invn(s’,Xn) .
Σε κάθε περίπτωση επαγωγής (δηλαδή για κάθε κανόνα μετάβασης) η κατάσταση
συνήθως διαχωρίζεται όπως είπαμε σε υποκαταστάσεις. Για παράδειγμα έστω ότι
προσπαθούμε να αποδείξουμε ότι κάποιος κανόνας μετάβασης διατηρεί το κατηγόρημα
i. Συνήθως λοιπόν διαχωρίζουμε την κατάσταση σε l-υποκαταστάσεις, casei με 1 ≤
i ≤ l. Τότε, ο ακόλουθος κώδικας στη Caf eOBJ δείχνει ότι η υποκατάσταση casei
για τον κανόνα μετάβασης a διατηρεί την ιδιότητα:
open ISTEP
Declare constants denoting arbitrary objects.
Declare equations denoting casei .
Declare equations denoting facts if necessary.

eq s’ = a(s, y) .
red istepi(xi) .

close
όπου y είναι μία λίστα σταθερών οι οποίες χρησιμοποιούνται ως ορίσματα για τον
κανόνα μετάβασης a, με βάση τον ορισμό του στην Caf eOBJ, και δηλώνουν τυχα-
ία αντικείμενα κατάλληλων τύπων. Επιπλέον, άλλες σταθερές μπορεί να χρειαστεί
να ορισθούν μαζί με κατάλληλες εξισώσεις έτσι ώστε να γίνει ο διαχωρισμός των
καταστάσεων όπως εξηγήσαμε προηγουμένως. Ακόμα κάποιες προτάσεις μπορεί να
χρειασθεί να δηλωθούν ως γεγονότα (μέσω εξισώσεων). Αυτές οι προτάσεις αφορούν
λήμματα στη πραγματικότητα σχετικά με τις δομές δεδομένων που χρησιμοποιούμε και
όχι το ΣΠΜ (Προφανώς για να είναι ορθή η απόδειξή μας αυτά τα λήμματα πρέπει να
έχουν προηγουμένως αποδειχθεί ανεξάρτητα). Τέλος, οι εξισώσεις που έχουν το s0
στο αριστερό τους μέρος χρησιμοποιούνται για να ορίσουμε τη διαδοχική κατάσταση
της s, δηλαδή την κατάσταση μετά την εφαρμογή του κανόνα μετάβασης a. Αν ο όρος
istepi(xi) αναγραφεί σε true έχουμε αποδείξει ότι ο κανόνας μετάβασης διατηρεί το
κατηγόρημα predi(p, x) για την υπό-περίπτωση j. Αν, ο όρος δεν αναγραφεί σε true
τότε μπορεί να πρέπει να δυναμώσουμε την επαγωγική μας υπόθεση. ΄Εστω λοιπόν
ότι SIHi είναι ο όρος της Caf eOBJ που αναπαριστά τον SIH για το κατηγόρημα
i. Τότε, αντί για το όρο istepi(xi) αποδεικνύουμε τον ακόλουθο:
open ISTEP
Declare constants denoting arbitrary objects.
Declare equations denoting casei .
Declare equations denoting facts if necessary.
119
eq s’ = a(s, y) .
red SIHi implies istepi(xi).

close
Με αυτό τον τρόπο μπορούμε να αποδείξουμε όλα τα κατηγορήματα. Στη περίπτωση
που ένα κατηγόρημα αναγραφεί σε f alse τότε υπάρχουν δύο περιπτώσεις οι οποίες
πρέπει να εξετάσουμε: Η υποκατάσταση που επέστρεψε f alse δεν είναι προσιτή για
το σύστημά μας. Τότε πρέπει να ενδυναμώσουμε την επαγωγική μας υπόθεση με
ένα λήμμα το οποίο να εκφράζει ακριβώς αυτό και έτσι ο όρος red SIHi implies
istepi(xi) θα αναγραφεί επιτυχώς σε true. Η δεύτερη περίπτωση είναι η υποκα-
τάσταση να είναι προσιτή. Τότε, αυτό σημαίνει ότι η ιδιότητα που επιθυμούμε να
αποδείξουμε δεν είναι αναλλοίωτη και άρα πρέπει να επανασχεδιασθεί το σύστημά
μας.

120
LISP

Για να ανοιξετε την lisp από το τερματικό σας σε unix, απλά πατήστε clisp, τη
συνέχεια θα δείτε ένα τερματικό όπως:

[1]>
Η lisp παρέχει ένα βρόγχο διαβάσματος-αποτίμησης-εκτύπωσης (ρεαδ-πριντ-εvαλ
λοοπ ή ΡΕΛΠ). Για να κλείσετε την lisp απλά πατήστε το τερματικό σας (εξιτ).
Ας ορίσουμε τώρα την πρώτη μας συνάρτηση:
(defun hello()
(write-string "Hello, World!"))
Στη συνέχεια για να την καλέσουμε απλά πληκτρολογούμε στο τερματικό: (ηελλο)
και το αποτέλεσμα που πρέπει να δούμε είναι το ακόλουθο: [2]> (hello) Hello, World!
”Hello, World!”

ΛΙΣΤΕΣ

Το όνομα lisp προέρχεται από τις λέξεις Λιστ Προςεσσορ και παρόλο που η γλώσ-
σα έχει ωριμάσει πολύ με την πάροδο των ετών, οι λίστες παραμένουν η κεντρική δομή
δεδομένων της. Η λίστες είναι πολύ σημαντικές γιατί μπορούν να χρησιμοποιηθούν
για την αναπαράσταση οτιδήποτε, από σύνολα, πίνακες γραφήματα μέχρι και προτάσεις
στη φυσική γλώσσα. Μια λίστα ορίζεται με το να περικλείουμε τα στοιχεία της μέσα
σε παρενθέσεις χρησιμοποιώντας την συνάρτηση list, για παράδειγμα:
(list "RED" "GREEN" "BLUE")
(list "AARDVARK")
(list 2 3 5 7 11 13 17)
(list "3 FRENCH HENS" "2 TURTLE DOVES" "1 PARTRIDGE in a PEAR TREE")
΄Ολα τα παραπάνω ορίζουν λίστες. Μία χρήσιμη σύντμηση για τη συνάρτηση
αυτή είναι μία μονή παράθεση. Για παράδειγμα η λίστα (list 1 2 3) θα μπορούσε
να έχει ορισθεί ώς ΄(1 2 3). Προσοχή όμως μία λίστα με ένα όρισμα είναι τελείως
διαφορετική δομή δεδομένων από μία σταθερά. Οι λίστες μπορεί να είναι φωλιασμένες,
για παράδειγμα:
(list (list 1 2) (list 3 4))
121
Μια λίστα χωρίς στοιχεία ονομάζεται κενή λίστα και συμβολίζεται με τη λέξη
κλειδί N IL. Για να ελέγξουμε την ισότητα ανάμεσα σε δύο λίστες μπορούμε να
χρησιμοποιήσουμε τη συνάρτηση EQU ALS η οποία επιστρέφει Τ (true) όταν δύο
λίστες είναι ίσες και N IL (f alse) όταν δεν είναι. Προφανώς δύο λίστες είναι ίσες
όταν τα στοιχεία τους είναι ίσα. ΄Ετσι η παρακάτω σύγκριση επιστρέφει N IL:
(EQUAL (list (list 1 2) (list 3 4)) (list 1 2 3 4))
Ενώ η ακόλουθη T :
(EQUAL (list 1 2 3 4) (list 1 2 3 4))
Η lisp παρέχει συναρτήσεις για την επιστροφή του πρώτου δεύτερου και τρίτου στοι-
χείου κάθε λίστας όπως φαίνεται στο παρακάτω κομμάτι κώδικα:
[9]> (FIRST (list 1 2 3))
1
[9]> (SECOND (list 1 2 3))
2
[9]> (THIRD (list 1 2 3))
3
΄Οταν λέμε ότι μία συνάρτηση ¨επιστρέφει’ ένα στοιχείο όπως μία λίστα ή ένα αντι-
κείμενο δεν είμαστε ακριβείς. Στο εσωτερικό του υπολογιστή δεν υπάρχουν λίστες
και αντικείμενα πάρα μόνο θέσεις μνήμης τις οποίες τις προσπελάσουμε χρησιμοποι-
ώντας δείκτες. ΄Ετσι για να είμαστε ακριβείς το πραγματικό όρισμα ή η έξοδος μίας
συνάρτησης δε είναι ένα αντικείμενο αλλά ένας δείκτης.
Κάθε κόμβος μίας λίστας μπορεί χωρίζεται σε δύο μέρη, το αριστερό και το δεξί.
Το πρώτο μισό (δηλαδή το δεξί) λέγεται CAR ενώ το δεύτερο μισό CDR. Τα ο-
νόματα είναι κατάλοιπα από τους πρώτους υπολογιστές που δεν είχαν τρανζίστορ και
συγκεκριμένα από τον IBM 704.
΄Ετσι για παράδειγμα, το αριστερό στοιχείο του πρώτου κόμβου της λίστας (1 2 3)
είναι ένας δείκτης στο περιεχόμενο αυτού του κόμβου, ενώ το δεξί ένας δείκτης στο
υπόλοιπο της λίστας αυτής.
[9]> (CAR (list 1 2 3))
1
[9]> (CDR (list 1 2 3))
(2 3)

Προφανώς αν η λίστα έχει μόνο ένα στοιχείο τότε η CDR θα επιστρέψει την κενή
λίστα, π.χ.
[9]> (CDR (list "ABC"))
NIL
122
Αντιδιαμετρικά με τα CAR και CDR, η συνάρτηση CON S χρησιμοποιείται για την
εισαγωγή ενός στοιχείου στην κεφαλή μίας λίστας. Για παράδειγμα:
[10]> (CONS 1 (list 2 3))
(1 2 3)
Παρατηρήστε όμως ότι, στην περίπτωση που δεν εισάγουμε ένα μόνο στοιχείο αλλά
μια λίστα το αποτέλεσμα δεν θα είναι μία λίστα αλλά μία μόνο φωλιασμένη λίστα. Για
παράδειγμα:
[10]>(CONS (list 1 ) (list 2 3))
((1) 2 3)(CONS 1 (list 2 3))
Μία συνήθης χρήση της CON S είναι η δημιουργία λιστών από την αρχή. Για πα-
ράδειγμα για τη δημιουργεία της λίστας (’F OO’ ’BAR’) θα μπορούσαμε να χρησιμο-
ποιήσουμε την CON S ώς εξής:
[10]> (CONS "FOO" (CONS "BAR" NIL) )
("FOO" "BAR")
Είναι ενδιαφέρον να παρατηρήσει κανείς ότι υπάρχει μία συμμετρία ανάμεσα στη CON S
και τις CAR και CDR η οποία μπορεί να εκφρασθεί τυπικά ώς: x = (CON S (CAR
x) (CDR x».
Ας δούμε ένα παράδειγμα. ΄Εστω ότι έχουμε μία λίστα (’T HIS’ ’IS’ ’Y OU R’
’N AM E’) και θέλουμε να αλλάξουμε το πρώτο στοιχείο της λίστας αυτής με ’W HAT ’.
Αυτό μπορεί εύκολα να υλοποιηθεί με τον ακόλουθο κώδικα:
[10]> (CONS "WHAT" (CDR (list "THIS" "IS" "YOUR" "NAME")))
("WHAT" "IS" "YOUR" "NAME")

Κατά την εκτύπωση μίας λίστας ως εξόδου, η lisp ξεκινάει από μία αριστερή παρένθεση
η οποία ακολουθείται από όλα τα στοιχεία με κενά μεταξύ τους. Τότε, αν μία λίστα
τελειώνει με N IL η lisp εκτυπώνει μία αριστερή παρένθεση. Αν η λίστα δεν τελειώνει
με N IL τότε η lisp εκτυπώνει ένα κενό και μία τελεία πριν το τελευταίο στοιχείο της
λίστας. Μία τέτοια λίστα η οποία καλείται λίστα με τελεία αντί για κανονική λίστα
μοιάζει λοιπόν ως εξής: (A B C . D). Ο μόνος τρόπος να κατασκευάσουμε μία τέτοια
λίστα με τη μέχρι στιγμής γνώση μας είναι ως εξής:
2]> (CONS (list "A" "B" "C") "D")
(("A" "B" "C") . "D")
Η συνάρτηση AP P EN D χρησιμοποιείται για την παράθεση λιστών. Παίρνει σαν
ορίσματα δύο λίστες και επιστρέφει μία νέα λίστα η οποία έχει όλα τα στοιχεία της
πρώτης ακολουθούμενα από τα στοιχεία της δεύτερης:
> (append ’(friends romans) ’(and countrymen))
(FRIENDS ROMANS AND COUNTRYMEN)
123
> (append ’(l m n o) ’(p q r))
(L M N O P Q R)
Αν ένα από τα δύο ορίσματα είναι η κενή λίστα, τότε το αποτέλεσμα θα είναι ίσο με
το άλλο όρισμα.
> (append ’(april showers) nil)
(APRIL SHOWERS)
> (append nil ’(bring may flowers))
(BRING MAY FLOWERS)
> (append nil nil)
NIL
Μέχρι στιγμής έχουμε δει τρεις διαφορετικούς τρόπους για να δημιουργήσουμε
λίστες. Είναι χρήσιμο στο σημείο αυτό να ξεκαθαρίσουμε τη χρήση του καθενός:
(1) η CON S δημιουργεί ένα νέο κόμβο, και χρησιμοποιείται για να προσθέσουμε
ένα νέο στοιχείο σε μία λίστα
(2) η LIST δημιουργεί μία νέα λίστα παίρνοντας ένα αυθαίρετο αριθμό ορι-
σμάτων. Δημιουργεί δηλαδή μία λίστα από κόμβους η οποία τελειώνει με το
στοιχείο N IL
(3) η AP P EN D παραθέτει λίστες τη μία μετά την άλλη αντιγράφοντας τα στοι-
χεία του πρώτου ορίσματος και στη συνέχεια τα ορίσματα του δεύτερου σε
μία νέα λίστα.
΄Αλλες πολύ χρήσιμες συναρτήσεις για λίστες είναι η Reverse η οποία αντιστρέφει τα
στοιχεία μίας λίστας, η nth και η nthcdr η οποία επιστρέφει το n-οστό στοιχείο της
λίστας και την υπό-λίστα που ξεκινά από το n-οστό στοιχείο αντίστοιχα , η last η
οποία επιστρέφει το τελευταίο στοιχείο της λίστας, η remove η οποία αφαιρεί όλες τις
εμφανίσεις από μία λίστα του ορίσματός της.
> (reverse ’(l i v e))
(E V I L)
>(nthcdr 0 ’(a b c))
(a b c)
>(nthcdr 1 ’(a b c))
(b c)

>(last ’(all is forgiven))


(forgiven)

>(remove ’a ’(b a n a n a))


(b n n)
>(remove 1 ’(3 1 4 1 5 9))
124
(3 4 5 9)

Λίστες ως σύνολα. ΄Ενα σύνολο είναι μία συλλογή από κάποια αντικείμενα
τέτοια ώστε κάθε αντικείμενο να εμφανίζεται μόνο μία φορά. Τα σύνολα είναι μία
από τις πιο χρήσιμες δομές δεδομένων. Οι βασικοί τελεστές των συνόλων είναι ο
έλεγχος αν ένα στοιχείο ανήκει σε ένα σύνολο (member), η ένωση (union), τομή
(intersection) και η αφαίρεση συνόλων (set − dif f erence). Η lisp παρέχει έτοιμες
συναρτήσεις για όλες αυτές τις συναρτήσεις όπως θα δούμε πιο κάτω.
Η συνάρτηση M EM BER ελέγχει αν το πρώτο της όρισμα ανήκει στο δεύτερο
όρισμα (το οποίο πρέπει να είναι μία λίστα). Αν το αντικείμενο βρεθεί, επιστρέφεται μία
υπο-λίστα η οποία ξεκινά από το στοιχείο αυτό. Αν το στοιχείο δεν βρεθεί η συνάρτη-
ση επιστρέφει N IL. Αν και η συνάρτηση αυτή δεν επιστρέφει T ή N IL παραδοσιακά
χαρακτηρίζεται ως κατηγόρημα γιατί επιστρέφει πάντα μη ΝΙΛ τιμή (την οποία θε-
ωρούμε ως αληθή) αν και μόνο αν το στοιχείο βρεθεί. Για παράδειγμα η ακόλουθη
συνάρτηση, επιστρέφει μη N IL τιμή αν και μόνο αν το πρώτο όρισμα εμφανίζεται στη
λίστα (τρίτο όρισμα) πριν από το δεύτερο.
(defun beforep (x y l)
(member y (member x l)))
>(beforep 1 2 ’(1 2 3))
(2 3)
>(beforep 2 1 ’(1 2 3))
NIL
Η συνάρτηση IN T ERSECT ION παίρνει ως όρισμα δύο σύνολα και επιστρέφει
μία λίστα με τα κοινά στοιχεία και των δύο συνόλων. Η σειρά με την οποία τα στοιχεία
εμφανίζονται στις λίστες δεν είναι ορισμένη (μπορεί να αλλάζει από τη μία έκδοση της
lisp σε άλλη) αλλά αυτό δεν μας ενδιαφέρει στα σύνολα έτσι και αλλιώς.
> (intersection ’(fred john mary)
’(sue mary fred))
(FRED MARY)
Η U N ION επιστρέφει την ένωση των δύο συνόλων. Αν κάποια στοιχεία εμφανίζονται
και στα δύο σύνολα θα εμφανίζονται μόνο μία φορά στο αποτέλεσμα.
> (union ’(finger hand arm)
’(toe finger foot leg))

(FINGER HAND ARM TOE FOOT LEG)


Η SET − DIF F EREN CE πραγματοποιεί την αφαίρεση συνόλων. Δηλαδή, επι-
στρέφει τα εναπομείναντα στοιχεία του πρώτου συνόλου αφού αφαιρεθούν τα στοιχεία
του δεύτερου.
125
> (set-difference ’(alpha bravo charlie delta)
’(bravo charlie))

(ALPHA DELTA)
Μία χρήσιμη συνάρτηση είναι το κατηγόρημα του υποσυνόλου (SU BSET P ) η οποία
επιστρέφει T αν το πρώτο σύνολο είναι υποσύνολο του δεύτερου.
>(subsetp ’(a i) ’(a e i o u))
T

Λίστες σαν πίνακες. Οι πίνακες είναι άλλη μία πολύ χρήσιμη δομή δεδομένων
που μπορεί να κατασκευαστεί χρησιμοποιώντας λίστες. ΄Ενας πίνακας (ή μία λίστα
συσχέτισης) είναι απλώς μία λίστα από λίστες. Κάθε λίστα καλείται στοιχείο, και
η συνάρτηση car σε κάθε στοιχείο επιστρέφει το κλειδί του. Για παράδειγμα ένας
πίνακας με αγγλικές λέξεις και τις ελληνικές τους αντίστοιχες δίνεται παρακάτω. Ο
πίνακας περιέχει πέντε στοιχεία, τα κλειδιά των οποίων είναι οι αγγλικές λέξεις:
(setf words
’((one 1)
(two 2)
(three 3)
(four 4)
(five 5)))
Στο παραπάνω παράδειγμα η συνάρτηση σετφ ορίζει μία καθολική μεταβλητή (με
αυτές θα ασχοληθούμε σε παρακάτω παράγραφο).
Μία πολύ χρήσιμη συνάρτηση όταν δουλεύουμε με πίνακες είναι η ASSOC, η
οποία παίρνει σαν όρισμα το κλειδί ενός στοιχείου και επιστρέφει το στοιχείο αυτό.
>(assoc ’three words)
(three tria)
>(assoc ’four words)
(four tessera)
>(assoc ’six words)
NIL
Η ASSOC εξετάζει ένα ένα τα στοιχεία του πίνακα ως προς το κλειδί για να βρεί
αυτό που ταιριάζει με το κλειδί αναζήτησης. Αν το βρει επιστρέφει αυτό το στοιχείο
αλλιώς επιστρέφει N IL.
Η συνάρτηση RASSOC λειτουργεί με παρόμοιο τρόπο με τι διαφορά ότι εξετάζει
το cdr κάθε στοιχείου αντί για το car. Για να χρησιμοποιήσουμε τη συνάρτηση αυτή
με σύμβολα ως κλειδιά του πίνακα, ο πίνακας πρέπει να περιέχει ζευγάρια με τελεία,
όπως φαίνεται στο επόμενο παράδειγμα:
126
(setf sounds
’((cow . moo)
(pig . oink)
(cat . meow)
(dog . woof)
(bird . tweet)))

>(rassoc ’woof sounds)


(dog . woof)
>(assoc ’dog sounds)
(dog . woof)

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

Χρήσιμες Συναρτήσεις για Λίστες. Η συνάρτηση SU BST αντικαθιστά


κάθε εμφάνιση ενός αντικειμένου με ένα άλλο οπουδήποτε αυτό εμφανίζεται σε μία
λίστα. Για παράδειγμα:
> (subst ’fred ’bill
’(bill jones sent me an itemized
bill for the tires))

(FRED JONES SENT ME AN ITEMIZED


FRED FOR THE TIRES)

Αν το σύμβολο που αναζητούμε δεν εμφανίζεται στη λίστα, τότε η συνάρτηση


αυτή επιστρέφει την αρχική λίστα ως έχει.
Η συνάρτηση SU BLIS είναι παρόμοια με τη προηγούμενη με τη διαφορά ότι
μπορεί να εκτελέσει πολλές αντικαταστάσεις ταυτόχρονα. Το πρώτο της όρισμα είναι
ένας πίνακας τα στοιχεία του οποίου είναι ζευγάρια με τελεία (δηλ. μη κανονικές
λίστες). Το δεύτερο όρισμα είναι μία λίστα στην οποία θα πραγματοποιηθούν οι αντι-
καταστάσεις. Για παράδειγμα:
> (sublis ’((roses . violets) (red . blue))
’(roses are red))

(VIOLETS ARE BLUE)

>(setf dotted-words
127
’((one . ena)
(two . duo)
(three . tria)
(four . tessera)
(five . pente)))

> (sublis dotted-words ’(three one four one five))

(TRIA ENA TESSERA ENA PENTE)

Αποτίμηση

Η συνάρτηση EV A είναι η καρδιά της lisp. Αυτή η συνάρτηση είναι υπεύθυνη


για την αποτίμηση των εκφράσεων της γλώσσας. Οι περισσότερες εκφράσεις της
lisp αποτελούνται από ένα σύμβολο συνάρτησης μαζί με ένα σύνολο από inputs. Αν
για παράδειγμα καλέσουμε τη συνάρτηση EV AL για την έκφραση (+ 2 3) θα μας
επιστρέψει 5.
Η EV AL λειτουργεί ακολουθώντας ένα σύνολο από κανόνες αποτίμησης. ΄Ε-
νας από αυτούς τους κανόνες είναι ότι ο αριθμοί και κάποια συγκεκριμένα σύμβολα
είναι ’αυτο-αποτιμούμενα’, δηλαδή ότι αποτιμώνται από τον εαυτό τους. Παραδείγματα
τέτοιων συμβόλων είναι το T και το N IL. ΄Ενας δεύτερος κανόνας αποτίμησης είναι
ότι το πρώτο στοιχείο σε μία λίστα ορίζει τη συνάρτηση και τα υπόλοιπα τα ορίσματα
της.
΄Εχοντας υπόψιν αυτούς τους κανόνες αποτίμησης, μπορούμε να ορίσουμε νέες
συναρτήσεις. Ο ορισμός μίας συνάρτησης ξεκινάει με τη λέξη def un και ακολουθείται
από μία λίστα ορισμάτων και μία λίστα από χρήσεις συναρτήσεων οι οποίες ορίζουν το
σώμα της συνάρτησης. Για παράδειγμα ο μέσος όρος δύο αριθμών μπορεί να οριστεί
σαν την παρακάτω συνάρτηση:
[8]> (defun average (x y) (/ (+ x y) 2.0))
[8]> (average 2 4)
3.0
[8]> (average 2 3)
2.5
΄Αλλο ένα παράδειγμα είναι η ύψωση στο τετράγωνο ενός αριθμού:
[8]> (defun square (n) (* n n))
[8]> (square 2)
4
Είναι δυνατόν να ορίσουμε και συναρτήσεις χωρίς όνομα χρησιμοποιώντας λ−αφαίρεση.
Για παράδειγμα η συνάρτηση x + 3 μπορεί να γραφεί ως:
128
(lambda (x) (+ 3 x))
και η εφαρμογή της σε όρισμα 3 για παράδειγμα μπορεί να γραφεί ως:
[1]> ( (lambda (x) (+ 3 x)) 3)
6

ΜΕΤΑΒΛΗΤΕΣ

Πολλές φορές είναι χρήσιμο να ορίζουμε μεταβλητές οι οποίες λειτουργούν ως


συντμήσεις. Συνήθως οι μεταβλητές που ορίζουμε χρησιμοποιούνται μόνο στο εσωτε-
ρικό της συνάρτησης που τις ορίζει. Για να επιτύχουμε κάτι τέτοιο χρησιμοποιούμε τη
συνάρτηση let. Για παράδειγμα, στη παρακάτω συνάρτηση θέλουμε να αναφερθούμε
στο άθροισμα των ορισμάτων για να υπολογίσουμε τη μέση τιμή τους:
[1]>(defun average (x y)
(let ((sum (+ x y)))
(list x y ’average ’is (/ sum 2.0))))
AVERAGE
[1]> (average 2 3)
(2 3 AVERAGE IS 2.5)
Ο όρος εμβέλεια μιας μεταβλητής αναφέρεται στο κομμάτι του κώδικα από το οποίο
μπορεί να χρησιμοποιηθεί. Ως γενικό κανόνα μια μεταβλητή μπορεί να αναφερθεί μόνο
στο σώμα της συνάρτησης η οποία την ορίζει. Εξαίρεση σε αυτό τον κανόνα είναι οι
καθολικές (global) μεταβλητές οι οποίες δεν έχουν δεσμευμένη εμβέλεια. Η δήλωση
μίας καθολικής μεταβλητής γίνεται με τη χρήση της μετα-συνάρτησης def var ή της
setf :
[1]>(defvar x 0)
X
[1]> x
0

[1]> (setf vowels ’("a" "e" "i" "o" "u"))


("a" "e" "i" "o" "u")
[1]> vowels
("a" "e" "i" "o" "u")

Ας δούμε σε αυτό το σημείο ένα παράδειγμα λάθους χρήσης της εμβέλειας των μετα-
βλητών:
(defun parent (n)
(child (+ n 2)))
(defun child (p)
129
(list n p))
Το παραπάνω πρόγραμμα θα δημιουργήσει ένα λάθος καθώς η μεταβλητή n δεν είναι
δεσμευμένη στο σώμα της συνάρτησης child ούτε είναι καθολική.
Χρησιμοποιώντας τη συνάρτηση let οι μεταβλητές δημιουργούνται ταυτόχρονα.
Αυτό έχει σαν αποτέλεσμα η παρακάτω συνάρτηση να μην είναι σωστά ορισμένη.

(defun price-change (old new)


(let ((diff (- new old))
(proportion (/ diff old))
(percentage (* proportion 100.0)))
(list ’widgets ’changed ’by percentage
’percent)))

Ο παραπάνω ορισμός είναι λάθος γιατί κατά τη κλήση της μεταβλητής dif f αυτή δεν
έχει ορισθεί ακόμα. Αυτό το πρόβλημα μπορεί εύκολα να ξεπεραστεί χρησιμοποιώντας
τη συνάρτηση LET ∗ η οποία αναγκάζει τις μεταβλητές να ορίζονται μία μία με τη σειρά
που εμφανίζονται στο πρόγραμμα. Ετσι, το παρακάτω πρόγραμμα δεν δίνει κανένα
λάθος:

[1]>(defun price-change (old new)


(let* ((diff (- new old))
(proportion (/ diff old))
(percentage (* proportion 100.0)))
(list ’widgets ’changed ’by percentage
’percent)))
PRICE-CHANGE
[1]> (price-change 20 2)
(WIDGETS CHANGED BY -90.0 PERCENT)

ΣΥΝΘΗΚΕΣ

Το IF είναι η απλούστερη συνθήκη της lisp. Οι συνθήκες γενικότερα είναι μετά-


συναρτήσεις (δηλαδή τα ορίσματά τους δεν υποτιμούνται αυτόματα, σε αντίθεση με τις
συνηθισμένες συναρτήσεις όπως η +, η CON S, CAR κτλ. των οποίων τα ορίσματα
αποτιμώνται αμέσως). Η μετα-συνάρτηση IF λοιπόν παίρνει τρία ορίσματα, ένα τέστ,
ένα αληθές-κομμάτι και ένα ψευδές-κομμάτι. Αν το αληθές κομμάτι αποτιμηθεί σε T
τότε επιστρέφεται το αληθές-κομμάτι αλλιώς το ψευδές. Για παράδειγμα:
(if (oddp 1) ’odd ’even) then odd

130
(if (oddp 2) ’odd ’even) then even

(if t ’test-was-true ’test-was-false) then test-was-true


(if nil ’test-was-true ’test-was-false) then test-was-false

(if (symbolp ’foo) (* 5 5) (+ 5 5)) then 25

(if (symbolp 1) (* 5 5) (+ 5 5)) then 10


΄Οπου στα παραπάνω παραδείγματα ο τόνος (΄) μπροστά από μια συμβολοσειρά ορίζει
μία μία σταθερά (δηλαδή ΄χ είναι ισοδύναμο με «χ» ) και oddp είναι μια συνάρτηση η
οποία επιστρέφει T αν το όρισμα της είναι μονός και symbolp είναι μία άλλη συνάρτηση
η οποία επιστρέφει T αν το όρισμά της είναι συμβολοσειρά. ΄Ετσι για παράδειγμα
χρησιμοποιώντας συνθήκες ο ορισμός μιας συνάρτησης που επιστρέφει την απόλυτη
τιμή ενός αριθμού είναι πολύ απλή:
[1]>(defun myAbs(x)
(if (< x 0) (- x) x)
)
MYABS

[1]> (myAbs -10)


10

[1]> (myAbs 3)
3
Ας δούμε μερικά ακόμα παραδείγματα. Στα ακόλουθα κομμάτια κώδικα η συνάρτηση
make − even κάνει έναν ζυγό αριθμό μονό, my − not η οποία επιστρέφει T αν το
όρισμα είναι N IL και η ορδερεδ επιστρέφει T αν τα ορίσματα είναι σε διάταξη.
(defun make-even(x) (if (= (mod x 2) 0) (+ x 1) x ))

(defun my-not(x) (if (equal x NIL) T NIL) )

(defun ordered(x y) (if (< x y) T NIL))

Μία άλλη πολύ χρήσιμη συνθήκη είναι η μετά-συνάρτηση CON D. Αυτή παίρνει ένα
σύνολο από όρους της μορφής τέστ-αποτέλεσμα. Η συνήθης μορφή του είναι η εξής:
(COND (test-1 consequent-1)
(test-2 consequent-2)
(test-3 consequent-3)
131
....
(test-n consequent-n))
Σε μία τέτοια δήλωση, εξετάζονται οι συνθήκες στην σειρά. Αν κάποια συνθήκη α-
ποτιμηθεί σε T τότε σταματά και επιστρέφεται η έκφραση του αποτελέσματος της
συνθήκης, δηλαδή οι υπόλοιπες συνθήκες δεν αποτιμώνται. Για παράδειγμα ας ο-
ρίσουμε μία συνάρτηση που παίρνει δύο ορίσματα και επιστρέφει το μεγαλύτερο από
αυτά.
[1]>(DEFUN compares (x y)
(COND ((< x y) y)
((> x y) x)
((= x y) ’equal)))
COMPARES
[1]>(compares 1 2)
2
[1]> (compares 2 2)
EQUAL
Μία συνηθισμένη τεχνική όταν χρησιμοποιούμε την CON D είναι να περιλαμβάνουμε
έναν όρο, του οποίου το τεστ είναι πάντα αληθές: (T consequent). Αφού το T είναι
πάντα αληθές αν φτάσει σε αυτό το σημείο το πρόγραμμα θα αποτιμήσει πάντα το
αποτέλεσμα του τεστ. Για παράδειγμα:
(defun where-is (x)
(cond ((equal x ’paris) ’france)
((equal x ’london) ’england)
((equal x ’beijing) ’china)
(t ’unknown)))
Πολλές φορές είναι αναγκαίο να κατασκευάσουμε πιο σύνθετες συνθήκες, αυτό είναι
δυνατό με τη χρήση των AN D και OR. Για παράδειγμα, η ακόλουθη συνάρτηση
επιστρέφει T αν το όρισμα είναι μονός αριθμός και μικρότερος του 100:
(defun small-positive-oddp (x)
(and (< x 100)
(> x 0)
(oddp x)))
Η ακόλουθη συνάρτηση, συγκρίνει τα δύο ορίσματα και επιστρέφει ένα ανάλογο μήνυ-
μα:
[1]>(defun how-alike (a b)
(cond ((equal a b) "the-same")
((and (oddp a) (oddp b)) "both-odd")
((and (not (oddp a)) (not (oddp b)))
132
"both-even")
((and (< a 0) (< b 0)) "both-negative")
(t "not-alike")))

[1]> (how-alike 1 2)
"not-alike"

Ας δούμε σε αυτό το σημείο ένα απλό πρόβλημα προγραμματισμού. ΄Εστω ότι θέλουμε
να γράψουμε ένα πρόγραμμα το οποίο θα προσθέτει ένα τίτλο σε κάθε όνομα. Για
παράδειγμα θα πρέπει να μετατρέπει τα ΄Θοην Δοε΄ σε ΄Μρ. Θοην Δοε΄ και το ΄Θανε
Δοε΄ σε ΄Μς. Θανε Δοε΄. Αν ο τίτλος υπάρχει ήδη τότε θα πρέπει να διατηρηθεί. Αν
όμως δεν υπάρχει τότε θα πρέπει να προσδιορίσουμε το φύλο ώστε να το προσθέσουμε.

(defun titledp (name)


(member (first name) ’(mr ms miss mrs)))

(setf male-first-names
’(john kim richard fred george))
(setf female-first-names
’(jane mary wanda barbara kim))
(defun malep (name)
(and (member name male-first-names)
(not (member name female-first-names))))

(defun femalep (name)


(and (member name female-first-names)
(not (member name male-first-names))))

(defun give-title (name)


"Returns a name with an appropriate title on
the front."
(cond ((titledp name) name)
((malep (first name)) (cons ’mr name))
((femalep (first name)) (cons ’ms name))
(t (append ’(mr or ms) name))))

133
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΧΡΗΣΗ ΕΦΑΡΜΟΓΩΝ

Ο προγραμματισμός με χρήση εφαρμογών (αππλιςατιvε προγραμμινγ βασίζεται στην


ιδέα ότι οι συναρτήσεις είναι και αυτές με τη σειρά τους απλά δεδομένα, όπως τα
σύμβολα και οι λίστες. ΄Ετσι, θα πρέπει να μπορούμε εύκολα να τις δίνουμε και αυτές
ως είσοδο σε άλλες συναρτήσεις καθώς και οι συναρτήσεις να μπορούν να επιστρέφουν
άλλες συναρτήσεις. Οι τελεστές που θα εξετάσουμε εδώ μας επιτρέπουν ακριβώς αυτή
τη χρήση.
Η συνάρτηση F U N CALL καλεί μία συνάρτηση με κάποια ορίσματα. Για πα-
ράδειγμα μπορούμε να χρησιμοποιήσουμε την f uncall για να καλέσουμε την cons στα
ορίσματα A και B ως εξής:
>(funcall #’cons ’a ’b)
(a . b)
Ο τελεστής ΅΄ είναι ο σωστός τρόπος για να καλέσουμε μία συνάρτηση στην ὃμμον
lisp.
Ο πιο συχνά χρησιμοποιούμενος τελεστής σε αυτό το στιλ προγραμματισμού είναι
ο M AP CAR. Αυτός εφαρμόζει μία συνάρτηση σε κάθε στοιχείο μίας λίστας, σειριακά,
και επιστρέφει μία λίστα με τα αποτελέσματα. Για παράδειγμα, έστω η συνάρτηση:
>(defun square (n) (* n n))
>(square 3)
9
Τότε, μπορούμε απλά την εφαρμόσουμε σε μία λίστα από αριθμούς ως:
> (mapcar #’square ’(1 2 3 4 5))

(1 4 9 16 25)

Αυτός ο τελεστής είναι ιδιαίτερα χρήσιμος όταν δουλεύουμε με πίνακες. Για παράδειγ-
μα έστω:
(setf words
’((one un)
(two deux)
(three trois)
(four quatre)
(five cinq)))
Τότε αν θέλουμε να πάρουμε το πρώτο σύμβολο από κάθε στοιχείο του πίνακα (θυμη-
θείτε ότι ένας πίνακας είναι απλά μία λίστα από λίστες) μπορούμε απλώς να γράψουμε:
> (mapcar #’first words)
(ONE TWO THREE FOUR FIVE)
134
΄Η αν θέλαμε να αντιστρέψουμε τα κλειδιά με τα στοιχεία θα μπορούσαμε απλά να
πούμε:
> (mapcar #’reverse words)

((UN ONE)
(DEUX TWO)
(TROIS THREE)
(QUATRE FOUR)
(CINQ FIVE))
Μία συνάρτηση η οποία μεταφράζει κάθε λέξη του πίνακα είναι πολύ εύκολο με
τη χρήση του mapcar να ορισθεί ως:
>(defun translate (x)
(second (assoc x words)))

> (mapcar #’translate ’(three one four one five))


(TROIS UN QUATRE UN CINQ)

Μέχρι στιγμής είδαμε παραδείγματα όπου η M AP CAR εφαρμόζεται σε μία λίστα.


Παρόλ΄ αυτά δεν υπάρχει κάποιος τέτοιος περιορισμός. Για παράδειγμα μπορούμε να
τη χρησιμοποιήσουμε για να προσθέσουμε ανά δύο τα στοιχεία δύο λιστών:
>(mpcar #’+ ’(1 2 3) ’(4 5 6))
(5 7 9)
Αν η μία λίστα είναι πιο μεγάλη από την άλλη η M AP CAR απλά θα σταματήσει, για
παράδειγμα:
> (mapcar #’(lambda (x y) (list x ’gets y))
’(fred wilma george diane)
’(job1 job2 job3 job4 job5))

((FRED GETS JOB1)


(WILMA GETS JOB2)
(GEORGE GETS JOB3)
(DIANE GETS JOB4))
΄Αλλη μία πολύ χρήσιμη συνάρτηση σε αυτό το είδος προγραμματισμού είναι η F IN D−
IF . Αυτή παίρνει σαν όρισμα ένα κατηγόρημα και μία λίστα, και βρίσκει το πρώτο
στοιχείο της λίστας για το οποίο το κατηγόρημα ισχύει. Για παράδειγμα:
> (find-if #’oddp ’(2 4 6 7 8 9))
7
> (find-if #’(lambda (x) (> x 3))
135
’(2 4 6 7 8 9))
4

Η REM OV E − IF είναι ένας ακόμα τελεστής ο οποίος παίρνει ένα κατηγόρημα σαν
είσοδο. Ο τελεστής αυτός αφαιρεί όλα τα στοιχεία από τη λίστα αν ικανοποιούν το
κατηγόρημα και επιστρέφει μία λίστα με τα υπόλοιπα:
> (remove-if #’numberp ’(2 for 1 sale))
(FOR SALE)
> (remove-if #’oddp ’(1 2 3 4 5 6 7))
(2 4 6)
Η REM OV E − IF − N OT χρησιμοποιείται συχνότερα από την REM OV E −
IF . Η λειτουργία της είναι παρόμοια, με τη διαφορά ότι τα στοιχεία της λίστας που
αφαιρούνται είναι αυτά για τα οποία η συνθήκη δεν ισχύει (επιστρέφει N IL δηλαδή).
Για παράδειγμα:
> (remove-if-not #’oddp ’(2 0 -4 6 -8 10))
NIL
Η συνάρτηση REDU CE είναι παρόμοια με τις προηγούμενες με τη διαφορά ότι επι-
στρέφει ένα μοναδικό αποτέλεσμα αντί για λίστα και παίρνει σαν είσοδο μόνο συναρ-
τήσεις με δύο ορίσματα. Για παράδειγμα για να προσθέσουμε όλους τους αριθμούς
που βρίσκονται σε μία λιστα μπορούμε απλά:
> (reduce #’+ (1 2 3))
6

Συναρτήσεις που παράγουν συναρτήσεις. Είναι δυνατόν να ορίσουμε


μια συνάρτηση η έξοδο της οποίας είναι άλλη συνάρτηση. Για παράδειγμα, έστω ότι
θέλουμε να δημιουργήσουμε μία συνάρτηση η οποία επιστρέφει T , αν η είσοδος της
είναι μεγαλύτερη από έναν αριθμό N .
΄Εστω, ότι επιθυμούμε ο κώδικάς μας να είναι όσο πιο επαναχρησιμοποιήσιμος
γίνεται. Για παράδειγμα, αν χρειαστεί να ξαναγράψουμε τη συνάρτηση από την αρχή
για N = 2 και N = 3. ΄Ενας τρόπος που μπορούμε να το επιτύχουμε αυτό είναι
ορίζοντας μία ενδιάμεση συνάρτηση:

>(defun greaterThanN (n) #’(lambda (x) (< n x) ))

> (setf moreThan3 (greaterThanN 3))

> (funcall moreThan3 4)


136
T

ΑΝΑΔΡΟΜΗ

Η Αναδρομή είναι μία από τις πιο θεμελιώδεις και όμορφες ιδέες στην επιστήμη
των υπολογιστών. Μία συνάρτηση λέγεται αναδρομική αν καλεί τον εαυτό της. Ας
ξεκινήσουμε με ένα παράδειγμα, με μία συνάρτηση που ελέγχει αν τα στοιχεία μίας
λίστας και επιστρέφει T αν κάποιο από αυτά είναι περιττός και N IL αλλιώς.

(defun anyoddp (x)


(cond ((null x) nil)
((oddp (first x)) t)
(t (anyoddp (rest x)))))
Ας εξετάσουμε λίγο αυτό το πρόγραμμα. Η πρώτη συνθήκη του CON D η οποία
εξετάζεται είναι αν το όρισμα x είναι κενό, οπότε και πρέπει να επιστραφεί N IL αφού
η άδεια λίστα δεν περιέχει περιττούς αριθμούς. Αν τώρα δεν είναι άδεια η λίστα τότε
εξετάζουμε το πρώτο στοιχείο της (oddp (f irst x)) t) και αν όντως είναι τότε επι-
στρέφουμε T . Αλλιώς, χρησιμοποιούμε ως συνθήκη T για να είμαστε σίγουροι ότι σε
αυτό το σημείο θα περάσει τον έλεγχο και ξανακαλούμε την συνάρτηση αναδρομικά
για να εξετάσουμε την υπόλοιπη λίστα (t (anyoddp (rest x)))
Θα πρέπει σε αυτό το σημείο να έχετε παρατηρήσει το γενικότερο σχήμα της
αναδρομής. Υπάρχει μία βασική περίπτωση (ή περισσότερες) για την οποία γνωρίζουμε
την τιμή που πρέπει να επιστρέψει η συνάρτηση (η περίπτωση αυτή πρέπει να ανήκει
σε είσοδο μικρότερου μήκους) και σε περίπτωση που η είσοδος δεν ανήκει σε αυτή
ξανακαλούμε την συνάρτηση μειώνοντας το μήκος της εισόδου. Ας δούμε ένα ακόμα
παράδειγμα υπολογισμού του παραγοντικού ενός αριθμού:
(defun fact (x)
(cond ( (zerop x) 1)
( t (* x (fact (- x 1)))))

ΕΙΣΟΔΟΣ-ΕΞΟΔΟΣ

Η είσοδος και η έξοδος ενός προγράμματος είναι ο τρόπος με τον οποίο αυτό
επικοινωνεί με τον κόσμο. Το σύστημα repl της lisp παρέχει ένα απλό τρόπο είσοδο
εξόδου χρησιμοποιώντας το πληκτρολόγιο. Παρόλα αυτά πολλές φορές θέλουμε να
κάνουμε ένα βήμα παραπάνω, για παράδειγμα να διαβάσουμε δεδομένα από ένα αρχείο
μία βάση δεδομένων ή να γράψουμε σε αυτά.
Η συνάρτηση F ORM AT χρησιμοποιείται για τη μορφοποίηση της εξόδου. Ει-
῀ θα δημιουργηθεί ένα κενό, ενώ
σάγοντας σε μία συμβολοακολουθία το χαρακτήρα %
ο χαρακτήρας ∼ S χρησιμοποιείται για εισαγωγή μιας αναπαράστασης ως χαρακτήρα
137
ενός αντικειμένου της lisp. Η συνάρτηση READ χρησιμοποιείται για να διαβάσουμε
ένα αντικείμενο (νούμερο, λίστα ή οτιδήποτε) από το πληκτρολόγιο. Για παράδειγμα:
(defun my-square ()
(format t "Please type in a number: ")
(let ((x (read)))
(format t "The number ~S squared is ~S.~%"
x (* x x))))

> (my-square)
Please type in a number: 7
The number 7 squared is 49.
NIL

Η συνάρτηση W IT H −OP EN −F ILE μας δίνει έναν τρόπο να διαβάζουμε δεδομένα


από ένα αρχείο. Η σύνταξή της είναι
(WITH-OPEN-FILE (var pathname)
body)
Η συνάρτηση αυτή δημιουργεί μία τοπική μεταβλητή (όπως η let) η οποία περιέχει
ένα stream με το αρχείο. Μέσα στο σώμα της with − open − f ile το αντικείμενο
μπορεί να δοθεί ως είσοδος στην Read για να διαβάσουμε τα περιεχόμενα του αρχείο.
Βγαίνοντας από το σώμα της with − open − f ile, η σύνδεση με το αρχείο κλείνει
αυτόματα. Για παράδειγμα, έστω ότι έχουμε ένα αρχείο ’timber.dat’ στο φάκελο
’/usr/dst/’ το οποίο περιέχει τα εξής περιεχόμενα:
"The North Slope"
((45 redwood) (12 oak) (43 maple))
100
τότε μπορούμε να τα διαβάσουμε και να τα τυπώσουμε στο repl ως εξής:
(defun get-tree-data ()
(with-open-file (stream "/usr/dst/timber.dat")
(let* ((tree-loc (read stream))
(tree-table (read stream))
(num-trees (read stream)))
(format t "~&There are ~S trees on ~S."
num-trees tree-loc)
(format t "~&They are: ~S" tree-table))))
Με παρόμοιο τρόπο μπορούμε να γράψουμε σε αρχεία, δίνοντας ένα έξτρα όρισμα στην
with − open − f ile το : DIRECT ION : OU T P U T . Αυτό έχει σαν αποτέλεσμα το
138
stream να μπορεί να χρησιμοποιηθεί ως όρισμα στην f ormat αντί για το σύνηθες της
όρισμα T όπως φαίνεται παρακάτω:
(defun save-tree-data (tree-loc tree-table
num-trees)
(with-open-file (stream "/usr/dst/timber.newdat"
:direction :output)
(format stream "~S~%" tree-loc)
(format stream "~S~%" tree-table)
(format stream "~S~%" num-trees)))

> (save-tree-data
"The West Ridge"
’((45 redwood) (22 oak) (43 maple))
110)

ΕΠΑΝΑΛΗΨΗ

Μέχρι στιγμής η μόνη επαναληπτική δομή που έχουμε δει είναι η αναδρομή. Πα-
ρόλα αυτά υπάρχουν και απλούστερες επαναληπτικές δομές τις οποίες καλούμε βρόγ-
χους. Η επανάληψη στη lisp υποστηρίζεται από τα κατασκευάσματα DO και DO∗
καθώς και απλουστευμένες τους εκδοχές που καλούνται DOT IM ES και DOLIST .
Οι DOT IM ES και DOLIST , είναι μακρό-συναρτήσεις με την έννοια ότι δεν
αποτιμούν όλα τους τα ορίσματα. Η σύνταξή τους είναι:

(DOTIMES (index-var n [result-form])


body)

(DOLIST (index-var list [result-form])


body)
Η dotimes αποτιμά τους όρους στο σώμα της n φορές, θέτοντας ένα δείκτη από
το μηδέν στο n − 1. Στη συνέχει επιστρέφει την τιμή του result − f orm, το οποίο
είναι ίσο με N IL αν παραληφθεί. Για παράδειγμα (προσέξτε ότι η τιμή που επιστρέφει
είναι N IL):
> (dotimes (i 4)
(format t "~&I is ~S." i))
I is 0.
I is 1.
139
I is 2.
I is 3.
NIL
Η dolist έχει ίδια σύνταξη με την δοτιμες αλλά αντί να απαριθμεί θέτει τον δείκτη
σειριακά στα στοιχεία της λίστας. Για παράδειγμα:

> (dolist (x ’(red blue green) ’flowers)


(format t "~&Roses are ~S." x))
Roses are RED.
Roses are BLUE.
Roses are GREEN.
FLOWERS
Χρησιμοποιώντας τη συνάρτηση return, μπορούμε να βγούμε από το σώμα του βρόγ-
χου οποιαδήποτε στιγμή:
(defun find-first-odd (list-of-numbers)
(dolist (e list-of-numbers)
(format t "~&Testing ~S..." e)
(when (oddp e)
(format t "found an odd number.")
(return e))))

> (find-first-odd ’(2 4 6 7 8)) ;Will never reach 8.


Testing 2...
Testing 4...
Testing 6...
Testing 7...found an odd number.
7

Η εντολή DO είναι η πίο ισχυρή μορφή βρόγχου της lisp. Μπορεί να δεσμεύσει ένα
σύνολο μεταβλητών (όπως η let) και να αυξήσει οποιοδήποτε αριθμό δεικτών , ενώ
επιτρέπει να ορίσουμε εμείς τον τρόπο με τον οποίο θα βγούμε από το βρόγχο. Η
σύνταξή της είναι η εξής:
(DO ((var1 init1 [update1])
(var2 init2 [update2])
...)
(test action-1 ... action-n)
body)

140
Αρχικά, κάθε μεταβλητή DO τίθεται σε μία αρχική τιμή. Στη συνέχεια αποτιμάται το
test. Αν το αποτέλεσμα είναι T τότε αποτιμώνται οι όροι action − 1 με action − n και
επιστρέφεται η τιμή του τελευταίου. Στο εσωτερικό του σώματος του βρόγχου μπορεί
να υπάρχουν όροι return οι οποίοι το αναγκάζουν να επιστρέψει αμέσως και να μη
συνεχίσει την επανάληψη. Η έκφραση update είναι προαιρετική και στην περίπτωση
όπου δεν υπάρχει δεν θα αλλάξει η τιμή της μεταβλητής. ΄Οταν όλες οι μεταβλητές
έχουν ενημερωθεί τότε τα test εξετάζονται ξανά. Για παράδειγμα:
(defun launch (n)
(do ((cnt n (- cnt 1)))
((zerop cnt) (format t "Blast off!"))
(format t "~S..." cnt)))

> (launch 10)


10...9...8...7...6...5...4...3...2...1...Blast off!
NIL

Τέλος η DO∗ έχει την ίδια σύνταξη με την DO με τη διαφορά ότι οι ενημερώσεις των
μεταβλητών πραγματοποιούνται σειριακά και όχι ταυτόχρονα (κατά αντιστοιχία με την
let∗ και την let). Για παράδειγμα:
(defun ffo-with-do* (list-of-numbers)
(do* ((x list-of-numbers (rest x))
(e (first x) (first x)))
((null x) nil)
(if (oddp e) (return e))))

141
Bibliography

[1] E. G. Wagner, J. B. Wright, J. A. Goguen, J. W. Thatcher: Some Fundamentals of Order-


Algebraic Semantics. MFCS 1976: 153-168
[2] J. A. Goguen, J. P. Jouannaud, J. Meseguer: Operational Semantics for Order-Sorted Alge-
bra. ICALP 1985: 221-231
[3] J. A. Goguen, J. Meseguer: Order-Sorted Algebra solves the Constructor-Selector, Multiple.
LICS 1987: 18-29
[4] J. A. Goguen, J. Meseguer: Order-Sorted Algebra I: Equational Deduction for Multiple
Inheritance, Overloading, Exceptions and Partial Operations. Theor. Comput. Sci. 105(2):
217-273 (1992)
[5] J. A. Goguen, R. Diaconescu: An Oxford Survey of Order Sorted Algebra. Mathematical
Structures in Computer Science 4(3): 363-392 (1994)
[6] J. A. Goguen, G. Malcolm: Hidden coinduction: behavioural correctness proofs for objects.
Mathematical Structures in Computer Science 9(3): 287-319 (1999)
[7] J. A. Goguen, G. Rosu: Hiding More of Hidden Algebra. World Congress on Formal Methods
1999: 1704-1719
[8] G. Rosu, J. A. Goguen: Hidden Congruent Deduction. FTP (LNCS Selection) 1998: 251-266
[9] J. A. Goguen: Hidden algebra and concurrent distributed software. ACM SIGSOFT Software
Engineering Notes 25(1): 51-52 (2000)
[10] J. A. Goguen, G. Malcolm: A hidden agenda. Theor. Comput. Sci. 245(1): 55-101 (2000)
[11] J. A. Goguen, J. Meseguer: Completeness of many-sorted equational logic. SIGPLAN Notices
17(1): 9-17 (1982)
[12] J. A. Goguen, J. Meseguer: Remarks on remarks on many-sorted algebras with possibly
emtpy carrier sets. Bulletin of the EATCS 30: 66-73 (1986)
[13] J. A. Goguen, J. Meseguer: Remarks on Remarks on Many-Sorted equational logic. SIGPLAN
Notices 22(4): 41-48 (1987)
[14] S. Mac Lane: Categories for the Working Mathematician.Springer (1971)
[15] B. C. Pierce: Basic category theory for Computer Scientists. The MIT Press (1991)
[16] J. A. Goguen webpage: https://cseweb.ucsd.edu/˜goguen/pubs/
[17] S. Nakajima, K. Futatsugi: An Object-Oriented Modeling Method for Algebraic Specifications
in CafeOBJ. ICSE 1997: 34-44
[18] R. Diaconescu, K. Futatsugi: An overview of CafeOBJ. Electr. Notes Theor. Comput. Sci.
15: 285-298 (1998)
[19] A. Mori, K. Futatsugi: Verifying Behavioural Specifications in CafeOBJ Environment. World
Congress on Formal Methods 1999: 1625-1643
[20] K. Ogata, K. Futatsugi: Modeling and Verification of Distributed Real-Time Systems Based
on CafeOBJ. ASE 2001: 185-192
[21] K. Futatsugi: Formal Methods in CafeOBJ. FLOPS 2002: 1-20

142
[22] R. Diaconescu, K. Futatsugi, Kazuhiro Ogata: CafeOBJ: Logical Foundations and Method-
ologies. Computers and Artificial Intelligence 22(3-4): 257-283 (2003)
[23] K. Ogata, K. Futatsugi: Some Tips on Writing Proof Scores in the OTS/CafeOBJ Method.
Essays Dedicated to Joseph A. Goguen 2006: 596-615
[24] K. Ogata, K. Futatsugi: Proof Scores in the OTS/CafeOBJ Method. FMOODS 2003: 170-184
[25] K. Futatsugi, J. A. Goguen, K. Ogata: Verifying Design with Proof Scores. VSTTE 2005:
277-290
[26] K. Ogata, K. Futatsugi: Some Tips on Writing Proof Scores in the OTS/CafeOBJ Method.
Essays Dedicated to Joseph A. Goguen 2006: 596-615
[27] K. Ogata, K. Futatsugi: Proof Score Approach to Analysis of Electronic Commerce Protocols.
International Journal of Software Engineering and Knowledge Engineering 20(2): 253-287
(2010)
[28] K. Futatsugi, D. Gâinâ, K. Ogata: Principles of proof scores in CafeOBJ. Theor. Comput.
Sci. 464: 90-112 (2012)
[29] K. Ogata, K. Futatsugi: Compositionally Writing Proof Scores of Invariants in the
OTS/CafeOBJ Method. J. UCS 19(6): 771-804 (2013)
[14] J. Goguen, G. Malcolm: Teaching and Learning Formal Methods (eds M. Hinchey and C.
Nevill Dean). Academic Press 1996: 161-17

143

You might also like