From 9cccbe22131c6f2bc04c169ea9b8409bacf517f9 Mon Sep 17 00:00:00 2001
From: Patrick Hammer <patham9@gmail.com>
Date: Fri, 6 Apr 2018 16:55:25 -0400
Subject: [PATCH] Inference enhancement: Improved and simplified timing code.

---
 .../nars/inference/CompositionalRules.java    |  8 +++---
 .../nars/inference/SyllogisticRules.java      | 26 +++++++++----------
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/nars_core/nars/inference/CompositionalRules.java b/nars_core/nars/inference/CompositionalRules.java
index 75e39f10e8..a6b0c20083 100644
--- a/nars_core/nars/inference/CompositionalRules.java
+++ b/nars_core/nars/inference/CompositionalRules.java
@@ -194,10 +194,10 @@ public final class CompositionalRules {
         }
         
         long delta = 0;
-        if ((term2 instanceof Conjunction) && (((CompoundTerm) term2).term[0] instanceof Interval)) {
-                 Interval interval = (Interval) ((CompoundTerm) term2).term[0];
-                 delta = interval.getTime(nal.memory);
-                 term2 = ((CompoundTerm)term2).setComponent(0, null, nal.mem());
+        while ((term2 instanceof Conjunction) && (((CompoundTerm) term2).term[0] instanceof Interval)) {
+            Interval interval = (Interval) ((CompoundTerm) term2).term[0];
+            delta += interval.getTime(nal.memory);
+            term2 = ((CompoundTerm)term2).setComponent(0, null, nal.mem());
         }
         
         Task task = nal.getCurrentTask();
diff --git a/nars_core/nars/inference/SyllogisticRules.java b/nars_core/nars/inference/SyllogisticRules.java
index 240e08e0ef..cb2d725f2f 100644
--- a/nars_core/nars/inference/SyllogisticRules.java
+++ b/nars_core/nars/inference/SyllogisticRules.java
@@ -551,20 +551,20 @@ public final class SyllogisticRules {
         
         if (newCondition != null) {
              if (newCondition instanceof Interval) {
-                 content = premise1.getPredicate();
-                 delta = ((Interval) newCondition).getTime(duration);
-                 if(taskSentence.getOccurenceTime() != Stamp.ETERNAL) {
-                    mintime = taskSentence.getOccurenceTime() + Interval.magnitudeToTime(((Interval) newCondition).magnitude - 1, duration);
-                    maxtime = taskSentence.getOccurenceTime() + Interval.magnitudeToTime(((Interval) newCondition).magnitude + 2, duration);
-                    predictedEvent = true;
-                 }
-             } else if ((newCondition instanceof Conjunction) && (((CompoundTerm) newCondition).term[0] instanceof Interval)) {
-                 Interval interval = (Interval) ((CompoundTerm) newCondition).term[0];
-                 delta = interval.getTime(duration);
-                 newCondition = ((CompoundTerm)newCondition).setComponent(0, null, nal.mem());
-                 content = Statement.make(premise1, newCondition, premise1.getPredicate(), premise1.getTemporalOrder());
+                content = premise1.getPredicate();
+                delta = ((Interval) newCondition).getTime(duration);
+                if(taskSentence.getOccurenceTime() != Stamp.ETERNAL) {
+                   mintime = taskSentence.getOccurenceTime() + Interval.magnitudeToTime(((Interval) newCondition).magnitude - 1, duration);
+                   maxtime = taskSentence.getOccurenceTime() + Interval.magnitudeToTime(((Interval) newCondition).magnitude + 2, duration);
+                   predictedEvent = true;
+                }
              } else {
-                 content = Statement.make(premise1, newCondition, premise1.getPredicate(), premise1.getTemporalOrder());
+                while ((newCondition instanceof Conjunction) && (((CompoundTerm) newCondition).term[0] instanceof Interval)) {
+                    Interval interval = (Interval) ((CompoundTerm) newCondition).term[0];
+                    delta += interval.getTime(duration);
+                    newCondition = ((CompoundTerm)newCondition).setComponent(0, null, nal.mem());
+                }
+                content = Statement.make(premise1, newCondition, premise1.getPredicate(), premise1.getTemporalOrder());
              }
                
         } else {
-- 
GitLab