static Collection ai_applyFactToFactRules() { L rules = map nlLogic_parseRule(splitAtEmptyLines(mL_raw("Fact-to-fact rules"))); final new NLLogicChecker_v3 c; c.matcher = ai_standardMatcher(); c.facts = mL("Random facts"); final new NLLogicChecker_v2.Matching m; final new LinkedHashSet outFacts; for (final IfThen rule : nlLogic_filterByRHSConstructs(rules, 'fact)) c.iterate(rule.in, m, r { //print("Got matches: " + sfu(m.matches)); Exp out = c.apply(rule.out, m); if (out cast Func) if (eq(out.name, "fact")) outFacts.add(nlLogic_text(out.arg)); }); appendToMechList("Derived facts", outFacts); ret outFacts; }