Source Code and Binaries

The source code for the tool is available under the GPLv3 licence. The executable jar can be downloaded from here (the source code is available on the same site).

Demo

The traces used for the mine pump demo can be downloaded here. The demo, when executed, provides a Graphviz dot graph, along with associated WEKA rule outputs, and looks as follows:

java -jar EFSMTool-072013.jar -input minePump

digraph Automaton {
  rankdir = LR;
  0 [label="0",shape=doublecircle];
  initial [shape=plaintext,label=""];
  initial -> 0
  0 -> 9 [label="critical"]
  0 -> 1 [label="highwater"]
  0 -> 13 [label="critical"]
  1 [label="1",shape=doublecircle];
  1 -> 9 [label="critical"]
  1 -> 2 [label="switch_pump_on"]
  1 -> 7 [label="highwater"]
  2 [label="2",shape=doublecircle];
  2 -> 3 [label="turn_on"]
  3 [label="3",shape=doublecircle];
  3 -> 1 [label="not_critical"]
  3 -> 4 [label="critical\n low_water"]
  3 -> 3 [label="highwater"]
  3 -> 12 [label="not_critical"]
  4 [label="4",shape=doublecircle];
  4 -> 1 [label="not_critical"]
  4 -> 12 [label="highwater"]
  4 -> 3 [label="critical"]
  4 -> 5 [label="switch_pump_off"]
  5 [label="5",shape=doublecircle];
  5 -> 4 [label="turn_off"]
  6 [label="1884",shape=doublecircle];
  6 -> 10 [label="switch_pump_off"]
  7 [label="2494",shape=doublecircle];
  7 -> 8 [label="switch_pump_on"]
  8 [label="2495",shape=doublecircle];
  8 -> 11 [label="turn_on"]
  9 [label="1027",shape=doublecircle];
  9 -> 4 [label="not_critical"]
  10 [label="2498",shape=doublecircle];
  10 -> 1 [label="turn_off"]
  11 [label="2496",shape=doublecircle];
  11 -> 6 [label="low_water"]
  12 [label="1549",shape=doublecircle];
  12 -> 16 [label="switch_pump_on"]
  13 [label="113",shape=doublecircle];
  13 -> 3 [label="highwater"]
  14 [label="1263",shape=doublecircle];
  14 -> 15 [label="critical\n low_water"]
  14 -> 6 [label="low_water"]
  14 -> 4 [label="critical"]
  15 [label="1264",shape=doublecircle];
  15 -> 5 [label="switch_pump_off"]
  16 [label="1704",shape=doublecircle];
  16 -> 14 [label="turn_on"]
}


=========================== MODEL FOR:critical =========================== 
J48 pruned tree
------------------

pump = true: switch_pump_off (77.0)
pump = false
|   methane <= 607.2162
|   |   methane <= 602.640094: not_critical (32.0/3.0)
|   |   methane > 602.640094
|   |   |   water <= 31.699162: not_critical (4.0/2.0)
|   |   |   water > 31.699162: critical (13.0/6.0)
|   methane > 607.2162
|   |   water <= 74.875037: highwater (9.0/1.0)
|   |   water > 74.875037: critical (27.0)

Number of Leaves  : 	6

Size of the tree : 	11

=========================== MODEL FOR:not_critical =========================== 
J48 pruned tree
------------------
: switch_pump_on (90.0/4.0)

Number of Leaves  : 	1

Size of the tree : 	1

=========================== MODEL FOR:highwater =========================== 
J48 pruned tree
------------------

methane <= 598.525559: switch_pump_on (226.0)
methane > 598.525559: critical (10.0/1.0)

Number of Leaves  : 	2

Size of the tree : 	3

=========================== MODEL FOR:turn_off =========================== 
J48 pruned tree
------------------

methane <= 597.355089: highwater (213.0/2.0)
methane > 597.355089: not_critical (79.0/28.0)

Number of Leaves  : 	2

Size of the tree : 	3

=========================== MODEL FOR:turn_on =========================== 
J48 pruned tree
------------------

methane <= 590.815697: low_water (201.0/2.0)
methane > 590.815697
|   water <= 35.75304: low_water (21.0/10.0)
|   water > 35.75304: critical (76.0/12.0)

Number of Leaves  : 	3

Size of the tree : 	5

To turn on the GUI, add "-visualise graphical" to the parameters.

Most of the other options (e.g. selection of algorithm, confidence score, etc.) can be specified at the command line. Not supplying any inputs will provide the following help message, which details the various parameters:

usage: Mint
 -algorithm        J48, M5, JRIP, NaiveBayes,
                              AdditiveRegression, M5Rules, AdaBoost, or
                              NNGE
 -confidence      Confidence score that predictions by
                              inferred data models should achieve
 -data                  use variable data for inference or not
 -help                        print this message
 -input                trace file
 -k                        minimum length of overlapping outgoing paths
                              for a merge
 -ktails                      Use k-tails criteria to merge states.
 -progress          Show progress
 -reducedCheck                Reduce the amount of time checking validity
                              of individual merges, leave to single check
                              per merge.
 -visualise        How to output your EFSM - either `text' or
                              `graphical'.
 -wekaOptions    WEKA options for specific learning
                              algorithms (See WEKA documentation)
Input file not found: 

Trace Data

For the Oracle JavaMail study, the original traces can be downloaded here, and the mutated traces can be downloaded here.

For the Basho Riak study, the original traces can be downloaded here, and the mutated traces can be downloaded here.

Results Spreadsheets

The full empirical results can be downloaded here.