Automatic verification of heap-manipulating programs

06/24/2019
by   Yu. O. Kostyukov, et al.
0

Theoretical foundations of compositional reasoning about heaps in imperative programming languages are investigated. We introduce a novel concept of compositional symbolic memory and formally prove its relevant properties. We utilize these formal foundations to build up a compositional algorithm that generates generalized heaps, terms of symbolic heap calculus, which characterize arbitrary cyclic code segments. All states inferred by this calculus precisely correspond to reachable states of the original program. We establish the correspondence between inference in this calculus and execution of pure second-order functional programs.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
01/14/2020

Gillian: Compositional Symbolic Execution for All

We present Gillian, a language-independent framework for the development...
research
04/18/2023

A Neural Lambda Calculus: Neurosymbolic AI meets the foundations of computing and functional programming

Over the last decades, deep neural networks based-models became the domi...
research
10/11/2017

The Refinement Calculus of Reactive Systems

The Refinement Calculus of Reactive Systems (RCRS) is a compositional fo...
research
11/02/2017

A Denotational Semantics for SPARC TSO

The SPARC TSO weak memory model is defined axiomatically, with a non-com...
research
06/14/2022

Aeneas: Rust Verification by Functional Translation

We present Aeneas, a new verification toolchain for Rust programs based ...
research
06/08/2018

Formal Small-step Verification of a Call-by-value Lambda Calculus Machine

We formally verify an abstract machine for a call-by-value lambda-calcul...
research
06/17/2015

Pragmatic Side Effects

In the quest to give a formal compositional semantics to natural languag...

Please sign up or login with your details

Forgot password? Click here to reset