GCC Code Coverage Report
Directory: . Exec Total Coverage
File: build-coverage/src/parser/smt2/Smt2Parser.c Lines: 3265 4493 72.7 %
Date: 2021-11-07 Branches: 2487 5487 45.3 %

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