Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/learnlib/ralib
https://github.com/learnlib/ralib
Last synced: 4 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/learnlib/ralib
- Owner: LearnLib
- License: apache-2.0
- Created: 2022-06-01T07:28:44.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-15T21:54:22.000Z (10 months ago)
- Last Synced: 2024-04-16T18:20:38.586Z (10 months ago)
- Language: Java
- Size: 41.4 MB
- Stars: 4
- Watchers: 4
- Forks: 1
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: COPYING.txt
Awesome Lists containing this project
README
RALib
=========================RALib is a library for active learning algorithms for register automata
(a form of extended finite state machines). RALib is licensed under
the [*Apache License, Version 2.0*][2].RALib is developed as an extension to [*LearnLib*][1].
It currently implements the following algorithms for learning register automata:1. The _SL* algorithm_
by Sofia Cassel, Falk Howar, Bengt Jonsson, and Bernhard Steffen,
presented in the paper [Learning Extended Finite State Machines][3],
Software Engineering and Formal Methods (SEFM 2014), pp 250-264.2. The _SLλ algorithm_
by Simon Dierl, Paul Fiterau-Brostean, Falk Howar, Bengt Jonsson,
Konstantinos Sagonas, and Fredrik Tåquist,
presented in the paper [Scalable Tree-based Register Automata Learning][4],
Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2024).Installation
-------------------------RaLib uses maven as a build system. You can simply run
```sh
mvn package assembly:single
```to build RaLib.
Using RALib
-------------------------RALib can be used as a library from Java. The test cases that come with RALib
demonstrate how this can be done. RALib currently also provides two tools
that can be run from the shell. A 'simulator' for inferring RA models from
simulated systems (automata) and a 'class analyzer' for inferring RA models
of Java classes. Running
```sh
java -ea -jar target/ralib-0.1-SNAPSHOT-jar-with-dependencies.jar
```
will show some help and available options to the tools.Below we provide two example configurations.
1. For learning a model of `java.util.LinkedList` with the `class-analyzer` call:
```sh
java -ea -jar target/ralib-0.1-SNAPSHOT-jar-with-dependencies.jar class-analyzer -f config
```
with the following `config` file:
```
target=java.util.LinkedList
methods=push(java.lang.Object:int)boolean:boolean+\
pop()java.lang.Object:intlogging.level=WARNING
max.time.millis=600000
use.ceopt=true
use.suffixopt=true
use.fresh=false
use.rwalk=true
export.model=true
rwalk.prob.fresh=0.8
rwalk.prob.reset=0.1
rwalk.max.depth=6
rwalk.max.runs=10000
rwalk.reset.count=false
rwalk.draw.uniform=false
teachers=int:de.learnlib.ralib.tools.theories.IntegerEqualityTheory
```2. For learning a model of the SIP protocol with the `iosimulator` call:
```sh
java -ea -jar target ralib-0.1-SNAPSHOT-jar-with-dependencies.jar iosimulator -f config
```
with the following `config` file
```
target=src/test/resources/de/learnlib/ralib/automata/xml/sip.xmllogging.level=WARNING
max.time.millis=600000
use.eqtest=true
use.ceopt=true
use.suffixopt=true
use.fresh=false
use.rwalk=true
export.model=true
rwalk.prob.fresh=0.8
rwalk.prob.reset=0.1
rwalk.max.depth=100
rwalk.max.runs=10000
rwalk.reset.count=false
rwalk.draw.uniform=false
teachers=int:de.learnlib.ralib.tools.theories.IntegerEqualityTheory
```[1]: http://www.learnlib.de
[2]: http://www.apache.org/licenses/LICENSE-2.0
[3]: https://link.springer.com/chapter/10.1007/978-3-319-10431-7_18
[4]: https://arxiv.org/pdf/2401.14324.pdf