!7 p-exp { assertEmpty(checkRule([[ true ]], true)); L l = checkRule([[ false ]], false); assertEqualsVerbose(1, l(l)); l = checkRule( [[ true && eval(true) && eval(false) && true => o(ok) ]], false); // TODO } static L checkRule(S rule, final bool shouldSucceed) { NLLogicChecker_v2 c = nlLogicCheckerWithRules(rule); new NLLogicChecker_v2.Matching m; //m.verbose = true; final new Flag succeeded; final new L remaining; nlLogic_iterate_withOnFail(c, first(c.rules).in, m, r { if (!shouldSucceed) fail("Should not succeed"); succeeded.raise(); }, voidfunc(Exp e) { remaining.add(e); print("Remaining expression: " + e); }); if (shouldSucceed && !succeeded.isUp()) fail("Rule failed"); ret remaining; }