Ο κλάδος της τυπικής επαλήθευσης ασχολείται με την απόδειξη της ορθότητας προγραμμάτων και αλγορίθμων. Καθώς αυξάνεται -εκθετικά- η πολυπλοκότητα των υπολογιστικών συστημάτων αλλά και ενσωματώνονται σε καίρια σημεία, εντείνεται η
ανάγκη να υπάρχουν αδιαμφισβήτητες εγγυήσεις ότι ένα πρόγραμμα θα έχει την επιθυμητή συμπεριφορά.
Ένα από τα πιο ενδιαφέροντα προβλήματα στην περιοχή της τυπικής επαλήθευσης είναι το πρόβλημα framing. Σε αυτή τη διπλωματική εργασία ασχολούμαστε με μια νέα μέθοδο που επεκτείνει τις μέχρι σήμερα μεθοδολογίες αντιμετώπισης του
προβλήματος framing, τους backpointers.
Οι backpointers επεκτείνουν την εκφραστικότητα των προδιαγραφών παρέχοντας τη δυνατότητα αναφοράς σε αντικείμενα μη προσβάσιμα από τη τρέχουσα στοίβα.
Δημιουργήσαμε μια υλοποίηση των backpointers για τη Chalice, μια αντικειμενοστραφή και concurrent γλώσσα προδιαγραφών που χρησιμοποιεί implicit
dynamic frames και fractional permissions. Τέλος, χρησιμοποιήσαμε την επέκταση αυτή για την απόδειξη της ορθότητας μιας ταυτόχρονης δομής δεδομένων, τις copy-on-write λίστες και του priority inheritance protocol. Σύμφωνα με την
έρευνα μας είναι η πρώτη προσπάθεια απόδειξης ενός προγράμματος αυτής της κατηγορίας με χρήση αυτόματης επαλήθευσης.
Solid guarantees that a computer program will behave the desired way is only possible by formal verification. As the complexity of designs grows
exponentially and computer systems are used in critical applications, it becomes increasingly important to prove the correctness of algorithms.
One of the most challenging problems in formal specification and verification is the framing problem. In this thesis we propose an new formalism that extends the current methodologies targeting the framing problem: Backpointers.
Backpointers increase the expressiveness by allowing specifications to include objects not accessible from the current stack. We implemented this approach in Chalice, an object-oriented and concurrent specification language that uses
implicit dynamic frames and fraction-al permissions. Finally, by using this extension of Chalice we worked on proving the validity of a concurrent implementation of copy-on-write lists and the priority inheritance proto-col. To
the best of our knowledge this is the first attempt to prove a program from this family of problems using an automated verifier.