public Automaton<BDD> Intersect(params Automaton<BDD>[] automata)
{
if (automata.Length == 0)
throw new AutomataException(AutomataExceptionKind.InvalidArgument);
var res = automata[0];
for (int i = 1; i < automata.Length; i++)
{
res = res.Intersect(automata[i]);
}
return res;
}