Direct Construction of Program Alignment Automata for Equivalence Checking

09/04/2021
by   Manish Goyal, et al.
0

The problem of checking whether two programs are semantically equivalent or not has a diverse range of applications, and is consequently of substantial importance. There are several techniques that address this problem, chiefly by constructing a product program that makes it easier to derive useful invariants. A novel addition to these is a technique that uses alignment predicates to align traces of the two programs, in order to construct a program alignment automaton. Being guided by predicates is not just beneficial in dealing with syntactic dissimilarities, but also in staying relevant to the property. However, there are also drawbacks of a trace-based technique. Obtaining traces that cover all program behaviors is difficult, and any under-approximation may lead to an incomplete product program. Moreover, an indirect construction of this kind is unaware of the missing behaviors, and has no control over the aforesaid incompleteness. This paper, addressing these concerns, presents an algorithm to construct the program alignment automaton directly instead of relying on traces.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/10/2019

Dynamic Verification with Observational Equivalence of C/C++ Concurrency

Program executions under relaxed memory model (rmm) semantics are signif...
research
03/28/2019

A Counterexample-guided Approach to Finding Numerical Invariants

Numerical invariants, e.g., relationships among numerical variables in a...
research
10/08/2019

Scalable Comparison of JavaScript V8 Bytecode Traces

The comparison and alignment of runtime traces are essential, e.g., for ...
research
02/08/2021

Learning from Shader Program Traces

Deep networks for image processing typically learn from RGB pixels. This...
research
10/29/2018

Trace Abstraction Modulo Probability

We propose trace abstraction modulo probability, a proof technique for v...
research
03/18/2019

Specification and Inference of Trace Refinement Relations

Modern software is constantly changing. Researchers and practitioners ar...
research
12/28/2021

Syntactic Regions for Concurrent Programs

In order to gain a better understanding of the state space of programs, ...

Please sign up or login with your details

Forgot password? Click here to reset