static L ai_speculate_functions = ll( f ai_spec_webIsTriple, f ai_spec_singularPlural, f ai_spec_giveMe, f ai_spec_parseAnd, f ai_spec_tripelize, f ai_spec_parseArrowTriple, f ai_spec_webContents, f ai_spec_addQuestionsToChatLine, f ai_spec_simplify, f ai_spec_containsThePhrase, f ai_spec_executeBestSplit, f ai_spec_parseIf, f ai_spec_subclass, f ai_spec_isAQuestion, f ai_spec_substWebs, f ai_spec_apostrophS, f ai_spec_allWords, f ai_spec_numbered, f ai_spec_howMany, f ai_spec_analyzeLitList, f ai_spec_doYouThink, f ai_spec_unquote, f ai_spec_quoteUnlessQuoted, f ai_spec_checkFact, f ai_spec_switcheroo, f ai_spec_groupingPrefix, f ai_spec_moveToMiddle, f ai_spec_compareNumbers, f ai_spec_compareNumbers_triple, f ai_spec_answerYesNoTriple, f ai_spec_moveToMiddle_triple, f ai_spec_searchForAnswer, f ai_specTemp_length, f ai_spec_whatIsXInY, f ai_spec_whatIsTheLength, ); static S ai_speculate(fS word) { if (empty(word) || loading()) ret word; ai_withMaker('ai_speculate, r { ai_blob(word, false); if (isAdjective(word)) ai_postTriple(word, "is", "an adjective"); for (S f : ai_speculate_functions) ai_callSpeculationFunction(f, word); }); ai_speculateOnWeb(ai_getWebFromTerm(word)); ret word; }