Learning EFSMs (Register Automaton)

48 views
Skip to first unread message

Shahbaz at 1 Ali

unread,
Mar 17, 2018, 3:17:58 AM3/17/18
to LearnLib Q&A
Hello!

I am newcomer in learning LearnLib and needed your help please.

Can we learn a behavioral model in the form of Extended Finite State Machine (like Register Automaton) using new version of LearnLib? Is there any running code example/project is available in LearnLib?

Ali

Shahbaz at 1 Ali

unread,
Mar 17, 2018, 3:27:33 AM3/17/18
to LearnLib Q&A


On Saturday, March 17, 2018 at 3:17:58 PM UTC+8, Shahbaz at 1 Ali wrote:
Hello!

I am newcomer in learning LearnLib and needed your help please.

Can we learn a behavioral model in the form of Extended Finite State Machine like Register Automaton (I am talking about Implementation support for register automata (as defined by Cassel et al in RALIB tool) ) using new version of LearnLib? Is there any running code example/project is available in LearnLib?

Ali

Markus Frohme

unread,
Mar 17, 2018, 5:51:16 PM3/17/18
to Shahbaz at 1 Ali, LearnLib Q&A
Dear Shabaz,


currently, there is no support for Register Automata in LearnLib. I have looked into re-integrating some of the code back to LearnLib, but sadly the code-base of RALib (at least the public version on Bitbucket) is not in a good shape.

I am in contact with Falk about this and to my knowledge there is some work being done (or in planning) to improve the situation. But I cannot give an ETA for this. Maybe Falk may reply to this post and share some more insight.

Shahbaz at 1 Ali

unread,
Mar 25, 2018, 3:47:47 AM3/25/18
to LearnLib Q&A
Thank you for your reply. Two more queries please. Does the current version of LearnLib surrport visual environment for learning setup ( i mean graphical user interface like LearnLib Studio is supported in new version?) and secondly, i have to infer the model of a system which involve message passings i.e., many messages with different parameters values. If the current version does not  support for Register Automaton/EFSMs then what methodologies should i choose? Should i write a Mapper/Abstracion component and placed between Learner and SUL? or anything else plz guide me and refer to some literature .....

Shahbaz at 1 Ali

unread,
Mar 27, 2018, 9:03:51 PM3/27/18
to LearnLib Q&A
thanks for your reply......

Markus Frohme

unread,
Mar 28, 2018, 5:06:37 AM3/28/18
to Shahbaz at 1 Ali, LearnLib Q&A
1)

The original LearnLib Studio was bundled with the previous closed-source
(or rather academic-use-only) version of the LearnLib library. The
open-source reimplementation of the library is not compatible with the old
LearnLib studio. There seems to exists a reboot of LearnLib Studio based
on the open-source implementation (see
https://link.springer.com/chapter/10.1007/978-3-319-51641-7_8), but
personally, I have never seen it. I can see, if I can get any information
about the project, but all of the authors no longer work at our chair, so
I assume it is not well maintained either. However, in the near future one
of our student assisstants will work on implementing a LearnLib
Studio-like GUI, based on our new (meta-) modelling framework CINCO
(https://cinco.scce.info/) in his masters thesis. So for now, no, the
current learnlib (to my knowledge) has no visual environment, but it will
get one in the (foreseeable) future.

2)

Yes, you could try to write a mapper that takes care of parameterizing
function calls. For example, you could define two input symbols INVOKE_1
and INVOKE_2 which on the SUL actually execute "invoke(1)" and "invoke(2)"
respectively. However, you would have to know beforehand, which parameters
you want to use. For doing this in an automated manner, I could (again)
suggest you the idea of abstract alphabet refinement (see
http://www.falkhowar.de/papers/VMCAI2011-Automata-Learning-with-Automated-Alphabet-Abstraction-Refinement.pdf).
While not currently implemented in LearnLib, this approach may help you
for your situation and requires less effort than implementing EFSMs. If
time allows (or you would like to contribute an implementation) we can
also look into supporting this natively in the LearnLib.

Shahbaz at 1 Ali

unread,
Mar 28, 2018, 5:14:59 AM3/28/18
to LearnLib Q&A
Once again thank you very much for your valuable suggestions......

Pepe Vila

unread,
Jul 4, 2019, 11:55:25 AM7/4/19
to LearnLib Q&A
Sorry for resurecting this thread, but has there been any progress on integrating RALib with the current version of Learnlib?

If not, I see several branches in https://bitbucket.org/learnlib/ralib/. Can anyone give a hint about which one is "more ready" to use?

Thanks.

Paul Fiterau

unread,
Jul 8, 2019, 5:55:15 AM7/8/19
to LearnLib Q&A
Hi Pepe,

It very much depends on what do you want to use RaLib for. If you just want to try it out, my recommendation is to use the "basic" branch which is stable and requires no additional libraries. This version is capable of learning Register Automatas with equality checks and assignments.

If you want to use it on systems that also support "inequality" checks (<, ==, >), you should use the inequalities branch. This will require that you install Z3. The branch is nevertheless stable.

Finally, if you want to use it on system in addition to inequalities, also support checks and assignments involving sums with constants, then things will get messy. The "succ_expr" branch has been tested for TCP-like systems and has some documentation. It however has not been tested on any other systems and also comes with a lot of experimental bloat. There are some other "succ" branches which are likely unstable. Hence, I would caution you against using any of these branches. In the next few weeks we will try to get a stable "succ" branch that is stable and works for the systems mentioned.


All the best, and let me know if you have problems!

Paul.
Reply all
Reply to author
Forward
0 new messages