English
Related papers

Related papers: Ready, Set, Verify! Applying hs-to-coq to real-wor…

200 papers

Current approaches for formal verification of algorithms face important limitations. For specification, they cannot express algorithms naturally and concisely, especially for algorithms with states and flexible control flow. For…

Programming Languages · Computer Science 2025-05-01 Chengxi Yang , Shushu Wu , Qinxiang Cao

Development of energy and performance-efficient embedded software is increasingly relying on application of complex transformations on the critical parts of the source code. Designers applying such nontrivial source code transformations are…

Logic in Computer Science · Computer Science 2011-11-09 K. C. Shashidhar , Maurice Bruynooghe , Francky Catthoor , Gerda Janssens

Cyber-physical systems (CPS) such as autonomous cars, aircraft, and robots are often also safety-critical; thus it is imperative that they operate as intended with a high degree of certainty. Formal verification has been employed to verify…

Programming Languages · Computer Science 2026-05-07 Serra Z. Dane , Jiawei Chen , Marc Pouzet , Jean-Baptiste Jeannin

Obtaining good performance when programming heterogeneous computing platforms poses significant challenges for the programmer. We present a program transformation environment, implemented in Haskell, where architecture-agnostic scientific C…

Programming Languages · Computer Science 2016-03-11 Salvador Tamarit , Julio Mariño , Guillermo Vigueras , Manuel Carro

Compilers are a prime target for formal verification, since compiler bugs invalidate higher-level correctness guarantees, but compiler changes may become more labor-intensive to implement, if they must come with proof patches. One appealing…

Programming Languages · Computer Science 2025-03-12 Jason Gross , Andres Erbsen , Jade Philipoom , Rajashree Agrawal , Adam Chlipala

We describe a method for building composable and extensible verification procedures within the Coq proof assistant. Unlike traditional methods that rely on run-time generation and checking of proofs, we use verified-correct procedures with…

Programming Languages · Computer Science 2013-05-29 Gregory Malecha , Adam Chlipala , Thomas Braibant , Patrick Hulin , Edward Z. Yang

We present a new way of embedding functional languages into the Coq proof assistant by using meta-programming. This allows us to develop the meta-theory of the language using the deep embedding and provides a convenient way for reasoning…

Programming Languages · Computer Science 2020-02-05 Danil Annenkov , Jakob Botsch Nielsen , Bas Spitters

We present the design, implementation, and foundation of a verifier for higher-order functional programs with generics and recursive data types. Our system supports proving safety and termination using preconditions, postconditions and…

Logic in Computer Science · Computer Science 2020-03-25 Jad Hamza , Nicolas Voirol , Viktor Kunčak

In purely functional programming languages imperative features, more generally computational effects are prohibited. However, non-functional lan- guages do involve effects. The theory of decorated logic provides a rigorous for- malism (with…

Logic in Computer Science · Computer Science 2014-11-27 Burak Ekici

We propose a general framework to allow: (a) specifying the operational semantics of a programming language; and (b) stating and proving properties about program correctness. Our framework is based on a many-sorted system of hybrid modal…

Logic in Computer Science · Computer Science 2025-12-01 Ioana Leustean , Natalia Moanga , Traian Florin Serbanuta

We have developed an alternative approach to teaching computer science students how to prove. First, students are taught how to prove theorems with the Coq proof assistant. In a second, more difficult, step students will transfer their…

Logic in Computer Science · Computer Science 2018-03-06 Sebastian Böhne , Christoph Kreitz

We describe jsCcoq, a new platform and user environment for the Coq interactive proof assistant. The jsCoq system targets the HTML5-ECMAScript 2015 specification, and it is typically run inside a standards-compliant browser, without the…

Programming Languages · Computer Science 2017-01-26 Emilio Jesús Gallego Arias , Benoît Pin , Pierre Jouvelot

Proof assistants are getting more widespread use in research and industry to provide certified and independently checkable guarantees about theories, designs, systems and implementations. However, proof assistant implementations themselves…

Programming Languages · Computer Science 2021-07-19 Matthieu Sozeau

Formal verification of complex algorithms is challenging. Verifying their implementations goes beyond the state of the art of current automatic verification tools and usually involves intricate mathematical theorems. Certifying algorithms…

Logic in Computer Science · Computer Science 2013-02-01 Eyad Alkassar , Sascha Böhme , Kurt Mehlhorn , Christine Rizkallah

The use of function contracts to specify the behavior of functions often remains limited to the scope of a single function call. Relational properties link several function calls together within a single specification. They can express more…

Software Engineering · Computer Science 2022-05-18 Lionel Blatter , Nikolai Kosmatov , Virgile Prevosto , Pascale Le Gall

We show that verification of object-oriented programs by means of the assertional method can be achieved in a simple way by exploiting a syntax-directed transformation from object-oriented programs to recursive programs. This transformation…

Logic in Computer Science · Computer Science 2011-11-09 Krzysztof R. Apt , Frank S. de Boer , Ernst-Ruediger Olderog , Stijn de Gouw

VeriFast is a powerful tool for verification of various correctness properties of C programs using symbolic execution. However, VeriFast itself has not been verified. We present a proof-of-concept extension which generates a correctness…

Logic in Computer Science · Computer Science 2023-08-31 Stefan Wils , Bart Jacobs

In various provers and deductive verification tools, logical transformations are used extensively in order to reduce a proof task into a number of simpler tasks. Logical transformations are often part of the trusted base of such tools. In…

Logic in Computer Science · Computer Science 2021-07-07 Quentin Garchery

Program verifiers for imperative languages such as C may be annotation-based, in which assertions and invariants are put into source files and then checked, or tactic-based, where proof scripts separate from programs are interactively…

Programming Languages · Computer Science 2023-10-27 Litao Zhou , Jianxing Qin , Qinshi Wang , Andrew W. Appel , Qinxiang Cao

We present a Coq library about Kleene algebra with tests, including a proof of their completeness over the appropriate notion of languages, a decision procedure for their equational theory, and tools for exploiting hypotheses of a…

Logic in Computer Science · Computer Science 2013-02-08 Damien Pous