FSM
Are there any redundant states? Can this FSM be simplified?

Click here to download the source code.
All the state have implicit loopback which means e.g. that if we are in S0 and a='0' and b='0' then we will stay in S0.
Answer, Yes :-)

State S4 is redundant.
Note State S3 is not a redundant state but a state that can be merged into S1, which synthesis tool can do this?
