Synthesizing, correcting and improving code, using model checking-based genetic programming

We show here how the use of genetic programming in combination of model checking provides a powerful way to synthesize programs. Whereas classical algorithmic synthesis provides alarming high complexity and undecidability results, the genetic approach provides a surprisingly successful heuristics. We describe several versions of a method for synthesizing sequential and concurrent systems. We show several examples where we used our approach to synthesize, improve and correct code.

[1]  Amir Pnueli,et al.  Discriminative Model Checking , 2008, CAV.

[2]  Doron A. Peled,et al.  Synthesizing Solutions to the Leader Election Problem Using Model Checking and Genetic Programming , 2009, Haifa Verification Conference.

[3]  John R. Koza,et al.  Human-competitive results produced by genetic programming , 2010, Genetic Programming and Evolvable Machines.

[4]  Colin G. Johnson,et al.  Genetic Programming with Fitness Based on Model Checking , 2007, EuroGP.

[5]  Doron A. Peled,et al.  Code Mutation in Verification and Automatic Code Correction , 2010, TACAS.

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

[7]  Amir Pnueli,et al.  Model checking and abstraction to the aid of parameterized systems (a survey) , 2004, Comput. Lang. Syst. Struct..

[8]  Zohar Manna,et al.  How to cook a temporal proof system for your pet language , 1983, POPL '83.

[9]  Doron A. Peled,et al.  Software Reliability Methods , 2001, Texts in Computer Science.

[10]  Mark Harman,et al.  Ieee Transactions on Evolutionary Computation 1 , 2022 .

[11]  John H. Holland,et al.  Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control, and Artificial Intelligence , 1992 .

[12]  Stephan Merz,et al.  Model Checking , 2000 .

[13]  Amir Pnueli,et al.  Impartiality, Justice and Fairness: The Ethics of Concurrent Termination , 1981, ICALP.

[14]  Edsger W. Dijkstra,et al.  Solution of a problem in concurrent programming control , 1965, CACM.

[15]  Krzysztof R. Apt,et al.  Limits for Automatic Verification of Finite-State Concurrent Systems , 1986, Inf. Process. Lett..

[16]  José Antonio Pérez,et al.  An order‐based algorithm for implementing multiparty synchronization , 2004, Concurr. Pract. Exp..

[17]  Pierre Wolper,et al.  An Automata-Theoretic Approach to Automatic Program Verification (Preliminary Report) , 1986, LICS.

[18]  John R. Koza,et al.  Genetic programming - on the programming of computers by means of natural selection , 1993, Complex adaptive systems.

[19]  Kumar Chellapilla,et al.  Evolving computer programs without subtree crossover , 1997, IEEE Trans. Evol. Comput..

[20]  Danny Dolev,et al.  An O(n log n) Unidirectional Distributed Algorithm for Extrema Finding in a Circle , 1982, J. Algorithms.

[21]  Peter Nordin,et al.  Genetic programming - An Introduction: On the Automatic Evolution of Computer Programs and Its Applications , 1998 .

[22]  Pierre Wolper,et al.  Simple on-the-fly automatic verification of linear temporal logic , 1995, PSTV.

[23]  Yih-Kuen Tsay,et al.  Deriving a Scalable Algorithm for Mutual Exclusion , 1998, DISC.

[24]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[25]  Joep L. W. Kessels,et al.  Arbitration without common modifiable variables , 1982, Acta Informatica.

[26]  Gary L. Peterson,et al.  An O(nlog n) Unidirectional Algorithm for the Circular Extrema Problem , 1982, TOPL.

[27]  Moshe Y. Vardi Probabilistic Linear-Time Model Checking: An Overview of the Automata-Theoretic Approach , 1999, ARTS.

[28]  Joost-Pieter Katoen,et al.  Formal Methods for Real-Time and Probabilistic Systems , 1999, Lecture Notes in Computer Science.

[29]  Kedar S. Namjoshi,et al.  Reasoning about rings , 1995, POPL '95.

[30]  Grégoire Sutre,et al.  An Optimal Automata Approach to LTL Model Checking of Probabilistic Systems , 2003, LPAR.

[31]  Riccardo Poli,et al.  Genetic Programming: An Introduction and Tutorial, with a Survey of Techniques and Applications , 2008, Computational Intelligence: A Compendium.

[32]  Mihalis Yannakakis,et al.  The complexity of probabilistic verification , 1995, JACM.

[33]  Edmund M. Clarke,et al.  State space reduction using partial order techniques , 1999, International Journal on Software Tools for Technology Transfer.

[34]  Mark Harman,et al.  Software engineering using metaheuristic innovative algorithms: workshop report , 2001, Inf. Softw. Technol..

[35]  Doron A. Peled,et al.  Model Checking-Based Genetic Programming with an Application to Mutual Exclusion , 2008, TACAS.

[36]  Wolfgang Thomas,et al.  Automata on Infinite Objects , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[37]  Gadi Taubenfeld,et al.  Automatic Discovery of Mutual Exclusion Algorithms , 2003, DISC.

[38]  S. Safra,et al.  On the complexity of omega -automata , 1988, [Proceedings 1988] 29th Annual Symposium on Foundations of Computer Science.

[39]  Hans-Paul Schwefel,et al.  Evolution and Optimum Seeking: The Sixth Generation , 1993 .

[40]  Michael J. Fischer,et al.  Economical solutions for the critical section problem in a distributed system (Extended Abstract) , 1977, STOC '77.

[41]  Doron A. Peled,et al.  MCGP: A Software Synthesis Tool Based on Model Checking and Genetic Programming , 2010, ATVA.

[42]  Amir Pnueli,et al.  On the synthesis of a reactive module , 1989, POPL '89.

[43]  O. Kupermann,et al.  Synthesizing distributed systems , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.

[44]  Ernest J. H. Chang,et al.  An improved algorithm for decentralized extrema-finding in circular configurations of processes , 1979, CACM.

[45]  Nancy A. Lynch,et al.  Bounds on Shared Memory for Mutual Exclusion , 1993, Inf. Comput..

[46]  Amir Pnueli,et al.  Checking that finite state concurrent programs satisfy their linear specification , 1985, POPL.

[47]  Pierre Wolper,et al.  Synthesis of Communicating Processes from Temporal Logic Specifications , 1981, Logic of Programs.

[48]  Sven Schewe,et al.  Synthesis of succinct systems , 2015, J. Comput. Syst. Sci..

[49]  Riccardo Poli,et al.  A Field Guide to Genetic Programming , 2008 .

[50]  Orna Kupferman,et al.  Model Checking of Safety Properties , 1999, CAV.

[51]  Doron A. Peled,et al.  Genetic Programming and Model Checking: Synthesizing New Mutual Exclusion Algorithms , 2008, ATVA.

[52]  Annie S. Wu,et al.  Putting More Genetics into Genetic Algorithms , 1998, Evolutionary Computation.

[53]  David J. Montana,et al.  Strongly Typed Genetic Programming , 1995, Evolutionary Computation.

[54]  Andrew Hinton,et al.  PRISM: A Tool for Automatic Verification of Probabilistic Systems , 2006, TACAS.