diff --git a/nars_core_java/nars/storage/Memory.java b/nars_core_java/nars/storage/Memory.java index 5e561c47148118ae7f6ef2eef6f1b3987628eba9..d0fd44942850ae90d719acc5c57d48fdd095f908 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