sclass MultiSpaceReasoning1 { // spaces & names sS objectiveSpace = 'objective, computerSpace = 'computer, userSpace = 'user; S userName = "usery", computerName = "computery"; //new Set facts; new MultiMap rulesForSpace; Set rewriteInSpace(S space, Collection inputs) { ret applyWordTokRules_es(rulesForSpace.get(space), inputs); } Collection reason_inputToAnswer(Collection inputs) { // first, rewrite in user space Set outputs = rewriteInSpace(userSpace, inputs); pnlIndent("User space > ", outputs); // translate to objective space Collection outputs2 = ai_spaceToSpace_es(userSpace, objectiveSpace, outputs, +computerName, +userName); pnlIndent("Objective space > ", outputs2); // rewrite in objective space Collection outputs3 = rewriteInSpace(objectiveSpace, outputs2); pnlIndent("Objective space > ", outputs3); // translate to computer space Collection outputs4 = ai_spaceToSpace_es(objectiveSpace, computerSpace, outputs3, +computerName, +userName); pnlIndent("Bot space > ", outputs4); ret outputs4; } /*void addFacts(Iterable l) { addAll(facts, mapExt(l)); }*/ void addRules(MultiMap mm) { rulesForSpace.putAll(mm); } }