GCC Code Coverage Report
Directory: . Exec Total Coverage
File: build-coverage/src/parser/smt2/Smt2Parser.c Lines: 3302 4554 72.5 %
Date: 2021-05-22 Branches: 2537 5595 45.3 %

Line Exec Source
1
/** \file
2
 *  This C source file was generated by $ANTLR version 3.4
3
 *
4
 *     -  From the grammar source file : /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g
5
 *     -                            On : 2021-05-22 01:05:20
6
 *     -                for the parser : Smt2ParserParser
7
 *
8
 * Editing it, at least manually, is not wise.
9
 *
10
 * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws.
11
 *
12
 *
13
*/
14
// [The "BSD license"]
15
// Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC
16
// http://www.temporal-wave.com
17
// http://www.linkedin.com/in/jimidle
18
//
19
// All rights reserved.
20
//
21
// Redistribution and use in source and binary forms, with or without
22
// modification, are permitted provided that the following conditions
23
// are met:
24
// 1. Redistributions of source code must retain the above copyright
25
//    notice, this list of conditions and the following disclaimer.
26
// 2. Redistributions in binary form must reproduce the above copyright
27
//    notice, this list of conditions and the following disclaimer in the
28
//    documentation and/or other materials provided with the distribution.
29
// 3. The name of the author may not be used to endorse or promote products
30
//    derived from this software without specific prior written permission.
31
//
32
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
33
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
34
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
35
// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
36
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
37
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
38
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
39
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
40
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
41
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42
43
44
/* =============================================================================
45
 * This is what the grammar programmer asked us to put at the top of every file.
46
 */
47
48
/* ****************************************************************************
49
 * This file is part of the cvc5 project.
50
 *
51
 * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
52
 * in the top-level source directory and their institutional affiliations.
53
 * All rights reserved.  See the file COPYING in the top-level source
54
 * directory for licensing information.
55
 * ****************************************************************************
56
 */
57
58
/* End of Header action.
59
 * =============================================================================
60
 */
61
62
/* -----------------------------------------
63
 * Include the ANTLR3 generated header file.
64
 */
65
#include    "Smt2Parser.h"
66
67
68
#include <set>
69
#include <sstream>
70
#include <string>
71
#include <unordered_set>
72
#include <vector>
73
74
#include "api/cpp/cvc5.h"
75
#include "base/output.h"
76
#include "options/set_language.h"
77
#include "parser/antlr_input.h"
78
#include "parser/parser.h"
79
#include "parser/smt2/smt2.h"
80
#include "util/floatingpoint_size.h"
81
#include "util/hash.h"
82
83
using namespace cvc5;
84
using namespace cvc5::parser;
85
86
/* These need to be macros so they can refer to the PARSER macro, which
87
 * will be defined by ANTLR *after* this section. (If they were functions,
88
 * PARSER would be undefined.) */
89
#undef PARSER_STATE
90
#define PARSER_STATE ((Smt2*)PARSER->super)
91
#undef SOLVER
92
#define SOLVER PARSER_STATE->getSolver()
93
#undef SYM_MAN
94
#define SYM_MAN PARSER_STATE->getSymbolManager()
95
#undef MK_TERM
96
#define MK_TERM SOLVER->mkTerm
97
#define UNSUPPORTED PARSER_STATE->unimplementedFeature
98
99
100
/* ----------------------------------------- */
101
102
103
104
105
106
/* MACROS that hide the C interface implementations from the
107
 * generated code, which makes it a little more understandable to the human eye.
108
 * I am very much against using C pre-processor macros for function calls and bits
109
 * of code as you cannot see what is happening when single stepping in debuggers
110
 * and so on. The exception (in my book at least) is for generated code, where you are
111
 * not maintaining it, but may wish to read and understand it. If you single step it, you know that input()
112
 * hides some indirect calls, but is always referring to the input stream. This is
113
 * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig
114
 * the runtime interfaces without changing the generated code too often, without
115
 * confusing the reader of the generated output, who may not wish to know the gory
116
 * details of the interface inheritance.
117
 */
118
119
#define		CTX	ctx
120
121
/* Aids in accessing scopes for grammar programmers
122
 */
123
#undef	SCOPE_TYPE
124
#undef	SCOPE_STACK
125
#undef	SCOPE_TOP
126
#define	SCOPE_TYPE(scope)   pSmt2Parser_##scope##_SCOPE
127
#define SCOPE_STACK(scope)  pSmt2Parser_##scope##Stack
128
#define	SCOPE_TOP(scope)    ctx->pSmt2Parser_##scope##Top
129
#define	SCOPE_SIZE(scope)		ctx->pSmt2Parser_##scope##Stack_limit
130
#define SCOPE_INSTANCE(scope, i)	(ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i))
131
132
/* Macros for accessing things in the parser
133
 */
134
135
#undef	    PARSER
136
#undef	    RECOGNIZER
137
#undef	    HAVEPARSEDRULE
138
#undef		MEMOIZE
139
#undef	    INPUT
140
#undef	    STRSTREAM
141
#undef	    HASEXCEPTION
142
#undef	    EXCEPTION
143
#undef	    MATCHT
144
#undef	    MATCHANYT
145
#undef	    FOLLOWSTACK
146
#undef	    FOLLOWPUSH
147
#undef	    FOLLOWPOP
148
#undef	    PRECOVER
149
#undef	    PREPORTERROR
150
#undef	    LA
151
#undef	    LT
152
#undef	    CONSTRUCTEX
153
#undef	    CONSUME
154
#undef	    MARK
155
#undef	    REWIND
156
#undef	    REWINDLAST
157
#undef	    PERRORRECOVERY
158
#undef	    HASFAILED
159
#undef	    FAILEDFLAG
160
#undef	    RECOVERFROMMISMATCHEDSET
161
#undef	    RECOVERFROMMISMATCHEDELEMENT
162
#undef		INDEX
163
#undef      ADAPTOR
164
#undef		SEEK
165
#undef	    RULEMEMO
166
#undef		DBG
167
168
#define	    PARSER				ctx->pParser
169
#define	    RECOGNIZER				PARSER->rec
170
#define	    PSRSTATE				RECOGNIZER->state
171
#define	    HAVEPARSEDRULE(r)			RECOGNIZER->alreadyParsedRule(RECOGNIZER, r)
172
#define	    MEMOIZE(ri,si)			RECOGNIZER->memoize(RECOGNIZER, ri, si)
173
#define	    INPUT				PARSER->tstream
174
#define	    STRSTREAM				INPUT
175
#define	    ISTREAM				INPUT->istream
176
#define	    INDEX()				ISTREAM->index(INPUT->istream)
177
#define	    HASEXCEPTION()			(PSRSTATE->error == ANTLR3_TRUE)
178
#define	    EXCEPTION				PSRSTATE->exception
179
#define	    MATCHT(t, fs)			RECOGNIZER->match(RECOGNIZER, t, fs)
180
#define	    MATCHANYT()				RECOGNIZER->matchAny(RECOGNIZER)
181
#define	    FOLLOWSTACK				PSRSTATE->following
182
#ifdef  SKIP_FOLLOW_SETS
183
#define	    FOLLOWPUSH(x)
184
#define	    FOLLOWPOP()
185
#else
186
#define	    FOLLOWPUSH(x)			FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL)
187
#define	    FOLLOWPOP()				FOLLOWSTACK->pop(FOLLOWSTACK)
188
#endif
189
#define	    PRECOVER()				RECOGNIZER->recover(RECOGNIZER)
190
#define	    PREPORTERROR()			RECOGNIZER->reportError(RECOGNIZER)
191
#define	    LA(n)				INPUT->istream->_LA(ISTREAM, n)
192
#define	    LT(n)				INPUT->_LT(INPUT, n)
193
#define	    CONSTRUCTEX()			RECOGNIZER->exConstruct(RECOGNIZER)
194
#define	    CONSUME()				ISTREAM->consume(ISTREAM)
195
#define	    MARK()				ISTREAM->mark(ISTREAM)
196
#define	    REWIND(m)				ISTREAM->rewind(ISTREAM, m)
197
#define	    REWINDLAST()			ISTREAM->rewindLast(ISTREAM)
198
#define	    SEEK(n)				ISTREAM->seek(ISTREAM, n)
199
#define	    PERRORRECOVERY			PSRSTATE->errorRecovery
200
#define	    FAILEDFLAG				PSRSTATE->failed
201
#define	    HASFAILED()				(FAILEDFLAG == ANTLR3_TRUE)
202
#define	    BACKTRACKING			PSRSTATE->backtracking
203
#define	    RECOVERFROMMISMATCHEDSET(s)		RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s)
204
#define	    RECOVERFROMMISMATCHEDELEMENT(e)	RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s)
205
#define     ADAPTOR                         ctx->adaptor
206
#define		RULEMEMO						PSRSTATE->ruleMemo
207
#define		DBG								RECOGNIZER->debugger
208
209
210
#define		TOKTEXT(tok, txt)				tok, (pANTLR3_UINT8)txt
211
212
/* The 4 tokens defined below may well clash with your own #defines or token types. If so
213
 * then for the present you must use different names for your defines as these are hard coded
214
 * in the code generator. It would be better not to use such names internally, and maybe
215
 * we can change this in a forthcoming release. I deliberately do not #undef these
216
 * here as this will at least give you a redefined error somewhere if they clash.
217
 */
218
#define	    UP	    ANTLR3_TOKEN_UP
219
#define	    DOWN    ANTLR3_TOKEN_DOWN
220
#define	    EOR	    ANTLR3_TOKEN_EOR
221
#define	    INVALID ANTLR3_TOKEN_INVALID
222
223
224
/* =============================================================================
225
 * Functions to create and destroy scopes. First come the rule scopes, followed
226
 * by the global declared scopes.
227
 */
228
229
230
231
/* ============================================================================= */
232
233
/* =============================================================================
234
 * Start of recognizer
235
 */
236
237
238
/** \brief Table of all token names in symbolic order, mainly used for
239
 *         error reporting.
240
 */
241
pANTLR3_UINT8   Smt2ParserTokenNames[105+4]
242
     = {
243
        (pANTLR3_UINT8) "<invalid>",       /* String to print to indicate an invalid token */
244
        (pANTLR3_UINT8) "<EOR>",
245
        (pANTLR3_UINT8) "<DOWN>",
246
        (pANTLR3_UINT8) "<UP>",
247
        (pANTLR3_UINT8) "ALPHA",
248
        (pANTLR3_UINT8) "ASSERT_TOK",
249
        (pANTLR3_UINT8) "AS_TOK",
250
        (pANTLR3_UINT8) "ATTRIBUTE_INST_ADD_TO_POOL_TOK",
251
        (pANTLR3_UINT8) "ATTRIBUTE_INST_LEVEL",
252
        (pANTLR3_UINT8) "ATTRIBUTE_NAMED_TOK",
253
        (pANTLR3_UINT8) "ATTRIBUTE_NO_PATTERN_TOK",
254
        (pANTLR3_UINT8) "ATTRIBUTE_PATTERN_TOK",
255
        (pANTLR3_UINT8) "ATTRIBUTE_POOL_TOK",
256
        (pANTLR3_UINT8) "ATTRIBUTE_QUANTIFIER_ID_TOK",
257
        (pANTLR3_UINT8) "ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK",
258
        (pANTLR3_UINT8) "ATTRIBUTE_TOK",
259
        (pANTLR3_UINT8) "BINARY_LITERAL",
260
        (pANTLR3_UINT8) "BLOCK_MODEL_TOK",
261
        (pANTLR3_UINT8) "BLOCK_MODEL_VALUES_TOK",
262
        (pANTLR3_UINT8) "CHAR_TOK",
263
        (pANTLR3_UINT8) "CHECK_SAT_ASSUMING_TOK",
264
        (pANTLR3_UINT8) "CHECK_SAT_TOK",
265
        (pANTLR3_UINT8) "CHECK_SYNTH_TOK",
266
        (pANTLR3_UINT8) "COMMENT",
267
        (pANTLR3_UINT8) "COMPREHENSION_TOK",
268
        (pANTLR3_UINT8) "CONSTRAINT_TOK",
269
        (pANTLR3_UINT8) "CONST_TOK",
270
        (pANTLR3_UINT8) "DECIMAL_LITERAL",
271
        (pANTLR3_UINT8) "DECLARE_CODATATYPES_2_5_TOK",
272
        (pANTLR3_UINT8) "DECLARE_CODATATYPES_TOK",
273
        (pANTLR3_UINT8) "DECLARE_CODATATYPE_TOK",
274
        (pANTLR3_UINT8) "DECLARE_CONST_TOK",
275
        (pANTLR3_UINT8) "DECLARE_DATATYPES_2_5_TOK",
276
        (pANTLR3_UINT8) "DECLARE_DATATYPES_TOK",
277
        (pANTLR3_UINT8) "DECLARE_DATATYPE_TOK",
278
        (pANTLR3_UINT8) "DECLARE_FUNS_TOK",
279
        (pANTLR3_UINT8) "DECLARE_FUN_TOK",
280
        (pANTLR3_UINT8) "DECLARE_HEAP",
281
        (pANTLR3_UINT8) "DECLARE_POOL",
282
        (pANTLR3_UINT8) "DECLARE_PREDS_TOK",
283
        (pANTLR3_UINT8) "DECLARE_SORTS_TOK",
284
        (pANTLR3_UINT8) "DECLARE_SORT_TOK",
285
        (pANTLR3_UINT8) "DECLARE_VAR_TOK",
286
        (pANTLR3_UINT8) "DEFINE_CONST_TOK",
287
        (pANTLR3_UINT8) "DEFINE_FUNS_REC_TOK",
288
        (pANTLR3_UINT8) "DEFINE_FUN_REC_TOK",
289
        (pANTLR3_UINT8) "DEFINE_FUN_TOK",
290
        (pANTLR3_UINT8) "DEFINE_SORT_TOK",
291
        (pANTLR3_UINT8) "DEFINE_TOK",
292
        (pANTLR3_UINT8) "DIGIT",
293
        (pANTLR3_UINT8) "ECHO_TOK",
294
        (pANTLR3_UINT8) "EMP_TOK",
295
        (pANTLR3_UINT8) "EXISTS_TOK",
296
        (pANTLR3_UINT8) "EXIT_TOK",
297
        (pANTLR3_UINT8) "FORALL_TOK",
298
        (pANTLR3_UINT8) "GET_ABDUCT_TOK",
299
        (pANTLR3_UINT8) "GET_ASSERTIONS_TOK",
300
        (pANTLR3_UINT8) "GET_ASSIGNMENT_TOK",
301
        (pANTLR3_UINT8) "GET_INFO_TOK",
302
        (pANTLR3_UINT8) "GET_INTERPOL_TOK",
303
        (pANTLR3_UINT8) "GET_MODEL_TOK",
304
        (pANTLR3_UINT8) "GET_OPTION_TOK",
305
        (pANTLR3_UINT8) "GET_PROOF_TOK",
306
        (pANTLR3_UINT8) "GET_QE_DISJUNCT_TOK",
307
        (pANTLR3_UINT8) "GET_QE_TOK",
308
        (pANTLR3_UINT8) "GET_UNSAT_ASSUMPTIONS_TOK",
309
        (pANTLR3_UINT8) "GET_UNSAT_CORE_TOK",
310
        (pANTLR3_UINT8) "GET_VALUE_TOK",
311
        (pANTLR3_UINT8) "HEX_DIGIT",
312
        (pANTLR3_UINT8) "HEX_LITERAL",
313
        (pANTLR3_UINT8) "HO_ARROW_TOK",
314
        (pANTLR3_UINT8) "HO_LAMBDA_TOK",
315
        (pANTLR3_UINT8) "INCLUDE_TOK",
316
        (pANTLR3_UINT8) "INDEX_TOK",
317
        (pANTLR3_UINT8) "INTEGER_LITERAL",
318
        (pANTLR3_UINT8) "INV_CONSTRAINT_TOK",
319
        (pANTLR3_UINT8) "KEYWORD",
320
        (pANTLR3_UINT8) "LET_TOK",
321
        (pANTLR3_UINT8) "LPAREN_TOK",
322
        (pANTLR3_UINT8) "MATCH_TOK",
323
        (pANTLR3_UINT8) "NUMERAL",
324
        (pANTLR3_UINT8) "PAR_TOK",
325
        (pANTLR3_UINT8) "POP_TOK",
326
        (pANTLR3_UINT8) "PUSH_TOK",
327
        (pANTLR3_UINT8) "QUOTED_SYMBOL",
328
        (pANTLR3_UINT8) "RESET_ASSERTIONS_TOK",
329
        (pANTLR3_UINT8) "RESET_TOK",
330
        (pANTLR3_UINT8) "RPAREN_TOK",
331
        (pANTLR3_UINT8) "SET_INFO_TOK",
332
        (pANTLR3_UINT8) "SET_LOGIC_TOK",
333
        (pANTLR3_UINT8) "SET_OPTIONS_TOK",
334
        (pANTLR3_UINT8) "SET_OPTION_TOK",
335
        (pANTLR3_UINT8) "SIMPLE_SYMBOL",
336
        (pANTLR3_UINT8) "SIMPLIFY_TOK",
337
        (pANTLR3_UINT8) "STRING_LITERAL",
338
        (pANTLR3_UINT8) "SYGUS_CONSTANT_TOK",
339
        (pANTLR3_UINT8) "SYGUS_VARIABLE_TOK",
340
        (pANTLR3_UINT8) "SYMBOL_CHAR",
341
        (pANTLR3_UINT8) "SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE",
342
        (pANTLR3_UINT8) "SYNTH_FUN_TOK",
343
        (pANTLR3_UINT8) "SYNTH_INV_TOK",
344
        (pANTLR3_UINT8) "TESTER_TOK",
345
        (pANTLR3_UINT8) "TUPLE_CONST_TOK",
346
        (pANTLR3_UINT8) "TUPLE_PROJECT_TOK",
347
        (pANTLR3_UINT8) "TUPLE_SEL_TOK",
348
        (pANTLR3_UINT8) "UNTERMINATED_QUOTED_SYMBOL",
349
        (pANTLR3_UINT8) "UPDATE_TOK",
350
        (pANTLR3_UINT8) "WHITESPACE",
351
        (pANTLR3_UINT8) "'\\\\'"
352
       };
353
354
355
356
// Forward declare the locally static matching functions we have generated.
357
//
358
static
359
 cvc5::api::Term
360
	parseExpr    (pSmt2Parser ctx);
361
static
362
 cvc5::Command*
363
	parseCommand    (pSmt2Parser ctx);
364
static
365
 cvc5::Command*
366
	parseSygus    (pSmt2Parser ctx);
367
static
368
 void
369
	command    (pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd);
370
static
371
 std::unique_ptr<cvc5::Command>
372
	sygusCommand    (pSmt2Parser ctx);
373
static
374
 void
375
	sygusGrammar    (pSmt2Parser ctx, cvc5::api::Grammar*& ret, const std::vector<cvc5::api::Term>& sygusVars, const std::string& fun);
376
static
377
 void
378
	setInfoInternal    (pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd);
379
static
380
 void
381
	setOptionInternal    (pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd);
382
static
383
 void
384
	smt25Command    (pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd);
385
static
386
 void
387
	extendedCommand    (pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd);
388
static
389
 void
390
	datatypeDefCommand    (pSmt2Parser ctx, bool isCo, std::unique_ptr<cvc5::Command>* cmd);
391
static
392
 void
393
	datatypesDefCommand    (pSmt2Parser ctx, bool isCo, std::unique_ptr<cvc5::Command>* cmd);
394
static
395
 void
396
	datatypesDef    (pSmt2Parser ctx, bool isCo, const std::vector<std::string>& dnames, const std::vector<int>& arities, std::unique_ptr<cvc5::Command>* cmd);
397
static
398
 void
399
	simpleSymbolicExprNoKeyword    (pSmt2Parser ctx, std::string& s);
400
static
401
 void
402
	keyword    (pSmt2Parser ctx, std::string& s);
403
static
404
 void
405
	simpleSymbolicExpr    (pSmt2Parser ctx, std::string& s);
406
static
407
 void
408
	symbolicExpr    (pSmt2Parser ctx, cvc5::api::Term& sexpr);
409
static
410
 void
411
	term    (pSmt2Parser ctx, cvc5::api::Term& expr, cvc5::api::Term& expr2);
412
static
413
 void
414
	termNonVariable    (pSmt2Parser ctx, cvc5::api::Term& expr, cvc5::api::Term& expr2);
415
static
416
 void
417
	qualIdentifier    (pSmt2Parser ctx, cvc5::ParseOp& p);
418
static
419
 void
420
	identifier    (pSmt2Parser ctx, cvc5::ParseOp& p);
421
static
422
 void
423
	termAtomic    (pSmt2Parser ctx, cvc5::api::Term& atomTerm);
424
static
425
 void
426
	attribute    (pSmt2Parser ctx, cvc5::api::Term& expr, cvc5::api::Term& retExpr);
427
static
428
 void
429
	termList    (pSmt2Parser ctx, std::vector<cvc5::api::Term>& formulas, cvc5::api::Term& expr);
430
static
431
 void
432
	str    (pSmt2Parser ctx, std::string& s, bool fsmtlib);
433
static
434
 void
435
	quantOp    (pSmt2Parser ctx, cvc5::api::Kind& kind);
436
static
437
 void
438
	functionName    (pSmt2Parser ctx, std::string& name, cvc5::parser::DeclarationCheck check);
439
static
440
 void
441
	sortList    (pSmt2Parser ctx, std::vector<cvc5::api::Sort>& sorts);
442
static
443
 void
444
	nonemptySortList    (pSmt2Parser ctx, std::vector<cvc5::api::Sort>& sorts);
445
static
446
 void
447
	sortedVarList    (pSmt2Parser ctx, std::vector<std::pair<std::string, cvc5::api::Sort> >& sortedVars);
448
static
449
 void
450
	boundVarList    (pSmt2Parser ctx, cvc5::api::Term& expr);
451
static
452
 void
453
	sortName    (pSmt2Parser ctx, std::string& name, cvc5::parser::DeclarationCheck check);
454
static
455
 void
456
	sortSymbol    (pSmt2Parser ctx, cvc5::api::Sort& t, cvc5::parser::DeclarationCheck check);
457
static
458
 void
459
	symbolList    (pSmt2Parser ctx, std::vector<std::string>& names, cvc5::parser::DeclarationCheck check, cvc5::parser::SymbolType type);
460
static
461
 void
462
	symbol    (pSmt2Parser ctx, std::string& id, cvc5::parser::DeclarationCheck check, cvc5::parser::SymbolType type);
463
static
464
 void
465
	nonemptyNumeralList    (pSmt2Parser ctx, std::vector<uint64_t>& numerals);
466
static
467
 void
468
	datatypeDef    (pSmt2Parser ctx, bool isCo, std::vector<cvc5::api::DatatypeDecl>& datatypes, std::vector< cvc5::api::Sort >& params);
469
static
470
 void
471
	constructorDef    (pSmt2Parser ctx, cvc5::api::DatatypeDecl& type);
472
static
473
 void
474
	selector    (pSmt2Parser ctx, cvc5::api::DatatypeConstructorDecl& ctor);
475
static void	Smt2ParserFree(pSmt2Parser ctx);
476
static void     Smt2ParserReset (pSmt2Parser ctx);
477
478
/* For use in tree output where we are accumulating rule labels via label += ruleRef
479
 * we need a function that knows how to free a return scope when the list is destroyed.
480
 * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro.
481
 */
482
static	void ANTLR3_CDECL freeScope(void * scope)
483
{
484
    ANTLR3_FREE(scope);
485
}
486
487
/** \brief Name of the grammar file that generated this code
488
 */
489
static const char fileName[] = "/barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g";
490
491
/** \brief Return the name of the grammar file that generated this code.
492
 */
493
static const char * getGrammarFileName()
494
{
495
	return fileName;
496
}
497
/** \brief Create a new Smt2Parser parser and return a context for it.
498
 *
499
 * \param[in] instream Pointer to an input stream interface.
500
 *
501
 * \return Pointer to new parser context upon success.
502
 */
503
ANTLR3_API pSmt2Parser
504
5178
Smt2ParserNew   (pANTLR3_COMMON_TOKEN_STREAM instream)
505
{
506
	// See if we can create a new parser with the standard constructor
507
	//
508
5178
	return Smt2ParserNewSSD(instream, NULL);
509
}
510
511
/** \brief Create a new Smt2Parser parser and return a context for it.
512
 *
513
 * \param[in] instream Pointer to an input stream interface.
514
 *
515
 * \return Pointer to new parser context upon success.
516
 */
517
ANTLR3_API pSmt2Parser
518
5178
Smt2ParserNewSSD   (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state)
519
{
520
    pSmt2Parser ctx;	    /* Context structure we will build and return   */
521
522
5178
    ctx	= (pSmt2Parser) ANTLR3_CALLOC(1, sizeof(Smt2Parser));
523
524
5178
    if	(ctx == NULL)
525
    {
526
		// Failed to allocate memory for parser context
527
		//
528
        return  NULL;
529
    }
530
531
    /* -------------------------------------------------------------------
532
     * Memory for basic structure is allocated, now to fill in
533
     * the base ANTLR3 structures. We initialize the function pointers
534
     * for the standard ANTLR3 parser function set, but upon return
535
     * from here, the programmer may set the pointers to provide custom
536
     * implementations of each function.
537
     *
538
     * We don't use the macros defined in Smt2Parser.h here, in order that you can get a sense
539
     * of what goes where.
540
     */
541
542
    /* Create a base parser/recognizer, using the supplied token stream
543
     */
544
5178
    ctx->pParser	    = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state);
545
    /* Install the implementation of our Smt2Parser interface
546
     */
547
5178
    ctx->parseExpr	= parseExpr;
548
5178
    ctx->parseCommand	= parseCommand;
549
5178
    ctx->parseSygus	= parseSygus;
550
5178
    ctx->command	= command;
551
5178
    ctx->sygusCommand	= sygusCommand;
552
5178
    ctx->sygusGrammar	= sygusGrammar;
553
5178
    ctx->setInfoInternal	= setInfoInternal;
554
5178
    ctx->setOptionInternal	= setOptionInternal;
555
5178
    ctx->smt25Command	= smt25Command;
556
5178
    ctx->extendedCommand	= extendedCommand;
557
5178
    ctx->datatypeDefCommand	= datatypeDefCommand;
558
5178
    ctx->datatypesDefCommand	= datatypesDefCommand;
559
5178
    ctx->datatypesDef	= datatypesDef;
560
5178
    ctx->simpleSymbolicExprNoKeyword	= simpleSymbolicExprNoKeyword;
561
5178
    ctx->keyword	= keyword;
562
5178
    ctx->simpleSymbolicExpr	= simpleSymbolicExpr;
563
5178
    ctx->symbolicExpr	= symbolicExpr;
564
5178
    ctx->term	= term;
565
5178
    ctx->termNonVariable	= termNonVariable;
566
5178
    ctx->qualIdentifier	= qualIdentifier;
567
5178
    ctx->identifier	= identifier;
568
5178
    ctx->termAtomic	= termAtomic;
569
5178
    ctx->attribute	= attribute;
570
5178
    ctx->termList	= termList;
571
5178
    ctx->str	= str;
572
5178
    ctx->quantOp	= quantOp;
573
5178
    ctx->functionName	= functionName;
574
5178
    ctx->sortList	= sortList;
575
5178
    ctx->nonemptySortList	= nonemptySortList;
576
5178
    ctx->sortedVarList	= sortedVarList;
577
5178
    ctx->boundVarList	= boundVarList;
578
5178
    ctx->sortName	= sortName;
579
5178
    ctx->sortSymbol	= sortSymbol;
580
5178
    ctx->symbolList	= symbolList;
581
5178
    ctx->symbol	= symbol;
582
5178
    ctx->nonemptyNumeralList	= nonemptyNumeralList;
583
5178
    ctx->datatypeDef	= datatypeDef;
584
5178
    ctx->constructorDef	= constructorDef;
585
5178
    ctx->selector	= selector;
586
5178
    ctx->free			= Smt2ParserFree;
587
5178
    ctx->reset			= Smt2ParserReset;
588
5178
    ctx->getGrammarFileName	= getGrammarFileName;
589
590
    /* Install the scope pushing methods.
591
     */
592
593
    /* Install the token table
594
     */
595
5178
    PSRSTATE->tokenNames   = Smt2ParserTokenNames;
596
597
598
    /* Return the newly built parser to the caller
599
     */
600
5178
    return  ctx;
601
}
602
603
static void
604
Smt2ParserReset (pSmt2Parser ctx)
605
{
606
    RECOGNIZER->reset(RECOGNIZER);
607
}
608
609
/** Free the parser resources
610
 */
611
 static void
612
5178
 Smt2ParserFree(pSmt2Parser ctx)
613
 {
614
    /* Free any scope memory
615
     */
616
617
	// Free this parser
618
	//
619
5178
    ctx->pParser->free(ctx->pParser);
620
621
622
5178
    ANTLR3_FREE(ctx);
623
624
    /* Everything is released, so we can return
625
     */
626
5178
    return;
627
 }
628
629
/** Return token names used by this
630
parser
631
632
 *
633
 * The returned pointer is used as an index into the token names table (using the token
634
 * number as the index).
635
 *
636
 * \return Pointer to first char * in the table.
637
 */
638
static pANTLR3_UINT8    *getTokenNames()
639
{
640
        return Smt2ParserTokenNames;
641
}
642
643
644
/* Declare the bitsets
645
 */
646
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_parseExpr117  */
647
static	ANTLR3_BITWORD FOLLOW_term_in_parseExpr117_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
648
static  ANTLR3_BITSET_LIST FOLLOW_term_in_parseExpr117	= { FOLLOW_term_in_parseExpr117_bits, 1	};
649
/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseExpr124  */
650
static	ANTLR3_BITWORD FOLLOW_EOF_in_parseExpr124_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
651
static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseExpr124	= { FOLLOW_EOF_in_parseExpr124_bits, 1	};
652
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand153  */
653
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand153_bits[]	= { ANTLR3_UINT64_LIT(0xFFA5FBFEE0360020), ANTLR3_UINT64_LIT(0x000000003B6C000F) };
654
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand153	= { FOLLOW_LPAREN_TOK_in_parseCommand153_bits, 2	};
655
/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_parseCommand155  */
656
static	ANTLR3_BITWORD FOLLOW_command_in_parseCommand155_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
657
static  ANTLR3_BITSET_LIST FOLLOW_command_in_parseCommand155	= { FOLLOW_command_in_parseCommand155_bits, 2	};
658
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand158  */
659
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand158_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
660
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand158	= { FOLLOW_RPAREN_TOK_in_parseCommand158_bits, 1	};
661
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseCommand171  */
662
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseCommand171_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000100) };
663
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseCommand171	= { FOLLOW_LPAREN_TOK_in_parseCommand171_bits, 2	};
664
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INCLUDE_TOK_in_parseCommand173  */
665
static	ANTLR3_BITWORD FOLLOW_INCLUDE_TOK_in_parseCommand173_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000040000000) };
666
static  ANTLR3_BITSET_LIST FOLLOW_INCLUDE_TOK_in_parseCommand173	= { FOLLOW_INCLUDE_TOK_in_parseCommand173_bits, 2	};
667
/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_parseCommand175  */
668
static	ANTLR3_BITWORD FOLLOW_str_in_parseCommand175_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
669
static  ANTLR3_BITSET_LIST FOLLOW_str_in_parseCommand175	= { FOLLOW_str_in_parseCommand175_bits, 2	};
670
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseCommand178  */
671
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseCommand178_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
672
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseCommand178	= { FOLLOW_RPAREN_TOK_in_parseCommand178_bits, 1	};
673
/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseCommand191  */
674
static	ANTLR3_BITWORD FOLLOW_EOF_in_parseCommand191_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
675
static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseCommand191	= { FOLLOW_EOF_in_parseCommand191_bits, 1	};
676
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_parseSygus220  */
677
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_parseSygus220_bits[]	= { ANTLR3_UINT64_LIT(0xFFA5FFFEE2760020), ANTLR3_UINT64_LIT(0x000000183B6C080F) };
678
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_parseSygus220	= { FOLLOW_LPAREN_TOK_in_parseSygus220_bits, 2	};
679
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusCommand_in_parseSygus224  */
680
static	ANTLR3_BITWORD FOLLOW_sygusCommand_in_parseSygus224_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
681
static  ANTLR3_BITSET_LIST FOLLOW_sygusCommand_in_parseSygus224	= { FOLLOW_sygusCommand_in_parseSygus224_bits, 2	};
682
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_parseSygus226  */
683
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_parseSygus226_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
684
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_parseSygus226	= { FOLLOW_RPAREN_TOK_in_parseSygus226_bits, 1	};
685
/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_parseSygus232  */
686
static	ANTLR3_BITWORD FOLLOW_EOF_in_parseSygus232_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
687
static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_parseSygus232	= { FOLLOW_EOF_in_parseSygus232_bits, 1	};
688
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_LOGIC_TOK_in_command260  */
689
static	ANTLR3_BITWORD FOLLOW_SET_LOGIC_TOK_in_command260_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
690
static  ANTLR3_BITSET_LIST FOLLOW_SET_LOGIC_TOK_in_command260	= { FOLLOW_SET_LOGIC_TOK_in_command260_bits, 2	};
691
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command262  */
692
static	ANTLR3_BITWORD FOLLOW_symbol_in_command262_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
693
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command262	= { FOLLOW_symbol_in_command262_bits, 1	};
694
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_INFO_TOK_in_command281  */
695
static	ANTLR3_BITWORD FOLLOW_SET_INFO_TOK_in_command281_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000001000) };
696
static  ANTLR3_BITSET_LIST FOLLOW_SET_INFO_TOK_in_command281	= { FOLLOW_SET_INFO_TOK_in_command281_bits, 2	};
697
/** Bitset defining follow set for error recovery in rule state: FOLLOW_setInfoInternal_in_command283  */
698
static	ANTLR3_BITWORD FOLLOW_setInfoInternal_in_command283_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
699
static  ANTLR3_BITSET_LIST FOLLOW_setInfoInternal_in_command283	= { FOLLOW_setInfoInternal_in_command283_bits, 1	};
700
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_INFO_TOK_in_command296  */
701
static	ANTLR3_BITWORD FOLLOW_GET_INFO_TOK_in_command296_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000001000) };
702
static  ANTLR3_BITSET_LIST FOLLOW_GET_INFO_TOK_in_command296	= { FOLLOW_GET_INFO_TOK_in_command296_bits, 2	};
703
/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_command298  */
704
static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_command298_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
705
static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_command298	= { FOLLOW_KEYWORD_in_command298_bits, 1	};
706
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SET_OPTION_TOK_in_command316  */
707
static	ANTLR3_BITWORD FOLLOW_SET_OPTION_TOK_in_command316_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000001000) };
708
static  ANTLR3_BITSET_LIST FOLLOW_SET_OPTION_TOK_in_command316	= { FOLLOW_SET_OPTION_TOK_in_command316_bits, 2	};
709
/** Bitset defining follow set for error recovery in rule state: FOLLOW_setOptionInternal_in_command318  */
710
static	ANTLR3_BITWORD FOLLOW_setOptionInternal_in_command318_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
711
static  ANTLR3_BITSET_LIST FOLLOW_setOptionInternal_in_command318	= { FOLLOW_setOptionInternal_in_command318_bits, 1	};
712
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_OPTION_TOK_in_command331  */
713
static	ANTLR3_BITWORD FOLLOW_GET_OPTION_TOK_in_command331_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000001000) };
714
static  ANTLR3_BITSET_LIST FOLLOW_GET_OPTION_TOK_in_command331	= { FOLLOW_GET_OPTION_TOK_in_command331_bits, 2	};
715
/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_command333  */
716
static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_command333_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
717
static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_command333	= { FOLLOW_KEYWORD_in_command333_bits, 1	};
718
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_SORT_TOK_in_command351  */
719
static	ANTLR3_BITWORD FOLLOW_DECLARE_SORT_TOK_in_command351_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
720
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_SORT_TOK_in_command351	= { FOLLOW_DECLARE_SORT_TOK_in_command351_bits, 2	};
721
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command363  */
722
static	ANTLR3_BITWORD FOLLOW_symbol_in_command363_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000400) };
723
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command363	= { FOLLOW_symbol_in_command363_bits, 2	};
724
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command378  */
725
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command378_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
726
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_command378	= { FOLLOW_INTEGER_LITERAL_in_command378_bits, 1	};
727
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_SORT_TOK_in_command396  */
728
static	ANTLR3_BITWORD FOLLOW_DEFINE_SORT_TOK_in_command396_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
729
static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_SORT_TOK_in_command396	= { FOLLOW_DEFINE_SORT_TOK_in_command396_bits, 2	};
730
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command404  */
731
static	ANTLR3_BITWORD FOLLOW_symbol_in_command404_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
732
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command404	= { FOLLOW_symbol_in_command404_bits, 2	};
733
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command417  */
734
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command417_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010900000) };
735
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command417	= { FOLLOW_LPAREN_TOK_in_command417_bits, 2	};
736
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolList_in_command419  */
737
static	ANTLR3_BITWORD FOLLOW_symbolList_in_command419_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
738
static  ANTLR3_BITSET_LIST FOLLOW_symbolList_in_command419	= { FOLLOW_symbolList_in_command419_bits, 2	};
739
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command422  */
740
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command422_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
741
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command422	= { FOLLOW_RPAREN_TOK_in_command422_bits, 2	};
742
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command434  */
743
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command434_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
744
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command434	= { FOLLOW_sortSymbol_in_command434_bits, 1	};
745
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_FUN_TOK_in_command453  */
746
static	ANTLR3_BITWORD FOLLOW_DECLARE_FUN_TOK_in_command453_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
747
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_FUN_TOK_in_command453	= { FOLLOW_DECLARE_FUN_TOK_in_command453_bits, 2	};
748
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command461  */
749
static	ANTLR3_BITWORD FOLLOW_symbol_in_command461_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
750
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command461	= { FOLLOW_symbol_in_command461_bits, 2	};
751
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command474  */
752
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command474_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010904000) };
753
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command474	= { FOLLOW_LPAREN_TOK_in_command474_bits, 2	};
754
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_command476  */
755
static	ANTLR3_BITWORD FOLLOW_sortList_in_command476_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
756
static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_command476	= { FOLLOW_sortList_in_command476_bits, 2	};
757
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command479  */
758
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command479_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
759
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command479	= { FOLLOW_RPAREN_TOK_in_command479_bits, 2	};
760
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command485  */
761
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command485_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
762
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command485	= { FOLLOW_sortSymbol_in_command485_bits, 1	};
763
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUN_TOK_in_command504  */
764
static	ANTLR3_BITWORD FOLLOW_DEFINE_FUN_TOK_in_command504_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
765
static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUN_TOK_in_command504	= { FOLLOW_DEFINE_FUN_TOK_in_command504_bits, 2	};
766
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_command512  */
767
static	ANTLR3_BITWORD FOLLOW_symbol_in_command512_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
768
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_command512	= { FOLLOW_symbol_in_command512_bits, 2	};
769
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command525  */
770
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command525_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
771
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command525	= { FOLLOW_LPAREN_TOK_in_command525_bits, 2	};
772
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_command527  */
773
static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_command527_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
774
static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_command527	= { FOLLOW_sortedVarList_in_command527_bits, 2	};
775
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command530  */
776
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command530_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
777
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command530	= { FOLLOW_RPAREN_TOK_in_command530_bits, 2	};
778
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_command536  */
779
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_command536_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
780
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_command536	= { FOLLOW_sortSymbol_in_command536_bits, 2	};
781
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command549  */
782
static	ANTLR3_BITWORD FOLLOW_term_in_command549_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
783
static  ANTLR3_BITSET_LIST FOLLOW_term_in_command549	= { FOLLOW_term_in_command549_bits, 1	};
784
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_DATATYPE_TOK_in_command562  */
785
static	ANTLR3_BITWORD FOLLOW_DECLARE_DATATYPE_TOK_in_command562_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
786
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_DATATYPE_TOK_in_command562	= { FOLLOW_DECLARE_DATATYPE_TOK_in_command562_bits, 2	};
787
/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDefCommand_in_command564  */
788
static	ANTLR3_BITWORD FOLLOW_datatypeDefCommand_in_command564_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
789
static  ANTLR3_BITSET_LIST FOLLOW_datatypeDefCommand_in_command564	= { FOLLOW_datatypeDefCommand_in_command564_bits, 1	};
790
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_DATATYPES_TOK_in_command571  */
791
static	ANTLR3_BITWORD FOLLOW_DECLARE_DATATYPES_TOK_in_command571_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
792
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_DATATYPES_TOK_in_command571	= { FOLLOW_DECLARE_DATATYPES_TOK_in_command571_bits, 2	};
793
/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDefCommand_in_command573  */
794
static	ANTLR3_BITWORD FOLLOW_datatypesDefCommand_in_command573_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
795
static  ANTLR3_BITSET_LIST FOLLOW_datatypesDefCommand_in_command573	= { FOLLOW_datatypesDefCommand_in_command573_bits, 1	};
796
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_VALUE_TOK_in_command586  */
797
static	ANTLR3_BITWORD FOLLOW_GET_VALUE_TOK_in_command586_bits[]	= { ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFF0), ANTLR3_UINT64_LIT(0x00001FFFFFFFFFFF) };
798
static  ANTLR3_BITSET_LIST FOLLOW_GET_VALUE_TOK_in_command586	= { FOLLOW_GET_VALUE_TOK_in_command586_bits, 2	};
799
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command596  */
800
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command596_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
801
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command596	= { FOLLOW_LPAREN_TOK_in_command596_bits, 2	};
802
/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_command598  */
803
static	ANTLR3_BITWORD FOLLOW_termList_in_command598_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
804
static  ANTLR3_BITSET_LIST FOLLOW_termList_in_command598	= { FOLLOW_termList_in_command598_bits, 2	};
805
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command601  */
806
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command601_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
807
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command601	= { FOLLOW_RPAREN_TOK_in_command601_bits, 1	};
808
/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_command617  */
809
static	ANTLR3_BITWORD FOLLOW_set_in_command617_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
810
static  ANTLR3_BITSET_LIST FOLLOW_set_in_command617	= { FOLLOW_set_in_command617_bits, 1	};
811
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_ASSIGNMENT_TOK_in_command644  */
812
static	ANTLR3_BITWORD FOLLOW_GET_ASSIGNMENT_TOK_in_command644_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
813
static  ANTLR3_BITSET_LIST FOLLOW_GET_ASSIGNMENT_TOK_in_command644	= { FOLLOW_GET_ASSIGNMENT_TOK_in_command644_bits, 1	};
814
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ASSERT_TOK_in_command664  */
815
static	ANTLR3_BITWORD FOLLOW_ASSERT_TOK_in_command664_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
816
static  ANTLR3_BITSET_LIST FOLLOW_ASSERT_TOK_in_command664	= { FOLLOW_ASSERT_TOK_in_command664_bits, 2	};
817
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command678  */
818
static	ANTLR3_BITWORD FOLLOW_term_in_command678_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
819
static  ANTLR3_BITSET_LIST FOLLOW_term_in_command678	= { FOLLOW_term_in_command678_bits, 1	};
820
/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_SAT_TOK_in_command697  */
821
static	ANTLR3_BITWORD FOLLOW_CHECK_SAT_TOK_in_command697_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010002), ANTLR3_UINT64_LIT(0x0000024050104420) };
822
static  ANTLR3_BITSET_LIST FOLLOW_CHECK_SAT_TOK_in_command697	= { FOLLOW_CHECK_SAT_TOK_in_command697_bits, 2	};
823
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_command713  */
824
static	ANTLR3_BITWORD FOLLOW_term_in_command713_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
825
static  ANTLR3_BITSET_LIST FOLLOW_term_in_command713	= { FOLLOW_term_in_command713_bits, 1	};
826
/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_SAT_ASSUMING_TOK_in_command754  */
827
static	ANTLR3_BITWORD FOLLOW_CHECK_SAT_ASSUMING_TOK_in_command754_bits[]	= { ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFF0), ANTLR3_UINT64_LIT(0x00001FFFFFFFFFFF) };
828
static  ANTLR3_BITSET_LIST FOLLOW_CHECK_SAT_ASSUMING_TOK_in_command754	= { FOLLOW_CHECK_SAT_ASSUMING_TOK_in_command754_bits, 2	};
829
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_command764  */
830
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_command764_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
831
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_command764	= { FOLLOW_LPAREN_TOK_in_command764_bits, 2	};
832
/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_command766  */
833
static	ANTLR3_BITWORD FOLLOW_termList_in_command766_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
834
static  ANTLR3_BITSET_LIST FOLLOW_termList_in_command766	= { FOLLOW_termList_in_command766_bits, 2	};
835
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_command769  */
836
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_command769_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
837
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_command769	= { FOLLOW_RPAREN_TOK_in_command769_bits, 1	};
838
/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_command785  */
839
static	ANTLR3_BITWORD FOLLOW_set_in_command785_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
840
static  ANTLR3_BITSET_LIST FOLLOW_set_in_command785	= { FOLLOW_set_in_command785_bits, 1	};
841
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_ASSERTIONS_TOK_in_command812  */
842
static	ANTLR3_BITWORD FOLLOW_GET_ASSERTIONS_TOK_in_command812_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
843
static  ANTLR3_BITSET_LIST FOLLOW_GET_ASSERTIONS_TOK_in_command812	= { FOLLOW_GET_ASSERTIONS_TOK_in_command812_bits, 1	};
844
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_PROOF_TOK_in_command832  */
845
static	ANTLR3_BITWORD FOLLOW_GET_PROOF_TOK_in_command832_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
846
static  ANTLR3_BITSET_LIST FOLLOW_GET_PROOF_TOK_in_command832	= { FOLLOW_GET_PROOF_TOK_in_command832_bits, 1	};
847
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_UNSAT_ASSUMPTIONS_TOK_in_command852  */
848
static	ANTLR3_BITWORD FOLLOW_GET_UNSAT_ASSUMPTIONS_TOK_in_command852_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
849
static  ANTLR3_BITSET_LIST FOLLOW_GET_UNSAT_ASSUMPTIONS_TOK_in_command852	= { FOLLOW_GET_UNSAT_ASSUMPTIONS_TOK_in_command852_bits, 1	};
850
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_UNSAT_CORE_TOK_in_command872  */
851
static	ANTLR3_BITWORD FOLLOW_GET_UNSAT_CORE_TOK_in_command872_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
852
static  ANTLR3_BITSET_LIST FOLLOW_GET_UNSAT_CORE_TOK_in_command872	= { FOLLOW_GET_UNSAT_CORE_TOK_in_command872_bits, 1	};
853
/** Bitset defining follow set for error recovery in rule state: FOLLOW_PUSH_TOK_in_command892  */
854
static	ANTLR3_BITWORD FOLLOW_PUSH_TOK_in_command892_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000400) };
855
static  ANTLR3_BITSET_LIST FOLLOW_PUSH_TOK_in_command892	= { FOLLOW_PUSH_TOK_in_command892_bits, 2	};
856
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command910  */
857
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command910_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
858
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_command910	= { FOLLOW_INTEGER_LITERAL_in_command910_bits, 1	};
859
/** Bitset defining follow set for error recovery in rule state: FOLLOW_POP_TOK_in_command934  */
860
static	ANTLR3_BITWORD FOLLOW_POP_TOK_in_command934_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000400) };
861
static  ANTLR3_BITSET_LIST FOLLOW_POP_TOK_in_command934	= { FOLLOW_POP_TOK_in_command934_bits, 2	};
862
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_command952  */
863
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_command952_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
864
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_command952	= { FOLLOW_INTEGER_LITERAL_in_command952_bits, 1	};
865
/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXIT_TOK_in_command986  */
866
static	ANTLR3_BITWORD FOLLOW_EXIT_TOK_in_command986_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
867
static  ANTLR3_BITSET_LIST FOLLOW_EXIT_TOK_in_command986	= { FOLLOW_EXIT_TOK_in_command986_bits, 1	};
868
/** Bitset defining follow set for error recovery in rule state: FOLLOW_smt25Command_in_command1005  */
869
static	ANTLR3_BITWORD FOLLOW_smt25Command_in_command1005_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
870
static  ANTLR3_BITSET_LIST FOLLOW_smt25Command_in_command1005	= { FOLLOW_smt25Command_in_command1005_bits, 1	};
871
/** Bitset defining follow set for error recovery in rule state: FOLLOW_extendedCommand_in_command1019  */
872
static	ANTLR3_BITWORD FOLLOW_extendedCommand_in_command1019_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
873
static  ANTLR3_BITSET_LIST FOLLOW_extendedCommand_in_command1019	= { FOLLOW_extendedCommand_in_command1019_bits, 1	};
874
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_command1039  */
875
static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_command1039_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
876
static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_command1039	= { FOLLOW_SIMPLE_SYMBOL_in_command1039_bits, 1	};
877
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_VAR_TOK_in_sygusCommand1073  */
878
static	ANTLR3_BITWORD FOLLOW_DECLARE_VAR_TOK_in_sygusCommand1073_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
879
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_VAR_TOK_in_sygusCommand1073	= { FOLLOW_DECLARE_VAR_TOK_in_sygusCommand1073_bits, 2	};
880
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1081  */
881
static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1081_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
882
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1081	= { FOLLOW_symbol_in_sygusCommand1081_bits, 2	};
883
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1094  */
884
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1094_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
885
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1094	= { FOLLOW_sortSymbol_in_sygusCommand1094_bits, 1	};
886
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1115  */
887
static	ANTLR3_BITWORD FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1115_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
888
static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1115	= { FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1115_bits, 2	};
889
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYNTH_INV_TOK_in_sygusCommand1127  */
890
static	ANTLR3_BITWORD FOLLOW_SYNTH_INV_TOK_in_sygusCommand1127_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
891
static  ANTLR3_BITSET_LIST FOLLOW_SYNTH_INV_TOK_in_sygusCommand1127	= { FOLLOW_SYNTH_INV_TOK_in_sygusCommand1127_bits, 2	};
892
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1147  */
893
static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1147_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
894
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1147	= { FOLLOW_symbol_in_sygusCommand1147_bits, 2	};
895
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusCommand1154  */
896
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusCommand1154_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
897
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusCommand1154	= { FOLLOW_LPAREN_TOK_in_sygusCommand1154_bits, 2	};
898
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_sygusCommand1156  */
899
static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_sygusCommand1156_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
900
static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_sygusCommand1156	= { FOLLOW_sortedVarList_in_sygusCommand1156_bits, 2	};
901
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusCommand1159  */
902
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusCommand1159_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020010104000) };
903
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusCommand1159	= { FOLLOW_RPAREN_TOK_in_sygusCommand1159_bits, 2	};
904
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusCommand1167  */
905
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusCommand1167_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000004000) };
906
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusCommand1167	= { FOLLOW_sortSymbol_in_sygusCommand1167_bits, 2	};
907
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGrammar_in_sygusCommand1219  */
908
static	ANTLR3_BITWORD FOLLOW_sygusGrammar_in_sygusCommand1219_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
909
static  ANTLR3_BITSET_LIST FOLLOW_sygusGrammar_in_sygusCommand1219	= { FOLLOW_sygusGrammar_in_sygusCommand1219_bits, 1	};
910
/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONSTRAINT_TOK_in_sygusCommand1245  */
911
static	ANTLR3_BITWORD FOLLOW_CONSTRAINT_TOK_in_sygusCommand1245_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
912
static  ANTLR3_BITSET_LIST FOLLOW_CONSTRAINT_TOK_in_sygusCommand1245	= { FOLLOW_CONSTRAINT_TOK_in_sygusCommand1245_bits, 2	};
913
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_sygusCommand1253  */
914
static	ANTLR3_BITWORD FOLLOW_term_in_sygusCommand1253_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
915
static  ANTLR3_BITSET_LIST FOLLOW_term_in_sygusCommand1253	= { FOLLOW_term_in_sygusCommand1253_bits, 1	};
916
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1272  */
917
static	ANTLR3_BITWORD FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1272_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
918
static  ANTLR3_BITSET_LIST FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1272	= { FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1272_bits, 2	};
919
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusCommand1280  */
920
static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusCommand1280_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020010100000) };
921
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusCommand1280	= { FOLLOW_symbol_in_sygusCommand1280_bits, 2	};
922
/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1304  */
923
static	ANTLR3_BITWORD FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
924
static  ANTLR3_BITSET_LIST FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1304	= { FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1304_bits, 1	};
925
/** Bitset defining follow set for error recovery in rule state: FOLLOW_command_in_sygusCommand1322  */
926
static	ANTLR3_BITWORD FOLLOW_command_in_sygusCommand1322_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
927
static  ANTLR3_BITSET_LIST FOLLOW_command_in_sygusCommand1322	= { FOLLOW_command_in_sygusCommand1322_bits, 1	};
928
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGrammar1350  */
929
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGrammar1350_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
930
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGrammar1350	= { FOLLOW_LPAREN_TOK_in_sygusGrammar1350_bits, 2	};
931
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGrammar1365  */
932
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGrammar1365_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
933
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGrammar1365	= { FOLLOW_LPAREN_TOK_in_sygusGrammar1365_bits, 2	};
934
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGrammar1367  */
935
static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGrammar1367_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
936
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGrammar1367	= { FOLLOW_symbol_in_sygusGrammar1367_bits, 2	};
937
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGrammar1374  */
938
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGrammar1374_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
939
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGrammar1374	= { FOLLOW_sortSymbol_in_sygusGrammar1374_bits, 2	};
940
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGrammar1399  */
941
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGrammar1399_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
942
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGrammar1399	= { FOLLOW_LPAREN_TOK_in_sygusGrammar1399_bits, 2	};
943
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGrammar1415  */
944
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGrammar1415_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
945
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGrammar1415	= { FOLLOW_RPAREN_TOK_in_sygusGrammar1415_bits, 2	};
946
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGrammar1432  */
947
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGrammar1432_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
948
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGrammar1432	= { FOLLOW_RPAREN_TOK_in_sygusGrammar1432_bits, 2	};
949
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGrammar1443  */
950
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGrammar1443_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
951
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGrammar1443	= { FOLLOW_LPAREN_TOK_in_sygusGrammar1443_bits, 2	};
952
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGrammar1453  */
953
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGrammar1453_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
954
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGrammar1453	= { FOLLOW_LPAREN_TOK_in_sygusGrammar1453_bits, 2	};
955
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sygusGrammar1459  */
956
static	ANTLR3_BITWORD FOLLOW_symbol_in_sygusGrammar1459_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
957
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sygusGrammar1459	= { FOLLOW_symbol_in_sygusGrammar1459_bits, 2	};
958
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGrammar1462  */
959
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGrammar1462_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
960
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGrammar1462	= { FOLLOW_sortSymbol_in_sygusGrammar1462_bits, 2	};
961
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGrammar1475  */
962
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGrammar1475_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
963
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGrammar1475	= { FOLLOW_LPAREN_TOK_in_sygusGrammar1475_bits, 2	};
964
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_sygusGrammar1489  */
965
static	ANTLR3_BITWORD FOLLOW_term_in_sygusGrammar1489_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050904420) };
966
static  ANTLR3_BITSET_LIST FOLLOW_term_in_sygusGrammar1489	= { FOLLOW_term_in_sygusGrammar1489_bits, 2	};
967
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGrammar1502  */
968
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGrammar1502_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000080000000) };
969
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGrammar1502	= { FOLLOW_LPAREN_TOK_in_sygusGrammar1502_bits, 2	};
970
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGrammar1504  */
971
static	ANTLR3_BITWORD FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGrammar1504_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
972
static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGrammar1504	= { FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGrammar1504_bits, 2	};
973
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGrammar1506  */
974
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGrammar1506_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
975
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGrammar1506	= { FOLLOW_sortSymbol_in_sygusGrammar1506_bits, 2	};
976
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGrammar1509  */
977
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGrammar1509_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050904420) };
978
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGrammar1509	= { FOLLOW_RPAREN_TOK_in_sygusGrammar1509_bits, 2	};
979
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sygusGrammar1521  */
980
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sygusGrammar1521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000100000000) };
981
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sygusGrammar1521	= { FOLLOW_LPAREN_TOK_in_sygusGrammar1521_bits, 2	};
982
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGrammar1523  */
983
static	ANTLR3_BITWORD FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGrammar1523_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
984
static  ANTLR3_BITSET_LIST FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGrammar1523	= { FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGrammar1523_bits, 2	};
985
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sygusGrammar1525  */
986
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sygusGrammar1525_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
987
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sygusGrammar1525	= { FOLLOW_sortSymbol_in_sygusGrammar1525_bits, 2	};
988
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGrammar1528  */
989
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGrammar1528_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050904420) };
990
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGrammar1528	= { FOLLOW_RPAREN_TOK_in_sygusGrammar1528_bits, 2	};
991
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGrammar1543  */
992
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGrammar1543_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
993
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGrammar1543	= { FOLLOW_RPAREN_TOK_in_sygusGrammar1543_bits, 2	};
994
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGrammar1549  */
995
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGrammar1549_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
996
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGrammar1549	= { FOLLOW_RPAREN_TOK_in_sygusGrammar1549_bits, 2	};
997
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sygusGrammar1564  */
998
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sygusGrammar1564_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
999
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sygusGrammar1564	= { FOLLOW_RPAREN_TOK_in_sygusGrammar1564_bits, 1	};
1000
/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_setInfoInternal1585  */
1001
static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_setInfoInternal1585_bits[]	= { ANTLR3_UINT64_LIT(0x7724F21208310020), ANTLR3_UINT64_LIT(0x000002007B7C542E) };
1002
static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_setInfoInternal1585	= { FOLLOW_KEYWORD_in_setInfoInternal1585_bits, 2	};
1003
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_setInfoInternal1587  */
1004
static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_setInfoInternal1587_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1005
static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_setInfoInternal1587	= { FOLLOW_symbolicExpr_in_setInfoInternal1587_bits, 1	};
1006
/** Bitset defining follow set for error recovery in rule state: FOLLOW_keyword_in_setOptionInternal1613  */
1007
static	ANTLR3_BITWORD FOLLOW_keyword_in_setOptionInternal1613_bits[]	= { ANTLR3_UINT64_LIT(0x7724F21208310020), ANTLR3_UINT64_LIT(0x000002007B7C542E) };
1008
static  ANTLR3_BITSET_LIST FOLLOW_keyword_in_setOptionInternal1613	= { FOLLOW_keyword_in_setOptionInternal1613_bits, 2	};
1009
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_setOptionInternal1616  */
1010
static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_setOptionInternal1616_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1011
static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_setOptionInternal1616	= { FOLLOW_symbolicExpr_in_setOptionInternal1616_bits, 1	};
1012
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CONST_TOK_in_smt25Command1648  */
1013
static	ANTLR3_BITWORD FOLLOW_DECLARE_CONST_TOK_in_smt25Command1648_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1014
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CONST_TOK_in_smt25Command1648	= { FOLLOW_DECLARE_CONST_TOK_in_smt25Command1648_bits, 2	};
1015
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command1656  */
1016
static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1656_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1017
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command1656	= { FOLLOW_symbol_in_smt25Command1656_bits, 2	};
1018
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command1669  */
1019
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command1669_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1020
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command1669	= { FOLLOW_sortSymbol_in_smt25Command1669_bits, 1	};
1021
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_MODEL_TOK_in_smt25Command1689  */
1022
static	ANTLR3_BITWORD FOLLOW_GET_MODEL_TOK_in_smt25Command1689_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1023
static  ANTLR3_BITSET_LIST FOLLOW_GET_MODEL_TOK_in_smt25Command1689	= { FOLLOW_GET_MODEL_TOK_in_smt25Command1689_bits, 1	};
1024
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ECHO_TOK_in_smt25Command1710  */
1025
static	ANTLR3_BITWORD FOLLOW_ECHO_TOK_in_smt25Command1710_bits[]	= { ANTLR3_UINT64_LIT(0x7724F21208310022), ANTLR3_UINT64_LIT(0x000002007B7C142E) };
1026
static  ANTLR3_BITSET_LIST FOLLOW_ECHO_TOK_in_smt25Command1710	= { FOLLOW_ECHO_TOK_in_smt25Command1710_bits, 2	};
1027
/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_smt25Command1718  */
1028
static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_smt25Command1718_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1029
static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_smt25Command1718	= { FOLLOW_simpleSymbolicExpr_in_smt25Command1718_bits, 1	};
1030
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_TOK_in_smt25Command1754  */
1031
static	ANTLR3_BITWORD FOLLOW_RESET_TOK_in_smt25Command1754_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1032
static  ANTLR3_BITSET_LIST FOLLOW_RESET_TOK_in_smt25Command1754	= { FOLLOW_RESET_TOK_in_smt25Command1754_bits, 1	};
1033
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1772  */
1034
static	ANTLR3_BITWORD FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1772_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1035
static  ANTLR3_BITSET_LIST FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1772	= { FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1772_bits, 1	};
1036
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1784  */
1037
static	ANTLR3_BITWORD FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1784_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1038
static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1784	= { FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1784_bits, 2	};
1039
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command1796  */
1040
static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1796_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1041
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command1796	= { FOLLOW_symbol_in_smt25Command1796_bits, 2	};
1042
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command1809  */
1043
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command1809_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1044
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command1809	= { FOLLOW_LPAREN_TOK_in_smt25Command1809_bits, 2	};
1045
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_smt25Command1811  */
1046
static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_smt25Command1811_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1047
static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_smt25Command1811	= { FOLLOW_sortedVarList_in_smt25Command1811_bits, 2	};
1048
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command1814  */
1049
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command1814_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1050
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command1814	= { FOLLOW_RPAREN_TOK_in_smt25Command1814_bits, 2	};
1051
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command1820  */
1052
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command1820_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1053
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command1820	= { FOLLOW_sortSymbol_in_smt25Command1820_bits, 2	};
1054
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_smt25Command1833  */
1055
static	ANTLR3_BITWORD FOLLOW_term_in_smt25Command1833_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1056
static  ANTLR3_BITSET_LIST FOLLOW_term_in_smt25Command1833	= { FOLLOW_term_in_smt25Command1833_bits, 1	};
1057
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1846  */
1058
static	ANTLR3_BITWORD FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1846_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1059
static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1846	= { FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1846_bits, 2	};
1060
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command1858  */
1061
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command1858_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1062
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command1858	= { FOLLOW_LPAREN_TOK_in_smt25Command1858_bits, 2	};
1063
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command1866  */
1064
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command1866_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1065
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command1866	= { FOLLOW_LPAREN_TOK_in_smt25Command1866_bits, 2	};
1066
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_smt25Command1874  */
1067
static	ANTLR3_BITWORD FOLLOW_symbol_in_smt25Command1874_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1068
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_smt25Command1874	= { FOLLOW_symbol_in_smt25Command1874_bits, 2	};
1069
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command1891  */
1070
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command1891_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1071
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command1891	= { FOLLOW_LPAREN_TOK_in_smt25Command1891_bits, 2	};
1072
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_smt25Command1893  */
1073
static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_smt25Command1893_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1074
static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_smt25Command1893	= { FOLLOW_sortedVarList_in_smt25Command1893_bits, 2	};
1075
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command1896  */
1076
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command1896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1077
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command1896	= { FOLLOW_RPAREN_TOK_in_smt25Command1896_bits, 2	};
1078
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_smt25Command1904  */
1079
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_smt25Command1904_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1080
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_smt25Command1904	= { FOLLOW_sortSymbol_in_smt25Command1904_bits, 2	};
1081
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command1921  */
1082
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command1921_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1083
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command1921	= { FOLLOW_RPAREN_TOK_in_smt25Command1921_bits, 2	};
1084
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command1934  */
1085
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command1934_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1086
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command1934	= { FOLLOW_RPAREN_TOK_in_smt25Command1934_bits, 2	};
1087
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_smt25Command1940  */
1088
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_smt25Command1940_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1089
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_smt25Command1940	= { FOLLOW_LPAREN_TOK_in_smt25Command1940_bits, 2	};
1090
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_smt25Command1958  */
1091
static	ANTLR3_BITWORD FOLLOW_term_in_smt25Command1958_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050904420) };
1092
static  ANTLR3_BITSET_LIST FOLLOW_term_in_smt25Command1958	= { FOLLOW_term_in_smt25Command1958_bits, 2	};
1093
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_smt25Command1978  */
1094
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_smt25Command1978_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1095
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_smt25Command1978	= { FOLLOW_RPAREN_TOK_in_smt25Command1978_bits, 1	};
1096
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2009  */
1097
static	ANTLR3_BITWORD FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2009_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1098
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2009	= { FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2009_bits, 2	};
1099
/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypeDefCommand_in_extendedCommand2011  */
1100
static	ANTLR3_BITWORD FOLLOW_datatypeDefCommand_in_extendedCommand2011_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1101
static  ANTLR3_BITSET_LIST FOLLOW_datatypeDefCommand_in_extendedCommand2011	= { FOLLOW_datatypeDefCommand_in_extendedCommand2011_bits, 1	};
1102
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2018  */
1103
static	ANTLR3_BITWORD FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2018_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1104
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2018	= { FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2018_bits, 2	};
1105
/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDefCommand_in_extendedCommand2020  */
1106
static	ANTLR3_BITWORD FOLLOW_datatypesDefCommand_in_extendedCommand2020_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1107
static  ANTLR3_BITSET_LIST FOLLOW_datatypesDefCommand_in_extendedCommand2020	= { FOLLOW_datatypesDefCommand_in_extendedCommand2020_bits, 1	};
1108
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2035  */
1109
static	ANTLR3_BITWORD FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2035_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1110
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2035	= { FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2035_bits, 2	};
1111
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2047  */
1112
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2047_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1113
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2047	= { FOLLOW_LPAREN_TOK_in_extendedCommand2047_bits, 2	};
1114
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2055  */
1115
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2055_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010900000) };
1116
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2055	= { FOLLOW_symbol_in_extendedCommand2055_bits, 2	};
1117
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2077  */
1118
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2077_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1119
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2077	= { FOLLOW_RPAREN_TOK_in_extendedCommand2077_bits, 1	};
1120
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2090  */
1121
static	ANTLR3_BITWORD FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2090_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1122
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2090	= { FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2090_bits, 2	};
1123
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2104  */
1124
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2104_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1125
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2104	= { FOLLOW_LPAREN_TOK_in_extendedCommand2104_bits, 2	};
1126
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2112  */
1127
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2112_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1128
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2112	= { FOLLOW_LPAREN_TOK_in_extendedCommand2112_bits, 2	};
1129
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2114  */
1130
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2114_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1131
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2114	= { FOLLOW_symbol_in_extendedCommand2114_bits, 2	};
1132
/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptySortList_in_extendedCommand2131  */
1133
static	ANTLR3_BITWORD FOLLOW_nonemptySortList_in_extendedCommand2131_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1134
static  ANTLR3_BITSET_LIST FOLLOW_nonemptySortList_in_extendedCommand2131	= { FOLLOW_nonemptySortList_in_extendedCommand2131_bits, 2	};
1135
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2134  */
1136
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2134_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1137
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2134	= { FOLLOW_RPAREN_TOK_in_extendedCommand2134_bits, 2	};
1138
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2155  */
1139
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2155_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1140
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2155	= { FOLLOW_RPAREN_TOK_in_extendedCommand2155_bits, 1	};
1141
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2167  */
1142
static	ANTLR3_BITWORD FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2167_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1143
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2167	= { FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2167_bits, 2	};
1144
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2181  */
1145
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2181_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1146
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2181	= { FOLLOW_LPAREN_TOK_in_extendedCommand2181_bits, 2	};
1147
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2189  */
1148
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2189_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1149
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2189	= { FOLLOW_LPAREN_TOK_in_extendedCommand2189_bits, 2	};
1150
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2191  */
1151
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2191_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010904000) };
1152
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2191	= { FOLLOW_symbol_in_extendedCommand2191_bits, 2	};
1153
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_extendedCommand2208  */
1154
static	ANTLR3_BITWORD FOLLOW_sortList_in_extendedCommand2208_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1155
static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_extendedCommand2208	= { FOLLOW_sortList_in_extendedCommand2208_bits, 2	};
1156
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2211  */
1157
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2211_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1158
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2211	= { FOLLOW_RPAREN_TOK_in_extendedCommand2211_bits, 2	};
1159
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2232  */
1160
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2232_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1161
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2232	= { FOLLOW_RPAREN_TOK_in_extendedCommand2232_bits, 1	};
1162
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_TOK_in_extendedCommand2245  */
1163
static	ANTLR3_BITWORD FOLLOW_DEFINE_TOK_in_extendedCommand2245_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1164
static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_TOK_in_extendedCommand2245	= { FOLLOW_DEFINE_TOK_in_extendedCommand2245_bits, 2	};
1165
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2262  */
1166
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2262_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1167
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2262	= { FOLLOW_symbol_in_extendedCommand2262_bits, 2	};
1168
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2279  */
1169
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2279_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1170
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2279	= { FOLLOW_term_in_extendedCommand2279_bits, 1	};
1171
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2303  */
1172
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2303_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1173
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2303	= { FOLLOW_LPAREN_TOK_in_extendedCommand2303_bits, 2	};
1174
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2311  */
1175
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2311_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1176
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2311	= { FOLLOW_symbol_in_extendedCommand2311_bits, 2	};
1177
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_extendedCommand2328  */
1178
static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_extendedCommand2328_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1179
static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_extendedCommand2328	= { FOLLOW_sortedVarList_in_extendedCommand2328_bits, 2	};
1180
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2331  */
1181
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2331_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1182
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2331	= { FOLLOW_RPAREN_TOK_in_extendedCommand2331_bits, 2	};
1183
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2347  */
1184
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2347_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1185
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2347	= { FOLLOW_term_in_extendedCommand2347_bits, 1	};
1186
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2373  */
1187
static	ANTLR3_BITWORD FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2373_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1188
static  ANTLR3_BITSET_LIST FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2373	= { FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2373_bits, 2	};
1189
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2381  */
1190
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2381_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1191
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2381	= { FOLLOW_symbol_in_extendedCommand2381_bits, 2	};
1192
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_extendedCommand2394  */
1193
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_extendedCommand2394_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1194
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_extendedCommand2394	= { FOLLOW_sortSymbol_in_extendedCommand2394_bits, 2	};
1195
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2401  */
1196
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2401_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1197
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2401	= { FOLLOW_term_in_extendedCommand2401_bits, 1	};
1198
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLIFY_TOK_in_extendedCommand2415  */
1199
static	ANTLR3_BITWORD FOLLOW_SIMPLIFY_TOK_in_extendedCommand2415_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1200
static  ANTLR3_BITSET_LIST FOLLOW_SIMPLIFY_TOK_in_extendedCommand2415	= { FOLLOW_SIMPLIFY_TOK_in_extendedCommand2415_bits, 2	};
1201
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2423  */
1202
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2423_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1203
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2423	= { FOLLOW_term_in_extendedCommand2423_bits, 1	};
1204
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_QE_TOK_in_extendedCommand2436  */
1205
static	ANTLR3_BITWORD FOLLOW_GET_QE_TOK_in_extendedCommand2436_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1206
static  ANTLR3_BITSET_LIST FOLLOW_GET_QE_TOK_in_extendedCommand2436	= { FOLLOW_GET_QE_TOK_in_extendedCommand2436_bits, 2	};
1207
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2444  */
1208
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2444_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1209
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2444	= { FOLLOW_term_in_extendedCommand2444_bits, 1	};
1210
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2457  */
1211
static	ANTLR3_BITWORD FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2457_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1212
static  ANTLR3_BITSET_LIST FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2457	= { FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2457_bits, 2	};
1213
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2465  */
1214
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2465_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1215
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2465	= { FOLLOW_term_in_extendedCommand2465_bits, 1	};
1216
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_ABDUCT_TOK_in_extendedCommand2478  */
1217
static	ANTLR3_BITWORD FOLLOW_GET_ABDUCT_TOK_in_extendedCommand2478_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1218
static  ANTLR3_BITSET_LIST FOLLOW_GET_ABDUCT_TOK_in_extendedCommand2478	= { FOLLOW_GET_ABDUCT_TOK_in_extendedCommand2478_bits, 2	};
1219
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2486  */
1220
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2486_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1221
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2486	= { FOLLOW_symbol_in_extendedCommand2486_bits, 2	};
1222
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2493  */
1223
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2493_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000004000) };
1224
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2493	= { FOLLOW_term_in_extendedCommand2493_bits, 2	};
1225
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGrammar_in_extendedCommand2508  */
1226
static	ANTLR3_BITWORD FOLLOW_sygusGrammar_in_extendedCommand2508_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1227
static  ANTLR3_BITSET_LIST FOLLOW_sygusGrammar_in_extendedCommand2508	= { FOLLOW_sygusGrammar_in_extendedCommand2508_bits, 1	};
1228
/** Bitset defining follow set for error recovery in rule state: FOLLOW_GET_INTERPOL_TOK_in_extendedCommand2528  */
1229
static	ANTLR3_BITWORD FOLLOW_GET_INTERPOL_TOK_in_extendedCommand2528_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1230
static  ANTLR3_BITSET_LIST FOLLOW_GET_INTERPOL_TOK_in_extendedCommand2528	= { FOLLOW_GET_INTERPOL_TOK_in_extendedCommand2528_bits, 2	};
1231
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2536  */
1232
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2536_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1233
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2536	= { FOLLOW_symbol_in_extendedCommand2536_bits, 2	};
1234
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2543  */
1235
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2543_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000004000) };
1236
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2543	= { FOLLOW_term_in_extendedCommand2543_bits, 2	};
1237
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sygusGrammar_in_extendedCommand2558  */
1238
static	ANTLR3_BITWORD FOLLOW_sygusGrammar_in_extendedCommand2558_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1239
static  ANTLR3_BITSET_LIST FOLLOW_sygusGrammar_in_extendedCommand2558	= { FOLLOW_sygusGrammar_in_extendedCommand2558_bits, 1	};
1240
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_HEAP_in_extendedCommand2578  */
1241
static	ANTLR3_BITWORD FOLLOW_DECLARE_HEAP_in_extendedCommand2578_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1242
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_HEAP_in_extendedCommand2578	= { FOLLOW_DECLARE_HEAP_in_extendedCommand2578_bits, 2	};
1243
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2580  */
1244
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2580_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1245
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2580	= { FOLLOW_LPAREN_TOK_in_extendedCommand2580_bits, 2	};
1246
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_extendedCommand2586  */
1247
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_extendedCommand2586_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1248
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_extendedCommand2586	= { FOLLOW_sortSymbol_in_extendedCommand2586_bits, 2	};
1249
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_extendedCommand2593  */
1250
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_extendedCommand2593_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1251
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_extendedCommand2593	= { FOLLOW_sortSymbol_in_extendedCommand2593_bits, 2	};
1252
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2606  */
1253
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2606_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1254
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2606	= { FOLLOW_RPAREN_TOK_in_extendedCommand2606_bits, 1	};
1255
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECLARE_POOL_in_extendedCommand2612  */
1256
static	ANTLR3_BITWORD FOLLOW_DECLARE_POOL_in_extendedCommand2612_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1257
static  ANTLR3_BITSET_LIST FOLLOW_DECLARE_POOL_in_extendedCommand2612	= { FOLLOW_DECLARE_POOL_in_extendedCommand2612_bits, 2	};
1258
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_extendedCommand2620  */
1259
static	ANTLR3_BITWORD FOLLOW_symbol_in_extendedCommand2620_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1260
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_extendedCommand2620	= { FOLLOW_symbol_in_extendedCommand2620_bits, 2	};
1261
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_extendedCommand2633  */
1262
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_extendedCommand2633_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1263
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_extendedCommand2633	= { FOLLOW_sortSymbol_in_extendedCommand2633_bits, 2	};
1264
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2640  */
1265
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2640_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050904420) };
1266
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2640	= { FOLLOW_LPAREN_TOK_in_extendedCommand2640_bits, 2	};
1267
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_extendedCommand2648  */
1268
static	ANTLR3_BITWORD FOLLOW_term_in_extendedCommand2648_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050904420) };
1269
static  ANTLR3_BITSET_LIST FOLLOW_term_in_extendedCommand2648	= { FOLLOW_term_in_extendedCommand2648_bits, 2	};
1270
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2666  */
1271
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2666_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1272
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2666	= { FOLLOW_RPAREN_TOK_in_extendedCommand2666_bits, 1	};
1273
/** Bitset defining follow set for error recovery in rule state: FOLLOW_BLOCK_MODEL_TOK_in_extendedCommand2678  */
1274
static	ANTLR3_BITWORD FOLLOW_BLOCK_MODEL_TOK_in_extendedCommand2678_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1275
static  ANTLR3_BITSET_LIST FOLLOW_BLOCK_MODEL_TOK_in_extendedCommand2678	= { FOLLOW_BLOCK_MODEL_TOK_in_extendedCommand2678_bits, 1	};
1276
/** Bitset defining follow set for error recovery in rule state: FOLLOW_BLOCK_MODEL_VALUES_TOK_in_extendedCommand2693  */
1277
static	ANTLR3_BITWORD FOLLOW_BLOCK_MODEL_VALUES_TOK_in_extendedCommand2693_bits[]	= { ANTLR3_UINT64_LIT(0xFFFFFFFFFFFFFFF0), ANTLR3_UINT64_LIT(0x00001FFFFFFFFFFF) };
1278
static  ANTLR3_BITSET_LIST FOLLOW_BLOCK_MODEL_VALUES_TOK_in_extendedCommand2693	= { FOLLOW_BLOCK_MODEL_VALUES_TOK_in_extendedCommand2693_bits, 2	};
1279
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_extendedCommand2703  */
1280
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_extendedCommand2703_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1281
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_extendedCommand2703	= { FOLLOW_LPAREN_TOK_in_extendedCommand2703_bits, 2	};
1282
/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_extendedCommand2705  */
1283
static	ANTLR3_BITWORD FOLLOW_termList_in_extendedCommand2705_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1284
static  ANTLR3_BITSET_LIST FOLLOW_termList_in_extendedCommand2705	= { FOLLOW_termList_in_extendedCommand2705_bits, 2	};
1285
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_extendedCommand2708  */
1286
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_extendedCommand2708_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1287
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_extendedCommand2708	= { FOLLOW_RPAREN_TOK_in_extendedCommand2708_bits, 1	};
1288
/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_extendedCommand2724  */
1289
static	ANTLR3_BITWORD FOLLOW_set_in_extendedCommand2724_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1290
static  ANTLR3_BITSET_LIST FOLLOW_set_in_extendedCommand2724	= { FOLLOW_set_in_extendedCommand2724_bits, 1	};
1291
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypeDefCommand2760  */
1292
static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypeDefCommand2760_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1293
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypeDefCommand2760	= { FOLLOW_symbol_in_datatypeDefCommand2760_bits, 2	};
1294
/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDef_in_datatypeDefCommand2767  */
1295
static	ANTLR3_BITWORD FOLLOW_datatypesDef_in_datatypeDefCommand2767_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1296
static  ANTLR3_BITSET_LIST FOLLOW_datatypesDef_in_datatypeDefCommand2767	= { FOLLOW_datatypesDef_in_datatypeDefCommand2767_bits, 1	};
1297
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2790  */
1298
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2790_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1299
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2790	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2790_bits, 2	};
1300
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2798  */
1301
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2798_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1302
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2798	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2798_bits, 2	};
1303
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypesDefCommand2800  */
1304
static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypesDefCommand2800_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000400) };
1305
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypesDefCommand2800	= { FOLLOW_symbol_in_datatypesDefCommand2800_bits, 2	};
1306
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2805  */
1307
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2805_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1308
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2805	= { FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2805_bits, 2	};
1309
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2807  */
1310
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2807_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1311
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2807	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2807_bits, 2	};
1312
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2822  */
1313
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2822_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1314
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2822	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2822_bits, 2	};
1315
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDefCommand2826  */
1316
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDefCommand2826_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1317
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDefCommand2826	= { FOLLOW_LPAREN_TOK_in_datatypesDefCommand2826_bits, 2	};
1318
/** Bitset defining follow set for error recovery in rule state: FOLLOW_datatypesDef_in_datatypesDefCommand2830  */
1319
static	ANTLR3_BITWORD FOLLOW_datatypesDef_in_datatypesDefCommand2830_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1320
static  ANTLR3_BITSET_LIST FOLLOW_datatypesDef_in_datatypesDefCommand2830	= { FOLLOW_datatypesDef_in_datatypesDefCommand2830_bits, 2	};
1321
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDefCommand2835  */
1322
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDefCommand2835_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1323
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDefCommand2835	= { FOLLOW_RPAREN_TOK_in_datatypesDefCommand2835_bits, 1	};
1324
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDef2864  */
1325
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDef2864_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000024000) };
1326
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDef2864	= { FOLLOW_LPAREN_TOK_in_datatypesDef2864_bits, 2	};
1327
/** Bitset defining follow set for error recovery in rule state: FOLLOW_PAR_TOK_in_datatypesDef2874  */
1328
static	ANTLR3_BITWORD FOLLOW_PAR_TOK_in_datatypesDef2874_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1329
static  ANTLR3_BITSET_LIST FOLLOW_PAR_TOK_in_datatypesDef2874	= { FOLLOW_PAR_TOK_in_datatypesDef2874_bits, 2	};
1330
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDef2878  */
1331
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDef2878_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010900000) };
1332
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDef2878	= { FOLLOW_LPAREN_TOK_in_datatypesDef2878_bits, 2	};
1333
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypesDef2888  */
1334
static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypesDef2888_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010900000) };
1335
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypesDef2888	= { FOLLOW_symbol_in_datatypesDef2888_bits, 2	};
1336
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDef2916  */
1337
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDef2916_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1338
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDef2916	= { FOLLOW_RPAREN_TOK_in_datatypesDef2916_bits, 2	};
1339
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDef2926  */
1340
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDef2926_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1341
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDef2926	= { FOLLOW_LPAREN_TOK_in_datatypesDef2926_bits, 2	};
1342
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDef2936  */
1343
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDef2936_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1344
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDef2936	= { FOLLOW_LPAREN_TOK_in_datatypesDef2936_bits, 2	};
1345
/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypesDef2938  */
1346
static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypesDef2938_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1347
static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypesDef2938	= { FOLLOW_constructorDef_in_datatypesDef2938_bits, 2	};
1348
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDef2941  */
1349
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDef2941_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1350
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDef2941	= { FOLLOW_RPAREN_TOK_in_datatypesDef2941_bits, 2	};
1351
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDef2952  */
1352
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDef2952_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1353
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDef2952	= { FOLLOW_RPAREN_TOK_in_datatypesDef2952_bits, 2	};
1354
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypesDef2972  */
1355
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypesDef2972_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1356
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypesDef2972	= { FOLLOW_LPAREN_TOK_in_datatypesDef2972_bits, 2	};
1357
/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypesDef2974  */
1358
static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypesDef2974_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1359
static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypesDef2974	= { FOLLOW_constructorDef_in_datatypesDef2974_bits, 2	};
1360
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDef2977  */
1361
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDef2977_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1362
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDef2977	= { FOLLOW_RPAREN_TOK_in_datatypesDef2977_bits, 2	};
1363
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypesDef2992  */
1364
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypesDef2992_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000004000) };
1365
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypesDef2992	= { FOLLOW_RPAREN_TOK_in_datatypesDef2992_bits, 2	};
1366
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3017  */
1367
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3017_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1368
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3017	= { FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3017_bits, 1	};
1369
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3029  */
1370
static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3029_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1371
static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3029	= { FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3029_bits, 1	};
1372
/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3041  */
1373
static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3041_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1374
static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3041	= { FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3041_bits, 1	};
1375
/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3053  */
1376
static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3053_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1377
static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3053	= { FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3053_bits, 1	};
1378
/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_simpleSymbolicExprNoKeyword3065  */
1379
static	ANTLR3_BITWORD FOLLOW_str_in_simpleSymbolicExprNoKeyword3065_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1380
static  ANTLR3_BITSET_LIST FOLLOW_str_in_simpleSymbolicExprNoKeyword3065	= { FOLLOW_str_in_simpleSymbolicExprNoKeyword3065_bits, 1	};
1381
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3072  */
1382
static	ANTLR3_BITWORD FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3072_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1383
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3072	= { FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3072_bits, 1	};
1384
/** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_simpleSymbolicExprNoKeyword3081  */
1385
static	ANTLR3_BITWORD FOLLOW_set_in_simpleSymbolicExprNoKeyword3081_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1386
static  ANTLR3_BITSET_LIST FOLLOW_set_in_simpleSymbolicExprNoKeyword3081	= { FOLLOW_set_in_simpleSymbolicExprNoKeyword3081_bits, 1	};
1387
/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_keyword3279  */
1388
static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_keyword3279_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1389
static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_keyword3279	= { FOLLOW_KEYWORD_in_keyword3279_bits, 1	};
1390
/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3299  */
1391
static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3299_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1392
static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3299	= { FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3299_bits, 1	};
1393
/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_simpleSymbolicExpr3306  */
1394
static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_simpleSymbolicExpr3306_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1395
static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_simpleSymbolicExpr3306	= { FOLLOW_KEYWORD_in_simpleSymbolicExpr3306_bits, 1	};
1396
/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExpr_in_symbolicExpr3327  */
1397
static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExpr_in_symbolicExpr3327_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1398
static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExpr_in_symbolicExpr3327	= { FOLLOW_simpleSymbolicExpr_in_symbolicExpr3327_bits, 1	};
1399
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_symbolicExpr3340  */
1400
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_symbolicExpr3340_bits[]	= { ANTLR3_UINT64_LIT(0x7724F21208310020), ANTLR3_UINT64_LIT(0x000002007BFC542E) };
1401
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_symbolicExpr3340	= { FOLLOW_LPAREN_TOK_in_symbolicExpr3340_bits, 2	};
1402
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_symbolicExpr3348  */
1403
static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_symbolicExpr3348_bits[]	= { ANTLR3_UINT64_LIT(0x7724F21208310020), ANTLR3_UINT64_LIT(0x000002007BFC542E) };
1404
static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_symbolicExpr3348	= { FOLLOW_symbolicExpr_in_symbolicExpr3348_bits, 2	};
1405
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_symbolicExpr3356  */
1406
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_symbolicExpr3356_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1407
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_symbolicExpr3356	= { FOLLOW_RPAREN_TOK_in_symbolicExpr3356_bits, 1	};
1408
/** Bitset defining follow set for error recovery in rule state: FOLLOW_termNonVariable_in_term3381  */
1409
static	ANTLR3_BITWORD FOLLOW_termNonVariable_in_term3381_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1410
static  ANTLR3_BITSET_LIST FOLLOW_termNonVariable_in_term3381	= { FOLLOW_termNonVariable_in_term3381_bits, 1	};
1411
/** Bitset defining follow set for error recovery in rule state: FOLLOW_qualIdentifier_in_term3393  */
1412
static	ANTLR3_BITWORD FOLLOW_qualIdentifier_in_term3393_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1413
static  ANTLR3_BITSET_LIST FOLLOW_qualIdentifier_in_term3393	= { FOLLOW_qualIdentifier_in_term3393_bits, 1	};
1414
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3421  */
1415
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3421_bits[]	= { ANTLR3_UINT64_LIT(0x0050000000000000) };
1416
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3421	= { FOLLOW_LPAREN_TOK_in_termNonVariable3421_bits, 1	};
1417
/** Bitset defining follow set for error recovery in rule state: FOLLOW_quantOp_in_termNonVariable3423  */
1418
static	ANTLR3_BITWORD FOLLOW_quantOp_in_termNonVariable3423_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1419
static  ANTLR3_BITSET_LIST FOLLOW_quantOp_in_termNonVariable3423	= { FOLLOW_quantOp_in_termNonVariable3423_bits, 2	};
1420
/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarList_in_termNonVariable3436  */
1421
static	ANTLR3_BITWORD FOLLOW_boundVarList_in_termNonVariable3436_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1422
static  ANTLR3_BITSET_LIST FOLLOW_boundVarList_in_termNonVariable3436	= { FOLLOW_boundVarList_in_termNonVariable3436_bits, 2	};
1423
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3443  */
1424
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3443_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1425
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3443	= { FOLLOW_term_in_termNonVariable3443_bits, 2	};
1426
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3446  */
1427
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3446_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1428
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3446	= { FOLLOW_RPAREN_TOK_in_termNonVariable3446_bits, 1	};
1429
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3458  */
1430
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3458_bits[]	= { ANTLR3_UINT64_LIT(0x0000000001000000) };
1431
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3458	= { FOLLOW_LPAREN_TOK_in_termNonVariable3458_bits, 1	};
1432
/** Bitset defining follow set for error recovery in rule state: FOLLOW_COMPREHENSION_TOK_in_termNonVariable3460  */
1433
static	ANTLR3_BITWORD FOLLOW_COMPREHENSION_TOK_in_termNonVariable3460_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1434
static  ANTLR3_BITSET_LIST FOLLOW_COMPREHENSION_TOK_in_termNonVariable3460	= { FOLLOW_COMPREHENSION_TOK_in_termNonVariable3460_bits, 2	};
1435
/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarList_in_termNonVariable3472  */
1436
static	ANTLR3_BITWORD FOLLOW_boundVarList_in_termNonVariable3472_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1437
static  ANTLR3_BITSET_LIST FOLLOW_boundVarList_in_termNonVariable3472	= { FOLLOW_boundVarList_in_termNonVariable3472_bits, 2	};
1438
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3485  */
1439
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3485_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1440
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3485	= { FOLLOW_term_in_termNonVariable3485_bits, 2	};
1441
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3494  */
1442
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3494_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1443
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3494	= { FOLLOW_term_in_termNonVariable3494_bits, 2	};
1444
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3503  */
1445
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3503_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1446
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3503	= { FOLLOW_RPAREN_TOK_in_termNonVariable3503_bits, 1	};
1447
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3509  */
1448
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3509_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1449
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3509	= { FOLLOW_LPAREN_TOK_in_termNonVariable3509_bits, 2	};
1450
/** Bitset defining follow set for error recovery in rule state: FOLLOW_qualIdentifier_in_termNonVariable3511  */
1451
static	ANTLR3_BITWORD FOLLOW_qualIdentifier_in_termNonVariable3511_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1452
static  ANTLR3_BITSET_LIST FOLLOW_qualIdentifier_in_termNonVariable3511	= { FOLLOW_qualIdentifier_in_termNonVariable3511_bits, 2	};
1453
/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_termNonVariable3518  */
1454
static	ANTLR3_BITWORD FOLLOW_termList_in_termNonVariable3518_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1455
static  ANTLR3_BITSET_LIST FOLLOW_termList_in_termNonVariable3518	= { FOLLOW_termList_in_termNonVariable3518_bits, 2	};
1456
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3521  */
1457
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3521_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1458
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3521	= { FOLLOW_RPAREN_TOK_in_termNonVariable3521_bits, 1	};
1459
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3539  */
1460
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3539_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000002000) };
1461
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3539	= { FOLLOW_LPAREN_TOK_in_termNonVariable3539_bits, 2	};
1462
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LET_TOK_in_termNonVariable3548  */
1463
static	ANTLR3_BITWORD FOLLOW_LET_TOK_in_termNonVariable3548_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1464
static  ANTLR3_BITSET_LIST FOLLOW_LET_TOK_in_termNonVariable3548	= { FOLLOW_LET_TOK_in_termNonVariable3548_bits, 2	};
1465
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3550  */
1466
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3550_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1467
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3550	= { FOLLOW_LPAREN_TOK_in_termNonVariable3550_bits, 2	};
1468
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3568  */
1469
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3568_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1470
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3568	= { FOLLOW_LPAREN_TOK_in_termNonVariable3568_bits, 2	};
1471
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_termNonVariable3570  */
1472
static	ANTLR3_BITWORD FOLLOW_symbol_in_termNonVariable3570_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1473
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_termNonVariable3570	= { FOLLOW_symbol_in_termNonVariable3570_bits, 2	};
1474
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3581  */
1475
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3581_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1476
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3581	= { FOLLOW_term_in_termNonVariable3581_bits, 2	};
1477
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3592  */
1478
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3592_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1479
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3592	= { FOLLOW_RPAREN_TOK_in_termNonVariable3592_bits, 2	};
1480
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3635  */
1481
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3635_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1482
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3635	= { FOLLOW_RPAREN_TOK_in_termNonVariable3635_bits, 2	};
1483
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3641  */
1484
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3641_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1485
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3641	= { FOLLOW_term_in_termNonVariable3641_bits, 2	};
1486
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3648  */
1487
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3648_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1488
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3648	= { FOLLOW_RPAREN_TOK_in_termNonVariable3648_bits, 1	};
1489
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3666  */
1490
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3666_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000008000) };
1491
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3666	= { FOLLOW_LPAREN_TOK_in_termNonVariable3666_bits, 2	};
1492
/** Bitset defining follow set for error recovery in rule state: FOLLOW_MATCH_TOK_in_termNonVariable3668  */
1493
static	ANTLR3_BITWORD FOLLOW_MATCH_TOK_in_termNonVariable3668_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1494
static  ANTLR3_BITSET_LIST FOLLOW_MATCH_TOK_in_termNonVariable3668	= { FOLLOW_MATCH_TOK_in_termNonVariable3668_bits, 2	};
1495
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3670  */
1496
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3670_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1497
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3670	= { FOLLOW_term_in_termNonVariable3670_bits, 2	};
1498
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3679  */
1499
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3679_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1500
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3679	= { FOLLOW_LPAREN_TOK_in_termNonVariable3679_bits, 2	};
1501
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3700  */
1502
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3700_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1503
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3700	= { FOLLOW_LPAREN_TOK_in_termNonVariable3700_bits, 2	};
1504
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3702  */
1505
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3702_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1506
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3702	= { FOLLOW_LPAREN_TOK_in_termNonVariable3702_bits, 2	};
1507
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3704  */
1508
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3704_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010900000) };
1509
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3704	= { FOLLOW_term_in_termNonVariable3704_bits, 2	};
1510
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_termNonVariable3728  */
1511
static	ANTLR3_BITWORD FOLLOW_symbol_in_termNonVariable3728_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010900000) };
1512
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_termNonVariable3728	= { FOLLOW_symbol_in_termNonVariable3728_bits, 2	};
1513
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3752  */
1514
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3752_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1515
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3752	= { FOLLOW_RPAREN_TOK_in_termNonVariable3752_bits, 2	};
1516
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3754  */
1517
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3754_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1518
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3754	= { FOLLOW_term_in_termNonVariable3754_bits, 2	};
1519
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3767  */
1520
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3767_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1521
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3767	= { FOLLOW_RPAREN_TOK_in_termNonVariable3767_bits, 2	};
1522
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3784  */
1523
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3784_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1524
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3784	= { FOLLOW_LPAREN_TOK_in_termNonVariable3784_bits, 2	};
1525
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_termNonVariable3786  */
1526
static	ANTLR3_BITWORD FOLLOW_symbol_in_termNonVariable3786_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1527
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_termNonVariable3786	= { FOLLOW_symbol_in_termNonVariable3786_bits, 2	};
1528
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3799  */
1529
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3799_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1530
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3799	= { FOLLOW_term_in_termNonVariable3799_bits, 2	};
1531
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3812  */
1532
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3812_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1533
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3812	= { FOLLOW_RPAREN_TOK_in_termNonVariable3812_bits, 2	};
1534
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3825  */
1535
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3825_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1536
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3825	= { FOLLOW_RPAREN_TOK_in_termNonVariable3825_bits, 2	};
1537
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3827  */
1538
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3827_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1539
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3827	= { FOLLOW_RPAREN_TOK_in_termNonVariable3827_bits, 1	};
1540
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3843  */
1541
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3843_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000008000) };
1542
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3843	= { FOLLOW_LPAREN_TOK_in_termNonVariable3843_bits, 1	};
1543
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_TOK_in_termNonVariable3845  */
1544
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_TOK_in_termNonVariable3845_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1545
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_TOK_in_termNonVariable3845	= { FOLLOW_ATTRIBUTE_TOK_in_termNonVariable3845_bits, 2	};
1546
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3847  */
1547
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3847_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000007F80), ANTLR3_UINT64_LIT(0x0000000000001000) };
1548
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3847	= { FOLLOW_term_in_termNonVariable3847_bits, 2	};
1549
/** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_in_termNonVariable3856  */
1550
static	ANTLR3_BITWORD FOLLOW_attribute_in_termNonVariable3856_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000007F80), ANTLR3_UINT64_LIT(0x0000000000801000) };
1551
static  ANTLR3_BITSET_LIST FOLLOW_attribute_in_termNonVariable3856	= { FOLLOW_attribute_in_termNonVariable3856_bits, 2	};
1552
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3874  */
1553
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3874_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1554
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3874	= { FOLLOW_RPAREN_TOK_in_termNonVariable3874_bits, 1	};
1555
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3892  */
1556
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3892_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000080) };
1557
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3892	= { FOLLOW_LPAREN_TOK_in_termNonVariable3892_bits, 2	};
1558
/** Bitset defining follow set for error recovery in rule state: FOLLOW_HO_LAMBDA_TOK_in_termNonVariable3894  */
1559
static	ANTLR3_BITWORD FOLLOW_HO_LAMBDA_TOK_in_termNonVariable3894_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1560
static  ANTLR3_BITSET_LIST FOLLOW_HO_LAMBDA_TOK_in_termNonVariable3894	= { FOLLOW_HO_LAMBDA_TOK_in_termNonVariable3894_bits, 2	};
1561
/** Bitset defining follow set for error recovery in rule state: FOLLOW_boundVarList_in_termNonVariable3906  */
1562
static	ANTLR3_BITWORD FOLLOW_boundVarList_in_termNonVariable3906_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1563
static  ANTLR3_BITSET_LIST FOLLOW_boundVarList_in_termNonVariable3906	= { FOLLOW_boundVarList_in_termNonVariable3906_bits, 2	};
1564
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3913  */
1565
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3913_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1566
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3913	= { FOLLOW_term_in_termNonVariable3913_bits, 2	};
1567
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3916  */
1568
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3916_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1569
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3916	= { FOLLOW_RPAREN_TOK_in_termNonVariable3916_bits, 1	};
1570
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3928  */
1571
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3928_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000004000000000) };
1572
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3928	= { FOLLOW_LPAREN_TOK_in_termNonVariable3928_bits, 2	};
1573
/** Bitset defining follow set for error recovery in rule state: FOLLOW_TUPLE_CONST_TOK_in_termNonVariable3930  */
1574
static	ANTLR3_BITWORD FOLLOW_TUPLE_CONST_TOK_in_termNonVariable3930_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1575
static  ANTLR3_BITSET_LIST FOLLOW_TUPLE_CONST_TOK_in_termNonVariable3930	= { FOLLOW_TUPLE_CONST_TOK_in_termNonVariable3930_bits, 2	};
1576
/** Bitset defining follow set for error recovery in rule state: FOLLOW_termList_in_termNonVariable3932  */
1577
static	ANTLR3_BITWORD FOLLOW_termList_in_termNonVariable3932_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1578
static  ANTLR3_BITSET_LIST FOLLOW_termList_in_termNonVariable3932	= { FOLLOW_termList_in_termNonVariable3932_bits, 2	};
1579
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3935  */
1580
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3935_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1581
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3935	= { FOLLOW_RPAREN_TOK_in_termNonVariable3935_bits, 1	};
1582
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termNonVariable3945  */
1583
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termNonVariable3945_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000008000000000) };
1584
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termNonVariable3945	= { FOLLOW_LPAREN_TOK_in_termNonVariable3945_bits, 2	};
1585
/** Bitset defining follow set for error recovery in rule state: FOLLOW_TUPLE_PROJECT_TOK_in_termNonVariable3947  */
1586
static	ANTLR3_BITWORD FOLLOW_TUPLE_PROJECT_TOK_in_termNonVariable3947_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1587
static  ANTLR3_BITSET_LIST FOLLOW_TUPLE_PROJECT_TOK_in_termNonVariable3947	= { FOLLOW_TUPLE_PROJECT_TOK_in_termNonVariable3947_bits, 2	};
1588
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termNonVariable3949  */
1589
static	ANTLR3_BITWORD FOLLOW_term_in_termNonVariable3949_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1590
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termNonVariable3949	= { FOLLOW_term_in_termNonVariable3949_bits, 2	};
1591
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termNonVariable3952  */
1592
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termNonVariable3952_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1593
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termNonVariable3952	= { FOLLOW_RPAREN_TOK_in_termNonVariable3952_bits, 1	};
1594
/** Bitset defining follow set for error recovery in rule state: FOLLOW_termAtomic_in_termNonVariable3968  */
1595
static	ANTLR3_BITWORD FOLLOW_termAtomic_in_termNonVariable3968_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1596
static  ANTLR3_BITSET_LIST FOLLOW_termAtomic_in_termNonVariable3968	= { FOLLOW_termAtomic_in_termNonVariable3968_bits, 1	};
1597
/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_qualIdentifier3991  */
1598
static	ANTLR3_BITWORD FOLLOW_identifier_in_qualIdentifier3991_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1599
static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_qualIdentifier3991	= { FOLLOW_identifier_in_qualIdentifier3991_bits, 1	};
1600
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_qualIdentifier3998  */
1601
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_qualIdentifier3998_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000040) };
1602
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_qualIdentifier3998	= { FOLLOW_LPAREN_TOK_in_qualIdentifier3998_bits, 1	};
1603
/** Bitset defining follow set for error recovery in rule state: FOLLOW_AS_TOK_in_qualIdentifier4000  */
1604
static	ANTLR3_BITWORD FOLLOW_AS_TOK_in_qualIdentifier4000_bits[]	= { ANTLR3_UINT64_LIT(0x0000000004000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1605
static  ANTLR3_BITSET_LIST FOLLOW_AS_TOK_in_qualIdentifier4000	= { FOLLOW_AS_TOK_in_qualIdentifier4000_bits, 2	};
1606
/** Bitset defining follow set for error recovery in rule state: FOLLOW_CONST_TOK_in_qualIdentifier4008  */
1607
static	ANTLR3_BITWORD FOLLOW_CONST_TOK_in_qualIdentifier4008_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1608
static  ANTLR3_BITSET_LIST FOLLOW_CONST_TOK_in_qualIdentifier4008	= { FOLLOW_CONST_TOK_in_qualIdentifier4008_bits, 2	};
1609
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_qualIdentifier4010  */
1610
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_qualIdentifier4010_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1611
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_qualIdentifier4010	= { FOLLOW_sortSymbol_in_qualIdentifier4010_bits, 2	};
1612
/** Bitset defining follow set for error recovery in rule state: FOLLOW_identifier_in_qualIdentifier4027  */
1613
static	ANTLR3_BITWORD FOLLOW_identifier_in_qualIdentifier4027_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1614
static  ANTLR3_BITSET_LIST FOLLOW_identifier_in_qualIdentifier4027	= { FOLLOW_identifier_in_qualIdentifier4027_bits, 2	};
1615
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_qualIdentifier4036  */
1616
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_qualIdentifier4036_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1617
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_qualIdentifier4036	= { FOLLOW_sortSymbol_in_qualIdentifier4036_bits, 2	};
1618
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_qualIdentifier4057  */
1619
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_qualIdentifier4057_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1620
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_qualIdentifier4057	= { FOLLOW_RPAREN_TOK_in_qualIdentifier4057_bits, 1	};
1621
/** Bitset defining follow set for error recovery in rule state: FOLLOW_functionName_in_identifier4076  */
1622
static	ANTLR3_BITWORD FOLLOW_functionName_in_identifier4076_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1623
static  ANTLR3_BITSET_LIST FOLLOW_functionName_in_identifier4076	= { FOLLOW_functionName_in_identifier4076_bits, 1	};
1624
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_identifier4088  */
1625
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_identifier4088_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000200) };
1626
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_identifier4088	= { FOLLOW_LPAREN_TOK_in_identifier4088_bits, 2	};
1627
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_identifier4090  */
1628
static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_identifier4090_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x000005A010000000) };
1629
static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_identifier4090	= { FOLLOW_INDEX_TOK_in_identifier4090_bits, 2	};
1630
/** Bitset defining follow set for error recovery in rule state: FOLLOW_TESTER_TOK_in_identifier4098  */
1631
static	ANTLR3_BITWORD FOLLOW_TESTER_TOK_in_identifier4098_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1632
static  ANTLR3_BITSET_LIST FOLLOW_TESTER_TOK_in_identifier4098	= { FOLLOW_TESTER_TOK_in_identifier4098_bits, 2	};
1633
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_identifier4100  */
1634
static	ANTLR3_BITWORD FOLLOW_term_in_identifier4100_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1635
static  ANTLR3_BITSET_LIST FOLLOW_term_in_identifier4100	= { FOLLOW_term_in_identifier4100_bits, 2	};
1636
/** Bitset defining follow set for error recovery in rule state: FOLLOW_UPDATE_TOK_in_identifier4117  */
1637
static	ANTLR3_BITWORD FOLLOW_UPDATE_TOK_in_identifier4117_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1638
static  ANTLR3_BITSET_LIST FOLLOW_UPDATE_TOK_in_identifier4117	= { FOLLOW_UPDATE_TOK_in_identifier4117_bits, 2	};
1639
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_identifier4119  */
1640
static	ANTLR3_BITWORD FOLLOW_term_in_identifier4119_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1641
static  ANTLR3_BITSET_LIST FOLLOW_term_in_identifier4119	= { FOLLOW_term_in_identifier4119_bits, 2	};
1642
/** Bitset defining follow set for error recovery in rule state: FOLLOW_TUPLE_SEL_TOK_in_identifier4136  */
1643
static	ANTLR3_BITWORD FOLLOW_TUPLE_SEL_TOK_in_identifier4136_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000400) };
1644
static  ANTLR3_BITSET_LIST FOLLOW_TUPLE_SEL_TOK_in_identifier4136	= { FOLLOW_TUPLE_SEL_TOK_in_identifier4136_bits, 2	};
1645
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_identifier4140  */
1646
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_identifier4140_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1647
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_identifier4140	= { FOLLOW_INTEGER_LITERAL_in_identifier4140_bits, 2	};
1648
/** Bitset defining follow set for error recovery in rule state: FOLLOW_TUPLE_PROJECT_TOK_in_identifier4156  */
1649
static	ANTLR3_BITWORD FOLLOW_TUPLE_PROJECT_TOK_in_identifier4156_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000400) };
1650
static  ANTLR3_BITSET_LIST FOLLOW_TUPLE_PROJECT_TOK_in_identifier4156	= { FOLLOW_TUPLE_PROJECT_TOK_in_identifier4156_bits, 2	};
1651
/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptyNumeralList_in_identifier4158  */
1652
static	ANTLR3_BITWORD FOLLOW_nonemptyNumeralList_in_identifier4158_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1653
static  ANTLR3_BITSET_LIST FOLLOW_nonemptyNumeralList_in_identifier4158	= { FOLLOW_nonemptyNumeralList_in_identifier4158_bits, 2	};
1654
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_identifier4177  */
1655
static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_identifier4177_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000400) };
1656
static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_identifier4177	= { FOLLOW_SIMPLE_SYMBOL_in_identifier4177_bits, 2	};
1657
/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptyNumeralList_in_identifier4179  */
1658
static	ANTLR3_BITWORD FOLLOW_nonemptyNumeralList_in_identifier4179_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1659
static  ANTLR3_BITSET_LIST FOLLOW_nonemptyNumeralList_in_identifier4179	= { FOLLOW_nonemptyNumeralList_in_identifier4179_bits, 2	};
1660
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_identifier4200  */
1661
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_identifier4200_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1662
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_identifier4200	= { FOLLOW_RPAREN_TOK_in_identifier4200_bits, 1	};
1663
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_termAtomic4227  */
1664
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_termAtomic4227_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1665
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_termAtomic4227	= { FOLLOW_INTEGER_LITERAL_in_termAtomic4227_bits, 1	};
1666
/** Bitset defining follow set for error recovery in rule state: FOLLOW_DECIMAL_LITERAL_in_termAtomic4239  */
1667
static	ANTLR3_BITWORD FOLLOW_DECIMAL_LITERAL_in_termAtomic4239_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1668
static  ANTLR3_BITSET_LIST FOLLOW_DECIMAL_LITERAL_in_termAtomic4239	= { FOLLOW_DECIMAL_LITERAL_in_termAtomic4239_bits, 1	};
1669
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_termAtomic4258  */
1670
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_termAtomic4258_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000200) };
1671
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_termAtomic4258	= { FOLLOW_LPAREN_TOK_in_termAtomic4258_bits, 2	};
1672
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_termAtomic4260  */
1673
static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_termAtomic4260_bits[]	= { ANTLR3_UINT64_LIT(0x0008000000080000), ANTLR3_UINT64_LIT(0x0000000010000000) };
1674
static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_termAtomic4260	= { FOLLOW_INDEX_TOK_in_termAtomic4260_bits, 2	};
1675
/** Bitset defining follow set for error recovery in rule state: FOLLOW_EMP_TOK_in_termAtomic4268  */
1676
static	ANTLR3_BITWORD FOLLOW_EMP_TOK_in_termAtomic4268_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1677
static  ANTLR3_BITSET_LIST FOLLOW_EMP_TOK_in_termAtomic4268	= { FOLLOW_EMP_TOK_in_termAtomic4268_bits, 2	};
1678
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_termAtomic4276  */
1679
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_termAtomic4276_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1680
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_termAtomic4276	= { FOLLOW_sortSymbol_in_termAtomic4276_bits, 2	};
1681
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_termAtomic4285  */
1682
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_termAtomic4285_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1683
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_termAtomic4285	= { FOLLOW_sortSymbol_in_termAtomic4285_bits, 2	};
1684
/** Bitset defining follow set for error recovery in rule state: FOLLOW_CHAR_TOK_in_termAtomic4302  */
1685
static	ANTLR3_BITWORD FOLLOW_CHAR_TOK_in_termAtomic4302_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000020) };
1686
static  ANTLR3_BITSET_LIST FOLLOW_CHAR_TOK_in_termAtomic4302	= { FOLLOW_CHAR_TOK_in_termAtomic4302_bits, 2	};
1687
/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_termAtomic4304  */
1688
static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_termAtomic4304_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1689
static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_termAtomic4304	= { FOLLOW_HEX_LITERAL_in_termAtomic4304_bits, 2	};
1690
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_termAtomic4323  */
1691
static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_termAtomic4323_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000400) };
1692
static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_termAtomic4323	= { FOLLOW_SIMPLE_SYMBOL_in_termAtomic4323_bits, 2	};
1693
/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptyNumeralList_in_termAtomic4325  */
1694
static	ANTLR3_BITWORD FOLLOW_nonemptyNumeralList_in_termAtomic4325_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1695
static  ANTLR3_BITSET_LIST FOLLOW_nonemptyNumeralList_in_termAtomic4325	= { FOLLOW_nonemptyNumeralList_in_termAtomic4325_bits, 2	};
1696
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_termAtomic4346  */
1697
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_termAtomic4346_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1698
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_termAtomic4346	= { FOLLOW_RPAREN_TOK_in_termAtomic4346_bits, 1	};
1699
/** Bitset defining follow set for error recovery in rule state: FOLLOW_HEX_LITERAL_in_termAtomic4356  */
1700
static	ANTLR3_BITWORD FOLLOW_HEX_LITERAL_in_termAtomic4356_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1701
static  ANTLR3_BITSET_LIST FOLLOW_HEX_LITERAL_in_termAtomic4356	= { FOLLOW_HEX_LITERAL_in_termAtomic4356_bits, 1	};
1702
/** Bitset defining follow set for error recovery in rule state: FOLLOW_BINARY_LITERAL_in_termAtomic4368  */
1703
static	ANTLR3_BITWORD FOLLOW_BINARY_LITERAL_in_termAtomic4368_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1704
static  ANTLR3_BITSET_LIST FOLLOW_BINARY_LITERAL_in_termAtomic4368	= { FOLLOW_BINARY_LITERAL_in_termAtomic4368_bits, 1	};
1705
/** Bitset defining follow set for error recovery in rule state: FOLLOW_str_in_termAtomic4384  */
1706
static	ANTLR3_BITWORD FOLLOW_str_in_termAtomic4384_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1707
static  ANTLR3_BITSET_LIST FOLLOW_str_in_termAtomic4384	= { FOLLOW_str_in_termAtomic4384_bits, 1	};
1708
/** Bitset defining follow set for error recovery in rule state: FOLLOW_TUPLE_CONST_TOK_in_termAtomic4401  */
1709
static	ANTLR3_BITWORD FOLLOW_TUPLE_CONST_TOK_in_termAtomic4401_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1710
static  ANTLR3_BITSET_LIST FOLLOW_TUPLE_CONST_TOK_in_termAtomic4401	= { FOLLOW_TUPLE_CONST_TOK_in_termAtomic4401_bits, 1	};
1711
/** Bitset defining follow set for error recovery in rule state: FOLLOW_KEYWORD_in_attribute4428  */
1712
static	ANTLR3_BITWORD FOLLOW_KEYWORD_in_attribute4428_bits[]	= { ANTLR3_UINT64_LIT(0x7724F21208310022), ANTLR3_UINT64_LIT(0x000002007B7C042E) };
1713
static  ANTLR3_BITSET_LIST FOLLOW_KEYWORD_in_attribute4428	= { FOLLOW_KEYWORD_in_attribute4428_bits, 2	};
1714
/** Bitset defining follow set for error recovery in rule state: FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4432  */
1715
static	ANTLR3_BITWORD FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4432_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1716
static  ANTLR3_BITSET_LIST FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4432	= { FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4432_bits, 1	};
1717
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4450  */
1718
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4450_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1719
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4450	= { FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4450_bits, 2	};
1720
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_POOL_TOK_in_attribute4462  */
1721
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_POOL_TOK_in_attribute4462_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1722
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_POOL_TOK_in_attribute4462	= { FOLLOW_ATTRIBUTE_POOL_TOK_in_attribute4462_bits, 2	};
1723
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_INST_ADD_TO_POOL_TOK_in_attribute4475  */
1724
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_INST_ADD_TO_POOL_TOK_in_attribute4475_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1725
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_INST_ADD_TO_POOL_TOK_in_attribute4475	= { FOLLOW_ATTRIBUTE_INST_ADD_TO_POOL_TOK_in_attribute4475_bits, 2	};
1726
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK_in_attribute4488  */
1727
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK_in_attribute4488_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1728
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK_in_attribute4488	= { FOLLOW_ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK_in_attribute4488_bits, 2	};
1729
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_attribute4502  */
1730
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_attribute4502_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1731
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_attribute4502	= { FOLLOW_LPAREN_TOK_in_attribute4502_bits, 2	};
1732
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_attribute4510  */
1733
static	ANTLR3_BITWORD FOLLOW_term_in_attribute4510_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050904420) };
1734
static  ANTLR3_BITSET_LIST FOLLOW_term_in_attribute4510	= { FOLLOW_term_in_attribute4510_bits, 2	};
1735
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_attribute4528  */
1736
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_attribute4528_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1737
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_attribute4528	= { FOLLOW_RPAREN_TOK_in_attribute4528_bits, 1	};
1738
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4540  */
1739
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4540_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010000), ANTLR3_UINT64_LIT(0x0000024050104420) };
1740
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4540	= { FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4540_bits, 2	};
1741
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_attribute4542  */
1742
static	ANTLR3_BITWORD FOLLOW_term_in_attribute4542_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1743
static  ANTLR3_BITSET_LIST FOLLOW_term_in_attribute4542	= { FOLLOW_term_in_attribute4542_bits, 1	};
1744
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_INST_LEVEL_in_attribute4559  */
1745
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_INST_LEVEL_in_attribute4559_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000400) };
1746
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_INST_LEVEL_in_attribute4559	= { FOLLOW_ATTRIBUTE_INST_LEVEL_in_attribute4559_bits, 2	};
1747
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_attribute4563  */
1748
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_attribute4563_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1749
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_attribute4563	= { FOLLOW_INTEGER_LITERAL_in_attribute4563_bits, 1	};
1750
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_QUANTIFIER_ID_TOK_in_attribute4579  */
1751
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_QUANTIFIER_ID_TOK_in_attribute4579_bits[]	= { ANTLR3_UINT64_LIT(0x7724F21208310020), ANTLR3_UINT64_LIT(0x000002007B7C542E) };
1752
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_QUANTIFIER_ID_TOK_in_attribute4579	= { FOLLOW_ATTRIBUTE_QUANTIFIER_ID_TOK_in_attribute4579_bits, 2	};
1753
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_attribute4583  */
1754
static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_attribute4583_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1755
static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_attribute4583	= { FOLLOW_symbolicExpr_in_attribute4583_bits, 1	};
1756
/** Bitset defining follow set for error recovery in rule state: FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4596  */
1757
static	ANTLR3_BITWORD FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4596_bits[]	= { ANTLR3_UINT64_LIT(0x7724F21208310020), ANTLR3_UINT64_LIT(0x000002007B7C542E) };
1758
static  ANTLR3_BITSET_LIST FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4596	= { FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4596_bits, 2	};
1759
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbolicExpr_in_attribute4598  */
1760
static	ANTLR3_BITWORD FOLLOW_symbolicExpr_in_attribute4598_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1761
static  ANTLR3_BITSET_LIST FOLLOW_symbolicExpr_in_attribute4598	= { FOLLOW_symbolicExpr_in_attribute4598_bits, 1	};
1762
/** Bitset defining follow set for error recovery in rule state: FOLLOW_term_in_termList4630  */
1763
static	ANTLR3_BITWORD FOLLOW_term_in_termList4630_bits[]	= { ANTLR3_UINT64_LIT(0x0000000008010002), ANTLR3_UINT64_LIT(0x0000024050104420) };
1764
static  ANTLR3_BITSET_LIST FOLLOW_term_in_termList4630	= { FOLLOW_term_in_termList4630_bits, 2	};
1765
/** Bitset defining follow set for error recovery in rule state: FOLLOW_STRING_LITERAL_in_str4652  */
1766
static	ANTLR3_BITWORD FOLLOW_STRING_LITERAL_in_str4652_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1767
static  ANTLR3_BITSET_LIST FOLLOW_STRING_LITERAL_in_str4652	= { FOLLOW_STRING_LITERAL_in_str4652_bits, 1	};
1768
/** Bitset defining follow set for error recovery in rule state: FOLLOW_EXISTS_TOK_in_quantOp4677  */
1769
static	ANTLR3_BITWORD FOLLOW_EXISTS_TOK_in_quantOp4677_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1770
static  ANTLR3_BITSET_LIST FOLLOW_EXISTS_TOK_in_quantOp4677	= { FOLLOW_EXISTS_TOK_in_quantOp4677_bits, 1	};
1771
/** Bitset defining follow set for error recovery in rule state: FOLLOW_FORALL_TOK_in_quantOp4688  */
1772
static	ANTLR3_BITWORD FOLLOW_FORALL_TOK_in_quantOp4688_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1773
static  ANTLR3_BITSET_LIST FOLLOW_FORALL_TOK_in_quantOp4688	= { FOLLOW_FORALL_TOK_in_quantOp4688_bits, 1	};
1774
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_functionName4709  */
1775
static	ANTLR3_BITWORD FOLLOW_symbol_in_functionName4709_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1776
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_functionName4709	= { FOLLOW_symbol_in_functionName4709_bits, 1	};
1777
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortList4733  */
1778
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortList4733_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020010104000) };
1779
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortList4733	= { FOLLOW_sortSymbol_in_sortList4733_bits, 2	};
1780
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_nonemptySortList4760  */
1781
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_nonemptySortList4760_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020010104000) };
1782
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_nonemptySortList4760	= { FOLLOW_sortSymbol_in_nonemptySortList4760_bits, 2	};
1783
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortedVarList4789  */
1784
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortedVarList4789_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1785
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortedVarList4789	= { FOLLOW_LPAREN_TOK_in_sortedVarList4789_bits, 2	};
1786
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortedVarList4791  */
1787
static	ANTLR3_BITWORD FOLLOW_symbol_in_sortedVarList4791_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1788
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortedVarList4791	= { FOLLOW_symbol_in_sortedVarList4791_bits, 2	};
1789
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_sortedVarList4800  */
1790
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_sortedVarList4800_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1791
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_sortedVarList4800	= { FOLLOW_sortSymbol_in_sortedVarList4800_bits, 2	};
1792
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortedVarList4803  */
1793
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortedVarList4803_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000004000) };
1794
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortedVarList4803	= { FOLLOW_RPAREN_TOK_in_sortedVarList4803_bits, 2	};
1795
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_boundVarList4838  */
1796
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_boundVarList4838_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000804000) };
1797
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_boundVarList4838	= { FOLLOW_LPAREN_TOK_in_boundVarList4838_bits, 2	};
1798
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortedVarList_in_boundVarList4840  */
1799
static	ANTLR3_BITWORD FOLLOW_sortedVarList_in_boundVarList4840_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1800
static  ANTLR3_BITSET_LIST FOLLOW_sortedVarList_in_boundVarList4840	= { FOLLOW_sortedVarList_in_boundVarList4840_bits, 2	};
1801
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_boundVarList4843  */
1802
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_boundVarList4843_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1803
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_boundVarList4843	= { FOLLOW_RPAREN_TOK_in_boundVarList4843_bits, 1	};
1804
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortName4863  */
1805
static	ANTLR3_BITWORD FOLLOW_symbol_in_sortName4863_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1806
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortName4863	= { FOLLOW_symbol_in_sortName4863_bits, 1	};
1807
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortName_in_sortSymbol4883  */
1808
static	ANTLR3_BITWORD FOLLOW_sortName_in_sortSymbol4883_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1809
static  ANTLR3_BITSET_LIST FOLLOW_sortName_in_sortSymbol4883	= { FOLLOW_sortName_in_sortSymbol4883_bits, 1	};
1810
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortSymbol4896  */
1811
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortSymbol4896_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100200) };
1812
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortSymbol4896	= { FOLLOW_LPAREN_TOK_in_sortSymbol4896_bits, 2	};
1813
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INDEX_TOK_in_sortSymbol4899  */
1814
static	ANTLR3_BITWORD FOLLOW_INDEX_TOK_in_sortSymbol4899_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1815
static  ANTLR3_BITSET_LIST FOLLOW_INDEX_TOK_in_sortSymbol4899	= { FOLLOW_INDEX_TOK_in_sortSymbol4899_bits, 2	};
1816
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_sortSymbol4912  */
1817
static	ANTLR3_BITWORD FOLLOW_symbol_in_sortSymbol4912_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010904400) };
1818
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_sortSymbol4912	= { FOLLOW_symbol_in_sortSymbol4912_bits, 2	};
1819
/** Bitset defining follow set for error recovery in rule state: FOLLOW_nonemptyNumeralList_in_sortSymbol4921  */
1820
static	ANTLR3_BITWORD FOLLOW_nonemptyNumeralList_in_sortSymbol4921_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1821
static  ANTLR3_BITSET_LIST FOLLOW_nonemptyNumeralList_in_sortSymbol4921	= { FOLLOW_nonemptyNumeralList_in_sortSymbol4921_bits, 2	};
1822
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_sortSymbol4938  */
1823
static	ANTLR3_BITWORD FOLLOW_sortList_in_sortSymbol4938_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1824
static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_sortSymbol4938	= { FOLLOW_sortList_in_sortSymbol4938_bits, 2	};
1825
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortSymbol4955  */
1826
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortSymbol4955_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1827
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortSymbol4955	= { FOLLOW_RPAREN_TOK_in_sortSymbol4955_bits, 1	};
1828
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_sortSymbol4961  */
1829
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_sortSymbol4961_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000000040) };
1830
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_sortSymbol4961	= { FOLLOW_LPAREN_TOK_in_sortSymbol4961_bits, 2	};
1831
/** Bitset defining follow set for error recovery in rule state: FOLLOW_HO_ARROW_TOK_in_sortSymbol4963  */
1832
static	ANTLR3_BITWORD FOLLOW_HO_ARROW_TOK_in_sortSymbol4963_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010904000) };
1833
static  ANTLR3_BITSET_LIST FOLLOW_HO_ARROW_TOK_in_sortSymbol4963	= { FOLLOW_HO_ARROW_TOK_in_sortSymbol4963_bits, 2	};
1834
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortList_in_sortSymbol4965  */
1835
static	ANTLR3_BITWORD FOLLOW_sortList_in_sortSymbol4965_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1836
static  ANTLR3_BITSET_LIST FOLLOW_sortList_in_sortSymbol4965	= { FOLLOW_sortList_in_sortSymbol4965_bits, 2	};
1837
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_sortSymbol4968  */
1838
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_sortSymbol4968_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1839
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_sortSymbol4968	= { FOLLOW_RPAREN_TOK_in_sortSymbol4968_bits, 1	};
1840
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_symbolList4997  */
1841
static	ANTLR3_BITWORD FOLLOW_symbol_in_symbolList4997_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000020010100000) };
1842
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_symbolList4997	= { FOLLOW_symbol_in_symbolList4997_bits, 2	};
1843
/** Bitset defining follow set for error recovery in rule state: FOLLOW_SIMPLE_SYMBOL_in_symbol5019  */
1844
static	ANTLR3_BITWORD FOLLOW_SIMPLE_SYMBOL_in_symbol5019_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1845
static  ANTLR3_BITSET_LIST FOLLOW_SIMPLE_SYMBOL_in_symbol5019	= { FOLLOW_SIMPLE_SYMBOL_in_symbol5019_bits, 1	};
1846
/** Bitset defining follow set for error recovery in rule state: FOLLOW_QUOTED_SYMBOL_in_symbol5031  */
1847
static	ANTLR3_BITWORD FOLLOW_QUOTED_SYMBOL_in_symbol5031_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1848
static  ANTLR3_BITSET_LIST FOLLOW_QUOTED_SYMBOL_in_symbol5031	= { FOLLOW_QUOTED_SYMBOL_in_symbol5031_bits, 1	};
1849
/** Bitset defining follow set for error recovery in rule state: FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5043  */
1850
static	ANTLR3_BITWORD FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5043_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000100000000000) };
1851
static  ANTLR3_BITSET_LIST FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5043	= { FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5043_bits, 2	};
1852
/** Bitset defining follow set for error recovery in rule state: FOLLOW_EOF_in_symbol5051  */
1853
static	ANTLR3_BITWORD FOLLOW_EOF_in_symbol5051_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1854
static  ANTLR3_BITSET_LIST FOLLOW_EOF_in_symbol5051	= { FOLLOW_EOF_in_symbol5051_bits, 1	};
1855
/** Bitset defining follow set for error recovery in rule state: FOLLOW_108_in_symbol5067  */
1856
static	ANTLR3_BITWORD FOLLOW_108_in_symbol5067_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1857
static  ANTLR3_BITSET_LIST FOLLOW_108_in_symbol5067	= { FOLLOW_108_in_symbol5067_bits, 1	};
1858
/** Bitset defining follow set for error recovery in rule state: FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5099  */
1859
static	ANTLR3_BITWORD FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5099_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000000400) };
1860
static  ANTLR3_BITSET_LIST FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5099	= { FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5099_bits, 2	};
1861
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_datatypeDef5141  */
1862
static	ANTLR3_BITWORD FOLLOW_symbol_in_datatypeDef5141_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000004000) };
1863
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_datatypeDef5141	= { FOLLOW_symbol_in_datatypeDef5141_bits, 2	};
1864
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_datatypeDef5158  */
1865
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_datatypeDef5158_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1866
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_datatypeDef5158	= { FOLLOW_LPAREN_TOK_in_datatypeDef5158_bits, 2	};
1867
/** Bitset defining follow set for error recovery in rule state: FOLLOW_constructorDef_in_datatypeDef5160  */
1868
static	ANTLR3_BITWORD FOLLOW_constructorDef_in_datatypeDef5160_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1869
static  ANTLR3_BITSET_LIST FOLLOW_constructorDef_in_datatypeDef5160	= { FOLLOW_constructorDef_in_datatypeDef5160_bits, 2	};
1870
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_datatypeDef5163  */
1871
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_datatypeDef5163_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000004000) };
1872
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_datatypeDef5163	= { FOLLOW_RPAREN_TOK_in_datatypeDef5163_bits, 2	};
1873
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_constructorDef5193  */
1874
static	ANTLR3_BITWORD FOLLOW_symbol_in_constructorDef5193_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000004000) };
1875
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_constructorDef5193	= { FOLLOW_symbol_in_constructorDef5193_bits, 2	};
1876
/** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_TOK_in_constructorDef5208  */
1877
static	ANTLR3_BITWORD FOLLOW_LPAREN_TOK_in_constructorDef5208_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010100000) };
1878
static  ANTLR3_BITSET_LIST FOLLOW_LPAREN_TOK_in_constructorDef5208	= { FOLLOW_LPAREN_TOK_in_constructorDef5208_bits, 2	};
1879
/** Bitset defining follow set for error recovery in rule state: FOLLOW_selector_in_constructorDef5210  */
1880
static	ANTLR3_BITWORD FOLLOW_selector_in_constructorDef5210_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000000000800000) };
1881
static  ANTLR3_BITSET_LIST FOLLOW_selector_in_constructorDef5210	= { FOLLOW_selector_in_constructorDef5210_bits, 2	};
1882
/** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_TOK_in_constructorDef5213  */
1883
static	ANTLR3_BITWORD FOLLOW_RPAREN_TOK_in_constructorDef5213_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002), ANTLR3_UINT64_LIT(0x0000000000004000) };
1884
static  ANTLR3_BITSET_LIST FOLLOW_RPAREN_TOK_in_constructorDef5213	= { FOLLOW_RPAREN_TOK_in_constructorDef5213_bits, 2	};
1885
/** Bitset defining follow set for error recovery in rule state: FOLLOW_symbol_in_selector5241  */
1886
static	ANTLR3_BITWORD FOLLOW_symbol_in_selector5241_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000000), ANTLR3_UINT64_LIT(0x0000020010104000) };
1887
static  ANTLR3_BITSET_LIST FOLLOW_symbol_in_selector5241	= { FOLLOW_symbol_in_selector5241_bits, 2	};
1888
/** Bitset defining follow set for error recovery in rule state: FOLLOW_sortSymbol_in_selector5244  */
1889
static	ANTLR3_BITWORD FOLLOW_sortSymbol_in_selector5244_bits[]	= { ANTLR3_UINT64_LIT(0x0000000000000002) };
1890
static  ANTLR3_BITSET_LIST FOLLOW_sortSymbol_in_selector5244	= { FOLLOW_sortSymbol_in_selector5244_bits, 1	};
1891
1892
1893
/* ==============================================
1894
 * Parsing rules
1895
 */
1896
/**
1897
 * $ANTLR start parseExpr
1898
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:138:1: parseExpr returns [cvc5::api::Term expr = cvc5::api::Term()] : ( term[expr, expr2] | EOF );
1899
 */
1900
static cvc5::api::Term
1901
116
parseExpr(pSmt2Parser ctx)
1902
{
1903
116
    cvc5::api::Term expr;
1904
1905
1906
1907
232
      cvc5::api::Term expr2;
1908
1909
    /* Initialize rule variables
1910
     */
1911
116
    expr =  cvc5::api::Term();
1912
1913
1914
    {
1915
        {
1916
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:142:3: ( term[expr, expr2] | EOF )
1917
1918
            ANTLR3_UINT32 alt1;
1919
1920
116
            alt1=2;
1921
1922
116
            switch ( LA(1) )
1923
            {
1924
69
            case BINARY_LITERAL:
1925
            case DECIMAL_LITERAL:
1926
            case HEX_LITERAL:
1927
            case INTEGER_LITERAL:
1928
            case LPAREN_TOK:
1929
            case QUOTED_SYMBOL:
1930
            case SIMPLE_SYMBOL:
1931
            case STRING_LITERAL:
1932
            case TUPLE_CONST_TOK:
1933
            case UNTERMINATED_QUOTED_SYMBOL:
1934
            	{
1935
69
            		alt1=1;
1936
            	}
1937
69
                break;
1938
37
            case EOF:
1939
            	{
1940
37
            		alt1=2;
1941
            	}
1942
37
                break;
1943
1944
            default:
1945
                CONSTRUCTEX();
1946
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
1947
                EXCEPTION->message      = (void *)"";
1948
                EXCEPTION->decisionNum  = 1;
1949
                EXCEPTION->state        = 0;
1950
1951
1952
                goto ruleparseExprEx;
1953
1954
            }
1955
1956
106
            switch (alt1)
1957
            {
1958
69
        	case 1:
1959
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:142:5: term[expr, expr2]
1960
        	    {
1961
69
        	        FOLLOWPUSH(FOLLOW_term_in_parseExpr117);
1962
69
        	        term(ctx, expr, expr2);
1963
1964
37
        	        FOLLOWPOP();
1965
37
        	        if  (HASEXCEPTION())
1966
        	        {
1967
        	            goto ruleparseExprEx;
1968
        	        }
1969
1970
1971
        	    }
1972
37
        	    break;
1973
37
        	case 2:
1974
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:143:5: EOF
1975
        	    {
1976
37
        	         MATCHT(EOF, &FOLLOW_EOF_in_parseExpr124);
1977
37
        	        if  (HASEXCEPTION())
1978
        	        {
1979
        	            goto ruleparseExprEx;
1980
        	        }
1981
1982
1983
        	    }
1984
37
        	    break;
1985
1986
            }
1987
        }
1988
    }
1989
1990
    // This is where rules clean up and exit
1991
    //
1992
74
    goto ruleparseExprEx; /* Prevent compiler warnings */
1993
74
    ruleparseExprEx: ;
1994
1995
74
            if (HASEXCEPTION())
1996
            {
1997
                PREPORTERROR();
1998
                PRECOVER();
1999
            }
2000
148
    return expr;
2001
}
2002
/* $ANTLR end parseExpr */
2003
2004
/**
2005
 * $ANTLR start parseCommand
2006
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:150:1: parseCommand returns [cvc5::Command* cmd_return = NULL] : ( LPAREN_TOK command[&cmd] RPAREN_TOK | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK | EOF );
2007
 */
2008
static cvc5::Command*
2009
276925
parseCommand(pSmt2Parser ctx)
2010
{
2011
    cvc5::Command* cmd_return;
2012
2013
2014
2015
553850
      std::unique_ptr<cvc5::Command> cmd;
2016
553850
      std::string name;
2017
2018
    /* Initialize rule variables
2019
     */
2020
276925
    cmd_return =  NULL;
2021
2022
2023
    {
2024
        {
2025
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:158:3: ( LPAREN_TOK command[&cmd] RPAREN_TOK | LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK | EOF )
2026
2027
            ANTLR3_UINT32 alt2;
2028
2029
276925
            alt2=3;
2030
2031
276925
            switch ( LA(1) )
2032
            {
2033
272806
            case LPAREN_TOK:
2034
            	{
2035
272806
            		switch ( LA(2) )
2036
            		{
2037
            		case INCLUDE_TOK:
2038
            			{
2039
            				alt2=2;
2040
            			}
2041
            		    break;
2042
272806
            		case ASSERT_TOK:
2043
            		case BLOCK_MODEL_TOK:
2044
            		case BLOCK_MODEL_VALUES_TOK:
2045
            		case CHECK_SAT_ASSUMING_TOK:
2046
            		case CHECK_SAT_TOK:
2047
            		case DECLARE_CODATATYPES_TOK:
2048
            		case DECLARE_CODATATYPE_TOK:
2049
            		case DECLARE_CONST_TOK:
2050
            		case DECLARE_DATATYPES_TOK:
2051
            		case DECLARE_DATATYPE_TOK:
2052
            		case DECLARE_FUNS_TOK:
2053
            		case DECLARE_FUN_TOK:
2054
            		case DECLARE_HEAP:
2055
            		case DECLARE_POOL:
2056
            		case DECLARE_PREDS_TOK:
2057
            		case DECLARE_SORTS_TOK:
2058
            		case DECLARE_SORT_TOK:
2059
            		case DEFINE_CONST_TOK:
2060
            		case DEFINE_FUNS_REC_TOK:
2061
            		case DEFINE_FUN_REC_TOK:
2062
            		case DEFINE_FUN_TOK:
2063
            		case DEFINE_SORT_TOK:
2064
            		case DEFINE_TOK:
2065
            		case ECHO_TOK:
2066
            		case EXIT_TOK:
2067
            		case GET_ABDUCT_TOK:
2068
            		case GET_ASSERTIONS_TOK:
2069
            		case GET_ASSIGNMENT_TOK:
2070
            		case GET_INFO_TOK:
2071
            		case GET_INTERPOL_TOK:
2072
            		case GET_MODEL_TOK:
2073
            		case GET_OPTION_TOK:
2074
            		case GET_PROOF_TOK:
2075
            		case GET_QE_DISJUNCT_TOK:
2076
            		case GET_QE_TOK:
2077
            		case GET_UNSAT_ASSUMPTIONS_TOK:
2078
            		case GET_UNSAT_CORE_TOK:
2079
            		case GET_VALUE_TOK:
2080
            		case POP_TOK:
2081
            		case PUSH_TOK:
2082
            		case RESET_ASSERTIONS_TOK:
2083
            		case RESET_TOK:
2084
            		case SET_INFO_TOK:
2085
            		case SET_LOGIC_TOK:
2086
            		case SET_OPTION_TOK:
2087
            		case SIMPLE_SYMBOL:
2088
            		case SIMPLIFY_TOK:
2089
            			{
2090
272806
            				alt2=1;
2091
            			}
2092
272806
            		    break;
2093
2094
            		default:
2095
            		    CONSTRUCTEX();
2096
            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
2097
            		    EXCEPTION->message      = (void *)"";
2098
            		    EXCEPTION->decisionNum  = 2;
2099
            		    EXCEPTION->state        = 1;
2100
2101
2102
            		    goto ruleparseCommandEx;
2103
2104
            		}
2105
2106
            	}
2107
272806
                break;
2108
4119
            case EOF:
2109
            	{
2110
4119
            		alt2=3;
2111
            	}
2112
4119
                break;
2113
2114
            default:
2115
                CONSTRUCTEX();
2116
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
2117
                EXCEPTION->message      = (void *)"";
2118
                EXCEPTION->decisionNum  = 2;
2119
                EXCEPTION->state        = 0;
2120
2121
2122
                goto ruleparseCommandEx;
2123
2124
            }
2125
2126
276925
            switch (alt2)
2127
            {
2128
272806
        	case 1:
2129
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:158:5: LPAREN_TOK command[&cmd] RPAREN_TOK
2130
        	    {
2131
272806
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand153);
2132
272806
        	        if  (HASEXCEPTION())
2133
        	        {
2134
        	            goto ruleparseCommandEx;
2135
        	        }
2136
2137
2138
272806
        	        FOLLOWPUSH(FOLLOW_command_in_parseCommand155);
2139
272806
        	        command(ctx, &cmd);
2140
2141
272776
        	        FOLLOWPOP();
2142
272776
        	        if  (HASEXCEPTION())
2143
        	        {
2144
        	            goto ruleparseCommandEx;
2145
        	        }
2146
2147
2148
272776
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseCommand158);
2149
272776
        	        if  (HASEXCEPTION())
2150
        	        {
2151
2
        	            goto ruleparseCommandEx;
2152
        	        }
2153
2154
2155
        	    }
2156
272774
        	    break;
2157
        	case 2:
2158
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:163:5: LPAREN_TOK INCLUDE_TOK str[name,true] RPAREN_TOK
2159
        	    {
2160
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseCommand171);
2161
        	        if  (HASEXCEPTION())
2162
        	        {
2163
        	            goto ruleparseCommandEx;
2164
        	        }
2165
2166
2167
        	         MATCHT(INCLUDE_TOK, &FOLLOW_INCLUDE_TOK_in_parseCommand173);
2168
        	        if  (HASEXCEPTION())
2169
        	        {
2170
        	            goto ruleparseCommandEx;
2171
        	        }
2172
2173
2174
        	        FOLLOWPUSH(FOLLOW_str_in_parseCommand175);
2175
        	        str(ctx, name, true);
2176
2177
        	        FOLLOWPOP();
2178
        	        if  (HASEXCEPTION())
2179
        	        {
2180
        	            goto ruleparseCommandEx;
2181
        	        }
2182
2183
2184
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseCommand178);
2185
        	        if  (HASEXCEPTION())
2186
        	        {
2187
        	            goto ruleparseCommandEx;
2188
        	        }
2189
2190
2191
        	        {
2192
        	             if(!PARSER_STATE->canIncludeFile()) {
2193
        	                    PARSER_STATE->parseError("include-file feature was disabled for this "
2194
        	                                             "run.");
2195
        	                  }
2196
        	                  if(PARSER_STATE->strictModeEnabled()) {
2197
        	                    PARSER_STATE->parseError("Extended commands are not permitted while "
2198
        	                                             "operating in strict compliance mode.");
2199
        	                  }
2200
        	                  PARSER_STATE->includeFile(name);
2201
        	                  // The command of the included file will be produced at the next
2202
        	                  // parseCommand() call
2203
        	                  cmd.reset(new EmptyCommand("include::" + name));
2204
2205
        	        }
2206
2207
2208
        	    }
2209
        	    break;
2210
4119
        	case 3:
2211
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:178:5: EOF
2212
        	    {
2213
4119
        	         MATCHT(EOF, &FOLLOW_EOF_in_parseCommand191);
2214
4119
        	        if  (HASEXCEPTION())
2215
        	        {
2216
        	            goto ruleparseCommandEx;
2217
        	        }
2218
2219
2220
        	    }
2221
4119
        	    break;
2222
2223
            }
2224
        }
2225
    }
2226
2227
    // This is where rules clean up and exit
2228
    //
2229
276893
    goto ruleparseCommandEx; /* Prevent compiler warnings */
2230
276895
    ruleparseCommandEx: ;
2231
2232
276895
            if (HASEXCEPTION())
2233
            {
2234
2
                PREPORTERROR();
2235
                PRECOVER();
2236
            }
2237
            else
2238
            {
2239
                {
2240
2241
276893
                      cmd_return = cmd.release();
2242
2243
                }
2244
            }
2245
2246
2247
553786
    return cmd_return;
2248
}
2249
/* $ANTLR end parseCommand */
2250
2251
/**
2252
 * $ANTLR start parseSygus
2253
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:186:1: parseSygus returns [cvc5::Command* cmd_return = NULL] : ( LPAREN_TOK cmd= sygusCommand RPAREN_TOK | EOF );
2254
 */
2255
static cvc5::Command*
2256
2106
parseSygus(pSmt2Parser ctx)
2257
{
2258
    cvc5::Command* cmd_return;
2259
2260
2261
2262
4212
      std::string name;
2263
2264
4212
    std::unique_ptr<cvc5::Command> cmd;
2265
    #undef	RETURN_TYPE_cmd
2266
    #define	RETURN_TYPE_cmd std::unique_ptr<cvc5::Command>
2267
2268
    /* Initialize rule variables
2269
     */
2270
2106
    cmd_return =  NULL;
2271
2272
2273
    {
2274
        {
2275
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:193:3: ( LPAREN_TOK cmd= sygusCommand RPAREN_TOK | EOF )
2276
2277
            ANTLR3_UINT32 alt3;
2278
2279
2106
            alt3=2;
2280
2281
2106
            switch ( LA(1) )
2282
            {
2283
1926
            case LPAREN_TOK:
2284
            	{
2285
1926
            		alt3=1;
2286
            	}
2287
1926
                break;
2288
180
            case EOF:
2289
            	{
2290
180
            		alt3=2;
2291
            	}
2292
180
                break;
2293
2294
            default:
2295
                CONSTRUCTEX();
2296
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
2297
                EXCEPTION->message      = (void *)"";
2298
                EXCEPTION->decisionNum  = 3;
2299
                EXCEPTION->state        = 0;
2300
2301
2302
                goto ruleparseSygusEx;
2303
2304
            }
2305
2306
2106
            switch (alt3)
2307
            {
2308
1926
        	case 1:
2309
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:193:5: LPAREN_TOK cmd= sygusCommand RPAREN_TOK
2310
        	    {
2311
1926
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_parseSygus220);
2312
1926
        	        if  (HASEXCEPTION())
2313
        	        {
2314
        	            goto ruleparseSygusEx;
2315
        	        }
2316
2317
2318
1926
        	        FOLLOWPUSH(FOLLOW_sygusCommand_in_parseSygus224);
2319
1926
        	        cmd=sygusCommand(ctx);
2320
2321
1924
        	        FOLLOWPOP();
2322
1924
        	        if  (HASEXCEPTION())
2323
        	        {
2324
        	            goto ruleparseSygusEx;
2325
        	        }
2326
2327
2328
1924
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_parseSygus226);
2329
1924
        	        if  (HASEXCEPTION())
2330
        	        {
2331
        	            goto ruleparseSygusEx;
2332
        	        }
2333
2334
2335
        	    }
2336
1924
        	    break;
2337
180
        	case 2:
2338
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:194:5: EOF
2339
        	    {
2340
180
        	         MATCHT(EOF, &FOLLOW_EOF_in_parseSygus232);
2341
180
        	        if  (HASEXCEPTION())
2342
        	        {
2343
        	            goto ruleparseSygusEx;
2344
        	        }
2345
2346
2347
        	    }
2348
180
        	    break;
2349
2350
            }
2351
        }
2352
    }
2353
2354
    // This is where rules clean up and exit
2355
    //
2356
2104
    goto ruleparseSygusEx; /* Prevent compiler warnings */
2357
2104
    ruleparseSygusEx: ;
2358
2359
2104
            if (HASEXCEPTION())
2360
            {
2361
                PREPORTERROR();
2362
                PRECOVER();
2363
            }
2364
            else
2365
            {
2366
                {
2367
2368
2104
                      cmd_return = cmd.release();
2369
2370
                }
2371
            }
2372
2373
2374
4208
    return cmd_return;
2375
}
2376
/* $ANTLR end parseSygus */
2377
2378
/**
2379
 * $ANTLR start command
2380
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:201:1: command[std::unique_ptr<cvc5::Command>* cmd] : ( SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT] | SET_INFO_TOK setInfoInternal[cmd] | GET_INFO_TOK KEYWORD | SET_OPTION_TOK setOptionInternal[cmd] | GET_OPTION_TOK KEYWORD | DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL | DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] | DECLARE_FUN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] LPAREN_TOK sortList[sorts] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] | DEFINE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd] | DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd] | GET_VALUE_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK ) | GET_ASSIGNMENT_TOK | ASSERT_TOK term[expr, expr2] | CHECK_SAT_TOK ( term[expr, expr2] |) | CHECK_SAT_ASSUMING_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK ) | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_ASSUMPTIONS_TOK | GET_UNSAT_CORE_TOK | PUSH_TOK (k= INTEGER_LITERAL |) | POP_TOK (k= INTEGER_LITERAL |) | EXIT_TOK | smt25Command[cmd] | extendedCommand[cmd] | SIMPLE_SYMBOL );
2381
 */
2382
static void
2383
273386
command(pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd)
2384
{
2385
2386
546772
      std::string name;
2387
546772
      std::vector<std::string> names;
2388
546772
      cvc5::api::Term expr, expr2;
2389
546772
      cvc5::api::Sort t;
2390
546772
      std::vector<cvc5::api::Term> terms;
2391
546772
      std::vector<api::Sort> sorts;
2392
546772
      std::vector<std::pair<std::string, cvc5::api::Sort> > sortedVarNames;
2393
546772
      std::vector<cvc5::api::Term> flattenVars;
2394
2395
    pANTLR3_COMMON_TOKEN    n;
2396
    pANTLR3_COMMON_TOKEN    k;
2397
    pANTLR3_COMMON_TOKEN    KEYWORD1;
2398
    pANTLR3_COMMON_TOKEN    KEYWORD2;
2399
    pANTLR3_COMMON_TOKEN    SIMPLE_SYMBOL3;
2400
2401
    /* Initialize rule variables
2402
     */
2403
2404
273386
    n       = NULL;
2405
273386
    k       = NULL;
2406
273386
    KEYWORD1       = NULL;
2407
273386
    KEYWORD2       = NULL;
2408
273386
    SIMPLE_SYMBOL3       = NULL;
2409
2410
    {
2411
        {
2412
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:212:3: ( SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT] | SET_INFO_TOK setInfoInternal[cmd] | GET_INFO_TOK KEYWORD | SET_OPTION_TOK setOptionInternal[cmd] | GET_OPTION_TOK KEYWORD | DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL | DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] | DECLARE_FUN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] LPAREN_TOK sortList[sorts] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] | DEFINE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd] | DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd] | GET_VALUE_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK ) | GET_ASSIGNMENT_TOK | ASSERT_TOK term[expr, expr2] | CHECK_SAT_TOK ( term[expr, expr2] |) | CHECK_SAT_ASSUMING_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK ) | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_ASSUMPTIONS_TOK | GET_UNSAT_CORE_TOK | PUSH_TOK (k= INTEGER_LITERAL |) | POP_TOK (k= INTEGER_LITERAL |) | EXIT_TOK | smt25Command[cmd] | extendedCommand[cmd] | SIMPLE_SYMBOL )
2413
2414
            ANTLR3_UINT32 alt9;
2415
2416
273386
            alt9=26;
2417
2418
273386
            switch ( LA(1) )
2419
            {
2420
5049
            case SET_LOGIC_TOK:
2421
            	{
2422
5049
            		alt9=1;
2423
            	}
2424
5049
                break;
2425
5525
            case SET_INFO_TOK:
2426
            	{
2427
5525
            		alt9=2;
2428
            	}
2429
5525
                break;
2430
20
            case GET_INFO_TOK:
2431
            	{
2432
20
            		alt9=3;
2433
            	}
2434
20
                break;
2435
1778
            case SET_OPTION_TOK:
2436
            	{
2437
1778
            		alt9=4;
2438
            	}
2439
1778
                break;
2440
11
            case GET_OPTION_TOK:
2441
            	{
2442
11
            		alt9=5;
2443
            	}
2444
11
                break;
2445
3851
            case DECLARE_SORT_TOK:
2446
            	{
2447
3851
            		alt9=6;
2448
            	}
2449
3851
                break;
2450
206
            case DEFINE_SORT_TOK:
2451
            	{
2452
206
            		alt9=7;
2453
            	}
2454
206
                break;
2455
165603
            case DECLARE_FUN_TOK:
2456
            	{
2457
165603
            		alt9=8;
2458
            	}
2459
165603
                break;
2460
1969
            case DEFINE_FUN_TOK:
2461
            	{
2462
1969
            		alt9=9;
2463
            	}
2464
1969
                break;
2465
109
            case DECLARE_DATATYPE_TOK:
2466
            	{
2467
109
            		alt9=10;
2468
            	}
2469
109
                break;
2470
657
            case DECLARE_DATATYPES_TOK:
2471
            	{
2472
657
            		alt9=11;
2473
            	}
2474
657
                break;
2475
58
            case GET_VALUE_TOK:
2476
            	{
2477
58
            		alt9=12;
2478
            	}
2479
58
                break;
2480
10
            case GET_ASSIGNMENT_TOK:
2481
            	{
2482
10
            		alt9=13;
2483
            	}
2484
10
                break;
2485
70197
            case ASSERT_TOK:
2486
            	{
2487
70197
            		alt9=14;
2488
            	}
2489
70197
                break;
2490
8344
            case CHECK_SAT_TOK:
2491
            	{
2492
8344
            		alt9=15;
2493
            	}
2494
8344
                break;
2495
993
            case CHECK_SAT_ASSUMING_TOK:
2496
            	{
2497
993
            		alt9=16;
2498
            	}
2499
993
                break;
2500
            case GET_ASSERTIONS_TOK:
2501
            	{
2502
            		alt9=17;
2503
            	}
2504
                break;
2505
1
            case GET_PROOF_TOK:
2506
            	{
2507
1
            		alt9=18;
2508
            	}
2509
1
                break;
2510
11
            case GET_UNSAT_ASSUMPTIONS_TOK:
2511
            	{
2512
11
            		alt9=19;
2513
            	}
2514
11
                break;
2515
9
            case GET_UNSAT_CORE_TOK:
2516
            	{
2517
9
            		alt9=20;
2518
            	}
2519
9
                break;
2520
3086
            case PUSH_TOK:
2521
            	{
2522
3086
            		alt9=21;
2523
            	}
2524
3086
                break;
2525
2488
            case POP_TOK:
2526
            	{
2527
2488
            		alt9=22;
2528
            	}
2529
2488
                break;
2530
739
            case EXIT_TOK:
2531
            	{
2532
739
            		alt9=23;
2533
            	}
2534
739
                break;
2535
2490
            case DECLARE_CONST_TOK:
2536
            case DEFINE_FUNS_REC_TOK:
2537
            case DEFINE_FUN_REC_TOK:
2538
            case ECHO_TOK:
2539
            case GET_MODEL_TOK:
2540
            case RESET_ASSERTIONS_TOK:
2541
            case RESET_TOK:
2542
            	{
2543
2490
            		alt9=24;
2544
            	}
2545
2490
                break;
2546
182
            case BLOCK_MODEL_TOK:
2547
            case BLOCK_MODEL_VALUES_TOK:
2548
            case DECLARE_CODATATYPES_TOK:
2549
            case DECLARE_CODATATYPE_TOK:
2550
            case DECLARE_FUNS_TOK:
2551
            case DECLARE_HEAP:
2552
            case DECLARE_POOL:
2553
            case DECLARE_PREDS_TOK:
2554
            case DECLARE_SORTS_TOK:
2555
            case DEFINE_CONST_TOK:
2556
            case DEFINE_TOK:
2557
            case GET_ABDUCT_TOK:
2558
            case GET_INTERPOL_TOK:
2559
            case GET_QE_DISJUNCT_TOK:
2560
            case GET_QE_TOK:
2561
            case SIMPLIFY_TOK:
2562
            	{
2563
182
            		alt9=25;
2564
            	}
2565
182
                break;
2566
            case SIMPLE_SYMBOL:
2567
            	{
2568
            		alt9=26;
2569
            	}
2570
                break;
2571
2572
            default:
2573
                CONSTRUCTEX();
2574
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
2575
                EXCEPTION->message      = (void *)"";
2576
                EXCEPTION->decisionNum  = 9;
2577
                EXCEPTION->state        = 0;
2578
2579
2580
                goto rulecommandEx;
2581
2582
            }
2583
2584
273386
            switch (alt9)
2585
            {
2586
5049
        	case 1:
2587
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:213:5: SET_LOGIC_TOK symbol[name,CHECK_NONE,SYM_SORT]
2588
        	    {
2589
5049
        	         MATCHT(SET_LOGIC_TOK, &FOLLOW_SET_LOGIC_TOK_in_command260);
2590
5049
        	        if  (HASEXCEPTION())
2591
        	        {
2592
        	            goto rulecommandEx;
2593
        	        }
2594
2595
2596
5049
        	        FOLLOWPUSH(FOLLOW_symbol_in_command262);
2597
5049
        	        symbol(ctx, name, CHECK_NONE, SYM_SORT);
2598
2599
5049
        	        FOLLOWPOP();
2600
5049
        	        if  (HASEXCEPTION())
2601
        	        {
2602
        	            goto rulecommandEx;
2603
        	        }
2604
2605
2606
        	        {
2607
2608
5050
        	                  cmd->reset(PARSER_STATE->setLogic(name));
2609
2610
        	        }
2611
2612
2613
        	    }
2614
5048
        	    break;
2615
5525
        	case 2:
2616
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:218:5: SET_INFO_TOK setInfoInternal[cmd]
2617
        	    {
2618
5525
        	         MATCHT(SET_INFO_TOK, &FOLLOW_SET_INFO_TOK_in_command281);
2619
5525
        	        if  (HASEXCEPTION())
2620
        	        {
2621
        	            goto rulecommandEx;
2622
        	        }
2623
2624
2625
5525
        	        FOLLOWPUSH(FOLLOW_setInfoInternal_in_command283);
2626
5525
        	        setInfoInternal(ctx, cmd);
2627
2628
5525
        	        FOLLOWPOP();
2629
5525
        	        if  (HASEXCEPTION())
2630
        	        {
2631
        	            goto rulecommandEx;
2632
        	        }
2633
2634
2635
        	    }
2636
5525
        	    break;
2637
20
        	case 3:
2638
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:220:5: GET_INFO_TOK KEYWORD
2639
        	    {
2640
20
        	         MATCHT(GET_INFO_TOK, &FOLLOW_GET_INFO_TOK_in_command296);
2641
20
        	        if  (HASEXCEPTION())
2642
        	        {
2643
        	            goto rulecommandEx;
2644
        	        }
2645
2646
2647
20
        	        KEYWORD1 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_command298);
2648
20
        	        if  (HASEXCEPTION())
2649
        	        {
2650
        	            goto rulecommandEx;
2651
        	        }
2652
2653
2654
        	        {
2655
80
        	             cmd->reset(new GetInfoCommand(
2656
60
        	                      AntlrInput::tokenText(KEYWORD1).c_str() + 1));
2657
2658
        	        }
2659
2660
2661
        	    }
2662
20
        	    break;
2663
1778
        	case 4:
2664
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:225:5: SET_OPTION_TOK setOptionInternal[cmd]
2665
        	    {
2666
1778
        	         MATCHT(SET_OPTION_TOK, &FOLLOW_SET_OPTION_TOK_in_command316);
2667
1778
        	        if  (HASEXCEPTION())
2668
        	        {
2669
        	            goto rulecommandEx;
2670
        	        }
2671
2672
2673
1778
        	        FOLLOWPUSH(FOLLOW_setOptionInternal_in_command318);
2674
1778
        	        setOptionInternal(ctx, cmd);
2675
2676
1778
        	        FOLLOWPOP();
2677
1778
        	        if  (HASEXCEPTION())
2678
        	        {
2679
        	            goto rulecommandEx;
2680
        	        }
2681
2682
2683
        	    }
2684
1778
        	    break;
2685
11
        	case 5:
2686
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:227:5: GET_OPTION_TOK KEYWORD
2687
        	    {
2688
11
        	         MATCHT(GET_OPTION_TOK, &FOLLOW_GET_OPTION_TOK_in_command331);
2689
11
        	        if  (HASEXCEPTION())
2690
        	        {
2691
        	            goto rulecommandEx;
2692
        	        }
2693
2694
2695
11
        	        KEYWORD2 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_command333);
2696
11
        	        if  (HASEXCEPTION())
2697
        	        {
2698
        	            goto rulecommandEx;
2699
        	        }
2700
2701
2702
        	        {
2703
44
        	             cmd->reset(new GetOptionCommand(
2704
33
        	                      AntlrInput::tokenText(KEYWORD2).c_str() + 1));
2705
2706
        	        }
2707
2708
2709
        	    }
2710
11
        	    break;
2711
3851
        	case 6:
2712
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:232:5: DECLARE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL
2713
        	    {
2714
3851
        	         MATCHT(DECLARE_SORT_TOK, &FOLLOW_DECLARE_SORT_TOK_in_command351);
2715
3851
        	        if  (HASEXCEPTION())
2716
        	        {
2717
        	            goto rulecommandEx;
2718
        	        }
2719
2720
2721
        	        {
2722
2723
3851
        	                  PARSER_STATE->checkThatLogicIsSet();
2724
3851
        	                  PARSER_STATE->checkLogicAllowsFreeSorts();
2725
2726
        	        }
2727
2728
2729
3851
        	        FOLLOWPUSH(FOLLOW_symbol_in_command363);
2730
3851
        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
2731
2732
3849
        	        FOLLOWPOP();
2733
3849
        	        if  (HASEXCEPTION())
2734
        	        {
2735
        	            goto rulecommandEx;
2736
        	        }
2737
2738
2739
        	        {
2740
3849
        	             PARSER_STATE->checkUserSymbol(name);
2741
        	        }
2742
2743
2744
3849
        	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_command378);
2745
3849
        	        if  (HASEXCEPTION())
2746
        	        {
2747
2
        	            goto rulecommandEx;
2748
        	        }
2749
2750
2751
        	        {
2752
7694
        	             Debug("parser") << "declare sort: '" << name
2753
3847
        	                                  << "' arity=" << n << std::endl;
2754
3847
        	                  unsigned arity = AntlrInput::tokenToUnsigned(n);
2755
3847
        	                  if(arity == 0) {
2756
7648
        	                    api::Sort type = PARSER_STATE->mkSort(name);
2757
3824
        	                    cmd->reset(new DeclareSortCommand(name, 0, type));
2758
        	                  } else {
2759
46
        	                    api::Sort type = PARSER_STATE->mkSortConstructor(name, arity);
2760
23
        	                    cmd->reset(new DeclareSortCommand(name, arity, type));
2761
        	                  }
2762
2763
        	        }
2764
2765
2766
        	    }
2767
3847
        	    break;
2768
206
        	case 7:
2769
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:252:5: DEFINE_SORT_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] LPAREN_TOK symbolList[names,CHECK_NONE,SYM_SORT] RPAREN_TOK sortSymbol[t,CHECK_DECLARED]
2770
        	    {
2771
206
        	         MATCHT(DEFINE_SORT_TOK, &FOLLOW_DEFINE_SORT_TOK_in_command396);
2772
206
        	        if  (HASEXCEPTION())
2773
        	        {
2774
        	            goto rulecommandEx;
2775
        	        }
2776
2777
2778
        	        {
2779
206
        	             PARSER_STATE->checkThatLogicIsSet();
2780
        	        }
2781
2782
2783
206
        	        FOLLOWPUSH(FOLLOW_symbol_in_command404);
2784
206
        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
2785
2786
206
        	        FOLLOWPOP();
2787
206
        	        if  (HASEXCEPTION())
2788
        	        {
2789
        	            goto rulecommandEx;
2790
        	        }
2791
2792
2793
        	        {
2794
206
        	             PARSER_STATE->checkUserSymbol(name);
2795
        	        }
2796
2797
2798
206
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command417);
2799
206
        	        if  (HASEXCEPTION())
2800
        	        {
2801
        	            goto rulecommandEx;
2802
        	        }
2803
2804
2805
206
        	        FOLLOWPUSH(FOLLOW_symbolList_in_command419);
2806
206
        	        symbolList(ctx, names, CHECK_NONE, SYM_SORT);
2807
2808
206
        	        FOLLOWPOP();
2809
206
        	        if  (HASEXCEPTION())
2810
        	        {
2811
        	            goto rulecommandEx;
2812
        	        }
2813
2814
2815
206
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command422);
2816
206
        	        if  (HASEXCEPTION())
2817
        	        {
2818
        	            goto rulecommandEx;
2819
        	        }
2820
2821
2822
        	        {
2823
206
        	             PARSER_STATE->pushScope();
2824
208
        	                  for(std::vector<std::string>::const_iterator i = names.begin(),
2825
206
        	                        iend = names.end();
2826
208
        	                      i != iend;
2827
        	                      ++i) {
2828
2
        	                    sorts.push_back(PARSER_STATE->mkSort(*i));
2829
        	                  }
2830
2831
        	        }
2832
2833
2834
206
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_command434);
2835
206
        	        sortSymbol(ctx, t, CHECK_DECLARED);
2836
2837
206
        	        FOLLOWPOP();
2838
206
        	        if  (HASEXCEPTION())
2839
        	        {
2840
        	            goto rulecommandEx;
2841
        	        }
2842
2843
2844
        	        {
2845
206
        	             PARSER_STATE->popScope();
2846
        	                  // Do NOT call mkSort, since that creates a new sort!
2847
        	                  // This name is not its own distinct sort, it's an alias.
2848
206
        	                  PARSER_STATE->defineParameterizedType(name, sorts, t);
2849
206
        	                  cmd->reset(new DefineSortCommand(name, sorts, t));
2850
2851
        	        }
2852
2853
2854
        	    }
2855
206
        	    break;
2856
165603
        	case 8:
2857
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:272:5: DECLARE_FUN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] LPAREN_TOK sortList[sorts] RPAREN_TOK sortSymbol[t,CHECK_DECLARED]
2858
        	    {
2859
165603
        	         MATCHT(DECLARE_FUN_TOK, &FOLLOW_DECLARE_FUN_TOK_in_command453);
2860
165603
        	        if  (HASEXCEPTION())
2861
        	        {
2862
        	            goto rulecommandEx;
2863
        	        }
2864
2865
2866
        	        {
2867
165603
        	             PARSER_STATE->checkThatLogicIsSet();
2868
        	        }
2869
2870
2871
165601
        	        FOLLOWPUSH(FOLLOW_symbol_in_command461);
2872
165601
        	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
2873
2874
165601
        	        FOLLOWPOP();
2875
165601
        	        if  (HASEXCEPTION())
2876
        	        {
2877
        	            goto rulecommandEx;
2878
        	        }
2879
2880
2881
        	        {
2882
165601
        	             PARSER_STATE->checkUserSymbol(name);
2883
        	        }
2884
2885
2886
165599
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command474);
2887
165599
        	        if  (HASEXCEPTION())
2888
        	        {
2889
2
        	            goto rulecommandEx;
2890
        	        }
2891
2892
2893
165597
        	        FOLLOWPUSH(FOLLOW_sortList_in_command476);
2894
165597
        	        sortList(ctx, sorts);
2895
2896
165596
        	        FOLLOWPOP();
2897
165596
        	        if  (HASEXCEPTION())
2898
        	        {
2899
        	            goto rulecommandEx;
2900
        	        }
2901
2902
2903
165596
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command479);
2904
165596
        	        if  (HASEXCEPTION())
2905
        	        {
2906
        	            goto rulecommandEx;
2907
        	        }
2908
2909
2910
165596
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_command485);
2911
165596
        	        sortSymbol(ctx, t, CHECK_DECLARED);
2912
2913
165595
        	        FOLLOWPOP();
2914
165595
        	        if  (HASEXCEPTION())
2915
        	        {
2916
        	            goto rulecommandEx;
2917
        	        }
2918
2919
2920
        	        {
2921
165595
        	             Debug("parser") << "declare fun: '" << name << "'" << std::endl;
2922
165595
        	                  if( !sorts.empty() ) {
2923
14549
        	                    t = PARSER_STATE->mkFlatFunctionType(sorts, t);
2924
        	                  }
2925
165595
        	                  if(t.isFunction())
2926
        	                  {
2927
14560
        	                    PARSER_STATE->checkLogicAllowsFunctions();
2928
        	                  }
2929
        	                  // we allow overloading for function declarations
2930
165595
        	                  if( PARSER_STATE->sygus() )
2931
        	                  {
2932
        	                    PARSER_STATE->parseErrorLogic("declare-fun are not allowed in sygus "
2933
        	                                                  "version 2.0");
2934
        	                  }
2935
        	                  else
2936
        	                  {
2937
        	                    api::Term func =
2938
331190
        	                        PARSER_STATE->bindVar(name, t, false, true);
2939
165595
        	                    cmd->reset(new DeclareFunctionCommand(name, func, t));
2940
        	                  }
2941
2942
        	        }
2943
2944
2945
        	    }
2946
165595
        	    break;
2947
1969
        	case 9:
2948
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:299:5: DEFINE_FUN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2]
2949
        	    {
2950
1969
        	         MATCHT(DEFINE_FUN_TOK, &FOLLOW_DEFINE_FUN_TOK_in_command504);
2951
1969
        	        if  (HASEXCEPTION())
2952
        	        {
2953
        	            goto rulecommandEx;
2954
        	        }
2955
2956
2957
        	        {
2958
1969
        	             PARSER_STATE->checkThatLogicIsSet();
2959
        	        }
2960
2961
2962
1969
        	        FOLLOWPUSH(FOLLOW_symbol_in_command512);
2963
1969
        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
2964
2965
1969
        	        FOLLOWPOP();
2966
1969
        	        if  (HASEXCEPTION())
2967
        	        {
2968
        	            goto rulecommandEx;
2969
        	        }
2970
2971
2972
        	        {
2973
1969
        	             PARSER_STATE->checkUserSymbol(name);
2974
        	        }
2975
2976
2977
1969
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command525);
2978
1969
        	        if  (HASEXCEPTION())
2979
        	        {
2980
        	            goto rulecommandEx;
2981
        	        }
2982
2983
2984
1969
        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_command527);
2985
1969
        	        sortedVarList(ctx, sortedVarNames);
2986
2987
1969
        	        FOLLOWPOP();
2988
1969
        	        if  (HASEXCEPTION())
2989
        	        {
2990
        	            goto rulecommandEx;
2991
        	        }
2992
2993
2994
1969
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command530);
2995
1969
        	        if  (HASEXCEPTION())
2996
        	        {
2997
        	            goto rulecommandEx;
2998
        	        }
2999
3000
3001
1969
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_command536);
3002
1969
        	        sortSymbol(ctx, t, CHECK_DECLARED);
3003
3004
1969
        	        FOLLOWPOP();
3005
1969
        	        if  (HASEXCEPTION())
3006
        	        {
3007
        	            goto rulecommandEx;
3008
        	        }
3009
3010
3011
        	        {
3012
        	             /* add variables to parser state before parsing term */
3013
1969
        	                  Debug("parser") << "define fun: '" << name << "'" << std::endl;
3014
1969
        	                  if( sortedVarNames.size() > 0 ) {
3015
1176
        	                    sorts.reserve(sortedVarNames.size());
3016
2437
        	                    for(std::vector<std::pair<std::string, api::Sort> >::const_iterator i =
3017
1176
        	                          sortedVarNames.begin(), iend = sortedVarNames.end();
3018
3613
        	                        i != iend;
3019
        	                        ++i) {
3020
2437
        	                      sorts.push_back((*i).second);
3021
        	                    }
3022
        	                  }
3023
3024
1969
        	                  t = PARSER_STATE->mkFlatFunctionType(sorts, t, flattenVars);
3025
1969
        	                  if (sortedVarNames.size() > 0)
3026
        	                  {
3027
1176
        	                    PARSER_STATE->pushScope();
3028
        	                  }
3029
1969
        	                  terms = PARSER_STATE->bindBoundVars(sortedVarNames);
3030
3031
        	        }
3032
3033
3034
1969
        	        FOLLOWPUSH(FOLLOW_term_in_command549);
3035
1969
        	        term(ctx, expr, expr2);
3036
3037
1968
        	        FOLLOWPOP();
3038
1968
        	        if  (HASEXCEPTION())
3039
        	        {
3040
        	            goto rulecommandEx;
3041
        	        }
3042
3043
3044
        	        {
3045
3046
1968
        	                  if( !flattenVars.empty() ){
3047
        	                    // if this function has any implicit variables flattenVars,
3048
        	                    // we apply the body of the definition to the flatten vars
3049
4
        	                    expr = PARSER_STATE->mkHoApply(expr, flattenVars);
3050
4
        	                    terms.insert(terms.end(), flattenVars.begin(), flattenVars.end());
3051
        	                  }
3052
1968
        	                  if (sortedVarNames.size() > 0)
3053
        	                  {
3054
1175
        	                    PARSER_STATE->popScope();
3055
        	                  }
3056
        	                  // declare the name down here (while parsing term, signature
3057
        	                  // must not be extended with the name itself; no recursion
3058
        	                  // permitted)
3059
        	                  // we allow overloading for function definitions
3060
3936
        	                  api::Term func = PARSER_STATE->bindVar(name, t, false, true);
3061
3936
        	                  cmd->reset(new DefineFunctionCommand(
3062
1968
        	                      name, func, terms, expr, SYM_MAN->getGlobalDeclarations()));
3063
3064
1968
        	        }
3065
3066
3067
        	    }
3068
1968
        	    break;
3069
109
        	case 10:
3070
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:343:5: DECLARE_DATATYPE_TOK datatypeDefCommand[false, cmd]
3071
        	    {
3072
109
        	         MATCHT(DECLARE_DATATYPE_TOK, &FOLLOW_DECLARE_DATATYPE_TOK_in_command562);
3073
109
        	        if  (HASEXCEPTION())
3074
        	        {
3075
        	            goto rulecommandEx;
3076
        	        }
3077
3078
3079
109
        	        FOLLOWPUSH(FOLLOW_datatypeDefCommand_in_command564);
3080
109
        	        datatypeDefCommand(ctx, false, cmd);
3081
3082
109
        	        FOLLOWPOP();
3083
109
        	        if  (HASEXCEPTION())
3084
        	        {
3085
        	            goto rulecommandEx;
3086
        	        }
3087
3088
3089
        	    }
3090
109
        	    break;
3091
657
        	case 11:
3092
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:344:5: DECLARE_DATATYPES_TOK datatypesDefCommand[false, cmd]
3093
        	    {
3094
657
        	         MATCHT(DECLARE_DATATYPES_TOK, &FOLLOW_DECLARE_DATATYPES_TOK_in_command571);
3095
657
        	        if  (HASEXCEPTION())
3096
        	        {
3097
        	            goto rulecommandEx;
3098
        	        }
3099
3100
3101
657
        	        FOLLOWPUSH(FOLLOW_datatypesDefCommand_in_command573);
3102
657
        	        datatypesDefCommand(ctx, false, cmd);
3103
3104
657
        	        FOLLOWPOP();
3105
657
        	        if  (HASEXCEPTION())
3106
        	        {
3107
        	            goto rulecommandEx;
3108
        	        }
3109
3110
3111
        	    }
3112
657
        	    break;
3113
58
        	case 12:
3114
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:346:5: GET_VALUE_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
3115
        	    {
3116
58
        	         MATCHT(GET_VALUE_TOK, &FOLLOW_GET_VALUE_TOK_in_command586);
3117
58
        	        if  (HASEXCEPTION())
3118
        	        {
3119
        	            goto rulecommandEx;
3120
        	        }
3121
3122
3123
        	        {
3124
58
        	             PARSER_STATE->checkThatLogicIsSet();
3125
        	        }
3126
3127
3128
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:347:5: ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
3129
        	        {
3130
58
        	            int alt4=2;
3131
58
        	            switch ( LA(1) )
3132
        	            {
3133
58
        	            case LPAREN_TOK:
3134
        	            	{
3135
58
        	            		alt4=1;
3136
        	            	}
3137
58
        	                break;
3138
        	            case ALPHA:
3139
        	            case ASSERT_TOK:
3140
        	            case AS_TOK:
3141
        	            case ATTRIBUTE_INST_ADD_TO_POOL_TOK:
3142
        	            case ATTRIBUTE_INST_LEVEL:
3143
        	            case ATTRIBUTE_NAMED_TOK:
3144
        	            case ATTRIBUTE_NO_PATTERN_TOK:
3145
        	            case ATTRIBUTE_PATTERN_TOK:
3146
        	            case ATTRIBUTE_POOL_TOK:
3147
        	            case ATTRIBUTE_QUANTIFIER_ID_TOK:
3148
        	            case ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK:
3149
        	            case ATTRIBUTE_TOK:
3150
        	            case BINARY_LITERAL:
3151
        	            case BLOCK_MODEL_TOK:
3152
        	            case BLOCK_MODEL_VALUES_TOK:
3153
        	            case CHAR_TOK:
3154
        	            case CHECK_SAT_ASSUMING_TOK:
3155
        	            case CHECK_SAT_TOK:
3156
        	            case CHECK_SYNTH_TOK:
3157
        	            case COMMENT:
3158
        	            case COMPREHENSION_TOK:
3159
        	            case CONSTRAINT_TOK:
3160
        	            case CONST_TOK:
3161
        	            case DECIMAL_LITERAL:
3162
        	            case DECLARE_CODATATYPES_2_5_TOK:
3163
        	            case DECLARE_CODATATYPES_TOK:
3164
        	            case DECLARE_CODATATYPE_TOK:
3165
        	            case DECLARE_CONST_TOK:
3166
        	            case DECLARE_DATATYPES_2_5_TOK:
3167
        	            case DECLARE_DATATYPES_TOK:
3168
        	            case DECLARE_DATATYPE_TOK:
3169
        	            case DECLARE_FUNS_TOK:
3170
        	            case DECLARE_FUN_TOK:
3171
        	            case DECLARE_HEAP:
3172
        	            case DECLARE_POOL:
3173
        	            case DECLARE_PREDS_TOK:
3174
        	            case DECLARE_SORTS_TOK:
3175
        	            case DECLARE_SORT_TOK:
3176
        	            case DECLARE_VAR_TOK:
3177
        	            case DEFINE_CONST_TOK:
3178
        	            case DEFINE_FUNS_REC_TOK:
3179
        	            case DEFINE_FUN_REC_TOK:
3180
        	            case DEFINE_FUN_TOK:
3181
        	            case DEFINE_SORT_TOK:
3182
        	            case DEFINE_TOK:
3183
        	            case DIGIT:
3184
        	            case ECHO_TOK:
3185
        	            case EMP_TOK:
3186
        	            case EXISTS_TOK:
3187
        	            case EXIT_TOK:
3188
        	            case FORALL_TOK:
3189
        	            case GET_ABDUCT_TOK:
3190
        	            case GET_ASSERTIONS_TOK:
3191
        	            case GET_ASSIGNMENT_TOK:
3192
        	            case GET_INFO_TOK:
3193
        	            case GET_INTERPOL_TOK:
3194
        	            case GET_MODEL_TOK:
3195
        	            case GET_OPTION_TOK:
3196
        	            case GET_PROOF_TOK:
3197
        	            case GET_QE_DISJUNCT_TOK:
3198
        	            case GET_QE_TOK:
3199
        	            case GET_UNSAT_ASSUMPTIONS_TOK:
3200
        	            case GET_UNSAT_CORE_TOK:
3201
        	            case GET_VALUE_TOK:
3202
        	            case HEX_DIGIT:
3203
        	            case HEX_LITERAL:
3204
        	            case HO_ARROW_TOK:
3205
        	            case HO_LAMBDA_TOK:
3206
        	            case INCLUDE_TOK:
3207
        	            case INDEX_TOK:
3208
        	            case INTEGER_LITERAL:
3209
        	            case INV_CONSTRAINT_TOK:
3210
        	            case KEYWORD:
3211
        	            case LET_TOK:
3212
        	            case MATCH_TOK:
3213
        	            case NUMERAL:
3214
        	            case PAR_TOK:
3215
        	            case POP_TOK:
3216
        	            case PUSH_TOK:
3217
        	            case QUOTED_SYMBOL:
3218
        	            case RESET_ASSERTIONS_TOK:
3219
        	            case RESET_TOK:
3220
        	            case RPAREN_TOK:
3221
        	            case SET_INFO_TOK:
3222
        	            case SET_LOGIC_TOK:
3223
        	            case SET_OPTIONS_TOK:
3224
        	            case SET_OPTION_TOK:
3225
        	            case SIMPLE_SYMBOL:
3226
        	            case SIMPLIFY_TOK:
3227
        	            case STRING_LITERAL:
3228
        	            case SYGUS_CONSTANT_TOK:
3229
        	            case SYGUS_VARIABLE_TOK:
3230
        	            case SYMBOL_CHAR:
3231
        	            case SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE:
3232
        	            case SYNTH_FUN_TOK:
3233
        	            case SYNTH_INV_TOK:
3234
        	            case TESTER_TOK:
3235
        	            case TUPLE_CONST_TOK:
3236
        	            case TUPLE_PROJECT_TOK:
3237
        	            case TUPLE_SEL_TOK:
3238
        	            case UNTERMINATED_QUOTED_SYMBOL:
3239
        	            case UPDATE_TOK:
3240
        	            case WHITESPACE:
3241
        	            case 108:
3242
        	            	{
3243
        	            		alt4=2;
3244
        	            	}
3245
        	                break;
3246
3247
        	            default:
3248
        	                CONSTRUCTEX();
3249
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
3250
        	                EXCEPTION->message      = (void *)"";
3251
        	                EXCEPTION->decisionNum  = 4;
3252
        	                EXCEPTION->state        = 0;
3253
3254
3255
        	                goto rulecommandEx;
3256
3257
        	            }
3258
3259
58
        	            switch (alt4)
3260
        	            {
3261
58
        	        	case 1:
3262
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:347:7: LPAREN_TOK termList[terms,expr] RPAREN_TOK
3263
        	        	    {
3264
58
        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command596);
3265
58
        	        	        if  (HASEXCEPTION())
3266
        	        	        {
3267
        	        	            goto rulecommandEx;
3268
        	        	        }
3269
3270
3271
58
        	        	        FOLLOWPUSH(FOLLOW_termList_in_command598);
3272
58
        	        	        termList(ctx, terms, expr);
3273
3274
58
        	        	        FOLLOWPOP();
3275
58
        	        	        if  (HASEXCEPTION())
3276
        	        	        {
3277
        	        	            goto rulecommandEx;
3278
        	        	        }
3279
3280
3281
58
        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command601);
3282
58
        	        	        if  (HASEXCEPTION())
3283
        	        	        {
3284
        	        	            goto rulecommandEx;
3285
        	        	        }
3286
3287
3288
        	        	        {
3289
58
        	        	             cmd->reset(new GetValueCommand(terms));
3290
        	        	        }
3291
3292
3293
        	        	    }
3294
58
        	        	    break;
3295
        	        	case 2:
3296
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:349:7: ~ LPAREN_TOK
3297
        	        	    {
3298
        	        	        if ( ((LA(1) >= ALPHA) && (LA(1) <= LET_TOK)) || ((LA(1) >= MATCH_TOK) && (LA(1) <= 108)) )
3299
        	        	        {
3300
        	        	            CONSUME();
3301
        	        	            PERRORRECOVERY=ANTLR3_FALSE;
3302
        	        	        }
3303
        	        	        else
3304
        	        	        {
3305
        	        	            CONSTRUCTEX();
3306
        	        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
3307
        	        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
3308
        	        	            EXCEPTION->expectingSet = NULL;
3309
3310
        	        	            goto rulecommandEx;
3311
        	        	        }
3312
3313
3314
        	        	        {
3315
        	        	             PARSER_STATE->parseError("The get-value command expects a list of "
3316
        	        	                                             "terms.  Perhaps you forgot a pair of "
3317
        	        	                                             "parentheses?");
3318
3319
        	        	        }
3320
3321
3322
        	        	    }
3323
        	        	    break;
3324
3325
        	            }
3326
        	        }
3327
3328
        	    }
3329
58
        	    break;
3330
10
        	case 13:
3331
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:356:5: GET_ASSIGNMENT_TOK
3332
        	    {
3333
10
        	         MATCHT(GET_ASSIGNMENT_TOK, &FOLLOW_GET_ASSIGNMENT_TOK_in_command644);
3334
10
        	        if  (HASEXCEPTION())
3335
        	        {
3336
        	            goto rulecommandEx;
3337
        	        }
3338
3339
3340
        	        {
3341
10
        	             PARSER_STATE->checkThatLogicIsSet();
3342
        	        }
3343
3344
3345
        	        {
3346
10
        	             cmd->reset(new GetAssignmentCommand());
3347
        	        }
3348
3349
3350
        	    }
3351
10
        	    break;
3352
70197
        	case 14:
3353
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:359:5: ASSERT_TOK term[expr, expr2]
3354
        	    {
3355
70197
        	         MATCHT(ASSERT_TOK, &FOLLOW_ASSERT_TOK_in_command664);
3356
70197
        	        if  (HASEXCEPTION())
3357
        	        {
3358
        	            goto rulecommandEx;
3359
        	        }
3360
3361
3362
        	        {
3363
70197
        	             PARSER_STATE->checkThatLogicIsSet();
3364
        	        }
3365
3366
3367
        	        {
3368
70195
        	             PARSER_STATE->clearLastNamedTerm();
3369
        	        }
3370
3371
3372
70195
        	        FOLLOWPUSH(FOLLOW_term_in_command678);
3373
70195
        	        term(ctx, expr, expr2);
3374
3375
70187
        	        FOLLOWPOP();
3376
70187
        	        if  (HASEXCEPTION())
3377
        	        {
3378
        	            goto rulecommandEx;
3379
        	        }
3380
3381
3382
        	        {
3383
70187
        	             bool inUnsatCore = PARSER_STATE->lastNamedTerm().first == expr;
3384
70187
        	                  cmd->reset(new AssertCommand(expr, inUnsatCore));
3385
70187
        	                  if(inUnsatCore) {
3386
        	                    // set the expression name, if there was a named term
3387
        	                    std::pair<api::Term, std::string> namedTerm =
3388
9254
        	                        PARSER_STATE->lastNamedTerm();
3389
4627
        	                    SYM_MAN->setExpressionName(namedTerm.first, namedTerm.second, true);
3390
        	                  }
3391
3392
        	        }
3393
3394
3395
        	    }
3396
70187
        	    break;
3397
8344
        	case 15:
3398
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:372:5: CHECK_SAT_TOK ( term[expr, expr2] |)
3399
        	    {
3400
8344
        	         MATCHT(CHECK_SAT_TOK, &FOLLOW_CHECK_SAT_TOK_in_command697);
3401
8344
        	        if  (HASEXCEPTION())
3402
        	        {
3403
        	            goto rulecommandEx;
3404
        	        }
3405
3406
3407
        	        {
3408
8344
        	             PARSER_STATE->checkThatLogicIsSet();
3409
        	        }
3410
3411
3412
        	        {
3413
8344
        	             if( PARSER_STATE->sygus() ){
3414
        	                    PARSER_STATE->parseError("Sygus does not support check-sat command.");
3415
        	                  }
3416
3417
        	        }
3418
3419
3420
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:377:5: ( term[expr, expr2] |)
3421
        	        {
3422
8344
        	            int alt5=2;
3423
8344
        	            switch ( LA(1) )
3424
        	            {
3425
11
        	            case BINARY_LITERAL:
3426
        	            case DECIMAL_LITERAL:
3427
        	            case HEX_LITERAL:
3428
        	            case INTEGER_LITERAL:
3429
        	            case LPAREN_TOK:
3430
        	            case QUOTED_SYMBOL:
3431
        	            case SIMPLE_SYMBOL:
3432
        	            case STRING_LITERAL:
3433
        	            case TUPLE_CONST_TOK:
3434
        	            case UNTERMINATED_QUOTED_SYMBOL:
3435
        	            	{
3436
11
        	            		alt5=1;
3437
        	            	}
3438
11
        	                break;
3439
8333
        	            case RPAREN_TOK:
3440
        	            	{
3441
8333
        	            		alt5=2;
3442
        	            	}
3443
8333
        	                break;
3444
3445
        	            default:
3446
        	                CONSTRUCTEX();
3447
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
3448
        	                EXCEPTION->message      = (void *)"";
3449
        	                EXCEPTION->decisionNum  = 5;
3450
        	                EXCEPTION->state        = 0;
3451
3452
3453
        	                goto rulecommandEx;
3454
3455
        	            }
3456
3457
8344
        	            switch (alt5)
3458
        	            {
3459
11
        	        	case 1:
3460
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:377:7: term[expr, expr2]
3461
        	        	    {
3462
11
        	        	        FOLLOWPUSH(FOLLOW_term_in_command713);
3463
11
        	        	        term(ctx, expr, expr2);
3464
3465
11
        	        	        FOLLOWPOP();
3466
11
        	        	        if  (HASEXCEPTION())
3467
        	        	        {
3468
        	        	            goto rulecommandEx;
3469
        	        	        }
3470
3471
3472
        	        	        {
3473
11
        	        	             if(PARSER_STATE->strictModeEnabled()) {
3474
4
        	        	                      PARSER_STATE->parseError(
3475
        	        	                          "Extended commands (such as check-sat with an argument) are not "
3476
        	        	                          "permitted while operating in strict compliance mode.");
3477
        	        	                    }
3478
3479
        	        	        }
3480
3481
3482
        	        	    }
3483
9
        	        	    break;
3484
8333
        	        	case 2:
3485
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:384:7:
3486
        	        	    {
3487
        	        	        {
3488
8333
        	        	             expr = api::Term();
3489
        	        	        }
3490
3491
3492
        	        	    }
3493
8333
        	        	    break;
3494
3495
        	            }
3496
        	        }
3497
3498
        	        {
3499
8342
        	             cmd->reset(new CheckSatCommand(expr));
3500
        	        }
3501
3502
3503
        	    }
3504
8342
        	    break;
3505
993
        	case 16:
3506
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:388:5: CHECK_SAT_ASSUMING_TOK ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
3507
        	    {
3508
993
        	         MATCHT(CHECK_SAT_ASSUMING_TOK, &FOLLOW_CHECK_SAT_ASSUMING_TOK_in_command754);
3509
993
        	        if  (HASEXCEPTION())
3510
        	        {
3511
        	            goto rulecommandEx;
3512
        	        }
3513
3514
3515
        	        {
3516
993
        	             PARSER_STATE->checkThatLogicIsSet();
3517
        	        }
3518
3519
3520
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:389:5: ( LPAREN_TOK termList[terms,expr] RPAREN_TOK |~ LPAREN_TOK )
3521
        	        {
3522
993
        	            int alt6=2;
3523
993
        	            switch ( LA(1) )
3524
        	            {
3525
993
        	            case LPAREN_TOK:
3526
        	            	{
3527
993
        	            		alt6=1;
3528
        	            	}
3529
993
        	                break;
3530
        	            case ALPHA:
3531
        	            case ASSERT_TOK:
3532
        	            case AS_TOK:
3533
        	            case ATTRIBUTE_INST_ADD_TO_POOL_TOK:
3534
        	            case ATTRIBUTE_INST_LEVEL:
3535
        	            case ATTRIBUTE_NAMED_TOK:
3536
        	            case ATTRIBUTE_NO_PATTERN_TOK:
3537
        	            case ATTRIBUTE_PATTERN_TOK:
3538
        	            case ATTRIBUTE_POOL_TOK:
3539
        	            case ATTRIBUTE_QUANTIFIER_ID_TOK:
3540
        	            case ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK:
3541
        	            case ATTRIBUTE_TOK:
3542
        	            case BINARY_LITERAL:
3543
        	            case BLOCK_MODEL_TOK:
3544
        	            case BLOCK_MODEL_VALUES_TOK:
3545
        	            case CHAR_TOK:
3546
        	            case CHECK_SAT_ASSUMING_TOK:
3547
        	            case CHECK_SAT_TOK:
3548
        	            case CHECK_SYNTH_TOK:
3549
        	            case COMMENT:
3550
        	            case COMPREHENSION_TOK:
3551
        	            case CONSTRAINT_TOK:
3552
        	            case CONST_TOK:
3553
        	            case DECIMAL_LITERAL:
3554
        	            case DECLARE_CODATATYPES_2_5_TOK:
3555
        	            case DECLARE_CODATATYPES_TOK:
3556
        	            case DECLARE_CODATATYPE_TOK:
3557
        	            case DECLARE_CONST_TOK:
3558
        	            case DECLARE_DATATYPES_2_5_TOK:
3559
        	            case DECLARE_DATATYPES_TOK:
3560
        	            case DECLARE_DATATYPE_TOK:
3561
        	            case DECLARE_FUNS_TOK:
3562
        	            case DECLARE_FUN_TOK:
3563
        	            case DECLARE_HEAP:
3564
        	            case DECLARE_POOL:
3565
        	            case DECLARE_PREDS_TOK:
3566
        	            case DECLARE_SORTS_TOK:
3567
        	            case DECLARE_SORT_TOK:
3568
        	            case DECLARE_VAR_TOK:
3569
        	            case DEFINE_CONST_TOK:
3570
        	            case DEFINE_FUNS_REC_TOK:
3571
        	            case DEFINE_FUN_REC_TOK:
3572
        	            case DEFINE_FUN_TOK:
3573
        	            case DEFINE_SORT_TOK:
3574
        	            case DEFINE_TOK:
3575
        	            case DIGIT:
3576
        	            case ECHO_TOK:
3577
        	            case EMP_TOK:
3578
        	            case EXISTS_TOK:
3579
        	            case EXIT_TOK:
3580
        	            case FORALL_TOK:
3581
        	            case GET_ABDUCT_TOK:
3582
        	            case GET_ASSERTIONS_TOK:
3583
        	            case GET_ASSIGNMENT_TOK:
3584
        	            case GET_INFO_TOK:
3585
        	            case GET_INTERPOL_TOK:
3586
        	            case GET_MODEL_TOK:
3587
        	            case GET_OPTION_TOK:
3588
        	            case GET_PROOF_TOK:
3589
        	            case GET_QE_DISJUNCT_TOK:
3590
        	            case GET_QE_TOK:
3591
        	            case GET_UNSAT_ASSUMPTIONS_TOK:
3592
        	            case GET_UNSAT_CORE_TOK:
3593
        	            case GET_VALUE_TOK:
3594
        	            case HEX_DIGIT:
3595
        	            case HEX_LITERAL:
3596
        	            case HO_ARROW_TOK:
3597
        	            case HO_LAMBDA_TOK:
3598
        	            case INCLUDE_TOK:
3599
        	            case INDEX_TOK:
3600
        	            case INTEGER_LITERAL:
3601
        	            case INV_CONSTRAINT_TOK:
3602
        	            case KEYWORD:
3603
        	            case LET_TOK:
3604
        	            case MATCH_TOK:
3605
        	            case NUMERAL:
3606
        	            case PAR_TOK:
3607
        	            case POP_TOK:
3608
        	            case PUSH_TOK:
3609
        	            case QUOTED_SYMBOL:
3610
        	            case RESET_ASSERTIONS_TOK:
3611
        	            case RESET_TOK:
3612
        	            case RPAREN_TOK:
3613
        	            case SET_INFO_TOK:
3614
        	            case SET_LOGIC_TOK:
3615
        	            case SET_OPTIONS_TOK:
3616
        	            case SET_OPTION_TOK:
3617
        	            case SIMPLE_SYMBOL:
3618
        	            case SIMPLIFY_TOK:
3619
        	            case STRING_LITERAL:
3620
        	            case SYGUS_CONSTANT_TOK:
3621
        	            case SYGUS_VARIABLE_TOK:
3622
        	            case SYMBOL_CHAR:
3623
        	            case SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE:
3624
        	            case SYNTH_FUN_TOK:
3625
        	            case SYNTH_INV_TOK:
3626
        	            case TESTER_TOK:
3627
        	            case TUPLE_CONST_TOK:
3628
        	            case TUPLE_PROJECT_TOK:
3629
        	            case TUPLE_SEL_TOK:
3630
        	            case UNTERMINATED_QUOTED_SYMBOL:
3631
        	            case UPDATE_TOK:
3632
        	            case WHITESPACE:
3633
        	            case 108:
3634
        	            	{
3635
        	            		alt6=2;
3636
        	            	}
3637
        	                break;
3638
3639
        	            default:
3640
        	                CONSTRUCTEX();
3641
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
3642
        	                EXCEPTION->message      = (void *)"";
3643
        	                EXCEPTION->decisionNum  = 6;
3644
        	                EXCEPTION->state        = 0;
3645
3646
3647
        	                goto rulecommandEx;
3648
3649
        	            }
3650
3651
993
        	            switch (alt6)
3652
        	            {
3653
993
        	        	case 1:
3654
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:389:7: LPAREN_TOK termList[terms,expr] RPAREN_TOK
3655
        	        	    {
3656
993
        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_command764);
3657
993
        	        	        if  (HASEXCEPTION())
3658
        	        	        {
3659
        	        	            goto rulecommandEx;
3660
        	        	        }
3661
3662
3663
993
        	        	        FOLLOWPUSH(FOLLOW_termList_in_command766);
3664
993
        	        	        termList(ctx, terms, expr);
3665
3666
990
        	        	        FOLLOWPOP();
3667
990
        	        	        if  (HASEXCEPTION())
3668
        	        	        {
3669
        	        	            goto rulecommandEx;
3670
        	        	        }
3671
3672
3673
990
        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_command769);
3674
990
        	        	        if  (HASEXCEPTION())
3675
        	        	        {
3676
        	        	            goto rulecommandEx;
3677
        	        	        }
3678
3679
3680
        	        	        {
3681
3682
990
        	        	                    cmd->reset(new CheckSatAssumingCommand(terms));
3683
3684
        	        	        }
3685
3686
3687
        	        	    }
3688
990
        	        	    break;
3689
        	        	case 2:
3690
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:393:7: ~ LPAREN_TOK
3691
        	        	    {
3692
        	        	        if ( ((LA(1) >= ALPHA) && (LA(1) <= LET_TOK)) || ((LA(1) >= MATCH_TOK) && (LA(1) <= 108)) )
3693
        	        	        {
3694
        	        	            CONSUME();
3695
        	        	            PERRORRECOVERY=ANTLR3_FALSE;
3696
        	        	        }
3697
        	        	        else
3698
        	        	        {
3699
        	        	            CONSTRUCTEX();
3700
        	        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
3701
        	        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
3702
        	        	            EXCEPTION->expectingSet = NULL;
3703
3704
        	        	            goto rulecommandEx;
3705
        	        	        }
3706
3707
3708
        	        	        {
3709
        	        	             PARSER_STATE->parseError("The check-sat-assuming command expects a "
3710
        	        	                                             "list of terms.  Perhaps you forgot a pair of "
3711
        	        	                                             "parentheses?");
3712
3713
        	        	        }
3714
3715
3716
        	        	    }
3717
        	        	    break;
3718
3719
        	            }
3720
        	        }
3721
3722
        	    }
3723
990
        	    break;
3724
        	case 17:
3725
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:400:5: GET_ASSERTIONS_TOK
3726
        	    {
3727
        	         MATCHT(GET_ASSERTIONS_TOK, &FOLLOW_GET_ASSERTIONS_TOK_in_command812);
3728
        	        if  (HASEXCEPTION())
3729
        	        {
3730
        	            goto rulecommandEx;
3731
        	        }
3732
3733
3734
        	        {
3735
        	             PARSER_STATE->checkThatLogicIsSet();
3736
        	        }
3737
3738
3739
        	        {
3740
        	             cmd->reset(new GetAssertionsCommand());
3741
        	        }
3742
3743
3744
        	    }
3745
        	    break;
3746
1
        	case 18:
3747
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:403:5: GET_PROOF_TOK
3748
        	    {
3749
1
        	         MATCHT(GET_PROOF_TOK, &FOLLOW_GET_PROOF_TOK_in_command832);
3750
1
        	        if  (HASEXCEPTION())
3751
        	        {
3752
        	            goto rulecommandEx;
3753
        	        }
3754
3755
3756
        	        {
3757
1
        	             PARSER_STATE->checkThatLogicIsSet();
3758
        	        }
3759
3760
3761
        	        {
3762
1
        	             cmd->reset(new GetProofCommand());
3763
        	        }
3764
3765
3766
        	    }
3767
1
        	    break;
3768
11
        	case 19:
3769
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:406:5: GET_UNSAT_ASSUMPTIONS_TOK
3770
        	    {
3771
11
        	         MATCHT(GET_UNSAT_ASSUMPTIONS_TOK, &FOLLOW_GET_UNSAT_ASSUMPTIONS_TOK_in_command852);
3772
11
        	        if  (HASEXCEPTION())
3773
        	        {
3774
        	            goto rulecommandEx;
3775
        	        }
3776
3777
3778
        	        {
3779
11
        	             PARSER_STATE->checkThatLogicIsSet();
3780
        	        }
3781
3782
3783
        	        {
3784
11
        	             cmd->reset(new GetUnsatAssumptionsCommand);
3785
        	        }
3786
3787
3788
        	    }
3789
11
        	    break;
3790
9
        	case 20:
3791
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:409:5: GET_UNSAT_CORE_TOK
3792
        	    {
3793
9
        	         MATCHT(GET_UNSAT_CORE_TOK, &FOLLOW_GET_UNSAT_CORE_TOK_in_command872);
3794
9
        	        if  (HASEXCEPTION())
3795
        	        {
3796
        	            goto rulecommandEx;
3797
        	        }
3798
3799
3800
        	        {
3801
9
        	             PARSER_STATE->checkThatLogicIsSet();
3802
        	        }
3803
3804
3805
        	        {
3806
9
        	             cmd->reset(new GetUnsatCoreCommand);
3807
        	        }
3808
3809
3810
        	    }
3811
9
        	    break;
3812
3086
        	case 21:
3813
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:412:5: PUSH_TOK (k= INTEGER_LITERAL |)
3814
        	    {
3815
3086
        	         MATCHT(PUSH_TOK, &FOLLOW_PUSH_TOK_in_command892);
3816
3086
        	        if  (HASEXCEPTION())
3817
        	        {
3818
        	            goto rulecommandEx;
3819
        	        }
3820
3821
3822
        	        {
3823
3086
        	             PARSER_STATE->checkThatLogicIsSet();
3824
        	        }
3825
3826
3827
        	        {
3828
3086
        	             if( PARSER_STATE->sygus() ){
3829
        	                    PARSER_STATE->parseError("Sygus does not support push command.");
3830
        	                  }
3831
3832
        	        }
3833
3834
3835
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:417:5: (k= INTEGER_LITERAL |)
3836
        	        {
3837
3086
        	            int alt7=2;
3838
3086
        	            switch ( LA(1) )
3839
        	            {
3840
2936
        	            case INTEGER_LITERAL:
3841
        	            	{
3842
2936
        	            		alt7=1;
3843
        	            	}
3844
2936
        	                break;
3845
150
        	            case RPAREN_TOK:
3846
        	            	{
3847
150
        	            		alt7=2;
3848
        	            	}
3849
150
        	                break;
3850
3851
        	            default:
3852
        	                CONSTRUCTEX();
3853
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
3854
        	                EXCEPTION->message      = (void *)"";
3855
        	                EXCEPTION->decisionNum  = 7;
3856
        	                EXCEPTION->state        = 0;
3857
3858
3859
        	                goto rulecommandEx;
3860
3861
        	            }
3862
3863
3086
        	            switch (alt7)
3864
        	            {
3865
2936
        	        	case 1:
3866
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:417:7: k= INTEGER_LITERAL
3867
        	        	    {
3868
2936
        	        	        k = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_command910);
3869
2936
        	        	        if  (HASEXCEPTION())
3870
        	        	        {
3871
        	        	            goto rulecommandEx;
3872
        	        	        }
3873
3874
3875
        	        	        {
3876
2936
        	        	             unsigned num = AntlrInput::tokenToUnsigned(k);
3877
2936
        	        	                    if(num == 0) {
3878
        	        	                      cmd->reset(new EmptyCommand());
3879
2936
        	        	                    } else if(num == 1) {
3880
2932
        	        	                      PARSER_STATE->pushScope(true);
3881
2932
        	        	                      cmd->reset(new PushCommand());
3882
        	        	                    } else {
3883
8
        	        	                      std::unique_ptr<CommandSequence> seq(new CommandSequence());
3884
10
        	        	                      do {
3885
14
        	        	                        PARSER_STATE->pushScope(true);
3886
14
        	        	                        Command* push_cmd = new PushCommand();
3887
14
        	        	                        push_cmd->setMuted(num > 1);
3888
14
        	        	                        seq->addCommand(push_cmd);
3889
14
        	        	                        --num;
3890
14
        	        	                        } while(num > 0);
3891
4
        	        	                      cmd->reset(seq.release());
3892
        	        	                    }
3893
3894
        	        	        }
3895
3896
3897
        	        	    }
3898
2936
        	        	    break;
3899
150
        	        	case 2:
3900
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:436:7:
3901
        	        	    {
3902
        	        	        {
3903
150
        	        	             if(PARSER_STATE->strictModeEnabled()) {
3904
        	        	                      PARSER_STATE->parseError(
3905
        	        	                          "Strict compliance mode demands an integer to be provided to "
3906
        	        	                          "PUSH.  Maybe you want (push 1)?");
3907
        	        	                    } else {
3908
150
        	        	                      PARSER_STATE->pushScope(true);
3909
150
        	        	                      cmd->reset(new PushCommand());
3910
        	        	                    }
3911
3912
        	        	        }
3913
3914
3915
        	        	    }
3916
150
        	        	    break;
3917
3918
        	            }
3919
        	        }
3920
3921
        	    }
3922
3086
        	    break;
3923
2488
        	case 22:
3924
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:445:5: POP_TOK (k= INTEGER_LITERAL |)
3925
        	    {
3926
2488
        	         MATCHT(POP_TOK, &FOLLOW_POP_TOK_in_command934);
3927
2488
        	        if  (HASEXCEPTION())
3928
        	        {
3929
        	            goto rulecommandEx;
3930
        	        }
3931
3932
3933
        	        {
3934
2488
        	             PARSER_STATE->checkThatLogicIsSet();
3935
        	        }
3936
3937
3938
        	        {
3939
2488
        	             if( PARSER_STATE->sygus() ){
3940
        	                    PARSER_STATE->parseError("Sygus does not support pop command.");
3941
        	                  }
3942
3943
        	        }
3944
3945
3946
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:450:5: (k= INTEGER_LITERAL |)
3947
        	        {
3948
2488
        	            int alt8=2;
3949
2488
        	            switch ( LA(1) )
3950
        	            {
3951
2353
        	            case INTEGER_LITERAL:
3952
        	            	{
3953
2353
        	            		alt8=1;
3954
        	            	}
3955
2353
        	                break;
3956
135
        	            case RPAREN_TOK:
3957
        	            	{
3958
135
        	            		alt8=2;
3959
        	            	}
3960
135
        	                break;
3961
3962
        	            default:
3963
        	                CONSTRUCTEX();
3964
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
3965
        	                EXCEPTION->message      = (void *)"";
3966
        	                EXCEPTION->decisionNum  = 8;
3967
        	                EXCEPTION->state        = 0;
3968
3969
3970
        	                goto rulecommandEx;
3971
3972
        	            }
3973
3974
2488
        	            switch (alt8)
3975
        	            {
3976
2353
        	        	case 1:
3977
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:450:7: k= INTEGER_LITERAL
3978
        	        	    {
3979
2353
        	        	        k = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_command952);
3980
2353
        	        	        if  (HASEXCEPTION())
3981
        	        	        {
3982
        	        	            goto rulecommandEx;
3983
        	        	        }
3984
3985
3986
        	        	        {
3987
2353
        	        	             unsigned num = AntlrInput::tokenToUnsigned(k);
3988
2353
        	        	                    if(num > PARSER_STATE->scopeLevel()) {
3989
        	        	                      PARSER_STATE->parseError("Attempted to pop above the top stack "
3990
        	        	                                               "frame.");
3991
        	        	                    }
3992
2353
        	        	                    if(num == 0) {
3993
64
        	        	                      cmd->reset(new EmptyCommand());
3994
2289
        	        	                    } else if(num == 1) {
3995
2197
        	        	                      PARSER_STATE->popScope();
3996
2197
        	        	                      cmd->reset(new PopCommand());
3997
        	        	                    } else {
3998
184
        	        	                      std::unique_ptr<CommandSequence> seq(new CommandSequence());
3999
156
        	        	                      do {
4000
248
        	        	                        PARSER_STATE->popScope();
4001
248
        	        	                        Command* pop_command = new PopCommand();
4002
248
        	        	                        pop_command->setMuted(num > 1);
4003
248
        	        	                        seq->addCommand(pop_command);
4004
248
        	        	                        --num;
4005
248
        	        	                      } while(num > 0);
4006
92
        	        	                      cmd->reset(seq.release());
4007
        	        	                    }
4008
4009
        	        	        }
4010
4011
4012
        	        	    }
4013
2353
        	        	    break;
4014
135
        	        	case 2:
4015
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:473:7:
4016
        	        	    {
4017
        	        	        {
4018
135
        	        	             if(PARSER_STATE->strictModeEnabled()) {
4019
        	        	                      PARSER_STATE->parseError(
4020
        	        	                          "Strict compliance mode demands an integer to be provided to POP."
4021
        	        	                          "Maybe you want (pop 1)?");
4022
        	        	                    } else {
4023
135
        	        	                      PARSER_STATE->popScope();
4024
135
        	        	                      cmd->reset(new PopCommand());
4025
        	        	                    }
4026
4027
        	        	        }
4028
4029
4030
        	        	    }
4031
135
        	        	    break;
4032
4033
        	            }
4034
        	        }
4035
4036
        	    }
4037
2488
        	    break;
4038
739
        	case 23:
4039
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:484:5: EXIT_TOK
4040
        	    {
4041
739
        	         MATCHT(EXIT_TOK, &FOLLOW_EXIT_TOK_in_command986);
4042
739
        	        if  (HASEXCEPTION())
4043
        	        {
4044
        	            goto rulecommandEx;
4045
        	        }
4046
4047
4048
        	        {
4049
739
        	             cmd->reset(new QuitCommand());
4050
        	        }
4051
4052
4053
        	    }
4054
739
        	    break;
4055
2490
        	case 24:
4056
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:488:5: smt25Command[cmd]
4057
        	    {
4058
2490
        	        FOLLOWPUSH(FOLLOW_smt25Command_in_command1005);
4059
2490
        	        smt25Command(ctx, cmd);
4060
4061
2490
        	        FOLLOWPOP();
4062
2490
        	        if  (HASEXCEPTION())
4063
        	        {
4064
        	            goto rulecommandEx;
4065
        	        }
4066
4067
4068
        	    }
4069
2490
        	    break;
4070
182
        	case 25:
4071
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:491:5: extendedCommand[cmd]
4072
        	    {
4073
182
        	        FOLLOWPUSH(FOLLOW_extendedCommand_in_command1019);
4074
182
        	        extendedCommand(ctx, cmd);
4075
4076
181
        	        FOLLOWPOP();
4077
181
        	        if  (HASEXCEPTION())
4078
        	        {
4079
        	            goto rulecommandEx;
4080
        	        }
4081
4082
4083
        	        {
4084
181
        	             if(PARSER_STATE->strictModeEnabled()) {
4085
        	                    PARSER_STATE->parseError(
4086
        	                        "Extended commands are not permitted while operating in strict "
4087
        	                        "compliance mode.");
4088
        	                  }
4089
4090
        	        }
4091
4092
4093
        	    }
4094
181
        	    break;
4095
        	case 26:
4096
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:500:5: SIMPLE_SYMBOL
4097
        	    {
4098
        	        SIMPLE_SYMBOL3 = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_command1039);
4099
        	        if  (HASEXCEPTION())
4100
        	        {
4101
        	            goto rulecommandEx;
4102
        	        }
4103
4104
4105
        	        {
4106
        	             std::string id = AntlrInput::tokenText(SIMPLE_SYMBOL3);
4107
        	                  if(id == "benchmark") {
4108
        	                    PARSER_STATE->parseError(
4109
        	                        "In SMT-LIBv2 mode, but got something that looks like SMT-LIBv1, "
4110
        	                        "which is not supported anymore.");
4111
        	                  } else {
4112
        	                    PARSER_STATE->parseError("expected SMT-LIBv2 command, got `" + id +
4113
        	                                             "'.");
4114
        	                  }
4115
4116
        	        }
4117
4118
4119
        	    }
4120
        	    break;
4121
4122
            }
4123
        }
4124
    }
4125
4126
    // This is where rules clean up and exit
4127
    //
4128
273356
    goto rulecommandEx; /* Prevent compiler warnings */
4129
273360
    rulecommandEx: ;
4130
4131
273360
            if (HASEXCEPTION())
4132
            {
4133
4
                PREPORTERROR();
4134
                PRECOVER();
4135
            }
4136
546712
    return ;
4137
}
4138
/* $ANTLR end command */
4139
4140
/**
4141
 * $ANTLR start sygusCommand
4142
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:513:1: sygusCommand returns [std::unique_ptr<cvc5::Command> cmd] : ( DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( sygusGrammar[grammar, sygusVars, name] )? | CONSTRAINT_TOK term[expr, expr2] | INV_CONSTRAINT_TOK ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+ | CHECK_SYNTH_TOK | command[&cmd] );
4143
 */
4144
static std::unique_ptr<cvc5::Command>
4145
1926
sygusCommand(pSmt2Parser ctx)
4146
{
4147
1926
    std::unique_ptr<cvc5::Command> cmd;
4148
4149
4150
4151
3852
      cvc5::api::Term expr, expr2, fun;
4152
3852
      cvc5::api::Sort t, range;
4153
3852
      std::vector<std::string> names;
4154
3852
      std::vector<std::pair<std::string, cvc5::api::Sort> > sortedVarNames;
4155
3852
      std::vector<cvc5::api::Term> sygusVars;
4156
3852
      std::string name;
4157
      bool isInv;
4158
1926
      cvc5::api::Grammar* grammar = nullptr;
4159
4160
    /* Initialize rule variables
4161
     */
4162
4163
    {
4164
        {
4165
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:524:3: ( DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( sygusGrammar[grammar, sygusVars, name] )? | CONSTRAINT_TOK term[expr, expr2] | INV_CONSTRAINT_TOK ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+ | CHECK_SYNTH_TOK | command[&cmd] )
4166
4167
            ANTLR3_UINT32 alt14;
4168
4169
1926
            alt14=6;
4170
4171
1926
            switch ( LA(1) )
4172
            {
4173
262
            case DECLARE_VAR_TOK:
4174
            	{
4175
262
            		alt14=1;
4176
            	}
4177
262
                break;
4178
283
            case SYNTH_FUN_TOK:
4179
            case SYNTH_INV_TOK:
4180
            	{
4181
283
            		alt14=2;
4182
            	}
4183
283
                break;
4184
599
            case CONSTRAINT_TOK:
4185
            	{
4186
599
            		alt14=3;
4187
            	}
4188
599
                break;
4189
13
            case INV_CONSTRAINT_TOK:
4190
            	{
4191
13
            		alt14=4;
4192
            	}
4193
13
                break;
4194
189
            case CHECK_SYNTH_TOK:
4195
            	{
4196
189
            		alt14=5;
4197
            	}
4198
189
                break;
4199
580
            case ASSERT_TOK:
4200
            case BLOCK_MODEL_TOK:
4201
            case BLOCK_MODEL_VALUES_TOK:
4202
            case CHECK_SAT_ASSUMING_TOK:
4203
            case CHECK_SAT_TOK:
4204
            case DECLARE_CODATATYPES_TOK:
4205
            case DECLARE_CODATATYPE_TOK:
4206
            case DECLARE_CONST_TOK:
4207
            case DECLARE_DATATYPES_TOK:
4208
            case DECLARE_DATATYPE_TOK:
4209
            case DECLARE_FUNS_TOK:
4210
            case DECLARE_FUN_TOK:
4211
            case DECLARE_HEAP:
4212
            case DECLARE_POOL:
4213
            case DECLARE_PREDS_TOK:
4214
            case DECLARE_SORTS_TOK:
4215
            case DECLARE_SORT_TOK:
4216
            case DEFINE_CONST_TOK:
4217
            case DEFINE_FUNS_REC_TOK:
4218
            case DEFINE_FUN_REC_TOK:
4219
            case DEFINE_FUN_TOK:
4220
            case DEFINE_SORT_TOK:
4221
            case DEFINE_TOK:
4222
            case ECHO_TOK:
4223
            case EXIT_TOK:
4224
            case GET_ABDUCT_TOK:
4225
            case GET_ASSERTIONS_TOK:
4226
            case GET_ASSIGNMENT_TOK:
4227
            case GET_INFO_TOK:
4228
            case GET_INTERPOL_TOK:
4229
            case GET_MODEL_TOK:
4230
            case GET_OPTION_TOK:
4231
            case GET_PROOF_TOK:
4232
            case GET_QE_DISJUNCT_TOK:
4233
            case GET_QE_TOK:
4234
            case GET_UNSAT_ASSUMPTIONS_TOK:
4235
            case GET_UNSAT_CORE_TOK:
4236
            case GET_VALUE_TOK:
4237
            case POP_TOK:
4238
            case PUSH_TOK:
4239
            case RESET_ASSERTIONS_TOK:
4240
            case RESET_TOK:
4241
            case SET_INFO_TOK:
4242
            case SET_LOGIC_TOK:
4243
            case SET_OPTION_TOK:
4244
            case SIMPLE_SYMBOL:
4245
            case SIMPLIFY_TOK:
4246
            	{
4247
580
            		alt14=6;
4248
            	}
4249
580
                break;
4250
4251
            default:
4252
                CONSTRUCTEX();
4253
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
4254
                EXCEPTION->message      = (void *)"";
4255
                EXCEPTION->decisionNum  = 14;
4256
                EXCEPTION->state        = 0;
4257
4258
4259
                goto rulesygusCommandEx;
4260
4261
            }
4262
4263
1926
            switch (alt14)
4264
            {
4265
262
        	case 1:
4266
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:525:5: DECLARE_VAR_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
4267
        	    {
4268
262
        	         MATCHT(DECLARE_VAR_TOK, &FOLLOW_DECLARE_VAR_TOK_in_sygusCommand1073);
4269
262
        	        if  (HASEXCEPTION())
4270
        	        {
4271
        	            goto rulesygusCommandEx;
4272
        	        }
4273
4274
4275
        	        {
4276
262
        	             PARSER_STATE->checkThatLogicIsSet();
4277
        	        }
4278
4279
4280
262
        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand1081);
4281
262
        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
4282
4283
262
        	        FOLLOWPOP();
4284
262
        	        if  (HASEXCEPTION())
4285
        	        {
4286
        	            goto rulesygusCommandEx;
4287
        	        }
4288
4289
4290
        	        {
4291
262
        	             PARSER_STATE->checkUserSymbol(name);
4292
        	        }
4293
4294
4295
262
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusCommand1094);
4296
262
        	        sortSymbol(ctx, t, CHECK_DECLARED);
4297
4298
262
        	        FOLLOWPOP();
4299
262
        	        if  (HASEXCEPTION())
4300
        	        {
4301
        	            goto rulesygusCommandEx;
4302
        	        }
4303
4304
4305
        	        {
4306
4307
524
        	                  api::Term var = SOLVER->mkSygusVar(t, name);
4308
262
        	                  PARSER_STATE->defineVar(name, var);
4309
262
        	                  cmd.reset(new DeclareSygusVarCommand(name, var, t));
4310
4311
262
        	        }
4312
4313
4314
        	    }
4315
262
        	    break;
4316
283
        	case 2:
4317
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:535:5: ( SYNTH_FUN_TOK | SYNTH_INV_TOK ) symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ( sortSymbol[range,CHECK_DECLARED] )? ( sygusGrammar[grammar, sygusVars, name] )?
4318
        	    {
4319
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:535:5: ( SYNTH_FUN_TOK | SYNTH_INV_TOK )
4320
        	        {
4321
283
        	            int alt10=2;
4322
283
        	            switch ( LA(1) )
4323
        	            {
4324
270
        	            case SYNTH_FUN_TOK:
4325
        	            	{
4326
270
        	            		alt10=1;
4327
        	            	}
4328
270
        	                break;
4329
13
        	            case SYNTH_INV_TOK:
4330
        	            	{
4331
13
        	            		alt10=2;
4332
        	            	}
4333
13
        	                break;
4334
4335
        	            default:
4336
        	                CONSTRUCTEX();
4337
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
4338
        	                EXCEPTION->message      = (void *)"";
4339
        	                EXCEPTION->decisionNum  = 10;
4340
        	                EXCEPTION->state        = 0;
4341
4342
4343
        	                goto rulesygusCommandEx;
4344
4345
        	            }
4346
4347
283
        	            switch (alt10)
4348
        	            {
4349
270
        	        	case 1:
4350
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:535:7: SYNTH_FUN_TOK
4351
        	        	    {
4352
270
        	        	         MATCHT(SYNTH_FUN_TOK, &FOLLOW_SYNTH_FUN_TOK_in_sygusCommand1115);
4353
270
        	        	        if  (HASEXCEPTION())
4354
        	        	        {
4355
        	        	            goto rulesygusCommandEx;
4356
        	        	        }
4357
4358
4359
        	        	        {
4360
270
        	        	             isInv = false;
4361
        	        	        }
4362
4363
4364
        	        	    }
4365
270
        	        	    break;
4366
13
        	        	case 2:
4367
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:536:9: SYNTH_INV_TOK
4368
        	        	    {
4369
13
        	        	         MATCHT(SYNTH_INV_TOK, &FOLLOW_SYNTH_INV_TOK_in_sygusCommand1127);
4370
13
        	        	        if  (HASEXCEPTION())
4371
        	        	        {
4372
        	        	            goto rulesygusCommandEx;
4373
        	        	        }
4374
4375
4376
        	        	        {
4377
13
        	        	             isInv = true; range = SOLVER->getBooleanSort();
4378
        	        	        }
4379
4380
4381
        	        	    }
4382
13
        	        	    break;
4383
4384
        	            }
4385
        	        }
4386
4387
        	        {
4388
283
        	             PARSER_STATE->checkThatLogicIsSet();
4389
        	        }
4390
4391
4392
283
        	        FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand1147);
4393
283
        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
4394
4395
283
        	        FOLLOWPOP();
4396
283
        	        if  (HASEXCEPTION())
4397
        	        {
4398
        	            goto rulesygusCommandEx;
4399
        	        }
4400
4401
4402
283
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusCommand1154);
4403
283
        	        if  (HASEXCEPTION())
4404
        	        {
4405
        	            goto rulesygusCommandEx;
4406
        	        }
4407
4408
4409
283
        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_sygusCommand1156);
4410
283
        	        sortedVarList(ctx, sortedVarNames);
4411
4412
283
        	        FOLLOWPOP();
4413
283
        	        if  (HASEXCEPTION())
4414
        	        {
4415
        	            goto rulesygusCommandEx;
4416
        	        }
4417
4418
4419
283
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusCommand1159);
4420
283
        	        if  (HASEXCEPTION())
4421
        	        {
4422
        	            goto rulesygusCommandEx;
4423
        	        }
4424
4425
4426
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:541:5: ( sortSymbol[range,CHECK_DECLARED] )?
4427
        	        {
4428
283
        	            int alt11=2;
4429
283
        	            switch ( LA(1) )
4430
        	            {
4431
241
        	                case QUOTED_SYMBOL:
4432
        	                case SIMPLE_SYMBOL:
4433
        	                case UNTERMINATED_QUOTED_SYMBOL:
4434
        	                	{
4435
241
        	                		alt11=1;
4436
        	                	}
4437
241
        	                    break;
4438
29
        	                case LPAREN_TOK:
4439
        	                	{
4440
29
        	                		switch ( LA(2) )
4441
        	                		{
4442
29
        	                		    case HO_ARROW_TOK:
4443
        	                		    case INDEX_TOK:
4444
        	                		    case QUOTED_SYMBOL:
4445
        	                		    case SIMPLE_SYMBOL:
4446
        	                		    case UNTERMINATED_QUOTED_SYMBOL:
4447
        	                		    	{
4448
29
        	                		    		alt11=1;
4449
        	                		    	}
4450
29
        	                		        break;
4451
        	                		}
4452
4453
        	                	}
4454
29
        	                    break;
4455
        	            }
4456
4457
283
        	            switch (alt11)
4458
        	            {
4459
270
        	        	case 1:
4460
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:541:7: sortSymbol[range,CHECK_DECLARED]
4461
        	        	    {
4462
270
        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusCommand1167);
4463
270
        	        	        sortSymbol(ctx, range, CHECK_DECLARED);
4464
4465
270
        	        	        FOLLOWPOP();
4466
270
        	        	        if  (HASEXCEPTION())
4467
        	        	        {
4468
        	        	            goto rulesygusCommandEx;
4469
        	        	        }
4470
4471
4472
        	        	    }
4473
270
        	        	    break;
4474
4475
        	            }
4476
        	        }
4477
4478
        	        {
4479
4480
283
        	                  PARSER_STATE->pushScope();
4481
283
        	                  sygusVars = PARSER_STATE->bindBoundVars(sortedVarNames);
4482
4483
        	        }
4484
4485
4486
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:546:5: ( sygusGrammar[grammar, sygusVars, name] )?
4487
        	        {
4488
283
        	            int alt12=2;
4489
283
        	            switch ( LA(1) )
4490
        	            {
4491
146
        	                case LPAREN_TOK:
4492
        	                	{
4493
146
        	                		alt12=1;
4494
        	                	}
4495
146
        	                    break;
4496
        	            }
4497
4498
283
        	            switch (alt12)
4499
        	            {
4500
146
        	        	case 1:
4501
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:551:7: sygusGrammar[grammar, sygusVars, name]
4502
        	        	    {
4503
146
        	        	        FOLLOWPUSH(FOLLOW_sygusGrammar_in_sygusCommand1219);
4504
146
        	        	        sygusGrammar(ctx, grammar, sygusVars, name);
4505
4506
145
        	        	        FOLLOWPOP();
4507
145
        	        	        if  (HASEXCEPTION())
4508
        	        	        {
4509
        	        	            goto rulesygusCommandEx;
4510
        	        	        }
4511
4512
4513
        	        	    }
4514
145
        	        	    break;
4515
4516
        	            }
4517
        	        }
4518
4519
        	        {
4520
4521
282
        	                  Debug("parser-sygus") << "Define synth fun : " << name << std::endl;
4522
4523
833
        	                  fun = isInv ? (grammar == nullptr
4524
13
        	                                     ? SOLVER->synthInv(name, sygusVars)
4525
        	                                     : SOLVER->synthInv(name, sygusVars, *grammar))
4526
269
        	                              : (grammar == nullptr
4527
124
        	                                     ? SOLVER->synthFun(name, sygusVars, range)
4528
145
        	                                     : SOLVER->synthFun(name, sygusVars, range, *grammar));
4529
4530
282
        	                  Debug("parser-sygus") << "...read synth fun " << name << std::endl;
4531
282
        	                  PARSER_STATE->popScope();
4532
        	                  // we do not allow overloading for synth fun
4533
282
        	                  PARSER_STATE->defineVar(name, fun);
4534
564
        	                  cmd = std::unique_ptr<Command>(
4535
282
        	                      new SynthFunCommand(name, fun, sygusVars, range, isInv, grammar));
4536
4537
        	        }
4538
4539
4540
        	    }
4541
282
        	    break;
4542
599
        	case 3:
4543
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:571:5: CONSTRAINT_TOK term[expr, expr2]
4544
        	    {
4545
599
        	         MATCHT(CONSTRAINT_TOK, &FOLLOW_CONSTRAINT_TOK_in_sygusCommand1245);
4546
599
        	        if  (HASEXCEPTION())
4547
        	        {
4548
        	            goto rulesygusCommandEx;
4549
        	        }
4550
4551
4552
        	        {
4553
4554
599
        	                  PARSER_STATE->checkThatLogicIsSet();
4555
599
        	                  Debug("parser-sygus") << "Sygus : define sygus funs..." << std::endl;
4556
599
        	                  Debug("parser-sygus") << "Sygus : read constraint..." << std::endl;
4557
4558
        	        }
4559
4560
4561
599
        	        FOLLOWPUSH(FOLLOW_term_in_sygusCommand1253);
4562
599
        	        term(ctx, expr, expr2);
4563
4564
598
        	        FOLLOWPOP();
4565
598
        	        if  (HASEXCEPTION())
4566
        	        {
4567
        	            goto rulesygusCommandEx;
4568
        	        }
4569
4570
4571
        	        {
4572
598
        	             Debug("parser-sygus") << "...read constraint " << expr << std::endl;
4573
598
        	                  cmd.reset(new SygusConstraintCommand(expr));
4574
4575
        	        }
4576
4577
4578
        	    }
4579
598
        	    break;
4580
13
        	case 4:
4581
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:581:5: INV_CONSTRAINT_TOK ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+
4582
        	    {
4583
13
        	         MATCHT(INV_CONSTRAINT_TOK, &FOLLOW_INV_CONSTRAINT_TOK_in_sygusCommand1272);
4584
13
        	        if  (HASEXCEPTION())
4585
        	        {
4586
        	            goto rulesygusCommandEx;
4587
        	        }
4588
4589
4590
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:582:5: ( symbol[name,CHECK_NONE,SYM_VARIABLE] )+
4591
        	        {
4592
13
        	            int cnt13=0;
4593
4594
        	            for (;;)
4595
        	            {
4596
65
        	                int alt13=2;
4597
65
        	        	switch ( LA(1) )
4598
        	        	{
4599
52
        	        	case QUOTED_SYMBOL:
4600
        	        	case SIMPLE_SYMBOL:
4601
        	        	case UNTERMINATED_QUOTED_SYMBOL:
4602
        	        		{
4603
52
        	        			alt13=1;
4604
        	        		}
4605
52
        	        	    break;
4606
4607
        	        	}
4608
4609
65
        	        	switch (alt13)
4610
        	        	{
4611
52
        	        	    case 1:
4612
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:582:7: symbol[name,CHECK_NONE,SYM_VARIABLE]
4613
        	        	        {
4614
52
        	        	            FOLLOWPUSH(FOLLOW_symbol_in_sygusCommand1280);
4615
52
        	        	            symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
4616
4617
52
        	        	            FOLLOWPOP();
4618
52
        	        	            if  (HASEXCEPTION())
4619
        	        	            {
4620
        	        	                goto rulesygusCommandEx;
4621
        	        	            }
4622
4623
4624
        	        	            {
4625
52
        	        	                 names.push_back(name);
4626
        	        	            }
4627
4628
4629
        	        	        }
4630
52
        	        	        break;
4631
4632
13
        	        	    default:
4633
4634
13
        	        		if ( cnt13 >= 1 )
4635
        	        		{
4636
13
        	        		    goto loop13;
4637
        	        		}
4638
        	        		/* mismatchedSetEx()
4639
        	        		 */
4640
        	        		CONSTRUCTEX();
4641
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
4642
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
4643
4644
4645
        	        		goto rulesygusCommandEx;
4646
        	        	}
4647
52
        	        	cnt13++;
4648
52
        	            }
4649
13
        	            loop13: ;	/* Jump to here if this rule does not match */
4650
        	        }
4651
4652
        	        {
4653
4654
13
        	                  cmd = PARSER_STATE->invConstraint(names);
4655
4656
        	        }
4657
4658
4659
        	    }
4660
13
        	    break;
4661
189
        	case 5:
4662
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:587:5: CHECK_SYNTH_TOK
4663
        	    {
4664
189
        	         MATCHT(CHECK_SYNTH_TOK, &FOLLOW_CHECK_SYNTH_TOK_in_sygusCommand1304);
4665
189
        	        if  (HASEXCEPTION())
4666
        	        {
4667
        	            goto rulesygusCommandEx;
4668
        	        }
4669
4670
4671
        	        {
4672
189
        	             PARSER_STATE->checkThatLogicIsSet();
4673
        	        }
4674
4675
4676
        	        {
4677
4678
189
        	                  cmd.reset(new CheckSynthCommand());
4679
4680
        	        }
4681
4682
4683
        	    }
4684
189
        	    break;
4685
580
        	case 6:
4686
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:592:5: command[&cmd]
4687
        	    {
4688
580
        	        FOLLOWPUSH(FOLLOW_command_in_sygusCommand1322);
4689
580
        	        command(ctx, &cmd);
4690
4691
580
        	        FOLLOWPOP();
4692
580
        	        if  (HASEXCEPTION())
4693
        	        {
4694
        	            goto rulesygusCommandEx;
4695
        	        }
4696
4697
4698
        	    }
4699
580
        	    break;
4700
4701
            }
4702
        }
4703
    }
4704
4705
    // This is where rules clean up and exit
4706
    //
4707
1924
    goto rulesygusCommandEx; /* Prevent compiler warnings */
4708
1924
    rulesygusCommandEx: ;
4709
4710
1924
            if (HASEXCEPTION())
4711
            {
4712
                PREPORTERROR();
4713
                PRECOVER();
4714
            }
4715
3848
    return cmd;
4716
}
4717
/* $ANTLR end sygusCommand */
4718
4719
/**
4720
 * $ANTLR start sygusGrammar
4721
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:605:1: sygusGrammar[cvc5::api::Grammar*& ret,\n const std::vector<cvc5::api::Term>& sygusVars,\n const std::string& fun] : LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] ( LPAREN_TOK | RPAREN_TOK ) )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK symbol[name, CHECK_DECLARED, SYM_VARIABLE] sortSymbol[t, CHECK_DECLARED] LPAREN_TOK ( term[e,e2] | LPAREN_TOK SYGUS_CONSTANT_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK SYGUS_VARIABLE_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK ;
4722
 */
4723
static void
4724
151
sygusGrammar(pSmt2Parser ctx, cvc5::api::Grammar*& ret, const std::vector<cvc5::api::Term>& sygusVars, const std::string& fun)
4725
{
4726
4727
      // the pre-declaration
4728
302
      std::vector<std::pair<std::string, cvc5::api::Sort>> sortedVarNames;
4729
      // non-terminal symbols of the grammar
4730
302
      std::vector<cvc5::api::Term> ntSyms;
4731
302
      cvc5::api::Sort t;
4732
302
      std::string name;
4733
302
      cvc5::api::Term e, e2;
4734
151
      unsigned dtProcessed = 0;
4735
4736
    /* Initialize rule variables
4737
     */
4738
4739
    {
4740
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:619:3: ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] ( LPAREN_TOK | RPAREN_TOK ) )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK symbol[name, CHECK_DECLARED, SYM_VARIABLE] sortSymbol[t, CHECK_DECLARED] LPAREN_TOK ( term[e,e2] | LPAREN_TOK SYGUS_CONSTANT_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK SYGUS_VARIABLE_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK )
4741
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:621:3: LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] ( LPAREN_TOK | RPAREN_TOK ) )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK symbol[name, CHECK_DECLARED, SYM_VARIABLE] sortSymbol[t, CHECK_DECLARED] LPAREN_TOK ( term[e,e2] | LPAREN_TOK SYGUS_CONSTANT_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK SYGUS_VARIABLE_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK )+ RPAREN_TOK
4742
        {
4743
151
             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGrammar1350);
4744
151
            if  (HASEXCEPTION())
4745
            {
4746
                goto rulesygusGrammarEx;
4747
            }
4748
4749
4750
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:625:3: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] ( LPAREN_TOK | RPAREN_TOK ) )*
4751
4752
            for (;;)
4753
            {
4754
501
                int alt16=2;
4755
501
                switch ( LA(1) )
4756
                {
4757
350
                case LPAREN_TOK:
4758
                	{
4759
350
                		alt16=1;
4760
                	}
4761
350
                    break;
4762
4763
                }
4764
4765
501
                switch (alt16)
4766
                {
4767
350
            	case 1:
4768
            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:625:5: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] ( LPAREN_TOK | RPAREN_TOK )
4769
            	    {
4770
350
            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGrammar1365);
4771
350
            	        if  (HASEXCEPTION())
4772
            	        {
4773
            	            goto rulesygusGrammarEx;
4774
            	        }
4775
4776
4777
350
            	        FOLLOWPUSH(FOLLOW_symbol_in_sygusGrammar1367);
4778
350
            	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
4779
4780
350
            	        FOLLOWPOP();
4781
350
            	        if  (HASEXCEPTION())
4782
            	        {
4783
            	            goto rulesygusGrammarEx;
4784
            	        }
4785
4786
4787
350
            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGrammar1374);
4788
350
            	        sortSymbol(ctx, t, CHECK_DECLARED);
4789
4790
350
            	        FOLLOWPOP();
4791
350
            	        if  (HASEXCEPTION())
4792
            	        {
4793
            	            goto rulesygusGrammarEx;
4794
            	        }
4795
4796
4797
            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:626:34: ( LPAREN_TOK | RPAREN_TOK )
4798
            	        {
4799
350
            	            int alt15=2;
4800
350
            	            switch ( LA(1) )
4801
            	            {
4802
            	            case LPAREN_TOK:
4803
            	            	{
4804
            	            		alt15=1;
4805
            	            	}
4806
            	                break;
4807
350
            	            case RPAREN_TOK:
4808
            	            	{
4809
350
            	            		alt15=2;
4810
            	            	}
4811
350
            	                break;
4812
4813
            	            default:
4814
            	                CONSTRUCTEX();
4815
            	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
4816
            	                EXCEPTION->message      = (void *)"";
4817
            	                EXCEPTION->decisionNum  = 15;
4818
            	                EXCEPTION->state        = 0;
4819
4820
4821
            	                goto rulesygusGrammarEx;
4822
4823
            	            }
4824
4825
350
            	            switch (alt15)
4826
            	            {
4827
            	        	case 1:
4828
            	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:629:7: LPAREN_TOK
4829
            	        	    {
4830
            	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGrammar1399);
4831
            	        	        if  (HASEXCEPTION())
4832
            	        	        {
4833
            	        	            goto rulesygusGrammarEx;
4834
            	        	        }
4835
4836
4837
            	        	        {
4838
4839
            	        	                    std::stringstream sse;
4840
            	        	                    if (sortedVarNames.empty())
4841
            	        	                    {
4842
            	        	                      sse << "The expected SyGuS language is version 2.0, whereas the "
4843
            	        	                          << "input appears to be SyGuS version 1.0 format. The version "
4844
            	        	                          << "2.0 format requires a predeclaration of the non-terminal "
4845
            	        	                          << "symbols of the grammar to be given prior to the definition "
4846
            	        	                          << "of the grammar. See https://sygus.org/language/ for details "
4847
            	        	                          << "and examples. cvc5 versions past 1.8 do not support SyGuS "
4848
            	        	                          << "version 1.0.";
4849
            	        	                    }
4850
            	        	                    else
4851
            	        	                    {
4852
            	        	                      // an unknown syntax error
4853
            	        	                      sse << "Unexpected syntax for SyGuS predeclaration.";
4854
            	        	                    }
4855
            	        	                    PARSER_STATE->parseError(sse.str().c_str());
4856
4857
            	        	        }
4858
4859
4860
            	        	    }
4861
            	        	    break;
4862
350
            	        	case 2:
4863
            	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:649:7: RPAREN_TOK
4864
            	        	    {
4865
350
            	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGrammar1415);
4866
350
            	        	        if  (HASEXCEPTION())
4867
            	        	        {
4868
            	        	            goto rulesygusGrammarEx;
4869
            	        	        }
4870
4871
4872
            	        	    }
4873
350
            	        	    break;
4874
4875
            	            }
4876
            	        }
4877
4878
            	        {
4879
350
            	             sortedVarNames.push_back(make_pair(name, t));
4880
            	        }
4881
4882
4883
            	    }
4884
350
            	    break;
4885
4886
151
            	default:
4887
151
            	    goto loop16;	/* break out of the loop */
4888
            	    break;
4889
                }
4890
350
            }
4891
151
            loop16: ; /* Jump out to here if this rule does not match */
4892
4893
4894
151
             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGrammar1432);
4895
151
            if  (HASEXCEPTION())
4896
            {
4897
                goto rulesygusGrammarEx;
4898
            }
4899
4900
4901
            {
4902
4903
                    // non-terminal symbols in the pre-declaration are locally scoped
4904
151
                    PARSER_STATE->pushScope();
4905
501
                    for (std::pair<std::string, api::Sort>& i : sortedVarNames)
4906
                    {
4907
350
                      PARSER_STATE->checkDeclaration(name, CHECK_UNDECLARED, SYM_SORT);
4908
                      // make the non-terminal symbol, which will be parsed as an ordinary
4909
                      // free variable.
4910
700
                      api::Term nts = PARSER_STATE->bindBoundVar(i.first, i.second);
4911
350
                      ntSyms.push_back(nts);
4912
                    }
4913
151
                    ret = PARSER_STATE->mkGrammar(sygusVars, ntSyms);
4914
4915
            }
4916
4917
4918
151
             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGrammar1443);
4919
151
            if  (HASEXCEPTION())
4920
            {
4921
                goto rulesygusGrammarEx;
4922
            }
4923
4924
4925
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:668:3: ( LPAREN_TOK symbol[name, CHECK_DECLARED, SYM_VARIABLE] sortSymbol[t, CHECK_DECLARED] LPAREN_TOK ( term[e,e2] | LPAREN_TOK SYGUS_CONSTANT_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK SYGUS_VARIABLE_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK )+
4926
            {
4927
151
                int cnt18=0;
4928
4929
                for (;;)
4930
                {
4931
498
                    int alt18=2;
4932
498
            	switch ( LA(1) )
4933
            	{
4934
348
            	case LPAREN_TOK:
4935
            		{
4936
348
            			alt18=1;
4937
            		}
4938
348
            	    break;
4939
4940
            	}
4941
4942
498
            	switch (alt18)
4943
            	{
4944
348
            	    case 1:
4945
            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:669:5: LPAREN_TOK symbol[name, CHECK_DECLARED, SYM_VARIABLE] sortSymbol[t, CHECK_DECLARED] LPAREN_TOK ( term[e,e2] | LPAREN_TOK SYGUS_CONSTANT_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK SYGUS_VARIABLE_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK
4946
            	        {
4947
348
            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGrammar1453);
4948
348
            	            if  (HASEXCEPTION())
4949
            	            {
4950
            	                goto rulesygusGrammarEx;
4951
            	            }
4952
4953
4954
348
            	            FOLLOWPUSH(FOLLOW_symbol_in_sygusGrammar1459);
4955
348
            	            symbol(ctx, name, CHECK_DECLARED, SYM_VARIABLE);
4956
4957
348
            	            FOLLOWPOP();
4958
348
            	            if  (HASEXCEPTION())
4959
            	            {
4960
            	                goto rulesygusGrammarEx;
4961
            	            }
4962
4963
4964
348
            	            FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGrammar1462);
4965
348
            	            sortSymbol(ctx, t, CHECK_DECLARED);
4966
4967
348
            	            FOLLOWPOP();
4968
348
            	            if  (HASEXCEPTION())
4969
            	            {
4970
            	                goto rulesygusGrammarEx;
4971
            	            }
4972
4973
4974
            	            {
4975
4976
            	                      // check that it matches sortedVarNames
4977
348
            	                      if (sortedVarNames[dtProcessed].first != name)
4978
            	                      {
4979
            	                        std::stringstream sse;
4980
            	                        sse << "Grouped rule listing " << name
4981
            	                            << " does not match the name (in order) from the predeclaration ("
4982
            	                            << sortedVarNames[dtProcessed].first << ")." << std::endl;
4983
            	                        PARSER_STATE->parseError(sse.str().c_str());
4984
            	                      }
4985
348
            	                      if (sortedVarNames[dtProcessed].second != t)
4986
            	                      {
4987
            	                        std::stringstream sse;
4988
            	                        sse << "Type for grouped rule listing " << name
4989
            	                            << " does not match the type (in order) from the predeclaration ("
4990
            	                            << sortedVarNames[dtProcessed].second << ")." << std::endl;
4991
            	                        PARSER_STATE->parseError(sse.str().c_str());
4992
            	                      }
4993
4994
            	            }
4995
4996
4997
348
            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGrammar1475);
4998
348
            	            if  (HASEXCEPTION())
4999
            	            {
5000
            	                goto rulesygusGrammarEx;
5001
            	            }
5002
5003
5004
            	            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:691:5: ( term[e,e2] | LPAREN_TOK SYGUS_CONSTANT_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK | LPAREN_TOK SYGUS_VARIABLE_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK )+
5005
            	            {
5006
348
            	                int cnt17=0;
5007
5008
            	                for (;;)
5009
            	                {
5010
1828
            	                    int alt17=4;
5011
1828
            	            	switch ( LA(1) )
5012
            	            	{
5013
860
            	            	case LPAREN_TOK:
5014
            	            		{
5015
860
            	            			switch ( LA(2) )
5016
            	            			{
5017
835
            	            			case AS_TOK:
5018
            	            			case ATTRIBUTE_TOK:
5019
            	            			case COMPREHENSION_TOK:
5020
            	            			case EXISTS_TOK:
5021
            	            			case FORALL_TOK:
5022
            	            			case HO_LAMBDA_TOK:
5023
            	            			case INDEX_TOK:
5024
            	            			case LET_TOK:
5025
            	            			case LPAREN_TOK:
5026
            	            			case MATCH_TOK:
5027
            	            			case QUOTED_SYMBOL:
5028
            	            			case SIMPLE_SYMBOL:
5029
            	            			case TUPLE_CONST_TOK:
5030
            	            			case TUPLE_PROJECT_TOK:
5031
            	            			case UNTERMINATED_QUOTED_SYMBOL:
5032
            	            				{
5033
835
            	            					alt17=1;
5034
            	            				}
5035
835
            	            			    break;
5036
15
            	            			case SYGUS_CONSTANT_TOK:
5037
            	            				{
5038
15
            	            					alt17=2;
5039
            	            				}
5040
15
            	            			    break;
5041
10
            	            			case SYGUS_VARIABLE_TOK:
5042
            	            				{
5043
10
            	            					alt17=3;
5044
            	            				}
5045
10
            	            			    break;
5046
5047
            	            			}
5048
5049
            	            		}
5050
860
            	            	    break;
5051
621
            	            	case BINARY_LITERAL:
5052
            	            	case DECIMAL_LITERAL:
5053
            	            	case HEX_LITERAL:
5054
            	            	case INTEGER_LITERAL:
5055
            	            	case QUOTED_SYMBOL:
5056
            	            	case SIMPLE_SYMBOL:
5057
            	            	case STRING_LITERAL:
5058
            	            	case TUPLE_CONST_TOK:
5059
            	            	case UNTERMINATED_QUOTED_SYMBOL:
5060
            	            		{
5061
621
            	            			alt17=1;
5062
            	            		}
5063
621
            	            	    break;
5064
5065
            	            	}
5066
5067
1828
            	            	switch (alt17)
5068
            	            	{
5069
1456
            	            	    case 1:
5070
            	            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:692:7: term[e,e2]
5071
            	            	        {
5072
1456
            	            	            FOLLOWPUSH(FOLLOW_term_in_sygusGrammar1489);
5073
1456
            	            	            term(ctx, e, e2);
5074
5075
1455
            	            	            FOLLOWPOP();
5076
1455
            	            	            if  (HASEXCEPTION())
5077
            	            	            {
5078
            	            	                goto rulesygusGrammarEx;
5079
            	            	            }
5080
5081
5082
            	            	            {
5083
5084
            	            	                        // add term as constructor to datatype
5085
1455
            	            	                        ret->addRule(ntSyms[dtProcessed], e);
5086
5087
            	            	            }
5088
5089
5090
            	            	        }
5091
1455
            	            	        break;
5092
15
            	            	    case 2:
5093
            	            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:696:9: LPAREN_TOK SYGUS_CONSTANT_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK
5094
            	            	        {
5095
15
            	            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGrammar1502);
5096
15
            	            	            if  (HASEXCEPTION())
5097
            	            	            {
5098
            	            	                goto rulesygusGrammarEx;
5099
            	            	            }
5100
5101
5102
15
            	            	             MATCHT(SYGUS_CONSTANT_TOK, &FOLLOW_SYGUS_CONSTANT_TOK_in_sygusGrammar1504);
5103
15
            	            	            if  (HASEXCEPTION())
5104
            	            	            {
5105
            	            	                goto rulesygusGrammarEx;
5106
            	            	            }
5107
5108
5109
15
            	            	            FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGrammar1506);
5110
15
            	            	            sortSymbol(ctx, t, CHECK_DECLARED);
5111
5112
15
            	            	            FOLLOWPOP();
5113
15
            	            	            if  (HASEXCEPTION())
5114
            	            	            {
5115
            	            	                goto rulesygusGrammarEx;
5116
            	            	            }
5117
5118
5119
15
            	            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGrammar1509);
5120
15
            	            	            if  (HASEXCEPTION())
5121
            	            	            {
5122
            	            	                goto rulesygusGrammarEx;
5123
            	            	            }
5124
5125
5126
            	            	            {
5127
5128
            	            	                        // allow constants in datatype for ntSyms[dtProcessed]
5129
15
            	            	                        ret->addAnyConstant(ntSyms[dtProcessed]);
5130
5131
            	            	            }
5132
5133
5134
            	            	        }
5135
15
            	            	        break;
5136
10
            	            	    case 3:
5137
            	            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:700:9: LPAREN_TOK SYGUS_VARIABLE_TOK sortSymbol[t, CHECK_DECLARED] RPAREN_TOK
5138
            	            	        {
5139
10
            	            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sygusGrammar1521);
5140
10
            	            	            if  (HASEXCEPTION())
5141
            	            	            {
5142
            	            	                goto rulesygusGrammarEx;
5143
            	            	            }
5144
5145
5146
10
            	            	             MATCHT(SYGUS_VARIABLE_TOK, &FOLLOW_SYGUS_VARIABLE_TOK_in_sygusGrammar1523);
5147
10
            	            	            if  (HASEXCEPTION())
5148
            	            	            {
5149
            	            	                goto rulesygusGrammarEx;
5150
            	            	            }
5151
5152
5153
10
            	            	            FOLLOWPUSH(FOLLOW_sortSymbol_in_sygusGrammar1525);
5154
10
            	            	            sortSymbol(ctx, t, CHECK_DECLARED);
5155
5156
10
            	            	            FOLLOWPOP();
5157
10
            	            	            if  (HASEXCEPTION())
5158
            	            	            {
5159
            	            	                goto rulesygusGrammarEx;
5160
            	            	            }
5161
5162
5163
10
            	            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGrammar1528);
5164
10
            	            	            if  (HASEXCEPTION())
5165
            	            	            {
5166
            	            	                goto rulesygusGrammarEx;
5167
            	            	            }
5168
5169
5170
            	            	            {
5171
5172
            	            	                        // add variable constructors to datatype
5173
10
            	            	                        ret->addAnyVariable(ntSyms[dtProcessed]);
5174
5175
            	            	            }
5176
5177
5178
            	            	        }
5179
10
            	            	        break;
5180
5181
347
            	            	    default:
5182
5183
347
            	            		if ( cnt17 >= 1 )
5184
            	            		{
5185
347
            	            		    goto loop17;
5186
            	            		}
5187
            	            		/* mismatchedSetEx()
5188
            	            		 */
5189
            	            		CONSTRUCTEX();
5190
            	            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
5191
            	            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
5192
5193
5194
            	            		goto rulesygusGrammarEx;
5195
            	            	}
5196
1480
            	            	cnt17++;
5197
1480
            	                }
5198
347
            	                loop17: ;	/* Jump to here if this rule does not match */
5199
            	            }
5200
5201
347
            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGrammar1543);
5202
347
            	            if  (HASEXCEPTION())
5203
            	            {
5204
            	                goto rulesygusGrammarEx;
5205
            	            }
5206
5207
5208
347
            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGrammar1549);
5209
347
            	            if  (HASEXCEPTION())
5210
            	            {
5211
            	                goto rulesygusGrammarEx;
5212
            	            }
5213
5214
5215
            	            {
5216
5217
347
            	                      dtProcessed++;
5218
5219
            	            }
5220
5221
5222
            	        }
5223
347
            	        break;
5224
5225
150
            	    default:
5226
5227
150
            		if ( cnt18 >= 1 )
5228
            		{
5229
150
            		    goto loop18;
5230
            		}
5231
            		/* mismatchedSetEx()
5232
            		 */
5233
            		CONSTRUCTEX();
5234
            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
5235
            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
5236
5237
5238
            		goto rulesygusGrammarEx;
5239
            	}
5240
347
            	cnt18++;
5241
347
                }
5242
150
                loop18: ;	/* Jump to here if this rule does not match */
5243
            }
5244
5245
150
             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sygusGrammar1564);
5246
150
            if  (HASEXCEPTION())
5247
            {
5248
                goto rulesygusGrammarEx;
5249
            }
5250
5251
5252
            {
5253
5254
                    // pop scope from the pre-declaration
5255
150
                    PARSER_STATE->popScope();
5256
5257
            }
5258
5259
5260
        }
5261
5262
    }
5263
5264
    // This is where rules clean up and exit
5265
    //
5266
150
    goto rulesygusGrammarEx; /* Prevent compiler warnings */
5267
150
    rulesygusGrammarEx: ;
5268
5269
150
            if (HASEXCEPTION())
5270
            {
5271
                PREPORTERROR();
5272
                PRECOVER();
5273
            }
5274
300
    return ;
5275
}
5276
/* $ANTLR end sygusGrammar */
5277
5278
/**
5279
 * $ANTLR start setInfoInternal
5280
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:718:1: setInfoInternal[std::unique_ptr<cvc5::Command>* cmd] : KEYWORD symbolicExpr[sexpr] ;
5281
 */
5282
static void
5283
5525
setInfoInternal(pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd)
5284
{
5285
5286
11050
      std::string name;
5287
11050
      api::Term sexpr;
5288
5289
    pANTLR3_COMMON_TOKEN    KEYWORD4;
5290
5291
    /* Initialize rule variables
5292
     */
5293
5294
5525
    KEYWORD4       = NULL;
5295
5296
    {
5297
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:723:3: ( KEYWORD symbolicExpr[sexpr] )
5298
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:723:5: KEYWORD symbolicExpr[sexpr]
5299
        {
5300
5525
            KEYWORD4 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_setInfoInternal1585);
5301
5525
            if  (HASEXCEPTION())
5302
            {
5303
                goto rulesetInfoInternalEx;
5304
            }
5305
5306
5307
5525
            FOLLOWPUSH(FOLLOW_symbolicExpr_in_setInfoInternal1587);
5308
5525
            symbolicExpr(ctx, sexpr);
5309
5310
5525
            FOLLOWPOP();
5311
5525
            if  (HASEXCEPTION())
5312
            {
5313
                goto rulesetInfoInternalEx;
5314
            }
5315
5316
5317
            {
5318
5525
                 name = AntlrInput::tokenText(KEYWORD4);
5319
5525
                      cmd->reset(new SetInfoCommand(name.c_str() + 1, sexprToString(sexpr)));
5320
5321
            }
5322
5323
5324
        }
5325
5326
    }
5327
5328
    // This is where rules clean up and exit
5329
    //
5330
5525
    goto rulesetInfoInternalEx; /* Prevent compiler warnings */
5331
5525
    rulesetInfoInternalEx: ;
5332
5333
5525
            if (HASEXCEPTION())
5334
            {
5335
                PREPORTERROR();
5336
                PRECOVER();
5337
            }
5338
11050
    return ;
5339
}
5340
/* $ANTLR end setInfoInternal */
5341
5342
/**
5343
 * $ANTLR start setOptionInternal
5344
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:729:1: setOptionInternal[std::unique_ptr<cvc5::Command>* cmd] : keyword[name] symbolicExpr[sexpr] ;
5345
 */
5346
static void
5347
1778
setOptionInternal(pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd)
5348
{
5349
    /* Initialize rule variables
5350
     */
5351
5352
5353
3556
      std::string name;
5354
3556
      api::Term sexpr;
5355
5356
    {
5357
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:734:3: ( keyword[name] symbolicExpr[sexpr] )
5358
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:734:5: keyword[name] symbolicExpr[sexpr]
5359
        {
5360
1778
            FOLLOWPUSH(FOLLOW_keyword_in_setOptionInternal1613);
5361
1778
            keyword(ctx, name);
5362
5363
1778
            FOLLOWPOP();
5364
1778
            if  (HASEXCEPTION())
5365
            {
5366
                goto rulesetOptionInternalEx;
5367
            }
5368
5369
5370
1778
            FOLLOWPUSH(FOLLOW_symbolicExpr_in_setOptionInternal1616);
5371
1778
            symbolicExpr(ctx, sexpr);
5372
5373
1778
            FOLLOWPOP();
5374
1778
            if  (HASEXCEPTION())
5375
            {
5376
                goto rulesetOptionInternalEx;
5377
            }
5378
5379
5380
            {
5381
1778
                 cmd->reset(new SetOptionCommand(name.c_str() + 1, sexprToString(sexpr)));
5382
                      // Ugly that this changes the state of the parser; but
5383
                      // global-declarations affects parsing, so we can't hold off
5384
                      // on this until some SmtEngine eventually (if ever) executes it.
5385
1778
                      if(name == ":global-declarations")
5386
                      {
5387
17
                        SYM_MAN->setGlobalDeclarations(sexprToString(sexpr) == "true");
5388
                      }
5389
5390
            }
5391
5392
5393
        }
5394
5395
    }
5396
5397
    // This is where rules clean up and exit
5398
    //
5399
1778
    goto rulesetOptionInternalEx; /* Prevent compiler warnings */
5400
1778
    rulesetOptionInternalEx: ;
5401
5402
1778
            if (HASEXCEPTION())
5403
            {
5404
                PREPORTERROR();
5405
                PRECOVER();
5406
            }
5407
3556
    return ;
5408
}
5409
/* $ANTLR end setOptionInternal */
5410
5411
/**
5412
 * $ANTLR start smt25Command
5413
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:746:1: smt25Command[std::unique_ptr<cvc5::Command>* cmd] : ( DECLARE_CONST_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | GET_MODEL_TOK | ECHO_TOK ( simpleSymbolicExpr[s] |) | RESET_TOK | RESET_ASSERTIONS_TOK | DEFINE_FUN_REC_TOK symbol[fname,CHECK_NONE,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK LPAREN_TOK ( term[expr,expr2] )+ RPAREN_TOK );
5414
 */
5415
static void
5416
2490
smt25Command(pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd)
5417
{
5418
5419
4980
      std::string name;
5420
4980
      std::string fname;
5421
4980
      cvc5::api::Term expr, expr2;
5422
4980
      std::vector<std::pair<std::string, cvc5::api::Sort> > sortedVarNames;
5423
4980
      std::string s;
5424
4980
      cvc5::api::Sort t;
5425
4980
      cvc5::api::Term func;
5426
4980
      std::vector<cvc5::api::Term> bvs;
5427
      std::vector<std::vector<std::pair<std::string, cvc5::api::Sort>>>
5428
4980
          sortedVarNamesList;
5429
4980
      std::vector<std::vector<cvc5::api::Term>> flattenVarsList;
5430
4980
      std::vector<std::vector<cvc5::api::Term>> formals;
5431
4980
      std::vector<cvc5::api::Term> funcs;
5432
4980
      std::vector<cvc5::api::Term> func_defs;
5433
4980
      cvc5::api::Term aexpr;
5434
4980
      std::unique_ptr<cvc5::CommandSequence> seq;
5435
4980
      std::vector<api::Sort> sorts;
5436
4980
      std::vector<cvc5::api::Term> flattenVars;
5437
5438
    /* Initialize rule variables
5439
     */
5440
5441
    {
5442
        {
5443
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:768:3: ( DECLARE_CONST_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] | GET_MODEL_TOK | ECHO_TOK ( simpleSymbolicExpr[s] |) | RESET_TOK | RESET_ASSERTIONS_TOK | DEFINE_FUN_REC_TOK symbol[fname,CHECK_NONE,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2] | DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK LPAREN_TOK ( term[expr,expr2] )+ RPAREN_TOK )
5444
5445
            ANTLR3_UINT32 alt22;
5446
5447
2490
            alt22=7;
5448
5449
2490
            switch ( LA(1) )
5450
            {
5451
2288
            case DECLARE_CONST_TOK:
5452
            	{
5453
2288
            		alt22=1;
5454
            	}
5455
2288
                break;
5456
13
            case GET_MODEL_TOK:
5457
            	{
5458
13
            		alt22=2;
5459
            	}
5460
13
                break;
5461
9
            case ECHO_TOK:
5462
            	{
5463
9
            		alt22=3;
5464
            	}
5465
9
                break;
5466
41
            case RESET_TOK:
5467
            	{
5468
41
            		alt22=4;
5469
            	}
5470
41
                break;
5471
32
            case RESET_ASSERTIONS_TOK:
5472
            	{
5473
32
            		alt22=5;
5474
            	}
5475
32
                break;
5476
75
            case DEFINE_FUN_REC_TOK:
5477
            	{
5478
75
            		alt22=6;
5479
            	}
5480
75
                break;
5481
32
            case DEFINE_FUNS_REC_TOK:
5482
            	{
5483
32
            		alt22=7;
5484
            	}
5485
32
                break;
5486
5487
            default:
5488
                CONSTRUCTEX();
5489
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
5490
                EXCEPTION->message      = (void *)"";
5491
                EXCEPTION->decisionNum  = 22;
5492
                EXCEPTION->state        = 0;
5493
5494
5495
                goto rulesmt25CommandEx;
5496
5497
            }
5498
5499
2490
            switch (alt22)
5500
            {
5501
2288
        	case 1:
5502
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:768:5: DECLARE_CONST_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED]
5503
        	    {
5504
2288
        	         MATCHT(DECLARE_CONST_TOK, &FOLLOW_DECLARE_CONST_TOK_in_smt25Command1648);
5505
2288
        	        if  (HASEXCEPTION())
5506
        	        {
5507
        	            goto rulesmt25CommandEx;
5508
        	        }
5509
5510
5511
        	        {
5512
2288
        	             PARSER_STATE->checkThatLogicIsSet();
5513
        	        }
5514
5515
5516
2288
        	        FOLLOWPUSH(FOLLOW_symbol_in_smt25Command1656);
5517
2288
        	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
5518
5519
2288
        	        FOLLOWPOP();
5520
2288
        	        if  (HASEXCEPTION())
5521
        	        {
5522
        	            goto rulesmt25CommandEx;
5523
        	        }
5524
5525
5526
        	        {
5527
2288
        	             PARSER_STATE->checkUserSymbol(name);
5528
        	        }
5529
5530
5531
2288
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_smt25Command1669);
5532
2288
        	        sortSymbol(ctx, t, CHECK_DECLARED);
5533
5534
2288
        	        FOLLOWPOP();
5535
2288
        	        if  (HASEXCEPTION())
5536
        	        {
5537
        	            goto rulesmt25CommandEx;
5538
        	        }
5539
5540
5541
        	        {
5542
        	             // allow overloading here
5543
        	                  api::Term c =
5544
4576
        	                      PARSER_STATE->bindVar(name, t, false, true);
5545
2288
        	                  cmd->reset(new DeclareFunctionCommand(name, c, t));
5546
2288
        	        }
5547
5548
5549
        	    }
5550
2288
        	    break;
5551
13
        	case 2:
5552
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:778:5: GET_MODEL_TOK
5553
        	    {
5554
13
        	         MATCHT(GET_MODEL_TOK, &FOLLOW_GET_MODEL_TOK_in_smt25Command1689);
5555
13
        	        if  (HASEXCEPTION())
5556
        	        {
5557
        	            goto rulesmt25CommandEx;
5558
        	        }
5559
5560
5561
        	        {
5562
13
        	             PARSER_STATE->checkThatLogicIsSet();
5563
        	        }
5564
5565
5566
        	        {
5567
13
        	             cmd->reset(new GetModelCommand());
5568
        	        }
5569
5570
5571
        	    }
5572
13
        	    break;
5573
9
        	case 3:
5574
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:782:5: ECHO_TOK ( simpleSymbolicExpr[s] |)
5575
        	    {
5576
9
        	         MATCHT(ECHO_TOK, &FOLLOW_ECHO_TOK_in_smt25Command1710);
5577
9
        	        if  (HASEXCEPTION())
5578
        	        {
5579
        	            goto rulesmt25CommandEx;
5580
        	        }
5581
5582
5583
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:783:5: ( simpleSymbolicExpr[s] |)
5584
        	        {
5585
9
        	            int alt19=2;
5586
9
        	            switch ( LA(1) )
5587
        	            {
5588
9
        	            case ASSERT_TOK:
5589
        	            case BINARY_LITERAL:
5590
        	            case CHECK_SAT_ASSUMING_TOK:
5591
        	            case CHECK_SAT_TOK:
5592
        	            case DECIMAL_LITERAL:
5593
        	            case DECLARE_DATATYPES_TOK:
5594
        	            case DECLARE_FUN_TOK:
5595
        	            case DECLARE_SORT_TOK:
5596
        	            case DEFINE_FUNS_REC_TOK:
5597
        	            case DEFINE_FUN_REC_TOK:
5598
        	            case DEFINE_FUN_TOK:
5599
        	            case DEFINE_SORT_TOK:
5600
        	            case ECHO_TOK:
5601
        	            case EXIT_TOK:
5602
        	            case GET_ASSERTIONS_TOK:
5603
        	            case GET_ASSIGNMENT_TOK:
5604
        	            case GET_INFO_TOK:
5605
        	            case GET_MODEL_TOK:
5606
        	            case GET_OPTION_TOK:
5607
        	            case GET_PROOF_TOK:
5608
        	            case GET_UNSAT_ASSUMPTIONS_TOK:
5609
        	            case GET_UNSAT_CORE_TOK:
5610
        	            case GET_VALUE_TOK:
5611
        	            case HEX_LITERAL:
5612
        	            case INTEGER_LITERAL:
5613
        	            case KEYWORD:
5614
        	            case POP_TOK:
5615
        	            case PUSH_TOK:
5616
        	            case QUOTED_SYMBOL:
5617
        	            case RESET_ASSERTIONS_TOK:
5618
        	            case RESET_TOK:
5619
        	            case SET_INFO_TOK:
5620
        	            case SET_LOGIC_TOK:
5621
        	            case SET_OPTION_TOK:
5622
        	            case SIMPLE_SYMBOL:
5623
        	            case SIMPLIFY_TOK:
5624
        	            case STRING_LITERAL:
5625
        	            case UNTERMINATED_QUOTED_SYMBOL:
5626
        	            	{
5627
9
        	            		alt19=1;
5628
        	            	}
5629
9
        	                break;
5630
        	            case RPAREN_TOK:
5631
        	            	{
5632
        	            		alt19=2;
5633
        	            	}
5634
        	                break;
5635
5636
        	            default:
5637
        	                CONSTRUCTEX();
5638
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
5639
        	                EXCEPTION->message      = (void *)"";
5640
        	                EXCEPTION->decisionNum  = 19;
5641
        	                EXCEPTION->state        = 0;
5642
5643
5644
        	                goto rulesmt25CommandEx;
5645
5646
        	            }
5647
5648
9
        	            switch (alt19)
5649
        	            {
5650
9
        	        	case 1:
5651
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:783:7: simpleSymbolicExpr[s]
5652
        	        	    {
5653
9
        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_smt25Command1718);
5654
9
        	        	        simpleSymbolicExpr(ctx, s);
5655
5656
9
        	        	        FOLLOWPOP();
5657
9
        	        	        if  (HASEXCEPTION())
5658
        	        	        {
5659
        	        	            goto rulesmt25CommandEx;
5660
        	        	        }
5661
5662
5663
        	        	        {
5664
9
        	        	             cmd->reset(new EchoCommand(s));
5665
        	        	        }
5666
5667
5668
        	        	    }
5669
9
        	        	    break;
5670
        	        	case 2:
5671
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:785:7:
5672
        	        	    {
5673
        	        	        {
5674
        	        	             cmd->reset(new EchoCommand());
5675
        	        	        }
5676
5677
5678
        	        	    }
5679
        	        	    break;
5680
5681
        	            }
5682
        	        }
5683
5684
        	    }
5685
9
        	    break;
5686
41
        	case 4:
5687
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:790:5: RESET_TOK
5688
        	    {
5689
41
        	         MATCHT(RESET_TOK, &FOLLOW_RESET_TOK_in_smt25Command1754);
5690
41
        	        if  (HASEXCEPTION())
5691
        	        {
5692
        	            goto rulesmt25CommandEx;
5693
        	        }
5694
5695
5696
        	        {
5697
5698
41
        	                  cmd->reset(new ResetCommand());
5699
        	                  // reset the state of the parser, which is independent of the symbol
5700
        	                  // manager
5701
41
        	                  PARSER_STATE->reset();
5702
5703
        	        }
5704
5705
5706
        	    }
5707
41
        	    break;
5708
32
        	case 5:
5709
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:799:5: RESET_ASSERTIONS_TOK
5710
        	    {
5711
32
        	         MATCHT(RESET_ASSERTIONS_TOK, &FOLLOW_RESET_ASSERTIONS_TOK_in_smt25Command1772);
5712
32
        	        if  (HASEXCEPTION())
5713
        	        {
5714
        	            goto rulesmt25CommandEx;
5715
        	        }
5716
5717
5718
        	        {
5719
32
        	             cmd->reset(new ResetAssertionsCommand());
5720
5721
        	        }
5722
5723
5724
        	    }
5725
32
        	    break;
5726
75
        	case 6:
5727
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:802:5: DEFINE_FUN_REC_TOK symbol[fname,CHECK_NONE,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] term[expr, expr2]
5728
        	    {
5729
75
        	         MATCHT(DEFINE_FUN_REC_TOK, &FOLLOW_DEFINE_FUN_REC_TOK_in_smt25Command1784);
5730
75
        	        if  (HASEXCEPTION())
5731
        	        {
5732
        	            goto rulesmt25CommandEx;
5733
        	        }
5734
5735
5736
        	        {
5737
75
        	             PARSER_STATE->checkThatLogicIsSet();
5738
        	        }
5739
5740
5741
75
        	        FOLLOWPUSH(FOLLOW_symbol_in_smt25Command1796);
5742
75
        	        symbol(ctx, fname, CHECK_NONE, SYM_VARIABLE);
5743
5744
75
        	        FOLLOWPOP();
5745
75
        	        if  (HASEXCEPTION())
5746
        	        {
5747
        	            goto rulesmt25CommandEx;
5748
        	        }
5749
5750
5751
        	        {
5752
75
        	             PARSER_STATE->checkUserSymbol(fname);
5753
        	        }
5754
5755
5756
75
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command1809);
5757
75
        	        if  (HASEXCEPTION())
5758
        	        {
5759
        	            goto rulesmt25CommandEx;
5760
        	        }
5761
5762
5763
75
        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_smt25Command1811);
5764
75
        	        sortedVarList(ctx, sortedVarNames);
5765
5766
75
        	        FOLLOWPOP();
5767
75
        	        if  (HASEXCEPTION())
5768
        	        {
5769
        	            goto rulesmt25CommandEx;
5770
        	        }
5771
5772
5773
75
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command1814);
5774
75
        	        if  (HASEXCEPTION())
5775
        	        {
5776
        	            goto rulesmt25CommandEx;
5777
        	        }
5778
5779
5780
75
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_smt25Command1820);
5781
75
        	        sortSymbol(ctx, t, CHECK_DECLARED);
5782
5783
75
        	        FOLLOWPOP();
5784
75
        	        if  (HASEXCEPTION())
5785
        	        {
5786
        	            goto rulesmt25CommandEx;
5787
        	        }
5788
5789
5790
        	        {
5791
5792
75
        	                  func =
5793
150
        	                      PARSER_STATE->bindDefineFunRec(fname, sortedVarNames, t, flattenVars);
5794
75
        	                  PARSER_STATE->pushDefineFunRecScope(
5795
        	                      sortedVarNames, func, flattenVars, bvs);
5796
5797
        	        }
5798
5799
5800
75
        	        FOLLOWPUSH(FOLLOW_term_in_smt25Command1833);
5801
75
        	        term(ctx, expr, expr2);
5802
5803
75
        	        FOLLOWPOP();
5804
75
        	        if  (HASEXCEPTION())
5805
        	        {
5806
        	            goto rulesmt25CommandEx;
5807
        	        }
5808
5809
5810
        	        {
5811
75
        	             PARSER_STATE->popScope();
5812
75
        	                  if( !flattenVars.empty() ){
5813
        	                    expr = PARSER_STATE->mkHoApply( expr, flattenVars );
5814
        	                  }
5815
150
        	                  cmd->reset(new DefineFunctionRecCommand(
5816
75
        	                      func, bvs, expr, SYM_MAN->getGlobalDeclarations()));
5817
5818
        	        }
5819
5820
5821
        	    }
5822
75
        	    break;
5823
32
        	case 7:
5824
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:822:5: DEFINE_FUNS_REC_TOK LPAREN_TOK ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+ RPAREN_TOK LPAREN_TOK ( term[expr,expr2] )+ RPAREN_TOK
5825
        	    {
5826
32
        	         MATCHT(DEFINE_FUNS_REC_TOK, &FOLLOW_DEFINE_FUNS_REC_TOK_in_smt25Command1846);
5827
32
        	        if  (HASEXCEPTION())
5828
        	        {
5829
        	            goto rulesmt25CommandEx;
5830
        	        }
5831
5832
5833
        	        {
5834
32
        	             PARSER_STATE->checkThatLogicIsSet();
5835
        	        }
5836
5837
5838
32
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command1858);
5839
32
        	        if  (HASEXCEPTION())
5840
        	        {
5841
        	            goto rulesmt25CommandEx;
5842
        	        }
5843
5844
5845
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:825:5: ( LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )+
5846
        	        {
5847
32
        	            int cnt20=0;
5848
5849
        	            for (;;)
5850
        	            {
5851
106
        	                int alt20=2;
5852
106
        	        	switch ( LA(1) )
5853
        	        	{
5854
74
        	        	case LPAREN_TOK:
5855
        	        		{
5856
74
        	        			alt20=1;
5857
        	        		}
5858
74
        	        	    break;
5859
5860
        	        	}
5861
5862
106
        	        	switch (alt20)
5863
        	        	{
5864
74
        	        	    case 1:
5865
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:825:7: LPAREN_TOK symbol[fname,CHECK_UNDECLARED,SYM_VARIABLE] LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
5866
        	        	        {
5867
74
        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command1866);
5868
74
        	        	            if  (HASEXCEPTION())
5869
        	        	            {
5870
        	        	                goto rulesmt25CommandEx;
5871
        	        	            }
5872
5873
5874
74
        	        	            FOLLOWPUSH(FOLLOW_symbol_in_smt25Command1874);
5875
74
        	        	            symbol(ctx, fname, CHECK_UNDECLARED, SYM_VARIABLE);
5876
5877
74
        	        	            FOLLOWPOP();
5878
74
        	        	            if  (HASEXCEPTION())
5879
        	        	            {
5880
        	        	                goto rulesmt25CommandEx;
5881
        	        	            }
5882
5883
5884
        	        	            {
5885
74
        	        	                 PARSER_STATE->checkUserSymbol(fname);
5886
        	        	            }
5887
5888
5889
74
        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command1891);
5890
74
        	        	            if  (HASEXCEPTION())
5891
        	        	            {
5892
        	        	                goto rulesmt25CommandEx;
5893
        	        	            }
5894
5895
5896
74
        	        	            FOLLOWPUSH(FOLLOW_sortedVarList_in_smt25Command1893);
5897
74
        	        	            sortedVarList(ctx, sortedVarNames);
5898
5899
74
        	        	            FOLLOWPOP();
5900
74
        	        	            if  (HASEXCEPTION())
5901
        	        	            {
5902
        	        	                goto rulesmt25CommandEx;
5903
        	        	            }
5904
5905
5906
74
        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command1896);
5907
74
        	        	            if  (HASEXCEPTION())
5908
        	        	            {
5909
        	        	                goto rulesmt25CommandEx;
5910
        	        	            }
5911
5912
5913
74
        	        	            FOLLOWPUSH(FOLLOW_sortSymbol_in_smt25Command1904);
5914
74
        	        	            sortSymbol(ctx, t, CHECK_DECLARED);
5915
5916
74
        	        	            FOLLOWPOP();
5917
74
        	        	            if  (HASEXCEPTION())
5918
        	        	            {
5919
        	        	                goto rulesmt25CommandEx;
5920
        	        	            }
5921
5922
5923
        	        	            {
5924
5925
74
        	        	                        flattenVars.clear();
5926
74
        	        	                        func = PARSER_STATE->bindDefineFunRec(
5927
        	        	                            fname, sortedVarNames, t, flattenVars);
5928
74
        	        	                        funcs.push_back( func );
5929
5930
        	        	                        // add to lists (need to remember for when parsing the bodies)
5931
74
        	        	                        sortedVarNamesList.push_back( sortedVarNames );
5932
74
        	        	                        flattenVarsList.push_back( flattenVars );
5933
5934
        	        	                        // set up parsing the next variable list block
5935
74
        	        	                        sortedVarNames.clear();
5936
74
        	        	                        flattenVars.clear();
5937
5938
        	        	            }
5939
5940
5941
74
        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command1921);
5942
74
        	        	            if  (HASEXCEPTION())
5943
        	        	            {
5944
        	        	                goto rulesmt25CommandEx;
5945
        	        	            }
5946
5947
5948
        	        	        }
5949
74
        	        	        break;
5950
5951
32
        	        	    default:
5952
5953
32
        	        		if ( cnt20 >= 1 )
5954
        	        		{
5955
32
        	        		    goto loop20;
5956
        	        		}
5957
        	        		/* mismatchedSetEx()
5958
        	        		 */
5959
        	        		CONSTRUCTEX();
5960
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
5961
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
5962
5963
5964
        	        		goto rulesmt25CommandEx;
5965
        	        	}
5966
74
        	        	cnt20++;
5967
74
        	            }
5968
32
        	            loop20: ;	/* Jump to here if this rule does not match */
5969
        	        }
5970
5971
32
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command1934);
5972
32
        	        if  (HASEXCEPTION())
5973
        	        {
5974
        	            goto rulesmt25CommandEx;
5975
        	        }
5976
5977
5978
32
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_smt25Command1940);
5979
32
        	        if  (HASEXCEPTION())
5980
        	        {
5981
        	            goto rulesmt25CommandEx;
5982
        	        }
5983
5984
5985
        	        {
5986
5987
        	                  //set up the first scope
5988
32
        	                  if( sortedVarNamesList.empty() ){
5989
        	                    PARSER_STATE->parseError("Must define at least one function in "
5990
        	                                             "define-funs-rec");
5991
        	                  }
5992
32
        	                  bvs.clear();
5993
64
        	                  PARSER_STATE->pushDefineFunRecScope( sortedVarNamesList[0], funcs[0],
5994
32
        	                                                       flattenVarsList[0], bvs);
5995
5996
        	        }
5997
5998
5999
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:858:5: ( term[expr,expr2] )+
6000
        	        {
6001
32
        	            int cnt21=0;
6002
6003
        	            for (;;)
6004
        	            {
6005
106
        	                int alt21=2;
6006
106
        	        	switch ( LA(1) )
6007
        	        	{
6008
74
        	        	case BINARY_LITERAL:
6009
        	        	case DECIMAL_LITERAL:
6010
        	        	case HEX_LITERAL:
6011
        	        	case INTEGER_LITERAL:
6012
        	        	case LPAREN_TOK:
6013
        	        	case QUOTED_SYMBOL:
6014
        	        	case SIMPLE_SYMBOL:
6015
        	        	case STRING_LITERAL:
6016
        	        	case TUPLE_CONST_TOK:
6017
        	        	case UNTERMINATED_QUOTED_SYMBOL:
6018
        	        		{
6019
74
        	        			alt21=1;
6020
        	        		}
6021
74
        	        	    break;
6022
6023
        	        	}
6024
6025
106
        	        	switch (alt21)
6026
        	        	{
6027
74
        	        	    case 1:
6028
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:859:5: term[expr,expr2]
6029
        	        	        {
6030
74
        	        	            FOLLOWPUSH(FOLLOW_term_in_smt25Command1958);
6031
74
        	        	            term(ctx, expr, expr2);
6032
6033
74
        	        	            FOLLOWPOP();
6034
74
        	        	            if  (HASEXCEPTION())
6035
        	        	            {
6036
        	        	                goto rulesmt25CommandEx;
6037
        	        	            }
6038
6039
6040
        	        	            {
6041
6042
74
        	        	                      unsigned j = func_defs.size();
6043
74
        	        	                      if( !flattenVarsList[j].empty() ){
6044
        	        	                        expr = PARSER_STATE->mkHoApply( expr, flattenVarsList[j] );
6045
        	        	                      }
6046
74
        	        	                      func_defs.push_back( expr );
6047
74
        	        	                      formals.push_back(bvs);
6048
74
        	        	                      j++;
6049
        	        	                      //set up the next scope
6050
74
        	        	                      PARSER_STATE->popScope();
6051
74
        	        	                      if( func_defs.size()<funcs.size() ){
6052
42
        	        	                        bvs.clear();
6053
84
        	        	                        PARSER_STATE->pushDefineFunRecScope( sortedVarNamesList[j], funcs[j],
6054
42
        	        	                                                             flattenVarsList[j], bvs);
6055
        	        	                      }
6056
6057
        	        	            }
6058
6059
6060
        	        	        }
6061
74
        	        	        break;
6062
6063
32
        	        	    default:
6064
6065
32
        	        		if ( cnt21 >= 1 )
6066
        	        		{
6067
32
        	        		    goto loop21;
6068
        	        		}
6069
        	        		/* mismatchedSetEx()
6070
        	        		 */
6071
        	        		CONSTRUCTEX();
6072
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
6073
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
6074
6075
6076
        	        		goto rulesmt25CommandEx;
6077
        	        	}
6078
74
        	        	cnt21++;
6079
74
        	            }
6080
32
        	            loop21: ;	/* Jump to here if this rule does not match */
6081
        	        }
6082
6083
32
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_smt25Command1978);
6084
32
        	        if  (HASEXCEPTION())
6085
        	        {
6086
        	            goto rulesmt25CommandEx;
6087
        	        }
6088
6089
6090
        	        {
6091
32
        	             if( funcs.size()!=func_defs.size() ){
6092
        	                    PARSER_STATE->parseError(std::string(
6093
        	                        "Number of functions defined does not match number listed in "
6094
        	                        "define-funs-rec"));
6095
        	                  }
6096
32
        	                  cmd->reset(new DefineFunctionRecCommand(
6097
32
        	                      funcs, formals, func_defs, SYM_MAN->getGlobalDeclarations()));
6098
6099
        	        }
6100
6101
6102
        	    }
6103
32
        	    break;
6104
6105
            }
6106
        }
6107
    }
6108
6109
    // This is where rules clean up and exit
6110
    //
6111
2490
    goto rulesmt25CommandEx; /* Prevent compiler warnings */
6112
2490
    rulesmt25CommandEx: ;
6113
6114
2490
            if (HASEXCEPTION())
6115
            {
6116
                PREPORTERROR();
6117
                PRECOVER();
6118
            }
6119
4980
    return ;
6120
}
6121
/* $ANTLR end smt25Command */
6122
6123
/**
6124
 * $ANTLR start extendedCommand
6125
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:888:1: extendedCommand[std::unique_ptr<cvc5::Command>* cmd] : ( DECLARE_CODATATYPE_TOK datatypeDefCommand[true, cmd] | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd] | DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK | DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK | DECLARE_PREDS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+ RPAREN_TOK | DEFINE_TOK ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] ) | DEFINE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] term[e, e2] | SIMPLIFY_TOK term[e,e2] | GET_QE_TOK term[e,e2] | GET_QE_DISJUNCT_TOK term[e,e2] | GET_ABDUCT_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] ( sygusGrammar[g, terms, name] )? | GET_INTERPOL_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] ( sygusGrammar[g, terms, name] )? | DECLARE_HEAP LPAREN_TOK sortSymbol[t, CHECK_DECLARED] sortSymbol[s, CHECK_DECLARED] RPAREN_TOK | DECLARE_POOL symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( term[e, e2] )* RPAREN_TOK | BLOCK_MODEL_TOK | BLOCK_MODEL_VALUES_TOK ( LPAREN_TOK termList[terms,e] RPAREN_TOK |~ LPAREN_TOK ) );
6126
 */
6127
static void
6128
182
extendedCommand(pSmt2Parser ctx, std::unique_ptr<cvc5::Command>* cmd)
6129
{
6130
6131
364
      std::vector<api::DatatypeDecl> dts;
6132
364
      cvc5::api::Term e, e2;
6133
364
      cvc5::api::Sort t, s;
6134
364
      std::string name;
6135
364
      std::vector<std::string> names;
6136
364
      std::vector<cvc5::api::Term> terms;
6137
364
      std::vector<api::Sort> sorts;
6138
364
      std::vector<std::pair<std::string, cvc5::api::Sort> > sortedVarNames;
6139
364
      std::unique_ptr<cvc5::CommandSequence> seq;
6140
182
      api::Grammar* g = nullptr;
6141
6142
    /* Initialize rule variables
6143
     */
6144
6145
    {
6146
        {
6147
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:903:3: ( DECLARE_CODATATYPE_TOK datatypeDefCommand[true, cmd] | DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd] | DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK | DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK | DECLARE_PREDS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+ RPAREN_TOK | DEFINE_TOK ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] ) | DEFINE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] term[e, e2] | SIMPLIFY_TOK term[e,e2] | GET_QE_TOK term[e,e2] | GET_QE_DISJUNCT_TOK term[e,e2] | GET_ABDUCT_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] ( sygusGrammar[g, terms, name] )? | GET_INTERPOL_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] ( sygusGrammar[g, terms, name] )? | DECLARE_HEAP LPAREN_TOK sortSymbol[t, CHECK_DECLARED] sortSymbol[s, CHECK_DECLARED] RPAREN_TOK | DECLARE_POOL symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( term[e, e2] )* RPAREN_TOK | BLOCK_MODEL_TOK | BLOCK_MODEL_VALUES_TOK ( LPAREN_TOK termList[terms,e] RPAREN_TOK |~ LPAREN_TOK ) )
6148
6149
            ANTLR3_UINT32 alt31;
6150
6151
182
            alt31=16;
6152
6153
182
            switch ( LA(1) )
6154
            {
6155
2
            case DECLARE_CODATATYPE_TOK:
6156
            	{
6157
2
            		alt31=1;
6158
            	}
6159
2
                break;
6160
22
            case DECLARE_CODATATYPES_TOK:
6161
            	{
6162
22
            		alt31=2;
6163
            	}
6164
22
                break;
6165
            case DECLARE_SORTS_TOK:
6166
            	{
6167
            		alt31=3;
6168
            	}
6169
                break;
6170
2
            case DECLARE_FUNS_TOK:
6171
            	{
6172
2
            		alt31=4;
6173
            	}
6174
2
                break;
6175
            case DECLARE_PREDS_TOK:
6176
            	{
6177
            		alt31=5;
6178
            	}
6179
                break;
6180
8
            case DEFINE_TOK:
6181
            	{
6182
8
            		alt31=6;
6183
            	}
6184
8
                break;
6185
8
            case DEFINE_CONST_TOK:
6186
            	{
6187
8
            		alt31=7;
6188
            	}
6189
8
                break;
6190
1
            case SIMPLIFY_TOK:
6191
            	{
6192
1
            		alt31=8;
6193
            	}
6194
1
                break;
6195
7
            case GET_QE_TOK:
6196
            	{
6197
7
            		alt31=9;
6198
            	}
6199
7
                break;
6200
1
            case GET_QE_DISJUNCT_TOK:
6201
            	{
6202
1
            		alt31=10;
6203
            	}
6204
1
                break;
6205
11
            case GET_ABDUCT_TOK:
6206
            	{
6207
11
            		alt31=11;
6208
            	}
6209
11
                break;
6210
8
            case GET_INTERPOL_TOK:
6211
            	{
6212
8
            		alt31=12;
6213
            	}
6214
8
                break;
6215
87
            case DECLARE_HEAP:
6216
            	{
6217
87
            		alt31=13;
6218
            	}
6219
87
                break;
6220
3
            case DECLARE_POOL:
6221
            	{
6222
3
            		alt31=14;
6223
            	}
6224
3
                break;
6225
14
            case BLOCK_MODEL_TOK:
6226
            	{
6227
14
            		alt31=15;
6228
            	}
6229
14
                break;
6230
8
            case BLOCK_MODEL_VALUES_TOK:
6231
            	{
6232
8
            		alt31=16;
6233
            	}
6234
8
                break;
6235
6236
            default:
6237
                CONSTRUCTEX();
6238
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
6239
                EXCEPTION->message      = (void *)"";
6240
                EXCEPTION->decisionNum  = 31;
6241
                EXCEPTION->state        = 0;
6242
6243
6244
                goto ruleextendedCommandEx;
6245
6246
            }
6247
6248
182
            switch (alt31)
6249
            {
6250
2
        	case 1:
6251
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:903:5: DECLARE_CODATATYPE_TOK datatypeDefCommand[true, cmd]
6252
        	    {
6253
2
        	         MATCHT(DECLARE_CODATATYPE_TOK, &FOLLOW_DECLARE_CODATATYPE_TOK_in_extendedCommand2009);
6254
2
        	        if  (HASEXCEPTION())
6255
        	        {
6256
        	            goto ruleextendedCommandEx;
6257
        	        }
6258
6259
6260
2
        	        FOLLOWPUSH(FOLLOW_datatypeDefCommand_in_extendedCommand2011);
6261
2
        	        datatypeDefCommand(ctx, true, cmd);
6262
6263
2
        	        FOLLOWPOP();
6264
2
        	        if  (HASEXCEPTION())
6265
        	        {
6266
        	            goto ruleextendedCommandEx;
6267
        	        }
6268
6269
6270
        	    }
6271
2
        	    break;
6272
22
        	case 2:
6273
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:904:5: DECLARE_CODATATYPES_TOK datatypesDefCommand[true, cmd]
6274
        	    {
6275
22
        	         MATCHT(DECLARE_CODATATYPES_TOK, &FOLLOW_DECLARE_CODATATYPES_TOK_in_extendedCommand2018);
6276
22
        	        if  (HASEXCEPTION())
6277
        	        {
6278
        	            goto ruleextendedCommandEx;
6279
        	        }
6280
6281
6282
22
        	        FOLLOWPUSH(FOLLOW_datatypesDefCommand_in_extendedCommand2020);
6283
22
        	        datatypesDefCommand(ctx, true, cmd);
6284
6285
22
        	        FOLLOWPOP();
6286
22
        	        if  (HASEXCEPTION())
6287
        	        {
6288
        	            goto ruleextendedCommandEx;
6289
        	        }
6290
6291
6292
        	    }
6293
22
        	    break;
6294
        	case 3:
6295
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:908:5: DECLARE_SORTS_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+ RPAREN_TOK
6296
        	    {
6297
        	         MATCHT(DECLARE_SORTS_TOK, &FOLLOW_DECLARE_SORTS_TOK_in_extendedCommand2035);
6298
        	        if  (HASEXCEPTION())
6299
        	        {
6300
        	            goto ruleextendedCommandEx;
6301
        	        }
6302
6303
6304
        	        {
6305
6306
        	                  PARSER_STATE->checkThatLogicIsSet();
6307
        	                  PARSER_STATE->checkLogicAllowsFreeSorts();
6308
        	                  seq.reset(new cvc5::CommandSequence());
6309
6310
        	        }
6311
6312
6313
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2047);
6314
        	        if  (HASEXCEPTION())
6315
        	        {
6316
        	            goto ruleextendedCommandEx;
6317
        	        }
6318
6319
6320
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:915:5: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )+
6321
        	        {
6322
        	            int cnt23=0;
6323
6324
        	            for (;;)
6325
        	            {
6326
        	                int alt23=2;
6327
        	        	switch ( LA(1) )
6328
        	        	{
6329
        	        	case QUOTED_SYMBOL:
6330
        	        	case SIMPLE_SYMBOL:
6331
        	        	case UNTERMINATED_QUOTED_SYMBOL:
6332
        	        		{
6333
        	        			alt23=1;
6334
        	        		}
6335
        	        	    break;
6336
6337
        	        	}
6338
6339
        	        	switch (alt23)
6340
        	        	{
6341
        	        	    case 1:
6342
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:915:7: symbol[name,CHECK_UNDECLARED,SYM_SORT]
6343
        	        	        {
6344
        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2055);
6345
        	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
6346
6347
        	        	            FOLLOWPOP();
6348
        	        	            if  (HASEXCEPTION())
6349
        	        	            {
6350
        	        	                goto ruleextendedCommandEx;
6351
        	        	            }
6352
6353
6354
        	        	            {
6355
        	        	                 PARSER_STATE->checkUserSymbol(name);
6356
        	        	                        api::Sort type = PARSER_STATE->mkSort(name);
6357
        	        	                        seq->addCommand(new DeclareSortCommand(name, 0, type));
6358
6359
        	        	            }
6360
6361
6362
        	        	        }
6363
        	        	        break;
6364
6365
        	        	    default:
6366
6367
        	        		if ( cnt23 >= 1 )
6368
        	        		{
6369
        	        		    goto loop23;
6370
        	        		}
6371
        	        		/* mismatchedSetEx()
6372
        	        		 */
6373
        	        		CONSTRUCTEX();
6374
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
6375
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
6376
6377
6378
        	        		goto ruleextendedCommandEx;
6379
        	        	}
6380
        	        	cnt23++;
6381
        	            }
6382
        	            loop23: ;	/* Jump to here if this rule does not match */
6383
        	        }
6384
6385
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2077);
6386
        	        if  (HASEXCEPTION())
6387
        	        {
6388
        	            goto ruleextendedCommandEx;
6389
        	        }
6390
6391
6392
        	        {
6393
        	             cmd->reset(seq.release());
6394
        	        }
6395
6396
6397
        	    }
6398
        	    break;
6399
2
        	case 4:
6400
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:924:5: DECLARE_FUNS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+ RPAREN_TOK
6401
        	    {
6402
2
        	         MATCHT(DECLARE_FUNS_TOK, &FOLLOW_DECLARE_FUNS_TOK_in_extendedCommand2090);
6403
2
        	        if  (HASEXCEPTION())
6404
        	        {
6405
        	            goto ruleextendedCommandEx;
6406
        	        }
6407
6408
6409
        	        {
6410
2
        	             PARSER_STATE->checkThatLogicIsSet();
6411
        	        }
6412
6413
6414
        	        {
6415
2
        	             seq.reset(new cvc5::CommandSequence());
6416
        	        }
6417
6418
6419
2
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2104);
6420
2
        	        if  (HASEXCEPTION())
6421
        	        {
6422
        	            goto ruleextendedCommandEx;
6423
        	        }
6424
6425
6426
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:927:5: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK )+
6427
        	        {
6428
2
        	            int cnt24=0;
6429
6430
        	            for (;;)
6431
        	            {
6432
6
        	                int alt24=2;
6433
6
        	        	switch ( LA(1) )
6434
        	        	{
6435
4
        	        	case LPAREN_TOK:
6436
        	        		{
6437
4
        	        			alt24=1;
6438
        	        		}
6439
4
        	        	    break;
6440
6441
        	        	}
6442
6443
6
        	        	switch (alt24)
6444
        	        	{
6445
4
        	        	    case 1:
6446
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:927:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] nonemptySortList[sorts] RPAREN_TOK
6447
        	        	        {
6448
4
        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2112);
6449
4
        	        	            if  (HASEXCEPTION())
6450
        	        	            {
6451
        	        	                goto ruleextendedCommandEx;
6452
        	        	            }
6453
6454
6455
4
        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2114);
6456
4
        	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
6457
6458
4
        	        	            FOLLOWPOP();
6459
4
        	        	            if  (HASEXCEPTION())
6460
        	        	            {
6461
        	        	                goto ruleextendedCommandEx;
6462
        	        	            }
6463
6464
6465
        	        	            {
6466
4
        	        	                 PARSER_STATE->checkUserSymbol(name);
6467
        	        	            }
6468
6469
6470
4
        	        	            FOLLOWPUSH(FOLLOW_nonemptySortList_in_extendedCommand2131);
6471
4
        	        	            nonemptySortList(ctx, sorts);
6472
6473
4
        	        	            FOLLOWPOP();
6474
4
        	        	            if  (HASEXCEPTION())
6475
        	        	            {
6476
        	        	                goto ruleextendedCommandEx;
6477
        	        	            }
6478
6479
6480
4
        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2134);
6481
4
        	        	            if  (HASEXCEPTION())
6482
        	        	            {
6483
        	        	                goto ruleextendedCommandEx;
6484
        	        	            }
6485
6486
6487
        	        	            {
6488
8
        	        	                 api::Sort tt;
6489
4
        	        	                        if(sorts.size() > 1) {
6490
        	        	                          PARSER_STATE->checkLogicAllowsFunctions();
6491
        	        	                          // must flatten
6492
        	        	                          api::Sort range = sorts.back();
6493
        	        	                          sorts.pop_back();
6494
        	        	                          tt = PARSER_STATE->mkFlatFunctionType(sorts, range);
6495
        	        	                        } else {
6496
4
        	        	                          tt = sorts[0];
6497
        	        	                        }
6498
        	        	                        // allow overloading
6499
        	        	                        api::Term func =
6500
8
        	        	                            PARSER_STATE->bindVar(name, tt, false, true);
6501
4
        	        	                        seq->addCommand(new DeclareFunctionCommand(name, func, tt));
6502
4
        	        	                        sorts.clear();
6503
6504
4
        	        	            }
6505
6506
6507
        	        	        }
6508
4
        	        	        break;
6509
6510
2
        	        	    default:
6511
6512
2
        	        		if ( cnt24 >= 1 )
6513
        	        		{
6514
2
        	        		    goto loop24;
6515
        	        		}
6516
        	        		/* mismatchedSetEx()
6517
        	        		 */
6518
        	        		CONSTRUCTEX();
6519
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
6520
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
6521
6522
6523
        	        		goto ruleextendedCommandEx;
6524
        	        	}
6525
4
        	        	cnt24++;
6526
4
        	            }
6527
2
        	            loop24: ;	/* Jump to here if this rule does not match */
6528
        	        }
6529
6530
2
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2155);
6531
2
        	        if  (HASEXCEPTION())
6532
        	        {
6533
        	            goto ruleextendedCommandEx;
6534
        	        }
6535
6536
6537
        	        {
6538
2
        	             cmd->reset(seq.release());
6539
        	        }
6540
6541
6542
        	    }
6543
2
        	    break;
6544
        	case 5:
6545
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:949:5: DECLARE_PREDS_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+ RPAREN_TOK
6546
        	    {
6547
        	         MATCHT(DECLARE_PREDS_TOK, &FOLLOW_DECLARE_PREDS_TOK_in_extendedCommand2167);
6548
        	        if  (HASEXCEPTION())
6549
        	        {
6550
        	            goto ruleextendedCommandEx;
6551
        	        }
6552
6553
6554
        	        {
6555
        	             PARSER_STATE->checkThatLogicIsSet();
6556
        	        }
6557
6558
6559
        	        {
6560
        	             seq.reset(new cvc5::CommandSequence());
6561
        	        }
6562
6563
6564
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2181);
6565
        	        if  (HASEXCEPTION())
6566
        	        {
6567
        	            goto ruleextendedCommandEx;
6568
        	        }
6569
6570
6571
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:952:5: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK )+
6572
        	        {
6573
        	            int cnt25=0;
6574
6575
        	            for (;;)
6576
        	            {
6577
        	                int alt25=2;
6578
        	        	switch ( LA(1) )
6579
        	        	{
6580
        	        	case LPAREN_TOK:
6581
        	        		{
6582
        	        			alt25=1;
6583
        	        		}
6584
        	        	    break;
6585
6586
        	        	}
6587
6588
        	        	switch (alt25)
6589
        	        	{
6590
        	        	    case 1:
6591
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:952:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortList[sorts] RPAREN_TOK
6592
        	        	        {
6593
        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2189);
6594
        	        	            if  (HASEXCEPTION())
6595
        	        	            {
6596
        	        	                goto ruleextendedCommandEx;
6597
        	        	            }
6598
6599
6600
        	        	            FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2191);
6601
        	        	            symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
6602
6603
        	        	            FOLLOWPOP();
6604
        	        	            if  (HASEXCEPTION())
6605
        	        	            {
6606
        	        	                goto ruleextendedCommandEx;
6607
        	        	            }
6608
6609
6610
        	        	            {
6611
        	        	                 PARSER_STATE->checkUserSymbol(name);
6612
        	        	            }
6613
6614
6615
        	        	            FOLLOWPUSH(FOLLOW_sortList_in_extendedCommand2208);
6616
        	        	            sortList(ctx, sorts);
6617
6618
        	        	            FOLLOWPOP();
6619
        	        	            if  (HASEXCEPTION())
6620
        	        	            {
6621
        	        	                goto ruleextendedCommandEx;
6622
        	        	            }
6623
6624
6625
        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2211);
6626
        	        	            if  (HASEXCEPTION())
6627
        	        	            {
6628
        	        	                goto ruleextendedCommandEx;
6629
        	        	            }
6630
6631
6632
        	        	            {
6633
        	        	                 t = SOLVER->getBooleanSort();
6634
        	        	                        if(sorts.size() > 0) {
6635
        	        	                          PARSER_STATE->checkLogicAllowsFunctions();
6636
        	        	                          t = SOLVER->mkFunctionSort(sorts, t);
6637
        	        	                        }
6638
        	        	                        // allow overloading
6639
        	        	                        api::Term func =
6640
        	        	                            PARSER_STATE->bindVar(name, t, false, true);
6641
        	        	                        seq->addCommand(new DeclareFunctionCommand(name, func, t));
6642
        	        	                        sorts.clear();
6643
6644
        	        	            }
6645
6646
6647
        	        	        }
6648
        	        	        break;
6649
6650
        	        	    default:
6651
6652
        	        		if ( cnt25 >= 1 )
6653
        	        		{
6654
        	        		    goto loop25;
6655
        	        		}
6656
        	        		/* mismatchedSetEx()
6657
        	        		 */
6658
        	        		CONSTRUCTEX();
6659
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
6660
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
6661
6662
6663
        	        		goto ruleextendedCommandEx;
6664
        	        	}
6665
        	        	cnt25++;
6666
        	            }
6667
        	            loop25: ;	/* Jump to here if this rule does not match */
6668
        	        }
6669
6670
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2232);
6671
        	        if  (HASEXCEPTION())
6672
        	        {
6673
        	            goto ruleextendedCommandEx;
6674
        	        }
6675
6676
6677
        	        {
6678
        	             cmd->reset(seq.release());
6679
        	        }
6680
6681
6682
        	    }
6683
        	    break;
6684
8
        	case 6:
6685
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:970:5: DEFINE_TOK ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] )
6686
        	    {
6687
8
        	         MATCHT(DEFINE_TOK, &FOLLOW_DEFINE_TOK_in_extendedCommand2245);
6688
8
        	        if  (HASEXCEPTION())
6689
        	        {
6690
        	            goto ruleextendedCommandEx;
6691
        	        }
6692
6693
6694
        	        {
6695
8
        	             PARSER_STATE->checkThatLogicIsSet();
6696
        	        }
6697
6698
6699
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:971:5: ( symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] | LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2] )
6700
        	        {
6701
8
        	            int alt26=2;
6702
8
        	            switch ( LA(1) )
6703
        	            {
6704
5
        	            case QUOTED_SYMBOL:
6705
        	            case SIMPLE_SYMBOL:
6706
        	            case UNTERMINATED_QUOTED_SYMBOL:
6707
        	            	{
6708
5
        	            		alt26=1;
6709
        	            	}
6710
5
        	                break;
6711
3
        	            case LPAREN_TOK:
6712
        	            	{
6713
3
        	            		alt26=2;
6714
        	            	}
6715
3
        	                break;
6716
6717
        	            default:
6718
        	                CONSTRUCTEX();
6719
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
6720
        	                EXCEPTION->message      = (void *)"";
6721
        	                EXCEPTION->decisionNum  = 26;
6722
        	                EXCEPTION->state        = 0;
6723
6724
6725
        	                goto ruleextendedCommandEx;
6726
6727
        	            }
6728
6729
8
        	            switch (alt26)
6730
        	            {
6731
5
        	        	case 1:
6732
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:972:7: symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2]
6733
        	        	    {
6734
5
        	        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2262);
6735
5
        	        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
6736
6737
5
        	        	        FOLLOWPOP();
6738
5
        	        	        if  (HASEXCEPTION())
6739
        	        	        {
6740
        	        	            goto ruleextendedCommandEx;
6741
        	        	        }
6742
6743
6744
        	        	        {
6745
5
        	        	             PARSER_STATE->checkUserSymbol(name);
6746
        	        	        }
6747
6748
6749
5
        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2279);
6750
5
        	        	        term(ctx, e, e2);
6751
6752
5
        	        	        FOLLOWPOP();
6753
5
        	        	        if  (HASEXCEPTION())
6754
        	        	        {
6755
        	        	            goto ruleextendedCommandEx;
6756
        	        	        }
6757
6758
6759
        	        	        {
6760
6761
10
        	        	                    api::Term func = PARSER_STATE->bindVar(name, e.getSort());
6762
10
        	        	                    cmd->reset(new DefineFunctionCommand(
6763
5
        	        	                        name, func, e, SYM_MAN->getGlobalDeclarations()));
6764
6765
5
        	        	        }
6766
6767
6768
        	        	    }
6769
5
        	        	    break;
6770
3
        	        	case 2:
6771
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:981:7: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortedVarList[sortedVarNames] RPAREN_TOK term[e,e2]
6772
        	        	    {
6773
3
        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2303);
6774
3
        	        	        if  (HASEXCEPTION())
6775
        	        	        {
6776
        	        	            goto ruleextendedCommandEx;
6777
        	        	        }
6778
6779
6780
3
        	        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2311);
6781
3
        	        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
6782
6783
3
        	        	        FOLLOWPOP();
6784
3
        	        	        if  (HASEXCEPTION())
6785
        	        	        {
6786
        	        	            goto ruleextendedCommandEx;
6787
        	        	        }
6788
6789
6790
        	        	        {
6791
3
        	        	             PARSER_STATE->checkUserSymbol(name);
6792
        	        	        }
6793
6794
6795
3
        	        	        FOLLOWPUSH(FOLLOW_sortedVarList_in_extendedCommand2328);
6796
3
        	        	        sortedVarList(ctx, sortedVarNames);
6797
6798
3
        	        	        FOLLOWPOP();
6799
3
        	        	        if  (HASEXCEPTION())
6800
        	        	        {
6801
        	        	            goto ruleextendedCommandEx;
6802
        	        	        }
6803
6804
6805
3
        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2331);
6806
3
        	        	        if  (HASEXCEPTION())
6807
        	        	        {
6808
        	        	            goto ruleextendedCommandEx;
6809
        	        	        }
6810
6811
6812
        	        	        {
6813
        	        	             /* add variables to parser state before parsing term */
6814
3
        	        	                    Debug("parser") << "define fun: '" << name << "'" << std::endl;
6815
3
        	        	                    PARSER_STATE->pushScope();
6816
3
        	        	                    terms = PARSER_STATE->bindBoundVars(sortedVarNames);
6817
6818
        	        	        }
6819
6820
6821
3
        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2347);
6822
3
        	        	        term(ctx, e, e2);
6823
6824
3
        	        	        FOLLOWPOP();
6825
3
        	        	        if  (HASEXCEPTION())
6826
        	        	        {
6827
        	        	            goto ruleextendedCommandEx;
6828
        	        	        }
6829
6830
6831
        	        	        {
6832
6833
3
        	        	                    PARSER_STATE->popScope();
6834
        	        	                    // declare the name down here (while parsing term, signature
6835
        	        	                    // must not be extended with the name itself; no recursion
6836
        	        	                    // permitted)
6837
6
        	        	                    api::Sort tt = e.getSort();
6838
3
        	        	                    if( sortedVarNames.size() > 0 ) {
6839
3
        	        	                      sorts.reserve(sortedVarNames.size());
6840
3
        	        	                      for(std::vector<std::pair<std::string, api::Sort> >::const_iterator
6841
3
        	        	                            i = sortedVarNames.begin(), iend = sortedVarNames.end();
6842
6
        	        	                          i != iend; ++i) {
6843
3
        	        	                        sorts.push_back((*i).second);
6844
        	        	                      }
6845
3
        	        	                      tt = SOLVER->mkFunctionSort(sorts, tt);
6846
        	        	                    }
6847
6
        	        	                    api::Term func = PARSER_STATE->bindVar(name, tt);
6848
6
        	        	                    cmd->reset(new DefineFunctionCommand(
6849
3
        	        	                        name, func, terms, e, SYM_MAN->getGlobalDeclarations()));
6850
6851
3
        	        	        }
6852
6853
6854
        	        	    }
6855
3
        	        	    break;
6856
6857
        	            }
6858
        	        }
6859
6860
        	    }
6861
8
        	    break;
6862
8
        	case 7:
6863
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1012:5: DEFINE_CONST_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] term[e, e2]
6864
        	    {
6865
8
        	         MATCHT(DEFINE_CONST_TOK, &FOLLOW_DEFINE_CONST_TOK_in_extendedCommand2373);
6866
8
        	        if  (HASEXCEPTION())
6867
        	        {
6868
        	            goto ruleextendedCommandEx;
6869
        	        }
6870
6871
6872
        	        {
6873
8
        	             PARSER_STATE->checkThatLogicIsSet();
6874
        	        }
6875
6876
6877
8
        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2381);
6878
8
        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
6879
6880
8
        	        FOLLOWPOP();
6881
8
        	        if  (HASEXCEPTION())
6882
        	        {
6883
        	            goto ruleextendedCommandEx;
6884
        	        }
6885
6886
6887
        	        {
6888
8
        	             PARSER_STATE->checkUserSymbol(name);
6889
        	        }
6890
6891
6892
8
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_extendedCommand2394);
6893
8
        	        sortSymbol(ctx, t, CHECK_DECLARED);
6894
6895
8
        	        FOLLOWPOP();
6896
8
        	        if  (HASEXCEPTION())
6897
        	        {
6898
        	            goto ruleextendedCommandEx;
6899
        	        }
6900
6901
6902
8
        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2401);
6903
8
        	        term(ctx, e, e2);
6904
6905
8
        	        FOLLOWPOP();
6906
8
        	        if  (HASEXCEPTION())
6907
        	        {
6908
        	            goto ruleextendedCommandEx;
6909
        	        }
6910
6911
6912
        	        {
6913
6914
        	                  // declare the name down here (while parsing term, signature
6915
        	                  // must not be extended with the name itself; no recursion
6916
        	                  // permitted)
6917
16
        	                  api::Term func = PARSER_STATE->bindVar(name, t);
6918
16
        	                  cmd->reset(new DefineFunctionCommand(
6919
8
        	                      name, func, terms, e, SYM_MAN->getGlobalDeclarations()));
6920
6921
8
        	        }
6922
6923
6924
        	    }
6925
8
        	    break;
6926
1
        	case 8:
6927
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1026:5: SIMPLIFY_TOK term[e,e2]
6928
        	    {
6929
1
        	         MATCHT(SIMPLIFY_TOK, &FOLLOW_SIMPLIFY_TOK_in_extendedCommand2415);
6930
1
        	        if  (HASEXCEPTION())
6931
        	        {
6932
        	            goto ruleextendedCommandEx;
6933
        	        }
6934
6935
6936
        	        {
6937
1
        	             PARSER_STATE->checkThatLogicIsSet();
6938
        	        }
6939
6940
6941
1
        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2423);
6942
1
        	        term(ctx, e, e2);
6943
6944
        	        FOLLOWPOP();
6945
        	        if  (HASEXCEPTION())
6946
        	        {
6947
        	            goto ruleextendedCommandEx;
6948
        	        }
6949
6950
6951
        	        {
6952
        	             cmd->reset(new SimplifyCommand(e));
6953
        	        }
6954
6955
6956
        	    }
6957
        	    break;
6958
7
        	case 9:
6959
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1029:5: GET_QE_TOK term[e,e2]
6960
        	    {
6961
7
        	         MATCHT(GET_QE_TOK, &FOLLOW_GET_QE_TOK_in_extendedCommand2436);
6962
7
        	        if  (HASEXCEPTION())
6963
        	        {
6964
        	            goto ruleextendedCommandEx;
6965
        	        }
6966
6967
6968
        	        {
6969
7
        	             PARSER_STATE->checkThatLogicIsSet();
6970
        	        }
6971
6972
6973
7
        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2444);
6974
7
        	        term(ctx, e, e2);
6975
6976
7
        	        FOLLOWPOP();
6977
7
        	        if  (HASEXCEPTION())
6978
        	        {
6979
        	            goto ruleextendedCommandEx;
6980
        	        }
6981
6982
6983
        	        {
6984
7
        	             cmd->reset(new GetQuantifierEliminationCommand(e, true));
6985
        	        }
6986
6987
6988
        	    }
6989
7
        	    break;
6990
1
        	case 10:
6991
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1032:5: GET_QE_DISJUNCT_TOK term[e,e2]
6992
        	    {
6993
1
        	         MATCHT(GET_QE_DISJUNCT_TOK, &FOLLOW_GET_QE_DISJUNCT_TOK_in_extendedCommand2457);
6994
1
        	        if  (HASEXCEPTION())
6995
        	        {
6996
        	            goto ruleextendedCommandEx;
6997
        	        }
6998
6999
7000
        	        {
7001
1
        	             PARSER_STATE->checkThatLogicIsSet();
7002
        	        }
7003
7004
7005
1
        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2465);
7006
1
        	        term(ctx, e, e2);
7007
7008
1
        	        FOLLOWPOP();
7009
1
        	        if  (HASEXCEPTION())
7010
        	        {
7011
        	            goto ruleextendedCommandEx;
7012
        	        }
7013
7014
7015
        	        {
7016
1
        	             cmd->reset(new GetQuantifierEliminationCommand(e, false));
7017
        	        }
7018
7019
7020
        	    }
7021
1
        	    break;
7022
11
        	case 11:
7023
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1035:5: GET_ABDUCT_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] ( sygusGrammar[g, terms, name] )?
7024
        	    {
7025
11
        	         MATCHT(GET_ABDUCT_TOK, &FOLLOW_GET_ABDUCT_TOK_in_extendedCommand2478);
7026
11
        	        if  (HASEXCEPTION())
7027
        	        {
7028
        	            goto ruleextendedCommandEx;
7029
        	        }
7030
7031
7032
        	        {
7033
7034
11
        	                  PARSER_STATE->checkThatLogicIsSet();
7035
7036
        	        }
7037
7038
7039
11
        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2486);
7040
11
        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
7041
7042
11
        	        FOLLOWPOP();
7043
11
        	        if  (HASEXCEPTION())
7044
        	        {
7045
        	            goto ruleextendedCommandEx;
7046
        	        }
7047
7048
7049
11
        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2493);
7050
11
        	        term(ctx, e, e2);
7051
7052
11
        	        FOLLOWPOP();
7053
11
        	        if  (HASEXCEPTION())
7054
        	        {
7055
        	            goto ruleextendedCommandEx;
7056
        	        }
7057
7058
7059
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1040:5: ( sygusGrammar[g, terms, name] )?
7060
        	        {
7061
11
        	            int alt27=2;
7062
11
        	            switch ( LA(1) )
7063
        	            {
7064
4
        	                case LPAREN_TOK:
7065
        	                	{
7066
4
        	                		alt27=1;
7067
        	                	}
7068
4
        	                    break;
7069
        	            }
7070
7071
11
        	            switch (alt27)
7072
        	            {
7073
4
        	        	case 1:
7074
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1041:7: sygusGrammar[g, terms, name]
7075
        	        	    {
7076
4
        	        	        FOLLOWPUSH(FOLLOW_sygusGrammar_in_extendedCommand2508);
7077
4
        	        	        sygusGrammar(ctx, g, terms, name);
7078
7079
4
        	        	        FOLLOWPOP();
7080
4
        	        	        if  (HASEXCEPTION())
7081
        	        	        {
7082
        	        	            goto ruleextendedCommandEx;
7083
        	        	        }
7084
7085
7086
        	        	    }
7087
4
        	        	    break;
7088
7089
        	            }
7090
        	        }
7091
7092
        	        {
7093
7094
11
        	                  cmd->reset(new GetAbductCommand(name, e, g));
7095
7096
        	        }
7097
7098
7099
        	    }
7100
11
        	    break;
7101
8
        	case 12:
7102
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1046:5: GET_INTERPOL_TOK symbol[name,CHECK_UNDECLARED,SYM_VARIABLE] term[e,e2] ( sygusGrammar[g, terms, name] )?
7103
        	    {
7104
8
        	         MATCHT(GET_INTERPOL_TOK, &FOLLOW_GET_INTERPOL_TOK_in_extendedCommand2528);
7105
8
        	        if  (HASEXCEPTION())
7106
        	        {
7107
        	            goto ruleextendedCommandEx;
7108
        	        }
7109
7110
7111
        	        {
7112
7113
8
        	                  PARSER_STATE->checkThatLogicIsSet();
7114
7115
        	        }
7116
7117
7118
8
        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2536);
7119
8
        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_VARIABLE);
7120
7121
8
        	        FOLLOWPOP();
7122
8
        	        if  (HASEXCEPTION())
7123
        	        {
7124
        	            goto ruleextendedCommandEx;
7125
        	        }
7126
7127
7128
8
        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2543);
7129
8
        	        term(ctx, e, e2);
7130
7131
8
        	        FOLLOWPOP();
7132
8
        	        if  (HASEXCEPTION())
7133
        	        {
7134
        	            goto ruleextendedCommandEx;
7135
        	        }
7136
7137
7138
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1051:5: ( sygusGrammar[g, terms, name] )?
7139
        	        {
7140
8
        	            int alt28=2;
7141
8
        	            switch ( LA(1) )
7142
        	            {
7143
1
        	                case LPAREN_TOK:
7144
        	                	{
7145
1
        	                		alt28=1;
7146
        	                	}
7147
1
        	                    break;
7148
        	            }
7149
7150
8
        	            switch (alt28)
7151
        	            {
7152
1
        	        	case 1:
7153
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1052:7: sygusGrammar[g, terms, name]
7154
        	        	    {
7155
1
        	        	        FOLLOWPUSH(FOLLOW_sygusGrammar_in_extendedCommand2558);
7156
1
        	        	        sygusGrammar(ctx, g, terms, name);
7157
7158
1
        	        	        FOLLOWPOP();
7159
1
        	        	        if  (HASEXCEPTION())
7160
        	        	        {
7161
        	        	            goto ruleextendedCommandEx;
7162
        	        	        }
7163
7164
7165
        	        	    }
7166
1
        	        	    break;
7167
7168
        	            }
7169
        	        }
7170
7171
        	        {
7172
7173
8
        	                  cmd->reset(new GetInterpolCommand(name, e, g));
7174
7175
        	        }
7176
7177
7178
        	    }
7179
8
        	    break;
7180
87
        	case 13:
7181
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1057:5: DECLARE_HEAP LPAREN_TOK sortSymbol[t, CHECK_DECLARED] sortSymbol[s, CHECK_DECLARED] RPAREN_TOK
7182
        	    {
7183
87
        	         MATCHT(DECLARE_HEAP, &FOLLOW_DECLARE_HEAP_in_extendedCommand2578);
7184
87
        	        if  (HASEXCEPTION())
7185
        	        {
7186
        	            goto ruleextendedCommandEx;
7187
        	        }
7188
7189
7190
87
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2580);
7191
87
        	        if  (HASEXCEPTION())
7192
        	        {
7193
        	            goto ruleextendedCommandEx;
7194
        	        }
7195
7196
7197
87
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_extendedCommand2586);
7198
87
        	        sortSymbol(ctx, t, CHECK_DECLARED);
7199
7200
87
        	        FOLLOWPOP();
7201
87
        	        if  (HASEXCEPTION())
7202
        	        {
7203
        	            goto ruleextendedCommandEx;
7204
        	        }
7205
7206
7207
87
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_extendedCommand2593);
7208
87
        	        sortSymbol(ctx, s, CHECK_DECLARED);
7209
7210
87
        	        FOLLOWPOP();
7211
87
        	        if  (HASEXCEPTION())
7212
        	        {
7213
        	            goto ruleextendedCommandEx;
7214
        	        }
7215
7216
7217
        	        {
7218
87
        	             cmd->reset(new DeclareHeapCommand(t, s));
7219
        	        }
7220
7221
7222
87
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2606);
7223
87
        	        if  (HASEXCEPTION())
7224
        	        {
7225
        	            goto ruleextendedCommandEx;
7226
        	        }
7227
7228
7229
        	    }
7230
87
        	    break;
7231
3
        	case 14:
7232
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1062:5: DECLARE_POOL symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] LPAREN_TOK ( term[e, e2] )* RPAREN_TOK
7233
        	    {
7234
3
        	         MATCHT(DECLARE_POOL, &FOLLOW_DECLARE_POOL_in_extendedCommand2612);
7235
3
        	        if  (HASEXCEPTION())
7236
        	        {
7237
        	            goto ruleextendedCommandEx;
7238
        	        }
7239
7240
7241
        	        {
7242
3
        	             PARSER_STATE->checkThatLogicIsSet();
7243
        	        }
7244
7245
7246
3
        	        FOLLOWPUSH(FOLLOW_symbol_in_extendedCommand2620);
7247
3
        	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
7248
7249
3
        	        FOLLOWPOP();
7250
3
        	        if  (HASEXCEPTION())
7251
        	        {
7252
        	            goto ruleextendedCommandEx;
7253
        	        }
7254
7255
7256
        	        {
7257
3
        	             PARSER_STATE->checkUserSymbol(name);
7258
        	        }
7259
7260
7261
3
        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_extendedCommand2633);
7262
3
        	        sortSymbol(ctx, t, CHECK_DECLARED);
7263
7264
3
        	        FOLLOWPOP();
7265
3
        	        if  (HASEXCEPTION())
7266
        	        {
7267
        	            goto ruleextendedCommandEx;
7268
        	        }
7269
7270
7271
3
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2640);
7272
3
        	        if  (HASEXCEPTION())
7273
        	        {
7274
        	            goto ruleextendedCommandEx;
7275
        	        }
7276
7277
7278
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1067:5: ( term[e, e2] )*
7279
7280
        	        for (;;)
7281
        	        {
7282
3
        	            int alt29=2;
7283
3
        	            switch ( LA(1) )
7284
        	            {
7285
        	            case BINARY_LITERAL:
7286
        	            case DECIMAL_LITERAL:
7287
        	            case HEX_LITERAL:
7288
        	            case INTEGER_LITERAL:
7289
        	            case LPAREN_TOK:
7290
        	            case QUOTED_SYMBOL:
7291
        	            case SIMPLE_SYMBOL:
7292
        	            case STRING_LITERAL:
7293
        	            case TUPLE_CONST_TOK:
7294
        	            case UNTERMINATED_QUOTED_SYMBOL:
7295
        	            	{
7296
        	            		alt29=1;
7297
        	            	}
7298
        	                break;
7299
7300
        	            }
7301
7302
3
        	            switch (alt29)
7303
        	            {
7304
        	        	case 1:
7305
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1067:7: term[e, e2]
7306
        	        	    {
7307
        	        	        FOLLOWPUSH(FOLLOW_term_in_extendedCommand2648);
7308
        	        	        term(ctx, e, e2);
7309
7310
        	        	        FOLLOWPOP();
7311
        	        	        if  (HASEXCEPTION())
7312
        	        	        {
7313
        	        	            goto ruleextendedCommandEx;
7314
        	        	        }
7315
7316
7317
        	        	        {
7318
        	        	             terms.push_back( e );
7319
        	        	        }
7320
7321
7322
        	        	    }
7323
        	        	    break;
7324
7325
3
        	        	default:
7326
3
        	        	    goto loop29;	/* break out of the loop */
7327
        	        	    break;
7328
        	            }
7329
        	        }
7330
3
        	        loop29: ; /* Jump out to here if this rule does not match */
7331
7332
7333
3
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2666);
7334
3
        	        if  (HASEXCEPTION())
7335
        	        {
7336
        	            goto ruleextendedCommandEx;
7337
        	        }
7338
7339
7340
        	        {
7341
3
        	             Debug("parser") << "declare pool: '" << name << "'" << std::endl;
7342
6
        	                  api::Term pool = SOLVER->declarePool(name, t, terms);
7343
3
        	                  PARSER_STATE->defineVar(name, pool);
7344
3
        	                  cmd->reset(new DeclarePoolCommand(name, pool, t, terms));
7345
7346
3
        	        }
7347
7348
7349
        	    }
7350
3
        	    break;
7351
14
        	case 15:
7352
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1075:5: BLOCK_MODEL_TOK
7353
        	    {
7354
14
        	         MATCHT(BLOCK_MODEL_TOK, &FOLLOW_BLOCK_MODEL_TOK_in_extendedCommand2678);
7355
14
        	        if  (HASEXCEPTION())
7356
        	        {
7357
        	            goto ruleextendedCommandEx;
7358
        	        }
7359
7360
7361
        	        {
7362
14
        	             PARSER_STATE->checkThatLogicIsSet();
7363
        	        }
7364
7365
7366
        	        {
7367
14
        	             cmd->reset(new BlockModelCommand());
7368
        	        }
7369
7370
7371
        	    }
7372
14
        	    break;
7373
8
        	case 16:
7374
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1078:5: BLOCK_MODEL_VALUES_TOK ( LPAREN_TOK termList[terms,e] RPAREN_TOK |~ LPAREN_TOK )
7375
        	    {
7376
8
        	         MATCHT(BLOCK_MODEL_VALUES_TOK, &FOLLOW_BLOCK_MODEL_VALUES_TOK_in_extendedCommand2693);
7377
8
        	        if  (HASEXCEPTION())
7378
        	        {
7379
        	            goto ruleextendedCommandEx;
7380
        	        }
7381
7382
7383
        	        {
7384
8
        	             PARSER_STATE->checkThatLogicIsSet();
7385
        	        }
7386
7387
7388
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1079:5: ( LPAREN_TOK termList[terms,e] RPAREN_TOK |~ LPAREN_TOK )
7389
        	        {
7390
8
        	            int alt30=2;
7391
8
        	            switch ( LA(1) )
7392
        	            {
7393
8
        	            case LPAREN_TOK:
7394
        	            	{
7395
8
        	            		alt30=1;
7396
        	            	}
7397
8
        	                break;
7398
        	            case ALPHA:
7399
        	            case ASSERT_TOK:
7400
        	            case AS_TOK:
7401
        	            case ATTRIBUTE_INST_ADD_TO_POOL_TOK:
7402
        	            case ATTRIBUTE_INST_LEVEL:
7403
        	            case ATTRIBUTE_NAMED_TOK:
7404
        	            case ATTRIBUTE_NO_PATTERN_TOK:
7405
        	            case ATTRIBUTE_PATTERN_TOK:
7406
        	            case ATTRIBUTE_POOL_TOK:
7407
        	            case ATTRIBUTE_QUANTIFIER_ID_TOK:
7408
        	            case ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK:
7409
        	            case ATTRIBUTE_TOK:
7410
        	            case BINARY_LITERAL:
7411
        	            case BLOCK_MODEL_TOK:
7412
        	            case BLOCK_MODEL_VALUES_TOK:
7413
        	            case CHAR_TOK:
7414
        	            case CHECK_SAT_ASSUMING_TOK:
7415
        	            case CHECK_SAT_TOK:
7416
        	            case CHECK_SYNTH_TOK:
7417
        	            case COMMENT:
7418
        	            case COMPREHENSION_TOK:
7419
        	            case CONSTRAINT_TOK:
7420
        	            case CONST_TOK:
7421
        	            case DECIMAL_LITERAL:
7422
        	            case DECLARE_CODATATYPES_2_5_TOK:
7423
        	            case DECLARE_CODATATYPES_TOK:
7424
        	            case DECLARE_CODATATYPE_TOK:
7425
        	            case DECLARE_CONST_TOK:
7426
        	            case DECLARE_DATATYPES_2_5_TOK:
7427
        	            case DECLARE_DATATYPES_TOK:
7428
        	            case DECLARE_DATATYPE_TOK:
7429
        	            case DECLARE_FUNS_TOK:
7430
        	            case DECLARE_FUN_TOK:
7431
        	            case DECLARE_HEAP:
7432
        	            case DECLARE_POOL:
7433
        	            case DECLARE_PREDS_TOK:
7434
        	            case DECLARE_SORTS_TOK:
7435
        	            case DECLARE_SORT_TOK:
7436
        	            case DECLARE_VAR_TOK:
7437
        	            case DEFINE_CONST_TOK:
7438
        	            case DEFINE_FUNS_REC_TOK:
7439
        	            case DEFINE_FUN_REC_TOK:
7440
        	            case DEFINE_FUN_TOK:
7441
        	            case DEFINE_SORT_TOK:
7442
        	            case DEFINE_TOK:
7443
        	            case DIGIT:
7444
        	            case ECHO_TOK:
7445
        	            case EMP_TOK:
7446
        	            case EXISTS_TOK:
7447
        	            case EXIT_TOK:
7448
        	            case FORALL_TOK:
7449
        	            case GET_ABDUCT_TOK:
7450
        	            case GET_ASSERTIONS_TOK:
7451
        	            case GET_ASSIGNMENT_TOK:
7452
        	            case GET_INFO_TOK:
7453
        	            case GET_INTERPOL_TOK:
7454
        	            case GET_MODEL_TOK:
7455
        	            case GET_OPTION_TOK:
7456
        	            case GET_PROOF_TOK:
7457
        	            case GET_QE_DISJUNCT_TOK:
7458
        	            case GET_QE_TOK:
7459
        	            case GET_UNSAT_ASSUMPTIONS_TOK:
7460
        	            case GET_UNSAT_CORE_TOK:
7461
        	            case GET_VALUE_TOK:
7462
        	            case HEX_DIGIT:
7463
        	            case HEX_LITERAL:
7464
        	            case HO_ARROW_TOK:
7465
        	            case HO_LAMBDA_TOK:
7466
        	            case INCLUDE_TOK:
7467
        	            case INDEX_TOK:
7468
        	            case INTEGER_LITERAL:
7469
        	            case INV_CONSTRAINT_TOK:
7470
        	            case KEYWORD:
7471
        	            case LET_TOK:
7472
        	            case MATCH_TOK:
7473
        	            case NUMERAL:
7474
        	            case PAR_TOK:
7475
        	            case POP_TOK:
7476
        	            case PUSH_TOK:
7477
        	            case QUOTED_SYMBOL:
7478
        	            case RESET_ASSERTIONS_TOK:
7479
        	            case RESET_TOK:
7480
        	            case RPAREN_TOK:
7481
        	            case SET_INFO_TOK:
7482
        	            case SET_LOGIC_TOK:
7483
        	            case SET_OPTIONS_TOK:
7484
        	            case SET_OPTION_TOK:
7485
        	            case SIMPLE_SYMBOL:
7486
        	            case SIMPLIFY_TOK:
7487
        	            case STRING_LITERAL:
7488
        	            case SYGUS_CONSTANT_TOK:
7489
        	            case SYGUS_VARIABLE_TOK:
7490
        	            case SYMBOL_CHAR:
7491
        	            case SYMBOL_CHAR_NOUNDERSCORE_NOATTRIBUTE:
7492
        	            case SYNTH_FUN_TOK:
7493
        	            case SYNTH_INV_TOK:
7494
        	            case TESTER_TOK:
7495
        	            case TUPLE_CONST_TOK:
7496
        	            case TUPLE_PROJECT_TOK:
7497
        	            case TUPLE_SEL_TOK:
7498
        	            case UNTERMINATED_QUOTED_SYMBOL:
7499
        	            case UPDATE_TOK:
7500
        	            case WHITESPACE:
7501
        	            case 108:
7502
        	            	{
7503
        	            		alt30=2;
7504
        	            	}
7505
        	                break;
7506
7507
        	            default:
7508
        	                CONSTRUCTEX();
7509
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
7510
        	                EXCEPTION->message      = (void *)"";
7511
        	                EXCEPTION->decisionNum  = 30;
7512
        	                EXCEPTION->state        = 0;
7513
7514
7515
        	                goto ruleextendedCommandEx;
7516
7517
        	            }
7518
7519
8
        	            switch (alt30)
7520
        	            {
7521
8
        	        	case 1:
7522
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1079:7: LPAREN_TOK termList[terms,e] RPAREN_TOK
7523
        	        	    {
7524
8
        	        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_extendedCommand2703);
7525
8
        	        	        if  (HASEXCEPTION())
7526
        	        	        {
7527
        	        	            goto ruleextendedCommandEx;
7528
        	        	        }
7529
7530
7531
8
        	        	        FOLLOWPUSH(FOLLOW_termList_in_extendedCommand2705);
7532
8
        	        	        termList(ctx, terms, e);
7533
7534
8
        	        	        FOLLOWPOP();
7535
8
        	        	        if  (HASEXCEPTION())
7536
        	        	        {
7537
        	        	            goto ruleextendedCommandEx;
7538
        	        	        }
7539
7540
7541
8
        	        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_extendedCommand2708);
7542
8
        	        	        if  (HASEXCEPTION())
7543
        	        	        {
7544
        	        	            goto ruleextendedCommandEx;
7545
        	        	        }
7546
7547
7548
        	        	        {
7549
8
        	        	             cmd->reset(new BlockModelValuesCommand(terms));
7550
        	        	        }
7551
7552
7553
        	        	    }
7554
8
        	        	    break;
7555
        	        	case 2:
7556
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1081:7: ~ LPAREN_TOK
7557
        	        	    {
7558
        	        	        if ( ((LA(1) >= ALPHA) && (LA(1) <= LET_TOK)) || ((LA(1) >= MATCH_TOK) && (LA(1) <= 108)) )
7559
        	        	        {
7560
        	        	            CONSUME();
7561
        	        	            PERRORRECOVERY=ANTLR3_FALSE;
7562
        	        	        }
7563
        	        	        else
7564
        	        	        {
7565
        	        	            CONSTRUCTEX();
7566
        	        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
7567
        	        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
7568
        	        	            EXCEPTION->expectingSet = NULL;
7569
7570
        	        	            goto ruleextendedCommandEx;
7571
        	        	        }
7572
7573
7574
        	        	        {
7575
        	        	             PARSER_STATE->parseError("The block-model-value command expects a list "
7576
        	        	                                             "of terms.  Perhaps you forgot a pair of "
7577
        	        	                                             "parentheses?");
7578
7579
        	        	        }
7580
7581
7582
        	        	    }
7583
        	        	    break;
7584
7585
        	            }
7586
        	        }
7587
7588
        	    }
7589
8
        	    break;
7590
7591
            }
7592
        }
7593
    }
7594
7595
    // This is where rules clean up and exit
7596
    //
7597
181
    goto ruleextendedCommandEx; /* Prevent compiler warnings */
7598
181
    ruleextendedCommandEx: ;
7599
7600
181
            if (HASEXCEPTION())
7601
            {
7602
                PREPORTERROR();
7603
                PRECOVER();
7604
            }
7605
362
    return ;
7606
}
7607
/* $ANTLR end extendedCommand */
7608
7609
/**
7610
 * $ANTLR start datatypeDefCommand
7611
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1089:1: datatypeDefCommand[bool isCo, std::unique_ptr<cvc5::Command>* cmd] : symbol[name,CHECK_UNDECLARED,SYM_SORT] datatypesDef[isCo, dnames, arities, cmd] ;
7612
 */
7613
static void
7614
111
datatypeDefCommand(pSmt2Parser ctx, bool isCo, std::unique_ptr<cvc5::Command>* cmd)
7615
{
7616
7617
222
      std::vector<api::DatatypeDecl> dts;
7618
222
      std::string name;
7619
222
      std::vector<std::string> dnames;
7620
222
      std::vector<int> arities;
7621
7622
    /* Initialize rule variables
7623
     */
7624
7625
    {
7626
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1096:2: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] datatypesDef[isCo, dnames, arities, cmd] )
7627
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1096:4: symbol[name,CHECK_UNDECLARED,SYM_SORT] datatypesDef[isCo, dnames, arities, cmd]
7628
        {
7629
            {
7630
111
                 PARSER_STATE->checkThatLogicIsSet();
7631
            }
7632
7633
7634
111
            FOLLOWPUSH(FOLLOW_symbol_in_datatypeDefCommand2760);
7635
111
            symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
7636
7637
111
            FOLLOWPOP();
7638
111
            if  (HASEXCEPTION())
7639
            {
7640
                goto ruledatatypeDefCommandEx;
7641
            }
7642
7643
7644
            {
7645
7646
111
                   dnames.push_back(name);
7647
111
                   arities.push_back(-1);
7648
7649
            }
7650
7651
7652
111
            FOLLOWPUSH(FOLLOW_datatypesDef_in_datatypeDefCommand2767);
7653
111
            datatypesDef(ctx, isCo, dnames, arities, cmd);
7654
7655
111
            FOLLOWPOP();
7656
111
            if  (HASEXCEPTION())
7657
            {
7658
                goto ruledatatypeDefCommandEx;
7659
            }
7660
7661
7662
        }
7663
7664
    }
7665
7666
    // This is where rules clean up and exit
7667
    //
7668
111
    goto ruledatatypeDefCommandEx; /* Prevent compiler warnings */
7669
111
    ruledatatypeDefCommandEx: ;
7670
7671
111
            if (HASEXCEPTION())
7672
            {
7673
                PREPORTERROR();
7674
                PRECOVER();
7675
            }
7676
222
    return ;
7677
}
7678
/* $ANTLR end datatypeDefCommand */
7679
7680
/**
7681
 * $ANTLR start datatypesDefCommand
7682
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1105:1: datatypesDefCommand[bool isCo, std::unique_ptr<cvc5::Command>* cmd] : LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK )* RPAREN_TOK LPAREN_TOK datatypesDef[isCo, dnames, arities, cmd] RPAREN_TOK ;
7683
 */
7684
static void
7685
679
datatypesDefCommand(pSmt2Parser ctx, bool isCo, std::unique_ptr<cvc5::Command>* cmd)
7686
{
7687
7688
1358
      std::vector<api::DatatypeDecl> dts;
7689
1358
      std::string name;
7690
1358
      std::vector<std::string> dnames;
7691
1358
      std::vector<int> arities;
7692
7693
    pANTLR3_COMMON_TOKEN    n;
7694
7695
    /* Initialize rule variables
7696
     */
7697
7698
679
    n       = NULL;
7699
7700
    {
7701
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1112:3: ( LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK )* RPAREN_TOK LPAREN_TOK datatypesDef[isCo, dnames, arities, cmd] RPAREN_TOK )
7702
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1112:5: LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK )* RPAREN_TOK LPAREN_TOK datatypesDef[isCo, dnames, arities, cmd] RPAREN_TOK
7703
        {
7704
            {
7705
679
                 PARSER_STATE->checkThatLogicIsSet();
7706
            }
7707
7708
7709
679
             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2790);
7710
679
            if  (HASEXCEPTION())
7711
            {
7712
                goto ruledatatypesDefCommandEx;
7713
            }
7714
7715
7716
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1114:3: ( LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK )*
7717
7718
            for (;;)
7719
            {
7720
1616
                int alt32=2;
7721
1616
                switch ( LA(1) )
7722
                {
7723
937
                case LPAREN_TOK:
7724
                	{
7725
937
                		alt32=1;
7726
                	}
7727
937
                    break;
7728
7729
                }
7730
7731
1616
                switch (alt32)
7732
                {
7733
937
            	case 1:
7734
            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1114:5: LPAREN_TOK symbol[name,CHECK_UNDECLARED,SYM_SORT] n= INTEGER_LITERAL RPAREN_TOK
7735
            	    {
7736
937
            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2798);
7737
937
            	        if  (HASEXCEPTION())
7738
            	        {
7739
            	            goto ruledatatypesDefCommandEx;
7740
            	        }
7741
7742
7743
937
            	        FOLLOWPUSH(FOLLOW_symbol_in_datatypesDefCommand2800);
7744
937
            	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
7745
7746
937
            	        FOLLOWPOP();
7747
937
            	        if  (HASEXCEPTION())
7748
            	        {
7749
            	            goto ruledatatypesDefCommandEx;
7750
            	        }
7751
7752
7753
937
            	        n = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_datatypesDefCommand2805);
7754
937
            	        if  (HASEXCEPTION())
7755
            	        {
7756
            	            goto ruledatatypesDefCommandEx;
7757
            	        }
7758
7759
7760
937
            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2807);
7761
937
            	        if  (HASEXCEPTION())
7762
            	        {
7763
            	            goto ruledatatypesDefCommandEx;
7764
            	        }
7765
7766
7767
            	        {
7768
937
            	             unsigned arity = AntlrInput::tokenToUnsigned(n);
7769
937
            	                  Debug("parser-dt") << "Datatype : " << name << ", arity = " << arity << std::endl;
7770
937
            	                  dnames.push_back(name);
7771
937
            	                  arities.push_back( static_cast<int>(arity) );
7772
7773
937
            	        }
7774
7775
7776
            	    }
7777
937
            	    break;
7778
7779
679
            	default:
7780
679
            	    goto loop32;	/* break out of the loop */
7781
            	    break;
7782
                }
7783
937
            }
7784
679
            loop32: ; /* Jump out to here if this rule does not match */
7785
7786
7787
679
             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2822);
7788
679
            if  (HASEXCEPTION())
7789
            {
7790
                goto ruledatatypesDefCommandEx;
7791
            }
7792
7793
7794
679
             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDefCommand2826);
7795
679
            if  (HASEXCEPTION())
7796
            {
7797
                goto ruledatatypesDefCommandEx;
7798
            }
7799
7800
7801
679
            FOLLOWPUSH(FOLLOW_datatypesDef_in_datatypesDefCommand2830);
7802
679
            datatypesDef(ctx, isCo, dnames, arities, cmd);
7803
7804
679
            FOLLOWPOP();
7805
679
            if  (HASEXCEPTION())
7806
            {
7807
                goto ruledatatypesDefCommandEx;
7808
            }
7809
7810
7811
679
             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDefCommand2835);
7812
679
            if  (HASEXCEPTION())
7813
            {
7814
                goto ruledatatypesDefCommandEx;
7815
            }
7816
7817
7818
        }
7819
7820
    }
7821
7822
    // This is where rules clean up and exit
7823
    //
7824
679
    goto ruledatatypesDefCommandEx; /* Prevent compiler warnings */
7825
679
    ruledatatypesDefCommandEx: ;
7826
7827
679
            if (HASEXCEPTION())
7828
            {
7829
                PREPORTERROR();
7830
                PRECOVER();
7831
            }
7832
1358
    return ;
7833
}
7834
/* $ANTLR end datatypesDefCommand */
7835
7836
/**
7837
 * $ANTLR start datatypesDef
7838
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1135:1: datatypesDef[bool isCo,\n const std::vector<std::string>& dnames,\n const std::vector<int>& arities,\n std::unique_ptr<cvc5::Command>* cmd] : ( LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK )+ ;
7839
 */
7840
static void
7841
790
datatypesDef(pSmt2Parser ctx, bool isCo, const std::vector<std::string>& dnames, const std::vector<int>& arities, std::unique_ptr<cvc5::Command>* cmd)
7842
{
7843
7844
1580
      std::vector<api::DatatypeDecl> dts;
7845
1580
      std::string name;
7846
1580
      std::vector<api::Sort> params;
7847
7848
    /* Initialize rule variables
7849
     */
7850
7851
    {
7852
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1144:3: ( ( LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK )+ )
7853
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1144:5: ( LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK )+
7854
        {
7855
            {
7856
790
                 PARSER_STATE->pushScope();
7857
                      // Declare the datatypes that are currently being defined as unresolved
7858
                      // types. If we do not know the arity of the datatype yet, we wait to
7859
                      // define it until parsing the preamble of its body, which may optionally
7860
                      // involve `par`. This is limited to the case of single datatypes defined
7861
                      // via declare-datatype, and hence no datatype body is parsed without
7862
                      // having all types declared. This ensures we can parse datatypes with
7863
                      // nested recursion, e.g. datatypes D having a subfield type
7864
                      // (Array Int D).
7865
1838
                      for (unsigned i=0, dsize=dnames.size(); i<dsize; i++)
7866
                      {
7867
1048
                        if( arities[i]<0 )
7868
                        {
7869
                          // do not know the arity yet
7870
111
                          continue;
7871
                        }
7872
937
                        unsigned arity = static_cast<unsigned>(arities[i]);
7873
937
                        PARSER_STATE->mkUnresolvedType(dnames[i], arity);
7874
                      }
7875
7876
            }
7877
7878
7879
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1164:5: ( LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK )+
7880
            {
7881
790
                int cnt37=0;
7882
7883
                for (;;)
7884
                {
7885
1838
                    int alt37=2;
7886
1838
            	switch ( LA(1) )
7887
            	{
7888
1048
            	case LPAREN_TOK:
7889
            		{
7890
1048
            			alt37=1;
7891
            		}
7892
1048
            	    break;
7893
7894
            	}
7895
7896
1838
            	switch (alt37)
7897
            	{
7898
1048
            	    case 1:
7899
            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1164:7: LPAREN_TOK ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ ) RPAREN_TOK
7900
            	        {
7901
1048
            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDef2864);
7902
1048
            	            if  (HASEXCEPTION())
7903
            	            {
7904
            	                goto ruledatatypesDefEx;
7905
            	            }
7906
7907
7908
            	            {
7909
7910
1048
            	                      params.clear();
7911
1048
            	                      Debug("parser-dt") << "Processing datatype #" << dts.size() << std::endl;
7912
1048
            	                      if( dts.size()>=dnames.size() ){
7913
            	                        PARSER_STATE->parseError("Too many datatypes defined in this block.");
7914
            	                      }
7915
7916
            	            }
7917
7918
7919
            	            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1171:5: ( PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK | ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ )
7920
            	            {
7921
1048
            	                int alt36=2;
7922
1048
            	                switch ( LA(1) )
7923
            	                {
7924
40
            	                case PAR_TOK:
7925
            	                	{
7926
40
            	                		alt36=1;
7927
            	                	}
7928
40
            	                    break;
7929
1008
            	                case LPAREN_TOK:
7930
            	                	{
7931
1008
            	                		alt36=2;
7932
            	                	}
7933
1008
            	                    break;
7934
7935
            	                default:
7936
            	                    CONSTRUCTEX();
7937
            	                    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
7938
            	                    EXCEPTION->message      = (void *)"";
7939
            	                    EXCEPTION->decisionNum  = 36;
7940
            	                    EXCEPTION->state        = 0;
7941
7942
7943
            	                    goto ruledatatypesDefEx;
7944
7945
            	                }
7946
7947
1048
            	                switch (alt36)
7948
            	                {
7949
40
            	            	case 1:
7950
            	            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1171:7: PAR_TOK LPAREN_TOK ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )* RPAREN_TOK LPAREN_TOK ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+ RPAREN_TOK
7951
            	            	    {
7952
40
            	            	         MATCHT(PAR_TOK, &FOLLOW_PAR_TOK_in_datatypesDef2874);
7953
40
            	            	        if  (HASEXCEPTION())
7954
            	            	        {
7955
            	            	            goto ruledatatypesDefEx;
7956
            	            	        }
7957
7958
7959
            	            	        {
7960
40
            	            	             PARSER_STATE->pushScope();
7961
            	            	        }
7962
7963
7964
40
            	            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDef2878);
7965
40
            	            	        if  (HASEXCEPTION())
7966
            	            	        {
7967
            	            	            goto ruledatatypesDefEx;
7968
            	            	        }
7969
7970
7971
            	            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1172:7: ( symbol[name,CHECK_UNDECLARED,SYM_SORT] )*
7972
7973
            	            	        for (;;)
7974
            	            	        {
7975
95
            	            	            int alt33=2;
7976
95
            	            	            switch ( LA(1) )
7977
            	            	            {
7978
55
            	            	            case QUOTED_SYMBOL:
7979
            	            	            case SIMPLE_SYMBOL:
7980
            	            	            case UNTERMINATED_QUOTED_SYMBOL:
7981
            	            	            	{
7982
55
            	            	            		alt33=1;
7983
            	            	            	}
7984
55
            	            	                break;
7985
7986
            	            	            }
7987
7988
95
            	            	            switch (alt33)
7989
            	            	            {
7990
55
            	            	        	case 1:
7991
            	            	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1172:9: symbol[name,CHECK_UNDECLARED,SYM_SORT]
7992
            	            	        	    {
7993
55
            	            	        	        FOLLOWPUSH(FOLLOW_symbol_in_datatypesDef2888);
7994
55
            	            	        	        symbol(ctx, name, CHECK_UNDECLARED, SYM_SORT);
7995
7996
55
            	            	        	        FOLLOWPOP();
7997
55
            	            	        	        if  (HASEXCEPTION())
7998
            	            	        	        {
7999
            	            	        	            goto ruledatatypesDefEx;
8000
            	            	        	        }
8001
8002
8003
            	            	        	        {
8004
8005
55
            	            	        	                      params.push_back( PARSER_STATE->mkSort(name));
8006
            	            	        	        }
8007
8008
8009
            	            	        	    }
8010
55
            	            	        	    break;
8011
8012
40
            	            	        	default:
8013
40
            	            	        	    goto loop33;	/* break out of the loop */
8014
            	            	        	    break;
8015
            	            	            }
8016
55
            	            	        }
8017
40
            	            	        loop33: ; /* Jump out to here if this rule does not match */
8018
8019
8020
40
            	            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDef2916);
8021
40
            	            	        if  (HASEXCEPTION())
8022
            	            	        {
8023
            	            	            goto ruledatatypesDefEx;
8024
            	            	        }
8025
8026
8027
            	            	        {
8028
8029
            	            	                    // if the arity was fixed by prelude and is not equal to the number of parameters
8030
40
            	            	                    if( arities[dts.size()]>=0 && static_cast<int>(params.size())!=arities[dts.size()] ){
8031
            	            	                      PARSER_STATE->parseError("Wrong number of parameters for datatype.");
8032
            	            	                    }
8033
40
            	            	                    if (arities[dts.size()]<0)
8034
            	            	                    {
8035
            	            	                      // now declare it as an unresolved type
8036
7
            	            	                      PARSER_STATE->mkUnresolvedType(dnames[dts.size()], params.size());
8037
            	            	                    }
8038
40
            	            	                    Debug("parser-dt") << params.size() << " parameters for " << dnames[dts.size()] << std::endl;
8039
40
            	            	                    dts.push_back(SOLVER->mkDatatypeDecl(dnames[dts.size()], params, isCo));
8040
8041
            	            	        }
8042
8043
8044
40
            	            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDef2926);
8045
40
            	            	        if  (HASEXCEPTION())
8046
            	            	        {
8047
            	            	            goto ruledatatypesDefEx;
8048
            	            	        }
8049
8050
8051
            	            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1190:7: ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
8052
            	            	        {
8053
40
            	            	            int cnt34=0;
8054
8055
            	            	            for (;;)
8056
            	            	            {
8057
98
            	            	                int alt34=2;
8058
98
            	            	        	switch ( LA(1) )
8059
            	            	        	{
8060
58
            	            	        	case LPAREN_TOK:
8061
            	            	        		{
8062
58
            	            	        			alt34=1;
8063
            	            	        		}
8064
58
            	            	        	    break;
8065
8066
            	            	        	}
8067
8068
98
            	            	        	switch (alt34)
8069
            	            	        	{
8070
58
            	            	        	    case 1:
8071
            	            	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1190:9: LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK
8072
            	            	        	        {
8073
58
            	            	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDef2936);
8074
58
            	            	        	            if  (HASEXCEPTION())
8075
            	            	        	            {
8076
            	            	        	                goto ruledatatypesDefEx;
8077
            	            	        	            }
8078
8079
8080
58
            	            	        	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypesDef2938);
8081
58
            	            	        	            constructorDef(ctx, dts.back());
8082
8083
58
            	            	        	            FOLLOWPOP();
8084
58
            	            	        	            if  (HASEXCEPTION())
8085
            	            	        	            {
8086
            	            	        	                goto ruledatatypesDefEx;
8087
            	            	        	            }
8088
8089
8090
58
            	            	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDef2941);
8091
58
            	            	        	            if  (HASEXCEPTION())
8092
            	            	        	            {
8093
            	            	        	                goto ruledatatypesDefEx;
8094
            	            	        	            }
8095
8096
8097
            	            	        	        }
8098
58
            	            	        	        break;
8099
8100
40
            	            	        	    default:
8101
8102
40
            	            	        		if ( cnt34 >= 1 )
8103
            	            	        		{
8104
40
            	            	        		    goto loop34;
8105
            	            	        		}
8106
            	            	        		/* mismatchedSetEx()
8107
            	            	        		 */
8108
            	            	        		CONSTRUCTEX();
8109
            	            	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
8110
            	            	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
8111
8112
8113
            	            	        		goto ruledatatypesDefEx;
8114
            	            	        	}
8115
58
            	            	        	cnt34++;
8116
58
            	            	            }
8117
40
            	            	            loop34: ;	/* Jump to here if this rule does not match */
8118
            	            	        }
8119
8120
40
            	            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDef2952);
8121
40
            	            	        if  (HASEXCEPTION())
8122
            	            	        {
8123
            	            	            goto ruledatatypesDefEx;
8124
            	            	        }
8125
8126
8127
            	            	        {
8128
40
            	            	             PARSER_STATE->popScope();
8129
            	            	        }
8130
8131
8132
            	            	    }
8133
40
            	            	    break;
8134
1008
            	            	case 2:
8135
            	            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1192:7: ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
8136
            	            	    {
8137
            	            	        {
8138
            	            	             // if the arity was fixed by prelude and is not equal to 0
8139
1008
            	            	                    if( arities[dts.size()]>0 ){
8140
            	            	                      PARSER_STATE->parseError("No parameters given for datatype.");
8141
            	            	                    }
8142
1008
            	            	                    else if (arities[dts.size()]<0)
8143
            	            	                    {
8144
            	            	                      // now declare it as an unresolved type
8145
104
            	            	                      PARSER_STATE->mkUnresolvedType(dnames[dts.size()], 0);
8146
            	            	                    }
8147
1008
            	            	                    Debug("parser-dt") << params.size() << " parameters for " << dnames[dts.size()] << std::endl;
8148
1008
            	            	                    dts.push_back(SOLVER->mkDatatypeDecl(dnames[dts.size()],
8149
            	            	                                                         params,
8150
            	            	                                                         isCo));
8151
8152
            	            	        }
8153
8154
8155
            	            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1206:7: ( LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK )+
8156
            	            	        {
8157
1008
            	            	            int cnt35=0;
8158
8159
            	            	            for (;;)
8160
            	            	            {
8161
2903
            	            	                int alt35=2;
8162
2903
            	            	        	switch ( LA(1) )
8163
            	            	        	{
8164
1895
            	            	        	case LPAREN_TOK:
8165
            	            	        		{
8166
1895
            	            	        			alt35=1;
8167
            	            	        		}
8168
1895
            	            	        	    break;
8169
8170
            	            	        	}
8171
8172
2903
            	            	        	switch (alt35)
8173
            	            	        	{
8174
1895
            	            	        	    case 1:
8175
            	            	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1206:9: LPAREN_TOK constructorDef[dts.back()] RPAREN_TOK
8176
            	            	        	        {
8177
1895
            	            	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypesDef2972);
8178
1895
            	            	        	            if  (HASEXCEPTION())
8179
            	            	        	            {
8180
            	            	        	                goto ruledatatypesDefEx;
8181
            	            	        	            }
8182
8183
8184
1895
            	            	        	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypesDef2974);
8185
1895
            	            	        	            constructorDef(ctx, dts.back());
8186
8187
1895
            	            	        	            FOLLOWPOP();
8188
1895
            	            	        	            if  (HASEXCEPTION())
8189
            	            	        	            {
8190
            	            	        	                goto ruledatatypesDefEx;
8191
            	            	        	            }
8192
8193
8194
1895
            	            	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDef2977);
8195
1895
            	            	        	            if  (HASEXCEPTION())
8196
            	            	        	            {
8197
            	            	        	                goto ruledatatypesDefEx;
8198
            	            	        	            }
8199
8200
8201
            	            	        	        }
8202
1895
            	            	        	        break;
8203
8204
1008
            	            	        	    default:
8205
8206
1008
            	            	        		if ( cnt35 >= 1 )
8207
            	            	        		{
8208
1008
            	            	        		    goto loop35;
8209
            	            	        		}
8210
            	            	        		/* mismatchedSetEx()
8211
            	            	        		 */
8212
            	            	        		CONSTRUCTEX();
8213
            	            	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
8214
            	            	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
8215
8216
8217
            	            	        		goto ruledatatypesDefEx;
8218
            	            	        	}
8219
1895
            	            	        	cnt35++;
8220
1895
            	            	            }
8221
1008
            	            	            loop35: ;	/* Jump to here if this rule does not match */
8222
            	            	        }
8223
8224
            	            	    }
8225
1008
            	            	    break;
8226
8227
            	                }
8228
            	            }
8229
8230
1048
            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypesDef2992);
8231
1048
            	            if  (HASEXCEPTION())
8232
            	            {
8233
            	                goto ruledatatypesDefEx;
8234
1048
            	            }
8235
8236
8237
            	        }
8238
1048
            	        break;
8239
8240
790
            	    default:
8241
8242
790
            		if ( cnt37 >= 1 )
8243
            		{
8244
790
            		    goto loop37;
8245
            		}
8246
            		/* mismatchedSetEx()
8247
            		 */
8248
            		CONSTRUCTEX();
8249
            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
8250
            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
8251
8252
8253
            		goto ruledatatypesDefEx;
8254
            	}
8255
1048
            	cnt37++;
8256
1048
                }
8257
790
                loop37: ;	/* Jump to here if this rule does not match */
8258
            }
8259
8260
            {
8261
8262
790
                    if (dts.size() != dnames.size())
8263
                    {
8264
                      PARSER_STATE->parseError("Wrong number of datatypes provided.");
8265
                    }
8266
790
                    PARSER_STATE->popScope();
8267
1580
                    cmd->reset(new DatatypeDeclarationCommand(
8268
2370
                        PARSER_STATE->bindMutualDatatypeTypes(dts, true)));
8269
8270
            }
8271
8272
8273
        }
8274
8275
    }
8276
8277
    // This is where rules clean up and exit
8278
    //
8279
790
    goto ruledatatypesDefEx; /* Prevent compiler warnings */
8280
790
    ruledatatypesDefEx: ;
8281
8282
790
            if (HASEXCEPTION())
8283
            {
8284
                PREPORTERROR();
8285
                PRECOVER();
8286
            }
8287
1580
    return ;
8288
}
8289
/* $ANTLR end datatypesDef */
8290
8291
/**
8292
 * $ANTLR start simpleSymbolicExprNoKeyword
8293
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1221:1: simpleSymbolicExprNoKeyword[std::string& s] : ( INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s,false] | symbol[s,CHECK_NONE,SYM_SORT] |tok= ( ASSERT_TOK | CHECK_SAT_TOK | CHECK_SAT_ASSUMING_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_ASSUMPTIONS_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_INFO_TOK | GET_INFO_TOK | SET_OPTION_TOK | GET_OPTION_TOK | PUSH_TOK | POP_TOK | DECLARE_DATATYPES_TOK | GET_MODEL_TOK | ECHO_TOK | SIMPLIFY_TOK ) );
8294
 */
8295
static void
8296
12333
simpleSymbolicExprNoKeyword(pSmt2Parser ctx, std::string& s)
8297
{
8298
    pANTLR3_COMMON_TOKEN    tok;
8299
    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL5;
8300
    pANTLR3_COMMON_TOKEN    DECIMAL_LITERAL6;
8301
    pANTLR3_COMMON_TOKEN    HEX_LITERAL7;
8302
    pANTLR3_COMMON_TOKEN    BINARY_LITERAL8;
8303
8304
    /* Initialize rule variables
8305
     */
8306
8307
12333
    tok       = NULL;
8308
12333
    INTEGER_LITERAL5       = NULL;
8309
12333
    DECIMAL_LITERAL6       = NULL;
8310
12333
    HEX_LITERAL7       = NULL;
8311
12333
    BINARY_LITERAL8       = NULL;
8312
8313
    {
8314
        {
8315
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1222:3: ( INTEGER_LITERAL | DECIMAL_LITERAL | HEX_LITERAL | BINARY_LITERAL | str[s,false] | symbol[s,CHECK_NONE,SYM_SORT] |tok= ( ASSERT_TOK | CHECK_SAT_TOK | CHECK_SAT_ASSUMING_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_ASSUMPTIONS_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_INFO_TOK | GET_INFO_TOK | SET_OPTION_TOK | GET_OPTION_TOK | PUSH_TOK | POP_TOK | DECLARE_DATATYPES_TOK | GET_MODEL_TOK | ECHO_TOK | SIMPLIFY_TOK ) )
8316
8317
            ANTLR3_UINT32 alt38;
8318
8319
12333
            alt38=7;
8320
8321
12333
            switch ( LA(1) )
8322
            {
8323
19
            case INTEGER_LITERAL:
8324
            	{
8325
19
            		alt38=1;
8326
            	}
8327
19
                break;
8328
702
            case DECIMAL_LITERAL:
8329
            	{
8330
702
            		alt38=2;
8331
            	}
8332
702
                break;
8333
            case HEX_LITERAL:
8334
            	{
8335
            		alt38=3;
8336
            	}
8337
                break;
8338
            case BINARY_LITERAL:
8339
            	{
8340
            		alt38=4;
8341
            	}
8342
                break;
8343
1045
            case STRING_LITERAL:
8344
            	{
8345
1045
            		alt38=5;
8346
            	}
8347
1045
                break;
8348
10565
            case QUOTED_SYMBOL:
8349
            case SIMPLE_SYMBOL:
8350
            case UNTERMINATED_QUOTED_SYMBOL:
8351
            	{
8352
10565
            		alt38=6;
8353
            	}
8354
10565
                break;
8355
2
            case ASSERT_TOK:
8356
            case CHECK_SAT_ASSUMING_TOK:
8357
            case CHECK_SAT_TOK:
8358
            case DECLARE_DATATYPES_TOK:
8359
            case DECLARE_FUN_TOK:
8360
            case DECLARE_SORT_TOK:
8361
            case DEFINE_FUNS_REC_TOK:
8362
            case DEFINE_FUN_REC_TOK:
8363
            case DEFINE_FUN_TOK:
8364
            case DEFINE_SORT_TOK:
8365
            case ECHO_TOK:
8366
            case EXIT_TOK:
8367
            case GET_ASSERTIONS_TOK:
8368
            case GET_ASSIGNMENT_TOK:
8369
            case GET_INFO_TOK:
8370
            case GET_MODEL_TOK:
8371
            case GET_OPTION_TOK:
8372
            case GET_PROOF_TOK:
8373
            case GET_UNSAT_ASSUMPTIONS_TOK:
8374
            case GET_UNSAT_CORE_TOK:
8375
            case GET_VALUE_TOK:
8376
            case POP_TOK:
8377
            case PUSH_TOK:
8378
            case RESET_ASSERTIONS_TOK:
8379
            case RESET_TOK:
8380
            case SET_INFO_TOK:
8381
            case SET_LOGIC_TOK:
8382
            case SET_OPTION_TOK:
8383
            case SIMPLIFY_TOK:
8384
            	{
8385
2
            		alt38=7;
8386
            	}
8387
2
                break;
8388
8389
            default:
8390
                CONSTRUCTEX();
8391
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
8392
                EXCEPTION->message      = (void *)"";
8393
                EXCEPTION->decisionNum  = 38;
8394
                EXCEPTION->state        = 0;
8395
8396
8397
                goto rulesimpleSymbolicExprNoKeywordEx;
8398
8399
            }
8400
8401
12333
            switch (alt38)
8402
            {
8403
19
        	case 1:
8404
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1222:5: INTEGER_LITERAL
8405
        	    {
8406
19
        	        INTEGER_LITERAL5 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_simpleSymbolicExprNoKeyword3017);
8407
19
        	        if  (HASEXCEPTION())
8408
        	        {
8409
        	            goto rulesimpleSymbolicExprNoKeywordEx;
8410
        	        }
8411
8412
8413
        	        {
8414
19
        	             s = AntlrInput::tokenText(INTEGER_LITERAL5);
8415
        	        }
8416
8417
8418
        	    }
8419
19
        	    break;
8420
702
        	case 2:
8421
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1224:5: DECIMAL_LITERAL
8422
        	    {
8423
702
        	        DECIMAL_LITERAL6 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_simpleSymbolicExprNoKeyword3029);
8424
702
        	        if  (HASEXCEPTION())
8425
        	        {
8426
        	            goto rulesimpleSymbolicExprNoKeywordEx;
8427
        	        }
8428
8429
8430
        	        {
8431
702
        	             s = AntlrInput::tokenText(DECIMAL_LITERAL6);
8432
        	        }
8433
8434
8435
        	    }
8436
702
        	    break;
8437
        	case 3:
8438
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1226:5: HEX_LITERAL
8439
        	    {
8440
        	        HEX_LITERAL7 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_simpleSymbolicExprNoKeyword3041);
8441
        	        if  (HASEXCEPTION())
8442
        	        {
8443
        	            goto rulesimpleSymbolicExprNoKeywordEx;
8444
        	        }
8445
8446
8447
        	        {
8448
        	             s = AntlrInput::tokenText(HEX_LITERAL7);
8449
        	        }
8450
8451
8452
        	    }
8453
        	    break;
8454
        	case 4:
8455
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1228:5: BINARY_LITERAL
8456
        	    {
8457
        	        BINARY_LITERAL8 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_simpleSymbolicExprNoKeyword3053);
8458
        	        if  (HASEXCEPTION())
8459
        	        {
8460
        	            goto rulesimpleSymbolicExprNoKeywordEx;
8461
        	        }
8462
8463
8464
        	        {
8465
        	             s = AntlrInput::tokenText(BINARY_LITERAL8);
8466
        	        }
8467
8468
8469
        	    }
8470
        	    break;
8471
1045
        	case 5:
8472
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1230:5: str[s,false]
8473
        	    {
8474
1045
        	        FOLLOWPUSH(FOLLOW_str_in_simpleSymbolicExprNoKeyword3065);
8475
1045
        	        str(ctx, s, false);
8476
8477
1045
        	        FOLLOWPOP();
8478
1045
        	        if  (HASEXCEPTION())
8479
        	        {
8480
        	            goto rulesimpleSymbolicExprNoKeywordEx;
8481
        	        }
8482
8483
8484
        	    }
8485
1045
        	    break;
8486
10565
        	case 6:
8487
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1231:5: symbol[s,CHECK_NONE,SYM_SORT]
8488
        	    {
8489
10565
        	        FOLLOWPUSH(FOLLOW_symbol_in_simpleSymbolicExprNoKeyword3072);
8490
10565
        	        symbol(ctx, s, CHECK_NONE, SYM_SORT);
8491
8492
10565
        	        FOLLOWPOP();
8493
10565
        	        if  (HASEXCEPTION())
8494
        	        {
8495
        	            goto rulesimpleSymbolicExprNoKeywordEx;
8496
        	        }
8497
8498
8499
        	    }
8500
10565
        	    break;
8501
2
        	case 7:
8502
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1232:5: tok= ( ASSERT_TOK | CHECK_SAT_TOK | CHECK_SAT_ASSUMING_TOK | DECLARE_FUN_TOK | DECLARE_SORT_TOK | DEFINE_FUN_TOK | DEFINE_FUN_REC_TOK | DEFINE_FUNS_REC_TOK | DEFINE_SORT_TOK | GET_VALUE_TOK | GET_ASSIGNMENT_TOK | GET_ASSERTIONS_TOK | GET_PROOF_TOK | GET_UNSAT_ASSUMPTIONS_TOK | GET_UNSAT_CORE_TOK | EXIT_TOK | RESET_TOK | RESET_ASSERTIONS_TOK | SET_LOGIC_TOK | SET_INFO_TOK | GET_INFO_TOK | SET_OPTION_TOK | GET_OPTION_TOK | PUSH_TOK | POP_TOK | DECLARE_DATATYPES_TOK | GET_MODEL_TOK | ECHO_TOK | SIMPLIFY_TOK )
8503
        	    {
8504
2
        	        tok=(pANTLR3_COMMON_TOKEN)LT(1);
8505
8506
2
        	        if ( LA(1) == ASSERT_TOK || ((LA(1) >= CHECK_SAT_ASSUMING_TOK) && (LA(1) <= CHECK_SAT_TOK)) || LA(1) == DECLARE_DATATYPES_TOK || LA(1) == DECLARE_FUN_TOK || LA(1) == DECLARE_SORT_TOK || ((LA(1) >= DEFINE_FUNS_REC_TOK) && (LA(1) <= DEFINE_SORT_TOK)) || LA(1) == ECHO_TOK || LA(1) == EXIT_TOK || ((LA(1) >= GET_ASSERTIONS_TOK) && (LA(1) <= GET_INFO_TOK)) || ((LA(1) >= GET_MODEL_TOK) && (LA(1) <= GET_PROOF_TOK)) || ((LA(1) >= GET_UNSAT_ASSUMPTIONS_TOK) && (LA(1) <= GET_VALUE_TOK)) || ((LA(1) >= POP_TOK) && (LA(1) <= PUSH_TOK)) || ((LA(1) >= RESET_ASSERTIONS_TOK) && (LA(1) <= RESET_TOK)) || ((LA(1) >= SET_INFO_TOK) && (LA(1) <= SET_LOGIC_TOK)) || LA(1) == SET_OPTION_TOK || LA(1) == SIMPLIFY_TOK )
8507
        	        {
8508
2
        	            CONSUME();
8509
2
        	            PERRORRECOVERY=ANTLR3_FALSE;
8510
        	        }
8511
        	        else
8512
        	        {
8513
        	            CONSTRUCTEX();
8514
        	            EXCEPTION->type         = ANTLR3_MISMATCHED_SET_EXCEPTION;
8515
        	            EXCEPTION->name         = (void *)ANTLR3_MISMATCHED_SET_NAME;
8516
        	            EXCEPTION->expectingSet = NULL;
8517
8518
        	            goto rulesimpleSymbolicExprNoKeywordEx;
8519
        	        }
8520
8521
8522
        	        {
8523
2
        	             s = AntlrInput::tokenText(tok);
8524
        	        }
8525
8526
8527
        	    }
8528
2
        	    break;
8529
8530
            }
8531
        }
8532
    }
8533
8534
    // This is where rules clean up and exit
8535
    //
8536
12333
    goto rulesimpleSymbolicExprNoKeywordEx; /* Prevent compiler warnings */
8537
12333
    rulesimpleSymbolicExprNoKeywordEx: ;
8538
8539
12333
            if (HASEXCEPTION())
8540
            {
8541
                PREPORTERROR();
8542
                PRECOVER();
8543
            }
8544
12333
    return ;
8545
}
8546
/* $ANTLR end simpleSymbolicExprNoKeyword */
8547
8548
/**
8549
 * $ANTLR start keyword
8550
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1244:1: keyword[std::string& s] : KEYWORD ;
8551
 */
8552
static void
8553
1778
keyword(pSmt2Parser ctx, std::string& s)
8554
{
8555
    pANTLR3_COMMON_TOKEN    KEYWORD9;
8556
8557
    /* Initialize rule variables
8558
     */
8559
8560
1778
    KEYWORD9       = NULL;
8561
8562
    {
8563
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1245:3: ( KEYWORD )
8564
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1245:5: KEYWORD
8565
        {
8566
1778
            KEYWORD9 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_keyword3279);
8567
1778
            if  (HASEXCEPTION())
8568
            {
8569
                goto rulekeywordEx;
8570
            }
8571
8572
8573
            {
8574
1778
                 s = AntlrInput::tokenText(KEYWORD9);
8575
            }
8576
8577
8578
        }
8579
8580
    }
8581
8582
    // This is where rules clean up and exit
8583
    //
8584
1778
    goto rulekeywordEx; /* Prevent compiler warnings */
8585
1778
    rulekeywordEx: ;
8586
8587
1778
            if (HASEXCEPTION())
8588
            {
8589
                PREPORTERROR();
8590
                PRECOVER();
8591
            }
8592
1778
    return ;
8593
}
8594
/* $ANTLR end keyword */
8595
8596
/**
8597
 * $ANTLR start simpleSymbolicExpr
8598
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1249:1: simpleSymbolicExpr[std::string& s] : ( simpleSymbolicExprNoKeyword[s] | KEYWORD );
8599
 */
8600
static void
8601
12172
simpleSymbolicExpr(pSmt2Parser ctx, std::string& s)
8602
{
8603
    pANTLR3_COMMON_TOKEN    KEYWORD10;
8604
8605
    /* Initialize rule variables
8606
     */
8607
8608
12172
    KEYWORD10       = NULL;
8609
8610
    {
8611
        {
8612
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1250:3: ( simpleSymbolicExprNoKeyword[s] | KEYWORD )
8613
8614
            ANTLR3_UINT32 alt39;
8615
8616
12172
            alt39=2;
8617
8618
12172
            switch ( LA(1) )
8619
            {
8620
12172
            case ASSERT_TOK:
8621
            case BINARY_LITERAL:
8622
            case CHECK_SAT_ASSUMING_TOK:
8623
            case CHECK_SAT_TOK:
8624
            case DECIMAL_LITERAL:
8625
            case DECLARE_DATATYPES_TOK:
8626
            case DECLARE_FUN_TOK:
8627
            case DECLARE_SORT_TOK:
8628
            case DEFINE_FUNS_REC_TOK:
8629
            case DEFINE_FUN_REC_TOK:
8630
            case DEFINE_FUN_TOK:
8631
            case DEFINE_SORT_TOK:
8632
            case ECHO_TOK:
8633
            case EXIT_TOK:
8634
            case GET_ASSERTIONS_TOK:
8635
            case GET_ASSIGNMENT_TOK:
8636
            case GET_INFO_TOK:
8637
            case GET_MODEL_TOK:
8638
            case GET_OPTION_TOK:
8639
            case GET_PROOF_TOK:
8640
            case GET_UNSAT_ASSUMPTIONS_TOK:
8641
            case GET_UNSAT_CORE_TOK:
8642
            case GET_VALUE_TOK:
8643
            case HEX_LITERAL:
8644
            case INTEGER_LITERAL:
8645
            case POP_TOK:
8646
            case PUSH_TOK:
8647
            case QUOTED_SYMBOL:
8648
            case RESET_ASSERTIONS_TOK:
8649
            case RESET_TOK:
8650
            case SET_INFO_TOK:
8651
            case SET_LOGIC_TOK:
8652
            case SET_OPTION_TOK:
8653
            case SIMPLE_SYMBOL:
8654
            case SIMPLIFY_TOK:
8655
            case STRING_LITERAL:
8656
            case UNTERMINATED_QUOTED_SYMBOL:
8657
            	{
8658
12172
            		alt39=1;
8659
            	}
8660
12172
                break;
8661
            case KEYWORD:
8662
            	{
8663
            		alt39=2;
8664
            	}
8665
                break;
8666
8667
            default:
8668
                CONSTRUCTEX();
8669
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
8670
                EXCEPTION->message      = (void *)"";
8671
                EXCEPTION->decisionNum  = 39;
8672
                EXCEPTION->state        = 0;
8673
8674
8675
                goto rulesimpleSymbolicExprEx;
8676
8677
            }
8678
8679
12172
            switch (alt39)
8680
            {
8681
12172
        	case 1:
8682
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1250:5: simpleSymbolicExprNoKeyword[s]
8683
        	    {
8684
12172
        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExprNoKeyword_in_simpleSymbolicExpr3299);
8685
12172
        	        simpleSymbolicExprNoKeyword(ctx, s);
8686
8687
12172
        	        FOLLOWPOP();
8688
12172
        	        if  (HASEXCEPTION())
8689
        	        {
8690
        	            goto rulesimpleSymbolicExprEx;
8691
        	        }
8692
8693
8694
        	    }
8695
12172
        	    break;
8696
        	case 2:
8697
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1251:5: KEYWORD
8698
        	    {
8699
        	        KEYWORD10 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_simpleSymbolicExpr3306);
8700
        	        if  (HASEXCEPTION())
8701
        	        {
8702
        	            goto rulesimpleSymbolicExprEx;
8703
        	        }
8704
8705
8706
        	        {
8707
        	             s = AntlrInput::tokenText(KEYWORD10);
8708
        	        }
8709
8710
8711
        	    }
8712
        	    break;
8713
8714
            }
8715
        }
8716
    }
8717
8718
    // This is where rules clean up and exit
8719
    //
8720
12172
    goto rulesimpleSymbolicExprEx; /* Prevent compiler warnings */
8721
12172
    rulesimpleSymbolicExprEx: ;
8722
8723
12172
            if (HASEXCEPTION())
8724
            {
8725
                PREPORTERROR();
8726
                PRECOVER();
8727
            }
8728
12172
    return ;
8729
}
8730
/* $ANTLR end simpleSymbolicExpr */
8731
8732
/**
8733
 * $ANTLR start symbolicExpr
8734
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1254:1: symbolicExpr[cvc5::api::Term& sexpr] : ( simpleSymbolicExpr[s] | LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK );
8735
 */
8736
static void
8737
12168
symbolicExpr(pSmt2Parser ctx, cvc5::api::Term& sexpr)
8738
{
8739
8740
24336
      std::string s;
8741
24336
      std::vector<api::Term> children;
8742
8743
    /* Initialize rule variables
8744
     */
8745
8746
    {
8747
        {
8748
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1259:3: ( simpleSymbolicExpr[s] | LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK )
8749
8750
            ANTLR3_UINT32 alt41;
8751
8752
12168
            alt41=2;
8753
8754
12168
            switch ( LA(1) )
8755
            {
8756
12163
            case ASSERT_TOK:
8757
            case BINARY_LITERAL:
8758
            case CHECK_SAT_ASSUMING_TOK:
8759
            case CHECK_SAT_TOK:
8760
            case DECIMAL_LITERAL:
8761
            case DECLARE_DATATYPES_TOK:
8762
            case DECLARE_FUN_TOK:
8763
            case DECLARE_SORT_TOK:
8764
            case DEFINE_FUNS_REC_TOK:
8765
            case DEFINE_FUN_REC_TOK:
8766
            case DEFINE_FUN_TOK:
8767
            case DEFINE_SORT_TOK:
8768
            case ECHO_TOK:
8769
            case EXIT_TOK:
8770
            case GET_ASSERTIONS_TOK:
8771
            case GET_ASSIGNMENT_TOK:
8772
            case GET_INFO_TOK:
8773
            case GET_MODEL_TOK:
8774
            case GET_OPTION_TOK:
8775
            case GET_PROOF_TOK:
8776
            case GET_UNSAT_ASSUMPTIONS_TOK:
8777
            case GET_UNSAT_CORE_TOK:
8778
            case GET_VALUE_TOK:
8779
            case HEX_LITERAL:
8780
            case INTEGER_LITERAL:
8781
            case KEYWORD:
8782
            case POP_TOK:
8783
            case PUSH_TOK:
8784
            case QUOTED_SYMBOL:
8785
            case RESET_ASSERTIONS_TOK:
8786
            case RESET_TOK:
8787
            case SET_INFO_TOK:
8788
            case SET_LOGIC_TOK:
8789
            case SET_OPTION_TOK:
8790
            case SIMPLE_SYMBOL:
8791
            case SIMPLIFY_TOK:
8792
            case STRING_LITERAL:
8793
            case UNTERMINATED_QUOTED_SYMBOL:
8794
            	{
8795
12163
            		alt41=1;
8796
            	}
8797
12163
                break;
8798
5
            case LPAREN_TOK:
8799
            	{
8800
5
            		alt41=2;
8801
            	}
8802
5
                break;
8803
8804
            default:
8805
                CONSTRUCTEX();
8806
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
8807
                EXCEPTION->message      = (void *)"";
8808
                EXCEPTION->decisionNum  = 41;
8809
                EXCEPTION->state        = 0;
8810
8811
8812
                goto rulesymbolicExprEx;
8813
8814
            }
8815
8816
12168
            switch (alt41)
8817
            {
8818
12163
        	case 1:
8819
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1259:5: simpleSymbolicExpr[s]
8820
        	    {
8821
12163
        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExpr_in_symbolicExpr3327);
8822
12163
        	        simpleSymbolicExpr(ctx, s);
8823
8824
12163
        	        FOLLOWPOP();
8825
12163
        	        if  (HASEXCEPTION())
8826
        	        {
8827
        	            goto rulesymbolicExprEx;
8828
        	        }
8829
8830
8831
        	        {
8832
12163
        	             sexpr = SOLVER->mkString(PARSER_STATE->processAdHocStringEsc(s));
8833
        	        }
8834
8835
8836
        	    }
8837
12163
        	    break;
8838
5
        	case 2:
8839
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1261:5: LPAREN_TOK ( symbolicExpr[sexpr] )* RPAREN_TOK
8840
        	    {
8841
5
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_symbolicExpr3340);
8842
5
        	        if  (HASEXCEPTION())
8843
        	        {
8844
        	            goto rulesymbolicExprEx;
8845
        	        }
8846
8847
8848
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1262:5: ( symbolicExpr[sexpr] )*
8849
8850
        	        for (;;)
8851
        	        {
8852
19
        	            int alt40=2;
8853
19
        	            switch ( LA(1) )
8854
        	            {
8855
14
        	            case ASSERT_TOK:
8856
        	            case BINARY_LITERAL:
8857
        	            case CHECK_SAT_ASSUMING_TOK:
8858
        	            case CHECK_SAT_TOK:
8859
        	            case DECIMAL_LITERAL:
8860
        	            case DECLARE_DATATYPES_TOK:
8861
        	            case DECLARE_FUN_TOK:
8862
        	            case DECLARE_SORT_TOK:
8863
        	            case DEFINE_FUNS_REC_TOK:
8864
        	            case DEFINE_FUN_REC_TOK:
8865
        	            case DEFINE_FUN_TOK:
8866
        	            case DEFINE_SORT_TOK:
8867
        	            case ECHO_TOK:
8868
        	            case EXIT_TOK:
8869
        	            case GET_ASSERTIONS_TOK:
8870
        	            case GET_ASSIGNMENT_TOK:
8871
        	            case GET_INFO_TOK:
8872
        	            case GET_MODEL_TOK:
8873
        	            case GET_OPTION_TOK:
8874
        	            case GET_PROOF_TOK:
8875
        	            case GET_UNSAT_ASSUMPTIONS_TOK:
8876
        	            case GET_UNSAT_CORE_TOK:
8877
        	            case GET_VALUE_TOK:
8878
        	            case HEX_LITERAL:
8879
        	            case INTEGER_LITERAL:
8880
        	            case KEYWORD:
8881
        	            case LPAREN_TOK:
8882
        	            case POP_TOK:
8883
        	            case PUSH_TOK:
8884
        	            case QUOTED_SYMBOL:
8885
        	            case RESET_ASSERTIONS_TOK:
8886
        	            case RESET_TOK:
8887
        	            case SET_INFO_TOK:
8888
        	            case SET_LOGIC_TOK:
8889
        	            case SET_OPTION_TOK:
8890
        	            case SIMPLE_SYMBOL:
8891
        	            case SIMPLIFY_TOK:
8892
        	            case STRING_LITERAL:
8893
        	            case UNTERMINATED_QUOTED_SYMBOL:
8894
        	            	{
8895
14
        	            		alt40=1;
8896
        	            	}
8897
14
        	                break;
8898
8899
        	            }
8900
8901
19
        	            switch (alt40)
8902
        	            {
8903
14
        	        	case 1:
8904
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1262:7: symbolicExpr[sexpr]
8905
        	        	    {
8906
14
        	        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_symbolicExpr3348);
8907
14
        	        	        symbolicExpr(ctx, sexpr);
8908
8909
14
        	        	        FOLLOWPOP();
8910
14
        	        	        if  (HASEXCEPTION())
8911
        	        	        {
8912
        	        	            goto rulesymbolicExprEx;
8913
        	        	        }
8914
8915
8916
        	        	        {
8917
14
        	        	             children.push_back(sexpr);
8918
        	        	        }
8919
8920
8921
        	        	    }
8922
14
        	        	    break;
8923
8924
5
        	        	default:
8925
5
        	        	    goto loop40;	/* break out of the loop */
8926
        	        	    break;
8927
        	            }
8928
14
        	        }
8929
5
        	        loop40: ; /* Jump out to here if this rule does not match */
8930
8931
8932
5
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_symbolicExpr3356);
8933
5
        	        if  (HASEXCEPTION())
8934
        	        {
8935
        	            goto rulesymbolicExprEx;
8936
        	        }
8937
8938
8939
        	        {
8940
5
        	             sexpr = SOLVER->mkTerm(cvc5::api::SEXPR, children);
8941
        	        }
8942
8943
8944
        	    }
8945
5
        	    break;
8946
8947
            }
8948
        }
8949
    }
8950
8951
    // This is where rules clean up and exit
8952
    //
8953
12168
    goto rulesymbolicExprEx; /* Prevent compiler warnings */
8954
12168
    rulesymbolicExprEx: ;
8955
8956
12168
            if (HASEXCEPTION())
8957
            {
8958
                PREPORTERROR();
8959
                PRECOVER();
8960
            }
8961
24336
    return ;
8962
}
8963
/* $ANTLR end symbolicExpr */
8964
8965
/**
8966
 * $ANTLR start term
8967
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1270:1: term[cvc5::api::Term& expr, cvc5::api::Term& expr2] : ( termNonVariable[expr, expr2] | qualIdentifier[p] );
8968
 */
8969
static void
8970
7513768
term(pSmt2Parser ctx, cvc5::api::Term& expr, cvc5::api::Term& expr2)
8971
{
8972
    /* Initialize rule variables
8973
     */
8974
8975
8976
7513768
      api::Kind kind = api::NULL_EXPR;
8977
15027536
      cvc5::api::Term f;
8978
15027536
      std::string name;
8979
15027536
      cvc5::api::Sort type;
8980
15027536
      ParseOp p;
8981
8982
    {
8983
        {
8984
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1278:3: ( termNonVariable[expr, expr2] | qualIdentifier[p] )
8985
8986
            ANTLR3_UINT32 alt42;
8987
8988
7513768
            alt42=2;
8989
8990
7513768
            switch ( LA(1) )
8991
            {
8992
3566318
            case LPAREN_TOK:
8993
            	{
8994
3566318
            		switch ( LA(2) )
8995
            		{
8996
3471030
            		case ATTRIBUTE_TOK:
8997
            		case COMPREHENSION_TOK:
8998
            		case EXISTS_TOK:
8999
            		case FORALL_TOK:
9000
            		case HO_LAMBDA_TOK:
9001
            		case LET_TOK:
9002
            		case LPAREN_TOK:
9003
            		case MATCH_TOK:
9004
            		case QUOTED_SYMBOL:
9005
            		case SIMPLE_SYMBOL:
9006
            		case TUPLE_CONST_TOK:
9007
            		case TUPLE_PROJECT_TOK:
9008
            		case UNTERMINATED_QUOTED_SYMBOL:
9009
            			{
9010
3471030
            				alt42=1;
9011
            			}
9012
3471030
            		    break;
9013
95004
            		case INDEX_TOK:
9014
            			{
9015
95004
            				alt42=1;
9016
            			}
9017
95004
            		    break;
9018
284
            		case AS_TOK:
9019
            			{
9020
284
            				alt42=2;
9021
            			}
9022
284
            		    break;
9023
9024
            		default:
9025
            		    CONSTRUCTEX();
9026
            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
9027
            		    EXCEPTION->message      = (void *)"";
9028
            		    EXCEPTION->decisionNum  = 42;
9029
            		    EXCEPTION->state        = 1;
9030
9031
9032
            		    goto ruletermEx;
9033
9034
            		}
9035
9036
            	}
9037
3566318
                break;
9038
397541
            case BINARY_LITERAL:
9039
            case DECIMAL_LITERAL:
9040
            case HEX_LITERAL:
9041
            case INTEGER_LITERAL:
9042
            case STRING_LITERAL:
9043
            case TUPLE_CONST_TOK:
9044
            	{
9045
397541
            		alt42=1;
9046
            	}
9047
397541
                break;
9048
3549907
            case QUOTED_SYMBOL:
9049
            case SIMPLE_SYMBOL:
9050
            case UNTERMINATED_QUOTED_SYMBOL:
9051
            	{
9052
3549907
            		alt42=2;
9053
            	}
9054
3549907
                break;
9055
9056
2
            default:
9057
2
                CONSTRUCTEX();
9058
2
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
9059
2
                EXCEPTION->message      = (void *)"";
9060
2
                EXCEPTION->decisionNum  = 42;
9061
2
                EXCEPTION->state        = 0;
9062
9063
9064
2
                goto ruletermEx;
9065
9066
            }
9067
9068
7513766
            switch (alt42)
9069
            {
9070
3963575
        	case 1:
9071
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1278:3: termNonVariable[expr, expr2]
9072
        	    {
9073
3963575
        	        FOLLOWPUSH(FOLLOW_termNonVariable_in_term3381);
9074
3963575
        	        termNonVariable(ctx, expr, expr2);
9075
9076
3963515
        	        FOLLOWPOP();
9077
3963515
        	        if  (HASEXCEPTION())
9078
        	        {
9079
        	            goto ruletermEx;
9080
        	        }
9081
9082
9083
        	    }
9084
3963515
        	    break;
9085
3550191
        	case 2:
9086
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1282:5: qualIdentifier[p]
9087
        	    {
9088
3550191
        	        FOLLOWPUSH(FOLLOW_qualIdentifier_in_term3393);
9089
3550191
        	        qualIdentifier(ctx, p);
9090
9091
3550191
        	        FOLLOWPOP();
9092
3550191
        	        if  (HASEXCEPTION())
9093
        	        {
9094
        	            goto ruletermEx;
9095
        	        }
9096
9097
9098
        	        {
9099
9100
3550191
        	                  expr = PARSER_STATE->parseOpToExpr(p);
9101
9102
        	        }
9103
9104
9105
        	    }
9106
3550182
        	    break;
9107
9108
            }
9109
        }
9110
    }
9111
9112
    // This is where rules clean up and exit
9113
    //
9114
7513697
    goto ruletermEx; /* Prevent compiler warnings */
9115
7513699
    ruletermEx: ;
9116
9117
7513699
            if (HASEXCEPTION())
9118
            {
9119
2
                PREPORTERROR();
9120
                PRECOVER();
9121
            }
9122
15027394
    return ;
9123
}
9124
/* $ANTLR end term */
9125
9126
/**
9127
 * $ANTLR start termNonVariable
9128
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1293:1: termNonVariable[cvc5::api::Term& expr, cvc5::api::Term& expr2] : ( LPAREN_TOK quantOp[kind] boundVarList[bvl] term[f, f2] RPAREN_TOK | LPAREN_TOK COMPREHENSION_TOK boundVarList[bvl] term[f, f2] term[f, f2] RPAREN_TOK | LPAREN_TOK qualIdentifier[p] termList[args,expr] RPAREN_TOK | LPAREN_TOK LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[expr, f2] RPAREN_TOK )+ RPAREN_TOK term[expr, f2] RPAREN_TOK | LPAREN_TOK MATCH_TOK term[expr, f2] LPAREN_TOK ( LPAREN_TOK LPAREN_TOK term[f, f2] ( symbol[name,CHECK_NONE,SYM_VARIABLE] )* RPAREN_TOK term[f3, f2] RPAREN_TOK | LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[f3, f2] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK | LPAREN_TOK ATTRIBUTE_TOK term[expr, f2] ( attribute[expr, attexpr] )+ RPAREN_TOK | LPAREN_TOK HO_LAMBDA_TOK boundVarList[bvl] term[f, f2] RPAREN_TOK | LPAREN_TOK TUPLE_CONST_TOK termList[args,expr] RPAREN_TOK | LPAREN_TOK TUPLE_PROJECT_TOK term[expr,expr2] RPAREN_TOK | termAtomic[atomTerm] );
9129
 */
9130
static void
9131
3963575
termNonVariable(pSmt2Parser ctx, cvc5::api::Term& expr, cvc5::api::Term& expr2)
9132
{
9133
    /* Initialize rule variables
9134
     */
9135
9136
9137
3963575
      Debug("parser") << "term: " << AntlrInput::tokenText(LT(1)) << std::endl;
9138
3963575
      api::Kind kind = api::NULL_EXPR;
9139
7927150
      std::string name;
9140
7927150
      std::vector<cvc5::api::Term> args;
9141
7927150
      std::vector< std::pair<std::string, cvc5::api::Sort> > sortedVarNames;
9142
7927150
      cvc5::api::Term bvl;
9143
7927150
      cvc5::api::Term f, f2, f3;
9144
7927150
      std::string attr;
9145
7927150
      cvc5::api::Term attexpr;
9146
7927150
      std::vector<cvc5::api::Term> patexprs;
9147
7927150
      std::vector<cvc5::api::Term> matchcases;
9148
7927150
      std::unordered_set<std::string> names;
9149
7927150
      std::vector< std::pair<std::string, cvc5::api::Term> > binders;
9150
7927150
      cvc5::api::Sort type;
9151
7927150
      cvc5::api::Sort type2;
9152
7927150
      api::Term atomTerm;
9153
7927150
      ParseOp p;
9154
7927150
      std::vector<api::Sort> argTypes;
9155
9156
    {
9157
        {
9158
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1314:3: ( LPAREN_TOK quantOp[kind] boundVarList[bvl] term[f, f2] RPAREN_TOK | LPAREN_TOK COMPREHENSION_TOK boundVarList[bvl] term[f, f2] term[f, f2] RPAREN_TOK | LPAREN_TOK qualIdentifier[p] termList[args,expr] RPAREN_TOK | LPAREN_TOK LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[expr, f2] RPAREN_TOK )+ RPAREN_TOK term[expr, f2] RPAREN_TOK | LPAREN_TOK MATCH_TOK term[expr, f2] LPAREN_TOK ( LPAREN_TOK LPAREN_TOK term[f, f2] ( symbol[name,CHECK_NONE,SYM_VARIABLE] )* RPAREN_TOK term[f3, f2] RPAREN_TOK | LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[f3, f2] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK | LPAREN_TOK ATTRIBUTE_TOK term[expr, f2] ( attribute[expr, attexpr] )+ RPAREN_TOK | LPAREN_TOK HO_LAMBDA_TOK boundVarList[bvl] term[f, f2] RPAREN_TOK | LPAREN_TOK TUPLE_CONST_TOK termList[args,expr] RPAREN_TOK | LPAREN_TOK TUPLE_PROJECT_TOK term[expr,expr2] RPAREN_TOK | termAtomic[atomTerm] )
9159
9160
            ANTLR3_UINT32 alt47;
9161
9162
3963575
            alt47=10;
9163
9164
3963575
            switch ( LA(1) )
9165
            {
9166
3566034
            case LPAREN_TOK:
9167
            	{
9168
3566034
            		switch ( LA(2) )
9169
            		{
9170
18
            		case COMPREHENSION_TOK:
9171
            			{
9172
18
            				alt47=2;
9173
            			}
9174
18
            		    break;
9175
69820
            		case LET_TOK:
9176
            			{
9177
69820
            				alt47=4;
9178
            			}
9179
69820
            		    break;
9180
13
            		case MATCH_TOK:
9181
            			{
9182
13
            				alt47=5;
9183
            			}
9184
13
            		    break;
9185
8129
            		case ATTRIBUTE_TOK:
9186
            			{
9187
8129
            				alt47=6;
9188
            			}
9189
8129
            		    break;
9190
134
            		case HO_LAMBDA_TOK:
9191
            			{
9192
134
            				alt47=7;
9193
            			}
9194
134
            		    break;
9195
50
            		case TUPLE_CONST_TOK:
9196
            			{
9197
50
            				alt47=8;
9198
            			}
9199
50
            		    break;
9200
2
            		case TUPLE_PROJECT_TOK:
9201
            			{
9202
2
            				alt47=9;
9203
            			}
9204
2
            		    break;
9205
95004
            		case INDEX_TOK:
9206
            			{
9207
95004
            				alt47=10;
9208
            			}
9209
95004
            		    break;
9210
28288
            		case EXISTS_TOK:
9211
            		case FORALL_TOK:
9212
            			{
9213
28288
            				alt47=1;
9214
            			}
9215
28288
            		    break;
9216
3364576
            		case LPAREN_TOK:
9217
            		case QUOTED_SYMBOL:
9218
            		case SIMPLE_SYMBOL:
9219
            		case UNTERMINATED_QUOTED_SYMBOL:
9220
            			{
9221
3364576
            				alt47=3;
9222
            			}
9223
3364576
            		    break;
9224
9225
            		default:
9226
            		    CONSTRUCTEX();
9227
            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
9228
            		    EXCEPTION->message      = (void *)"";
9229
            		    EXCEPTION->decisionNum  = 47;
9230
            		    EXCEPTION->state        = 1;
9231
9232
9233
            		    goto ruletermNonVariableEx;
9234
9235
            		}
9236
9237
            	}
9238
3566034
                break;
9239
397541
            case BINARY_LITERAL:
9240
            case DECIMAL_LITERAL:
9241
            case HEX_LITERAL:
9242
            case INTEGER_LITERAL:
9243
            case STRING_LITERAL:
9244
            case TUPLE_CONST_TOK:
9245
            	{
9246
397541
            		alt47=10;
9247
            	}
9248
397541
                break;
9249
9250
            default:
9251
                CONSTRUCTEX();
9252
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
9253
                EXCEPTION->message      = (void *)"";
9254
                EXCEPTION->decisionNum  = 47;
9255
                EXCEPTION->state        = 0;
9256
9257
9258
                goto ruletermNonVariableEx;
9259
9260
            }
9261
9262
3963575
            switch (alt47)
9263
            {
9264
28288
        	case 1:
9265
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1314:5: LPAREN_TOK quantOp[kind] boundVarList[bvl] term[f, f2] RPAREN_TOK
9266
        	    {
9267
28288
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3421);
9268
28288
        	        if  (HASEXCEPTION())
9269
        	        {
9270
        	            goto ruletermNonVariableEx;
9271
        	        }
9272
9273
9274
28288
        	        FOLLOWPUSH(FOLLOW_quantOp_in_termNonVariable3423);
9275
28288
        	        quantOp(ctx, kind);
9276
9277
28288
        	        FOLLOWPOP();
9278
28288
        	        if  (HASEXCEPTION())
9279
        	        {
9280
        	            goto ruletermNonVariableEx;
9281
        	        }
9282
9283
9284
        	        {
9285
9286
28288
        	                  if (!PARSER_STATE->isTheoryEnabled(theory::THEORY_QUANTIFIERS))
9287
        	                  {
9288
2
        	                    PARSER_STATE->parseError("Quantifier used in non-quantified logic.");
9289
        	                  }
9290
28287
        	                  PARSER_STATE->pushScope();
9291
9292
        	        }
9293
9294
9295
28287
        	        FOLLOWPUSH(FOLLOW_boundVarList_in_termNonVariable3436);
9296
28287
        	        boundVarList(ctx, bvl);
9297
9298
28286
        	        FOLLOWPOP();
9299
28286
        	        if  (HASEXCEPTION())
9300
        	        {
9301
        	            goto ruletermNonVariableEx;
9302
        	        }
9303
9304
9305
28286
        	        FOLLOWPUSH(FOLLOW_term_in_termNonVariable3443);
9306
28286
        	        term(ctx, f, f2);
9307
9308
28286
        	        FOLLOWPOP();
9309
28286
        	        if  (HASEXCEPTION())
9310
        	        {
9311
        	            goto ruletermNonVariableEx;
9312
        	        }
9313
9314
9315
28286
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3446);
9316
28286
        	        if  (HASEXCEPTION())
9317
        	        {
9318
        	            goto ruletermNonVariableEx;
9319
        	        }
9320
9321
9322
        	        {
9323
9324
28286
        	                  args.push_back(bvl);
9325
9326
28286
        	                  PARSER_STATE->popScope();
9327
28286
        	                  args.push_back(f);
9328
28286
        	                  if(! f2.isNull()){
9329
3433
        	                    args.push_back(f2);
9330
        	                  }
9331
28286
        	                  expr = MK_TERM(kind, args);
9332
9333
        	        }
9334
9335
9336
        	    }
9337
28286
        	    break;
9338
18
        	case 2:
9339
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1334:5: LPAREN_TOK COMPREHENSION_TOK boundVarList[bvl] term[f, f2] term[f, f2] RPAREN_TOK
9340
        	    {
9341
18
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3458);
9342
18
        	        if  (HASEXCEPTION())
9343
        	        {
9344
        	            goto ruletermNonVariableEx;
9345
        	        }
9346
9347
9348
18
        	         MATCHT(COMPREHENSION_TOK, &FOLLOW_COMPREHENSION_TOK_in_termNonVariable3460);
9349
18
        	        if  (HASEXCEPTION())
9350
        	        {
9351
        	            goto ruletermNonVariableEx;
9352
        	        }
9353
9354
9355
        	        {
9356
18
        	             PARSER_STATE->pushScope();
9357
        	        }
9358
9359
9360
18
        	        FOLLOWPUSH(FOLLOW_boundVarList_in_termNonVariable3472);
9361
18
        	        boundVarList(ctx, bvl);
9362
9363
18
        	        FOLLOWPOP();
9364
18
        	        if  (HASEXCEPTION())
9365
        	        {
9366
        	            goto ruletermNonVariableEx;
9367
        	        }
9368
9369
9370
        	        {
9371
9372
18
        	                  args.push_back(bvl);
9373
9374
        	        }
9375
9376
9377
18
        	        FOLLOWPUSH(FOLLOW_term_in_termNonVariable3485);
9378
18
        	        term(ctx, f, f2);
9379
9380
18
        	        FOLLOWPOP();
9381
18
        	        if  (HASEXCEPTION())
9382
        	        {
9383
        	            goto ruletermNonVariableEx;
9384
        	        }
9385
9386
9387
        	        {
9388
18
        	             args.push_back(f);
9389
        	        }
9390
9391
9392
18
        	        FOLLOWPUSH(FOLLOW_term_in_termNonVariable3494);
9393
18
        	        term(ctx, f, f2);
9394
9395
18
        	        FOLLOWPOP();
9396
18
        	        if  (HASEXCEPTION())
9397
        	        {
9398
        	            goto ruletermNonVariableEx;
9399
        	        }
9400
9401
9402
        	        {
9403
9404
18
        	                  args.push_back(f);
9405
18
        	                  expr = MK_TERM(api::COMPREHENSION, args);
9406
9407
        	        }
9408
9409
9410
18
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3503);
9411
18
        	        if  (HASEXCEPTION())
9412
        	        {
9413
        	            goto ruletermNonVariableEx;
9414
        	        }
9415
9416
9417
        	    }
9418
18
        	    break;
9419
3364576
        	case 3:
9420
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1346:5: LPAREN_TOK qualIdentifier[p] termList[args,expr] RPAREN_TOK
9421
        	    {
9422
3364576
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3509);
9423
3364576
        	        if  (HASEXCEPTION())
9424
        	        {
9425
        	            goto ruletermNonVariableEx;
9426
        	        }
9427
9428
9429
3364576
        	        FOLLOWPUSH(FOLLOW_qualIdentifier_in_termNonVariable3511);
9430
3364576
        	        qualIdentifier(ctx, p);
9431
9432
3364575
        	        FOLLOWPOP();
9433
3364575
        	        if  (HASEXCEPTION())
9434
        	        {
9435
        	            goto ruletermNonVariableEx;
9436
        	        }
9437
9438
9439
3364575
        	        FOLLOWPUSH(FOLLOW_termList_in_termNonVariable3518);
9440
3364575
        	        termList(ctx, args, expr);
9441
9442
3364547
        	        FOLLOWPOP();
9443
3364547
        	        if  (HASEXCEPTION())
9444
        	        {
9445
        	            goto ruletermNonVariableEx;
9446
        	        }
9447
9448
9449
3364547
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3521);
9450
3364547
        	        if  (HASEXCEPTION())
9451
        	        {
9452
2
        	            goto ruletermNonVariableEx;
9453
        	        }
9454
9455
9456
        	        {
9457
9458
3364545
        	                  expr = PARSER_STATE->applyParseOp(p, args);
9459
9460
        	        }
9461
9462
9463
        	    }
9464
3364519
        	    break;
9465
69820
        	case 4:
9466
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1352:5: LPAREN_TOK LET_TOK LPAREN_TOK ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[expr, f2] RPAREN_TOK )+ RPAREN_TOK term[expr, f2] RPAREN_TOK
9467
        	    {
9468
69820
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3539);
9469
69820
        	        if  (HASEXCEPTION())
9470
        	        {
9471
        	            goto ruletermNonVariableEx;
9472
        	        }
9473
9474
9475
69820
        	         MATCHT(LET_TOK, &FOLLOW_LET_TOK_in_termNonVariable3548);
9476
69820
        	        if  (HASEXCEPTION())
9477
        	        {
9478
        	            goto ruletermNonVariableEx;
9479
        	        }
9480
9481
9482
69820
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3550);
9483
69820
        	        if  (HASEXCEPTION())
9484
        	        {
9485
        	            goto ruletermNonVariableEx;
9486
        	        }
9487
9488
9489
        	        {
9490
69820
        	             PARSER_STATE->pushScope();
9491
        	        }
9492
9493
9494
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1355:7: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[expr, f2] RPAREN_TOK )+
9495
        	        {
9496
69820
        	            int cnt43=0;
9497
9498
        	            for (;;)
9499
        	            {
9500
158258
        	                int alt43=2;
9501
158258
        	        	switch ( LA(1) )
9502
        	        	{
9503
88438
        	        	case LPAREN_TOK:
9504
        	        		{
9505
88438
        	        			alt43=1;
9506
        	        		}
9507
88438
        	        	    break;
9508
9509
        	        	}
9510
9511
158258
        	        	switch (alt43)
9512
        	        	{
9513
88438
        	        	    case 1:
9514
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1355:9: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[expr, f2] RPAREN_TOK
9515
        	        	        {
9516
88438
        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3568);
9517
88438
        	        	            if  (HASEXCEPTION())
9518
        	        	            {
9519
        	        	                goto ruletermNonVariableEx;
9520
        	        	            }
9521
9522
9523
88438
        	        	            FOLLOWPUSH(FOLLOW_symbol_in_termNonVariable3570);
9524
88438
        	        	            symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
9525
9526
88438
        	        	            FOLLOWPOP();
9527
88438
        	        	            if  (HASEXCEPTION())
9528
        	        	            {
9529
        	        	                goto ruletermNonVariableEx;
9530
        	        	            }
9531
9532
9533
88438
        	        	            FOLLOWPUSH(FOLLOW_term_in_termNonVariable3581);
9534
88438
        	        	            term(ctx, expr, f2);
9535
9536
88438
        	        	            FOLLOWPOP();
9537
88438
        	        	            if  (HASEXCEPTION())
9538
        	        	            {
9539
        	        	                goto ruletermNonVariableEx;
9540
        	        	            }
9541
9542
9543
88438
        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3592);
9544
88438
        	        	            if  (HASEXCEPTION())
9545
        	        	            {
9546
        	        	                goto ruletermNonVariableEx;
9547
        	        	            }
9548
9549
9550
        	        	            {
9551
88438
        	        	                 if(names.count(name) == 1) {
9552
        	        	                            std::stringstream ss;
9553
        	        	                            ss << "warning: symbol `" << name << "' bound multiple times by let;"
9554
        	        	                               << " the last binding will be used, shadowing earlier ones";
9555
        	        	                            PARSER_STATE->warning(ss.str());
9556
        	        	                          } else {
9557
88438
        	        	                            names.insert(name);
9558
        	        	                          }
9559
88438
        	        	                          binders.push_back(std::make_pair(name, expr));
9560
        	        	            }
9561
9562
9563
        	        	        }
9564
88438
        	        	        break;
9565
9566
69820
        	        	    default:
9567
9568
69820
        	        		if ( cnt43 >= 1 )
9569
        	        		{
9570
69820
        	        		    goto loop43;
9571
        	        		}
9572
        	        		/* mismatchedSetEx()
9573
        	        		 */
9574
        	        		CONSTRUCTEX();
9575
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
9576
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
9577
9578
9579
        	        		goto ruletermNonVariableEx;
9580
        	        	}
9581
88438
        	        	cnt43++;
9582
88438
        	            }
9583
69820
        	            loop43: ;	/* Jump to here if this rule does not match */
9584
        	        }
9585
9586
        	        {
9587
        	             // now implement these bindings
9588
158258
        	                  for (const std::pair<std::string, api::Term>& binder : binders)
9589
        	                  {
9590
        	                    {
9591
88438
        	                      PARSER_STATE->defineVar(binder.first, binder.second);
9592
        	                    }
9593
        	                  }
9594
9595
        	        }
9596
9597
9598
69820
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3635);
9599
69820
        	        if  (HASEXCEPTION())
9600
        	        {
9601
        	            goto ruletermNonVariableEx;
9602
        	        }
9603
9604
9605
69820
        	        FOLLOWPUSH(FOLLOW_term_in_termNonVariable3641);
9606
69820
        	        term(ctx, expr, f2);
9607
9608
69820
        	        FOLLOWPOP();
9609
69820
        	        if  (HASEXCEPTION())
9610
        	        {
9611
        	            goto ruletermNonVariableEx;
9612
        	        }
9613
9614
9615
69820
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3648);
9616
69820
        	        if  (HASEXCEPTION())
9617
        	        {
9618
        	            goto ruletermNonVariableEx;
9619
        	        }
9620
9621
9622
        	        {
9623
69820
        	             PARSER_STATE->popScope();
9624
        	        }
9625
9626
9627
        	    }
9628
69820
        	    break;
9629
13
        	case 5:
9630
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1382:5: LPAREN_TOK MATCH_TOK term[expr, f2] LPAREN_TOK ( LPAREN_TOK LPAREN_TOK term[f, f2] ( symbol[name,CHECK_NONE,SYM_VARIABLE] )* RPAREN_TOK term[f3, f2] RPAREN_TOK | LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[f3, f2] RPAREN_TOK )+ RPAREN_TOK RPAREN_TOK
9631
        	    {
9632
13
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3666);
9633
13
        	        if  (HASEXCEPTION())
9634
        	        {
9635
        	            goto ruletermNonVariableEx;
9636
        	        }
9637
9638
9639
13
        	         MATCHT(MATCH_TOK, &FOLLOW_MATCH_TOK_in_termNonVariable3668);
9640
13
        	        if  (HASEXCEPTION())
9641
        	        {
9642
        	            goto ruletermNonVariableEx;
9643
        	        }
9644
9645
9646
13
        	        FOLLOWPUSH(FOLLOW_term_in_termNonVariable3670);
9647
13
        	        term(ctx, expr, f2);
9648
9649
13
        	        FOLLOWPOP();
9650
13
        	        if  (HASEXCEPTION())
9651
        	        {
9652
        	            goto ruletermNonVariableEx;
9653
        	        }
9654
9655
9656
        	        {
9657
9658
13
        	                  if( !expr.getSort().isDatatype() ){
9659
        	                    PARSER_STATE->parseError("Cannot match on non-datatype term.");
9660
        	                  }
9661
9662
        	        }
9663
9664
9665
13
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3679);
9666
13
        	        if  (HASEXCEPTION())
9667
        	        {
9668
        	            goto ruletermNonVariableEx;
9669
        	        }
9670
9671
9672
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1388:5: ( LPAREN_TOK LPAREN_TOK term[f, f2] ( symbol[name,CHECK_NONE,SYM_VARIABLE] )* RPAREN_TOK term[f3, f2] RPAREN_TOK | LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[f3, f2] RPAREN_TOK )+
9673
        	        {
9674
13
        	            int cnt45=0;
9675
9676
        	            for (;;)
9677
        	            {
9678
46
        	                int alt45=3;
9679
46
        	        	switch ( LA(1) )
9680
        	        	{
9681
33
        	        	case LPAREN_TOK:
9682
        	        		{
9683
33
        	        			switch ( LA(2) )
9684
        	        			{
9685
7
        	        			case LPAREN_TOK:
9686
        	        				{
9687
7
        	        					alt45=1;
9688
        	        				}
9689
7
        	        			    break;
9690
26
        	        			case QUOTED_SYMBOL:
9691
        	        			case SIMPLE_SYMBOL:
9692
        	        			case UNTERMINATED_QUOTED_SYMBOL:
9693
        	        				{
9694
26
        	        					alt45=2;
9695
        	        				}
9696
26
        	        			    break;
9697
9698
        	        			}
9699
9700
        	        		}
9701
33
        	        	    break;
9702
9703
        	        	}
9704
9705
46
        	        	switch (alt45)
9706
        	        	{
9707
7
        	        	    case 1:
9708
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1390:7: LPAREN_TOK LPAREN_TOK term[f, f2] ( symbol[name,CHECK_NONE,SYM_VARIABLE] )* RPAREN_TOK term[f3, f2] RPAREN_TOK
9709
        	        	        {
9710
7
        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3700);
9711
7
        	        	            if  (HASEXCEPTION())
9712
        	        	            {
9713
        	        	                goto ruletermNonVariableEx;
9714
        	        	            }
9715
9716
9717
7
        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3702);
9718
7
        	        	            if  (HASEXCEPTION())
9719
        	        	            {
9720
        	        	                goto ruletermNonVariableEx;
9721
        	        	            }
9722
9723
9724
7
        	        	            FOLLOWPUSH(FOLLOW_term_in_termNonVariable3704);
9725
7
        	        	            term(ctx, f, f2);
9726
9727
7
        	        	            FOLLOWPOP();
9728
7
        	        	            if  (HASEXCEPTION())
9729
        	        	            {
9730
        	        	                goto ruletermNonVariableEx;
9731
        	        	            }
9732
9733
9734
        	        	            {
9735
9736
7
        	        	                          args.clear();
9737
7
        	        	                          PARSER_STATE->pushScope();
9738
        	        	                          // f should be a constructor
9739
7
        	        	                          type = f.getSort();
9740
7
        	        	                          Debug("parser-dt") << "Pattern head : " << f << " " << type << std::endl;
9741
7
        	        	                          if (!type.isConstructor())
9742
        	        	                          {
9743
        	        	                            PARSER_STATE->parseError("Pattern must be application of a constructor or a variable.");
9744
        	        	                          }
9745
14
        	        	                          api::Datatype dt = type.getConstructorCodomainSort().getDatatype();
9746
7
        	        	                          if (dt.isParametric())
9747
        	        	                          {
9748
        	        	                            // lookup constructor by name
9749
4
        	        	                            api::DatatypeConstructor dc = dt.getConstructor(f.toString());
9750
4
        	        	                            api::Term scons = dc.getSpecializedConstructorTerm(expr.getSort());
9751
        	        	                            // take the type of the specialized constructor instead
9752
2
        	        	                            type = scons.getSort();
9753
        	        	                          }
9754
7
        	        	                          argTypes = type.getConstructorDomainSorts();
9755
9756
        	        	            }
9757
9758
9759
        	        	            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1412:9: ( symbol[name,CHECK_NONE,SYM_VARIABLE] )*
9760
9761
        	        	            for (;;)
9762
        	        	            {
9763
21
        	        	                int alt44=2;
9764
21
        	        	                switch ( LA(1) )
9765
        	        	                {
9766
14
        	        	                case QUOTED_SYMBOL:
9767
        	        	                case SIMPLE_SYMBOL:
9768
        	        	                case UNTERMINATED_QUOTED_SYMBOL:
9769
        	        	                	{
9770
14
        	        	                		alt44=1;
9771
        	        	                	}
9772
14
        	        	                    break;
9773
9774
        	        	                }
9775
9776
21
        	        	                switch (alt44)
9777
        	        	                {
9778
14
        	        	            	case 1:
9779
        	        	            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1412:11: symbol[name,CHECK_NONE,SYM_VARIABLE]
9780
        	        	            	    {
9781
14
        	        	            	        FOLLOWPUSH(FOLLOW_symbol_in_termNonVariable3728);
9782
14
        	        	            	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
9783
9784
14
        	        	            	        FOLLOWPOP();
9785
14
        	        	            	        if  (HASEXCEPTION())
9786
        	        	            	        {
9787
        	        	            	            goto ruletermNonVariableEx;
9788
        	        	            	        }
9789
9790
9791
        	        	            	        {
9792
9793
14
        	        	            	                        if (args.size() >= argTypes.size())
9794
        	        	            	                        {
9795
        	        	            	                          PARSER_STATE->parseError("Too many arguments for pattern.");
9796
        	        	            	                        }
9797
        	        	            	                        //make of proper type
9798
28
        	        	            	                        api::Term arg = PARSER_STATE->bindBoundVar(name, argTypes[args.size()]);
9799
14
        	        	            	                        args.push_back( arg );
9800
9801
14
        	        	            	        }
9802
9803
9804
        	        	            	    }
9805
14
        	        	            	    break;
9806
9807
7
        	        	            	default:
9808
7
        	        	            	    goto loop44;	/* break out of the loop */
9809
        	        	            	    break;
9810
        	        	                }
9811
14
        	        	            }
9812
7
        	        	            loop44: ; /* Jump out to here if this rule does not match */
9813
9814
9815
7
        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3752);
9816
7
        	        	            if  (HASEXCEPTION())
9817
        	        	            {
9818
        	        	                goto ruletermNonVariableEx;
9819
        	        	            }
9820
9821
9822
7
        	        	            FOLLOWPUSH(FOLLOW_term_in_termNonVariable3754);
9823
7
        	        	            term(ctx, f3, f2);
9824
9825
7
        	        	            FOLLOWPOP();
9826
7
        	        	            if  (HASEXCEPTION())
9827
        	        	            {
9828
        	        	                goto ruletermNonVariableEx;
9829
        	        	            }
9830
9831
9832
        	        	            {
9833
9834
        	        	                          // make the match case
9835
14
        	        	                          std::vector<cvc5::api::Term> cargs;
9836
7
        	        	                          cargs.push_back(f);
9837
7
        	        	                          cargs.insert(cargs.end(),args.begin(),args.end());
9838
14
        	        	                          api::Term c = MK_TERM(api::APPLY_CONSTRUCTOR,cargs);
9839
14
        	        	                          api::Term bvla = MK_TERM(api::BOUND_VAR_LIST,args);
9840
14
        	        	                          api::Term mc = MK_TERM(api::MATCH_BIND_CASE, bvla, c, f3);
9841
7
        	        	                          matchcases.push_back(mc);
9842
        	        	                          // now, pop the scope
9843
7
        	        	                          PARSER_STATE->popScope();
9844
9845
        	        	            }
9846
9847
9848
7
        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3767);
9849
7
        	        	            if  (HASEXCEPTION())
9850
        	        	            {
9851
        	        	                goto ruletermNonVariableEx;
9852
7
        	        	            }
9853
9854
9855
        	        	        }
9856
7
        	        	        break;
9857
26
        	        	    case 2:
9858
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1436:9: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] term[f3, f2] RPAREN_TOK
9859
        	        	        {
9860
26
        	        	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3784);
9861
26
        	        	            if  (HASEXCEPTION())
9862
        	        	            {
9863
        	        	                goto ruletermNonVariableEx;
9864
        	        	            }
9865
9866
9867
26
        	        	            FOLLOWPUSH(FOLLOW_symbol_in_termNonVariable3786);
9868
26
        	        	            symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
9869
9870
26
        	        	            FOLLOWPOP();
9871
26
        	        	            if  (HASEXCEPTION())
9872
        	        	            {
9873
        	        	                goto ruletermNonVariableEx;
9874
        	        	            }
9875
9876
9877
        	        	            {
9878
9879
26
        	        	                          if (PARSER_STATE->isDeclared(name,SYM_VARIABLE))
9880
        	        	                          {
9881
23
        	        	                            f = PARSER_STATE->getVariable(name);
9882
23
        	        	                            type = f.getSort();
9883
92
        	        	                            if (!type.isConstructor() ||
9884
69
        	        	                                !type.getConstructorDomainSorts().empty())
9885
        	        	                            {
9886
        	        	                              PARSER_STATE->parseError("Must apply constructors of arity greater than 0 to arguments in pattern.");
9887
        	        	                            }
9888
        	        	                            // make nullary constructor application
9889
23
        	        	                            f = MK_TERM(api::APPLY_CONSTRUCTOR, f);
9890
        	        	                          }
9891
        	        	                          else
9892
        	        	                          {
9893
        	        	                            // it has the type of the head expr
9894
3
        	        	                            f = PARSER_STATE->bindBoundVar(name, expr.getSort());
9895
        	        	                          }
9896
9897
        	        	            }
9898
9899
9900
26
        	        	            FOLLOWPUSH(FOLLOW_term_in_termNonVariable3799);
9901
26
        	        	            term(ctx, f3, f2);
9902
9903
26
        	        	            FOLLOWPOP();
9904
26
        	        	            if  (HASEXCEPTION())
9905
        	        	            {
9906
        	        	                goto ruletermNonVariableEx;
9907
        	        	            }
9908
9909
9910
        	        	            {
9911
9912
52
        	        	                          api::Term mc;
9913
26
        	        	                          if (f.getKind() == api::VARIABLE)
9914
        	        	                          {
9915
6
        	        	                            api::Term bvlf = MK_TERM(api::BOUND_VAR_LIST, f);
9916
3
        	        	                            mc = MK_TERM(api::MATCH_BIND_CASE, bvlf, f, f3);
9917
        	        	                          }
9918
        	        	                          else
9919
        	        	                          {
9920
23
        	        	                            mc = MK_TERM(api::MATCH_CASE, f, f3);
9921
        	        	                          }
9922
26
        	        	                          matchcases.push_back(mc);
9923
9924
        	        	            }
9925
9926
9927
26
        	        	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3812);
9928
26
        	        	            if  (HASEXCEPTION())
9929
        	        	            {
9930
        	        	                goto ruletermNonVariableEx;
9931
26
        	        	            }
9932
9933
9934
        	        	        }
9935
26
        	        	        break;
9936
9937
13
        	        	    default:
9938
9939
13
        	        		if ( cnt45 >= 1 )
9940
        	        		{
9941
13
        	        		    goto loop45;
9942
        	        		}
9943
        	        		/* mismatchedSetEx()
9944
        	        		 */
9945
        	        		CONSTRUCTEX();
9946
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
9947
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
9948
9949
9950
        	        		goto ruletermNonVariableEx;
9951
        	        	}
9952
33
        	        	cnt45++;
9953
33
        	            }
9954
13
        	            loop45: ;	/* Jump to here if this rule does not match */
9955
        	        }
9956
9957
13
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3825);
9958
13
        	        if  (HASEXCEPTION())
9959
        	        {
9960
        	            goto ruletermNonVariableEx;
9961
        	        }
9962
9963
9964
13
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3827);
9965
13
        	        if  (HASEXCEPTION())
9966
        	        {
9967
        	            goto ruletermNonVariableEx;
9968
        	        }
9969
9970
9971
        	        {
9972
9973
        	                  //now, make the match
9974
13
        	                  if (matchcases.empty())
9975
        	                  {
9976
        	                    PARSER_STATE->parseError("Must have at least one case in match.");
9977
        	                  }
9978
26
        	                  std::vector<api::Term> mchildren;
9979
13
        	                  mchildren.push_back(expr);
9980
13
        	                  mchildren.insert(mchildren.end(), matchcases.begin(), matchcases.end());
9981
13
        	                  expr = MK_TERM(api::MATCH, mchildren);
9982
9983
13
        	        }
9984
9985
9986
        	    }
9987
13
        	    break;
9988
8129
        	case 6:
9989
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1483:5: LPAREN_TOK ATTRIBUTE_TOK term[expr, f2] ( attribute[expr, attexpr] )+ RPAREN_TOK
9990
        	    {
9991
8129
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3843);
9992
8129
        	        if  (HASEXCEPTION())
9993
        	        {
9994
        	            goto ruletermNonVariableEx;
9995
        	        }
9996
9997
9998
8129
        	         MATCHT(ATTRIBUTE_TOK, &FOLLOW_ATTRIBUTE_TOK_in_termNonVariable3845);
9999
8129
        	        if  (HASEXCEPTION())
10000
        	        {
10001
        	            goto ruletermNonVariableEx;
10002
        	        }
10003
10004
10005
8129
        	        FOLLOWPUSH(FOLLOW_term_in_termNonVariable3847);
10006
8129
        	        term(ctx, expr, f2);
10007
10008
8129
        	        FOLLOWPOP();
10009
8129
        	        if  (HASEXCEPTION())
10010
        	        {
10011
        	            goto ruletermNonVariableEx;
10012
        	        }
10013
10014
10015
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1484:5: ( attribute[expr, attexpr] )+
10016
        	        {
10017
8129
        	            int cnt46=0;
10018
10019
        	            for (;;)
10020
        	            {
10021
16618
        	                int alt46=2;
10022
16618
        	        	switch ( LA(1) )
10023
        	        	{
10024
8490
        	        	case ATTRIBUTE_INST_ADD_TO_POOL_TOK:
10025
        	        	case ATTRIBUTE_INST_LEVEL:
10026
        	        	case ATTRIBUTE_NAMED_TOK:
10027
        	        	case ATTRIBUTE_NO_PATTERN_TOK:
10028
        	        	case ATTRIBUTE_PATTERN_TOK:
10029
        	        	case ATTRIBUTE_POOL_TOK:
10030
        	        	case ATTRIBUTE_QUANTIFIER_ID_TOK:
10031
        	        	case ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK:
10032
        	        	case KEYWORD:
10033
        	        		{
10034
8490
        	        			alt46=1;
10035
        	        		}
10036
8490
        	        	    break;
10037
10038
        	        	}
10039
10040
16618
        	        	switch (alt46)
10041
        	        	{
10042
8490
        	        	    case 1:
10043
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1484:7: attribute[expr, attexpr]
10044
        	        	        {
10045
8490
        	        	            FOLLOWPUSH(FOLLOW_attribute_in_termNonVariable3856);
10046
8490
        	        	            attribute(ctx, expr, attexpr);
10047
10048
8489
        	        	            FOLLOWPOP();
10049
8489
        	        	            if  (HASEXCEPTION())
10050
        	        	            {
10051
        	        	                goto ruletermNonVariableEx;
10052
        	        	            }
10053
10054
10055
        	        	            {
10056
8489
        	        	                 if( ! attexpr.isNull()) {
10057
3803
        	        	                          patexprs.push_back( attexpr );
10058
        	        	                        }
10059
10060
        	        	            }
10061
10062
10063
        	        	        }
10064
8489
        	        	        break;
10065
10066
8128
        	        	    default:
10067
10068
8128
        	        		if ( cnt46 >= 1 )
10069
        	        		{
10070
8128
        	        		    goto loop46;
10071
        	        		}
10072
        	        		/* mismatchedSetEx()
10073
        	        		 */
10074
        	        		CONSTRUCTEX();
10075
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
10076
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
10077
10078
10079
        	        		goto ruletermNonVariableEx;
10080
        	        	}
10081
8489
        	        	cnt46++;
10082
8489
        	            }
10083
8128
        	            loop46: ;	/* Jump to here if this rule does not match */
10084
        	        }
10085
10086
8128
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3874);
10087
8128
        	        if  (HASEXCEPTION())
10088
        	        {
10089
        	            goto ruletermNonVariableEx;
10090
        	        }
10091
10092
10093
        	        {
10094
10095
8128
        	                  if(! patexprs.empty()) {
10096
3442
        	                    if( !f2.isNull() && f2.getKind()==api::INST_PATTERN_LIST ){
10097
18
        	                      for( size_t i=0; i<f2.getNumChildren(); i++ ){
10098
9
        	                        patexprs.push_back( f2[i] );
10099
        	                      }
10100
        	                    }
10101
3442
        	                    expr2 = MK_TERM(api::INST_PATTERN_LIST, patexprs);
10102
        	                  } else {
10103
4686
        	                    expr2 = f2;
10104
        	                  }
10105
10106
        	        }
10107
10108
10109
        	    }
10110
8128
        	    break;
10111
134
        	case 7:
10112
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1503:5: LPAREN_TOK HO_LAMBDA_TOK boundVarList[bvl] term[f, f2] RPAREN_TOK
10113
        	    {
10114
134
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3892);
10115
134
        	        if  (HASEXCEPTION())
10116
        	        {
10117
        	            goto ruletermNonVariableEx;
10118
        	        }
10119
10120
10121
134
        	         MATCHT(HO_LAMBDA_TOK, &FOLLOW_HO_LAMBDA_TOK_in_termNonVariable3894);
10122
134
        	        if  (HASEXCEPTION())
10123
        	        {
10124
        	            goto ruletermNonVariableEx;
10125
        	        }
10126
10127
10128
        	        {
10129
134
        	             PARSER_STATE->pushScope();
10130
        	        }
10131
10132
10133
134
        	        FOLLOWPUSH(FOLLOW_boundVarList_in_termNonVariable3906);
10134
134
        	        boundVarList(ctx, bvl);
10135
10136
134
        	        FOLLOWPOP();
10137
134
        	        if  (HASEXCEPTION())
10138
        	        {
10139
        	            goto ruletermNonVariableEx;
10140
        	        }
10141
10142
10143
134
        	        FOLLOWPUSH(FOLLOW_term_in_termNonVariable3913);
10144
134
        	        term(ctx, f, f2);
10145
10146
134
        	        FOLLOWPOP();
10147
134
        	        if  (HASEXCEPTION())
10148
        	        {
10149
        	            goto ruletermNonVariableEx;
10150
        	        }
10151
10152
10153
134
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3916);
10154
134
        	        if  (HASEXCEPTION())
10155
        	        {
10156
        	            goto ruletermNonVariableEx;
10157
        	        }
10158
10159
10160
        	        {
10161
10162
134
        	                  args.push_back(bvl);
10163
134
        	                  args.push_back(f);
10164
134
        	                  PARSER_STATE->popScope();
10165
134
        	                  expr = MK_TERM(api::LAMBDA, args);
10166
10167
        	        }
10168
10169
10170
        	    }
10171
134
        	    break;
10172
50
        	case 8:
10173
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1513:5: LPAREN_TOK TUPLE_CONST_TOK termList[args,expr] RPAREN_TOK
10174
        	    {
10175
50
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3928);
10176
50
        	        if  (HASEXCEPTION())
10177
        	        {
10178
        	            goto ruletermNonVariableEx;
10179
        	        }
10180
10181
10182
50
        	         MATCHT(TUPLE_CONST_TOK, &FOLLOW_TUPLE_CONST_TOK_in_termNonVariable3930);
10183
50
        	        if  (HASEXCEPTION())
10184
        	        {
10185
        	            goto ruletermNonVariableEx;
10186
        	        }
10187
10188
10189
50
        	        FOLLOWPUSH(FOLLOW_termList_in_termNonVariable3932);
10190
50
        	        termList(ctx, args, expr);
10191
10192
50
        	        FOLLOWPOP();
10193
50
        	        if  (HASEXCEPTION())
10194
        	        {
10195
        	            goto ruletermNonVariableEx;
10196
        	        }
10197
10198
10199
50
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3935);
10200
50
        	        if  (HASEXCEPTION())
10201
        	        {
10202
        	            goto ruletermNonVariableEx;
10203
        	        }
10204
10205
10206
        	        {
10207
10208
100
        	                std::vector<api::Sort> sorts;
10209
100
        	                std::vector<api::Term> terms;
10210
156
        	                for (const api::Term& arg : args)
10211
        	                {
10212
106
        	                  sorts.emplace_back(arg.getSort());
10213
106
        	                  terms.emplace_back(arg);
10214
        	                }
10215
50
        	                expr = SOLVER->mkTuple(sorts, terms);
10216
10217
50
        	        }
10218
10219
10220
        	    }
10221
50
        	    break;
10222
2
        	case 9:
10223
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1524:5: LPAREN_TOK TUPLE_PROJECT_TOK term[expr,expr2] RPAREN_TOK
10224
        	    {
10225
2
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termNonVariable3945);
10226
2
        	        if  (HASEXCEPTION())
10227
        	        {
10228
        	            goto ruletermNonVariableEx;
10229
        	        }
10230
10231
10232
2
        	         MATCHT(TUPLE_PROJECT_TOK, &FOLLOW_TUPLE_PROJECT_TOK_in_termNonVariable3947);
10233
2
        	        if  (HASEXCEPTION())
10234
        	        {
10235
        	            goto ruletermNonVariableEx;
10236
        	        }
10237
10238
10239
2
        	        FOLLOWPUSH(FOLLOW_term_in_termNonVariable3949);
10240
2
        	        term(ctx, expr, expr2);
10241
10242
2
        	        FOLLOWPOP();
10243
2
        	        if  (HASEXCEPTION())
10244
        	        {
10245
        	            goto ruletermNonVariableEx;
10246
        	        }
10247
10248
10249
2
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termNonVariable3952);
10250
2
        	        if  (HASEXCEPTION())
10251
        	        {
10252
        	            goto ruletermNonVariableEx;
10253
        	        }
10254
10255
10256
        	        {
10257
10258
4
        	                std::vector<uint32_t> indices;
10259
4
        	                api::Op op = SOLVER->mkOp(api::TUPLE_PROJECT, indices);
10260
2
        	                expr = SOLVER->mkTerm(op, expr);
10261
10262
2
        	        }
10263
10264
10265
        	    }
10266
2
        	    break;
10267
492545
        	case 10:
10268
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1531:5: termAtomic[atomTerm]
10269
        	    {
10270
492545
        	        FOLLOWPUSH(FOLLOW_termAtomic_in_termNonVariable3968);
10271
492545
        	        termAtomic(ctx, atomTerm);
10272
10273
492545
        	        FOLLOWPOP();
10274
492545
        	        if  (HASEXCEPTION())
10275
        	        {
10276
        	            goto ruletermNonVariableEx;
10277
        	        }
10278
10279
10280
        	        {
10281
492545
        	             expr = atomTerm;
10282
        	        }
10283
10284
10285
        	    }
10286
492545
        	    break;
10287
10288
            }
10289
        }
10290
    }
10291
10292
    // This is where rules clean up and exit
10293
    //
10294
3963515
    goto ruletermNonVariableEx; /* Prevent compiler warnings */
10295
3963517
    ruletermNonVariableEx: ;
10296
10297
3963517
            if (HASEXCEPTION())
10298
            {
10299
2
                PREPORTERROR();
10300
                PRECOVER();
10301
            }
10302
7927030
    return ;
10303
}
10304
/* $ANTLR end termNonVariable */
10305
10306
/**
10307
 * $ANTLR start qualIdentifier
10308
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1585:1: qualIdentifier[cvc5::ParseOp& p] : ( identifier[p] | LPAREN_TOK AS_TOK ( CONST_TOK sortSymbol[type, CHECK_DECLARED] | identifier[p] sortSymbol[type, CHECK_DECLARED] ) RPAREN_TOK );
10309
 */
10310
static void
10311
6914767
qualIdentifier(pSmt2Parser ctx, cvc5::ParseOp& p)
10312
{
10313
    /* Initialize rule variables
10314
     */
10315
10316
10317
      api::Kind k;
10318
13829534
      std::string baseName;
10319
13829534
      cvc5::api::Term f;
10320
13829534
      cvc5::api::Sort type;
10321
10322
    {
10323
        {
10324
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1592:3: ( identifier[p] | LPAREN_TOK AS_TOK ( CONST_TOK sortSymbol[type, CHECK_DECLARED] | identifier[p] sortSymbol[type, CHECK_DECLARED] ) RPAREN_TOK )
10325
10326
            ANTLR3_UINT32 alt49;
10327
10328
6914767
            alt49=2;
10329
10330
6914767
            switch ( LA(1) )
10331
            {
10332
6828814
            case QUOTED_SYMBOL:
10333
            case SIMPLE_SYMBOL:
10334
            case UNTERMINATED_QUOTED_SYMBOL:
10335
            	{
10336
6828814
            		alt49=1;
10337
            	}
10338
6828814
                break;
10339
85953
            case LPAREN_TOK:
10340
            	{
10341
85953
            		switch ( LA(2) )
10342
            		{
10343
85644
            		case INDEX_TOK:
10344
            			{
10345
85644
            				alt49=1;
10346
            			}
10347
85644
            		    break;
10348
309
            		case AS_TOK:
10349
            			{
10350
309
            				alt49=2;
10351
            			}
10352
309
            		    break;
10353
10354
            		default:
10355
            		    CONSTRUCTEX();
10356
            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
10357
            		    EXCEPTION->message      = (void *)"";
10358
            		    EXCEPTION->decisionNum  = 49;
10359
            		    EXCEPTION->state        = 4;
10360
10361
10362
            		    goto rulequalIdentifierEx;
10363
10364
            		}
10365
10366
            	}
10367
85953
                break;
10368
10369
            default:
10370
                CONSTRUCTEX();
10371
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
10372
                EXCEPTION->message      = (void *)"";
10373
                EXCEPTION->decisionNum  = 49;
10374
                EXCEPTION->state        = 0;
10375
10376
10377
                goto rulequalIdentifierEx;
10378
10379
            }
10380
10381
6914767
            switch (alt49)
10382
            {
10383
6914458
        	case 1:
10384
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1592:3: identifier[p]
10385
        	    {
10386
6914458
        	        FOLLOWPUSH(FOLLOW_identifier_in_qualIdentifier3991);
10387
6914458
        	        identifier(ctx, p);
10388
10389
6914457
        	        FOLLOWPOP();
10390
6914457
        	        if  (HASEXCEPTION())
10391
        	        {
10392
        	            goto rulequalIdentifierEx;
10393
        	        }
10394
10395
10396
        	    }
10397
6914457
        	    break;
10398
309
        	case 2:
10399
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1593:5: LPAREN_TOK AS_TOK ( CONST_TOK sortSymbol[type, CHECK_DECLARED] | identifier[p] sortSymbol[type, CHECK_DECLARED] ) RPAREN_TOK
10400
        	    {
10401
309
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_qualIdentifier3998);
10402
309
        	        if  (HASEXCEPTION())
10403
        	        {
10404
        	            goto rulequalIdentifierEx;
10405
        	        }
10406
10407
10408
309
        	         MATCHT(AS_TOK, &FOLLOW_AS_TOK_in_qualIdentifier4000);
10409
309
        	        if  (HASEXCEPTION())
10410
        	        {
10411
        	            goto rulequalIdentifierEx;
10412
        	        }
10413
10414
10415
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1594:5: ( CONST_TOK sortSymbol[type, CHECK_DECLARED] | identifier[p] sortSymbol[type, CHECK_DECLARED] )
10416
        	        {
10417
309
        	            int alt48=2;
10418
309
        	            switch ( LA(1) )
10419
        	            {
10420
23
        	            case CONST_TOK:
10421
        	            	{
10422
23
        	            		alt48=1;
10423
        	            	}
10424
23
        	                break;
10425
286
        	            case LPAREN_TOK:
10426
        	            case QUOTED_SYMBOL:
10427
        	            case SIMPLE_SYMBOL:
10428
        	            case UNTERMINATED_QUOTED_SYMBOL:
10429
        	            	{
10430
286
        	            		alt48=2;
10431
        	            	}
10432
286
        	                break;
10433
10434
        	            default:
10435
        	                CONSTRUCTEX();
10436
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
10437
        	                EXCEPTION->message      = (void *)"";
10438
        	                EXCEPTION->decisionNum  = 48;
10439
        	                EXCEPTION->state        = 0;
10440
10441
10442
        	                goto rulequalIdentifierEx;
10443
10444
        	            }
10445
10446
309
        	            switch (alt48)
10447
        	            {
10448
23
        	        	case 1:
10449
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1594:7: CONST_TOK sortSymbol[type, CHECK_DECLARED]
10450
        	        	    {
10451
23
        	        	         MATCHT(CONST_TOK, &FOLLOW_CONST_TOK_in_qualIdentifier4008);
10452
23
        	        	        if  (HASEXCEPTION())
10453
        	        	        {
10454
        	        	            goto rulequalIdentifierEx;
10455
        	        	        }
10456
10457
10458
23
        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_qualIdentifier4010);
10459
23
        	        	        sortSymbol(ctx, type, CHECK_DECLARED);
10460
10461
23
        	        	        FOLLOWPOP();
10462
23
        	        	        if  (HASEXCEPTION())
10463
        	        	        {
10464
        	        	            goto rulequalIdentifierEx;
10465
        	        	        }
10466
10467
10468
        	        	        {
10469
10470
23
        	        	                    p.d_kind = api::CONST_ARRAY;
10471
23
        	        	                    PARSER_STATE->parseOpApplyTypeAscription(p, type);
10472
10473
        	        	        }
10474
10475
10476
        	        	    }
10477
23
        	        	    break;
10478
286
        	        	case 2:
10479
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1599:7: identifier[p] sortSymbol[type, CHECK_DECLARED]
10480
        	        	    {
10481
286
        	        	        FOLLOWPUSH(FOLLOW_identifier_in_qualIdentifier4027);
10482
286
        	        	        identifier(ctx, p);
10483
10484
286
        	        	        FOLLOWPOP();
10485
286
        	        	        if  (HASEXCEPTION())
10486
        	        	        {
10487
        	        	            goto rulequalIdentifierEx;
10488
        	        	        }
10489
10490
10491
286
        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_qualIdentifier4036);
10492
286
        	        	        sortSymbol(ctx, type, CHECK_DECLARED);
10493
10494
286
        	        	        FOLLOWPOP();
10495
286
        	        	        if  (HASEXCEPTION())
10496
        	        	        {
10497
        	        	            goto rulequalIdentifierEx;
10498
        	        	        }
10499
10500
10501
        	        	        {
10502
10503
286
        	        	                    PARSER_STATE->parseOpApplyTypeAscription(p, type);
10504
10505
        	        	        }
10506
10507
10508
        	        	    }
10509
286
        	        	    break;
10510
10511
        	            }
10512
        	        }
10513
10514
309
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_qualIdentifier4057);
10515
309
        	        if  (HASEXCEPTION())
10516
        	        {
10517
        	            goto rulequalIdentifierEx;
10518
309
        	        }
10519
10520
10521
        	    }
10522
309
        	    break;
10523
10524
            }
10525
        }
10526
    }
10527
10528
    // This is where rules clean up and exit
10529
    //
10530
6914766
    goto rulequalIdentifierEx; /* Prevent compiler warnings */
10531
6914766
    rulequalIdentifierEx: ;
10532
10533
6914766
            if (HASEXCEPTION())
10534
            {
10535
                PREPORTERROR();
10536
                PRECOVER();
10537
            }
10538
13829532
    return ;
10539
}
10540
/* $ANTLR end qualIdentifier */
10541
10542
/**
10543
 * $ANTLR start identifier
10544
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1616:1: identifier[cvc5::ParseOp& p] : ( functionName[p.d_name, CHECK_NONE] | LPAREN_TOK INDEX_TOK ( TESTER_TOK term[f, f2] | UPDATE_TOK term[f, f2] | TUPLE_SEL_TOK m= INTEGER_LITERAL | TUPLE_PROJECT_TOK nonemptyNumeralList[numerals] |sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals] ) RPAREN_TOK );
10545
 */
10546
static void
10547
6914744
identifier(pSmt2Parser ctx, cvc5::ParseOp& p)
10548
{
10549
    pANTLR3_COMMON_TOKEN    m;
10550
    pANTLR3_COMMON_TOKEN    sym;
10551
10552
    /* Initialize rule variables
10553
     */
10554
10555
10556
13829488
      cvc5::api::Term f;
10557
13829488
      cvc5::api::Term f2;
10558
13829488
      std::vector<uint64_t> numerals;
10559
10560
6914744
    m       = NULL;
10561
6914744
    sym       = NULL;
10562
10563
    {
10564
        {
10565
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1622:3: ( functionName[p.d_name, CHECK_NONE] | LPAREN_TOK INDEX_TOK ( TESTER_TOK term[f, f2] | UPDATE_TOK term[f, f2] | TUPLE_SEL_TOK m= INTEGER_LITERAL | TUPLE_PROJECT_TOK nonemptyNumeralList[numerals] |sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals] ) RPAREN_TOK )
10566
10567
            ANTLR3_UINT32 alt51;
10568
10569
6914744
            alt51=2;
10570
10571
6914744
            switch ( LA(1) )
10572
            {
10573
6829100
            case QUOTED_SYMBOL:
10574
            case SIMPLE_SYMBOL:
10575
            case UNTERMINATED_QUOTED_SYMBOL:
10576
            	{
10577
6829100
            		alt51=1;
10578
            	}
10579
6829100
                break;
10580
85644
            case LPAREN_TOK:
10581
            	{
10582
85644
            		alt51=2;
10583
            	}
10584
85644
                break;
10585
10586
            default:
10587
                CONSTRUCTEX();
10588
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
10589
                EXCEPTION->message      = (void *)"";
10590
                EXCEPTION->decisionNum  = 51;
10591
                EXCEPTION->state        = 0;
10592
10593
10594
                goto ruleidentifierEx;
10595
10596
            }
10597
10598
6914744
            switch (alt51)
10599
            {
10600
6829100
        	case 1:
10601
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1622:3: functionName[p.d_name, CHECK_NONE]
10602
        	    {
10603
6829100
        	        FOLLOWPUSH(FOLLOW_functionName_in_identifier4076);
10604
6829100
        	        functionName(ctx, p.d_name, CHECK_NONE);
10605
10606
6829100
        	        FOLLOWPOP();
10607
6829100
        	        if  (HASEXCEPTION())
10608
        	        {
10609
        	            goto ruleidentifierEx;
10610
        	        }
10611
10612
10613
        	    }
10614
6829100
        	    break;
10615
85644
        	case 2:
10616
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1626:5: LPAREN_TOK INDEX_TOK ( TESTER_TOK term[f, f2] | UPDATE_TOK term[f, f2] | TUPLE_SEL_TOK m= INTEGER_LITERAL | TUPLE_PROJECT_TOK nonemptyNumeralList[numerals] |sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals] ) RPAREN_TOK
10617
        	    {
10618
85644
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_identifier4088);
10619
85644
        	        if  (HASEXCEPTION())
10620
        	        {
10621
        	            goto ruleidentifierEx;
10622
        	        }
10623
10624
10625
85644
        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_identifier4090);
10626
85644
        	        if  (HASEXCEPTION())
10627
        	        {
10628
        	            goto ruleidentifierEx;
10629
        	        }
10630
10631
10632
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1627:5: ( TESTER_TOK term[f, f2] | UPDATE_TOK term[f, f2] | TUPLE_SEL_TOK m= INTEGER_LITERAL | TUPLE_PROJECT_TOK nonemptyNumeralList[numerals] |sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals] )
10633
        	        {
10634
85644
        	            int alt50=5;
10635
85644
        	            switch ( LA(1) )
10636
        	            {
10637
1410
        	            case TESTER_TOK:
10638
        	            	{
10639
1410
        	            		alt50=1;
10640
        	            	}
10641
1410
        	                break;
10642
8
        	            case UPDATE_TOK:
10643
        	            	{
10644
8
        	            		alt50=2;
10645
        	            	}
10646
8
        	                break;
10647
4
        	            case TUPLE_SEL_TOK:
10648
        	            	{
10649
4
        	            		alt50=3;
10650
        	            	}
10651
4
        	                break;
10652
2
        	            case TUPLE_PROJECT_TOK:
10653
        	            	{
10654
2
        	            		alt50=4;
10655
        	            	}
10656
2
        	                break;
10657
84220
        	            case SIMPLE_SYMBOL:
10658
        	            	{
10659
84220
        	            		alt50=5;
10660
        	            	}
10661
84220
        	                break;
10662
10663
        	            default:
10664
        	                CONSTRUCTEX();
10665
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
10666
        	                EXCEPTION->message      = (void *)"";
10667
        	                EXCEPTION->decisionNum  = 50;
10668
        	                EXCEPTION->state        = 0;
10669
10670
10671
        	                goto ruleidentifierEx;
10672
10673
        	            }
10674
10675
85644
        	            switch (alt50)
10676
        	            {
10677
1410
        	        	case 1:
10678
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1627:7: TESTER_TOK term[f, f2]
10679
        	        	    {
10680
1410
        	        	         MATCHT(TESTER_TOK, &FOLLOW_TESTER_TOK_in_identifier4098);
10681
1410
        	        	        if  (HASEXCEPTION())
10682
        	        	        {
10683
        	        	            goto ruleidentifierEx;
10684
        	        	        }
10685
10686
10687
1410
        	        	        FOLLOWPUSH(FOLLOW_term_in_identifier4100);
10688
1410
        	        	        term(ctx, f, f2);
10689
10690
1410
        	        	        FOLLOWPOP();
10691
1410
        	        	        if  (HASEXCEPTION())
10692
        	        	        {
10693
        	        	            goto ruleidentifierEx;
10694
        	        	        }
10695
10696
10697
        	        	        {
10698
10699
1410
        	        	                    if (f.getKind() == api::APPLY_CONSTRUCTOR && f.getNumChildren() == 1)
10700
        	        	                    {
10701
        	        	                      // for nullary constructors, must get the operator
10702
392
        	        	                      f = f[0];
10703
        	        	                    }
10704
1410
        	        	                    if (!f.getSort().isConstructor())
10705
        	        	                    {
10706
        	        	                      PARSER_STATE->parseError(
10707
        	        	                          "Bad syntax for test (_ is X), X must be a constructor.");
10708
        	        	                    }
10709
        	        	                    // get the datatype that f belongs to
10710
2820
        	        	                    api::Sort sf = f.getSort().getConstructorCodomainSort();
10711
2820
        	        	                    api::Datatype d = sf.getDatatype();
10712
        	        	                    // lookup by name
10713
2820
        	        	                    api::DatatypeConstructor dc = d.getConstructor(f.toString());
10714
1410
        	        	                    p.d_expr = dc.getTesterTerm();
10715
10716
1410
        	        	        }
10717
10718
10719
        	        	    }
10720
1410
        	        	    break;
10721
8
        	        	case 2:
10722
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1646:7: UPDATE_TOK term[f, f2]
10723
        	        	    {
10724
8
        	        	         MATCHT(UPDATE_TOK, &FOLLOW_UPDATE_TOK_in_identifier4117);
10725
8
        	        	        if  (HASEXCEPTION())
10726
        	        	        {
10727
        	        	            goto ruleidentifierEx;
10728
        	        	        }
10729
10730
10731
8
        	        	        FOLLOWPUSH(FOLLOW_term_in_identifier4119);
10732
8
        	        	        term(ctx, f, f2);
10733
10734
8
        	        	        FOLLOWPOP();
10735
8
        	        	        if  (HASEXCEPTION())
10736
        	        	        {
10737
        	        	            goto ruleidentifierEx;
10738
        	        	        }
10739
10740
10741
        	        	        {
10742
10743
8
        	        	                    if (!f.getSort().isSelector())
10744
        	        	                    {
10745
        	        	                      PARSER_STATE->parseError(
10746
        	        	                          "Bad syntax for test (_ update X), X must be a selector.");
10747
        	        	                    }
10748
16
        	        	                    std::string sname = f.toString();
10749
        	        	                    // get the datatype that f belongs to
10750
16
        	        	                    api::Sort sf = f.getSort().getSelectorDomainSort();
10751
16
        	        	                    api::Datatype d = sf.getDatatype();
10752
        	        	                    // find the selector
10753
16
        	        	                    api::DatatypeSelector ds = d.getSelector(f.toString());
10754
        	        	                    // get the updater term
10755
8
        	        	                    p.d_expr = ds.getUpdaterTerm();
10756
10757
8
        	        	        }
10758
10759
10760
        	        	    }
10761
8
        	        	    break;
10762
4
        	        	case 3:
10763
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1662:7: TUPLE_SEL_TOK m= INTEGER_LITERAL
10764
        	        	    {
10765
4
        	        	         MATCHT(TUPLE_SEL_TOK, &FOLLOW_TUPLE_SEL_TOK_in_identifier4136);
10766
4
        	        	        if  (HASEXCEPTION())
10767
        	        	        {
10768
        	        	            goto ruleidentifierEx;
10769
        	        	        }
10770
10771
10772
4
        	        	        m = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_identifier4140);
10773
4
        	        	        if  (HASEXCEPTION())
10774
        	        	        {
10775
        	        	            goto ruleidentifierEx;
10776
        	        	        }
10777
10778
10779
        	        	        {
10780
10781
        	        	                    // we adopt a special syntax (_ tupSel n)
10782
4
        	        	                    p.d_kind = api::APPLY_SELECTOR;
10783
        	        	                    // put m in expr so that the caller can deal with this case
10784
4
        	        	                    p.d_expr = SOLVER->mkInteger(AntlrInput::tokenToUnsigned(m));
10785
10786
        	        	        }
10787
10788
10789
        	        	    }
10790
4
        	        	    break;
10791
2
        	        	case 4:
10792
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1669:7: TUPLE_PROJECT_TOK nonemptyNumeralList[numerals]
10793
        	        	    {
10794
2
        	        	         MATCHT(TUPLE_PROJECT_TOK, &FOLLOW_TUPLE_PROJECT_TOK_in_identifier4156);
10795
2
        	        	        if  (HASEXCEPTION())
10796
        	        	        {
10797
        	        	            goto ruleidentifierEx;
10798
        	        	        }
10799
10800
10801
2
        	        	        FOLLOWPUSH(FOLLOW_nonemptyNumeralList_in_identifier4158);
10802
2
        	        	        nonemptyNumeralList(ctx, numerals);
10803
10804
2
        	        	        FOLLOWPOP();
10805
2
        	        	        if  (HASEXCEPTION())
10806
        	        	        {
10807
        	        	            goto ruleidentifierEx;
10808
        	        	        }
10809
10810
10811
        	        	        {
10812
10813
        	        	                    // we adopt a special syntax (_ tuple_project i_1 ... i_n) where
10814
        	        	                    // i_1, ..., i_n are numerals
10815
2
        	        	                    p.d_kind = api::TUPLE_PROJECT;
10816
4
        	        	                    std::vector<uint32_t> indices(numerals.size());
10817
6
        	        	                    for(size_t i = 0; i < numerals.size(); ++i)
10818
        	        	                    {
10819
        	        	                      // convert uint64_t to uint32_t
10820
4
        	        	                      indices[i] = numerals[i];
10821
        	        	                    }
10822
2
        	        	                    p.d_op = SOLVER->mkOp(api::TUPLE_PROJECT, indices);
10823
10824
2
        	        	        }
10825
10826
10827
        	        	    }
10828
2
        	        	    break;
10829
84220
        	        	case 5:
10830
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1682:7: sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals]
10831
        	        	    {
10832
84220
        	        	        sym = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_identifier4177);
10833
84220
        	        	        if  (HASEXCEPTION())
10834
        	        	        {
10835
        	        	            goto ruleidentifierEx;
10836
        	        	        }
10837
10838
10839
84220
        	        	        FOLLOWPUSH(FOLLOW_nonemptyNumeralList_in_identifier4179);
10840
84220
        	        	        nonemptyNumeralList(ctx, numerals);
10841
10842
84220
        	        	        FOLLOWPOP();
10843
84220
        	        	        if  (HASEXCEPTION())
10844
        	        	        {
10845
        	        	            goto ruleidentifierEx;
10846
        	        	        }
10847
10848
10849
        	        	        {
10850
10851
84221
        	        	                    p.d_op = PARSER_STATE->mkIndexedOp(AntlrInput::tokenText(sym), numerals);
10852
10853
        	        	        }
10854
10855
10856
        	        	    }
10857
84219
        	        	    break;
10858
10859
        	            }
10860
        	        }
10861
10862
85643
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_identifier4200);
10863
85643
        	        if  (HASEXCEPTION())
10864
        	        {
10865
        	            goto ruleidentifierEx;
10866
85643
        	        }
10867
10868
10869
        	    }
10870
85643
        	    break;
10871
10872
            }
10873
        }
10874
    }
10875
10876
    // This is where rules clean up and exit
10877
    //
10878
6914743
    goto ruleidentifierEx; /* Prevent compiler warnings */
10879
6914743
    ruleidentifierEx: ;
10880
10881
6914743
            if (HASEXCEPTION())
10882
            {
10883
                PREPORTERROR();
10884
                PRECOVER();
10885
            }
10886
13829486
    return ;
10887
}
10888
/* $ANTLR end identifier */
10889
10890
/**
10891
 * $ANTLR start termAtomic
10892
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1694:1: termAtomic[cvc5::api::Term& atomTerm] : ( INTEGER_LITERAL | DECIMAL_LITERAL | LPAREN_TOK INDEX_TOK ( EMP_TOK sortSymbol[type,CHECK_DECLARED] sortSymbol[type2,CHECK_DECLARED] | CHAR_TOK HEX_LITERAL |sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals] ) RPAREN_TOK | HEX_LITERAL | BINARY_LITERAL | str[s,false] | TUPLE_CONST_TOK );
10893
 */
10894
static void
10895
492545
termAtomic(pSmt2Parser ctx, cvc5::api::Term& atomTerm)
10896
{
10897
    pANTLR3_COMMON_TOKEN    sym;
10898
    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL11;
10899
    pANTLR3_COMMON_TOKEN    DECIMAL_LITERAL12;
10900
    pANTLR3_COMMON_TOKEN    HEX_LITERAL13;
10901
    pANTLR3_COMMON_TOKEN    HEX_LITERAL14;
10902
    pANTLR3_COMMON_TOKEN    BINARY_LITERAL15;
10903
10904
    /* Initialize rule variables
10905
     */
10906
10907
10908
985090
      cvc5::api::Sort type;
10909
985090
      cvc5::api::Sort type2;
10910
985090
      std::string s;
10911
985090
      std::vector<uint64_t> numerals;
10912
10913
492545
    sym       = NULL;
10914
492545
    INTEGER_LITERAL11       = NULL;
10915
492545
    DECIMAL_LITERAL12       = NULL;
10916
492545
    HEX_LITERAL13       = NULL;
10917
492545
    HEX_LITERAL14       = NULL;
10918
492545
    BINARY_LITERAL15       = NULL;
10919
10920
    {
10921
        {
10922
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1702:3: ( INTEGER_LITERAL | DECIMAL_LITERAL | LPAREN_TOK INDEX_TOK ( EMP_TOK sortSymbol[type,CHECK_DECLARED] sortSymbol[type2,CHECK_DECLARED] | CHAR_TOK HEX_LITERAL |sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals] ) RPAREN_TOK | HEX_LITERAL | BINARY_LITERAL | str[s,false] | TUPLE_CONST_TOK )
10923
10924
            ANTLR3_UINT32 alt53;
10925
10926
492545
            alt53=7;
10927
10928
492545
            switch ( LA(1) )
10929
            {
10930
360209
            case INTEGER_LITERAL:
10931
            	{
10932
360209
            		alt53=1;
10933
            	}
10934
360209
                break;
10935
22221
            case DECIMAL_LITERAL:
10936
            	{
10937
22221
            		alt53=2;
10938
            	}
10939
22221
                break;
10940
95004
            case LPAREN_TOK:
10941
            	{
10942
95004
            		alt53=3;
10943
            	}
10944
95004
                break;
10945
5575
            case HEX_LITERAL:
10946
            	{
10947
5575
            		alt53=4;
10948
            	}
10949
5575
                break;
10950
1011
            case BINARY_LITERAL:
10951
            	{
10952
1011
            		alt53=5;
10953
            	}
10954
1011
                break;
10955
8520
            case STRING_LITERAL:
10956
            	{
10957
8520
            		alt53=6;
10958
            	}
10959
8520
                break;
10960
5
            case TUPLE_CONST_TOK:
10961
            	{
10962
5
            		alt53=7;
10963
            	}
10964
5
                break;
10965
10966
            default:
10967
                CONSTRUCTEX();
10968
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
10969
                EXCEPTION->message      = (void *)"";
10970
                EXCEPTION->decisionNum  = 53;
10971
                EXCEPTION->state        = 0;
10972
10973
10974
                goto ruletermAtomicEx;
10975
10976
            }
10977
10978
492545
            switch (alt53)
10979
            {
10980
360209
        	case 1:
10981
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1702:5: INTEGER_LITERAL
10982
        	    {
10983
360209
        	        INTEGER_LITERAL11 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_termAtomic4227);
10984
360209
        	        if  (HASEXCEPTION())
10985
        	        {
10986
        	            goto ruletermAtomicEx;
10987
        	        }
10988
10989
10990
        	        {
10991
10992
720418
        	                  std::string intStr = AntlrInput::tokenText(INTEGER_LITERAL11);
10993
360209
        	                  atomTerm = SOLVER->mkInteger(intStr);
10994
10995
360209
        	        }
10996
10997
10998
        	    }
10999
360209
        	    break;
11000
22221
        	case 2:
11001
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1707:5: DECIMAL_LITERAL
11002
        	    {
11003
22221
        	        DECIMAL_LITERAL12 = (pANTLR3_COMMON_TOKEN) MATCHT(DECIMAL_LITERAL, &FOLLOW_DECIMAL_LITERAL_in_termAtomic4239);
11004
22221
        	        if  (HASEXCEPTION())
11005
        	        {
11006
        	            goto ruletermAtomicEx;
11007
        	        }
11008
11009
11010
        	        {
11011
11012
44442
        	                  std::string realStr = AntlrInput::tokenText(DECIMAL_LITERAL12);
11013
44442
        	                  atomTerm = SOLVER->ensureTermSort(SOLVER->mkReal(realStr),
11014
44442
        	                                                    SOLVER->getRealSort());
11015
11016
22221
        	        }
11017
11018
11019
        	    }
11020
22221
        	    break;
11021
95004
        	case 3:
11022
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1716:5: LPAREN_TOK INDEX_TOK ( EMP_TOK sortSymbol[type,CHECK_DECLARED] sortSymbol[type2,CHECK_DECLARED] | CHAR_TOK HEX_LITERAL |sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals] ) RPAREN_TOK
11023
        	    {
11024
95004
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_termAtomic4258);
11025
95004
        	        if  (HASEXCEPTION())
11026
        	        {
11027
        	            goto ruletermAtomicEx;
11028
        	        }
11029
11030
11031
95004
        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_termAtomic4260);
11032
95004
        	        if  (HASEXCEPTION())
11033
        	        {
11034
        	            goto ruletermAtomicEx;
11035
        	        }
11036
11037
11038
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1717:5: ( EMP_TOK sortSymbol[type,CHECK_DECLARED] sortSymbol[type2,CHECK_DECLARED] | CHAR_TOK HEX_LITERAL |sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals] )
11039
        	        {
11040
95004
        	            int alt52=3;
11041
95004
        	            switch ( LA(1) )
11042
        	            {
11043
49
        	            case EMP_TOK:
11044
        	            	{
11045
49
        	            		alt52=1;
11046
        	            	}
11047
49
        	                break;
11048
8
        	            case CHAR_TOK:
11049
        	            	{
11050
8
        	            		alt52=2;
11051
        	            	}
11052
8
        	                break;
11053
94947
        	            case SIMPLE_SYMBOL:
11054
        	            	{
11055
94947
        	            		alt52=3;
11056
        	            	}
11057
94947
        	                break;
11058
11059
        	            default:
11060
        	                CONSTRUCTEX();
11061
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
11062
        	                EXCEPTION->message      = (void *)"";
11063
        	                EXCEPTION->decisionNum  = 52;
11064
        	                EXCEPTION->state        = 0;
11065
11066
11067
        	                goto ruletermAtomicEx;
11068
11069
        	            }
11070
11071
95004
        	            switch (alt52)
11072
        	            {
11073
49
        	        	case 1:
11074
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1717:7: EMP_TOK sortSymbol[type,CHECK_DECLARED] sortSymbol[type2,CHECK_DECLARED]
11075
        	        	    {
11076
49
        	        	         MATCHT(EMP_TOK, &FOLLOW_EMP_TOK_in_termAtomic4268);
11077
49
        	        	        if  (HASEXCEPTION())
11078
        	        	        {
11079
        	        	            goto ruletermAtomicEx;
11080
        	        	        }
11081
11082
11083
49
        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_termAtomic4276);
11084
49
        	        	        sortSymbol(ctx, type, CHECK_DECLARED);
11085
11086
49
        	        	        FOLLOWPOP();
11087
49
        	        	        if  (HASEXCEPTION())
11088
        	        	        {
11089
        	        	            goto ruletermAtomicEx;
11090
        	        	        }
11091
11092
11093
49
        	        	        FOLLOWPUSH(FOLLOW_sortSymbol_in_termAtomic4285);
11094
49
        	        	        sortSymbol(ctx, type2, CHECK_DECLARED);
11095
11096
49
        	        	        FOLLOWPOP();
11097
49
        	        	        if  (HASEXCEPTION())
11098
        	        	        {
11099
        	        	            goto ruletermAtomicEx;
11100
        	        	        }
11101
11102
11103
        	        	        {
11104
11105
        	        	                    // Empty heap constant in seperation logic
11106
98
        	        	                    api::Term v1 = SOLVER->mkConst(api::Sort(type), "_emp1");
11107
98
        	        	                    api::Term v2 = SOLVER->mkConst(api::Sort(type2), "_emp2");
11108
49
        	        	                    atomTerm = SOLVER->mkTerm(api::SEP_EMP, v1, v2);
11109
11110
49
        	        	        }
11111
11112
11113
        	        	    }
11114
49
        	        	    break;
11115
8
        	        	case 2:
11116
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1726:7: CHAR_TOK HEX_LITERAL
11117
        	        	    {
11118
8
        	        	         MATCHT(CHAR_TOK, &FOLLOW_CHAR_TOK_in_termAtomic4302);
11119
8
        	        	        if  (HASEXCEPTION())
11120
        	        	        {
11121
        	        	            goto ruletermAtomicEx;
11122
        	        	        }
11123
11124
11125
8
        	        	        HEX_LITERAL13 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_termAtomic4304);
11126
8
        	        	        if  (HASEXCEPTION())
11127
        	        	        {
11128
        	        	            goto ruletermAtomicEx;
11129
        	        	        }
11130
11131
11132
        	        	        {
11133
11134
16
        	        	                    std::string hexStr = AntlrInput::tokenTextSubstr(HEX_LITERAL13, 2);
11135
8
        	        	                    atomTerm = PARSER_STATE->mkCharConstant(hexStr);
11136
11137
8
        	        	        }
11138
11139
11140
        	        	    }
11141
8
        	        	    break;
11142
94947
        	        	case 3:
11143
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1731:7: sym= SIMPLE_SYMBOL nonemptyNumeralList[numerals]
11144
        	        	    {
11145
94947
        	        	        sym = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_termAtomic4323);
11146
94947
        	        	        if  (HASEXCEPTION())
11147
        	        	        {
11148
        	        	            goto ruletermAtomicEx;
11149
        	        	        }
11150
11151
11152
94947
        	        	        FOLLOWPUSH(FOLLOW_nonemptyNumeralList_in_termAtomic4325);
11153
94947
        	        	        nonemptyNumeralList(ctx, numerals);
11154
11155
94947
        	        	        FOLLOWPOP();
11156
94947
        	        	        if  (HASEXCEPTION())
11157
        	        	        {
11158
        	        	            goto ruletermAtomicEx;
11159
        	        	        }
11160
11161
11162
        	        	        {
11163
11164
94947
        	        	                    atomTerm =
11165
189894
        	        	                      PARSER_STATE->mkIndexedConstant(AntlrInput::tokenText(sym),
11166
        	        	                                                      numerals);
11167
11168
        	        	        }
11169
11170
11171
        	        	    }
11172
94947
        	        	    break;
11173
11174
        	            }
11175
        	        }
11176
11177
95004
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_termAtomic4346);
11178
95004
        	        if  (HASEXCEPTION())
11179
        	        {
11180
        	            goto ruletermAtomicEx;
11181
95004
        	        }
11182
11183
11184
        	    }
11185
95004
        	    break;
11186
5575
        	case 4:
11187
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1741:5: HEX_LITERAL
11188
        	    {
11189
5575
        	        HEX_LITERAL14 = (pANTLR3_COMMON_TOKEN) MATCHT(HEX_LITERAL, &FOLLOW_HEX_LITERAL_in_termAtomic4356);
11190
5575
        	        if  (HASEXCEPTION())
11191
        	        {
11192
        	            goto ruletermAtomicEx;
11193
        	        }
11194
11195
11196
        	        {
11197
11198
5575
        	                  Assert(AntlrInput::tokenText(HEX_LITERAL14).find("#x") == 0);
11199
11150
        	                  std::string hexStr = AntlrInput::tokenTextSubstr(HEX_LITERAL14, 2);
11200
5575
        	                  atomTerm = SOLVER->mkBitVector(hexStr, 16);
11201
11202
5575
        	        }
11203
11204
11205
        	    }
11206
5575
        	    break;
11207
1011
        	case 5:
11208
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1747:5: BINARY_LITERAL
11209
        	    {
11210
1011
        	        BINARY_LITERAL15 = (pANTLR3_COMMON_TOKEN) MATCHT(BINARY_LITERAL, &FOLLOW_BINARY_LITERAL_in_termAtomic4368);
11211
1011
        	        if  (HASEXCEPTION())
11212
        	        {
11213
        	            goto ruletermAtomicEx;
11214
        	        }
11215
11216
11217
        	        {
11218
11219
1011
        	                  Assert(AntlrInput::tokenText(BINARY_LITERAL15).find("#b") == 0);
11220
2022
        	                  std::string binStr = AntlrInput::tokenTextSubstr(BINARY_LITERAL15, 2);
11221
1011
        	                  atomTerm = SOLVER->mkBitVector(binStr, 2);
11222
11223
1011
        	        }
11224
11225
11226
        	    }
11227
1011
        	    break;
11228
8520
        	case 6:
11229
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1755:5: str[s,false]
11230
        	    {
11231
8520
        	        FOLLOWPUSH(FOLLOW_str_in_termAtomic4384);
11232
8520
        	        str(ctx, s, false);
11233
11234
8520
        	        FOLLOWPOP();
11235
8520
        	        if  (HASEXCEPTION())
11236
        	        {
11237
        	            goto ruletermAtomicEx;
11238
        	        }
11239
11240
11241
        	        {
11242
8520
        	             atomTerm = PARSER_STATE->mkStringConstant(s);
11243
        	        }
11244
11245
11246
        	    }
11247
8520
        	    break;
11248
5
        	case 7:
11249
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1760:5: TUPLE_CONST_TOK
11250
        	    {
11251
5
        	         MATCHT(TUPLE_CONST_TOK, &FOLLOW_TUPLE_CONST_TOK_in_termAtomic4401);
11252
5
        	        if  (HASEXCEPTION())
11253
        	        {
11254
        	            goto ruletermAtomicEx;
11255
        	        }
11256
11257
11258
        	        {
11259
11260
10
        	                  atomTerm = SOLVER->mkTuple(std::vector<api::Sort>(),
11261
10
        	                                             std::vector<api::Term>());
11262
11263
        	        }
11264
11265
11266
        	    }
11267
5
        	    break;
11268
11269
            }
11270
        }
11271
    }
11272
11273
    // This is where rules clean up and exit
11274
    //
11275
492545
    goto ruletermAtomicEx; /* Prevent compiler warnings */
11276
492545
    ruletermAtomicEx: ;
11277
11278
492545
            if (HASEXCEPTION())
11279
            {
11280
                PREPORTERROR();
11281
                PRECOVER();
11282
            }
11283
985090
    return ;
11284
}
11285
/* $ANTLR end termAtomic */
11286
11287
/**
11288
 * $ANTLR start attribute
11289
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1770:1: attribute[cvc5::api::Term& expr, cvc5::api::Term& retExpr] : ( KEYWORD ( simpleSymbolicExprNoKeyword[s] )? | ( ATTRIBUTE_PATTERN_TOK | ATTRIBUTE_POOL_TOK | ATTRIBUTE_INST_ADD_TO_POOL_TOK | ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK ) LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2] |tok= ( ATTRIBUTE_INST_LEVEL ) INTEGER_LITERAL |tok= ( ATTRIBUTE_QUANTIFIER_ID_TOK ) symbolicExpr[sexpr] | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr] );
11290
 */
11291
static void
11292
8490
attribute(pSmt2Parser ctx, cvc5::api::Term& expr, cvc5::api::Term& retExpr)
11293
{
11294
    pANTLR3_COMMON_TOKEN    tok;
11295
    pANTLR3_COMMON_TOKEN    KEYWORD16;
11296
    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL17;
11297
11298
    /* Initialize rule variables
11299
     */
11300
11301
11302
16980
      api::Term sexpr;
11303
16980
      std::string s;
11304
16980
      cvc5::api::Term patexpr;
11305
16980
      std::vector<cvc5::api::Term> patexprs;
11306
16980
      cvc5::api::Term e2;
11307
8490
      bool hasValue = false;
11308
      api::Kind k;
11309
11310
8490
    tok       = NULL;
11311
8490
    KEYWORD16       = NULL;
11312
8490
    INTEGER_LITERAL17       = NULL;
11313
11314
    {
11315
        {
11316
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1780:3: ( KEYWORD ( simpleSymbolicExprNoKeyword[s] )? | ( ATTRIBUTE_PATTERN_TOK | ATTRIBUTE_POOL_TOK | ATTRIBUTE_INST_ADD_TO_POOL_TOK | ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK ) LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK | ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2] |tok= ( ATTRIBUTE_INST_LEVEL ) INTEGER_LITERAL |tok= ( ATTRIBUTE_QUANTIFIER_ID_TOK ) symbolicExpr[sexpr] | ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr] )
11317
11318
            ANTLR3_UINT32 alt57;
11319
11320
8490
            alt57=6;
11321
11322
8490
            switch ( LA(1) )
11323
            {
11324
161
            case KEYWORD:
11325
            	{
11326
161
            		alt57=1;
11327
            	}
11328
161
                break;
11329
3470
            case ATTRIBUTE_INST_ADD_TO_POOL_TOK:
11330
            case ATTRIBUTE_PATTERN_TOK:
11331
            case ATTRIBUTE_POOL_TOK:
11332
            case ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK:
11333
            	{
11334
3470
            		alt57=2;
11335
            	}
11336
3470
                break;
11337
8
            case ATTRIBUTE_NO_PATTERN_TOK:
11338
            	{
11339
8
            		alt57=3;
11340
            	}
11341
8
                break;
11342
            case ATTRIBUTE_INST_LEVEL:
11343
            	{
11344
            		alt57=4;
11345
            	}
11346
                break;
11347
202
            case ATTRIBUTE_QUANTIFIER_ID_TOK:
11348
            	{
11349
202
            		alt57=5;
11350
            	}
11351
202
                break;
11352
4649
            case ATTRIBUTE_NAMED_TOK:
11353
            	{
11354
4649
            		alt57=6;
11355
            	}
11356
4649
                break;
11357
11358
            default:
11359
                CONSTRUCTEX();
11360
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
11361
                EXCEPTION->message      = (void *)"";
11362
                EXCEPTION->decisionNum  = 57;
11363
                EXCEPTION->state        = 0;
11364
11365
11366
                goto ruleattributeEx;
11367
11368
            }
11369
11370
8490
            switch (alt57)
11371
            {
11372
161
        	case 1:
11373
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1780:5: KEYWORD ( simpleSymbolicExprNoKeyword[s] )?
11374
        	    {
11375
161
        	        KEYWORD16 = (pANTLR3_COMMON_TOKEN) MATCHT(KEYWORD, &FOLLOW_KEYWORD_in_attribute4428);
11376
161
        	        if  (HASEXCEPTION())
11377
        	        {
11378
        	            goto ruleattributeEx;
11379
        	        }
11380
11381
11382
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1780:13: ( simpleSymbolicExprNoKeyword[s] )?
11383
        	        {
11384
161
        	            int alt54=2;
11385
161
        	            switch ( LA(1) )
11386
        	            {
11387
161
        	                case ASSERT_TOK:
11388
        	                case BINARY_LITERAL:
11389
        	                case CHECK_SAT_ASSUMING_TOK:
11390
        	                case CHECK_SAT_TOK:
11391
        	                case DECIMAL_LITERAL:
11392
        	                case DECLARE_DATATYPES_TOK:
11393
        	                case DECLARE_FUN_TOK:
11394
        	                case DECLARE_SORT_TOK:
11395
        	                case DEFINE_FUNS_REC_TOK:
11396
        	                case DEFINE_FUN_REC_TOK:
11397
        	                case DEFINE_FUN_TOK:
11398
        	                case DEFINE_SORT_TOK:
11399
        	                case ECHO_TOK:
11400
        	                case EXIT_TOK:
11401
        	                case GET_ASSERTIONS_TOK:
11402
        	                case GET_ASSIGNMENT_TOK:
11403
        	                case GET_INFO_TOK:
11404
        	                case GET_MODEL_TOK:
11405
        	                case GET_OPTION_TOK:
11406
        	                case GET_PROOF_TOK:
11407
        	                case GET_UNSAT_ASSUMPTIONS_TOK:
11408
        	                case GET_UNSAT_CORE_TOK:
11409
        	                case GET_VALUE_TOK:
11410
        	                case HEX_LITERAL:
11411
        	                case INTEGER_LITERAL:
11412
        	                case POP_TOK:
11413
        	                case PUSH_TOK:
11414
        	                case QUOTED_SYMBOL:
11415
        	                case RESET_ASSERTIONS_TOK:
11416
        	                case RESET_TOK:
11417
        	                case SET_INFO_TOK:
11418
        	                case SET_LOGIC_TOK:
11419
        	                case SET_OPTION_TOK:
11420
        	                case SIMPLE_SYMBOL:
11421
        	                case SIMPLIFY_TOK:
11422
        	                case STRING_LITERAL:
11423
        	                case UNTERMINATED_QUOTED_SYMBOL:
11424
        	                	{
11425
161
        	                		alt54=1;
11426
        	                	}
11427
161
        	                    break;
11428
        	            }
11429
11430
161
        	            switch (alt54)
11431
        	            {
11432
161
        	        	case 1:
11433
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1780:15: simpleSymbolicExprNoKeyword[s]
11434
        	        	    {
11435
161
        	        	        FOLLOWPUSH(FOLLOW_simpleSymbolicExprNoKeyword_in_attribute4432);
11436
161
        	        	        simpleSymbolicExprNoKeyword(ctx, s);
11437
11438
161
        	        	        FOLLOWPOP();
11439
161
        	        	        if  (HASEXCEPTION())
11440
        	        	        {
11441
        	        	            goto ruleattributeEx;
11442
        	        	        }
11443
11444
11445
        	        	        {
11446
161
        	        	             hasValue = true;
11447
        	        	        }
11448
11449
11450
        	        	    }
11451
161
        	        	    break;
11452
11453
        	            }
11454
        	        }
11455
11456
        	        {
11457
11458
161
        	                PARSER_STATE->attributeNotSupported(AntlrInput::tokenText(KEYWORD16));
11459
11460
        	        }
11461
11462
11463
        	    }
11464
161
        	    break;
11465
3470
        	case 2:
11466
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1784:5: ( ATTRIBUTE_PATTERN_TOK | ATTRIBUTE_POOL_TOK | ATTRIBUTE_INST_ADD_TO_POOL_TOK | ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK ) LPAREN_TOK ( term[patexpr, e2] )+ RPAREN_TOK
11467
        	    {
11468
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1784:5: ( ATTRIBUTE_PATTERN_TOK | ATTRIBUTE_POOL_TOK | ATTRIBUTE_INST_ADD_TO_POOL_TOK | ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK )
11469
        	        {
11470
3470
        	            int alt55=4;
11471
3470
        	            switch ( LA(1) )
11472
        	            {
11473
3458
        	            case ATTRIBUTE_PATTERN_TOK:
11474
        	            	{
11475
3458
        	            		alt55=1;
11476
        	            	}
11477
3458
        	                break;
11478
6
        	            case ATTRIBUTE_POOL_TOK:
11479
        	            	{
11480
6
        	            		alt55=2;
11481
        	            	}
11482
6
        	                break;
11483
        	            case ATTRIBUTE_INST_ADD_TO_POOL_TOK:
11484
        	            	{
11485
        	            		alt55=3;
11486
        	            	}
11487
        	                break;
11488
6
        	            case ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK:
11489
        	            	{
11490
6
        	            		alt55=4;
11491
        	            	}
11492
6
        	                break;
11493
11494
        	            default:
11495
        	                CONSTRUCTEX();
11496
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
11497
        	                EXCEPTION->message      = (void *)"";
11498
        	                EXCEPTION->decisionNum  = 55;
11499
        	                EXCEPTION->state        = 0;
11500
11501
11502
        	                goto ruleattributeEx;
11503
11504
        	            }
11505
11506
3470
        	            switch (alt55)
11507
        	            {
11508
3458
        	        	case 1:
11509
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1784:7: ATTRIBUTE_PATTERN_TOK
11510
        	        	    {
11511
3458
        	        	         MATCHT(ATTRIBUTE_PATTERN_TOK, &FOLLOW_ATTRIBUTE_PATTERN_TOK_in_attribute4450);
11512
3458
        	        	        if  (HASEXCEPTION())
11513
        	        	        {
11514
        	        	            goto ruleattributeEx;
11515
        	        	        }
11516
11517
11518
        	        	        {
11519
3458
        	        	             k = api::INST_PATTERN;
11520
        	        	        }
11521
11522
11523
        	        	    }
11524
3458
        	        	    break;
11525
6
        	        	case 2:
11526
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1785:7: ATTRIBUTE_POOL_TOK
11527
        	        	    {
11528
6
        	        	         MATCHT(ATTRIBUTE_POOL_TOK, &FOLLOW_ATTRIBUTE_POOL_TOK_in_attribute4462);
11529
6
        	        	        if  (HASEXCEPTION())
11530
        	        	        {
11531
        	        	            goto ruleattributeEx;
11532
        	        	        }
11533
11534
11535
        	        	        {
11536
6
        	        	             k = api::INST_POOL;
11537
        	        	        }
11538
11539
11540
        	        	    }
11541
6
        	        	    break;
11542
        	        	case 3:
11543
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1786:7: ATTRIBUTE_INST_ADD_TO_POOL_TOK
11544
        	        	    {
11545
        	        	         MATCHT(ATTRIBUTE_INST_ADD_TO_POOL_TOK, &FOLLOW_ATTRIBUTE_INST_ADD_TO_POOL_TOK_in_attribute4475);
11546
        	        	        if  (HASEXCEPTION())
11547
        	        	        {
11548
        	        	            goto ruleattributeEx;
11549
        	        	        }
11550
11551
11552
        	        	        {
11553
        	        	             k = api::INST_ADD_TO_POOL;
11554
        	        	        }
11555
11556
11557
        	        	    }
11558
        	        	    break;
11559
6
        	        	case 4:
11560
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1787:7: ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK
11561
        	        	    {
11562
6
        	        	         MATCHT(ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK, &FOLLOW_ATTRIBUTE_SKOLEM_ADD_TO_POOL_TOK_in_attribute4488);
11563
6
        	        	        if  (HASEXCEPTION())
11564
        	        	        {
11565
        	        	            goto ruleattributeEx;
11566
        	        	        }
11567
11568
11569
        	        	        {
11570
6
        	        	             k = api::SKOLEM_ADD_TO_POOL;
11571
        	        	        }
11572
11573
11574
        	        	    }
11575
6
        	        	    break;
11576
11577
        	            }
11578
        	        }
11579
11580
3470
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_attribute4502);
11581
3470
        	        if  (HASEXCEPTION())
11582
        	        {
11583
        	            goto ruleattributeEx;
11584
        	        }
11585
11586
11587
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1790:5: ( term[patexpr, e2] )+
11588
        	        {
11589
3470
        	            int cnt56=0;
11590
11591
        	            for (;;)
11592
        	            {
11593
7156
        	                int alt56=2;
11594
7156
        	        	switch ( LA(1) )
11595
        	        	{
11596
3686
        	        	case BINARY_LITERAL:
11597
        	        	case DECIMAL_LITERAL:
11598
        	        	case HEX_LITERAL:
11599
        	        	case INTEGER_LITERAL:
11600
        	        	case LPAREN_TOK:
11601
        	        	case QUOTED_SYMBOL:
11602
        	        	case SIMPLE_SYMBOL:
11603
        	        	case STRING_LITERAL:
11604
        	        	case TUPLE_CONST_TOK:
11605
        	        	case UNTERMINATED_QUOTED_SYMBOL:
11606
        	        		{
11607
3686
        	        			alt56=1;
11608
        	        		}
11609
3686
        	        	    break;
11610
11611
        	        	}
11612
11613
7156
        	        	switch (alt56)
11614
        	        	{
11615
3686
        	        	    case 1:
11616
        	        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1790:7: term[patexpr, e2]
11617
        	        	        {
11618
3686
        	        	            FOLLOWPUSH(FOLLOW_term_in_attribute4510);
11619
3686
        	        	            term(ctx, patexpr, e2);
11620
11621
3686
        	        	            FOLLOWPOP();
11622
3686
        	        	            if  (HASEXCEPTION())
11623
        	        	            {
11624
        	        	                goto ruleattributeEx;
11625
        	        	            }
11626
11627
11628
        	        	            {
11629
3686
        	        	                 patexprs.push_back( patexpr );
11630
        	        	            }
11631
11632
11633
        	        	        }
11634
3686
        	        	        break;
11635
11636
3470
        	        	    default:
11637
11638
3470
        	        		if ( cnt56 >= 1 )
11639
        	        		{
11640
3470
        	        		    goto loop56;
11641
        	        		}
11642
        	        		/* mismatchedSetEx()
11643
        	        		 */
11644
        	        		CONSTRUCTEX();
11645
        	        		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
11646
        	        		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
11647
11648
11649
        	        		goto ruleattributeEx;
11650
        	        	}
11651
3686
        	        	cnt56++;
11652
3686
        	            }
11653
3470
        	            loop56: ;	/* Jump to here if this rule does not match */
11654
        	        }
11655
11656
3470
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_attribute4528);
11657
3470
        	        if  (HASEXCEPTION())
11658
        	        {
11659
        	            goto ruleattributeEx;
11660
        	        }
11661
11662
11663
        	        {
11664
11665
3470
        	                  retExpr = MK_TERM(k, patexprs);
11666
11667
        	        }
11668
11669
11670
        	    }
11671
3470
        	    break;
11672
8
        	case 3:
11673
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1796:5: ATTRIBUTE_NO_PATTERN_TOK term[patexpr, e2]
11674
        	    {
11675
8
        	         MATCHT(ATTRIBUTE_NO_PATTERN_TOK, &FOLLOW_ATTRIBUTE_NO_PATTERN_TOK_in_attribute4540);
11676
8
        	        if  (HASEXCEPTION())
11677
        	        {
11678
        	            goto ruleattributeEx;
11679
        	        }
11680
11681
11682
8
        	        FOLLOWPUSH(FOLLOW_term_in_attribute4542);
11683
8
        	        term(ctx, patexpr, e2);
11684
11685
8
        	        FOLLOWPOP();
11686
8
        	        if  (HASEXCEPTION())
11687
        	        {
11688
        	            goto ruleattributeEx;
11689
        	        }
11690
11691
11692
        	        {
11693
11694
8
        	                  retExpr = MK_TERM(api::INST_NO_PATTERN, patexpr);
11695
11696
        	        }
11697
11698
11699
        	    }
11700
8
        	    break;
11701
        	case 4:
11702
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1800:5: tok= ( ATTRIBUTE_INST_LEVEL ) INTEGER_LITERAL
11703
        	    {
11704
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1800:9: ( ATTRIBUTE_INST_LEVEL )
11705
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1800:11: ATTRIBUTE_INST_LEVEL
11706
        	        {
11707
        	             MATCHT(ATTRIBUTE_INST_LEVEL, &FOLLOW_ATTRIBUTE_INST_LEVEL_in_attribute4559);
11708
        	            if  (HASEXCEPTION())
11709
        	            {
11710
        	                goto ruleattributeEx;
11711
        	            }
11712
11713
11714
        	        }
11715
11716
11717
        	        INTEGER_LITERAL17 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_attribute4563);
11718
        	        if  (HASEXCEPTION())
11719
        	        {
11720
        	            goto ruleattributeEx;
11721
        	        }
11722
11723
11724
        	        {
11725
11726
        	                  std::stringstream sIntLit;
11727
        	                  sIntLit << INTEGER_LITERAL17;
11728
        	                  api::Term n = SOLVER->mkInteger(sIntLit.str());
11729
        	                  std::vector<api::Term> values;
11730
        	                  values.push_back( n );
11731
        	                  std::string attr_name(AntlrInput::tokenText(tok));
11732
        	                  attr_name.erase( attr_name.begin() );
11733
        	                  api::Sort boolType = SOLVER->getBooleanSort();
11734
        	                  api::Term avar = PARSER_STATE->bindVar(attr_name, boolType);
11735
        	                  retExpr = MK_TERM(api::INST_ATTRIBUTE, avar);
11736
        	                  Command* c = new SetUserAttributeCommand(attr_name, avar, values);
11737
        	                  c->setMuted(true);
11738
        	                  PARSER_STATE->preemptCommand(c);
11739
11740
        	        }
11741
11742
11743
        	    }
11744
        	    break;
11745
202
        	case 5:
11746
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1816:5: tok= ( ATTRIBUTE_QUANTIFIER_ID_TOK ) symbolicExpr[sexpr]
11747
        	    {
11748
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1816:9: ( ATTRIBUTE_QUANTIFIER_ID_TOK )
11749
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1816:11: ATTRIBUTE_QUANTIFIER_ID_TOK
11750
        	        {
11751
202
        	             MATCHT(ATTRIBUTE_QUANTIFIER_ID_TOK, &FOLLOW_ATTRIBUTE_QUANTIFIER_ID_TOK_in_attribute4579);
11752
202
        	            if  (HASEXCEPTION())
11753
        	            {
11754
        	                goto ruleattributeEx;
11755
        	            }
11756
11757
11758
        	        }
11759
11760
11761
202
        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_attribute4583);
11762
202
        	        symbolicExpr(ctx, sexpr);
11763
11764
202
        	        FOLLOWPOP();
11765
202
        	        if  (HASEXCEPTION())
11766
        	        {
11767
        	            goto ruleattributeEx;
11768
        	        }
11769
11770
11771
        	        {
11772
11773
404
        	                  api::Sort boolType = SOLVER->getBooleanSort();
11774
404
        	                  api::Term avar = SOLVER->mkConst(boolType, sexprToString(sexpr));
11775
202
        	                  retExpr = MK_TERM(api::INST_ATTRIBUTE, avar);
11776
202
        	                  Command* c = new SetUserAttributeCommand("qid", avar);
11777
202
        	                  c->setMuted(true);
11778
202
        	                  PARSER_STATE->preemptCommand(c);
11779
11780
202
        	        }
11781
11782
11783
        	    }
11784
202
        	    break;
11785
4649
        	case 6:
11786
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1825:5: ATTRIBUTE_NAMED_TOK symbolicExpr[sexpr]
11787
        	    {
11788
4649
        	         MATCHT(ATTRIBUTE_NAMED_TOK, &FOLLOW_ATTRIBUTE_NAMED_TOK_in_attribute4596);
11789
4649
        	        if  (HASEXCEPTION())
11790
        	        {
11791
        	            goto ruleattributeEx;
11792
        	        }
11793
11794
11795
4649
        	        FOLLOWPUSH(FOLLOW_symbolicExpr_in_attribute4598);
11796
4649
        	        symbolicExpr(ctx, sexpr);
11797
11798
4649
        	        FOLLOWPOP();
11799
4649
        	        if  (HASEXCEPTION())
11800
        	        {
11801
        	            goto ruleattributeEx;
11802
        	        }
11803
11804
11805
        	        {
11806
11807
        	                  // notify that expression was given a name
11808
4650
        	                  PARSER_STATE->notifyNamedExpression(expr, sexprToString(sexpr));
11809
11810
        	        }
11811
11812
11813
        	    }
11814
4648
        	    break;
11815
11816
            }
11817
        }
11818
    }
11819
11820
    // This is where rules clean up and exit
11821
    //
11822
8489
    goto ruleattributeEx; /* Prevent compiler warnings */
11823
8489
    ruleattributeEx: ;
11824
11825
8489
            if (HASEXCEPTION())
11826
            {
11827
                PREPORTERROR();
11828
                PRECOVER();
11829
            }
11830
16978
    return ;
11831
}
11832
/* $ANTLR end attribute */
11833
11834
/**
11835
 * $ANTLR start termList
11836
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1840:1: termList[std::vector<cvc5::api::Term>& formulas, cvc5::api::Term& expr] : ( term[expr, expr2] )+ ;
11837
 */
11838
static void
11839
3365684
termList(pSmt2Parser ctx, std::vector<cvc5::api::Term>& formulas, cvc5::api::Term& expr)
11840
{
11841
11842
6731368
      cvc5::api::Term expr2;
11843
11844
    /* Initialize rule variables
11845
     */
11846
11847
    {
11848
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1844:3: ( ( term[expr, expr2] )+ )
11849
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1844:5: ( term[expr, expr2] )+
11850
        {
11851
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1844:5: ( term[expr, expr2] )+
11852
            {
11853
3365684
                int cnt58=0;
11854
11855
                for (;;)
11856
                {
11857
10604923
                    int alt58=2;
11858
10604923
            	switch ( LA(1) )
11859
            	{
11860
7239266
            	case BINARY_LITERAL:
11861
            	case DECIMAL_LITERAL:
11862
            	case HEX_LITERAL:
11863
            	case INTEGER_LITERAL:
11864
            	case LPAREN_TOK:
11865
            	case QUOTED_SYMBOL:
11866
            	case SIMPLE_SYMBOL:
11867
            	case STRING_LITERAL:
11868
            	case TUPLE_CONST_TOK:
11869
            	case UNTERMINATED_QUOTED_SYMBOL:
11870
            		{
11871
7239266
            			alt58=1;
11872
            		}
11873
7239266
            	    break;
11874
11875
            	}
11876
11877
10604921
            	switch (alt58)
11878
            	{
11879
7239266
            	    case 1:
11880
            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1844:7: term[expr, expr2]
11881
            	        {
11882
7239266
            	            FOLLOWPUSH(FOLLOW_term_in_termList4630);
11883
7239266
            	            term(ctx, expr, expr2);
11884
11885
7239239
            	            FOLLOWPOP();
11886
7239239
            	            if  (HASEXCEPTION())
11887
            	            {
11888
            	                goto ruletermListEx;
11889
            	            }
11890
11891
11892
            	            {
11893
7239239
            	                 formulas.push_back(expr);
11894
            	            }
11895
11896
11897
            	        }
11898
7239239
            	        break;
11899
11900
3365655
            	    default:
11901
11902
3365655
            		if ( cnt58 >= 1 )
11903
            		{
11904
3365653
            		    goto loop58;
11905
            		}
11906
            		/* mismatchedSetEx()
11907
            		 */
11908
2
            		CONSTRUCTEX();
11909
2
            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
11910
2
            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
11911
11912
11913
2
            		goto ruletermListEx;
11914
            	}
11915
7239239
            	cnt58++;
11916
7239239
                }
11917
3365653
                loop58: ;	/* Jump to here if this rule does not match */
11918
            }
11919
11920
        }
11921
11922
    }
11923
11924
    // This is where rules clean up and exit
11925
    //
11926
3365653
    goto ruletermListEx; /* Prevent compiler warnings */
11927
3365655
    ruletermListEx: ;
11928
11929
3365655
            if (HASEXCEPTION())
11930
            {
11931
2
                PREPORTERROR();
11932
                PRECOVER();
11933
            }
11934
6731306
    return ;
11935
}
11936
/* $ANTLR end termList */
11937
11938
/**
11939
 * $ANTLR start str
11940
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1850:1: str[std::string& s, bool fsmtlib] : STRING_LITERAL ;
11941
 */
11942
static void
11943
9565
str(pSmt2Parser ctx, std::string& s, bool fsmtlib)
11944
{
11945
    pANTLR3_COMMON_TOKEN    STRING_LITERAL18;
11946
11947
    /* Initialize rule variables
11948
     */
11949
11950
9565
    STRING_LITERAL18       = NULL;
11951
11952
    {
11953
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1851:3: ( STRING_LITERAL )
11954
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1851:5: STRING_LITERAL
11955
        {
11956
9565
            STRING_LITERAL18 = (pANTLR3_COMMON_TOKEN) MATCHT(STRING_LITERAL, &FOLLOW_STRING_LITERAL_in_str4652);
11957
9565
            if  (HASEXCEPTION())
11958
            {
11959
                goto rulestrEx;
11960
            }
11961
11962
11963
            {
11964
11965
9565
                      s = AntlrInput::tokenText(STRING_LITERAL18);
11966
                      /* strip off the quotes */
11967
9565
                      s = s.substr(1, s.size() - 2);
11968
59891
                      for (size_t i = 0; i < s.size(); i++)
11969
                      {
11970
50326
                        if ((unsigned)s[i] > 127 && !isprint(s[i]))
11971
                        {
11972
                          PARSER_STATE->parseError(
11973
                              "Extended/unprintable characters are not "
11974
                              "part of SMT-LIB, and they must be encoded "
11975
                              "as escape sequences");
11976
                        }
11977
                      }
11978
9565
                      if (fsmtlib || PARSER_STATE->escapeDupDblQuote())
11979
                      {
11980
9565
                        char* p_orig = strdup(s.c_str());
11981
9565
                        char *p = p_orig, *q = p_orig;
11982
110173
                        while (*q != '\0')
11983
                        {
11984
50304
                          if (PARSER_STATE->escapeDupDblQuote() && *q == '"')
11985
                          {
11986
                            // Handle SMT-LIB >=2.5 standard escape '""'.
11987
22
                            ++q;
11988
22
                            Assert(*q == '"');
11989
                          }
11990
50282
                          else if (!PARSER_STATE->escapeDupDblQuote() && *q == '\\')
11991
                          {
11992
                            ++q;
11993
                            // Handle SMT-LIB 2.0 standard escapes '\\' and '\"'.
11994
                            if (*q != '\\' && *q != '"')
11995
                            {
11996
                              Assert(*q != '\0');
11997
                              *p++ = '\\';
11998
                            }
11999
                          }
12000
50304
                          *p++ = *q++;
12001
                        }
12002
9565
                        *p = '\0';
12003
9565
                        s = p_orig;
12004
9565
                        free(p_orig);
12005
                      }
12006
12007
            }
12008
12009
12010
        }
12011
12012
    }
12013
12014
    // This is where rules clean up and exit
12015
    //
12016
9565
    goto rulestrEx; /* Prevent compiler warnings */
12017
9565
    rulestrEx: ;
12018
12019
9565
            if (HASEXCEPTION())
12020
            {
12021
                PREPORTERROR();
12022
                PRECOVER();
12023
            }
12024
9565
    return ;
12025
}
12026
/* $ANTLR end str */
12027
12028
/**
12029
 * $ANTLR start quantOp
12030
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1897:1: quantOp[cvc5::api::Kind& kind] : ( EXISTS_TOK | FORALL_TOK );
12031
 */
12032
static void
12033
28288
quantOp(pSmt2Parser ctx, cvc5::api::Kind& kind)
12034
{
12035
    /* Initialize rule variables
12036
     */
12037
12038
12039
28288
      Debug("parser") << "quant: " << AntlrInput::tokenText(LT(1)) << std::endl;
12040
12041
    {
12042
        {
12043
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1901:3: ( EXISTS_TOK | FORALL_TOK )
12044
12045
            ANTLR3_UINT32 alt59;
12046
12047
28288
            alt59=2;
12048
12049
28288
            switch ( LA(1) )
12050
            {
12051
2041
            case EXISTS_TOK:
12052
            	{
12053
2041
            		alt59=1;
12054
            	}
12055
2041
                break;
12056
26247
            case FORALL_TOK:
12057
            	{
12058
26247
            		alt59=2;
12059
            	}
12060
26247
                break;
12061
12062
            default:
12063
                CONSTRUCTEX();
12064
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
12065
                EXCEPTION->message      = (void *)"";
12066
                EXCEPTION->decisionNum  = 59;
12067
                EXCEPTION->state        = 0;
12068
12069
12070
                goto rulequantOpEx;
12071
12072
            }
12073
12074
28288
            switch (alt59)
12075
            {
12076
2041
        	case 1:
12077
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1901:5: EXISTS_TOK
12078
        	    {
12079
2041
        	         MATCHT(EXISTS_TOK, &FOLLOW_EXISTS_TOK_in_quantOp4677);
12080
2041
        	        if  (HASEXCEPTION())
12081
        	        {
12082
        	            goto rulequantOpEx;
12083
        	        }
12084
12085
12086
        	        {
12087
2041
        	             kind= api::EXISTS;
12088
        	        }
12089
12090
12091
        	    }
12092
2041
        	    break;
12093
26247
        	case 2:
12094
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1902:5: FORALL_TOK
12095
        	    {
12096
26247
        	         MATCHT(FORALL_TOK, &FOLLOW_FORALL_TOK_in_quantOp4688);
12097
26247
        	        if  (HASEXCEPTION())
12098
        	        {
12099
        	            goto rulequantOpEx;
12100
        	        }
12101
12102
12103
        	        {
12104
26247
        	             kind= api::FORALL;
12105
        	        }
12106
12107
12108
        	    }
12109
26247
        	    break;
12110
12111
            }
12112
        }
12113
    }
12114
12115
    // This is where rules clean up and exit
12116
    //
12117
28288
    goto rulequantOpEx; /* Prevent compiler warnings */
12118
28288
    rulequantOpEx: ;
12119
12120
28288
            if (HASEXCEPTION())
12121
            {
12122
                PREPORTERROR();
12123
                PRECOVER();
12124
            }
12125
28288
    return ;
12126
}
12127
/* $ANTLR end quantOp */
12128
12129
/**
12130
 * $ANTLR start functionName
12131
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1909:1: functionName[std::string& name, cvc5::parser::DeclarationCheck check] : symbol[name,check,SYM_VARIABLE] ;
12132
 */
12133
static void
12134
6829100
functionName(pSmt2Parser ctx, std::string& name, cvc5::parser::DeclarationCheck check)
12135
{
12136
    /* Initialize rule variables
12137
     */
12138
12139
    {
12140
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1910:3: ( symbol[name,check,SYM_VARIABLE] )
12141
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1910:5: symbol[name,check,SYM_VARIABLE]
12142
        {
12143
6829100
            FOLLOWPUSH(FOLLOW_symbol_in_functionName4709);
12144
6829100
            symbol(ctx, name, check, SYM_VARIABLE);
12145
12146
6829100
            FOLLOWPOP();
12147
6829100
            if  (HASEXCEPTION())
12148
            {
12149
                goto rulefunctionNameEx;
12150
            }
12151
12152
12153
        }
12154
12155
    }
12156
12157
    // This is where rules clean up and exit
12158
    //
12159
6829100
    goto rulefunctionNameEx; /* Prevent compiler warnings */
12160
6829100
    rulefunctionNameEx: ;
12161
12162
6829100
            if (HASEXCEPTION())
12163
            {
12164
                PREPORTERROR();
12165
                PRECOVER();
12166
            }
12167
6829100
    return ;
12168
}
12169
/* $ANTLR end functionName */
12170
12171
/**
12172
 * $ANTLR start sortList
12173
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1917:1: sortList[std::vector<cvc5::api::Sort>& sorts] : ( sortSymbol[t,CHECK_DECLARED] )* ;
12174
 */
12175
static void
12176
170581
sortList(pSmt2Parser ctx, std::vector<cvc5::api::Sort>& sorts)
12177
{
12178
12179
341162
      cvc5::api::Sort t;
12180
12181
    /* Initialize rule variables
12182
     */
12183
12184
    {
12185
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1921:3: ( ( sortSymbol[t,CHECK_DECLARED] )* )
12186
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1921:5: ( sortSymbol[t,CHECK_DECLARED] )*
12187
        {
12188
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1921:5: ( sortSymbol[t,CHECK_DECLARED] )*
12189
12190
            for (;;)
12191
            {
12192
235052
                int alt60=2;
12193
235052
                switch ( LA(1) )
12194
                {
12195
64472
                case LPAREN_TOK:
12196
                case QUOTED_SYMBOL:
12197
                case SIMPLE_SYMBOL:
12198
                case UNTERMINATED_QUOTED_SYMBOL:
12199
                	{
12200
64472
                		alt60=1;
12201
                	}
12202
64472
                    break;
12203
12204
                }
12205
12206
235052
                switch (alt60)
12207
                {
12208
64472
            	case 1:
12209
            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1921:7: sortSymbol[t,CHECK_DECLARED]
12210
            	    {
12211
64472
            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortList4733);
12212
64472
            	        sortSymbol(ctx, t, CHECK_DECLARED);
12213
12214
64471
            	        FOLLOWPOP();
12215
64471
            	        if  (HASEXCEPTION())
12216
            	        {
12217
            	            goto rulesortListEx;
12218
            	        }
12219
12220
12221
            	        {
12222
64471
            	             sorts.push_back(t);
12223
            	        }
12224
12225
12226
            	    }
12227
64471
            	    break;
12228
12229
170580
            	default:
12230
170580
            	    goto loop60;	/* break out of the loop */
12231
            	    break;
12232
                }
12233
64471
            }
12234
170580
            loop60: ; /* Jump out to here if this rule does not match */
12235
12236
12237
        }
12238
12239
    }
12240
12241
    // This is where rules clean up and exit
12242
    //
12243
170580
    goto rulesortListEx; /* Prevent compiler warnings */
12244
170580
    rulesortListEx: ;
12245
12246
170580
            if (HASEXCEPTION())
12247
            {
12248
                PREPORTERROR();
12249
                PRECOVER();
12250
            }
12251
341160
    return ;
12252
}
12253
/* $ANTLR end sortList */
12254
12255
/**
12256
 * $ANTLR start nonemptySortList
12257
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1924:1: nonemptySortList[std::vector<cvc5::api::Sort>& sorts] : ( sortSymbol[t,CHECK_DECLARED] )+ ;
12258
 */
12259
static void
12260
4
nonemptySortList(pSmt2Parser ctx, std::vector<cvc5::api::Sort>& sorts)
12261
{
12262
12263
8
      cvc5::api::Sort t;
12264
12265
    /* Initialize rule variables
12266
     */
12267
12268
    {
12269
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1928:3: ( ( sortSymbol[t,CHECK_DECLARED] )+ )
12270
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1928:5: ( sortSymbol[t,CHECK_DECLARED] )+
12271
        {
12272
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1928:5: ( sortSymbol[t,CHECK_DECLARED] )+
12273
            {
12274
4
                int cnt61=0;
12275
12276
                for (;;)
12277
                {
12278
8
                    int alt61=2;
12279
8
            	switch ( LA(1) )
12280
            	{
12281
4
            	case LPAREN_TOK:
12282
            	case QUOTED_SYMBOL:
12283
            	case SIMPLE_SYMBOL:
12284
            	case UNTERMINATED_QUOTED_SYMBOL:
12285
            		{
12286
4
            			alt61=1;
12287
            		}
12288
4
            	    break;
12289
12290
            	}
12291
12292
8
            	switch (alt61)
12293
            	{
12294
4
            	    case 1:
12295
            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1928:7: sortSymbol[t,CHECK_DECLARED]
12296
            	        {
12297
4
            	            FOLLOWPUSH(FOLLOW_sortSymbol_in_nonemptySortList4760);
12298
4
            	            sortSymbol(ctx, t, CHECK_DECLARED);
12299
12300
4
            	            FOLLOWPOP();
12301
4
            	            if  (HASEXCEPTION())
12302
            	            {
12303
            	                goto rulenonemptySortListEx;
12304
            	            }
12305
12306
12307
            	            {
12308
4
            	                 sorts.push_back(t);
12309
            	            }
12310
12311
12312
            	        }
12313
4
            	        break;
12314
12315
4
            	    default:
12316
12317
4
            		if ( cnt61 >= 1 )
12318
            		{
12319
4
            		    goto loop61;
12320
            		}
12321
            		/* mismatchedSetEx()
12322
            		 */
12323
            		CONSTRUCTEX();
12324
            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
12325
            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
12326
12327
12328
            		goto rulenonemptySortListEx;
12329
            	}
12330
4
            	cnt61++;
12331
4
                }
12332
4
                loop61: ;	/* Jump to here if this rule does not match */
12333
            }
12334
12335
        }
12336
12337
    }
12338
12339
    // This is where rules clean up and exit
12340
    //
12341
4
    goto rulenonemptySortListEx; /* Prevent compiler warnings */
12342
4
    rulenonemptySortListEx: ;
12343
12344
4
            if (HASEXCEPTION())
12345
            {
12346
                PREPORTERROR();
12347
                PRECOVER();
12348
            }
12349
8
    return ;
12350
}
12351
/* $ANTLR end nonemptySortList */
12352
12353
/**
12354
 * $ANTLR start sortedVarList
12355
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1935:1: sortedVarList[std::vector<std::pair<std::string, cvc5::api::Sort> >& sortedVars] : ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )* ;
12356
 */
12357
static void
12358
30843
sortedVarList(pSmt2Parser ctx, std::vector<std::pair<std::string, cvc5::api::Sort> >& sortedVars)
12359
{
12360
12361
61686
      std::string name;
12362
61686
      cvc5::api::Sort t;
12363
12364
    /* Initialize rule variables
12365
     */
12366
12367
    {
12368
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1940:3: ( ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )* )
12369
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1940:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )*
12370
        {
12371
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1940:5: ( LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK )*
12372
12373
            for (;;)
12374
            {
12375
85004
                int alt62=2;
12376
85004
                switch ( LA(1) )
12377
                {
12378
54162
                case LPAREN_TOK:
12379
                	{
12380
54162
                		alt62=1;
12381
                	}
12382
54162
                    break;
12383
12384
                }
12385
12386
85004
                switch (alt62)
12387
                {
12388
54162
            	case 1:
12389
            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1940:7: LPAREN_TOK symbol[name,CHECK_NONE,SYM_VARIABLE] sortSymbol[t,CHECK_DECLARED] RPAREN_TOK
12390
            	    {
12391
54162
            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortedVarList4789);
12392
54162
            	        if  (HASEXCEPTION())
12393
            	        {
12394
            	            goto rulesortedVarListEx;
12395
            	        }
12396
12397
12398
54162
            	        FOLLOWPUSH(FOLLOW_symbol_in_sortedVarList4791);
12399
54162
            	        symbol(ctx, name, CHECK_NONE, SYM_VARIABLE);
12400
12401
54162
            	        FOLLOWPOP();
12402
54162
            	        if  (HASEXCEPTION())
12403
            	        {
12404
            	            goto rulesortedVarListEx;
12405
            	        }
12406
12407
12408
54162
            	        FOLLOWPUSH(FOLLOW_sortSymbol_in_sortedVarList4800);
12409
54162
            	        sortSymbol(ctx, t, CHECK_DECLARED);
12410
12411
54161
            	        FOLLOWPOP();
12412
54161
            	        if  (HASEXCEPTION())
12413
            	        {
12414
            	            goto rulesortedVarListEx;
12415
            	        }
12416
12417
12418
54161
            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortedVarList4803);
12419
54161
            	        if  (HASEXCEPTION())
12420
            	        {
12421
            	            goto rulesortedVarListEx;
12422
            	        }
12423
12424
12425
            	        {
12426
54161
            	             sortedVars.push_back(make_pair(name, t));
12427
            	        }
12428
12429
12430
            	    }
12431
54161
            	    break;
12432
12433
30842
            	default:
12434
30842
            	    goto loop62;	/* break out of the loop */
12435
            	    break;
12436
                }
12437
54161
            }
12438
30842
            loop62: ; /* Jump out to here if this rule does not match */
12439
12440
12441
        }
12442
12443
    }
12444
12445
    // This is where rules clean up and exit
12446
    //
12447
30842
    goto rulesortedVarListEx; /* Prevent compiler warnings */
12448
30842
    rulesortedVarListEx: ;
12449
12450
30842
            if (HASEXCEPTION())
12451
            {
12452
                PREPORTERROR();
12453
                PRECOVER();
12454
            }
12455
61684
    return ;
12456
}
12457
/* $ANTLR end sortedVarList */
12458
12459
/**
12460
 * $ANTLR start boundVarList
12461
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1950:1: boundVarList[cvc5::api::Term& expr] : LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK ;
12462
 */
12463
static void
12464
28439
boundVarList(pSmt2Parser ctx, cvc5::api::Term& expr)
12465
{
12466
12467
56878
      std::vector<std::pair<std::string, cvc5::api::Sort>> sortedVarNames;
12468
12469
    /* Initialize rule variables
12470
     */
12471
12472
    {
12473
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1954:2: ( LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK )
12474
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1954:4: LPAREN_TOK sortedVarList[sortedVarNames] RPAREN_TOK
12475
        {
12476
28439
             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_boundVarList4838);
12477
28439
            if  (HASEXCEPTION())
12478
            {
12479
                goto ruleboundVarListEx;
12480
            }
12481
12482
12483
28439
            FOLLOWPUSH(FOLLOW_sortedVarList_in_boundVarList4840);
12484
28439
            sortedVarList(ctx, sortedVarNames);
12485
12486
28438
            FOLLOWPOP();
12487
28438
            if  (HASEXCEPTION())
12488
            {
12489
                goto ruleboundVarListEx;
12490
            }
12491
12492
12493
28438
             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_boundVarList4843);
12494
28438
            if  (HASEXCEPTION())
12495
            {
12496
                goto ruleboundVarListEx;
12497
            }
12498
12499
12500
            {
12501
12502
                     std::vector<cvc5::api::Term> args =
12503
56876
                         PARSER_STATE->bindBoundVars(sortedVarNames);
12504
28438
                     expr = MK_TERM(api::BOUND_VAR_LIST, args);
12505
12506
            }
12507
12508
12509
        }
12510
12511
    }
12512
12513
    // This is where rules clean up and exit
12514
    //
12515
28438
    goto ruleboundVarListEx; /* Prevent compiler warnings */
12516
28438
    ruleboundVarListEx: ;
12517
12518
28438
            if (HASEXCEPTION())
12519
            {
12520
                PREPORTERROR();
12521
                PRECOVER();
12522
            }
12523
56876
    return ;
12524
}
12525
/* $ANTLR end boundVarList */
12526
12527
/**
12528
 * $ANTLR start sortName
12529
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1966:1: sortName[std::string& name, cvc5::parser::DeclarationCheck check] : symbol[name,check,SYM_SORT] ;
12530
 */
12531
static void
12532
270948
sortName(pSmt2Parser ctx, std::string& name, cvc5::parser::DeclarationCheck check)
12533
{
12534
    /* Initialize rule variables
12535
     */
12536
12537
    {
12538
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1967:3: ( symbol[name,check,SYM_SORT] )
12539
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1967:5: symbol[name,check,SYM_SORT]
12540
        {
12541
270948
            FOLLOWPUSH(FOLLOW_symbol_in_sortName4863);
12542
270948
            symbol(ctx, name, check, SYM_SORT);
12543
12544
270948
            FOLLOWPOP();
12545
270948
            if  (HASEXCEPTION())
12546
            {
12547
                goto rulesortNameEx;
12548
            }
12549
12550
12551
        }
12552
12553
    }
12554
12555
    // This is where rules clean up and exit
12556
    //
12557
270948
    goto rulesortNameEx; /* Prevent compiler warnings */
12558
270948
    rulesortNameEx: ;
12559
12560
270948
            if (HASEXCEPTION())
12561
            {
12562
                PREPORTERROR();
12563
                PRECOVER();
12564
            }
12565
270948
    return ;
12566
}
12567
/* $ANTLR end sortName */
12568
12569
/**
12570
 * $ANTLR start sortSymbol
12571
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1970:1: sortSymbol[cvc5::api::Sort& t, cvc5::parser::DeclarationCheck check] : ( sortName[name,CHECK_NONE] | LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK | LPAREN_TOK HO_ARROW_TOK sortList[args] RPAREN_TOK );
12572
 */
12573
static void
12574
292856
sortSymbol(pSmt2Parser ctx, cvc5::api::Sort& t, cvc5::parser::DeclarationCheck check)
12575
{
12576
12577
585712
      std::string name;
12578
585712
      std::vector<cvc5::api::Sort> args;
12579
585712
      std::vector<uint64_t> numerals;
12580
292856
      bool indexed = false;
12581
12582
    /* Initialize rule variables
12583
     */
12584
12585
    {
12586
        {
12587
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1977:3: ( sortName[name,CHECK_NONE] | LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK | LPAREN_TOK HO_ARROW_TOK sortList[args] RPAREN_TOK )
12588
12589
            ANTLR3_UINT32 alt65;
12590
12591
292856
            alt65=3;
12592
12593
292856
            switch ( LA(1) )
12594
            {
12595
270948
            case QUOTED_SYMBOL:
12596
            case SIMPLE_SYMBOL:
12597
            case UNTERMINATED_QUOTED_SYMBOL:
12598
            	{
12599
270948
            		alt65=1;
12600
            	}
12601
270948
                break;
12602
21908
            case LPAREN_TOK:
12603
            	{
12604
21908
            		switch ( LA(2) )
12605
            		{
12606
1126
            		case HO_ARROW_TOK:
12607
            			{
12608
1126
            				alt65=3;
12609
            			}
12610
1126
            		    break;
12611
20782
            		case INDEX_TOK:
12612
            		case QUOTED_SYMBOL:
12613
            		case SIMPLE_SYMBOL:
12614
            		case UNTERMINATED_QUOTED_SYMBOL:
12615
            			{
12616
20782
            				alt65=2;
12617
            			}
12618
20782
            		    break;
12619
12620
            		default:
12621
            		    CONSTRUCTEX();
12622
            		    EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
12623
            		    EXCEPTION->message      = (void *)"";
12624
            		    EXCEPTION->decisionNum  = 65;
12625
            		    EXCEPTION->state        = 4;
12626
12627
12628
            		    goto rulesortSymbolEx;
12629
12630
            		}
12631
12632
            	}
12633
21908
                break;
12634
12635
            default:
12636
                CONSTRUCTEX();
12637
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
12638
                EXCEPTION->message      = (void *)"";
12639
                EXCEPTION->decisionNum  = 65;
12640
                EXCEPTION->state        = 0;
12641
12642
12643
                goto rulesortSymbolEx;
12644
12645
            }
12646
12647
292856
            switch (alt65)
12648
            {
12649
270948
        	case 1:
12650
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1977:5: sortName[name,CHECK_NONE]
12651
        	    {
12652
270948
        	        FOLLOWPUSH(FOLLOW_sortName_in_sortSymbol4883);
12653
270948
        	        sortName(ctx, name, CHECK_NONE);
12654
12655
270948
        	        FOLLOWPOP();
12656
270948
        	        if  (HASEXCEPTION())
12657
        	        {
12658
        	            goto rulesortSymbolEx;
12659
        	        }
12660
12661
12662
        	        {
12663
12664
270948
        	                  if(check == CHECK_DECLARED || PARSER_STATE->isDeclared(name, SYM_SORT)) {
12665
270948
        	                    t = PARSER_STATE->getSort(name);
12666
        	                  } else {
12667
        	                    t = PARSER_STATE->mkUnresolvedType(name);
12668
        	                  }
12669
12670
        	        }
12671
12672
12673
        	    }
12674
270947
        	    break;
12675
20782
        	case 2:
12676
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1985:5: LPAREN_TOK ( INDEX_TOK |) symbol[name,CHECK_NONE,SYM_SORT] ( nonemptyNumeralList[numerals] | sortList[args] ) RPAREN_TOK
12677
        	    {
12678
20782
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortSymbol4896);
12679
20782
        	        if  (HASEXCEPTION())
12680
        	        {
12681
        	            goto rulesortSymbolEx;
12682
        	        }
12683
12684
12685
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1985:16: ( INDEX_TOK |)
12686
        	        {
12687
20782
        	            int alt63=2;
12688
20782
        	            switch ( LA(1) )
12689
        	            {
12690
16924
        	            case INDEX_TOK:
12691
        	            	{
12692
16924
        	            		alt63=1;
12693
        	            	}
12694
16924
        	                break;
12695
3858
        	            case QUOTED_SYMBOL:
12696
        	            case SIMPLE_SYMBOL:
12697
        	            case UNTERMINATED_QUOTED_SYMBOL:
12698
        	            	{
12699
3858
        	            		alt63=2;
12700
        	            	}
12701
3858
        	                break;
12702
12703
        	            default:
12704
        	                CONSTRUCTEX();
12705
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
12706
        	                EXCEPTION->message      = (void *)"";
12707
        	                EXCEPTION->decisionNum  = 63;
12708
        	                EXCEPTION->state        = 0;
12709
12710
12711
        	                goto rulesortSymbolEx;
12712
12713
        	            }
12714
12715
20782
        	            switch (alt63)
12716
        	            {
12717
16924
        	        	case 1:
12718
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1985:17: INDEX_TOK
12719
        	        	    {
12720
16924
        	        	         MATCHT(INDEX_TOK, &FOLLOW_INDEX_TOK_in_sortSymbol4899);
12721
16924
        	        	        if  (HASEXCEPTION())
12722
        	        	        {
12723
        	        	            goto rulesortSymbolEx;
12724
        	        	        }
12725
12726
12727
        	        	        {
12728
16924
        	        	            indexed = true;
12729
        	        	        }
12730
12731
12732
        	        	    }
12733
16924
        	        	    break;
12734
3858
        	        	case 2:
12735
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1985:47:
12736
        	        	    {
12737
        	        	        {
12738
3858
        	        	            indexed = false;
12739
        	        	        }
12740
12741
12742
        	        	    }
12743
3858
        	        	    break;
12744
12745
        	            }
12746
        	        }
12747
12748
20782
        	        FOLLOWPUSH(FOLLOW_symbol_in_sortSymbol4912);
12749
20782
        	        symbol(ctx, name, CHECK_NONE, SYM_SORT);
12750
12751
20782
        	        FOLLOWPOP();
12752
20782
        	        if  (HASEXCEPTION())
12753
        	        {
12754
        	            goto rulesortSymbolEx;
12755
        	        }
12756
12757
12758
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1987:5: ( nonemptyNumeralList[numerals] | sortList[args] )
12759
        	        {
12760
20782
        	            int alt64=2;
12761
20782
        	            switch ( LA(1) )
12762
        	            {
12763
16924
        	            case INTEGER_LITERAL:
12764
        	            	{
12765
16924
        	            		alt64=1;
12766
        	            	}
12767
16924
        	                break;
12768
3858
        	            case LPAREN_TOK:
12769
        	            case QUOTED_SYMBOL:
12770
        	            case RPAREN_TOK:
12771
        	            case SIMPLE_SYMBOL:
12772
        	            case UNTERMINATED_QUOTED_SYMBOL:
12773
        	            	{
12774
3858
        	            		alt64=2;
12775
        	            	}
12776
3858
        	                break;
12777
12778
        	            default:
12779
        	                CONSTRUCTEX();
12780
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
12781
        	                EXCEPTION->message      = (void *)"";
12782
        	                EXCEPTION->decisionNum  = 64;
12783
        	                EXCEPTION->state        = 0;
12784
12785
12786
        	                goto rulesortSymbolEx;
12787
12788
        	            }
12789
12790
20782
        	            switch (alt64)
12791
        	            {
12792
16924
        	        	case 1:
12793
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:1987:7: nonemptyNumeralList[numerals]
12794
        	        	    {
12795
16924
        	        	        FOLLOWPUSH(FOLLOW_nonemptyNumeralList_in_sortSymbol4921);
12796
16924
        	        	        nonemptyNumeralList(ctx, numerals);
12797
12798
16924
        	        	        FOLLOWPOP();
12799
16924
        	        	        if  (HASEXCEPTION())
12800
        	        	        {
12801
        	        	            goto rulesortSymbolEx;
12802
        	        	        }
12803
12804
12805
        	        	        {
12806
12807
16924
        	        	                    if (!indexed)
12808
        	        	                    {
12809
        	        	                      std::stringstream ss;
12810
        	        	                      ss << "SMT-LIB requires use of an indexed sort here, e.g. (_ " << name
12811
        	        	                         << " ...)";
12812
        	        	                      PARSER_STATE->parseError(ss.str());
12813
        	        	                    }
12814
16924
        	        	                    if( name == "BitVec" ) {
12815
16781
        	        	                      if( numerals.size() != 1 ) {
12816
        	        	                        PARSER_STATE->parseError("Illegal bitvector type.");
12817
        	        	                      }
12818
16781
        	        	                      if(numerals.front() == 0) {
12819
        	        	                        PARSER_STATE->parseError("Illegal bitvector size: 0");
12820
        	        	                      }
12821
16781
        	        	                      t = SOLVER->mkBitVectorSort(numerals.front());
12822
143
        	        	                    } else if ( name == "FloatingPoint" ) {
12823
143
        	        	                      if( numerals.size() != 2 ) {
12824
        	        	                        PARSER_STATE->parseError("Illegal floating-point type.");
12825
        	        	                      }
12826
143
        	        	                      if(!validExponentSize(numerals[0])) {
12827
        	        	                        PARSER_STATE->parseError("Illegal floating-point exponent size");
12828
        	        	                      }
12829
143
        	        	                      if(!validSignificandSize(numerals[1])) {
12830
        	        	                        PARSER_STATE->parseError("Illegal floating-point significand size");
12831
        	        	                      }
12832
143
        	        	                      t = SOLVER->mkFloatingPointSort(numerals[0],numerals[1]);
12833
        	        	                    } else {
12834
        	        	                      std::stringstream ss;
12835
        	        	                      ss << "unknown indexed sort symbol `" << name << "'";
12836
        	        	                      PARSER_STATE->parseError(ss.str());
12837
        	        	                    }
12838
12839
        	        	        }
12840
12841
12842
        	        	    }
12843
16924
        	        	    break;
12844
3858
        	        	case 2:
12845
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2021:7: sortList[args]
12846
        	        	    {
12847
3858
        	        	        FOLLOWPUSH(FOLLOW_sortList_in_sortSymbol4938);
12848
3858
        	        	        sortList(ctx, args);
12849
12850
3858
        	        	        FOLLOWPOP();
12851
3858
        	        	        if  (HASEXCEPTION())
12852
        	        	        {
12853
        	        	            goto rulesortSymbolEx;
12854
        	        	        }
12855
12856
12857
        	        	        {
12858
3858
        	        	             if( indexed ) {
12859
        	        	                      std::stringstream ss;
12860
        	        	                      ss << "Unexpected use of indexing operator `_' before `" << name
12861
        	        	                         << "', try leaving it out";
12862
        	        	                      PARSER_STATE->parseError(ss.str());
12863
        	        	                    }
12864
3858
        	        	                    if(args.empty()) {
12865
        	        	                      PARSER_STATE->parseError("Extra parentheses around sort name not "
12866
        	        	                                               "permitted in SMT-LIB");
12867
5901
        	        	                    } else if(name == "Array" &&
12868
2043
        	        	                       PARSER_STATE->isTheoryEnabled(theory::THEORY_ARRAYS) ) {
12869
2041
        	        	                      if(args.size() != 2) {
12870
        	        	                        PARSER_STATE->parseError("Illegal array type.");
12871
        	        	                      }
12872
2041
        	        	                      t = SOLVER->mkArraySort( args[0], args[1] );
12873
2849
        	        	                    } else if(name == "Set" &&
12874
1032
        	        	                              PARSER_STATE->isTheoryEnabled(theory::THEORY_SETS) ) {
12875
960
        	        	                      if(args.size() != 1) {
12876
        	        	                        PARSER_STATE->parseError("Illegal set type.");
12877
        	        	                      }
12878
960
        	        	                      t = SOLVER->mkSetSort( args[0] );
12879
        	        	                    }
12880
939
        	        	                    else if(name == "Bag" &&
12881
82
        	        	                              PARSER_STATE->isTheoryEnabled(theory::THEORY_BAGS) ) {
12882
82
        	        	                      if(args.size() != 1) {
12883
        	        	                        PARSER_STATE->parseError("Illegal bag type.");
12884
        	        	                      }
12885
82
        	        	                      t = SOLVER->mkBagSort( args[0] );
12886
        	        	                    }
12887
960
        	        	                    else if(name == "Seq" && !PARSER_STATE->strictModeEnabled() &&
12888
185
        	        	                              PARSER_STATE->isTheoryEnabled(theory::THEORY_STRINGS) ) {
12889
185
        	        	                      if(args.size() != 1) {
12890
        	        	                        PARSER_STATE->parseError("Illegal sequence type.");
12891
        	        	                      }
12892
185
        	        	                      t = SOLVER->mkSequenceSort( args[0] );
12893
590
        	        	                    } else if (name == "Tuple" && !PARSER_STATE->strictModeEnabled()) {
12894
36
        	        	                      t = SOLVER->mkTupleSort(args);
12895
576
        	        	                    } else if(check == CHECK_DECLARED ||
12896
22
        	        	                              PARSER_STATE->isDeclared(name, SYM_SORT)) {
12897
554
        	        	                      t = PARSER_STATE->getSort(name, args);
12898
        	        	                    } else {
12899
        	        	                      // make unresolved type
12900
        	        	                      if(args.empty()) {
12901
        	        	                        t = PARSER_STATE->mkUnresolvedType(name);
12902
        	        	                        Debug("parser-param") << "param: make unres type " << name
12903
        	        	                                              << std::endl;
12904
        	        	                      } else {
12905
        	        	                        t = PARSER_STATE->mkUnresolvedTypeConstructor(name,args);
12906
        	        	                        t = t.instantiate( args );
12907
        	        	                        Debug("parser-param")
12908
        	        	                            << "param: make unres param type " << name << " " << args.size()
12909
        	        	                            << " " << PARSER_STATE->getArity( name ) << std::endl;
12910
        	        	                      }
12911
        	        	                    }
12912
12913
        	        	        }
12914
12915
12916
        	        	    }
12917
3856
        	        	    break;
12918
12919
        	            }
12920
        	        }
12921
12922
20780
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortSymbol4955);
12923
20780
        	        if  (HASEXCEPTION())
12924
        	        {
12925
        	            goto rulesortSymbolEx;
12926
20780
        	        }
12927
12928
12929
        	    }
12930
20780
        	    break;
12931
1126
        	case 3:
12932
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2078:5: LPAREN_TOK HO_ARROW_TOK sortList[args] RPAREN_TOK
12933
        	    {
12934
1126
        	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_sortSymbol4961);
12935
1126
        	        if  (HASEXCEPTION())
12936
        	        {
12937
        	            goto rulesortSymbolEx;
12938
        	        }
12939
12940
12941
1126
        	         MATCHT(HO_ARROW_TOK, &FOLLOW_HO_ARROW_TOK_in_sortSymbol4963);
12942
1126
        	        if  (HASEXCEPTION())
12943
        	        {
12944
        	            goto rulesortSymbolEx;
12945
        	        }
12946
12947
12948
1126
        	        FOLLOWPUSH(FOLLOW_sortList_in_sortSymbol4965);
12949
1126
        	        sortList(ctx, args);
12950
12951
1126
        	        FOLLOWPOP();
12952
1126
        	        if  (HASEXCEPTION())
12953
        	        {
12954
        	            goto rulesortSymbolEx;
12955
        	        }
12956
12957
12958
1126
        	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_sortSymbol4968);
12959
1126
        	        if  (HASEXCEPTION())
12960
        	        {
12961
        	            goto rulesortSymbolEx;
12962
        	        }
12963
12964
12965
        	        {
12966
12967
1126
        	                  if(args.size()<2) {
12968
        	                    PARSER_STATE->parseError("Arrow types must have at least 2 arguments");
12969
        	                  }
12970
        	                  //flatten the type
12971
2252
        	                  api::Sort rangeType = args.back();
12972
1126
        	                  args.pop_back();
12973
1126
        	                  t = PARSER_STATE->mkFlatFunctionType( args, rangeType );
12974
12975
1126
        	        }
12976
12977
12978
        	    }
12979
1126
        	    break;
12980
12981
            }
12982
        }
12983
    }
12984
12985
    // This is where rules clean up and exit
12986
    //
12987
292853
    goto rulesortSymbolEx; /* Prevent compiler warnings */
12988
292853
    rulesortSymbolEx: ;
12989
12990
292853
            if (HASEXCEPTION())
12991
            {
12992
                PREPORTERROR();
12993
                PRECOVER();
12994
            }
12995
585706
    return ;
12996
}
12997
/* $ANTLR end sortSymbol */
12998
12999
/**
13000
 * $ANTLR start symbolList
13001
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2094:1: symbolList[std::vector<std::string>& names,\n cvc5::parser::DeclarationCheck check,\n cvc5::parser::SymbolType type] : ( symbol[id,check,type] )* ;
13002
 */
13003
static void
13004
206
symbolList(pSmt2Parser ctx, std::vector<std::string>& names, cvc5::parser::DeclarationCheck check, cvc5::parser::SymbolType type)
13005
{
13006
13007
412
      std::string id;
13008
13009
    /* Initialize rule variables
13010
     */
13011
13012
    {
13013
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2100:3: ( ( symbol[id,check,type] )* )
13014
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2100:5: ( symbol[id,check,type] )*
13015
        {
13016
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2100:5: ( symbol[id,check,type] )*
13017
13018
            for (;;)
13019
            {
13020
208
                int alt66=2;
13021
208
                switch ( LA(1) )
13022
                {
13023
2
                case QUOTED_SYMBOL:
13024
                case SIMPLE_SYMBOL:
13025
                case UNTERMINATED_QUOTED_SYMBOL:
13026
                	{
13027
2
                		alt66=1;
13028
                	}
13029
2
                    break;
13030
13031
                }
13032
13033
208
                switch (alt66)
13034
                {
13035
2
            	case 1:
13036
            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2100:7: symbol[id,check,type]
13037
            	    {
13038
2
            	        FOLLOWPUSH(FOLLOW_symbol_in_symbolList4997);
13039
2
            	        symbol(ctx, id, check, type);
13040
13041
2
            	        FOLLOWPOP();
13042
2
            	        if  (HASEXCEPTION())
13043
            	        {
13044
            	            goto rulesymbolListEx;
13045
            	        }
13046
13047
13048
            	        {
13049
2
            	             names.push_back(id);
13050
            	        }
13051
13052
13053
            	    }
13054
2
            	    break;
13055
13056
206
            	default:
13057
206
            	    goto loop66;	/* break out of the loop */
13058
            	    break;
13059
                }
13060
2
            }
13061
206
            loop66: ; /* Jump out to here if this rule does not match */
13062
13063
13064
        }
13065
13066
    }
13067
13068
    // This is where rules clean up and exit
13069
    //
13070
206
    goto rulesymbolListEx; /* Prevent compiler warnings */
13071
206
    rulesymbolListEx: ;
13072
13073
206
            if (HASEXCEPTION())
13074
            {
13075
                PREPORTERROR();
13076
                PRECOVER();
13077
            }
13078
412
    return ;
13079
}
13080
/* $ANTLR end symbolList */
13081
13082
/**
13083
 * $ANTLR start symbol
13084
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2109:1: symbol[std::string& id,\n cvc5::parser::DeclarationCheck check,\n cvc5::parser::SymbolType type] : ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' ) );
13085
 */
13086
static void
13087
7459706
symbol(pSmt2Parser ctx, std::string& id, cvc5::parser::DeclarationCheck check, cvc5::parser::SymbolType type)
13088
{
13089
    pANTLR3_COMMON_TOKEN    SIMPLE_SYMBOL19;
13090
    pANTLR3_COMMON_TOKEN    QUOTED_SYMBOL20;
13091
13092
    /* Initialize rule variables
13093
     */
13094
13095
7459706
    SIMPLE_SYMBOL19       = NULL;
13096
7459706
    QUOTED_SYMBOL20       = NULL;
13097
13098
    {
13099
        {
13100
            //  /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2112:3: ( SIMPLE_SYMBOL | QUOTED_SYMBOL | UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' ) )
13101
13102
            ANTLR3_UINT32 alt68;
13103
13104
7459706
            alt68=3;
13105
13106
7459706
            switch ( LA(1) )
13107
            {
13108
7456936
            case SIMPLE_SYMBOL:
13109
            	{
13110
7456936
            		alt68=1;
13111
            	}
13112
7456936
                break;
13113
2770
            case QUOTED_SYMBOL:
13114
            	{
13115
2770
            		alt68=2;
13116
            	}
13117
2770
                break;
13118
            case UNTERMINATED_QUOTED_SYMBOL:
13119
            	{
13120
            		alt68=3;
13121
            	}
13122
                break;
13123
13124
            default:
13125
                CONSTRUCTEX();
13126
                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
13127
                EXCEPTION->message      = (void *)"";
13128
                EXCEPTION->decisionNum  = 68;
13129
                EXCEPTION->state        = 0;
13130
13131
13132
                goto rulesymbolEx;
13133
13134
            }
13135
13136
7459706
            switch (alt68)
13137
            {
13138
7456936
        	case 1:
13139
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2112:5: SIMPLE_SYMBOL
13140
        	    {
13141
7456936
        	        SIMPLE_SYMBOL19 = (pANTLR3_COMMON_TOKEN) MATCHT(SIMPLE_SYMBOL, &FOLLOW_SIMPLE_SYMBOL_in_symbol5019);
13142
7456936
        	        if  (HASEXCEPTION())
13143
        	        {
13144
        	            goto rulesymbolEx;
13145
        	        }
13146
13147
13148
        	        {
13149
7456936
        	             id = AntlrInput::tokenText(SIMPLE_SYMBOL19);
13150
7456936
        	                  if(!PARSER_STATE->isAbstractValue(id)) {
13151
        	                    // if an abstract value, SmtEngine handles declaration
13152
7456926
        	                    PARSER_STATE->checkDeclaration(id, check, type);
13153
        	                  }
13154
13155
        	        }
13156
13157
13158
        	    }
13159
7456934
        	    break;
13160
2770
        	case 2:
13161
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2119:5: QUOTED_SYMBOL
13162
        	    {
13163
2770
        	        QUOTED_SYMBOL20 = (pANTLR3_COMMON_TOKEN) MATCHT(QUOTED_SYMBOL, &FOLLOW_QUOTED_SYMBOL_in_symbol5031);
13164
2770
        	        if  (HASEXCEPTION())
13165
        	        {
13166
        	            goto rulesymbolEx;
13167
        	        }
13168
13169
13170
        	        {
13171
2770
        	             id = AntlrInput::tokenText(QUOTED_SYMBOL20);
13172
        	                  /* strip off the quotes */
13173
2770
        	                  id = id.substr(1, id.size() - 2);
13174
2770
        	                  if(!PARSER_STATE->isAbstractValue(id)) {
13175
        	                    // if an abstract value, SmtEngine handles declaration
13176
2770
        	                    PARSER_STATE->checkDeclaration(id, check, type);
13177
        	                  }
13178
13179
        	        }
13180
13181
13182
        	    }
13183
2770
        	    break;
13184
        	case 3:
13185
        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2128:5: UNTERMINATED_QUOTED_SYMBOL ( EOF | '\\\\' )
13186
        	    {
13187
        	         MATCHT(UNTERMINATED_QUOTED_SYMBOL, &FOLLOW_UNTERMINATED_QUOTED_SYMBOL_in_symbol5043);
13188
        	        if  (HASEXCEPTION())
13189
        	        {
13190
        	            goto rulesymbolEx;
13191
        	        }
13192
13193
13194
        	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2129:5: ( EOF | '\\\\' )
13195
        	        {
13196
        	            int alt67=2;
13197
        	            switch ( LA(1) )
13198
        	            {
13199
        	            case EOF:
13200
        	            	{
13201
        	            		alt67=1;
13202
        	            	}
13203
        	                break;
13204
        	            case 108:
13205
        	            	{
13206
        	            		alt67=2;
13207
        	            	}
13208
        	                break;
13209
13210
        	            default:
13211
        	                CONSTRUCTEX();
13212
        	                EXCEPTION->type         = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
13213
        	                EXCEPTION->message      = (void *)"";
13214
        	                EXCEPTION->decisionNum  = 67;
13215
        	                EXCEPTION->state        = 0;
13216
13217
13218
        	                goto rulesymbolEx;
13219
13220
        	            }
13221
13222
        	            switch (alt67)
13223
        	            {
13224
        	        	case 1:
13225
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2129:7: EOF
13226
        	        	    {
13227
        	        	         MATCHT(EOF, &FOLLOW_EOF_in_symbol5051);
13228
        	        	        if  (HASEXCEPTION())
13229
        	        	        {
13230
        	        	            goto rulesymbolEx;
13231
        	        	        }
13232
13233
13234
        	        	        {
13235
        	        	             PARSER_STATE->unexpectedEOF("unterminated |quoted| symbol");
13236
        	        	        }
13237
13238
13239
        	        	    }
13240
        	        	    break;
13241
        	        	case 2:
13242
        	        	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2131:7: '\\\\'
13243
        	        	    {
13244
        	        	         MATCHT(108, &FOLLOW_108_in_symbol5067);
13245
        	        	        if  (HASEXCEPTION())
13246
        	        	        {
13247
        	        	            goto rulesymbolEx;
13248
        	        	        }
13249
13250
13251
        	        	        {
13252
        	        	             PARSER_STATE->unexpectedEOF("backslash not permitted in |quoted| "
13253
        	        	                                                "symbol");
13254
        	        	        }
13255
13256
13257
        	        	    }
13258
        	        	    break;
13259
13260
        	            }
13261
        	        }
13262
13263
        	    }
13264
        	    break;
13265
13266
            }
13267
        }
13268
    }
13269
13270
    // This is where rules clean up and exit
13271
    //
13272
7459704
    goto rulesymbolEx; /* Prevent compiler warnings */
13273
7459704
    rulesymbolEx: ;
13274
13275
7459704
            if (HASEXCEPTION())
13276
            {
13277
                PREPORTERROR();
13278
                PRECOVER();
13279
            }
13280
7459704
    return ;
13281
}
13282
/* $ANTLR end symbol */
13283
13284
/**
13285
 * $ANTLR start nonemptyNumeralList
13286
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2141:1: nonemptyNumeralList[std::vector<uint64_t>& numerals] : ( INTEGER_LITERAL )+ ;
13287
 */
13288
static void
13289
196093
nonemptyNumeralList(pSmt2Parser ctx, std::vector<uint64_t>& numerals)
13290
{
13291
    pANTLR3_COMMON_TOKEN    INTEGER_LITERAL21;
13292
13293
    /* Initialize rule variables
13294
     */
13295
13296
196093
    INTEGER_LITERAL21       = NULL;
13297
13298
    {
13299
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2142:3: ( ( INTEGER_LITERAL )+ )
13300
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2142:5: ( INTEGER_LITERAL )+
13301
        {
13302
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2142:5: ( INTEGER_LITERAL )+
13303
            {
13304
196093
                int cnt69=0;
13305
13306
                for (;;)
13307
                {
13308
405349
                    int alt69=2;
13309
405349
            	switch ( LA(1) )
13310
            	{
13311
209256
            	case INTEGER_LITERAL:
13312
            		{
13313
209256
            			alt69=1;
13314
            		}
13315
209256
            	    break;
13316
13317
            	}
13318
13319
405349
            	switch (alt69)
13320
            	{
13321
209256
            	    case 1:
13322
            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2142:7: INTEGER_LITERAL
13323
            	        {
13324
209256
            	            INTEGER_LITERAL21 = (pANTLR3_COMMON_TOKEN) MATCHT(INTEGER_LITERAL, &FOLLOW_INTEGER_LITERAL_in_nonemptyNumeralList5099);
13325
209256
            	            if  (HASEXCEPTION())
13326
            	            {
13327
            	                goto rulenonemptyNumeralListEx;
13328
            	            }
13329
13330
13331
            	            {
13332
209256
            	                 numerals.push_back(AntlrInput::tokenToUnsigned(INTEGER_LITERAL21));
13333
            	            }
13334
13335
13336
            	        }
13337
209256
            	        break;
13338
13339
196093
            	    default:
13340
13341
196093
            		if ( cnt69 >= 1 )
13342
            		{
13343
196093
            		    goto loop69;
13344
            		}
13345
            		/* mismatchedSetEx()
13346
            		 */
13347
            		CONSTRUCTEX();
13348
            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
13349
            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
13350
13351
13352
            		goto rulenonemptyNumeralListEx;
13353
            	}
13354
209256
            	cnt69++;
13355
209256
                }
13356
196093
                loop69: ;	/* Jump to here if this rule does not match */
13357
            }
13358
13359
        }
13360
13361
    }
13362
13363
    // This is where rules clean up and exit
13364
    //
13365
196093
    goto rulenonemptyNumeralListEx; /* Prevent compiler warnings */
13366
196093
    rulenonemptyNumeralListEx: ;
13367
13368
196093
            if (HASEXCEPTION())
13369
            {
13370
                PREPORTERROR();
13371
                PRECOVER();
13372
            }
13373
196093
    return ;
13374
}
13375
/* $ANTLR end nonemptyNumeralList */
13376
13377
/**
13378
 * $ANTLR start datatypeDef
13379
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2150:1: datatypeDef[bool isCo, std::vector<cvc5::api::DatatypeDecl>& datatypes,\n std::vector< cvc5::api::Sort >& params] : symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+ ;
13380
 */
13381
static void
13382
datatypeDef(pSmt2Parser ctx, bool isCo, std::vector<cvc5::api::DatatypeDecl>& datatypes, std::vector< cvc5::api::Sort >& params)
13383
{
13384
    /* Initialize rule variables
13385
     */
13386
13387
13388
      std::string id;
13389
13390
    {
13391
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2159:3: ( symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+ )
13392
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2159:5: symbol[id,CHECK_NONE,SYM_SORT] ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
13393
        {
13394
            FOLLOWPUSH(FOLLOW_symbol_in_datatypeDef5141);
13395
            symbol(ctx, id, CHECK_NONE, SYM_SORT);
13396
13397
            FOLLOWPOP();
13398
            if  (HASEXCEPTION())
13399
            {
13400
                goto ruledatatypeDefEx;
13401
            }
13402
13403
13404
            {
13405
                 PARSER_STATE->pushScope();
13406
            }
13407
13408
13409
            {
13410
13411
                      datatypes.push_back(SOLVER->mkDatatypeDecl(id, params, isCo));
13412
13413
            }
13414
13415
13416
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2163:5: ( LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK )+
13417
            {
13418
                int cnt70=0;
13419
13420
                for (;;)
13421
                {
13422
                    int alt70=2;
13423
            	switch ( LA(1) )
13424
            	{
13425
            	case LPAREN_TOK:
13426
            		{
13427
            			alt70=1;
13428
            		}
13429
            	    break;
13430
13431
            	}
13432
13433
            	switch (alt70)
13434
            	{
13435
            	    case 1:
13436
            	        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2163:7: LPAREN_TOK constructorDef[datatypes.back()] RPAREN_TOK
13437
            	        {
13438
            	             MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_datatypeDef5158);
13439
            	            if  (HASEXCEPTION())
13440
            	            {
13441
            	                goto ruledatatypeDefEx;
13442
            	            }
13443
13444
13445
            	            FOLLOWPUSH(FOLLOW_constructorDef_in_datatypeDef5160);
13446
            	            constructorDef(ctx, datatypes.back());
13447
13448
            	            FOLLOWPOP();
13449
            	            if  (HASEXCEPTION())
13450
            	            {
13451
            	                goto ruledatatypeDefEx;
13452
            	            }
13453
13454
13455
            	             MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_datatypeDef5163);
13456
            	            if  (HASEXCEPTION())
13457
            	            {
13458
            	                goto ruledatatypeDefEx;
13459
            	            }
13460
13461
13462
            	        }
13463
            	        break;
13464
13465
            	    default:
13466
13467
            		if ( cnt70 >= 1 )
13468
            		{
13469
            		    goto loop70;
13470
            		}
13471
            		/* mismatchedSetEx()
13472
            		 */
13473
            		CONSTRUCTEX();
13474
            		EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION;
13475
            		EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME;
13476
13477
13478
            		goto ruledatatypeDefEx;
13479
            	}
13480
            	cnt70++;
13481
                }
13482
                loop70: ;	/* Jump to here if this rule does not match */
13483
            }
13484
13485
            {
13486
                 PARSER_STATE->popScope();
13487
            }
13488
13489
13490
        }
13491
13492
    }
13493
13494
    // This is where rules clean up and exit
13495
    //
13496
    goto ruledatatypeDefEx; /* Prevent compiler warnings */
13497
    ruledatatypeDefEx: ;
13498
13499
            if (HASEXCEPTION())
13500
            {
13501
                PREPORTERROR();
13502
                PRECOVER();
13503
            }
13504
    return ;
13505
}
13506
/* $ANTLR end datatypeDef */
13507
13508
/**
13509
 * $ANTLR start constructorDef
13510
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2170:1: constructorDef[cvc5::api::DatatypeDecl& type] : symbol[id,CHECK_NONE,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )* ;
13511
 */
13512
static void
13513
1953
constructorDef(pSmt2Parser ctx, cvc5::api::DatatypeDecl& type)
13514
{
13515
    /* Initialize rule variables
13516
     */
13517
13518
13519
3906
      std::string id;
13520
1953
      cvc5::api::DatatypeConstructorDecl* ctor = NULL;
13521
13522
    {
13523
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2175:3: ( symbol[id,CHECK_NONE,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )* )
13524
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2175:5: symbol[id,CHECK_NONE,SYM_VARIABLE] ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
13525
        {
13526
1953
            FOLLOWPUSH(FOLLOW_symbol_in_constructorDef5193);
13527
1953
            symbol(ctx, id, CHECK_NONE, SYM_VARIABLE);
13528
13529
1953
            FOLLOWPOP();
13530
1953
            if  (HASEXCEPTION())
13531
            {
13532
                goto ruleconstructorDefEx;
13533
            }
13534
13535
13536
            {
13537
13538
1953
                      ctor = new api::DatatypeConstructorDecl(
13539
1953
                          SOLVER->mkDatatypeConstructorDecl(id));
13540
13541
            }
13542
13543
13544
            // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2180:5: ( LPAREN_TOK selector[*ctor] RPAREN_TOK )*
13545
13546
            for (;;)
13547
            {
13548
4116
                int alt71=2;
13549
4116
                switch ( LA(1) )
13550
                {
13551
2163
                case LPAREN_TOK:
13552
                	{
13553
2163
                		alt71=1;
13554
                	}
13555
2163
                    break;
13556
13557
                }
13558
13559
4116
                switch (alt71)
13560
                {
13561
2163
            	case 1:
13562
            	    // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2180:7: LPAREN_TOK selector[*ctor] RPAREN_TOK
13563
            	    {
13564
2163
            	         MATCHT(LPAREN_TOK, &FOLLOW_LPAREN_TOK_in_constructorDef5208);
13565
2163
            	        if  (HASEXCEPTION())
13566
            	        {
13567
            	            goto ruleconstructorDefEx;
13568
            	        }
13569
13570
13571
2163
            	        FOLLOWPUSH(FOLLOW_selector_in_constructorDef5210);
13572
2163
            	        selector(ctx, *ctor);
13573
13574
2163
            	        FOLLOWPOP();
13575
2163
            	        if  (HASEXCEPTION())
13576
            	        {
13577
            	            goto ruleconstructorDefEx;
13578
            	        }
13579
13580
13581
2163
            	         MATCHT(RPAREN_TOK, &FOLLOW_RPAREN_TOK_in_constructorDef5213);
13582
2163
            	        if  (HASEXCEPTION())
13583
            	        {
13584
            	            goto ruleconstructorDefEx;
13585
            	        }
13586
13587
13588
            	    }
13589
2163
            	    break;
13590
13591
1953
            	default:
13592
1953
            	    goto loop71;	/* break out of the loop */
13593
            	    break;
13594
                }
13595
2163
            }
13596
1953
            loop71: ; /* Jump out to here if this rule does not match */
13597
13598
13599
            {
13600
                 // make the constructor
13601
1953
                      type.addConstructor(*ctor);
13602
1953
                      Debug("parser-idt") << "constructor: " << id.c_str() << std::endl;
13603
1953
                      delete ctor;
13604
13605
            }
13606
13607
13608
        }
13609
13610
    }
13611
13612
    // This is where rules clean up and exit
13613
    //
13614
1953
    goto ruleconstructorDefEx; /* Prevent compiler warnings */
13615
1953
    ruleconstructorDefEx: ;
13616
13617
1953
            if (HASEXCEPTION())
13618
            {
13619
                PREPORTERROR();
13620
                PRECOVER();
13621
            }
13622
3906
    return ;
13623
}
13624
/* $ANTLR end constructorDef */
13625
13626
/**
13627
 * $ANTLR start selector
13628
 * /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2188:1: selector[cvc5::api::DatatypeConstructorDecl& ctor] : symbol[id,CHECK_NONE,SYM_SORT] sortSymbol[t,CHECK_NONE] ;
13629
 */
13630
static void
13631
2163
selector(pSmt2Parser ctx, cvc5::api::DatatypeConstructorDecl& ctor)
13632
{
13633
    /* Initialize rule variables
13634
     */
13635
13636
13637
4326
      std::string id;
13638
4326
      cvc5::api::Sort t, t2;
13639
13640
    {
13641
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2193:3: ( symbol[id,CHECK_NONE,SYM_SORT] sortSymbol[t,CHECK_NONE] )
13642
        // /barrett/scratch/cvc4-nightly/src/cvc5-2021-05-22/src/parser/smt2/Smt2.g:2193:5: symbol[id,CHECK_NONE,SYM_SORT] sortSymbol[t,CHECK_NONE]
13643
        {
13644
2163
            FOLLOWPUSH(FOLLOW_symbol_in_selector5241);
13645
2163
            symbol(ctx, id, CHECK_NONE, SYM_SORT);
13646
13647
2163
            FOLLOWPOP();
13648
2163
            if  (HASEXCEPTION())
13649
            {
13650
                goto ruleselectorEx;
13651
            }
13652
13653
13654
2163
            FOLLOWPUSH(FOLLOW_sortSymbol_in_selector5244);
13655
2163
            sortSymbol(ctx, t, CHECK_NONE);
13656
13657
2163
            FOLLOWPOP();
13658
2163
            if  (HASEXCEPTION())
13659
            {
13660
                goto ruleselectorEx;
13661
            }
13662
13663
13664
            {
13665
13666
2163
                      ctor.addSelector(id, t);
13667
4326
                      Debug("parser-idt") << "selector: " << id.c_str()
13668
2163
                                          << " of type " << t << std::endl;
13669
13670
            }
13671
13672
13673
        }
13674
13675
    }
13676
13677
    // This is where rules clean up and exit
13678
    //
13679
2163
    goto ruleselectorEx; /* Prevent compiler warnings */
13680
2163
    ruleselectorEx: ;
13681
13682
2163
            if (HASEXCEPTION())
13683
            {
13684
                PREPORTERROR();
13685
                PRECOVER();
13686
            }
13687
4326
    return ;
13688
28182
}
13689
/* $ANTLR end selector */
13690
/* End of parsing rules
13691
 * ==============================================
13692
 */
13693
13694
/* ==============================================
13695
 * Syntactic predicates
13696
 */
13697
/* End of syntactic predicates
13698
 * ==============================================
13699
 */
13700
13701
13702
13703
13704
13705
13706
/* End of code
13707
 * =============================================================================
13708
 */