Javascript must be enabled to continue!
Liquid Haskell
View through CrossRef
Οι ελλείψεις στον κώδικα και τα σφάλματα αποτελούν αναπόφευκτο μέρος των λογισμικών συστημάτων. Σε συστήματα κρίσιμα για την ασφάλεια, όπως αυτά των αεροσκαφών ή του ιατρικού εξοπλισμού, ακόμα και ένα μόνο σφάλμα μπορεί να οδηγήσει σε καταστροφικές συνέπειες, όπως τραυματισμούς ή θάνατο. Η τυπική επαλήθευση μπορεί να χρησιμοποιηθεί για τον στατικό εντοπισμό ελλείψεων στον κώδικα, αποδεικνύοντας ή διαψεύδοντας ιδιότητες ορθότητας ενός συστήματος. Ωστόσο, στην παρούσα της μορφή, η τυπική επαλήθευση είναι μια περίπλοκη διαδικασία που σπάνια χρησιμοποιείται από προγραμματιστές του ευρύτερου χώρου, κυρίως επειδή αφορά γλώσσες που δεν είναι γενικού σκοπού (π.χ. Coq, Agda, Dafny). Παρουσιάζουμε το LIQUID HASKELL, έναν πρακτικό επαληθευτή προγραμμάτων που στοχεύει στην καθιέρωση της τυπικής επαλήθευσης ως αναπόσπαστο μέρος της διαδικασίας ανάπτυξης λογισμικού. Το LIQUID HASKELL ενσωματώνει φυσικά τον καθορισμό ιδιοτήτων ορθότητας ως λογικές εξειδικεύσεις στους τύπους της Haskell. Επιπλέον, χρησιμοποιεί το πλαίσιο αφηρημένης ερμηνείας των “liquid types” ώστε να ελέγχει αυτόματα την ορθότητα των προδιαγραφών μέσω επιλυτών SMT (Satisfiability Modulo Theories), χωρίς να απαιτούνται ρητές αποδείξεις ή περίπλοκες επισημάνσεις. Τέλος, η γλώσσα προδιαγραφής είναι αυθαίρετα εκφραστική, επιτρέποντας στον χρήστη να γράφει γενικές ιδιότητες ορθότητας για τον κώδικά του, μετατρέποντας έτσι τη Haskell σε αποδεικτικό εργαλείο θεωρημάτων. Η μετατροπή μιας ώριμης γλώσσας — με βελτιστοποιημένες βιβλιοθήκες και ιδιαίτερα αποδοτική παραλληλοποίηση — σε αποδεικτικό εργαλείο, μας επιτρέπει να επαληθεύσουμε ευρύ φάσμα ιδιοτήτων σε εφαρμογές πραγματικού κόσμου. Χρησιμοποιήσαμε το LIQUID HASKELL για να επαληθεύσουμε ρηχές ακεραιότητες σε υπάρχοντα Haskell προγράμματα, π.χ. την ασφάλεια μνήμης της βελτιστοποιημένης βιβλιοθήκης επεξεργασίας συμβολοσειρών ByteString. Επιπλέον, ελέγξαμε βαθιές και σύνθετες ιδιότητες παραλληλισμένου Haskell κώδικα, π.χ. την ισοδυναμία ενός απλού αλγορίθμου εύρεσης συμβολοσειράς και της παραλληλοποιημένης εκδοχής του. Έχοντας επαληθεύσει περίπου 20.000 γραμμές Haskell κώδικα, παρουσιάζουμε πώς το LIQUID HASKELL λειτουργεί ως ένας πρωτότυπος επαληθευτής σε ένα μέλλον όπου οι τυπικές τεχνικές θα διευκολύνουν — αντί να εμποδίζουν — την ανάπτυξη λογισμικού.
Title: Liquid Haskell
Description:
Οι ελλείψεις στον κώδικα και τα σφάλματα αποτελούν αναπόφευκτο μέρος των λογισμικών συστημάτων.
Σε συστήματα κρίσιμα για την ασφάλεια, όπως αυτά των αεροσκαφών ή του ιατρικού εξοπλισμού, ακόμα και ένα μόνο σφάλμα μπορεί να οδηγήσει σε καταστροφικές συνέπειες, όπως τραυματισμούς ή θάνατο.
Η τυπική επαλήθευση μπορεί να χρησιμοποιηθεί για τον στατικό εντοπισμό ελλείψεων στον κώδικα, αποδεικνύοντας ή διαψεύδοντας ιδιότητες ορθότητας ενός συστήματος.
Ωστόσο, στην παρούσα της μορφή, η τυπική επαλήθευση είναι μια περίπλοκη διαδικασία που σπάνια χρησιμοποιείται από προγραμματιστές του ευρύτερου χώρου, κυρίως επειδή αφορά γλώσσες που δεν είναι γενικού σκοπού (π.
χ.
Coq, Agda, Dafny).
Παρουσιάζουμε το LIQUID HASKELL, έναν πρακτικό επαληθευτή προγραμμάτων που στοχεύει στην καθιέρωση της τυπικής επαλήθευσης ως αναπόσπαστο μέρος της διαδικασίας ανάπτυξης λογισμικού.
Το LIQUID HASKELL ενσωματώνει φυσικά τον καθορισμό ιδιοτήτων ορθότητας ως λογικές εξειδικεύσεις στους τύπους της Haskell.
Επιπλέον, χρησιμοποιεί το πλαίσιο αφηρημένης ερμηνείας των “liquid types” ώστε να ελέγχει αυτόματα την ορθότητα των προδιαγραφών μέσω επιλυτών SMT (Satisfiability Modulo Theories), χωρίς να απαιτούνται ρητές αποδείξεις ή περίπλοκες επισημάνσεις.
Τέλος, η γλώσσα προδιαγραφής είναι αυθαίρετα εκφραστική, επιτρέποντας στον χρήστη να γράφει γενικές ιδιότητες ορθότητας για τον κώδικά του, μετατρέποντας έτσι τη Haskell σε αποδεικτικό εργαλείο θεωρημάτων.
Η μετατροπή μιας ώριμης γλώσσας — με βελτιστοποιημένες βιβλιοθήκες και ιδιαίτερα αποδοτική παραλληλοποίηση — σε αποδεικτικό εργαλείο, μας επιτρέπει να επαληθεύσουμε ευρύ φάσμα ιδιοτήτων σε εφαρμογές πραγματικού κόσμου.
Χρησιμοποιήσαμε το LIQUID HASKELL για να επαληθεύσουμε ρηχές ακεραιότητες σε υπάρχοντα Haskell προγράμματα, π.
χ.
την ασφάλεια μνήμης της βελτιστοποιημένης βιβλιοθήκης επεξεργασίας συμβολοσειρών ByteString.
Επιπλέον, ελέγξαμε βαθιές και σύνθετες ιδιότητες παραλληλισμένου Haskell κώδικα, π.
χ.
την ισοδυναμία ενός απλού αλγορίθμου εύρεσης συμβολοσειράς και της παραλληλοποιημένης εκδοχής του.
Έχοντας επαληθεύσει περίπου 20.
000 γραμμές Haskell κώδικα, παρουσιάζουμε πώς το LIQUID HASKELL λειτουργεί ως ένας πρωτότυπος επαληθευτής σε ένα μέλλον όπου οι τυπικές τεχνικές θα διευκολύνουν — αντί να εμποδίζουν — την ανάπτυξη λογισμικού.
Related Results
EWOD Based Liquid-Liquid Extraction and Separation
EWOD Based Liquid-Liquid Extraction and Separation
Liquid-liquid extraction techniques are one of the major tools in chemical engineering, analytical chemistry, and biology, especially in a system where two immiscible liquids have ...
Liquid Distribution and its Effect on the Organic Removal in a Trickle Bed Bioreactor
Liquid Distribution and its Effect on the Organic Removal in a Trickle Bed Bioreactor
Propylene glycol methyl ether was removed from wastewater in a trickling bed bioreactor under different liquid distribution conditions. A 0.3 m diameter column filled with two heig...
Liquid Distribution and its Effect on the Organic Removal in a Trickle Bed Bioreactor
Liquid Distribution and its Effect on the Organic Removal in a Trickle Bed Bioreactor
Propylene glycol methyl ether was removed from wastewater in a trickling bed bioreactor under different liquid distribution conditions. A 0.3 m diameter column filled with two heig...
Capillarity processes through the solar system
Capillarity processes through the solar system
In everyday life, the manifestations of capillarity are countless, going from liquids ascension in fibers to the dynamics of bubbles and droplets. On a scientific point of view, hy...
Liquid–Liquid Interfacial Nanoarchitectonics
Liquid–Liquid Interfacial Nanoarchitectonics
AbstractScience in the small world has become a crucial key that has the potential to revolutionize materials technology. This trend is embodied in the postnanotechnology concept o...
Change in Liquid Splitter Operation—Averted Environmental Flaring
Change in Liquid Splitter Operation—Averted Environmental Flaring
Abstract
Liquid Splitter (a tray type Stripper Column) is one of the key process units in the LNG/LPG plant which handles liquid hydrocarbons coming from Feed Gas Co...
An experimental study of drop-on-demand drop formation
An experimental study of drop-on-demand drop formation
The dynamics of drop-on-demand (DOD) drop formation have been studied experimentally using an imaging system with an interframe time of 1μs and a spatial resolution of 0.81μm∕pixel...
Study on the Liquid‐Holding Rate Law of Gas–Water–Foam Three‐Phase Flow in a Wavy Pipe
Study on the Liquid‐Holding Rate Law of Gas–Water–Foam Three‐Phase Flow in a Wavy Pipe
ABSTRACTAs a common method for liquid drainage in wave‐shaped pipelines, foam drainage has been used in gas‐gathering pipelines in various oil and gas fields. One of the common pro...

