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