sS ai_ruleOfThree_solver_4(S db, S input) { ret fixAOrAn(too_transformInput(input, too -> { // load rules too.addAll(lambdaMap ai_parseBasicLogicRule(tlft(db))); // turn words appearing in LHS and RHS into variables too.addTransformer(func(BasicLogicRule r) { Set suffixes = ai_suffixesFromSharedWordStarts(r); if (nempty(suffixes)) { print(+suffixes); // found suffixes. now transform all inputs & rules too.addTransformer(func(IInput i) { TransformedInput(ai_splitOffWordSuffixes(suffixes, i!)) }); too.addTransformer(func(BasicLogicRule r) { mapBasicLogicRule(r, s -> ai_splitOffWordSuffixes(suffixes, s)) }); } null; }); // turn words appearing in LHS and RHS into variables too.addTransformer(f, O> ai_sharedPhrasesIntoDollarVars); // match input with rules too_flexMatchRulesToTransformInput(too); })); }