Από όταν σχεδιάστηκε η Prolog, ο λογικός προγραμματισμός έγινε ένα από τα επικρατέστερα μοντέλα
προγραμματισμού. Ο λογικός προγραμματισμός είναι παραδοσιακά πρώτης τάξης. Ωστόσο, έχουν
υπάρξει κάποιες προσπάθειες να επεκταθεί με χαρακτηριστικά υψηλότερης τάξης.
Μία πρόσφατη εργασία των Χαραλαμπίδη κ.α. προτείνει μία καινοτόμα εναλλακτική στις προηγούμε-
νες προσπάθειες. Οι συγγραφείς ορίζουν ένα θεωρητικό πλαίσιο, H, με στατικό σύστημα τύπων και
εκτατή σημασιολογία. Σε αντίθεση με προηγούμενα πλαίσια υψηλότερης τάξης με εκτατή σημασιολο-
γία, το δικό τους επιτρέπει μη αρχικοποιημένες μεταβλητές υψηλότερης τάξης. Παρέχουν επίσης μία
πρωτότυπη υλοποίηση, υπό το όνομα HOPES.
Σε αυτή τη διπλωματική εργασία, συνεχίζουμε τη δουλειά των Χαραλαμπίδη κ.α. για να υπερβούμε
δύο μειονεκτήματά της:
1) Η HOPES είναι αυτή τη στιγμή ασύμβατη με την Prolog, το εκ των πραγμάτων σημείο αναφοράς
για το λογικό προγραμματισμό. Πιο συγκεκριμένα, απλά προγράμματα σε Prolog που θεωρητι-
κά ανήκουν στο υποσύνολο πρώτης τάξης της H δεν γίνονται δεκτά από την HOPES.
2) Η HOPES δεν υποστηρίζει πολυμορφικά κατηγορήματα.
Για να υπερβούμε αυτά τα μειονεκτήματα, επανασχεδιάζουμε την H, στοχεύοντας σε μια υλοποίηση
που θα μπορεί να χειριστεί ένα υπερσύνολο υψηλότερης τάξης της συνηθισμένης Prolog, και την
επεκτείνουμε με ένα πολυμορφικό σύστημα συμπερασμού τύπων. Ονομάζουμε το καινούριο μας πλαί-
σιο polyH. Στη συνέχεια προτείνουμε μία γλώσσα προγραμματισμού βασισμένη στο πλαίσιο αυτό,
την polyHOPES, η οποία είναι σχεδιασμένη για να αποτελέσει μια επέκταση υψηλότερης τάξης της
Prolog, και για την οποία παρέχουμε μια πρωτότυπη υλοποίηση.
Since the design of Prolog, logic programming has been one of the most prominent programming
paradigms. Logic programming has traditionally been first-order. However, there have been some
attempts to extend it with higher-order features.
A recent work by Charalambidis et al. proposes an innovative alternative to the previous attempts. Its
authors define a framework, H, with a static typing discipline and an extensional semantics. Unlike
previous extensional higher-order frameworks, their framework allows for uninstantiated higher-order
variables. They also provide a prototype implementation, HOPES.
In this thesis, we build on this work of Charalambidis et al. to overcome two drawbacks:
1) HOPES is currently incompatible with Prolog, the de-facto standard in logic programming. More
specifically, simple Prolog programs which theoretically belong in the first-order subset of H
are not accepted by HOPES.
2) HOPES supports no polymorphic predicates.
To overcome these drawbacks, we redesignH, aiming at an implementation that could handle a higherorder
proper superset of ordinary Prolog, and extend it with a polymorphic type inference system.
The new framework is named polyH. Then, we propose a surface language over our framework,
polyHOPES, which is designed to be a higher-order extension of Prolog, and of which we provide a
prototype implementation.