public AnswerHandler(FOLKnowledgeBase kb, Sentence aQuery, long maxQueryTime, FOLModelElimination folModelElimination) { finishTime = System.DateTime.UtcNow.Ticks + maxQueryTime; Sentence refutationQuery = new NotSentence(aQuery); // Want to use an answer literal to pull // query variables where necessary Literal answerLiteral = kb.createAnswerLiteral(refutationQuery); answerLiteralVariables = kb.collectAllVariables(answerLiteral .getAtomicSentence()); // Create the Set of Support based on the Query. if (answerLiteralVariables.Count > 0) { Sentence refutationQueryWithAnswer = new ConnectedSentence( Connectors.OR, refutationQuery, (Sentence)answerLiteral .getAtomicSentence().copy()); sos = folModelElimination.createChainsFromClauses(kb .convertToClauses(refutationQueryWithAnswer)); answerChain.addLiteral(answerLiteral); } else { sos = folModelElimination.createChainsFromClauses(kb .convertToClauses(refutationQuery)); } foreach (Chain s in sos) { s.setProofStep(new ProofStepGoal(s)); } }