@@ -235,7 +235,7 @@ def make_input_complete(automaton, missing_transition_go_to='self_loop'):
235235 """
236236 from aalpy .base import DeterministicAutomaton
237237 from aalpy .automata import Dfa , MooreState , MealyMachine , Mdp , StochasticMealyMachine , Onfsm , \
238- DfaState , MealyState , MooreMachine , OnfsmState , MdpState , StochasticMealyState
238+ DfaState , MealyState , MooreMachine , OnfsmState , MdpState , StochasticMealyState , NDMooreMachine , NDMooreState
239239
240240 assert missing_transition_go_to in {'self_loop' , 'sink_state' }
241241
@@ -249,6 +249,7 @@ def make_input_complete(automaton, missing_transition_go_to='self_loop'):
249249 MooreMachine : MooreState (state_id = 'sink' , output = 'sink_state' ),
250250 MealyMachine : MealyState (state_id = 'sink' ),
251251 Onfsm : OnfsmState (state_id = 'sink' ),
252+ NDMooreMachine : NDMooreState (state_id = 'sink' ),
252253 Mdp : MdpState (state_id = 'sink' , output = 'sink_state' ),
253254 StochasticMealyMachine : StochasticMealyState (state_id = 'sink' )}
254255
@@ -259,31 +260,19 @@ def make_input_complete(automaton, missing_transition_go_to='self_loop'):
259260 for state in automaton .states :
260261 for i in input_al :
261262 if i not in state .transitions .keys ():
262- if missing_transition_go_to == 'self_loop' :
263- if isinstance (automaton , DeterministicAutomaton ):
264- state .transitions [i ] = state
265- if isinstance (automaton , MealyMachine ):
266- state .output_fun [i ] = 'epsilon'
267- if isinstance (automaton , Onfsm ):
268- state .transitions [i ].append (('epsilon' , state ))
269- if isinstance (automaton , Mdp ):
270- state .transitions [i ].append ((state , 1. ))
271- if isinstance (automaton , StochasticMealyMachine ):
272- state .transitions [i ].append ((state , 'epsilon' , 1. ))
273- else :
274- if isinstance (automaton , Dfa ):
275- state .transitions [i ] = sink_state
276- if isinstance (automaton , MooreMachine ):
277- state .transitions [i ] = sink_state
263+ target_state = state if missing_transition_go_to == 'self_loop' else sink_state
264+
265+ if isinstance (automaton , (DeterministicAutomaton , Dfa , MooreMachine , MealyMachine )):
266+ state .transitions [i ] = target_state
278267 if isinstance (automaton , MealyMachine ):
279- state .transitions [i ] = sink_state
280268 state .output_fun [i ] = 'epsilon'
281- if isinstance (automaton , Onfsm ):
282- state .transitions [i ].append (('epsilon' , sink_state ))
283- if isinstance (automaton , Mdp ):
284- state .transitions [i ].append ((sink_state , 1. ))
285- if isinstance (automaton , StochasticMealyMachine ):
286- state .transitions [i ].append ((sink_state , 'epsilon' , 1. ))
269+ elif isinstance (automaton , (Onfsm , NDMooreMachine )):
270+ state .transitions [i ].append (('epsilon' , target_state ) if
271+ isinstance (automaton , Onfsm ) else target_state )
272+ elif isinstance (automaton , Mdp ):
273+ state .transitions [i ].append ((target_state , 1. ))
274+ elif isinstance (automaton , StochasticMealyMachine ):
275+ state .transitions [i ].append ((target_state , 'epsilon' , 1. ))
287276
288277 return automaton
289278
0 commit comments