svoid dm_gazelle_matchStep_condition(GazelleTree t, O... _) { if (t.rule() == null) ret; bool debug = boolPar debug(_); TextAndType next = get(t.rule().insWithType, t.mr.iCond); if (next == null || !eq(next.type, "condition")) ret; GazelleEvalContext subCtx = cast callF(requiredPar contextMaker(_)); subCtx.engine.dropRulesWhere(r -> neq(r.purpose, "condition to eval")); L l = dm_gazelle_reasonAboutChatInput_v2(null, next.text, paramsPlus(_, ctx := subCtx)); if (debug) { print("Sub-Tree for condition " + next.text + ":"); printIndentLines(l); } bool satisfied = false; for (GazelleTree tree : l) if (eqic(tree.line, "true")) break with satisfied = true; else if (eqic(tree.line, "false")) break; if (debug) print("satisfied=" + satisfied); if (!satisfied) ret; t.mr.iCond++; gazelle_addPredictionToTreeNode(t); t.mr.remainingConditions = dropFirst(t.mr.remainingConditions); t.mr.remainingConditionsWithType = dropFirst(t.mr.remainingConditionsWithType); }