Filters








1,075 Hits in 4.1 sec

Total Haskell is reasonable Coq

Antal Spector-Zabusky, Joachim Breitner, Christine Rizkallah, Stephanie Weirich
2018 Proceedings of the 7th ACM SIGPLAN International Conference on Certified Programs and Proofs - CPP 2018  
To that end, we present a tool, named hs-to-coq, that translates total Haskell programs into Coq programs via a shallow embedding.  ...  These examples show that this approach is viable: both that hs-to-coq applies to existing Haskell code, and that the output it produces is amenable to verification.  ...  At the same time, reasoning about total functions is simpler than reasoning about partial ones, so we encourage Haskell proof development by concentrating on this domain.  ... 
doi:10.1145/3167092 dblp:conf/cpp/Spector-Zabusky18 fatcat:yazpv47ixvaerk63v7zepb2q7i

Ready, set, verify! applying hs-to-coq to real-world Haskell code (experience report)

Joachim Breitner, Antal Spector-Zabusky, Yao Li, Christine Rizkallah, John Wiegley, Stephanie Weirich
2018 Proceedings of the ACM on Programming Languages  
It is also an integral part of the Haskell ecosystem. This work makes the following contributions:  ...  Our work shows that it is feasible to verify mature, widely-used, highly optimized, and unmodified Haskell code.  ...  We know that łFast and Loose Reasoning is Morally Correctž [Danielsson et al. 2006 ], which says that theorems about the total fragment of a non-total language carry over to the full language.  ... 
doi:10.1145/3236784 dblp:journals/pacmpl/BreitnerSLRWW18 fatcat:y3m367mjffflxcrj2bru2rk554

xmonad in Coq(experience report)

Wouter Swierstra
2012 Proceedings of the 2012 symposium on Haskell symposium - Haskell '12  
Rather than focus on verification, this report outlines the technical challenges involved with incorporating Coq code in a Haskell project.  ...  This report documents the insights gained from implementing the core functionality of xmonad, a popular window manager written in Haskell, in the Coq proof assistant.  ...  This methodology is less popular amongst the Haskell community. This experience report attempts to identify some of the reasons why this style of verification is not more widespread.  ... 
doi:10.1145/2364506.2364523 dblp:conf/haskell/Swierstra12 fatcat:tmipna3hsrbydmv6y2inuhfrbu

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

Joachim Breitner and Antal Spector-Zabusky and Yao Li and Christine Rizkallah and John Wiegley and Stephanie Weirich
2018 arXiv   pre-print
Our work shows that it is feasible to verify mature, widely-used, highly optimized, and unmodified Haskell code.  ...  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  ...  ACKNOWLEDGMENTS This material is based upon work supported by the National Science Foundation under Grant No. 1319880 and Grant No. 1521539.  ... 
arXiv:1803.06960v2 fatcat:bgigt7yjivcqrffegj3tllnl3m

Functional Pearl: Theorem Proving for All (Equational Reasoning in Liquid Haskell) [article]

Niki Vazou and Joachim Breitner and Will Kunkel and David Van Horn and Graham Hutton
2018 arXiv   pre-print
Equational reasoning is one of the key features of pure functional languages such as Haskell.  ...  This article shows how equational reasoning can be performed directly and seamlessly within Haskell itself, and be checked using Liquid Haskell.  ...  Moreover, to reason about Haskell code in Coq, we must first translate our Haskell code into Coq's programming language, Gallina.  ... 
arXiv:1806.03541v1 fatcat:35pswnmiafgavmck2n2kaitm5m

Theorem proving for all: equational reasoning in liquid Haskell (functional pearl)

Niki Vazou, Joachim Breitner, Rose Kunkel, David Van Horn, Graham Hutton
2018 SIGPLAN notices  
Equational reasoning is one of the key features of pure functional languages such as Haskell.  ...  This article shows how equational reasoning can be performed directly and seamlessly within Haskell itself, and be checked using Liquid Haskell.  ...  The encoding from pen-and-paper proofs into machine checked proofs is direct, thus we claim that Liquid Haskell is a theorem prover that can be naturally used by any Haskell programmer or learner.  ... 
doi:10.1145/3299711.3242756 fatcat:4hsqb2r5svg67ky4wcbob2o6ea

Embracing a mechanized formalization gap [article]

Antal Spector-Zabusky, Joachim Breitner, Yao Li, Stephanie Weirich
2019 arXiv   pre-print
Concretely, we translate core parts of the Haskell compiler GHC into Coq, using hs-to-coq, and verify invariants related to the use of term variables.  ...  If a code base is so big and complicated that complete mechanical verification is intractable, can we still apply and benefit from verification methods?  ...  This material is based upon work supported by the National Science Foundation under Grant No. 1521539.  ... 
arXiv:1910.11724v1 fatcat:iancabvl3nbrxi2coyol7c4iie

One Monad to Prove Them All

Sandra Dylus, Jan Christiansen, Finn Teegen
2019 The Art, Science, and Engineering of Programming  
As Coq programs have to be total and Haskell programs are often not, Mona has to model partiality explicitly in Coq.  ...  To prove properties about a Haskell function in Coq, Mona has to translate the function into Coq code.  ...  Acknowledgements We thank the Coq community for being supportive and answering questions about Coq.  ... 
doi:10.22152/programming-journal.org/2019/3/8 fatcat:sowns4wjpbahjksyql7s4mjs34

QArith: Coq Formalisation of Lazy Rational Arithmetic [chapter]

Milad Niqui, Yves Bertot
2004 Lecture Notes in Computer Science  
In this paper we present the Coq formalisation of the QArith library which is an implementation of rational numbers as binary sequences for both lazy and strict computation.  ...  Here the function abs is the forgetful projection from Z onto nat (Coq natural numbers). Thus for p and q two integers, makeQ p q produces the signed binary sequence corresponding to p q .  ...  Note that the Ring tactic, which is the Coq tactic for equational reasoning on rings, does not have this problem with eager reduction; hence it is very useful in reasoning about concrete rings such as  ... 
doi:10.1007/978-3-540-24849-1_20 fatcat:i4uwc4sggnbq7duac57togtyqq

Verified perceptron convergence theorem

Charlie Murphy, Patrick Gray, Gordon Stewart
2017 Proceedings of the 1st ACM SIGPLAN International Workshop on Machine Learning and Programming Languages - MAPL 2017  
in Coq.  ...  In this paper, we apply tools from symbolic logic such as dependent type theory as implemented in Coq to build, and prove convergence of, one-layer perceptrons (specifically, we show that our Coq implementation  ...  reasonably efficient.  ... 
doi:10.1145/3088525.3088673 dblp:conf/pldi/MurphyGS17 fatcat:qgadtrdjmvfjnd3j5uvjrmpfum

Polytypic programming in COQ

Wendy Verbruggen, Edsko de Vries, Arthur Hughes
2008 Proceedings of the ACM SIGPLAN workshop on Generic programming - WGP '08  
The aim of our work is to provide an infrastructure for formal proofs over Generic Haskell-style polytypic programs.  ...  For this goal to succeed, we must have a definition of polytypic programming which is both fully formal and as close as possible to the definition in Generic Haskell.  ...  Acknowledgments We would like to thank Ralf Hinze, Johan Jeuring and Yves Bertot for their early feedback on the proposal for this research project and the people on the Coq mailing list for their generous  ... 
doi:10.1145/1411318.1411326 dblp:conf/icfp/VerbruggenVH08 fatcat:jvsglnjpena5phel2b2xfxsr6m

Effectful Programming in Declarative Languages with an Emphasis on Non-Determinism: Applications and Formal Reasoning [article]

Sandra Dylus
2020 arXiv   pre-print
That is, the effects of interest are totality and partiality. We then observe that the general scheme to model these two effects can be generalised to capture a wide range of effects.  ...  We compare the implementation in Curry with an implementation in Haskell that uses a monadic interface to model non-determinism.  ...  The advantage of focussing on the total subset of Haskell is that they can translate functions one-to-one to Coq.  ... 
arXiv:2006.01531v1 fatcat:s7nl4qdd5veo7fv64cpg3buvwm

Mechanical Verification of Interactive Programs Specified by Use Cases

Guillaume Claret, Yann Regis-Gianas
2015 2015 IEEE/ACM 3rd FME Workshop on Formal Methods in Software Engineering  
Using the purely functional language Coq, we present a new technique to represent interactive programs and formally verify use cases using the Coq proof engine as a symbolic debugger.  ...  is purely functional and only accepts total and terminating functions.  ...  The state of the blog is saved on the file system and accessed through system calls. In total, the blog system itself is made of 786 lines of Coq code.  ... 
doi:10.1109/formalise.2015.17 dblp:conf/icse/ClaretR15 fatcat:2hots6ulgjcvzi3luddoxhesry

Combining Proofs and Programs [chapter]

Stephanie Weirich
2011 Lecture Notes in Computer Science  
The language itself is composed of two fragments that share a common syntax and overlapping semantics: a simple logical language that guarantees total correctness and an expressive call-by-value programming  ...  In contrast, functional programming languages, like Haskell and Ωmega, have adapted the features dependent type theories, but retain a strict division between types and programs.  ...  This talk is based on joint work with Aaron Stump, Tim Sheard, Chris Casinghino, Vilhelm Sjöberg, Brent Yorgey, Harley D. Eades III, Garrin Kimmel, and Nathan Collins.  ... 
doi:10.1007/978-3-642-21691-6_4 fatcat:a27bbesitvbala6krv3e6luuj4

A Wide-Coverage Symbolic Natural Language Inference System

Stergios Chatzikyriakidis, Jean-Philippe Bernardy
2019 Nordic Conference of Computational Linguistics  
We present a system for Natural Language Inference which uses a dynamic semantics converter from abstract syntax trees to Coq types.  ...  This is the first system that does a complete run on the anaphora and ellipsis sections of the FraCaS. It has a better overall accuracy than any previous system.  ...  Coq is a very powerful reasoning engine that makes it fit for the task of NLI, when the latter is formalized as a theorem proving task.  ... 
dblp:conf/nodalida/Chatzikyriakidis19 fatcat:cb7pg56gljcehgmqov4si4cvk4
« Previous Showing results 1 — 15 out of 1,075 results