Published July 14, 2023 | Version v3

Synthesizing Specifications

  • 1. University of Wisconsin-Madison

Description

This is the artifact for paper #481 "Synthesizing Specifications".

Following are the contents of the artifact.

  1. spyro_oopsla23.tar.gz: A Docker image containing the source code and the dependencies to run Spyro[SMT] and Spyro[Sketch].
  2. README.md: A readme containing all the step-by-step instructions to reproduce the results shown in the paper.

 

Paper Abstract

Every program should be accompanied by a specification that describes important aspects of the code's behavior, but writing good specifications is often harder than writing the code itself.This paper addresses the problem of synthesizing specifications automatically, guided by user-supplied inputs of two kinds: i) a query \(\Phi\) posed about a set of function definitions, and ii) a domain-specific language L in which the extracted property \(\varphi_i\) is to be expressed (we call properties in the language L-properties). Each of the \(\varphi_i\) is a best L-property for \(\Phi\):there is no other L-property for \(\Phi\) that is strictly more precise than \(\varphi_i\).Furthermore, the set \(\{ \varphi_i \}\) is exhaustive:
no more L-properties can be added to it to make the conjunction \(\bigwedge_i \varphi_i\)  more precise.

We implemented our method in a tool, Spyro. The ability to modify both \(\Phi\) and L provides a Spyro user  with ways to customize the kind of specification to be synthesized.We use this ability to show that Spyro can be used in a variety of applications, such as mining program specifications, performing abstract-domain operations, and synthesizing algebraic properties of program modules.

Files

README.md

Files (1.2 GB)

Name Size
md5:538af39dfc78363a7c20a39c12c688fd
3.4 kB Download
md5:3c42135c4e521e61731c192272f642d4
10.1 kB Preview Download
md5:0240496a11e7120c65a4b833b7392a86
1.2 GB Download