HOME | CONTACT
  

Before you download

  • The software runs on Windows.
  • Before installing the software, you must install Java JRE. If you do not have Java installed, you can
  • download it from java.sun.com.

Download and install

  1. Download file "mead.zip" and unzip it to any directory.
  2. Using windows explorer, double-click on file "mead.jar"
  3. Open a sample problem: select "Problem" | "Open" and select the file "demo.def" from the problems sub-directory.
  4. Run sample problem: select the "Execution" tab, and click the "Run" button. The program will scan 25,221,389 algorithms, and find 105 solutions, one of them is Peterson's algorithm.
  5. You can also download the source code.

Running the program

The program accepts problem definition files. A problem definition file can be loaded, and when executed, the program scans all possible algorithms according to the problem definition constraints, checks each candidate algorithm, and if it is a valid solution, prints it.

There are 4 main sections (tabs) on the user-interface:

  1. Problem: Shows the problem definition
  2. Execution: Shows execution status, and manage execution control (start, stop, pause)
  3. Solutions: Shows all solutions found so far
  4. Log: Shows log messages

Problem definition file

A problem definition file is a text file with all the settings for a specific problem. In each line a single settings variable can be defined. The following table lists all problem definition parameters:
Parameter Name Type Value
Processes Number Number of processes
MemorySize Number Number of variables. each variable is an unsigned integer
MaximalValue Number The maximal value of each variable. The minimal value is always zero.
EntryCommands Number Number of source commands (lines) in the entry code
EntryCommands Number Number of source commands (lines) in the exit code
AllowMultiWriters true or false If false, each process can write only to array variables where the process-identifier is the index. For example, the assignment a[0]=1 required multi-writers, but a[me]=1 is single-writer.
AllowConditionAnd true or false If true, allows generating a condition with 2 sections combined by an "and" condition (for example "if a=1 and b=0")
AllowConditionOr true or false If true, allows generating a condition with 2 sections combined by an "or" condition (for example "if a=1 or b=0")
AllowConditionXor true or false If true, allows generating a condition with 2 sections combined by an "exclusive or" condition (for example "if a=1 xor b=0")
FirstCommandIsAssignment true or false If true, allows only assignments as the first command of the program
FirstCommandIsAssignmentToA[me] true or false If true, allows only assignments as the first command of the program, and the target of that assignment is to the variable "a[me]"
LogGeneratedComponents true or false If true, writes generated variabls and commands to the log file. Can be used to see the generated program elements.

Background, published-paper, questions and more