Skip to content

Commit

Permalink
(#330) FIX
Browse files Browse the repository at this point in the history
  • Loading branch information
xendalm committed Apr 15, 2024
1 parent db4034b commit 4a2eb32
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 7 deletions.
6 changes: 3 additions & 3 deletions apps/UnitTestsApp/src/UnitTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -786,9 +786,9 @@ TEST(TestBisimilar, MFA_Bisimilar) {
ASSERT_TRUE(MemoryFiniteAutomaton::bisimilar(BackRefRegex("[aa*]:1a&1").to_mfa_additional(),
BackRefRegex("a[a*a]:1&1").to_mfa_additional())
.value());
// ASSERT_FALSE(MemoryFiniteAutomaton::bisimilar(BackRefRegex("[a*]:1a*&1").to_mfa_additional(),
// BackRefRegex("a*[a*]:1&1").to_mfa_additional())
// .value());
ASSERT_FALSE(MemoryFiniteAutomaton::bisimilar(BackRefRegex("[a*]:1a*&1").to_mfa_additional(),
BackRefRegex("a*[a*]:1&1").to_mfa_additional())
.value());
ASSERT_TRUE(MemoryFiniteAutomaton::bisimilar(BackRefRegex("[ab]:2cab&2").to_mfa_additional(),
BackRefRegex("abc[ab]:2&2").to_mfa_additional())
.value());
Expand Down
1 change: 1 addition & 0 deletions libs/Objects/include/Objects/MemoryCommon.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ struct CaptureGroup {
int index;
int class_num;

static const int reset_class = -1;
bool operator==(const State& other) const;

struct Hasher {
Expand Down
7 changes: 4 additions & 3 deletions libs/Objects/src/MemoryCommon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ CaptureGroup::CaptureGroup(int cell, const std::vector<std::vector<int>>& _trace
for (const auto& trace : _traces) {
traces.insert(trace);
for (auto st : trace) {
states.insert({st, _state_classes[st]});
state_classes.insert(_state_classes[st]);
int class_num = (trace.size() > 1) ? _state_classes[st] : State::reset_class;
states.insert({st, class_num});
state_classes.insert(class_num);
}
}
}
Expand All @@ -56,7 +57,7 @@ std::unordered_set<int> CaptureGroup::get_states_diff(
const std::unordered_set<int>& other_state_classes) const {
std::unordered_set<int> res;
for (auto st : states)
if (!other_state_classes.count(st.class_num))
if (st.class_num != State::reset_class && !other_state_classes.count(st.class_num))
res.insert(st.index);

for (const auto& trace : traces)
Expand Down
2 changes: 1 addition & 1 deletion libs/Objects/src/MemoryFiniteAutomaton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1534,7 +1534,7 @@ optional<bool> MemoryFiniteAutomaton::bisimilarity_checker(const MemoryFiniteAut
CGs2_fa(fas[1].get_subautomaton(CGs2[0]));
for (int i = 1; i < CGs1.size(); i++)
CGs1_fa = FiniteAutomaton::uunion(CGs1_fa, fas[0].get_subautomaton(CGs1[i]));
for (int i = 1; i < CGs1.size(); i++)
for (int i = 1; i < CGs2.size(); i++)
CGs2_fa = FiniteAutomaton::uunion(CGs2_fa, fas[1].get_subautomaton(CGs2[i]));
if (!FiniteAutomaton::equivalent(CGs1_fa, CGs2_fa))
return false;
Expand Down

0 comments on commit 4a2eb32

Please sign in to comment.