{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

# mead - Automatic Discovery of Mutual Exclusion...

This preview shows pages 1–3. Sign up to view the full content.

Automatic Discovery of Mutual Exclusion Algorithms (Preliminary Version) Yoah Bar-David P.O.Box 527, Kfar Hes, Israel Gadi Taubenfeld School of computer science, the Interdis- ciplinary Center, P.O.Box 167, Herzliya 46150, Israel Abstract. We present a methodology for automatic discovery of synchronization algorithms. We built a tool and used it to automatically discover hundreds of new algorithms for the well-known problem of mutual exclusion. The methodology is rather simple and the fact that it is computationally feasible is surprising. Our brute force approach may require (even for short algorithms) the mechanical veri- fication of hundreds of millions of incorrect algorithms before a correct algorithm is found. Although many new interesting algorithms have been found, we think the main contribution of this work is in demonstrating that the approach suggested for automatic discovery of (correct) synchronization algorithms is feasible. 1 Introduction 1.1 Automatic discovery of correct algorithms Finding a new algorithmic solution for a given problem is considered as an art. Tech- niques have been suggested to help with this process, but the core activity relies on human invention and ingenuity. “The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scien- tifically rewarding, but also because it can be an aesthetic experience much like com- posing poetry or music” [Knu73]. We propose a methodology for automatic discovery of synchronization algorithms for finite-state systems, and demonstrate its feasibility by building a tool that is used to automatically find hundreds of new correct algorithms for the well-known problem of mutual exclusion. The methodology is rather simple, the fact that it is computation- ally feasible is surprising. It works as follows: assume that you want to solve a spe- cific problem P . 1. Write a model-checker M for P . That is, write a program (or use an existing one) that for any proposed algorithm (solution) A , decides whether A solves P . 2. For a given (restricted) programming language, write a program that will pro- duce syntactically all possible (correct and incorrect) algorithms in that lan- guage, under certain user-defined parameters, such as: number of lines of code; number of processes; number, type and size of shared variables; etc. 3. For each algorithm A generated in step 2, check if A solves P (using M ). Part of this work was done while the authors were with the Open University of Israel .

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
We name this methodology automatic discovery . The reason that automatic discovery has not been implemented before for synchronization algorithms is probably due to the fact that (automatic) verification is considered to be a time-consuming process, while our brute force approach may require (even for very short algorithms) to try to verify hundreds of millions of incorrect algorithms before finding a correct one. Al-
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

### Page1 / 15

mead - Automatic Discovery of Mutual Exclusion...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document
Ask a homework question - tutors are online