English
Related papers

Related papers: Simple, Light, Yet Formally Verified, Global Commo…

200 papers

We address the problem of verifying automatically procedural programs manipulating parametric-size arrays of integers, encoded as a constrained Horn clauses solving problem. We propose a new algorithmic method for synthesizing loop…

Programming Languages · Computer Science 2025-05-23 Ahmed Bouajjani , Wael-Amine Boutglay , Peter Habermehl

In modern computing systems, compilation employs numerous optimization techniques to enhance code performance. Source-to-source code transformations, which include control flow and datapath transformations, have been widely used in…

Hardware Architecture · Computer Science 2025-06-09 Jiaqi Yin , Zhan Song , Nicolas Bohm Agostini , Antonino Tumeo , Cunxi Yu

Verifiers that can prove programs correct against their full functional specification require, for programs with loops, additional annotations in the form of loop invariants---propeties that hold for every iteration of a loop. We show that…

Software Engineering · Computer Science 2016-02-09 Juan P. Galeotti , Carlo A. Furia , Eva May , Gordon Fraser , Andreas Zeller

One of the obstacles in automatic program proving is to obtain suitable loop invariants. The invariant of a loop is a weakened form of its postcondition (the loop's goal, also known as its contract); the present work takes advantage of this…

Software Engineering · Computer Science 2013-08-14 Carlo A. Furia , Bertrand Meyer

A first step towards more reliable software is to execute each statement and each control-flow path in a method once. In this paper, we present a formal method to automatically compute test cases for this purpose based on the idea of a…

Programming Languages · Computer Science 2012-05-31 Jürgen Christ , Jochen Hoenicke , Martin Schäf

Given an algorithm that outputs the correct answer with bounded error, say $1/3$, it is sometimes desirable to reduce this error to some arbitrarily small $\varepsilon$ -- e.g., if one wants to call the algorithm many times as a subroutine.…

Quantum Physics · Physics 2026-03-25 Aleksandrs Belovs , Stacey Jeffery

The LLVM compiler framework supports a selection of loop transformations such as vectorization, distribution and unrolling. Each transformation is carried-out by specialized passes that have been developed independently. In this paper we…

Programming Languages · Computer Science 2018-11-05 Michael Kruse , Hal Finkel

In this paper, we present a work in progress about a deep learning based approach for automatic code optimization in polyhedral compilers. The proposed technique explores combinations of affine and non-affine loop transformations to find…

This work explores an unexpected application of Implicit Computational Complexity (ICC) to parallelize loops in imperative programs. Thanks to a lightweight dependency analysis, our algorithm allows splitting a loop into multiple loops that…

Programming Languages · Computer Science 2022-06-20 Clément Aubert , Thomas Rubiano , Neea Rusch , Thomas Seiller

One of the most promising paths towards large scale fault tolerant quantum computation is the use of quantum error correcting stabilizer codes. Just like every other quantum circuit, these codes must be compiled to hardware in a way to…

Quantum Physics · Physics 2025-08-07 Sahil Khan , Suhas Vittal , Kenneth Brown , Jonathan Baker

This paper presents the main features of a system that aims to transform regular expressions into shorter equivalent expressions. The system is also capable of computing other operations useful for simplification, such as checking the…

Symbolic Computation · Computer Science 2023-07-14 Baudouin Le Charlier

Automatic verification of array manipulating programs is a challenging problem because it often amounts to the inference of in ductive quantified loop invariants which, in some cases, may not even be firstorder expressible. In this paper,…

Programming Languages · Computer Science 2021-06-03 Oren Ish Shalom , Shachar Itzhaky , Noam Rinetzky , Sharon Shoham

We describe a system to prove properties of programs. The key feature of this approach is a method to automatically synthesize inductive invariants of the loops contained in the program. The method is generic, i.e., it applies to a large…

Logic in Computer Science · Computer Science 2019-06-27 Mnacho Echenim , Nicolas Peltier , Yanis Sellami

Code that is highly optimized poses a problem for program-level verification: programmers can employ various clever tricks that are non-trivial to reason about. For cryptography on low-power devices, it is nonetheless crucial that…

Cryptography and Security · Computer Science 2021-03-30 Marc Schoolderman , Jonathan Moerman , Sjaak Smetsers , Marko van Eekelen

This paper presents incremental verification-validation, a novel approach for checking rich data structure invariants expressed as separation logic assertions. Incremental verification-validation combines static verification of separation…

Programming Languages · Computer Science 2015-11-17 Yi-Fan Tsai , Devin Coughlin , Bor-Yuh Evan Chang , Xavier Rival

Symbolic Execution is a formal method that can be used to verify the behavior of computer programs and detect software vulnerabilities. Compared to other testing methods such as fuzzing, Symbolic Execution has the advantage of providing…

Cryptography and Security · Computer Science 2025-09-29 Christopher Scherb , Luc Bryan Heitz , Hermann Grieder , Olivier Mattmann

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 present a self-certifying compiler for the COGENT systems language. COGENT is a restricted, polymorphic, higher-order, and purely functional language with linear types and without the need for a trusted runtime or garbage collector. It…

Gradually-typed programming languages permit the incremental addition of static types to untyped programs. To remain sound, languages insert run-time checks at the boundaries between typed and untyped code. Unfortunately, performance…

Programming Languages · Computer Science 2020-10-13 Cameron Moy , Phúc C. Nguyen , Sam Tobin-Hochstadt , David Van Horn

Although qubit coherence times and gate fidelities are continuously improving, logical encoding is essential to achieve fault tolerance in quantum computing. In most encoding schemes, correcting or tracking errors throughout the computation…