ss << "Missing end of file marker.";
} else if( ex->expecting == 0 ) {
ss << "Unexpected token: '" << tokenText((pANTLR3_COMMON_TOKEN)ex->token) << "'.";
+ if( std::string(tokenText((pANTLR3_COMMON_TOKEN)ex->token)) == std::string("IN") ) {
+ ss << " Did you mean: `IS_IN'?";
+ }
} else {
ss << "Missing " << tokenNames[ex->expecting] << ".";
}
IN_TOK = 'IN';
INT_TOK = 'INT';
LET_TOK = 'LET';
+ MEMBER_TOK = 'IS_IN';
NOT_TOK = 'NOT';
OR_TOK = 'OR';
REAL_TOK = 'REAL';
case LEQ_TOK:
case LT_TOK:
case GEQ_TOK:
- case GT_TOK: return 25;
+ case GT_TOK:
+ case MEMBER_TOK: return 25;
case EQUAL_TOK:
case DISEQUAL_TOK: return 26;
case NOT_TOK: return 27;
case GEQ_TOK: return kind::GEQ;
case LT_TOK: return kind::LT;
case LEQ_TOK: return kind::LEQ;
- case IN_TOK: return kind::MEMBER;
+ case MEMBER_TOK: return kind::MEMBER;
// arithmeticBinop
case PLUS_TOK: return kind::PLUS;
| GEQ_TOK
| LT_TOK
| LEQ_TOK
- | IN_TOK
+ | MEMBER_TOK
;
term[CVC4::Expr& f]
+% COMMAND-LINE: --incremental
% EXPECT: unsat
% EXPECT: unsat
% EXPECT: unsat
% EXPECT: unsat
% EXPECT: unsat
-% EXPECT: valid
+% EXPECT: invalid
OPTION "incremental" true;
OPTION "logic" "ALL_SUPPORTED";
SetInt : TYPE = SET OF INT;
ASSERT NOT(c = (a & b));
ASSERT c = (a - b);
ASSERT a <= b;
-ASSERT e IN c;
-ASSERT e IN a;
-ASSERT e IN (a & b);
+ASSERT e IS_IN c;
+ASSERT e IS_IN a;
+ASSERT e IS_IN (a & b);
CHECKSAT TRUE;
POP;
PUSH;
PUSH;
ASSERT x = y;
ASSERT e1 = e2;
-ASSERT e1 IN x;
-ASSERT NOT(e2 IN y);
+ASSERT e1 IS_IN x;
+ASSERT NOT(e2 IS_IN y);
CHECKSAT TRUE;
POP;
PUSH;
ASSERT x = y;
ASSERT e1 = e2;
-ASSERT e1 IN (x | z);
-ASSERT NOT(e2 IN (y | z));
+ASSERT e1 IS_IN (x | z);
+ASSERT NOT(e2 IS_IN (y | z));
CHECKSAT TRUE;
POP;
PUSH;
-ASSERT 5 IN ({1, 2, 3, 4} | {5});
-ASSERT 5 IN ({1, 2, 3, 4} | {} :: SET OF INT);
+ASSERT 5 IS_IN ({1, 2, 3, 4} | {5});
+ASSERT 5 IS_IN ({1, 2, 3, 4} | {} :: SET OF INT);
CHECKSAT TRUE;
POP;
-PUSH;
-QUERY LET v_0 = e1 IN z
-IN NOT (v_0 AND NOT v_0);
-POP;
+QUERY LET v_0 = e1 IS_IN z IN v_0 AND NOT v_0;