From a1fad30db54193a2f9fc5623022c9dc2421c68fb Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 8 Apr 2016 09:58:35 +0200 Subject: [PATCH] fix naive nonlinear pattern matching --- alib2algo/src/arbology/exact/ExactPatternMatch.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp index 5b5b0a7d40..f4eb81e227 100644 --- a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp +++ b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp @@ -61,9 +61,11 @@ bool ExactPatternMatch::matchHelper ( const tree::RankedNode & subject, const tr if ( nonlinearVariables.count ( pattern.getSymbol ( ) ) ) { auto setting = variablesSetting.find ( pattern.getSymbol ( ) ); - if ( ( setting != variablesSetting.end ( ) ) && ( repeats.getSymbol ( ).getSymbol ( ) != setting->second ) ) return false; + if ( setting != variablesSetting.end ( ) ) return repeats.getSymbol ( ).getSymbol ( ) == setting->second; - if ( setting == variablesSetting.end ( ) ) variablesSetting.insert ( std::make_pair ( pattern.getSymbol ( ), repeats.getSymbol ( ).getSymbol ( ) ) ); + variablesSetting.insert ( std::make_pair ( pattern.getSymbol ( ), repeats.getSymbol ( ).getSymbol ( ) ) ); + + return true; } if ( subject.getSymbol ( ) != pattern.getSymbol ( ) ) return false; -- GitLab