English
Related papers

Related papers: A Practical Approach to Interval Refinement for ma…

200 papers

VeriFast is a prototype tool based on separation logic for modular verification of C and Java programs. We are in the process of adding support for C++. In this report, we describe the features of C++ for which we added support so far, as…

Logic in Computer Science · Computer Science 2022-12-29 Niels Mommen , Bart Jacobs

Automated software verification of concurrent programs is challenging because of exponentially large state spaces with respect to the number of threads and number of events per thread. Verification techniques such as model checking need to…

Programming Languages · Computer Science 2020-04-15 Patrick Metzler , Habib Saissi , Péter Bokor , Neeraj Suri

We propose an approach for modular verification of programs written in an object-oriented language where, like in C++, the same virtual method call is bound to different methods at different points during the construction or destruction of…

Programming Languages · Computer Science 2023-07-18 Niels Mommen , Bart Jacobs

In earlier work, we developed an approach for automatic complexity analysis of integer programs, based on an alternating modular inference of upper runtime and size bounds for program parts. In this paper, we show how recent techniques to…

Logic in Computer Science · Computer Science 2022-06-03 Jürgen Giesl , Nils Lommen , Marcel Hark , Fabian Meyer

The work is devoted to the construction of a new type of intervals -- functional intervals. These intervals are built on the idea of expanding boundaries from numbers to functions. Functional intervals have shown themselves to be promising…

Numerical Analysis · Mathematics 2022-10-27 Dmitry A. Skorik

We present an efficient approach to prove termination of monotone programs with integer variables, an expressive class of loops that is often encountered in computer programs. Our approach is based on a lightweight static analysis method…

Logic in Computer Science · Computer Science 2017-02-07 Omar Al-Bataineh , Xie Xiaofei , Mark Reynolds

The aim of this work is to certify lower bounds for real-valued multivariate functions, defined by semialgebraic or transcendental expressions. The certificate must be, eventually, formally provable in a proof system such as Coq. The…

Symbolic Computation · Computer Science 2014-04-18 Xavier Allamigeon , Stéphane Gaubert , Victor Magron , Benjamin Werner

Iteratively improving and repairing source code with large language models (LLMs), known as refinement, has emerged as a popular way of generating programs that would be too complex to construct in one shot. Given a bank of test cases,…

Software Engineering · Computer Science 2024-10-31 Hao Tang , Keya Hu , Jin Peng Zhou , Sicheng Zhong , Wei-Long Zheng , Xujie Si , Kevin Ellis

Array-intensive programs are often amenable to parallelization across many cores on a single machine as well as scaling across multiple machines and hence are well explored, especially in the domain of high-performance computing. These…

Programming Languages · Computer Science 2019-05-23 Kunal Banerjee , Chandan Karfa

In previous work, we presented a symbolic execution method which starts with a concrete model of the program but progressively abstracts away details only when these are known to be irrelevant using interpolation. In this paper, we extend…

Programming Languages · Computer Science 2011-03-11 Joxan Jaffar , Jorge A. Navas , Andrew E. Santosa

The automated repair of C++ compilation errors presents a significant challenge, the resolution of which is critical for developer productivity. Progress in this domain is constrained by two primary factors: the scarcity of large-scale,…

Artificial Intelligence · Computer Science 2025-09-22 Weixuan Sun , Jucai Zhai , Dengfeng Liu , Xin Zhang , Xiaojun Wu , Qiaobo Hao , AIMgroup , Yang Fang , Jiuyang Tang

We present a technique to infer lower bounds on the worst-case runtime complexity of integer programs, where in contrast to earlier work, our approach is not restricted to tail-recursion. Our technique constructs symbolic representations of…

Logic in Computer Science · Computer Science 2020-09-29 Florian Frohn , Matthias Naaf , Marc Brockschmidt , Jürgen Giesl

Currently, many verification algorithms are available to improve the reliability of software systems. Selecting the appropriate verification algorithm typically demands domain expertise and non-trivial manpower. An automated algorithm…

Software Engineering · Computer Science 2025-05-26 Jie Su , Liansai Deng , Cheng Wen , Rong Wang , Zhi Ma , Nan Zhang , Cong Tian , Zhenhua Duan , Shengchao Qin

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

When trying to solve a computational problem, we are often faced with a choice between algorithms that are guaranteed to return the right answer but differ in their runtime distributions (e.g., SAT solvers, sorting algorithms). This paper…

Artificial Intelligence · Computer Science 2023-06-06 Devon R. Graham , Kevin Leyton-Brown , Tim Roughgarden

Background: The C and C++ languages hold significant importance in Software Engineering research because of their widespread use in practice. Numerous studies have utilized Machine Learning (ML) and Deep Learning (DL) techniques to detect…

Software Engineering · Computer Science 2024-08-06 Anh The Nguyen , Triet Huynh Minh Le , M. Ali Babar

We propose a path-based approach to program repair for imperative programs. Our repair framework takes as input a faulty program, a logic specification that is refuted, and a hint where the fault may be located. An iterative abstraction…

Programming Languages · Computer Science 2015-03-18 Heinz Riener , Rüdiger Ehlers , Görschwin Fey

The role of regression testing in software testing is crucial as it ensures that any new modifications do not disrupt the existing functionality and behaviour of the software system. The desired outcome is for regression tests to yield…

Software Engineering · Computer Science 2025-06-09 Xin Sun , Daniel Ståhl , Kristian Sandahl

There are many techniques and tools for termination of C programs, but up to now they were not very powerful for termination proofs of programs whose termination depends on recursive data structures like lists. We present the first approach…

Logic in Computer Science · Computer Science 2023-07-21 Jera Hensel , Jürgen Giesl

We present a new approach to proving non-termination of non-deterministic integer programs. Our technique is rather simple but efficient. It relies on a purely syntactic reversal of the program's transition system followed by a…

Programming Languages · Computer Science 2021-04-06 Krishnendu Chatterjee , Ehsan Kafshdar Goharshady , Petr Novotný , Đorđe Žikelić