sortSymbol[CVC4::Type& t]
@declarations {
std::string name;
+ std::vector<CVC4::Type> args;
}
: sortName[name,CHECK_NONE]
{ t = PARSER_STATE->getSort(name); }
+ | LPAREN_TOK symbol[name,CHECK_NONE,SYM_SORT] sortList[args] RPAREN_TOK
+ {
+ if( name == "Array" ) {
+ if( args.size() != 2 ) {
+ PARSER_STATE->parseError("Illegal array type.");
+ }
+ t = EXPR_MANAGER->mkArrayType( args[0], args[1] );
+ } else {
+ PARSER_STATE->parseError("Unhandled parameterized type.");
+ }
+ }
;
/**
--- /dev/null
+(set-logic QF_AX)
+(set-info :status unsat)
+(declare-sort Index 0)
+(declare-sort Element 0)
+(declare-fun a () (Array Index Element))
+(declare-fun i1 () Index)
+(declare-fun i2 () Index)
+(assert (not (=> (= i1 i2) (= (select a i1) (select a i2)))))
+(check-sat)
+