Example #1
0
 /**
  * {<M ==> S>, <M ==> P>} |- {<S ==> P>,
  *
  * <P ==>S>, <S <=> P>}
  *
  * @param term1 Subject of the first new task
  * @param term2 Predicate of the first new task
  * @param taskSentence The first premise
  * @param belief The second premise
  * @param figure Locations of the shared term in premises
  */
 static void abdIndCom(
     Term term1, Term term2, Sentence taskSentence, Judgment belief, int figure) {
   if (RDFStatement.invalidStatement(term1, term2)) {
     return;
   }
   RDFStatement st1 = (RDFStatement) taskSentence.getContent();
   RDFStatement st2 = (RDFStatement) belief.getContent();
   TruthValue truth1 = null;
   TruthValue truth2 = null;
   TruthValue truth3 = null;
   BudgetValue budget1, budget2, budget3;
   TruthValue value1 = taskSentence.getTruth();
   TruthValue value2 = belief.getTruth();
   if (taskSentence instanceof Question) {
     budget1 = BudgetFunctions.backward(value2);
     budget2 = BudgetFunctions.backwardWeak(value2);
     budget3 = BudgetFunctions.backward(value2);
   } else {
     if (taskSentence instanceof Goal) {
       truth1 = TruthFunctions.desireStrong(value1, value2);
       truth2 = TruthFunctions.desireWeak(value2, value1);
       truth3 = TruthFunctions.desireStrong(value1, value2);
     } else {
       truth1 = TruthFunctions.abduction(value1, value2);
       truth2 = TruthFunctions.abduction(value2, value1);
       truth3 = TruthFunctions.comparison(value1, value2);
     }
     budget1 = BudgetFunctions.forward(truth1);
     budget2 = BudgetFunctions.forward(truth2);
     budget3 = BudgetFunctions.forward(truth3);
   }
   TemporalValue order1 = st1.getOrder();
   TemporalValue order2 = st2.getOrder();
   TemporalValue order = TemporalRules.syllogistic(order1, order2, figure);
   //        if (tense == null) {
   //            tense = TemporalValue.WHEN;
   //            truth1 = TruthFunctions.temporalInduction(truth1);
   //            truth2 = TruthFunctions.temporalInduction(truth2);
   //            truth3 = TruthFunctions.temporalInduction(truth3);
   //        }
   RDFStatement statement1, statement2, statement3;
   statement1 = RDFStatement.make(st1, term1, term2, order);
   statement2 = RDFStatement.make(st1, term2, term1, TemporalValue.getReverse(order));
   statement3 = RDFStatement.makeSym(st1, term1, term2, order);
   Memory.doublePremiseTask(budget1, statement1, truth1);
   Memory.doublePremiseTask(budget2, statement2, truth2);
   Memory.doublePremiseTask(budget3, statement3, truth3);
   if (statement1.isConstant()) {
     Memory.doublePremiseTask(budget1, introVarInd(belief, taskSentence, figure, true), truth1);
     Memory.doublePremiseTask(budget2, introVarInd(taskSentence, belief, figure, true), truth2);
     Memory.doublePremiseTask(budget3, introVarInd(taskSentence, belief, figure, false), truth3);
   }
 }