English
Related papers

Related papers: A promise checked is a promise kept: Inspection Te…

200 papers

We present a small, formal language for specifying the behavior of simple console I/O programs. The design is driven by the concrete application case of testing interactive Haskell programs written by students. Specifications are…

Programming Languages · Computer Science 2025-06-27 Oliver Westphal , Janis Voigtländer

Compiler correctness is, in its simplest form, defined as the inclusion of the set of traces of the compiled program into the set of traces of the original program, which is equivalent to the preservation of all trace properties. Here…

Verification is the process of checking whether a product has been implemented according to its prescribed specifications. We study the case of a designer (the developer) that needs to verify its design by a third party (the verifier), by…

Cryptography and Security · Computer Science 2016-05-13 Yixian Cai , George Karakostas , Alan Wassyng

Requirements are informal and semi-formal descriptions of the expected behavior of a system. They are usually expressed in the form of natural language sentences and checked for errors manually, e.g., by peer reviews. Manual checks are…

Logic in Computer Science · Computer Science 2018-04-30 Simone Vuotto

This paper is a tutorial introducing the underlying technology and the use of the tool Liquid Haskell, a type-checker for the functional language Haskell that can help programmers to verify non-trivial properties of their programs with a…

Programming Languages · Computer Science 2017-01-13 Ricardo Peña

Haskell functions are defined as a series of clauses consisting of patterns that are matched against the arguments in the order of definition. In case an input is not matched by any of the clauses, an error occurs. Therefore it is desirable…

Programming Languages · Computer Science 2019-09-11 Pavel Kalvoda , Tom Sydney Kerckhove

Model checking temporal properties of software is algorithmically hard. To be practically feasible, it usually requires the creation of simpler, abstract models of the software, over which the properties are checked. However, creating…

Formal Languages and Automata Theory · Computer Science 2025-03-17 Jesper Amilon , Dilian Gurov

As applications grow in capability, they also grow in complexity. This complexity in turn gets pushed into modules and libraries. In addition, hardware configurations become increasingly elaborate, too. These two trends make understanding,…

Software Engineering · Computer Science 2018-03-21 Ronny Brendel , Bert Wesarg , Ronny Tschüter , Matthias Weber , Thomas Ilsche , Sebastian Oeste

We propose a new formal criterion for evaluating secure compilation schemes for unsafe languages, expressing end-to-end security guarantees for software components that may become compromised after encountering undefined behavior---for…

Model checkers use automated state exploration in order to prove various properties such as reachability, non-reachability, and bisimulation over state transition systems. While model checkers have proved valuable for locating errors in…

Logic in Computer Science · Computer Science 2015-08-03 Quentin Heath , Dale Miller

Verification activities are necessary to ensure that the requirements are specified in a correct way. However, until now requirements verification research has focused on traditional up-front requirements. Agile or just-in-time requirements…

Software Engineering · Computer Science 2014-06-19 Petra Heck , Andy Zaidman

Testing has become an indispensable activity of software development, yet writing good and relevant tests remains a quite challenging task. One well-known problem is that it often is impossible or unrealistic to test for every outcome, as…

Programming Languages · Computer Science 2017-08-18 Dimitri Racordon , Didier Buchs

Testability is the probability whether tests will detect a fault, given that a fault in the program exists. How efficiently the faults will be uncovered depends upon the testability of the software. Various researchers have proposed…

Software Engineering · Computer Science 2013-08-16 Sujata Khatri , R. S. Chhillar , V. B. Singh

Refinement type checkers are a powerful way to reason about functional programs. For example, one can prove properties of a slow, specification implementation, porting the proofs to an optimized implementation that behaves the same. Without…

Programming Languages · Computer Science 2022-07-20 Niki Vazou , Michael Greenberg

One of the problems of formal verification is that it is not functionally complete due the incompleteness of specifications. An implementation meeting an incomplete specification may still have a lot of bugs. In testing, this issue is…

Logic in Computer Science · Computer Science 2020-10-14 Eugene Goldberg

That the Haskell Compiler GHC is capable of proving non-trivial equalities between Haskell code, by virtue of its aggressive optimizer, in particular the term rewriting engine in the simplifier. We demonstrate this with a surprising little…

Programming Languages · Computer Science 2018-05-22 Joachim Breitner

Automatic testing is a widely adopted technique for improving software quality. Software developers add, remove and update test methods and test classes as part of the software development process as well as during the evolution phase,…

Software Engineering · Computer Science 2017-09-27 Stanislav Levin , Amiram Yehudai

Refinement Reflection turns your favorite programming language into a proof assistant by reflecting the code implementing a user-defined function into the function's (output) refinement type. As a consequence, at uses of the function, the…

Programming Languages · Computer Science 2016-10-18 Niki Vazou , Ranjit Jhala

Verifying specifications for large-scale modern engineering systems can be a time-consuming task, as most formal verification methods are limited to systems of modest size. Recently, contract-based design and verification has been proposed…

Systems and Control · Electrical Eng. & Systems 2021-03-26 Miel Sharf , Bart Besselink , Karl Henrik Johansson

Model checking is an established technique to formally verify automation systems which are required to be trusted. However, for sufficiently complex systems model checking becomes computationally infeasible. On the other hand, testing,…

Software Engineering · Computer Science 2019-07-30 Igor Buzhinsky , Valeriy Vyatkin