Skip to content

Commit

Permalink
Think I fixed the last weird bug
Browse files Browse the repository at this point in the history
  • Loading branch information
eliotwrobson committed Nov 7, 2023
1 parent d11dfb9 commit b2264fc
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion automata/fa/dfa.py
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,7 @@ def _minify(
new_transitions[name] = {
letter: back_map[inner_transition_dict_old[letter]]
for letter in inner_transition_dict_old.keys()
if inner_transition_dict_old[letter] in reachable_states
if inner_transition_dict_old[letter] in back_map.keys()
}

allow_partial = any(
Expand Down
17 changes: 16 additions & 1 deletion tests/test_dfa.py
Original file line number Diff line number Diff line change
Expand Up @@ -1281,12 +1281,27 @@ def test_minify_partial_dfa(self) -> None:
self.assertEqual(minified_partial_dfa, partial_dfa_extra_state)

def test_minify_partial_dfa_correctness(self) -> None:
"""Test correctness of minifying partial DFAs"""
input_symbols = {"a", "b", "c"}
dfa = DFA.from_finite_language(
language={"ab", "abcb"}, input_symbols={"a", "b", "c"}, as_partial=True
language={"ab", "abcb"}, input_symbols=input_symbols, as_partial=True
)

self.assertEqual(dfa.minify(), dfa)

dfa2 = DFA.from_finite_language(
language={"ab", "abba", "cbab"},
input_symbols=input_symbols,
as_partial=True,
)

self.assertEqual(dfa2.minify(), dfa2)

self.assertEqual(dfa.union(dfa2, minify=False), dfa.union(dfa2, minify=True))
self.assertEqual(dfa.intersection(dfa2, minify=False), dfa.intersection(dfa2, minify=True))
self.assertEqual(dfa.symmetric_difference(dfa2, minify=False), dfa.symmetric_difference(dfa2, minify=True))
self.assertEqual(dfa.difference(dfa2, minify=False), dfa.difference(dfa2, minify=True))

def test_init_nfa_simple(self) -> None:
"""Should convert to a DFA a simple NFA."""
nfa = NFA(
Expand Down

0 comments on commit b2264fc

Please sign in to comment.