automata: more general assembling algorithms
Currently operations such as +
, *
, and **
require the automata to be standard. This is a strong limitation.
As a matter of fact, this limitation is so strong that there are two implementations of +
: sum
(which is about standard automata) and union
(which is valid in all cases).
I'd like to have sum
implemented with several algorithms:
-
"standard"
means use the former implementation ofsum
, -
"general"
meansunion
, -
"auto"
means"standard"
if the automata are standard,"general"
otherwise.
I'm not sure that "general"
is the right name, I'm open to suggestions.
Then +
should be sum
with "auto"
. Please, remove the |
function, I don't like it: it does not mean the same things as |
for expressions for instance, nor expansions.
Once +
done, do the same for *
. Note that it's not entirely trivial do decide what we should do: in general we will need LAN. Should we then call proper or not? I think not, but...
And finally for **
.