Ready, Set, Verify! Applying hs-to-coq to real-world Haskell code

03/19/2018
by   Joachim Breitner, et al.
0

Good tools can bring mechanical verification to programs written in mainstream functional languages. We use hs-to-coq to translate significant portions of Haskell's containers library into Coq, and verify it against specifications that we derive from a variety of sources including type class laws, the library's test suite, and interfaces from Coq's standard library. Our work shows that it is feasible to verify mature, widely-used, highly optimized, and unmodified Haskell code. We also learn more about the theory of weight-balanced trees, extend hs-to-coq to handle partiality, and -- since we found no bugs -- attest to the superb quality of well-tested functional code.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/09/2017

Active Learning of Points-To Specifications

When analyzing programs, large libraries pose significant challenges to ...
research
07/20/2022

Auto-active Verification of Graph Algorithms, Written in OCaml

Functional programming offers the perfect ground for building correct-by...
research
07/01/2021

Verifying Verified Code

A recent case study from AWS by Chong et al. proposes an effective metho...
research
10/25/2019

Embracing a mechanized formalization gap

If a code base is so big and complicated that complete mechanical verifi...
research
11/25/2017

Total Haskell is Reasonable Coq

We would like to use the Coq proof assistant to mechanically verify prop...
research
02/18/2021

Verifying Probabilistic Specifications with Functional Lagrangians

We propose a general framework for verifying input-output specifications...
research
07/01/2020

Equational Reasoning for MTL Type Classes

Ability to use definitions occurring in the code directly in equational ...

Please sign up or login with your details

Forgot password? Click here to reset