MSO vers automates
Outil Mona
Page web de l'outil Mona
Entrée : écrire une formule MSO dans Mona
Voici un exemple d'entrée (une formule de MSO) de l'outil Mona.
pred first(var1 x) = ~ex1 y: y + 1 = x;
pred last(var1 x) = ~ex1 y: x + 1 = y;
var2 Pa, Pb;
(ex1 x: first(x) & x in Pa) & (ex1 x: x in Pb) & (Pa inter Pb= {});
Les prédicats
first et
last correspondent respectivement au début de mot et fin de mot.
Les prédicats
Pa et
Pb correspondent au fait que le curseur est sous un a ou un b. Comme l'outil est général, on doit spécifier qu'on ne peut pas avoir un a et un b en même temps. C'est fait grâce à
(Pa inter Pb= {}). La formule ci-dessus spécifie le langage des mots qui commencent par un a et contiennent un b.
Sortie : un automate
Choisir "Output whole automaton in Graphviz format (linear mode only)". Dans l'automate, on ne représente pas les lettres mais des vecteurs. Avec l'exemple au dessus,
(1, 0) (en vertical) c'est a et (0, 1) c'est b. (0, 0) c'est une autre lettre. Et (1, 1) c'est à la fois a et b (inconsistent avec notre spécification).
(0, X) signifie (0, 0) ou (0, 1). Le (X, X) initial correspond au début du mot.