On the synthesis of a reactive module
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The complexity of probabilistic verification
Journal of the ACM (JACM)
Genetic programming: an introduction: on the automatic evolution of computer programs and its applications
Model Checking of Safety Properties
Formal Methods in System Design
Fast LTL to Büchi Automata Translation
CAV '01 Proceedings of the 13th International Conference on Computer Aided Verification
Distributed reactive systems are hard to synthesize
SFCS '90 Proceedings of the 31st Annual Symposium on Foundations of Computer Science
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Genetic Programming and Model Checking: Synthesizing New Mutual Exclusion Algorithms
ATVA '08 Proceedings of the 6th International Symposium on Automated Technology for Verification and Analysis
Genetic programming with fitness based on model checking
EuroGP'07 Proceedings of the 10th European conference on Genetic programming
Model checking-based genetic programming with an application to mutual exclusion
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Synthesizing solutions to the leader election problem using model checking and genetic programming
HVC'09 Proceedings of the 5th international Haifa verification conference on Hardware and software: verification and testing
Code mutation in verification and automatic code correction
TACAS'10 Proceedings of the 16th international conference on Tools and Algorithms for the Construction and Analysis of Systems
TRANSIT: specifying protocols with concolic snippets
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
We present MCGP - a tool for generating and correcting code, based on our synthesis approach combining deep Model Checking and Genetic Programming. Given an LTL specification, genetic programming is used for generating new candidate solutions, while deep model checking is used for calculating to what extent (i.e., not only whether) a candidate solution program satisfies a property. The main challenge is to construct from the result of the deep model checking a fitness function that has a good correlation with the distance of the candidate program from a correct solution. The tool allows the user to control various parameters, such as the syntactic building blocks, the structure of the programs, and the fitness function, and to follow their effect on the convergence of the synthesis process.