Predicate abstraction
View article
VerX: Safety Verification of Smart Contracts Open
We present VerX, the first automated verifier able to prove functional properties of Ethereum smart contracts. VerX addresses an important problem as all real-world contracts must satisfy custom functional specifications.VerX is based on a…
View article
Program synthesis using abstraction refinement Open
We present a new approach to example-guided program synthesis based on counterexample-guided abstraction refinement . Our method uses the abstract semantics of the underlying DSL to find a program P whose abstract behavior satisfies the ex…
View article
A Unifying View on SMT-Based Software Verification Open
After many years of successful development of new approaches for software verification, there is a need to consolidate the knowledge about the different abstract domains and algorithms. The goal of this paper is to provide a compact and ac…
View article
Incremental Linearization for Satisfiability and Verification Modulo Nonlinear Arithmetic and Transcendental Functions Open
Satisfiability Modulo Theories (SMT) is the problem of deciding the satisfiability of a first-order formula with respect to some theory or combination of theories; Verification Modulo Theories (VMT) is the problem of analyzing the reachabi…
View article
Learning higher-order logic programs through abstraction and invention Open
Many tasks in AI require the design of complex programs and representations, whether for programming robots, designing game-playing programs, or conducting textual or visual transformations. This paper explores a novel inductive logic prog…
View article
CoVeriTest: Cooperative Verifier-Based Testing Open
Testing is a widely used method to assess software quality. Coverage criteria and coverage measurements are used to ensure that the constructed test suites adequately test the given software. Since manually developing such test suites is t…
View article
Diversity of graph models and graph generators in mutation testing Open
When custom modeling tools are used for designing complex safety-critical systems (e.g., critical cyber-physical systems), the tools themselves need to be validated by systematic testing to prevent tool-specific bugs reaching the system. T…
View article
Efficient Weighted Model Integration via SMT-Based Predicate Abstraction Open
Weighted model integration (WMI) is a recent formalism generalizing weighted model counting (WMC) to run probabilistic inference over hybrid domains, characterized by both discrete and continuous variables and relationships between them. A…
View article
Program Synthesis using Abstraction Refinement Open
We present a new approach to example-guided program synthesis based on counterexample-guided abstraction refinement. Our method uses the abstract semantics of the underlying DSL to find a program $P$ whose abstract behavior satisfies the e…
View article
CN: Verifying Systems C Code with Separation-Logic Refinement Types Open
Despite significant progress in the verification of hypervisors, operating systems, and compilers, and in verification tooling, there exists a wide gap between the approaches used in verification projects and conventional development of sy…
View article
Symbolic-Numeric Reachability Analysis of Closed-Loop Control Software Open
We study the problem of falsifying reachability properties of real-time control software acting in a closed-loop with a given model of the plant dynamics. Our approach employs numerical techniques to simulate a plant model, which may be hi…
View article
Predicate Invention for Bilevel Planning Open
Efficient planning in continuous state and action spaces is fundamentally hard, even when the transition model is deterministic and known. One way to alleviate this challenge is to perform bilevel planning with abstractions, where a high-l…
View article
Predicate Abstractions Memory Modeling Method with Separation into Disjoint Regions Open
Software verification is a type of activity focused on software quality control and detection of errors in software. Static verification is verification without the execution of software source code. Special software - tools for static ver…
View article
Subgoal-Based Temporal Abstraction in Monte-Carlo Tree Search Open
We propose an approach to general subgoal-based temporal abstraction in MCTS. Our approach approximates a set of available macro-actions locally for each state only requiring a generative model and a subgoal predicate. For that, we modify …
View article
Predicate Pairing for program verification Open
It is well-known that the verification of partial correctness properties of imperative programs can be reduced to the satisfiability problem for constrained Horn clauses (CHCs). However, state-of-the-art solvers for constrained Horn clause…
View article
Stratified Abstraction of Access Control Policies Open
The shift to cloud-based APIs has made application security critically depend on understanding and reasoning about policies that regulate access to cloud resources. We present stratified predicate abstraction, a new approach that summarize…
View article
Automated Generation of Consistent Graph Models With Multiplicity Reasoning Open
Advanced tools used in model-based systems engineering (MBSE) frequently represent their models as graphs. In order to test those tools, the automated generation of well-formed (or intentionally malformed) graph models is necessitated whic…
View article
Distinguishing extended finite state machine configurations using predicate abstraction Open
International audience
View article
Parameterised Verification of Infinite State Multi-Agent Systems via Predicate Abstraction Open
We define a class of parameterised infinite state multi-agent systems (MAS) that is unbounded in both the number of agents composing the system and the domain of the variables encoding the agents. We analyse their verification problem by c…
View article
Bounded exhaustive test-input generation on GPUs Open
Bounded exhaustive testing is an effective methodology for detecting bugs in a wide range of applications. A well-known approach for bounded exhaustive testing is Korat. It generates all test inputs, up to a given small size, based on a fo…
View article
Automated Deduction in the B Set Theory using Typed Proof Search and Deduction Modulo Open
We introduce an encoding of the set theory of the B method using polymorphic types and deduction modulo, which is used for the automated verification of proof obligations in the framework of the BWare project. Deduction modulo is an extens…
View article
Improving the Universality and Learnability of Neural Programmer-Interpreters with Combinator Abstraction Open
To overcome the limitations of Neural Programmer-Interpreters (NPI) in its universality and learnability, we propose the incorporation of combinator abstraction into neural programing and a new NPI architecture to support this abstraction,…
View article
Low-overhead and fully automated statistical debugging with abstraction refinement Open
Cooperative statistical debugging is an effective approach for diagnosing production-run failures. To quickly identify failure predictors from the huge program predicate space, existing techniques rely on random or heuristics-guided predic…
View article
Cooperative verifier-based testing with CoVeriTest Open
Testing is a widely applied technique to evaluate software quality, and coverage criteria are often used to assess the adequacy of a generated test suite. However, manually constructing an adequate test suite is typically too expensive, an…
View article
Program analysis via efficient symbolic abstraction Open
This paper concerns the scalability challenges of symbolic abstraction: given a formula ϕ in a logic L and an abstract domain A , find a most precise element in the abstract domain that over-approximates the meaning of ϕ. Symbolic abstract…
View article
Correctness of Speculative Optimizations with Dynamic Deoptimization Open
High-performance dynamic language implementations make heavy use of speculative optimizations to achieve speeds close to statically compiled languages. These optimizations are typically performed by a just-in-time compiler that generates c…
View article
Program Verification via Predicate Constraint Satisfiability Modulo Theories Open
This paper presents a verification framework based on a new class of predicate Constraint Satisfaction Problems called pCSP where constraints are represented as clauses modulo first-order theories over function variables and predicate vari…
View article
Abstraction and Refinement: Towards Scalable and Exact Verification of Neural Networks Open
As a new programming paradigm, deep neural networks (DNNs) have been increasingly deployed in practice, but the lack of robustness hinders their applications in safety-critical domains. While there are techniques for verifying DNNs with fo…
View article
Incremental predicate analysis for regression verification Open
Software products are evolving during their life cycles. Ideally, every revision need be formally verified to ensure software quality. Yet repeated formal verification requires significant computing resources. Verifying each and every revi…
View article
CPA/Tiger-MGP: test-goal set partitioning for efficient multi-goal test-suite generation Open
Software model checkers can be used to generate high-quality test cases from counterexamples of a reachability analysis. However, naïvely invoking a software model checker for each test goal in isolation does not scale to large programs as…