コード例 #1
0
ファイル: SyllogisticRules.java プロジェクト: automenta/jcog
 /**
  * {<M --> S>, <M --> P>} |- <<#x --> S> ==> <#x --> P>> {<M --> S>, <M --> P>} |- <<#x --> S> <=>
  * <#x --> P>>
  *
  * @param sentence1 The first premise <M --> S>
  * @param sentence2 The second premise <M --> P>
  * @param figure The figure indicating the location of the shared term
  * @param isImplication The conclusion is Implication, not Equivalence
  */
 private static RDFStatement introVarInd(
     Sentence sentence1, Sentence sentence2, int figure, boolean isImplication) {
   RDFStatement premise1 = (RDFStatement) sentence1.getContent();
   RDFStatement premise2 = (RDFStatement) sentence2.getContent();
   RDFStatement state1, state2;
   Variable v1 = new Variable(Symbols.VARIABLE_TAG + "0");
   Variable v2 = new Variable(Symbols.VARIABLE_TAG + "0");
   if (figure == 11) {
     state1 = RDFStatement.make(premise1, v1, premise1.getPredicate());
     state2 = RDFStatement.make(premise2, v2, premise2.getPredicate());
   } else {
     state1 = RDFStatement.make(premise1, premise1.getSubject(), v1);
     state2 = RDFStatement.make(premise2, premise2.getSubject(), v2);
   }
   TemporalValue tense1 = sentence1.getTense();
   TemporalValue tense2 = sentence2.getTense();
   TemporalValue tense = TemporalRules.tenseInduction(tense1, tense2);
   if (tense == null) {
     return null;
   }
   RDFStatement content;
   if (isImplication) {
     content = Implication.make(state1, state2, tense);
   } else {
     content = Equivalence.make(state1, state2, tense);
   }
   return content;
 }
コード例 #2
0
ファイル: SyllogisticRules.java プロジェクト: automenta/jcog
 /**
  * {<M ==> S>, <M ==> P>} |- {<S ==> P>,
  *
  * <P ==>S>, <S <=> P>}
  *
  * @param task1 The first premise
  * @param task2 The second premise
  * @param order Temporal order of the terms in conclusion
  */
 public static void temporalIndCom(Task task1, Task task2, TemporalValue order) {
   Judgment judg1 = (Judgment) task1.getSentence();
   Judgment judg2 = (Judgment) task2.getSentence();
   Stamp stamp = Stamp.make(judg1.getStamp(), judg2.getStamp());
   if (stamp == null) {
     return;
   }
   Memory.currentStamp = stamp;
   Term term1 = judg1.getContent();
   Term term2 = judg2.getContent();
   if ((term1 instanceof Inheritance) && (term2 instanceof Inheritance)) {
     RDFStatement s1 = (RDFStatement) term1;
     RDFStatement s2 = (RDFStatement) term2;
     Variable var1 = new Variable(Symbols.VARIABLE_TAG + "0");
     Variable var2 = new Variable(Symbols.VARIABLE_TAG + "0");
     if (s1.getSubject().equals(s2.getSubject())) {
       term1 = RDFStatement.make(s1, var1, s1.getPredicate());
       term2 = RDFStatement.make(s2, var2, s2.getPredicate());
     } else if (s1.getPredicate().equals(s2.getPredicate())) {
       term1 = RDFStatement.make(s1, s1.getSubject(), var1);
       term2 = RDFStatement.make(s2, s2.getSubject(), var2);
     }
   } else { // to generalize
     Term condition;
     if ((term1 instanceof Implication) && (term2 instanceof Inheritance)) {
       condition = ((Implication) term1).getSubject();
       if (condition.equals(term2)) {
         return;
       }
       if ((condition instanceof Conjunction)
           && ((Conjunction) condition).containComponent(term2)) {
         return;
       }
     } else if ((term1 instanceof Inheritance) && (term2 instanceof Implication)) {
       condition = ((Implication) term2).getSubject();
       if (condition.equals(term1)) {
         return;
       }
       if ((condition instanceof Conjunction)
           && ((Conjunction) condition).containComponent(term1)) {
         return;
       }
     }
   }
   RDFStatement statement1 = Implication.make(term1, term2, order);
   RDFStatement statement2 = Implication.make(term2, term1, TemporalValue.getReverse(order));
   RDFStatement statement3 = Equivalence.make(term1, term2, order);
   TruthValue value1 = judg1.getTruth();
   TruthValue value2 = judg2.getTruth();
   TruthValue truth1 = TruthFunctions.induction(value1, value2);
   TruthValue truth2 = TruthFunctions.induction(value2, value1);
   TruthValue truth3 = TruthFunctions.comparison(value1, value2);
   BudgetValue budget1 =
       BudgetFunctions.temporalIndCom(task1.getBudget(), task2.getBudget(), truth1);
   BudgetValue budget2 =
       BudgetFunctions.temporalIndCom(task1.getBudget(), task2.getBudget(), truth2);
   BudgetValue budget3 =
       BudgetFunctions.temporalIndCom(task1.getBudget(), task2.getBudget(), truth3);
   Memory.currentTense = new TemporalValue(0);
   Memory.doublePremiseTask(budget1, statement1, truth1);
   Memory.doublePremiseTask(budget2, statement2, truth2);
   Memory.doublePremiseTask(budget3, statement3, truth3);
 }