<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Program Specifications | Kanghee Park</title><link>https://ebmoon.github.io/tags/program-specifications/</link><atom:link href="https://ebmoon.github.io/tags/program-specifications/index.xml" rel="self" type="application/rss+xml"/><description>Program Specifications</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 01 Oct 2025 00:00:00 +0000</lastBuildDate><image><url>https://ebmoon.github.io/media/icon_hu_4bc81f2edf496b34.png</url><title>Program Specifications</title><link>https://ebmoon.github.io/tags/program-specifications/</link></image><item><title>LOUD: Synthesizing Strongest and Weakest Specifications</title><link>https://ebmoon.github.io/publication/preprint/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://ebmoon.github.io/publication/preprint/</guid><description>&lt;p&gt;This work extends the specification-synthesis framework from my
to a more general setting. The earlier framework synthesized strongest properties for quantifier-free queries; LOUD handles queries with existential quantifiers and supports both over-approximating and under-approximating specifications.&lt;/p&gt;
&lt;p&gt;This matters for programs with nondeterministic or concurrent behavior, where useful specifications can describe what must happen across all executions as well as what can happen along some execution. LOUD captures these two views through strongest L-consequences and weakest L-implicants.&lt;/p&gt;
&lt;p&gt;The paper introduces the LOUD framework and the ASPIRE solver. The evaluation uses the framework to describe and localize bugs, extract properties from concurrent programs, and synthesize winning strategies in two-player games.&lt;/p&gt;</description></item><item><title>Synthesizing Specifications</title><link>https://ebmoon.github.io/publication/journal-article/</link><pubDate>Sun, 01 Oct 2023 00:00:00 +0000</pubDate><guid>https://ebmoon.github.io/publication/journal-article/</guid><description>&lt;p&gt;This paper studies how to synthesize useful formal specifications from program code. Instead of requiring a developer to manually write every property, the framework takes a query about a set of function definitions and a domain-specific language for expressing candidate properties.&lt;/p&gt;
&lt;p&gt;The synthesized results are best properties in the chosen language: each property is as precise as possible within the language, and the set is exhaustive with respect to the query. This makes the approach useful for extracting program facts that are both formal and tailored to the kind of property a user wants to see.&lt;/p&gt;
&lt;p&gt;The work is implemented in Spyro and demonstrates applications including program-specification mining, abstract-domain operations, and algebraic properties of program modules. It appeared at OOPSLA 2023.&lt;/p&gt;</description></item></channel></rss>