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.
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Digital Library
- 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).
Google Scholar
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Digital Library
- Jinwoo Kim, Loris D’Antoni, and Thomas Reps. 2022. Unrealizability Logic. arXiv preprint arXiv:2211.07117.
Google Scholar
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Digital Library
- 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
Google Scholar
Cross Ref
- 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
Google Scholar
Digital Library
- Glynn Winskel. 1993. The formal semantics of programming languages: an introduction. MIT press.
Google Scholar
Digital Library
Index Terms
Unrealizability Logic
Recommendations
A Formally Verified Cut-Elimination Procedure for Linear Nested Sequents for Tense Logic
Automated Reasoning with Analytic Tableaux and Related MethodsAbstractWe port Dawson and Goré’s general framework of deep embeddings of derivability from Isabelle to Coq. By using lists instead of multisets to encode sequents, we enable the encoding of genuinely substructural logics in which some combination of ...
Semantics-guided synthesis
This paper develops a new framework for program synthesis, called semantics-guided synthesis (SemGuS), that allows a user to provide both the syntax and the semantics for the constructs in the language. SemGuS accepts a recursively defined big-step ...
Automatic program synthesis in second-order logic
IJCAI'73: Proceedings of the 3rd international joint conference on Artificial intelligenceA resolution-based theorem prover, incorporating a restricted higher-order unification algorithm, has been applied to the automatic synthesis of SNOBOL-4 programs. The set of premisses includes second-order assignment and iteration axioms derived from ...






Comments