GCC Code Coverage Report
Directory: . Exec Total Coverage
File: build-coverage/src/parser/smt2/Smt2Parser.c Lines: 3333 4585 72.7 %
Date: 2021-09-30 Branches: 2560 5639 45.4 %

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