Inputs: fault_signal, ack_signal
Outputs: alarm_buzzer, green_light, red_light
According to the project description, the fault detector can have 3 states:
1. nonfault state: keep if fault_signal is false, transit to second state if fault_signal is true.
2. fault detected state: keep if ack_signal is false, transit to third state if ack_signal is true.
3. fault acked state: keep if fault_signal is true, transit to the first state if fault_signal is false.
Outputs can change according to the state transition.