A survey of machine learning for big code and naturalness
Research at the intersection of machine learning, programming languages, and software
engineering has recently taken important steps in proposing learnable probabilistic models …
engineering has recently taken important steps in proposing learnable probabilistic models …
Can large language models reason about program invariants?
Identifying invariants is an important program analysis task with applications towards
program understanding, bug finding, vulnerability analysis, and formal verification. Existing …
program understanding, bug finding, vulnerability analysis, and formal verification. Existing …
Learning loop invariants for program verification
A fundamental problem in program verification concerns inferring loop invariants. The
problem is undecidable and even practical instances are challenging. Inspired by how …
problem is undecidable and even practical instances are challenging. Inspired by how …
Synthesizing barrier certificates using neural networks
This paper presents an approach of safety verification based on neural networks for
continuous dynamical systems which are modeled as a system of ordinary differential …
continuous dynamical systems which are modeled as a system of ordinary differential …
Finding inductive loop invariants using large language models
Loop invariants are fundamental to reasoning about programs with loops. They establish
properties about a given loop's behavior. When they additionally are inductive, they become …
properties about a given loop's behavior. When they additionally are inductive, they become …
Horn-ICE learning for synthesizing invariants and contracts
We design learning algorithms for synthesizing invariants using Horn implication
counterexamples (Horn-ICE), extending the ICE-learning model. In particular, we describe a …
counterexamples (Horn-ICE), extending the ICE-learning model. In particular, we describe a …
Almost correct invariants: Synthesizing inductive invariants by fuzzing proofs
S Lahiri, S Roy - Proceedings of the 31st ACM SIGSOFT International …, 2022 - dl.acm.org
Real-life programs contain multiple operations whose semantics are unavailable to
verification engines, like third-party library calls, inline assembly and SIMD instructions …
verification engines, like third-party library calls, inline assembly and SIMD instructions …
SLING: using dynamic analysis to infer program invariants in separation logic
We introduce a new dynamic analysis technique to discover invariants in separation logic for
heap-manipulating programs. First, we use a debugger to obtain rich program execution …
heap-manipulating programs. First, we use a debugger to obtain rich program execution …
Mostly Automated Proof Repair for Verified Libraries
The cost of maintaining formally specified and verified software is widely considered
prohibitively high due to the need to constantly keep code and the proofs of its correctness in …
prohibitively high due to the need to constantly keep code and the proofs of its correctness in …
Neural termination analysis
We introduce a novel approach to the automated termination analysis of computer
programs: we use neural networks to represent ranking functions. Ranking functions map …
programs: we use neural networks to represent ranking functions. Ranking functions map …