The standard way for executing ROLL from command line is
java -jar ROLL.jar command input_files [options]
The available commands in ROLL are summarized as running modes in the following and the introduction of the options available in the tool is also provided.
There are several running modes in ROLL, namely helping mode, testing mode, playing mode, learning mode, converting mode, complementing mode, inclusion testing mode and sampling mode.
For example, to learn a Büchi automaton given by the file aut.ba, a valid command line to use the learning algorithm is the following:
java -jar ROLL.jar learn aut.ba
ROLL can be launched by using the command
java -jar ROLL.jar
, which is equal to the following two commands:
java -jar ROLL.jar -h java -jar ROLL.jar help
All above commands will show help page.
By default, all the execution details will be output by the Java object System.out. However, you can also save all the execution log information in the <file> by providing an option
By default, a learned or a complement automaton will be output along with the execution log information. But you can also save the learned automaton or the complement automaton into a given <file> by providing the option
ROLL supports both observation tables and classification trees to store membership query results. You can specify which data structure is going to be used in the learning procedure by following two options.
There are two learning algorithms for Büchi automata in ROLL, namely the L$ learner  based on the DFA learning and the Lω learner  based on three canonical FDFA learning algorithms . The default learning algorithm for Büchi automata in ROLL is the Lω learner. For the Lω learner, you can choose one of the following three options to decide which canonical FDFA learner will be used to learn Büchi automata.
You can also use the option -ldollar instead to select the L$ learner to learn Büchi automata. We remark that the DFA learning algorithm used for L$ learner is an improved version of L* algorithm . An example of the use of the L$ learner is the following, which chooses a classification tree to store the results of membership queries during the learning procedure.
java -jar ROLL.jar learn aut.ba -tree -ldollar
In ROLL, you can also specify which method to transform an FDFA to a Büchi automaton in the Lω learner by means of following two options.
You can also get a limit deterministic Büchi automaton as the final output automaton by giving the option -ldba when using the Lω learner . An example is given below.
java -jar ROLL.jar learn aut.ba -table -periodic -ldba
If you want to reuse the counterexample returned by the teacher as much as possible, you can use the lazy equivalence check optimization as follows (NOT FULLY TESTED). This option is not encouraged since it may result in larger output automaton.
java -jar ROLL.jar learn aut.ba -table -periodic -lazyeq
When receiving a counterexample, the learner has to find a valid suffix of the counterexample as a new experiment in order to identify more states in the target automaton. By default, ROLL will use a linear search to find that suffix, but you can also choose to use binary search to do that by giving the option -bs (NOT FULLY TESTED).
In ROLL, there is an option -v <value> with which you can set the verbosity level of the log output. The argument <value> is a value between 0 and 2, with 2 being the highest verbose log level. With the default verbose log level 0, there is a minimal output for the learning procedure. You can see a sequence of log messages like ``Analyzing counterexample for FDFA learner…“ telling you which stage the learning procedure gets with the verbose log level 1. You can see more details on the learning procedure with the verbose log level 2, such as the current observation table of the learner. However, with the verbose log level 2, you may see some word which is a sequence of unprintable characters. This is because we map every original input letter to an integer value as a character in our Alphabet object. Nonetheless, You can define the Alphabet object of the automata with printable characters when programming with the ROLL library.