/** * {<S <=> M>, <M <=> P>} |- <S <=> P> * * @param term1 Subject of the new task * @param term2 Predicate of the new task * @param belief The first premise * @param sentence The second premise * @param figure Locations of the shared term in premises */ static void resemblance(Term term1, Term term2, Judgment belief, Sentence sentence, int figure) { if (RDFStatement.invalidStatement(term1, term2)) { return; } RDFStatement st1 = (RDFStatement) belief.getContent(); RDFStatement st2 = (RDFStatement) sentence.getContent(); TruthValue truth = null; BudgetValue budget; Task task = Memory.currentTask; if (sentence instanceof Question) { budget = BudgetFunctions.backward(belief.getTruth()); } else { if (sentence instanceof Goal) { truth = TruthFunctions.desireStrong(sentence.getTruth(), belief.getTruth()); } else { truth = TruthFunctions.resemblance(belief.getTruth(), sentence.getTruth()); } budget = BudgetFunctions.forward(truth); } TemporalValue order1 = st1.getOrder(); TemporalValue order2 = st2.getOrder(); TemporalValue order = TemporalRules.syllogistic(order1, order2, figure); Term statement = RDFStatement.make(st1, term1, term2, order); Memory.doublePremiseTask(budget, statement, truth); }