The Right Kind of Non-Determinism: Using Concurrency to Verify C Programs with Underspecified Semantics

08/09/2022
by   Eduard Kamburjan, et al.
0

We present a novel and well automatable approach to formal verification of C programs with underspecified semantics, i.e., a language semantics that leaves open the order of certain evaluations. First, we reduce this problem to non-determinism of concurrent systems, automatically extracting a distributed Active Object model from underspecified, sequential C code. This translation process provides a fully formal semantics for the considered C subset. In the extracted model every non-deterministic choice corresponds to one possible evaluation order. This step also automatically translates specifications in the ANSI/ISO C Specification Language (ACSL) into method contracts and object invariants for Active Objects. We then perform verification on the specified Active Objects model, using the Crowbar theorem prover, which verifies the extracted model with respect to the translated specification and ensures the original property of the C code for all possible evaluation orders. By using model extraction, we can use standard tools, without designing a new complex program logic to deal with underspecification. The case study used is highly underspecified and cannot be handled correctly by existing tools for C.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/05/2021

Deductive Verification of Programs with Underspecified Semantics by Model Extraction

We present a novel and well automatable approach to formal verification ...
research
06/17/2019

Multiple Analyses, Requirements Once: simplifying testing & verification in automotive model-based development

In industrial model-based development (MBD) frameworks, requirements are...
research
10/30/2019

A framework for verifying deadlock and nondeterminism in UML activity diagrams based on CSP

Deadlock and nondeterminism may become increasingly hard to detect in co...
research
02/26/2019

Sound Invariant Checking Using Type Modifiers and Object Capabilities

In this paper we use pre existing language support for type modifiers an...
research
04/04/2018

P4K: A Formal Semantics of P4 and Applications

Programmable packet processors and P4 as a programming language for such...
research
10/27/2022

Formal Semantics for the Halide Language

We present the first formalization and metatheory of language soundness ...
research
07/04/2021

The Semantics of Package Management via Event Structures

We propose an approach to the semantics of package management which rela...

Please sign up or login with your details

Forgot password? Click here to reset