HEAL DSpace

Μηχανική κατασκευή συνεπαγωγικών (coinductive) αποδείξεων στη Liquid Haskell

Αποθετήριο DSpace/Manakin

Εμφάνιση απλής εγγραφής

dc.contributor.author Μαστόρου, Λυκούργος el
dc.contributor.author Mastorou, Lykourgos en
dc.date.accessioned 2023-01-27T07:31:05Z
dc.date.available 2023-01-27T07:31:05Z
dc.identifier.uri https://dspace.lib.ntua.gr/xmlui/handle/123456789/56955
dc.identifier.uri http://dx.doi.org/10.26240/heal.ntua.24653
dc.rights Default License
dc.subject Γλώσσες προγραμματισμού el
dc.subject Αυτοματοποιημένες αποδείξεις el
dc.subject Πιστοποιημένος κώδικας el
dc.subject Συνεπαγωγικές αποδείξεις el
dc.subject Προγραμματισμός με αποδείξεις el
dc.subject Certified code en
dc.subject Coinduction en
dc.subject Programming languages en
dc.subject Theorem Proving en
dc.subject Programming with proofs en
dc.title Μηχανική κατασκευή συνεπαγωγικών (coinductive) αποδείξεων στη Liquid Haskell el
dc.title Mechanizing coinductive proofs in Liquid Haskell en
heal.type bachelorThesis
heal.classification Επιστήμη υπολογιστών el
heal.classification Επαλήθευση κώδικα el
heal.classification Computer science en
heal.classification Software verification el
heal.language el
heal.language en
heal.access free
heal.recordProvider ntua el
heal.publicationDate 2022-07-28
heal.abstract Η ορθότητα είναι μια επιθυμητή αλλά όχι τετριμμένη ιδιότητα του λογισμικού. Ένας πολύ αξιόπιστος τρόπος για να διασφαλιστεί η ορθότητα είναι η επαλήθευση λογισμικού. H Liquid Haskell είναι ένας επαγωγικός επαληθευτής που βασίζεται σε έναν επιλύτη SMT και επεκτείνει το σύστημα τύπων της Haskell χρησιμοποιώντας λογικά κατηγορήματα. Χρησιμοποιώντας τη Liquid Haskell, είναι δυνατό να αποδειχθούν πολλές επιθυμητές ιδιότητες για κώδικα γραμμένο σε Haskell. Η Haskell, λόγω της οκνηρής αποτίμησης, μας επιτρέπει να ορίσουμε αντικείμενα που έχουν πιθανώς άπειρα στοιχεία, όπως άπειρες λίστες. Ωστόσο, η Liquid Haskell δεν είναι σε θέση να επαληθεύσει τέτοιους ορισμούς λόγω έλλειψη τερματισμού τους. Επίσης, για παρόμοιους λόγους, δεν μπορεί να επιχειρηματολογήσει για ιδιότητες τέτοιων ορισμών. Αυτή η εργασία έχει στόχο να αντιμετωπίσει αυτό το χάσμα μεταξύ των δυνατοτήτων της Haskell και της εκφραστικότητας της Liquid Haskell. Παρουσιάζουμε μια τεχνική που μας βοηθά να επαλη- θεύσουμε την παραγωγικότητα των συναναδρομικών ορισμών, ακολουθώντας παρόμοια δουλειά σε άλλες γλώσσες. Παρουσιάζουμε επίσης δύο εναλλακτικές προσεγγίσεις, δηλαδή τις συνεπαγωγικές αποδείξεις με τη χρήση δεικτών και τις εποικοδομητικές συνεπαγωγικές αποδείξεις, οι οποίες κω- δικοποιούν με συνέπεια συνεπαγωγικές αποδείξεις στη Liquid Haskell. Χρησιμοποιούμε αυτές τις κωδικοποιήσεις για να ελέγξουμε αυτόματα διάφορους ορισμούς και αποδείξεις, επιδεικνύοντας πώς μπορεί να χρησιμοποιηθεί ένας επαγωγικός επαληθευτής για να ελέγχθούν οι συνεπαγωγικές ιδιότητες και η παραγωγικότητα κώδικα Haskell. el
heal.abstract Correctness is a desirable, yet not trivial, property of software. One very reliable way to ensure correctness is software verification. Liquid Haskell is an inductive verifier which is based on an SMT solver and extends Haskell’s type system using logical predicates. Using Liquid Haskell, it is possible to prove many desired properties for code written in Haskell. Haskell, due to laziness, allows us to define objects that have possibly infinite elements, such as infinite lists. However, Liquid Haskell is not able to verify such definitions due to their lack of termination. Also, for similar reasons, it cannot reason about properties of such definitions. This thesis aims to address this gap between Haskell’s capabilities and Liquid Haskell’s expressiveness. We present a technique which aids us to verify the productivity of corecursive definitions, following similar work in other languages. We also present two alternative approaches, namely indexed and constructive coinduction, to consistently encode coinductive proofs in Liquid Haskell. We use these encodings to machine check various definitions and proofs, showcasing how an inductive verifier can be used to check coinductive properties and productivity of Haskell code. en
heal.advisorName Παπασπύρου, Νικόλαος el
heal.committeeMemberName Παπασπύρου, Νικόλαος el
heal.committeeMemberName Σαγώνας, Κωνσταντίνος el
heal.committeeMemberName Παγουρτζής, Αριστείδης el
heal.academicPublisher Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών el
heal.academicPublisherID ntua
heal.numberOfPages 77 σ. el
heal.fullTextAvailability false


Αρχεία σε αυτό το τεκμήριο

Αυτό το τεκμήριο εμφανίζεται στην ακόλουθη συλλογή(ές)

Εμφάνιση απλής εγγραφής