Aude Automata demystifier

Site under construction

Aude is a free software for manipulating, learning, and teaching finite state automata and the automata theory.

You can use Aude online: http://aude.forge.imag.fr/aude/.

You can also download it. Beware, Aude is unlikely to work in Internet Explorer. The recommended browser is Firefox. Chromium (Chrome) is also supported. Aude should work in Edge, though we do not actively check compatibility with it.

Features

What’s new

21 October 2016

The automaton to regular expression algorithm should now be correct. It gives insanely large expressions because it uses the path equations technique ("équations aux chemins") and makes no optimisations. But at least, results seem correct and the implementation is simple and easy to understand.

Next step is to optimize the result.

20 October 2016

If you open Aude today, you probably won't notice anything new. Yet, the code of the user interface has undergone a big refactoring, probably the biggest since the beginning. From one file where everything was coupled and where dependencies between parts were tangled and difficult to understand, the code of the user interface has now been split in ten files. A very careful work was necessary and testing every feature was unfortunately the only way to make sure nothing was broken in the process.

Yet, I'm not even sure I didn't break anything so I decided to make Aude with the old code accessible at /aude-old so if you have problems with the new version, you can still access to a version that you know works for you. But don't forget to report any bug to aude at imag dot fr. For now, both versions have exactly the same feature set and are identical from the user's perspective, except for two bugs that have been fixed in the new version. But I won't be working on the old version anymore so fixes and new features will only happen in the new version and the old one will eventually disappear.

Why was refactoring necessary? Well, it became harder and harder to fix things and add new stuff and be sure that no new bugs are introduced. I also secretly hope that someone else contribute to Aude. With this refactoring, I hope getting started with the code is much more easier now, not to say possible at all.

This refactoring also permitted to spot bugs. Some have now been fixed. Other fixes are pending (mainly word execution).

There is still some work to do for some parts of the code that remain a bit obscure and need some love:

  • word execution: as is, trying to understand this area of the code is almost hopeless, even for me. I haven't touched it for three years. That is, I wrote it and have never touched it since then.

  • quizzes: same situation.

  • the designer: this part of the code is hard to understand. I regularly feel like it should be refactored, but when I actually look at the code, any leaning vanishes. However, I found it quite workable each time I needed to add a feature. Not clean, but definitely not that bad either. And I guess there is little I can do to make things related to geometry easier. Geometry is hard and crappy anyway and I'm not good at it. Things that work there work by accident.

In parallel, Audescript got some fixes in both versions (notably iterating over objects and equality between two objects work correctly again). The epsilon elimination algorithm was rewritten from scratch and now works correctly. All unit tests pass.

I recently noticed that the algorithm that turns automata into regular expressions is wrong and needs to be rewritten. It's a shame that three years after its writing, I didn't notice it and nobody reported a bug for it.

28 August 2016

Aude is now 3 years old. Since its initial release, I never wrote anything about updates to Aude, though that definitely happens from time to time. This is going to change. The last big update was about a year ago. The user interface was updated to look a bit cleaner. The scripting language used to write algorithms in Aude, Audescript, was also rewritten and rethought. The old parser, which was dirty, unreliable, broken and impossible to maintain has been replaced by a much cleaner piece of code and the language itself, though far from perfect (especially because of the lack of a correct type system), is far cleaner too. The update also made it possible to resize nodes and a menu now show the common actions within reach when drawing automata.

Today, Aude got updated. This is a small update and here what changed:

  • There is now an Undo/Redo function. You can make mistakes without losing your work. This feature has been asked a few times, and the lack of any convenient means to undo/redo was becoming a bit embarrassing.

  • Zoom fit best: it is easy to lose the automaton you are drawing by zooming/unzooming too much or by putting it off screen. A button now allows you to get the automaton back at the center of the screen with a decent zoom level.

  • Hamburger menu. This kind of menu is everywhere. Most browsers have one today. It is used to get rid of the menu bar and to put less used but still useful features of a software in one menu. Aude's User Interface has been designed without a menu bar. However, updates regularly add a feature that is worth adding to its toolbar. Buttons were becoming too numerous so a hamburger menu has been added so only most frequently used features or features that need to be discovered are visible in the main interface. The hamburger menu can be found at the right end side of the toolbar, using an icon that looks like the icon of most existing hamburger menu, that is, three horizontal lines.

  • Several fixes, most notably the redraw feature works again and a minor glitch was present when nodes were resized in a specific way.

The new features are, well, new. That means bugs are to be expected, especially in the undo/redo feature. Please report any bug you find so they can be fixed as soon as possible.

Contact

For any question, suggestion, comment, report, idea, contribution or if you want to join the project, please feel free to contact the developper by e-mail: aude (at) imag {dot} fr.