From e0937fd680bf98abcb56ab8314bfbfe9736be363 Mon Sep 17 00:00:00 2001
From: patham9 <patham9@91dfdad4-c543-0410-b26a-7d79dded8189>
Date: Sun, 27 Jul 2014 16:48:27 +0000
Subject: [PATCH] fixed single premise derivation chain mess again, hopefully
 last needed fix for 1.5.7 :)

---
 nars_core_java/nars/storage/Memory.java | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/nars_core_java/nars/storage/Memory.java b/nars_core_java/nars/storage/Memory.java
index 5e561c4..d0fd449 100644
--- a/nars_core_java/nars/storage/Memory.java
+++ b/nars_core_java/nars/storage/Memory.java
@@ -34,6 +34,7 @@ import nars.entity.TermLink;
 import nars.entity.TruthValue;
 import nars.inference.BudgetFunctions;
 import nars.io.IInferenceRecorder;
+import nars.language.Negation;
 import nars.language.Term;
 import nars.main_nogui.Parameters;
 import nars.main_nogui.ReasonerBatch;
@@ -341,8 +342,12 @@ public class Memory {
             if (!revised) { //its a inference rule, we have to do the derivation chain check to hamper cycles
                 for (Term chain1 : chain) {
                     if (task.getSentence().isJudgment() && task.getContent().equals(chain1)) {
-                        recorder.append("!!! Cyclic Reasoning detected: " + task + "\n");
-                        return;
+                        if(task.getParentTask()==null || 
+                           (!(task.getParentTask().getContent().equals(Negation.make(task.getContent(), this))) &&
+                           !(task.getContent().equals(Negation.make(task.getParentTask().getContent(), this))))) {
+                            recorder.append("!!! Cyclic Reasoning detected: " + task + "\n");
+                            return;
+                        }
                     }
                 }
             } else //its revision, of course its cyclic, apply evidental base policy     
-- 
GitLab