pep8
rm unused imports
rm unused args and kwargs
replace arg max_outdegree -> deterministic in LabeledDiGraph.__init__

delicate outdegree constraints won't be implemented by the class itself.
Write your own algorithm or subclass and add methods.
rm ghost methods from FTS

Will be implemented if and when needed as functions.
Otherwise the class becomes a god object with implicit semantics buried in methods.
extract synchronous product FTS * BA to algorithms module

because they just bloat the automata and transys modules.
They are non-trivial algorithms whose semantics are emphasized if the user has to call them as functions.
They operate on objects from classes defined in different modules, so wrapping them by methods leads to circular imports (if we want type checking).
mv FTS methods for products to algorithms module as functions
fix KripkeStructure
add LabeledGameGraph
misc
rm class OpenFTS
shift FTS
merge class OpenFTS with FTS

extending FTS with env_vars, sys_vars and owner of states.
rm alias FSM

because it is not used, instead MealyMachine and MooreMachine are intended to be used directly.
rm unimplemented methods from FiniteStateMachine

because is_blocking and is_receptive are not very useful.
Receptiveness may not be required and depends on assumptions about the environment.

Products of machines are practically never taken explicitly.
They will be needed only for composing machines for simulation.
In that case, the semantics become more explicit by implementing them as functions.
improve FTS docstring
mv function tuple2ba back to automata module
mv product functions from BuchiAutomaton to algorithms module

and start cleaning/merging with same functions that were methods of FTS.
update imports
fix typo