Published September 25, 2022 | Version 1.0
Software Open

Synthesizing Abstract Transformers

  • 1. Indian Institute of Technology Kanpur
  • 2. University of Wisconsin-Madison

Description

This repository contains the artifact for the paper Synthesizing Abstract Transformers, accepted in OOPSLA 2022.

Following are the contents of the artifact.

  1. amurth_oopsla2022.tar.gz: It is a Docker image containing the source code and the dependencies to run AMURTH.
  2. README.pdf: A readme containing all the step-by-step instructions to reproduce the results shown in the paper and how to use AMURTH
  3.  LICENSES.zip:  It contains licenses of AMURTH and all third-party software. 

Abstract

This paper addresses the problem of creating abstract transformers automatically. The method we present automates the construction of static analyzers in a fashion similar to the way yacc automates the construction of parsers. Our method treats the problem as a program-synthesis problem. The user provides specifications of (i) the concrete semantics of a given operation op, (ii) the abstract domain A to be used by the analyzer, and (iii) the semantics of a domain-specific language L in which the abstract transformer is to be expressed. As output, our method creates an abstract transformer for op in abstract domain A, expressed in L (an “L-transformer for op over A”). Moreover, the abstract transformer obtained is a most-precise L-transformer for op over A; that is, there is no other L-transformer for op over A that is strictly more precise.
 We implemented our method in a tool called AMURTH. We used AMURTH to create sets of replacement abstract transformers for those used in two existing analyzers, and obtained essentially identical performance. However, when we compared the existing transformers with the transformers obtained using AMURTH, we discovered that four of the existing transformers were unsound, which demonstrates the risk of using manually created transformers.

Files

LICENSES.zip

Files (1.5 GB)

Name Size Download all
md5:d1924397cff4e3e0770a4cb2eb278468
1.5 GB Download
md5:bf9eaa6e01107372f1be1992492ad8bb
3.8 kB Preview Download
md5:aba40b5759bc6c221b27af9332c16ff2
509.4 kB Preview Download