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



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

2 Ο ΓΕΛ ΣΤΑΥΡΟΥΠΟΛΗΣ ΣΧΟΛΙΚΟ ΕΤΟΣ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΕΠΙΜΕΛΕΙΑ : ΧΑΛΑΤΖΙΑΝ ΠΑΥΛΟΣ

1.1 A. ΟΙ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΚΑΙ ΟΙ

Sheet2. Σωστή, και µπράβο που µεριµνήσατε για λίστες διαφορετικών µεγεθών.

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

Προγραµµατισµός στην Basic

HY118- ιακριτά Μαθηµατικά

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

HY118- ιακριτά Μαθηµατικά

Πώς είναι δυνατόν να είναι ισοδύναµες οι εξισώσεις που αναφέρονται στο ερώτηµα ii, αφού δεν έχουν το ίδιο πεδίο ορισµού 2 ;

Κεφάλαιο 5ο: Εντολές Επανάληψης

Α. ΠΡΟΣΘΕΣΗ - ΑΦΑΙΡΕΣΗ ΡΗΤΩΝ ΠΑΡΑΣΤΑΣΕΩΝ ΜΕ ΚΟΙΝΟ ΠΑΡΟΝΟΜΑΣΤΗ

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

Εφαρµογή EXTRA. ιαδικασία εξαγωγής της Μηχανογραφικής. έκδοσης ισοζυγίου στην εφαρµογή Extra Λογιστική ιαχείριση.

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

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

2.2.3 Η εντολή Εκτύπωσε

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

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

2. Στοιχεία Πολυδιάστατων Κατανοµών

Οδηγίες χρήσης ιστοσελίδας VOLVO

HY118- ιακριτά Μαθηµατικά. Παράδειγµα. Από τα συµπεράσµατα στις υποθέσεις Αποδείξεις - Θεωρία συνόλων. Από τις υποθέσεις στα συµπεράσµατα...

ικτυωτά διαγράµµατα και οµάδες αυτοµορφισµών Παρουσίαση εργασίας φοιτητή (x,a) 1) (xy)a=x(ya) x,y G και a A 1) a(xy)=(ax)y 2) ae=a

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ PROLOG Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ

KΕΦΑΛΑΙΟ 6 ΥΝΑΜΟΣΕΙΡΕΣ-ΣΕΙΡΕΣ TAYLOR

3. Οριακά θεωρήµατα. Κεντρικό Οριακό Θεώρηµα (Κ.Ο.Θ.)

, όπου οι σταθερές προσδιορίζονται από τις αρχικές συνθήκες.

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

2. Δυναμικό και χωρητικότητα αγωγού.

NTÙÍÉÏÓ ÃÊÏÕÔÓÉÁÓ - ÖÕÓÉÊÏÓ

P (A) = 1/2, P (B) = 1/2, P (C) = 1/9

ΚΕΦΑΛΑΙΟ 12ο. œ œ œ œ œ œ œ œ ΙΑΣΤΗΜΑΤΑ. ιάστηµα λέγεται η απόσταση µεταξύ δύο φθόγγων. Η 1η νότα λέγεται ΒΑΣΗ και η 2η ΚΟΡΥΦΗ.

HY118- ιακριτά Μαθηµατικά. Νόµοι ισοδυναµίας. Κατηγορηµατικός Λογισµός. ιακριτά Μαθηµατικά, Εαρινό εξάµηνο Παρασκευή, 24/02/2017

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

ΣΩΣΤΗ ΧΡΗΣΗ ΤΩΝ Ε ΟΜΕΝΩΝ

1.5 ΑΞΙΟΣΗΜΕΙΩΤΕΣ ΤΑΥΤΟΤΗΤΕΣ

Γραµµατικές για Κανονικές Γλώσσες


Μια TM µπορεί ένα από τα δύο: να αποφασίζει µια γλώσσα L. να αναγνωρίζει (ηµιαποφασίζει) µια γλώσσα L. 1. Η TM «εκτελεί» τον απαριθµητή, E.

Αρχή ή τέλος ή κοµβικό σηµείο. Λειτουργία εισόδου / εξόδου. Έλεγχος. Πράξεις / ενέργειες. Βρόχος R7 φορές

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Μενού Προβολή. Προβολές εγγράφου

ΡΗΤΟΙ ΑΡΙΘΜΟΙ - ΘΕΩΡΙΑ

3.1 εκαδικό και υαδικό

Οι πράξεις που χρειάζονται για την επίλυση αυτών των προβληµάτων (αφού είναι απλές) µπορούν να τεθούν σε µια σειρά και πάρουν µια αλγοριθµική µορφή.

Κεφάλαιο 10. Ερωτήσεις ανάπτυξης

α) να βρείτε το άθροισµα των τεσσάρων πρώτων όρων της S 4 και β) το άθροισµα των άπειρων όρων της.

Επεξεργασία Αρχείων Κειµένου

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΚΕΝΤΡΟ ΙΑΧΕΙΡΙΣΗΣ ΙΚΤΥΩΝ. Εγχειρίδιο χρήσης των υπηρεσιών τηλεκπαίδευσης του Πανεπιστηµίου Ιωαννίνων. Ασύγχρονη τηλεκπαίδευση

ΙΑΝΥΣΜΑΤΑ ΘΕΩΡΙΑ ΘΕΜΑΤΑ ΘΕΩΡΙΑΣ. Τι ονοµάζουµε διάνυσµα; αλφάβητου επιγραµµισµένα µε βέλος. για παράδειγµα, Τι ονοµάζουµε µέτρο διανύσµατος;

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 7 η. Βασίλης Στεφανής

Αναπαράσταση Γνώσης και Συλλογιστικές

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

* τη µήτρα. Κεφάλαιο 1o

Α. ΑΠΑΡΑΙΤΗΤΕΣ ΓΝΩΣΕΙΣ ΘΕΩΡΙΑΣ

φροντιστήρια Θέματα Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ λυκείου Προσανατολισμός Σπουδών Οικονομίας και Πληροφορικής

Όριο συνάρτησης στο x. 2 με εξαίρεση το σημείο A(2,4) Από τον παρακάτω πίνακα τιμών και τη γραφική παράσταση του παραπάνω σχήματος παρατηρούμε ότι:

6.6 ΑΝΤΙΣΤΡΟΦΩΣ ΑΝΑΛΟΓΑ ΠΟΣΑ

2.4 ΚΛΑΣΜΑΤΙΚΕΣ ΕΞΙΣΩΣΕΙΣ

Δυναμική ενέργεια στο βαρυτικό πεδίο. Θετική ή αρνητική;

6. Αρµονικές συναρτήσεις και συνοριακά προβλήµατα (Dirichlet).

Ασαφής Λογική Παράδειγµα. Νίκος Καραδήµας

Θεώρηµα: Z ( Απόδειξη: Περ. #1: Περ. #2: *1, *2: αποδεικνύονται εύκολα, διερευνώντας τις περιπτώσεις ο k να είναι άρτιος ή περιττός

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1

Γνωριµία µε τη Microsoft Access

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

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Η ΕΛΛΑ Α ΣΕ ΑΡΙΘΜΟΥΣ ΦΥΛΛΑ ΕΡΓΑΣΙΑΣ ΜΑΘΗΤΗ ΕΝΤΥΠΟ Α. Φράγκου Στασινή


4. Αναδροµικός τύπος Είναι ο τύπος που συσχετίζει δύο ή περισσότερους γενικούς όρους µιας ακολουθίας

Παρεµβολή και Προσέγγιση Συναρτήσεων

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

Μηχανική ΙI. Μετασχηµατισµοί Legendre. της : (η γραφική της παράσταση δίνεται στο ακόλουθο σχήµα). Εάν

Α. ΣΥΓΚΡΙΣΗ ΚΛΑΣΜΑΤΩΝ

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

Κατηγορηµατική Λογική

4.4 Ερωτήσεις διάταξης. Στις ερωτήσεις διάταξης δίνονται:

ΜΕΛΕΤΗ ΣΥΝΑΡΤΗΣΗΣ. Άρτια και περιττή συνάρτηση. Παράδειγµα: Η f ( x) Παράδειγµα: Η. x R και. Αλγεβρα Β Λυκείου Πετσιάς Φ.- Κάτσιος.

ΤΜΗΜΑ ΣΤΑΤΙΣΤΙΚΗΣ ΚΑΙ ΑΣΦΑΛΙΣΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Π

Παιδαγωγική προσέγγιση: Πρόταση για την διδασκαλία της έννοιας αλγόριθµός στο περιβάλλον MicroWorlds Pro

Αλγεβρικές παραστάσεις - Αναγωγή οµοίων όρων

ΕΡΩΤΗΜΑΤΑ σε ΓΝΩΣΗ ΚΑΤΗΓΟΡΗΜΑΤΙΚΗ ΛΟΓΙΚΗ. ηµήτρης Ψούνης ΠΛΗ31, Απαντήσεις Ερωτήσεων Quiz - ΓΝΩΣΗ 1. ΣΩΣΤO τo (b): NAI ΕΞΗΓΗΣΗ: ΤΕΣΤ 7 / ΑΣΚΗΣΗ 1.

Η εφαρµογή xsortlab. Οπτικός τρόπος ταξινόµησης

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

Ενότητα 1: Εισαγωγή Ασκήσεις και Λύσεις

Το λογιστικό φύλλο (Excel)

ΚΕΦΑΛΑΙΟ 4 ΤΟ ΕΡΓΑΛΕΙΟ SOLVER

είκτες και Πίνακες (2)

Λογικός Προγραμματισμός Ασκήσεις

HY118- ιακριτά Μαθηµατικά

Κλάσµατα ΜΑΘΗΜΑ 1 Ο. Πεινάσαµε; Τι λέτε; Να παραγγείλουµε καµιά πίτσα; Ήρθε κιόλας η παραγγελία! Λαχταριστή πίτσα κοµµένη σε 8 ίσα κοµµάτια

Παράλληλοι Αλγόριθµοι

Thanasis Xenos ΕΛΛΗΝΙΚΗ ΜΑΘΗΜΑΤΙΚΗ ΕΤΑΙΡΕΙΑ ΠΑΡΑΡΤΗΜΑ ΗΜΑΘΙΑΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΚΕΝΤΡΟ ΙΑΧΕΙΡΙΣΗΣ ΙΚΤΥΩΝ. Εγχειρίδιο χρήσης των υπηρεσιών τηλεκπαίδευσης του Πανεπιστηµίου Ιωαννίνων. Ασύγχρονη τηλεκπαίδευση

Εκπαιδευτικό λογισµικό Μαθηµατικών ΣΤ τάξης 1. Κεφάλαιο 1 ο Φυσικοί αριθµοί : «Φυσικοί αριθµοί Μεγάλοι Φυσικοί αριθµοί Ποιος είναι ο αριθµός»

Κεφάλαιο 1ο: Βασικές Έννοιες

HY118- ιακριτά Μαθηµατικά

Μαθηµατικά Τεύχος Α. Φύλλα εργασίας. Για παιδιά ΣΤ ΗΜΟΤΙΚΟΥ. Συµπληρωµατικές ασκήσεις & Προβλήµατα Ανάλυση θεωρίας µε ασκήσεις και παραδείγµατα

Ορισµός. Παρατηρήσεις. Σχόλιο

Transcript:

ΠΑΡΑ ΕΙΓΜΑΤΑ ΣΤΗ ΓΛΩΣΣΑ PROLOG ΠΑΡΑ ΕΙΓΜΑ 1 Έστω ότι µας ζητούν να γράψουµε ένα πρόγραµµα Prolog που να εκτυπώνει την οποιαδήποτε υπο-λίστα της παρακάτω λίστας: red blue green yellow gray χρησιµοποιώντας το κατηγόρηµα next/2 (που παίρνει σαν ορίσµατα δύο διπλανά στοιχεία). ΑΠΑΝΤΗΣΗ-ΕΠΕΞΗΓΗΣΕΙΣ Με βάση το κατηγόρηµα next/2 αποτυπώνουµε τη λίστα ως γεγονότα διπλανών στοιχείων: next(red, blue). next(blue, green). next(green, yellow). next(yellow, gray). next(gray, nil). Στη συνέχεια, πρέπει να γράψουµε ένα κανόνα (ή περισσότερους), που να εκτυπώνει την οποιαδήποτε υπό-λίστα. Προφανώς, το κατηγόρηµα στο οποίο θα αναφέρεται ο κανόνας θα πρέπει να έχει σαν όρισµα το στοιχείο το οποίο θα είναι κεφαλή της υπολίστας, έστω το print_list/1. Ο κανόνας αυτός θα είναι ο εξής: print_list(x) :- next(x, Y), write(x), nl, print_list(y). Ας προσπαθήσουµε να ερµηνεύσουµε αυτόν τον κανόνα. Ο κανόνας λοιπόν αυτός λέγει το εξής: Για να εκτυπώσεις την υπο-λίστα µε κεφαλή κάποιο στοιχείο X (print_list(x)), θα πρέπει (:-) (α) να βρεις το διπλανό στοιχείο του X, έστω Υ (next(x, Y)), (β) να εκτυπώσεις το Χ (write(x)), (γ) να πας στην επόµενη γραµµή και (δ) να εκτυπώσεις την υπο-λίστα µε κεφαλή το Υ. Όπως καταλαβαίνετε, πρόκειται για αναδροµικό ορισµό: η εκτύπωση µιας υπο-λίστας ορίζεται σαν η εκτύπωση της κεφαλής της συν την εκτύπωση της υπο-λίστας µε κεφαλή το επόµενο (διπλανό) στοιχείο της. Τα δύο ουσιαστικά στοιχεία στο δεξί µέρος του κανόνα, δηλ. αυτά που έχουν σχέση µε τη διαδικασία συλλογισµού της Prolog από τη βάση γνώσης του προβλήµατος, είναι τα next(x, Y) και print_list(y), τα υπόλοιπα παρεµβάλλονται για λόγους εκτύπωσης. Ας δούµε τώρα πώς εκτελεί αυτόν τον κανόνα η Prolog. Αν κάνουµε το ερώτηµα:?- print_list(red). δηλ. ζητήσουµε να εκτυπωθεί όλη η λίστα, τότε θα συµβούν τα παρακάτω.

Η Prolog αναζητεί να βρει γεγονός ή κανόνα που να ταιριάζει µε το ερώτηµα, παίρνοντάς τα µε τη σειρά. Όταν λέµε ότι ένα ερώτηµα, όπως το παραπάνω, «ταιριάζει» µ ένα γεγονός ή µε την κεφαλή ενός κανόνα, σηµαίνει ότι έχουν το ίδιο κατηγόρηµα και τα ίδια ή ενοποιούµενα ορίσµατα. ύο ορίσµατα είναι ενοποιούµενα. αν το ένα είναι σταθερά και το άλλο µεταβλητή ή αντίστροφα. Στην περίπτωσή µας δεν υπάρχει γεγονός που να ταιριάζει. Ταιριάζει µόνο ο κανόνας (δηλ. η κεφαλή του), οπότε και η µεταβλητή Χ (του κανόνα) παίρνει την τιµή red. Στη συνέχεια, εξετάζει αν εκπληρώνονται οι συνθήκες του κανόνα, δηλ. οι ατοµικές εκφράσεις που βρίσκονται στα δεξιά του συµβόλου :-. Ξεκινά µε την next(x, Y). Επειδή η Χ έχει πάρει την τιµή red, η έκφραση γίνεται next(red, Y). Η έκφραση αυτή ταιριάζει µε το γεγονός next(red, blue), οπότε η Υ παίρνει την τιµή blue. Μετά εξετάζει την write(x), η οποία ταιριάζει µε τον ενσωµατωµένο (στην Prolog) ορισµό του κατηγορήµατος write και έχει σαν αποτέλεσµα την εκτύπωση της τιµής της Χ, δηλ. εκτυπώνεται το red. Στη συνέχεια εξετάζει την nl, η οποία έχει σαν αποτέλεσµα την αλλαγή γραµµής για την επόµενη εκτύπωση. Τέλος, εξετάζει την print_list(y). Η ατοµική αυτή έκφραση δεν ταιριάζει µε κανένα γεγονός, αλλά ταιριάζει µε τον κανόνα. Οπότε ξεκινά ο ίδιος πάλι κύκλος, όπως περιγράφτηκε παραπάνω. Σε κάθε κύκλο, όπως φαίνεται, εκτυπώνεται και ένα στοιχείο της λίστας, αυτό που είναι κεφαλή της τρέχουσας υπο-λίστας. Στο τέλος του τελευταίου κύκλου αποµένει για ταίριασµα το print_list(nil), το οποίο ταιριάζει µε τον κανόνα. Η πρώτη συνθήκη που πρέπει να εκπληρωθεί τώρα είναι η next(nil, Y). Επειδή δεν υπάρχει γεγονός ή κανόνας που να ταιριάζει, σταµατά η διαδικασία και επιστρέφει Νο. Για να αποφύγουµε την επιστροφή του Νο, που φαίνεται σαν να έχει αποτύχει η διαδικασία, µπορούµε να προσθέσουµε τον παρακάτω κανόνα: print_list(x) :- next(x, nil), write(x), nl. ο οποίος θα µπει πριν από τον ήδη υπάρχοντα κανόνα. Ο κανόνας αυτός διαπραγµατεύεται την οριακή περίπτωση του τέλους της λίστας. Λέγει δηλ. ότι αν φτάσουµε στο τελευταίο στοιχείο της λίστας, οπότε δεν υπάρχει διπλανό στοιχείο (next(x, nil)), τότε εκτύπωση της υπο-λίστας σηµαίνει εκτύπωση του τελευταίου στοιχείου (write(x)) και µετάβαση στην επόµενη γραµµή (nl), µιας και επόµενη υπο-λίστα δεν υπάρχει. Εποµένως η απάντηση στο ερώτηµα:?- print_list(red). θα είναι red blue

green yellow gray Αν θέσουµε τώρα το ερώτηµα:?- print_list(green). green yellow gray

ΠΑΡΑ ΕΙΓΜΑ 2 ίνονται τα εξής γεγονότα: «Ο Παύλος είναι πατέρας του Γιάννη και της Γεωργίας» και «Η Ελένη είναι µητέρα της Μαρίας και του Πέτρου». Επίσης, µας δίνεται και η εξής γνώση τύπου κανόνα, που αφορά το πότε δύο άνθρωποι είναι αδέλφια: ύο άνθρωποι Χ, Υ είναι αδέλφια 1. Αν έχουν τον ίδιο πατέρα 2. Αν έχουν την ίδια µητέρα. Ζητείται να αναπαρασταθεί η παραπάνω γνώση στην Prolog, ώστε να δηµιουργηθεί αντίστοιχο πρόγραµµα. Το πρόγραµµα θα έχει ως εξής: ΑΠΑΝΤΗΣΗ is_sibling(x, Y) :- is_father(z, X), is_father(z, Y). is_sibling(x, Y) :- is_mother(z, X), is_mother(z, Y). Η ερµηνεία αυτών των κανόνων είναι αυτονόητη. Αν θέσουµε το ερώτηµα:?- is_sibling(georgia, john). Αν θέσουµε τώρα το ερώτηµα: X = john ; (Εδώ το σηµαίνει ότι δεν υπάρχουν άλλες απαντήσεις-λύσεις). Όπως είναι φανερό, το πρόγραµµα εξάγει το συµπέρασµα ότι ο Γιάννης είναι αδελφός του εαυτού του, το οποίο δεν θα θέλαµε να εξάγεται, παρ ότι κατά µια έννοια δεν είναι λανθασµένο. Για να αποτρέψουµε τέτοιου είδους συµπεράσµατα, θα πρέπει να κάνουµε τις εξής προσθήκες: equal(john, john). equal(georgia, georgia).

equal(maria, maria). equal(peter, peter). is_sibling(x, Y) :- is_father(z, X), is_father(z, Y), not(equal(x, Y)). is_sibling(x, Y) :- is_mother(z, X), is_mother(z, Y), not(equal(x, Y)). Έχουµε προσθέσει το κατηγόρηµα equal/2, το οποίο χρησιµοποιούµε για να αποκλείσουµε τα τις παραπάνω περιπτώσεις. Τώρα, αν θέσουµε το ερώτηµα: Μια ευκολότερη λύση, που διαθέτει η Prolog, είναι η χρησιµοποίηση του κατηγορήµατος =. Ουσιαστικά γίνεται ό,τι και παραπάνω, αλλά ευκολότερα. Το πρόγραµµα θα γίνει τώρα ως εξής: is_sibling(x, Y) :- is_father(z, X), is_father(z, Y), not(x=y). is_sibling(x, Y) :- is_mother(z, X), is_mother(z, Y), not(x=y). Τώρα, αν ξαναθέσουµε το ερώτηµα: τότε πάλι θα εκτυπωθεί