Τι είναι η Prolog
Η Prolog είναι μία δηλωτική γλώσσα προγραμματισμού στην οποία τόσο οι δομές δεδομένων της όσο και ο μηχανισμός λειτουργίας της βασίζονται στο προτασιακό και κατηγορηματικό λογισμό.
Prolog = Programming in Logic
Τα πρώτα βήματα στο λογικό προγραμματισμό οφείλονται στους Kowalski και Colmerauer το 1972. Πρώτος ο Kowalski διατύπωσε τη διαδικαστική ερμηνεία της λογικής των τύπων Horn.
Έδειξε ότι κάθε κανόνας της μορφής:
Α1 <= Β1 & Β2 & ... & Βn
όπου Α1, B1,... Βn είναι κατηγορήματα, μπορεί να διαβαστεί και να εκτελεστεί από μία αναδρομική γλώσσα προγραμματισμού όπως η Prolog.
Για να πάρουμε μία "γεύση" για το πως αναπαριστούμε τύπους Horn στη Prolog, δίνουμε τα ακόλουθα δύο παραδείγματα:
Παράδειγμα 1ο:
Έστω η ακόλουθη πρόταση:
"Όταν μελετώ στα Happy Donuts και τρώω donuts θέλω να πίνω και καφέ."
στη μαθηματική λογική αναπαριστούμε τη πρόταση γράφοντας τον ακόλουθο τύπο Horn:
(s & k & d) => (c)
όπου s="μελετώ",
k
="είμαι στα Happy Donuts",
d="τρώω donuts",
c="πίνω καφέ"
Αντίστοιχα στη Prolog εισάγουμε τα ακόλουθα γεγονότα (τα οποία πιστεύουμε ότι ισχύουν):
s.
k.
d.
και τον ακόλουθο κανόνα:
c :- s, k, d.
όπου ":-" και "," αναπαριστούν τους λογικούς συνδέσμους <= και & αντίστοιχα.
Έχοντας εισάγει τη γνώση αυτή στη Prolog, μπορούμε να ρωτήσουμε αν το γεγονός c είναι αληθές. Η Prolog ελέγχοντας διαδοχικά από αριστερά προς τα δεξιά όλα τα γεγονότα του δεξιού μέλους του κανόνα βγάζει αυτόματα το συμπέρασμα ότι το c είναι αληθές.
Παράδειγμα 2ο:
Ένα άλλο παράδειγμα τύπου Horn είναι το ακόλουθο:
"Αν ο Χ είναι άνθρωπος τότε ο Χ είναι θνητός"
Στη μαθηματική λογική γράφουμε:
(Human(x)) --> (Mortal(x))
Αντίστοιχα στην Prolog έχουμε:
mortal(X):- human(X).
Αν τώρα δηλώσουμε ότι το γεγονός:
human(john).
είναι αληθές, τότε η Prolog μπορεί να εξάγει το συμπέρασμα ότι ο john είναι θνητός, δηλαδή ότι το γεγονός mortal(john) ισχύει. Αν όμως ρωτήσουμε αν ισχύει το γεγονός mortal(nick) , τότε η Prolog απαντά ότι το γεγονός αυτό δεν ισχύει (ακόμα και αν πιστεύουμε ότι στο πραγματικό μας κόσμο ισχύει). Δηλαδή στη Prolog ισχύει η υπόθεση του κλειστού κόσμου (closed world assumption).
Στις επόμενες δύο ενότητες θα αναφερθούμε:
Τελευταία ενημέρωση σελίδας: 17/10/2008 |
|