Limits for automatic verification of finite-state concurrent systems
Information Processing Letters
Genetic programming: on the programming of computers by means of natural selection
Genetic programming: on the programming of computers by means of natural selection
An Effective Implementation for the Generalized Input-Output Construct of CSP
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communicating sequential processes
Communications of the ACM
An order-based algorithm for implementing multiparty synchronization: Research Articles
Concurrency and Computation: Practice & Experience
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
Automatically finding patches using genetic programming
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
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
MCGP: a software synthesis tool based on model checking and genetic programming
ATVA'10 Proceedings of the 8th international conference on Automated technology for verification and analysis
Monitoring distributed systems using knowledge
FMOODS'11/FORTE'11 Proceedings of the joint 13th IFIP WG 6.1 and 30th IFIP WG 6.1 international conference on Formal techniques for distributed systems
Synthesis of distributed control through knowledge accumulation
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Measuring and synthesizing systems in probabilistic environments
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Achieving distributed control through model checking
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Achieving distributed control through model checking
Formal Methods in System Design
Taming confusion for modeling and implementing probabilistic concurrent systems
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Knowledge based transactional behavior
HVC'12 Proceedings of the 8th international conference on Hardware and Software: verification and testing
Hi-index | 0.00 |
Model checking can be applied to finite state systems in order to find counterexamples showing that they do not satisfy their specification. This was generalized to handle parametric systems under some given constraints, usually using some inductive argument. However, even in the restricted cases where these parametric methods apply, the assumption is usually of a simple fixed architecture, e.g., a ring. We consider the case of nontrivial architectures for communication protocols, for example, achieving a multiparty interaction between arbitrary subsets of processes. In this case, an error may manifest itself only under some particular architectures and interactions, and under some specific values of parameters. We apply here our model checking based genetic programming approach for achieving a dual task: finding an instance of a protocol which is suspicious of being bogus, and automatically correcting the error. The synthesis tool we constructed is capable of generating various mutations of the code. Moving between them is guided by model checking analysis. In the case of searching for errors, we mutate only the architecture and related parameters, and in the case of fixing the error, we mutate the code further in order to search for a corrected version. As a running example, we use a realistic nontrivial protocol for multiparty interaction. This protocol, published in a conference and a journal, is used as a building block for various systems. Our analysis shows this protocol to be, as we suspected, erroneous; specifically, the protocol can reach a livelock situation, where some processes do not progress towards achieving their interactions. As a side effect of our experiment, we provide a correction for this important protocol obtained through our genetic process.