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