Program Sketching via CTL* Model Checking

Sketching is an approach to automated software synthesis where the programmer develops a partial implementation called a sketch and a separate specification of the desired functionality. A synthesizer tool then automatically completes the sketch to a complete program that satisfies the specification. Previously, sketching has been applied to finite programs with a desired functional input/output behavior and given invariants. In this paper, we consider (non-terminating) reactive programs and use the full branching time logic CTL* to formalize specifications. We show that the sketching problem can be reduced to a CTL* model checking problem provided there is a translation of the program to labeled transition systems.

[1]  Donald E. Knuth,et al.  The art of computer programming, volume 3: (2nd ed.) sorting and searching , 1998 .

[2]  Jean-François Raskin,et al.  Compositional Algorithms for LTL Synthesis , 2010, ATVA.

[3]  Armando Solar-Lezama,et al.  Program synthesis by sketching , 2008 .

[4]  Wolfgang Thomas,et al.  Handbook of Theoretical Computer Science, Volume B: Formal Models and Semantics , 1990 .

[5]  Mohamed Nassim Seghir,et al.  A Lightweight Approach for Loop Summarization , 2011, ATVA.

[6]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[7]  Sanjit A. Seshia,et al.  Combinatorial sketching for finite programs , 2006, ASPLOS XII.

[8]  Eric Shade Size matters: lessons from a broken binary search , 2009 .

[9]  Armando Solar-Lezama,et al.  Programming by sketching for bit-streaming programs , 2005, PLDI '05.

[10]  Nicolas Halbwachs,et al.  Synchronous Programming of Reactive Systems , 1992, CAV.

[11]  E. Allen Emerson,et al.  Temporal and Modal Logic , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[12]  Stephen A. Edwards,et al.  The synchronous languages 12 years later , 2003, Proc. IEEE.

[13]  Klaus Schneider,et al.  The Synchronous Programming Language Quartz , 2009 .

[14]  Jan van Leeuwen,et al.  Handbook of Theoretical Computer Science, Vol. B: Formal Models and Semantics , 1994 .

[15]  Chin-Laung Lei,et al.  Modalities for model checking (extended abstract): branching time strikes back , 1985, POPL.

[16]  E. Emerson,et al.  Modalities for model checking (extended abstract): branching time strikes back , 1985, ACM-SIGACT Symposium on Principles of Programming Languages.

[17]  Rastislav Bodík,et al.  Programming with angelic nondeterminism , 2010, POPL '10.

[18]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[19]  Amir Pnueli,et al.  Distributed reactive systems are hard to synthesize , 1990, Proceedings [1990] 31st Annual Symposium on Foundations of Computer Science.

[20]  M. D. MacLaren The Art of Computer Programming. Volume 2: Seminumerical Algorithms (Donald E. Knuth) , 1970 .

[21]  Stephen A. Edwards,et al.  The Synchronous Languages Twelve Years Later , 1997 .

[22]  Klaus Schneider,et al.  Verification of Reactive Systems: Formal Methods and Algorithms , 2003 .

[23]  Bernd Finkbeiner,et al.  Bounded synthesis , 2007, International Journal on Software Tools for Technology Transfer.

[24]  Amir Pnueli,et al.  Specify, Compile, Run: Hardware from PSL , 2007, COCV@ETAPS.

[25]  Klaus Schneider,et al.  A LTL Fragment for GR(1)-Synthesis , 2011, iWIGP.