skip to main content
research-article
Open access

Unrealizability Logic

Published: 11 January 2023 Publication History

Abstract

We consider the problem of establishing that a program-synthesis problem is unrealizable (i.e., has no solution in a given search space of programs). Prior work on unrealizability has developed some automatic techniques to establish that a problem is unrealizable; however, these techniques are all black-box, meaning that they conceal the reasoning behind why a synthesis problem is unrealizable.
In this paper, we present a Hoare-style reasoning system, called unrealizability logic for establishing that a program-synthesis problem is unrealizable. To the best of our knowledge, unrealizability logic is the first proof system for overapproximating the execution of an infinite set of imperative programs. The logic provides a general, logical system for building checkable proofs about unrealizability. Similar to how Hoare logic distills the fundamental concepts behind algorithms and tools to prove the correctness of programs, unrealizability logic distills into a single logical system the fundamental concepts that were hidden within prior tools capable of establishing that a program-synthesis problem is unrealizable.

References

[1]
Krzysztof R Apt. 1981. Ten years of Hoare’s logic: A survey—Part I. ACM Transactions on Programming Languages and Systems (TOPLAS), 3, 4 (1981), 431–483. https://doi.org/10.1145/357146.357150
[2]
Krzysztof R Apt and Ernst-Rüdiger Olderog. 2019. Fifty years of Hoare’s logic. Formal Aspects of Computing, 31, 6 (2019), 751–807. https://doi.org/10.1007/s00165-019-00501-3
[3]
Michael R Clarkson and Fred B Schneider. 2010. Hyperproperties. Journal of Computer Security, 18, 6 (2010), 1157–1210. https://doi.org/10.1109/CSF.2008.7
[4]
Martin Davis, Kurt Godel, and Stephen C Kleene. 1990. On Undecidable Propositions of Formal Mathematical Systems. PostscriptumIntroductory Note to 1934. Journal of Symbolic Logic, 55, 1 (1990).
[5]
Edsko de Vries and Vasileios Koutavas. 2011. Reverse Hoare Logic. In Software Engineering and Formal Methods, Gilles Barthe, Alberto Pardo, and Gerardo Schneider (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 155–171. isbn:978-3-642-24690-6 https://doi.org/10.1007/978-3-642-24690-6_12
[6]
Azadeh Farzan, Danya Lette, and Victor Nicolet. 2022. Recursion synthesis with unrealizability witnesses. In Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation. 244–259. https://doi.org/10.1145/3519939.3523726
[7]
Yu Feng, Ruben Martins, Osbert Bastani, and Isil Dillig. 2018. Program synthesis using conflict-driven learning. ACM SIGPLAN Notices, 53, 4 (2018), 420–435. https://doi.org/10.1145/3192366.3192382
[8]
John K Feser, Swarat Chaudhuri, and Isil Dillig. 2015. Synthesizing data structure transformations from input-output examples. ACM SIGPLAN Notices, 50, 6 (2015), 229–239. https://doi.org/10.1145/2737924.2737977
[9]
Robert W Floyd. 1993. Assigning meanings to programs. In Program Verification. Springer, 65–81. https://doi.org/10.1007/978-94-011-1793-7_4
[10]
Sumit Gulwani. 2011. Automating string processing in spreadsheets using input-output examples. ACM Sigplan Notices, 46, 1 (2011), 317–330. https://doi.org/10.1145/1926385.1926423
[11]
Charles Antony Richard Hoare. 1969. An axiomatic basis for computer programming. Commun. ACM, 12, 10 (1969), 576–580. https://doi.org/10.1145/363235.363259
[12]
Qinheping Hu, Jason Breck, John Cyphert, Loris D’Antoni, and Thomas Reps. 2019. Proving unrealizability for syntax-guided synthesis. In International Conference on Computer Aided Verification. 335–352. https://doi.org/10.1007/978-3-030-25540-4_18
[13]
Qinheping Hu, John Cyphert, Loris D’Antoni, and Thomas Reps. 2020. Exact and approximate methods for proving unrealizability of syntax-guided synthesis problems. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation. 1128–1142. https://doi.org/10.1145/3385412.3385979
[14]
Qinheping Hu and Loris D’Antoni. 2018. Syntax-guided synthesis with quantitative syntactic objectives. In International Conference on Computer Aided Verification. 386–403. https://doi.org/10.1007/978-3-319-96145-3_21
[15]
Marius Kamp and Michael Philippsen. 2021. Approximate Bit Dependency Analysis to Identify Program Synthesis Problems as Infeasible. In Verification, Model Checking, and Abstract Interpretation - 22nd International Conference, VMCAI 2021, Copenhagen, Denmark, January 17-19, 2021, Proceedings, Fritz Henglein, Sharon Shoham, and Yakir Vizel (Eds.) (Lecture Notes in Computer Science, Vol. 12597). Springer, 353–375. https://doi.org/10.1007/978-3-030-67067-2_16
[16]
Jinwoo Kim, Loris D’Antoni, and Thomas Reps. 2022. Unrealizability Logic. arXiv preprint arXiv:2211.07117.
[17]
Jinwoo Kim, Qinheping Hu, Loris D’Antoni, and Thomas Reps. 2021. Semantics-guided synthesis. Proceedings of the ACM on Programming Languages, 5, POPL (2021), 1–32. https://doi.org/10.1145/3410258
[18]
Anvesh Komuravelli, Arie Gurfinkel, and Sagar Chaki. 2016. SMT-based model checking for recursive programs. Formal Methods in System Design, 48, 3 (2016), 175–205. https://doi.org/10.1007/978-3-319-08867-9_2
[19]
John McCarthy. 1993. Towards a mathematical science of computation. In Program Verification. Springer, 35–56. https://doi.org/10.1007/978-94-011-1793-7_2
[20]
Sergey Mechtaev, Alberto Griggio, Alessandro Cimatti, and Abhik Roychoudhury. 2018. Symbolic execution with existential second-order constraints. In Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 389–399. https://doi.org/10.1145/3236024.3236049
[21]
Ulrich Möncke and Reinhard Wilhelm. 1991. Grammar Flow Analysis. In Attribute Grammars, Applications and Systems, International Summer School SAGA, Prague, Czechoslovakia, June 4-13, 1991, Proceedings, Henk Alblas and Borivoj Melichar (Eds.) (Lecture Notes in Computer Science, Vol. 545). Springer, 151–186. https://doi.org/10.1007/3-540-54572-7_6
[22]
Tobias Nipkow. 2002. Hoare logics for recursive procedures and unbounded nondeterminism. In International Workshop on Computer Science Logic. 103–119. https://doi.org/10.1007/3-540-45793-3_8
[23]
Peter W O’Hearn. 2019. Incorrectness logic. Proceedings of the ACM on Programming Languages, 4, POPL (2019), 1–32. https://doi.org/10.1145/3371078
[24]
David von Oheimb. 1999. Hoare logic for mutual recursion and local variables. In International Conference on Foundations of Software Technology and Theoretical Computer Science. 168–180. https://doi.org/10.1007/3-540-46691-6_13
[25]
Phitchaya Mangpo Phothilimthana, Archibald Samuel Elliott, An Wang, Abhinav Jangda, Bastian Hagedorn, Henrik Barthels, Samuel J Kaufman, Vinod Grover, Emina Torlak, and Rastislav Bodik. 2019. Swizzle inventor: data movement synthesis for GPU kernels. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems. 65–78. https://doi.org/10.1145/3297858.3304059
[26]
Andrew Reynolds, Morgan Deters, Viktor Kuncak, Cesare Tinelli, and Clark Barrett. 2015. Counterexample-guided quantifier instantiation for synthesis in SMT. In International Conference on Computer Aided Verification. 198–216. https://doi.org/10.1007/978-3-319-21668-3_12
[27]
Marcelo Sousa and Isil Dillig. 2016. Cartesian hoare logic for verifying k-safety properties. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation. 57–69. https://doi.org/10.1145/2908080.2908092
[28]
Glynn Winskel. 1993. The formal semantics of programming languages: an introduction. MIT press.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages  Volume 7, Issue POPL
January 2023
2196 pages
EISSN:2475-1421
DOI:10.1145/3554308
  • Editor:
Issue’s Table of Contents
This work is licensed under a Creative Commons Attribution 4.0 International License.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 January 2023
Published in PACMPL Volume 7, Issue POPL

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Program Synthesis
  2. Unrealizability
  3. Unrealizability Logic

Qualifiers

  • Research-article

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)341
  • Downloads (Last 6 weeks)21
Reflects downloads up to 20 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media