Λογικός Προγραµµατισµός: Η Γλώσσα Prolog



Σχετικά έγγραφα
Κεφάλαιο 7. Λογικός Προγραμματισμός: Η Γλώσσα Prolog. Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ

επιµέλεια Θοδωρής Πιερράτος

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

Κεφάλαιο 10 ο Υποπρογράµµατα

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ ÏÅÖÅ

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

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Διδάσκων: Παναγιώτης Ανδρέου

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

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

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

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

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

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

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

ιαφάνειες παρουσίασης #11

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

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

Μονάδες 10. Μονάδες 9 5 PROLOG. Μονάδες 5

(α) Ζητείται να αναπαρασταθεί η παραπάνω γνώση σε Prolog, ώστε να δημιουργηθεί αντίστοιχο πρόγραμμα.

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

υαδικό έντρο Αναζήτησης (BSTree)

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

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΨΗΦΙΑΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ. Κεφάλαιο 3

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

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

ΑΕΠΠ Ερωτήσεις θεωρίας

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

ΠΑΡΑ ΕΙΓΜΑΤΑ ΣΤΗ ΓΛΩΣΣΑ PROLOG ΠΑΡΑ ΕΙΓΜΑ 1

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013 ÅÐÉËÏÃÇ

Γ. ίνεται το παρακάτω πρόγραµµα και υποπρογράµµατα: ΠΡΟΓΡΑΜΜΑ Κύριο ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α, Β, Γ ΑΡΧΗ ΙΑΒΑΣΕ Α, Β, Γ ΚΑΛΕΣΕ ιαδ1(α, Β, Γ)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ ÈÅÌÅËÉÏ

ΕΚΦΩΝΗΣΕΙΣ. ii) Ποιούς τρόπους αναπαράστασης ενός αλγόριθµου γνωρίζετε;

A) Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις 1-10 και δίπλα τη λέξη Σωστό, αν είναι σωστή, ή τη λέξη Λάθος, αν είναι

A. Να γράψετε τον αριθμό της κάθε μιας από τις παρακάτω προτάσεις και δίπλα. το γράμμα Σ, εάν είναι σωστή, ή το γράμμα Λ, εάν είναι λανθασμένη.


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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

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

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

18/ 07/ Σελίδα 1 6

o AND o IF o SUMPRODUCT

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

Ευφυής Προγραμματισμός

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

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

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

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

ΠΕΡΙΕΧΟΜΕΝΑ. Εντολές επιλογής Εντολές επανάληψης

Εισαγωγή στον Προγραμματισμό

Προπαρασκευή για Α.Ε.Ι. & Τ.Ε.Ι. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Γ ΛΥΚΕΙΟΥ 29 ΜΑΪΟΥ 2013 ΕΚΦΩΝΗΣΕΙΣ

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοημοσύνη Ι» 5 o Φροντιστήριο

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

Διδάσκων: Κωνσταντίνος Κώστα

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

ΠΡΟΣΟΜΟΙΩΣΗ ΠΑΝΕΛΛΑΔΙΚΩΝ ΕΞΕΤΑΣΕΩΝ Γʹ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΕΠΠ ΤΡΙΤΗ 18 ΑΠΡΙΛΙΟΥ 2017 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΠΤΑ (7)

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Πληροφορική 2. Γλώσσες Προγραμματισμού

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

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

Περιεχόμενα Πρόλογος 1. Εισαγωγή 2. Τα Βασικά Μέρη ενός Προγράμματος Prolog

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑΤΙΚΑ Β ΓΥΜΝΑΣΙΟΥ. ΜΕΡΟΣ 1ο ΑΛΓΕΒΡΑ

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ)

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

ΙΑΓΩΝΙΣΜΑ ΑΝΑΠΤΥΞΗΣ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΑΠΟΦΟΙΤΟΙ) Κυριακή

Προγραμματισμός Ι (HY120)

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

Α1. (α). ώστε τον ορισµό του προβλήµατος (Μονάδες 3)

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

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

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013 ΕΚΦΩΝΗΣΕΙΣ

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α

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

Transcript:

Λογικός Προγραµµατισµός: Η Γλώσσα Prolog 1 Βασικά Στοιχεία Γλώσσας Prolog Ορισµοί (statements): Επιτελούν το ρόλο εντολών στις κλασσικές γλώσσες προγραµµατισµού Γεγονότα Κανόνες Ερωτήσεις Όροι (terms): Μοναδική δοµή δεδοµένων Prolog 2 1

Γεγονός Είναι το απλούστερο είδος ορισµού, που υποστηρίζει η Prolog Παρέχει τρόπο έκφρασης της σχέσης, που ισχύει ανάµεσα σε οντότητες 3 Παράδειγµα Γεγονότος Το γεγονός father (john, mary). Εκφράζει ότι ο john είναι πατέρας της mary ή ότι η σχέση father ισχύει ανάµεσα στα άτοµα john και mary. 4 2

Ορισµοί Σχέσεις όπως το father ονοµάζονται κατηγορήµατα Οι οντότητες mary και john ονοµάζονται ορίσµατα του κατηγορήµατος Ένα κατηγόρηµα µαζί µε τα ορίσµατα, που περιλαµβάνει ονοµάζεται ατοµικός τύπος 5 Σχέση Plus Ορίζεται από σύνολο γεγονότων plus(0,0,0). plus(0,1,1). plus(1,0,1). plus(2,0,2). plus(0,2,2). 6 3

Σχέση Plus Ορίζει την πρόσθεση φυσικών αριθµών εν µπορεί να οριστεί αποκλειστικά µε τη χρήση γεγονότων Απαιτείται άπειρος αριθµός γεγονότων, (όπως παραπάνω) 7 Μεταβλητές Η Prolog επιτρέπει τη χρήση µεταβλητών σε Γεγονότα, κανόνες και ερωτήσεις Οι µεταβλητές αρχίζουν πάντα µε κεφαλαίο γράµµα Παράδειγµα: plus(0,x,x). Εκφράζει την ιδιότητα του ουδέτερου στοιχείου της πρόσθεσης. Η χρήση µεταβλητών επιτρέπει την έκφραση συνόλου γεγονότων 8 4

Ερωτήσεις Παρέχουν τη δυνατότητα εξαγωγής πληροφορίας από ένα λογικό πρόγραµµα ιερευνούν την ισχύ µιας σχέσης ανάµεσα σε ορισµένες οντότητες 9 Παράδειγµα Ερώτηση:?-father(john, mary). ιερευνά αν η σχέση father ισχύει ανάµεσα στα άτοµα john και mary. 10 5

Παράδειγµα Αν έχει δοθεί στην Prolog το γεγονός: father(john, mary). Τότε η απάντηση στην παραπάνω ερώτηση θα είναι yes. 11 Μεταβλητές και Ερωτήσεις -1 Ερώτηση:?-father(X,mary). ιαβάζεται ως: «Υπάρχει κάποιο πρόσωπο Χ το οποίο είναι πατέρας της mary;» 12 6

Μεταβλητές και Ερωτήσεις -2 Μία ερώτηση µπορεί να επιστρέψει περισσότερες από µία απαντήσεις. Παράδειγµα:Αν έχουµε δώσει στην Prolog δύο γεγονότα father(john, mary). father(john, ann). Τότε η ερώτηση:?-father(john, X). Θα επιστρέψει δύο λύσεις X=mary και X=ann 13 Σύνθετες Ερωτήσεις Ερώτηση:?-father(X,mary), father(x,ann) Αναζητά το πρόσωπο που είναι πατέρας της mary και της ann. Η σύνθετη ερώτηση αποτελείται από υποερωτήσεις (κλήσεις). Οι κλήσεις σε µία σύνθετη ερώτηση χωρίζονται µεταξύ τους µε κόµµα, που έχει την έννοια λογικού «και». Για να αληθεύει µία σύνθετη ερώτηση πρέπει να αληθεύουν όλες οι απλούστερες ερωτήσεις, που την αποτελούν. 14 7

Κανόνες Επιτρέπουν τον ορισµό νέων σχέσεων ως συνάρτηση άλλων σχέσεων. Παράδειγµα: son(x,y):-father(y,x), male(x). Ορίζει τη σχέση son ως συνάρτηση των σχέσεων father και male. ιαβάζεται ως: «Ο Χ είναι γιός του Υ αν ο Υ είναι πατέρας του Χ και ο Χ είναι γένους αρσενικού». Το σύµβολο «:-» διαβάζεται σαν «εάν», ενώ το «,» ως «και». 15 Αναδροµικοί Κανόνες ancestor(x,y):-parent(x,y). ancestor(x,y):-parent(x,z), ancestror(z,y). Η σχέση ancestor (πρόγονος) µπορεί να ορισθεί µε χρήση δύο κανόνων, εκ των οποίων ο ένας είναι αναδροµικός. Γενικά, ένας κανόνας έχει τη µορφή Η:-Β 1,,Β n, όπου το Η λέγεται κεφαλή του κανόνα και οι ατοµικοί τύποι Β 1,,Β n, αποτελούν το σώµα του κανόνα. 16 8

Όροι Βασική δοµή στον λογικό προγραµµατισµό Σταθερά (όπως john), µεταβλητή (όπως Χ) ή σύνθετος όρος Ο σύνθετος όρος αποτελείται από ένα συναρτησιακό σύµβολο (functional symbol), που εφαρµόζεται σε ακολουθία από όρους. Παράδειγµα: list(a,nil) όπου list το συναρτησιακό σύµβολο και a,nil σταθερές 17 Όροι Χρήση για κωδικοποίηση σύνθετων µορφών πληροφορίας Παράδειγµα: Ορισµός κατηγορήµατος book, που λαµβάνει σαν παραµέτρους όρους για περιγραφή των χαρακτηριστικών της έννοιας βιβλίο. Με τον τρόπο αυτό δηµιουργείται µία απλή βάση δεδοµένων: book(author(surname(stoll), name(robert)), subject(logic)). book(author(surname(kleene), name(steven)), subject(mathematics)). 18 9

Όροι ιαφορά ανάµεσα στο book (όνοµα κατηγορήµατος) και στα author, surname, name, subject (συναρτησιακά σύµβολα) 19 Παράδειγµα Αναζήτηση ονοµατεπωνύµων, που έχουν γράψει βιβλία σε λογική Ερώτηση:?-book(author(surname(X), name(y), subject(logic)). Αν δεν ενδιαφέρουν τα µικρά ονοµάτων συγγραφέων, η ερώτηση µπορεί να τεθεί:?-book(author(surname(x), _), subject(logic)). Όπου µε «_» συµβολίζονται οι όροι των οποίων η τιµή δεν µας ενδιαφέρει. 20 10

Όροι Γραφή προγραµµάτων όχι µόνο µε χρήση κανόνων και γεγονότων Παράδειγµα: Ορισµός της σχέσης nat(x), η οποία αληθεύει όταν Χ φυσικός αριθµός. Ένας τρόπος είναι να συµφωνηθεί η αναπαράσταση των φυσικών αριθµών αντί για 0,1,2, µε 0,s(0), s(s(0)), Το συναρτησιακό σύµβολο s εκφράζει την έννοια του «επόµενου αριθµού». 21 Παράδειγµα Το πρόγραµµα για το nat γράφεται: nat(0). nat(s(x)):-nat(x). Παρόµοια ορίζονται και άλλες σχέσεις πάνω σε φυσικούς αριθµούς. 22 11

Παράδειγµα Το plus(x,y,z) είναι αληθές αν το Ζ είναι το άθροισµα των Χκαι Υ. plus (0,X,X). plus(s(x),y,s(z)):-plus(x,y,z). Θέτοντας την ερώτηση:?-plus(s(0), s(0),k). Παίρνουµε την απάντηση Κ = s(s(0)). 23 Ορίσµατα Στην Prolog δεν γίνεται καθορισµός ποια από τα ορίσµατα ενός κατηγορήµατος είναι είσοδοι και ποια έξοδοι. Πολλά προγράµµατα έχουν διαφορετικές χρήσεις Παράδειγµα: Αν τεθεί η ερώτηση:?-plus(x,s(0), s(s(s(0)))). ίνεται η απάντηση Χ=s(s(0)), που αντιστοιχεί στον αριθµό, που λαµβάνεται αν αφαιρέσουµε από το τρίτο όρισµα το δεύτερο. 24 12

Εκτέλεση Προγραµµάτων Prolog Έστω το πρόγραµµα grandparent(x,y):-parent(x,z), parent(z,y). parent(tom,jim). parent(jim,george). Όταν τεθεί η ερώτηση:?-grandparent(a,b). ο µηχανισµός εκτέλεσης της Prolog εκτελεί αναζήτηση λύσεων της µορφής του δέντρου, που ακολουθεί. 25 έντρο εκτέλεσης της ερώτησης?-grandparent(a,b)?-grandparent(a,b) parent(a,z), parent(z,b) {A=tom, Z=jim} {A=jim, Z=george} parent(jim,b) parent(george,b) fail 26 13

Εκτέλεση Προγραµµάτων Prolog Αρχικά ο µηχανισµός της Prolog αναζητά στο πρόγραµµα κατηγόρηµα µε το όνοµα grandparent ώστε να ταιριάζει µε τη δεδοµένη ερώτηση. Μόλις βρεθεί πρόταση, που αφορά αυτό το κατηγόρηµα, αντικαθιστά την δεδοµένη ερώτηση µε το σώµα της πρότασης και δηµιουργείται νέα (σύνθετη) ερώτηση parent(a,z), parent(z,b). 27 Μηχανισµός Εκτέλεσης Prolog Έστω ότι έχουµε ένα πρόγραµµα και µία ερώτηση της µορφής?-α 1,, Α n. Τότε: Η Prolog εξετάζει εάν ικανοποιούνται όλοι οι στόχοι Α 1,, Α n ξεκινώντας από το Α 1 και πηγαίνοντας προς το Α n. Για να ικανοποιήσει ένα από τα Α i, η Prolog διαλέγει την πρώτη πρόταση στο πρόγραµµα της οποίας η κεφαλή ταιριάζει µε το Α i, και αντικαθιστά το Α i µε το σώµα της πρότασης αυτής (αφού πρώτα το τροποποιήσει κατάλληλα). Η διαδικασία συνεχίζεται µέχρι να µην υπάρχει πλέον άλλη κλήση, που να πρέπει να ικανοποιηθεί. 28 14

Απλά Αναδροµικά Προγράµµατα σε Prolog Με τη χρήση όρων γράφονται απλά και εκφραστικά προγράµµατα, όπως το plus (0,X,X). plus(s(x),y,s(z)):-plus(x,y,z). Πρόσθεση φυσικών αριθµών Όµοια ορίζεται για τον πολλαπλασιασµό φυσικών αριθµών times (0,X,0). times(s(x),y,z):-times(x,y,w), plus(w,y,z). 29 Σχόλια Η παραπάνω σχέση χρησιµοποιεί δύο βασικά αξιώµατα του πολλαπλασιασµού, το 0*Χ=0 και το (Χ+1)*Υ=Χ*Υ+Υ. Ο ορισµός του πολλαπλασιασµού χρησιµοποιεί αυτόν της πρόσθεσης 30 15

Μαθηµατικές Σχέσεις Φυσικών Αριθµών Με χρήση του ορισµού του πολλαπλασιασµού δίνεται η σχέση για το παραγοντικό ενός φυσικού αριθµού factorial(0,s(0)). factorial(s(n),f):-factorial(n,f1),times(s(n),f1,f). 31 Μαθηµατικές Σχέσεις Φυσικών Αριθµών Σχέση between(x,y,z): αληθεύει όταν Χ είναι ένας φυσικός αριθµός µικρότερος ή ίσος από τον Υ και ο Υ είναι µικρότερος ή ίσος από τον Ζ. between(0,0,z). between(0,s(y),s(z)):-between(0,y,z). between(s(x),s(y),s(z)):-between(x,y,z). 32 16

Σχόλια Οι φυσικοί αριθµοί αναπαρίστανται µε πολύ πιο βολικό τρόπο στην Prolog (όπως και στις υπόλοιπες γλώσσες προγραµµατισµού). Η αναπαράσταση, που χρησιµοποιήθηκε στα παραπάνω προγράµµατα δεν είναι γενικά βολική και αποτελεσµατική. Υιοθετήθηκε για να δειχθούν οι αρχικές δυνατότητες της Prolog. 33 Αναδροµικός Προγραµµατισµός µε Λίστες Λίστα Πολύ χρήσιµη δοµή δεδοµένων για προγραµµατισµό σε Prolog Κενή - συµβολίζεται µε [ ] Περιέχει στοιχεία, πχ η [a,b,c] είναι µη κενή λίστα Το πρώτο στοιχείο λίστας ονοµάζεται κεφαλή (head) Η λίστα που προκύπτει αν αφαιρέσουµε την κεφαλή, ονοµάζεται ουρά (tail) Ο τελεστής αποτελεί ειδική αναπαράσταση, που δείχνει άµεσα την κεφαλή και την ουρά µιας λίστας. Η λίστα [a,b,c] γράφεται ως [a [b,c]] και η [a] ως [a [ ]]. 34 17

Παράδειγµα 7.1 Οι λίστες Prolog µπορούν να περιέχουν σα στοιχεία τους και άλλες λίστες, αλλά και πολύπλοκους όρους, όπως [[ ]] επιτρεπτή λίστα [[1,Χ], s(s(x))] Οι [a [1 [2]]] και [Χ,Υ [a]] είναι ισοδύναµες µε τις λίστες [a,1,2] και [X,Y,a] αντίστοιχα. 35 Παράδειγµα 7.2 Ησχέση member (X,Y) είναι αληθής, όταν το Χ είναι στοιχείο της λίστας Υ. member(x,[x Y]). member(x,[y Z]):-member(X,Z). Το νόηµα του προγράµµατος είναι: «Το Χ είναι µέλος µιας λίστας αν είναι η κεφαλή της λίστας ή αν είναι µέλος της ουράς της λίστας». 36 18

Παράδειγµα 7.3 Ησχέση append(x,y,z) είναι αληθής, όταν το Z είναι η λίστα, που προκύπτει από την συνένωση των λιστών Χ και Υ. append([],y,y). append([x Xs],Ys,[X Zs]):-append(Xs,Ys,Zs). Η δοµή του παραπάνω προγράµµατος είναι παρόµοια µε αυτή του προγράµµατος για τον ορισµό της σχέσης plus. 37 Παράδειγµα 7.4 Συχνά στον προγραµµατισµό σε Prolog χρησιµοποιούνται απλές σχέσεις, ήδη ορισµένες για να γραφούν πιο πολύπλοκα προγράµµατα. Σχέσεις όπως η member και η append χρησιµοποιούνται σχεδόν σε οποιοδήποτε µεγάλο πρόγραµµα γραφτεί σε Prolog. 38 19

Παράδειγµα 7.4 Σχέση reverse(x,y) ορίζεται σα συνάρτηση της append. Είναι αληθής, όταν η λίστα Υ είναι η αντίστροφη της λίστας Χ: reverse([],[]). reverse([x Xs],Ys):-reverse(Xs,Rs), append(rs, [X], Ys). Το νόηµα του παραπάνω προγράµµατος είναι: «Η αντίστροφη της κενής λίστας είναι η κενή λίστα. Η αντίστροφη µη-κενής λίστας µπορεί να παραχθεί αντιστρέφοντας την ουρά της και προσκολλώντας στο τέλος της αντεστραµµένης ουράς την κεφαλή της αρχικής λίστας.» 39 Παράδειγµα 7.4 Το προηγούµενο παράδειγµα µπορεί να γραφεί και χωρίς τη χρήση της append, αλλά µε προσθήκη ενός βοηθητικού κατηγορήµατος του reverse1, που διαθέτει ένα επιπλέον όρισµα: reverse(xs, Ys):-reverse1(Xs,[],Ys). reverse1([],ys, Ys). reverse1([x Xs],A,Ys):-reverse1(Xs,[X A],Ys). Το όρισµα Α ονοµάζεται συσσωρευτής (accumulator) διότι συσσωρεύει βήµα-βήµα το τελικό αποτέλεσµα (δηλαδή την αντίστροφη λίστα). 40 20

Αναδροµικός Προγραµµατισµός µε έντρα έντρα Πολύ χρήσιµος τύπος δεδοµένων Αναπαρίστανται µε χρήση όρων (µοναδική δοµή δεδοµένων Prolog) Χρήση του συναρτησιακού συµβόλου tree µε τρεις παραµέτρους: tree(element, Left, Right) Το στοιχείο Element είναι η ρίζα του συγκεκριµένου δέντρου, το Left το αριστερό υπόδεντρο και το Right το δεξί υποδέντρο. Το κενό δέντρο αναπαρίσταται µε τη σταθερά void. 41 Παράδειγµα έντρο µε κορυφή a, αριστερό παιδί b και δεξί παιδί c γράφεται ως: tree(a, tree(b,void,void), tree(c,void, void)) 42 21

Παράδειγµα Πρόγραµµα για έλεγχο του αν ένας δεδοµένος όρος είναι πράγµατι δυαδικό δέντρο (ανάλογο του κατηγορήµατος nat) binary_tree(void). binary_tree(tree(e,l,r)):-binary_tree(l),binary_tree (R). 43 Παράδειγµα Πρόγραµµα για έλεγχο του αν ένα δεδοµένο στοιχείο ανήκει σε ένα δέντρο ή όχι. Το πρόγραµµα είναι ανάλογο µε το member, που ορίσθηκε για τις λίστες: tree_member(x, tree(x,_,_)). tree_member(x, tree(y,l,r)):-tree_member(x,l). tree_member(x, tree(y,l,r)):-tree_member(x,r). 44 22

Παράδειγµα Το παραπάνω πρόγραµµα ελέγχει αν ένα δεδοµένο στοιχείο είναι ταυτόσηµο µε την κορυφή του δεδοµένου δέντρου. Αν ναι, το πρόγραµµα σταµατά µε επιτυχία. Αν όχι, το πρόγραµµα συνεχίζει αναδροµικά τη διερεύνηση στο αριστερό και το δεξί υποδέντρο. 45 Κατηγορήµατα Ουσιαστικά «διασχίζουν» ένα δεδοµένο δέντρο µε µία προκαθορισµένη σειρά. Το αποτέλεσµα της διάσχισης επιστρέφεται σε µία λίστα. 46 23

Παράδειγµα Η preorder διάσχιση ενός δυαδικού δέντρου ορίζεται από το ακόλουθο κατηγόρηµα: preorder(void,[]). preorder(tree(x,l,r), Xs):-preorder(L,Ls), preorder(r,rs), append([x Ls],Rs,Xs). Κατά την preorder διάσχιση ενός δέντρου καταγράφεται αρχικά η ρίζα του δέντρου και κατόπιν επισκεπτόµαστε αναδροµικά πρώτα το αριστερό υποδέντρο και µετά το δεξί. 47 Παράδειγµα Με ανάλογο τρόπο γράφεται πρόγραµµα, που υλοποιεί την διάσχιση inorder: inorder(void,[]). inorder(tree(x,l,r), Xs):-inorder(L,Ls), inorder(r,rs), append(ls,[x Rs],Xs). 48 24

Πρόγραµµα για την postorder postorder(void,[]). postorder(tree(x,l,r),xs):-postorder(l,ls), postorder(r,rs), append(ls,rs,ms), append(ms,[x],xs). Τα παραπάνω προγράµµατα διαφέρουν µόνο ως προς τον τρόπο, που γίνεται η συνένωση των επιµέρους αποτελεσµάτων (append). 49 Τελεστές Συναρτησιακά σύµβολα Χρήση σε επεξεργασία πιο πολύπλοκων δοµών από ότι οι λίστες και τα δέντρα Στην έκφραση 1+3, το + είναι τελεστής Ισοδύναµη έκφραση +(1,3) και όχι ο αριθµός 4, όπως συµβαίνει σε άλλες γλώσσες προγραµµατισµού Η πρόσθεση θα πραγµατοποιούταν αν ο όρος 1+3 ήταν όρισµα στο ειδικό κατηγόρηµα is της Prolog για υπολογισµό αριθµητικών εκφράσεων 50 25

Τελεστές -2 Οι τελεστές +,-,*,/,... δεν λαµβάνουν συγκεκριµένο νόηµα από την Prolog Χρησιµοποιούνται για να γραφούν εφαρµογές µε κοµψό και συνοπτικό τρόπο Στο επόµενο παράδειγµα οι τελεστές χρησιµοποιούνται, για τη διατύπωση της διαδικασίας παραγώγισης συναρτήσεων 51 Παραγώγιση derivative(n,x,0):-nat(n). derivative(x,x,s(0)). derivative(x^s(n),x,s(n)*(x^n)). derivative(sin(x),x,cos(x)). derivative(cos(x),x,-sin(x)). derivative(e^x,x,e^x). derivative(log(x),x,1/x). derivative(f+g,x,df+dg):-derivative(f,x,df), derivative(g,x,dg). derivative(f-g,x,df-dg):-derivative(f,x,df), derivative(g,x,dg). derivative(f*g,x,f*dg+g*df):-derivative(f,x,df), derivative(g,x,dg). 52 26

Παραγώγιση derivative(1/f,x,-df/(f*f)):-derivative(f,x,df). derivative(f/g,x, G*DF-F*DG/(G*G)):- derivative(f,x,df), derivative(g,x,dg). Το πρόγραµµα υπολογίζει την παράγωγο µίας µεγάλης κατηγορίας συναρτήσεων. Οι τελεστές, που χρησιµοποιούνται εκφράζουν πράξεις µεταξύ συναρτήσεων. Την έκφραση F*G, ο προγραµµατιστής την καταλαβαίνει σαν πολλαπλασιασµό συναρτήσεων και αυτό είναι δυνατό καθώς η Prolog δεν δίνει προκαθορισµένο νόηµα σε σύµβολα, όπως το *. 53 Παραγώγιση Αν στο παραπάνω πρόγραµµα δοθεί η ερώτηση?-derivative(cos(x)*(x^s(s(0))),x,d). Η οποία αναζητά την παράγωγο της συνάρτησης cos(x)*x 2 θα λάβουµε την απάντηση D=cos(x)*(s(s(0))*x^s(0))+x^s(s(0))*(-sin(x)) Η οποία αντιστοιχεί στη συνάρτηση cos(x)*(2*x)+x 2 *(-sin(x)). 54 27

Αριθµητικές πράξεις και Prolog Κάθε γλώσσα προγραµµατισµού παρέχει ιδιαίτερες ευκολίες στη χρήση και επεξεργασία αριθµών. Η Prolog διαθέτει Ειδικά κατηγορήµατα, γνωστά ως κατηγορήµατα συστήµατος (system predicates) 55 Κατηγορήµατα Prolog Βασικό κατηγόρηµα το is, που χρησιµοποιείται στη µορφή V is E. H Prolog υπολογίζει την τιµή του Ε και αν αυτή η τιµή συµφωνεί µε το V, τότε επιτυγχάνει. Αν V µεταβλητή, τότε λαµβάνει την τιµή του Ε. Όταν Ε περιέχει µεταβλητές µε άγνωστη τιµή τη στιγµή της εκτέλεσης, ο διερµηνέας της Prolog δίνει µήνυµα λάθους. 56 28

Παράδειγµα 7.5 Η ερώτηση?-8 is 5+3 επιτυγχάνει Ενώ η ερώτηση?-5+3 is 8 αποτυγχάνει ιότι η Prolog βλέπει το αριστερό µέλος της σαν τον όρο +(5,3) και δεν υπολογίζει την τιµή του. 57 Παράδειγµα Η ερώτηση?-χ is 5+3 θα δώσει την απάντηση Χ = 8 Η ερώτηση?-χ is 2+Y θα δώσει µήνυµα λάθους, διότι η αριθµητική τιµή του δεξιού µέλους δεν µπορεί να υπολογισθεί λόγω της µεταβλητής Υ. 58 29

Κατηγορήµατα της Prolog Για αριθµητικές πράξεις Χ = : = Υ (Οι αριθµητικές τιµές των Χ και Υ είναι ίδιες) Χ = \ = Υ (Οι αριθµητικές τιµές των Χ και Υ είναι διαφορετικές) 59 Κατηγορήµατα της Prolog Χ < Υ (Η αριθµητική τιµή του Χ είναι µικρότερη από αυτή του Υ) Χ=<Υ (Η αριθµητική τιµή του Χ είναι µικρότερη ή ίση από αυτή του Υ) 60 30

Κατηγορήµατα της Prolog Χ > Υ (Η αριθµητική τιµή του Χ είναι µεγαλύτερη από αυτή του Υ) Χ >= Υ (Η αριθµητική τιµή του Χ είναι µεγαλύτερη ή ίση από αυτή του Υ) 61 Κατηγορήµατα Με χρήση των προηγούµενων κατηγορηµάτων µπορούν να ξαναγραφούν κατηγορήµατα, που ορίσθηκαν µε χρήση των όρων (πχ 0, s(0),.) 62 31

Κατηγορήµατα Το κατηγόρηµα plus µπορεί να ορισθεί ως: plus(x,y,z):-z is X+Y Μειονέκτηµα: Χάνεται η αντιστρεψιµότητα κάποιων προγραµµάτων 63 Κατηγορήµατα Η ερώτηση?-plus(a,b,8) θα δώσει µήνυµα λάθους (και όχι όλα τα ζεύγη φυσικών µε άθροισµα 8). Αυτό συµβαίνει γιατί η παραπάνω ερώτηση ανάγεται από το µηχανισµό της Prolog στην ερώτηση?-8 is A+B 64 32

Κατηγορήµατα Με χρήση κατηγορηµάτων συστήµατος µπορούν να γραφούν προγράµµατα, που εκτελούν αριθµητικές πράξεις µε το συνηθισµένο τρόπο: sumlist([],0). sumlist([i L],Sum):-sumlist(L,S), Sum is S+I. 65 Αποκοπή Προγράµµατα Prolog Αναποτελεσµατικά, γιατί το δένδρο αναζήτησης είναι αρκετά µεγάλο Ενδιαφέρον Ύπαρξη λύσης προβλήµατος Όχι για την ποσότητα ή είδος λύσεων 66 33

Αποκοπή εν είναι απαραίτητο ο µηχανισµός εκτέλεσης της Prolog να διασχίσει ολόκληρο το δέντρο αναζήτησης, αλλά ένα µέρος του. Ο προγραµµατιστής καθοδηγεί το µηχανισµό αναζήτησης προς αποφυγή περιττών αναζητήσεων µε τη βοήθεια της αποκοπής (cut) (σύµβολο (!)). 67 Παράδειγµα 7.6 Έστω ερώτηση της µορφής? A, B, C. Και το ακόλουθο τµήµα προγράµµατος... Β: -Α 1,...Αk,!, Ak+1,, An. B: -Do,, Dm. B: -Fo,, Fk. 68 34

Ρόλος Αποκοπής Όταν ο µηχανισµός εκτέλεσης της Prolog περάσει από την αποκοπή, τότε τα Α1,...,Ak δεν πρόκειται να ξαναεξεταστούν για επιπλέον λύσεις οι εναλλακτικές προτάσεις για το Β, που υπάρχουν στο πρόγραµµα µετά την πρόταση, που περιέχει την αποκοπή, δεν πρόκειται να εξεταστούν Κάποιες λύσεις αποκόπτονται από τη διαδικασία 69 Παράδειγµα 7.7 Έστω το πρόγραµµα: father(tom,jim). male(jim). son(x,y):-father(y,x), male(x). son(george, jim). son(john, nick). Και η ερώτηση?-son(s,f). 70 35

Παράδειγµα 7.7 Ο µηχανισµός της Prolog θα δώσει τρεις λύσεις: {S=jim, F=tom} {S=george, F=jim} {S=john, F=nick} 71 Παράδειγµα 7.7 Αν το πρόγραµµα αντικατασταθεί µε το: father(tom,jim). male(jim). son(x,y):-father(y,x),!,male(x). son(george, jim). son(john, nick). 72 36

Παράδειγµα 7.7 Ο µηχανισµός εκτέλεσης της Prolog δίνει τη λύση {S=jim, F=tom}. Οι άλλες δύο λύσεις αποκόπτονται λόγω του συµβόλου!, που δεν επιτρέπει την εξέταση των εναλλακτικών προτάσεων για το son(s,f). 73 Σχόλια Ηαποκοπή χρησιµοποιείται συνήθως όταν γνωρίζουµε ότι το πρόβληµα έχει µία και µοναδική λύση και επιθυµούµε τον περιορισµό άσκοπου ψαξίµατος. Τα προγράµµατα είναι έτσι πιο αποτελεσµατικά. Η αποκοπή δεν ανήκει στο λογικό τµήµα της Prolog και γι αυτό ενδέχεται να δηµιουργήσει δυσνόητα προγράµµατα. Λανθασµένη χρήση της περικόπτει λύσεις χρήσιµες και επιθυµητές. 74 37