GCC Code Coverage Report
Directory: . Exec Total Coverage
File: build-coverage/src/expr/type_checker.cpp Lines: 849 945 89.8 %
Date: 2021-09-29 Branches: 1150 2228 51.6 %

Line Exec Source
1
/******************************************************************************
2
 * This file is part of the cvc5 project.
3
 *
4
 * Copyright (c) 2010-2021 by the authors listed in the file AUTHORS
5
 * in the top-level source directory and their institutional affiliations.
6
 * All rights reserved.  See the file COPYING in the top-level source
7
 * directory for licensing information.
8
 * ****************************************************************************
9
 *
10
 * This file was automatically generated by:
11
 *
12
 *     ../../../src/expr/mkexpr /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/expr/type_checker_template.cpp /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/builtin/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/booleans/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/uf/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/arith/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/bv/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/fp/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/arrays/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/datatypes/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/sep/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/sets/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/bags/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/strings/kinds /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/theory/quantifiers/kinds
13
 *
14
 * for the cvc5 project.
15
 */
16
17
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
18
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
19
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
20
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
21
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
22
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
23
24
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
25
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
26
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
27
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
28
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
29
/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT ! */
30
31
/* Edit the template file instead:                     */
32
/* /barrett/scratch/cvc4-nightly/src/cvc5-2021-09-29/src/expr/type_checker_template.cpp */
33
34
/******************************************************************************
35
 * Top contributors (to current version):
36
 *   Morgan Deters, Dejan Jovanovic, Mathias Preiner
37
 *
38
 * This file is part of the cvc5 project.
39
 *
40
 * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
41
 * in the top-level source directory and their institutional affiliations.
42
 * All rights reserved.  See the file COPYING in the top-level source
43
 * directory for licensing information.
44
 * ****************************************************************************
45
 *
46
 * TypeChecker implementation.
47
 */
48
49
#include <sstream>
50
51
#include "expr/node_manager.h"
52
#include "expr/node_manager_attributes.h"
53
#include "expr/type_checker.h"
54
#include "expr/type_checker_util.h"
55
56
// clang-format off
57
58
#include "theory/builtin/theory_builtin_type_rules.h"
59
#include "theory/booleans/theory_bool_type_rules.h"
60
#include "theory/uf/theory_uf_type_rules.h"
61
#include "theory/arith/theory_arith_type_rules.h"
62
#include "theory/bv/theory_bv_type_rules.h"
63
#include "theory/fp/theory_fp_type_rules.h"
64
#include "theory/arrays/theory_arrays_type_rules.h"
65
#include "theory/datatypes/theory_datatypes_type_rules.h"
66
#include "theory/sep/theory_sep_type_rules.h"
67
#include "theory/sets/theory_sets_type_rules.h"
68
#include "theory/bags/theory_bags_type_rules.h"
69
#include "theory/strings/theory_strings_type_rules.h"
70
#include "theory/quantifiers/theory_quantifiers_type_rules.h"
71
// clang-format on
72
73
namespace cvc5 {
74
namespace expr {
75
76
15133273
TypeNode TypeChecker::computeType(NodeManager* nodeManager, TNode n, bool check)
77
{
78
15133273
  TypeNode typeNode;
79
80
  // Infer the type
81
15133273
  switch (n.getKind())
82
  {
83
    case kind::VARIABLE:
84
    case kind::SKOLEM:
85
      typeNode = nodeManager->getAttribute(n, TypeAttr());
86
      break;
87
2058
    case kind::BUILTIN:
88
2058
      typeNode = nodeManager->builtinOperatorType();
89
2058
      break;
90
91
      // clang-format off
92
93
2083
  case kind::UNINTERPRETED_CONSTANT:
94
2083
    typeNode = ::cvc5::theory::builtin::UninterpretedConstantTypeRule::computeType(nodeManager, n, check);
95
2083
    break;
96
97
  case kind::ABSTRACT_VALUE:
98
    typeNode = ::cvc5::theory::builtin::AbstractValueTypeRule::computeType(nodeManager, n, check);
99
    break;
100
101
2209738
  case kind::EQUAL:
102
2209738
    typeNode = ::cvc5::theory::builtin::EqualityTypeRule::computeType(nodeManager, n, check);
103
2209660
    break;
104
105
7215
  case kind::DISTINCT:
106
7215
    typeNode = ::cvc5::theory::builtin::DistinctTypeRule::computeType(nodeManager, n, check);
107
7215
    break;
108
109
79991
  case kind::SEXPR:
110
79991
    typeNode = ::cvc5::theory::builtin::SExprTypeRule::computeType(nodeManager, n, check);
111
79991
    break;
112
113
16436
  case kind::LAMBDA:
114
16436
    typeNode = ::cvc5::theory::builtin::LambdaTypeRule::computeType(nodeManager, n, check);
115
16436
    break;
116
117
2192
  case kind::WITNESS:
118
2192
    typeNode = ::cvc5::theory::builtin::WitnessTypeRule::computeType(nodeManager, n, check);
119
2192
    break;
120
121
13574
  case kind::CONST_BOOLEAN:
122
13574
    typeNode = ::cvc5::theory::boolean::BooleanTypeRule::computeType(nodeManager, n, check);
123
13574
    break;
124
125
2286297
  case kind::NOT:
126
2286297
    typeNode = ::cvc5::theory::boolean::BooleanTypeRule::computeType(nodeManager, n, check);
127
2286283
    break;
128
129
2187373
  case kind::AND:
130
2187373
    typeNode = ::cvc5::theory::boolean::BooleanTypeRule::computeType(nodeManager, n, check);
131
2187295
    break;
132
133
322007
  case kind::IMPLIES:
134
322007
    typeNode = ::cvc5::theory::boolean::BooleanTypeRule::computeType(nodeManager, n, check);
135
321929
    break;
136
137
1670369
  case kind::OR:
138
1670369
    typeNode = ::cvc5::theory::boolean::BooleanTypeRule::computeType(nodeManager, n, check);
139
1670291
    break;
140
141
624030
  case kind::XOR:
142
624030
    typeNode = ::cvc5::theory::boolean::BooleanTypeRule::computeType(nodeManager, n, check);
143
623952
    break;
144
145
966586
  case kind::ITE:
146
966586
    typeNode = ::cvc5::theory::boolean::IteTypeRule::computeType(nodeManager, n, check);
147
966554
    break;
148
149
225887
  case kind::APPLY_UF:
150
225887
    typeNode = ::cvc5::theory::uf::UfTypeRule::computeType(nodeManager, n, check);
151
225887
    break;
152
153
763
  case kind::CARDINALITY_CONSTRAINT:
154
763
    typeNode = ::cvc5::theory::uf::CardinalityConstraintTypeRule::computeType(nodeManager, n, check);
155
763
    break;
156
157
433
  case kind::COMBINED_CARDINALITY_CONSTRAINT:
158
433
    typeNode = ::cvc5::theory::uf::CombinedCardinalityConstraintTypeRule::computeType(nodeManager, n, check);
159
433
    break;
160
161
  case kind::PARTIAL_APPLY_UF:
162
    typeNode = ::cvc5::theory::uf::PartialTypeRule::computeType(nodeManager, n, check);
163
    break;
164
165
  case kind::CARDINALITY_VALUE:
166
    typeNode = ::cvc5::theory::uf::CardinalityValueTypeRule::computeType(nodeManager, n, check);
167
    break;
168
169
12015
  case kind::HO_APPLY:
170
12015
    typeNode = ::cvc5::theory::uf::HoApplyTypeRule::computeType(nodeManager, n, check);
171
12015
    break;
172
173
1645450
  case kind::PLUS:
174
1645450
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
175
1645450
    break;
176
177
325191
  case kind::MULT:
178
325191
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
179
325191
    break;
180
181
15596
  case kind::NONLINEAR_MULT:
182
15596
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
183
15596
    break;
184
185
149146
  case kind::MINUS:
186
149146
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
187
149146
    break;
188
189
8019
  case kind::UMINUS:
190
8019
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
191
8019
    break;
192
193
1313
  case kind::DIVISION:
194
1313
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
195
1313
    break;
196
197
77
  case kind::POW:
198
77
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
199
77
    break;
200
201
102430
  case kind::CONST_RATIONAL:
202
102430
    typeNode = ::cvc5::theory::arith::ArithConstantTypeRule::computeType(nodeManager, n, check);
203
102430
    break;
204
205
53896
  case kind::LT:
206
53896
    typeNode = SimpleTypeRule<RBool, AReal, AReal>::computeType(nodeManager, n, check);
207
53896
    break;
208
209
93548
  case kind::LEQ:
210
93548
    typeNode = SimpleTypeRule<RBool, AReal, AReal>::computeType(nodeManager, n, check);
211
93548
    break;
212
213
46502
  case kind::GT:
214
46502
    typeNode = SimpleTypeRule<RBool, AReal, AReal>::computeType(nodeManager, n, check);
215
46502
    break;
216
217
286164
  case kind::GEQ:
218
286164
    typeNode = SimpleTypeRule<RBool, AReal, AReal>::computeType(nodeManager, n, check);
219
286164
    break;
220
221
  case kind::INDEXED_ROOT_PREDICATE_OP:
222
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
223
    break;
224
225
  case kind::INDEXED_ROOT_PREDICATE:
226
    typeNode = ::cvc5::theory::arith::IndexedRootPredicateTypeRule::computeType(nodeManager, n, check);
227
    break;
228
229
44
  case kind::TO_REAL:
230
44
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
231
44
    break;
232
233
917
  case kind::CAST_TO_REAL:
234
917
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
235
917
    break;
236
237
350
  case kind::TO_INTEGER:
238
350
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
239
350
    break;
240
241
21
  case kind::IS_INTEGER:
242
21
    typeNode = SimpleTypeRule<RBool, AReal>::computeType(nodeManager, n, check);
243
21
    break;
244
245
28
  case kind::ABS:
246
28
    typeNode = SimpleTypeRule<RInteger, AInteger>::computeType(nodeManager, n, check);
247
28
    break;
248
249
294
  case kind::INTS_DIVISION:
250
294
    typeNode = SimpleTypeRule<RInteger, AInteger, AInteger>::computeType(nodeManager, n, check);
251
294
    break;
252
253
255
  case kind::INTS_MODULUS:
254
255
    typeNode = SimpleTypeRule<RInteger, AInteger, AInteger>::computeType(nodeManager, n, check);
255
255
    break;
256
257
6
  case kind::DIVISIBLE:
258
6
    typeNode = SimpleTypeRule<RBool, AInteger>::computeType(nodeManager, n, check);
259
4
    break;
260
261
9
  case kind::DIVISIBLE_OP:
262
9
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
263
9
    break;
264
265
151
  case kind::DIVISION_TOTAL:
266
151
    typeNode = ::cvc5::theory::arith::ArithOperatorTypeRule::computeType(nodeManager, n, check);
267
151
    break;
268
269
782
  case kind::INTS_DIVISION_TOTAL:
270
782
    typeNode = SimpleTypeRule<RInteger, AInteger, AInteger>::computeType(nodeManager, n, check);
271
782
    break;
272
273
2958
  case kind::INTS_MODULUS_TOTAL:
274
2958
    typeNode = SimpleTypeRule<RInteger, AInteger, AInteger>::computeType(nodeManager, n, check);
275
2958
    break;
276
277
94
  case kind::EXPONENTIAL:
278
94
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
279
94
    break;
280
281
325
  case kind::SINE:
282
325
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
283
325
    break;
284
285
25
  case kind::COSINE:
286
25
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
287
25
    break;
288
289
6
  case kind::TANGENT:
290
6
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
291
6
    break;
292
293
2
  case kind::COSECANT:
294
2
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
295
2
    break;
296
297
2
  case kind::SECANT:
298
2
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
299
2
    break;
300
301
4
  case kind::COTANGENT:
302
4
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
303
4
    break;
304
305
1
  case kind::ARCSINE:
306
1
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
307
1
    break;
308
309
1
  case kind::ARCCOSINE:
310
1
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
311
1
    break;
312
313
4
  case kind::ARCTANGENT:
314
4
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
315
4
    break;
316
317
  case kind::ARCCOSECANT:
318
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
319
    break;
320
321
  case kind::ARCSECANT:
322
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
323
    break;
324
325
  case kind::ARCCOTANGENT:
326
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
327
    break;
328
329
21
  case kind::POW2:
330
21
    typeNode = SimpleTypeRule<RInteger, AInteger>::computeType(nodeManager, n, check);
331
21
    break;
332
333
15
  case kind::SQRT:
334
15
    typeNode = SimpleTypeRule<RReal, AReal>::computeType(nodeManager, n, check);
335
15
    break;
336
337
1482
  case kind::PI:
338
1482
    typeNode = ::cvc5::theory::arith::RealNullaryOperatorTypeRule::computeType(nodeManager, n, check);
339
1482
    break;
340
341
37
  case kind::IAND_OP:
342
37
    typeNode = ::cvc5::theory::arith::IAndOpTypeRule::computeType(nodeManager, n, check);
343
37
    break;
344
345
318
  case kind::IAND:
346
318
    typeNode = ::cvc5::theory::arith::IAndTypeRule::computeType(nodeManager, n, check);
347
318
    break;
348
349
55120
  case kind::CONST_BITVECTOR:
350
55120
    typeNode = ::cvc5::theory::bv::BitVectorConstantTypeRule::computeType(nodeManager, n, check);
351
55118
    break;
352
353
  case kind::BITVECTOR_BB_TERM:
354
    typeNode = ::cvc5::theory::bv::BitVectorToBVTypeRule::computeType(nodeManager, n, check);
355
    break;
356
357
75632
  case kind::BITVECTOR_CONCAT:
358
75632
    typeNode = ::cvc5::theory::bv::BitVectorConcatTypeRule::computeType(nodeManager, n, check);
359
75632
    break;
360
361
86930
  case kind::BITVECTOR_AND:
362
86930
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
363
86930
    break;
364
365
54785
  case kind::BITVECTOR_COMP:
366
54785
    typeNode = ::cvc5::theory::bv::BitVectorBVPredTypeRule::computeType(nodeManager, n, check);
367
54785
    break;
368
369
146
  case kind::BITVECTOR_NAND:
370
146
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
371
146
    break;
372
373
178
  case kind::BITVECTOR_NOR:
374
178
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
375
178
    break;
376
377
46683
  case kind::BITVECTOR_NOT:
378
46683
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
379
46683
    break;
380
381
124246
  case kind::BITVECTOR_OR:
382
124246
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
383
124246
    break;
384
385
216
  case kind::BITVECTOR_XNOR:
386
216
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
387
216
    break;
388
389
4076
  case kind::BITVECTOR_XOR:
390
4076
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
391
4076
    break;
392
393
253576
  case kind::BITVECTOR_MULT:
394
253576
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
395
253576
    break;
396
397
14495
  case kind::BITVECTOR_NEG:
398
14495
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
399
14495
    break;
400
401
81320
  case kind::BITVECTOR_ADD:
402
81320
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
403
81320
    break;
404
405
2273
  case kind::BITVECTOR_SUB:
406
2273
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
407
2273
    break;
408
409
14172
  case kind::BITVECTOR_UDIV:
410
14172
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
411
14172
    break;
412
413
14465
  case kind::BITVECTOR_UREM:
414
14465
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
415
14465
    break;
416
417
119
  case kind::BITVECTOR_SDIV:
418
119
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
419
119
    break;
420
421
36
  case kind::BITVECTOR_SMOD:
422
36
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
423
36
    break;
424
425
61
  case kind::BITVECTOR_SREM:
426
61
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
427
61
    break;
428
429
1712
  case kind::BITVECTOR_ASHR:
430
1712
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
431
1712
    break;
432
433
18163
  case kind::BITVECTOR_LSHR:
434
18163
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
435
18163
    break;
436
437
16368
  case kind::BITVECTOR_SHL:
438
16368
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
439
16368
    break;
440
441
2556
  case kind::BITVECTOR_ULE:
442
2556
    typeNode = ::cvc5::theory::bv::BitVectorPredicateTypeRule::computeType(nodeManager, n, check);
443
2556
    break;
444
445
15851
  case kind::BITVECTOR_ULT:
446
15851
    typeNode = ::cvc5::theory::bv::BitVectorPredicateTypeRule::computeType(nodeManager, n, check);
447
15851
    break;
448
449
1393
  case kind::BITVECTOR_UGE:
450
1393
    typeNode = ::cvc5::theory::bv::BitVectorPredicateTypeRule::computeType(nodeManager, n, check);
451
1393
    break;
452
453
1754
  case kind::BITVECTOR_UGT:
454
1754
    typeNode = ::cvc5::theory::bv::BitVectorPredicateTypeRule::computeType(nodeManager, n, check);
455
1754
    break;
456
457
2655
  case kind::BITVECTOR_SLE:
458
2655
    typeNode = ::cvc5::theory::bv::BitVectorPredicateTypeRule::computeType(nodeManager, n, check);
459
2655
    break;
460
461
15860
  case kind::BITVECTOR_SLT:
462
15860
    typeNode = ::cvc5::theory::bv::BitVectorPredicateTypeRule::computeType(nodeManager, n, check);
463
15860
    break;
464
465
1382
  case kind::BITVECTOR_SGE:
466
1382
    typeNode = ::cvc5::theory::bv::BitVectorPredicateTypeRule::computeType(nodeManager, n, check);
467
1382
    break;
468
469
1753
  case kind::BITVECTOR_SGT:
470
1753
    typeNode = ::cvc5::theory::bv::BitVectorPredicateTypeRule::computeType(nodeManager, n, check);
471
1753
    break;
472
473
2288
  case kind::BITVECTOR_ULTBV:
474
2288
    typeNode = ::cvc5::theory::bv::BitVectorBVPredTypeRule::computeType(nodeManager, n, check);
475
2288
    break;
476
477
3878
  case kind::BITVECTOR_SLTBV:
478
3878
    typeNode = ::cvc5::theory::bv::BitVectorBVPredTypeRule::computeType(nodeManager, n, check);
479
3878
    break;
480
481
10613
  case kind::BITVECTOR_ITE:
482
10613
    typeNode = ::cvc5::theory::bv::BitVectorITETypeRule::computeType(nodeManager, n, check);
483
10613
    break;
484
485
  case kind::BITVECTOR_REDAND:
486
    typeNode = ::cvc5::theory::bv::BitVectorUnaryPredicateTypeRule::computeType(nodeManager, n, check);
487
    break;
488
489
  case kind::BITVECTOR_REDOR:
490
    typeNode = ::cvc5::theory::bv::BitVectorUnaryPredicateTypeRule::computeType(nodeManager, n, check);
491
    break;
492
493
545
  case kind::BITVECTOR_TO_NAT:
494
545
    typeNode = ::cvc5::theory::bv::BitVectorConversionTypeRule::computeType(nodeManager, n, check);
495
545
    break;
496
497
  case kind::BITVECTOR_ACKERMANNIZE_UDIV:
498
    typeNode = ::cvc5::theory::bv::BitVectorAckermanizationUdivTypeRule::computeType(nodeManager, n, check);
499
    break;
500
501
  case kind::BITVECTOR_ACKERMANNIZE_UREM:
502
    typeNode = ::cvc5::theory::bv::BitVectorAckermanizationUremTypeRule::computeType(nodeManager, n, check);
503
    break;
504
505
107
  case kind::BITVECTOR_EAGER_ATOM:
506
107
    typeNode = ::cvc5::theory::bv::BitVectorEagerAtomTypeRule::computeType(nodeManager, n, check);
507
107
    break;
508
509
  case kind::BITVECTOR_BITOF_OP:
510
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
511
    break;
512
513
139481
  case kind::BITVECTOR_BITOF:
514
139481
    typeNode = ::cvc5::theory::bv::BitVectorBitOfTypeRule::computeType(nodeManager, n, check);
515
139481
    break;
516
517
874
  case kind::BITVECTOR_EXTRACT_OP:
518
874
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
519
874
    break;
520
521
62240
  case kind::BITVECTOR_EXTRACT:
522
62240
    typeNode = ::cvc5::theory::bv::BitVectorExtractTypeRule::computeType(nodeManager, n, check);
523
62240
    break;
524
525
116
  case kind::BITVECTOR_REPEAT_OP:
526
116
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
527
116
    break;
528
529
177
  case kind::BITVECTOR_REPEAT:
530
177
    typeNode = ::cvc5::theory::bv::BitVectorRepeatTypeRule::computeType(nodeManager, n, check);
531
176
    break;
532
533
87
  case kind::BITVECTOR_ROTATE_LEFT_OP:
534
87
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
535
87
    break;
536
537
132
  case kind::BITVECTOR_ROTATE_LEFT:
538
132
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
539
132
    break;
540
541
114
  case kind::BITVECTOR_ROTATE_RIGHT_OP:
542
114
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
543
114
    break;
544
545
170
  case kind::BITVECTOR_ROTATE_RIGHT:
546
170
    typeNode = ::cvc5::theory::bv::BitVectorFixedWidthTypeRule::computeType(nodeManager, n, check);
547
170
    break;
548
549
880
  case kind::BITVECTOR_SIGN_EXTEND_OP:
550
880
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
551
880
    break;
552
553
9764
  case kind::BITVECTOR_SIGN_EXTEND:
554
9764
    typeNode = ::cvc5::theory::bv::BitVectorExtendTypeRule::computeType(nodeManager, n, check);
555
9764
    break;
556
557
870
  case kind::BITVECTOR_ZERO_EXTEND_OP:
558
870
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
559
870
    break;
560
561
5076
  case kind::BITVECTOR_ZERO_EXTEND:
562
5076
    typeNode = ::cvc5::theory::bv::BitVectorExtendTypeRule::computeType(nodeManager, n, check);
563
5076
    break;
564
565
21
  case kind::INT_TO_BITVECTOR_OP:
566
21
    typeNode = ::cvc5::theory::bv::IntToBitVectorOpTypeRule::computeType(nodeManager, n, check);
567
20
    break;
568
569
432
  case kind::INT_TO_BITVECTOR:
570
432
    typeNode = ::cvc5::theory::bv::BitVectorConversionTypeRule::computeType(nodeManager, n, check);
571
432
    break;
572
573
389
  case kind::CONST_FLOATINGPOINT:
574
389
    typeNode = ::cvc5::theory::fp::FloatingPointConstantTypeRule::computeType(nodeManager, n, check);
575
389
    break;
576
577
7364
  case kind::CONST_ROUNDINGMODE:
578
7364
    typeNode = ::cvc5::theory::fp::RoundingModeConstantTypeRule::computeType(nodeManager, n, check);
579
7364
    break;
580
581
19
  case kind::FLOATINGPOINT_FP:
582
19
    typeNode = ::cvc5::theory::fp::FloatingPointFPTypeRule::computeType(nodeManager, n, check);
583
19
    break;
584
585
6
  case kind::FLOATINGPOINT_EQ:
586
6
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
587
6
    break;
588
589
36
  case kind::FLOATINGPOINT_ABS:
590
36
    typeNode = ::cvc5::theory::fp::FloatingPointOperationTypeRule::computeType(nodeManager, n, check);
591
36
    break;
592
593
179
  case kind::FLOATINGPOINT_NEG:
594
179
    typeNode = ::cvc5::theory::fp::FloatingPointOperationTypeRule::computeType(nodeManager, n, check);
595
179
    break;
596
597
717
  case kind::FLOATINGPOINT_ADD:
598
717
    typeNode = ::cvc5::theory::fp::FloatingPointRoundingOperationTypeRule::computeType(nodeManager, n, check);
599
717
    break;
600
601
52
  case kind::FLOATINGPOINT_SUB:
602
52
    typeNode = ::cvc5::theory::fp::FloatingPointRoundingOperationTypeRule::computeType(nodeManager, n, check);
603
52
    break;
604
605
245
  case kind::FLOATINGPOINT_MULT:
606
245
    typeNode = ::cvc5::theory::fp::FloatingPointRoundingOperationTypeRule::computeType(nodeManager, n, check);
607
245
    break;
608
609
276
  case kind::FLOATINGPOINT_DIV:
610
276
    typeNode = ::cvc5::theory::fp::FloatingPointRoundingOperationTypeRule::computeType(nodeManager, n, check);
611
276
    break;
612
613
  case kind::FLOATINGPOINT_FMA:
614
    typeNode = ::cvc5::theory::fp::FloatingPointRoundingOperationTypeRule::computeType(nodeManager, n, check);
615
    break;
616
617
46
  case kind::FLOATINGPOINT_SQRT:
618
46
    typeNode = ::cvc5::theory::fp::FloatingPointRoundingOperationTypeRule::computeType(nodeManager, n, check);
619
46
    break;
620
621
166
  case kind::FLOATINGPOINT_REM:
622
166
    typeNode = ::cvc5::theory::fp::FloatingPointOperationTypeRule::computeType(nodeManager, n, check);
623
166
    break;
624
625
44
  case kind::FLOATINGPOINT_RTI:
626
44
    typeNode = ::cvc5::theory::fp::FloatingPointRoundingOperationTypeRule::computeType(nodeManager, n, check);
627
44
    break;
628
629
  case kind::FLOATINGPOINT_MIN:
630
    typeNode = ::cvc5::theory::fp::FloatingPointOperationTypeRule::computeType(nodeManager, n, check);
631
    break;
632
633
11
  case kind::FLOATINGPOINT_MAX:
634
11
    typeNode = ::cvc5::theory::fp::FloatingPointOperationTypeRule::computeType(nodeManager, n, check);
635
11
    break;
636
637
  case kind::FLOATINGPOINT_MIN_TOTAL:
638
    typeNode = ::cvc5::theory::fp::FloatingPointPartialOperationTypeRule::computeType(nodeManager, n, check);
639
    break;
640
641
163
  case kind::FLOATINGPOINT_MAX_TOTAL:
642
163
    typeNode = ::cvc5::theory::fp::FloatingPointPartialOperationTypeRule::computeType(nodeManager, n, check);
643
163
    break;
644
645
204
  case kind::FLOATINGPOINT_LEQ:
646
204
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
647
204
    break;
648
649
27
  case kind::FLOATINGPOINT_LT:
650
27
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
651
27
    break;
652
653
70
  case kind::FLOATINGPOINT_GEQ:
654
70
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
655
70
    break;
656
657
4
  case kind::FLOATINGPOINT_GT:
658
4
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
659
4
    break;
660
661
15
  case kind::FLOATINGPOINT_ISN:
662
15
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
663
15
    break;
664
665
16
  case kind::FLOATINGPOINT_ISSN:
666
16
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
667
16
    break;
668
669
207
  case kind::FLOATINGPOINT_ISZ:
670
207
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
671
207
    break;
672
673
62
  case kind::FLOATINGPOINT_ISINF:
674
62
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
675
62
    break;
676
677
77
  case kind::FLOATINGPOINT_ISNAN:
678
77
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
679
77
    break;
680
681
57
  case kind::FLOATINGPOINT_ISNEG:
682
57
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
683
57
    break;
684
685
13
  case kind::FLOATINGPOINT_ISPOS:
686
13
    typeNode = ::cvc5::theory::fp::FloatingPointTestTypeRule::computeType(nodeManager, n, check);
687
13
    break;
688
689
5
  case kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR_OP:
690
5
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
691
5
    break;
692
693
369
  case kind::FLOATINGPOINT_TO_FP_IEEE_BITVECTOR:
694
369
    typeNode = ::cvc5::theory::fp::FloatingPointToFPIEEEBitVectorTypeRule::computeType(nodeManager, n, check);
695
369
    break;
696
697
5
  case kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT_OP:
698
5
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
699
5
    break;
700
701
16
  case kind::FLOATINGPOINT_TO_FP_FLOATINGPOINT:
702
16
    typeNode = ::cvc5::theory::fp::FloatingPointToFPFloatingPointTypeRule::computeType(nodeManager, n, check);
703
16
    break;
704
705
5
  case kind::FLOATINGPOINT_TO_FP_REAL_OP:
706
5
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
707
5
    break;
708
709
64
  case kind::FLOATINGPOINT_TO_FP_REAL:
710
64
    typeNode = ::cvc5::theory::fp::FloatingPointToFPRealTypeRule::computeType(nodeManager, n, check);
711
64
    break;
712
713
5
  case kind::FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR_OP:
714
5
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
715
5
    break;
716
717
4
  case kind::FLOATINGPOINT_TO_FP_SIGNED_BITVECTOR:
718
4
    typeNode = ::cvc5::theory::fp::FloatingPointToFPSignedBitVectorTypeRule::computeType(nodeManager, n, check);
719
4
    break;
720
721
8
  case kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR_OP:
722
8
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
723
8
    break;
724
725
20
  case kind::FLOATINGPOINT_TO_FP_UNSIGNED_BITVECTOR:
726
20
    typeNode = ::cvc5::theory::fp::FloatingPointToFPUnsignedBitVectorTypeRule::computeType(nodeManager, n, check);
727
20
    break;
728
729
25
  case kind::FLOATINGPOINT_TO_FP_GENERIC_OP:
730
25
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
731
25
    break;
732
733
52
  case kind::FLOATINGPOINT_TO_FP_GENERIC:
734
52
    typeNode = ::cvc5::theory::fp::FloatingPointToFPGenericTypeRule::computeType(nodeManager, n, check);
735
52
    break;
736
737
5
  case kind::FLOATINGPOINT_TO_UBV_OP:
738
5
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
739
5
    break;
740
741
  case kind::FLOATINGPOINT_TO_UBV:
742
    typeNode = ::cvc5::theory::fp::FloatingPointToUBVTypeRule::computeType(nodeManager, n, check);
743
    break;
744
745
  case kind::FLOATINGPOINT_TO_UBV_TOTAL_OP:
746
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
747
    break;
748
749
  case kind::FLOATINGPOINT_TO_UBV_TOTAL:
750
    typeNode = ::cvc5::theory::fp::FloatingPointToUBVTotalTypeRule::computeType(nodeManager, n, check);
751
    break;
752
753
6
  case kind::FLOATINGPOINT_TO_SBV_OP:
754
6
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
755
6
    break;
756
757
2
  case kind::FLOATINGPOINT_TO_SBV:
758
2
    typeNode = ::cvc5::theory::fp::FloatingPointToSBVTypeRule::computeType(nodeManager, n, check);
759
2
    break;
760
761
  case kind::FLOATINGPOINT_TO_SBV_TOTAL_OP:
762
    typeNode = ::cvc5::theory::fp::FloatingPointParametricOpTypeRule::computeType(nodeManager, n, check);
763
    break;
764
765
1
  case kind::FLOATINGPOINT_TO_SBV_TOTAL:
766
1
    typeNode = ::cvc5::theory::fp::FloatingPointToSBVTotalTypeRule::computeType(nodeManager, n, check);
767
1
    break;
768
769
13
  case kind::FLOATINGPOINT_TO_REAL:
770
13
    typeNode = ::cvc5::theory::fp::FloatingPointToRealTypeRule::computeType(nodeManager, n, check);
771
13
    break;
772
773
47
  case kind::FLOATINGPOINT_TO_REAL_TOTAL:
774
47
    typeNode = ::cvc5::theory::fp::FloatingPointToRealTotalTypeRule::computeType(nodeManager, n, check);
775
47
    break;
776
777
82
  case kind::FLOATINGPOINT_COMPONENT_NAN:
778
82
    typeNode = ::cvc5::theory::fp::FloatingPointComponentBit::computeType(nodeManager, n, check);
779
82
    break;
780
781
82
  case kind::FLOATINGPOINT_COMPONENT_INF:
782
82
    typeNode = ::cvc5::theory::fp::FloatingPointComponentBit::computeType(nodeManager, n, check);
783
82
    break;
784
785
82
  case kind::FLOATINGPOINT_COMPONENT_ZERO:
786
82
    typeNode = ::cvc5::theory::fp::FloatingPointComponentBit::computeType(nodeManager, n, check);
787
82
    break;
788
789
82
  case kind::FLOATINGPOINT_COMPONENT_SIGN:
790
82
    typeNode = ::cvc5::theory::fp::FloatingPointComponentBit::computeType(nodeManager, n, check);
791
82
    break;
792
793
82
  case kind::FLOATINGPOINT_COMPONENT_EXPONENT:
794
82
    typeNode = ::cvc5::theory::fp::FloatingPointComponentExponent::computeType(nodeManager, n, check);
795
82
    break;
796
797
82
  case kind::FLOATINGPOINT_COMPONENT_SIGNIFICAND:
798
82
    typeNode = ::cvc5::theory::fp::FloatingPointComponentSignificand::computeType(nodeManager, n, check);
799
82
    break;
800
801
5
  case kind::ROUNDINGMODE_BITBLAST:
802
5
    typeNode = ::cvc5::theory::fp::RoundingModeBitBlast::computeType(nodeManager, n, check);
803
5
    break;
804
805
12024
  case kind::SELECT:
806
12024
    typeNode = ::cvc5::theory::arrays::ArraySelectTypeRule::computeType(nodeManager, n, check);
807
12024
    break;
808
809
9516
  case kind::STORE:
810
9516
    typeNode = ::cvc5::theory::arrays::ArrayStoreTypeRule::computeType(nodeManager, n, check);
811
9516
    break;
812
813
576
  case kind::STORE_ALL:
814
576
    typeNode = ::cvc5::theory::arrays::ArrayStoreTypeRule::computeType(nodeManager, n, check);
815
576
    break;
816
817
  case kind::ARR_TABLE_FUN:
818
    typeNode = ::cvc5::theory::arrays::ArrayTableFunTypeRule::computeType(nodeManager, n, check);
819
    break;
820
821
  case kind::ARRAY_LAMBDA:
822
    typeNode = ::cvc5::theory::arrays::ArrayLambdaTypeRule::computeType(nodeManager, n, check);
823
    break;
824
825
21
  case kind::EQ_RANGE:
826
21
    typeNode = ::cvc5::theory::arrays::ArrayEqRangeTypeRule::computeType(nodeManager, n, check);
827
21
    break;
828
829
  case kind::PARTIAL_SELECT_0:
830
    typeNode = ::cvc5::theory::arrays::ArrayPartialSelectTypeRule::computeType(nodeManager, n, check);
831
    break;
832
833
  case kind::PARTIAL_SELECT_1:
834
    typeNode = ::cvc5::theory::arrays::ArrayPartialSelectTypeRule::computeType(nodeManager, n, check);
835
    break;
836
837
91846
  case kind::APPLY_CONSTRUCTOR:
838
91846
    typeNode = ::cvc5::theory::datatypes::DatatypeConstructorTypeRule::computeType(nodeManager, n, check);
839
91841
    break;
840
841
9533
  case kind::APPLY_SELECTOR:
842
9533
    typeNode = ::cvc5::theory::datatypes::DatatypeSelectorTypeRule::computeType(nodeManager, n, check);
843
9533
    break;
844
845
26153
  case kind::APPLY_SELECTOR_TOTAL:
846
26153
    typeNode = ::cvc5::theory::datatypes::DatatypeSelectorTypeRule::computeType(nodeManager, n, check);
847
26153
    break;
848
849
20534
  case kind::APPLY_TESTER:
850
20534
    typeNode = ::cvc5::theory::datatypes::DatatypeTesterTypeRule::computeType(nodeManager, n, check);
851
20534
    break;
852
853
29
  case kind::APPLY_UPDATER:
854
29
    typeNode = ::cvc5::theory::datatypes::DatatypeUpdateTypeRule::computeType(nodeManager, n, check);
855
27
    break;
856
857
87
  case kind::APPLY_TYPE_ASCRIPTION:
858
87
    typeNode = ::cvc5::theory::datatypes::DatatypeAscriptionTypeRule::computeType(nodeManager, n, check);
859
87
    break;
860
861
10332
  case kind::DT_SIZE:
862
10332
    typeNode = ::cvc5::theory::datatypes::DtSizeTypeRule::computeType(nodeManager, n, check);
863
10332
    break;
864
865
  case kind::DT_HEIGHT_BOUND:
866
    typeNode = ::cvc5::theory::datatypes::DtBoundTypeRule::computeType(nodeManager, n, check);
867
    break;
868
869
  case kind::DT_SIZE_BOUND:
870
    typeNode = ::cvc5::theory::datatypes::DtBoundTypeRule::computeType(nodeManager, n, check);
871
    break;
872
873
459
  case kind::DT_SYGUS_BOUND:
874
459
    typeNode = ::cvc5::theory::datatypes::DtSygusBoundTypeRule::computeType(nodeManager, n, check);
875
459
    break;
876
877
49177
  case kind::DT_SYGUS_EVAL:
878
49177
    typeNode = ::cvc5::theory::datatypes::DtSyguEvalTypeRule::computeType(nodeManager, n, check);
879
49177
    break;
880
881
13
  case kind::MATCH:
882
13
    typeNode = ::cvc5::theory::datatypes::MatchTypeRule::computeType(nodeManager, n, check);
883
13
    break;
884
885
19
  case kind::MATCH_CASE:
886
19
    typeNode = ::cvc5::theory::datatypes::MatchCaseTypeRule::computeType(nodeManager, n, check);
887
19
    break;
888
889
10
  case kind::MATCH_BIND_CASE:
890
10
    typeNode = ::cvc5::theory::datatypes::MatchBindCaseTypeRule::computeType(nodeManager, n, check);
891
10
    break;
892
893
22
  case kind::TUPLE_PROJECT_OP:
894
22
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
895
22
    break;
896
897
20
  case kind::TUPLE_PROJECT:
898
20
    typeNode = ::cvc5::theory::datatypes::TupleProjectTypeRule::computeType(nodeManager, n, check);
899
16
    break;
900
901
25
  case kind::SEP_EMP:
902
25
    typeNode = ::cvc5::theory::sep::SepEmpTypeRule::computeType(nodeManager, n, check);
903
25
    break;
904
905
147
  case kind::SEP_PTO:
906
147
    typeNode = ::cvc5::theory::sep::SepPtoTypeRule::computeType(nodeManager, n, check);
907
147
    break;
908
909
101
  case kind::SEP_STAR:
910
101
    typeNode = ::cvc5::theory::sep::SepStarTypeRule::computeType(nodeManager, n, check);
911
101
    break;
912
913
14
  case kind::SEP_WAND:
914
14
    typeNode = ::cvc5::theory::sep::SepWandTypeRule::computeType(nodeManager, n, check);
915
14
    break;
916
917
373
  case kind::SEP_LABEL:
918
373
    typeNode = ::cvc5::theory::sep::SepLabelTypeRule::computeType(nodeManager, n, check);
919
373
    break;
920
921
1492
  case kind::SEP_NIL:
922
1492
    typeNode = ::cvc5::theory::sep::SepNilTypeRule::computeType(nodeManager, n, check);
923
1492
    break;
924
925
3479
  case kind::UNION:
926
3479
    typeNode = ::cvc5::theory::sets::SetsBinaryOperatorTypeRule::computeType(nodeManager, n, check);
927
3477
    break;
928
929
761
  case kind::INTERSECTION:
930
761
    typeNode = ::cvc5::theory::sets::SetsBinaryOperatorTypeRule::computeType(nodeManager, n, check);
931
761
    break;
932
933
765
  case kind::SETMINUS:
934
765
    typeNode = ::cvc5::theory::sets::SetsBinaryOperatorTypeRule::computeType(nodeManager, n, check);
935
765
    break;
936
937
206
  case kind::SUBSET:
938
206
    typeNode = ::cvc5::theory::sets::SubsetTypeRule::computeType(nodeManager, n, check);
939
206
    break;
940
941
11180
  case kind::MEMBER:
942
11180
    typeNode = ::cvc5::theory::sets::MemberTypeRule::computeType(nodeManager, n, check);
943
11180
    break;
944
945
  case kind::SINGLETON_OP:
946
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
947
    break;
948
949
1909
  case kind::SINGLETON:
950
1909
    typeNode = ::cvc5::theory::sets::SingletonTypeRule::computeType(nodeManager, n, check);
951
1909
    break;
952
953
1721
  case kind::EMPTYSET:
954
1721
    typeNode = ::cvc5::theory::sets::EmptySetTypeRule::computeType(nodeManager, n, check);
955
1721
    break;
956
957
25
  case kind::INSERT:
958
25
    typeNode = ::cvc5::theory::sets::InsertTypeRule::computeType(nodeManager, n, check);
959
25
    break;
960
961
1630
  case kind::CARD:
962
1630
    typeNode = ::cvc5::theory::sets::CardTypeRule::computeType(nodeManager, n, check);
963
1630
    break;
964
965
16
  case kind::COMPLEMENT:
966
16
    typeNode = ::cvc5::theory::sets::ComplementTypeRule::computeType(nodeManager, n, check);
967
16
    break;
968
969
89
  case kind::UNIVERSE_SET:
970
89
    typeNode = ::cvc5::theory::sets::UniverseSetTypeRule::computeType(nodeManager, n, check);
971
89
    break;
972
973
22
  case kind::COMPREHENSION:
974
22
    typeNode = ::cvc5::theory::sets::ComprehensionTypeRule::computeType(nodeManager, n, check);
975
22
    break;
976
977
16
  case kind::CHOOSE:
978
16
    typeNode = ::cvc5::theory::sets::ChooseTypeRule::computeType(nodeManager, n, check);
979
16
    break;
980
981
17
  case kind::IS_SINGLETON:
982
17
    typeNode = ::cvc5::theory::sets::IsSingletonTypeRule::computeType(nodeManager, n, check);
983
17
    break;
984
985
176
  case kind::JOIN:
986
176
    typeNode = ::cvc5::theory::sets::RelBinaryOperatorTypeRule::computeType(nodeManager, n, check);
987
176
    break;
988
989
31
  case kind::PRODUCT:
990
31
    typeNode = ::cvc5::theory::sets::RelBinaryOperatorTypeRule::computeType(nodeManager, n, check);
991
31
    break;
992
993
59
  case kind::TRANSPOSE:
994
59
    typeNode = ::cvc5::theory::sets::RelTransposeTypeRule::computeType(nodeManager, n, check);
995
59
    break;
996
997
31
  case kind::TCLOSURE:
998
31
    typeNode = ::cvc5::theory::sets::RelTransClosureTypeRule::computeType(nodeManager, n, check);
999
31
    break;
1000
1001
28
  case kind::JOIN_IMAGE:
1002
28
    typeNode = ::cvc5::theory::sets::JoinImageTypeRule::computeType(nodeManager, n, check);
1003
28
    break;
1004
1005
5
  case kind::IDEN:
1006
5
    typeNode = ::cvc5::theory::sets::RelIdenTypeRule::computeType(nodeManager, n, check);
1007
5
    break;
1008
1009
64
  case kind::UNION_MAX:
1010
64
    typeNode = ::cvc5::theory::bags::BinaryOperatorTypeRule::computeType(nodeManager, n, check);
1011
64
    break;
1012
1013
133
  case kind::UNION_DISJOINT:
1014
133
    typeNode = ::cvc5::theory::bags::BinaryOperatorTypeRule::computeType(nodeManager, n, check);
1015
133
    break;
1016
1017
40
  case kind::INTERSECTION_MIN:
1018
40
    typeNode = ::cvc5::theory::bags::BinaryOperatorTypeRule::computeType(nodeManager, n, check);
1019
40
    break;
1020
1021
31
  case kind::DIFFERENCE_SUBTRACT:
1022
31
    typeNode = ::cvc5::theory::bags::BinaryOperatorTypeRule::computeType(nodeManager, n, check);
1023
31
    break;
1024
1025
20
  case kind::DIFFERENCE_REMOVE:
1026
20
    typeNode = ::cvc5::theory::bags::BinaryOperatorTypeRule::computeType(nodeManager, n, check);
1027
20
    break;
1028
1029
6
  case kind::SUBBAG:
1030
6
    typeNode = ::cvc5::theory::bags::SubBagTypeRule::computeType(nodeManager, n, check);
1031
6
    break;
1032
1033
379
  case kind::BAG_COUNT:
1034
379
    typeNode = ::cvc5::theory::bags::CountTypeRule::computeType(nodeManager, n, check);
1035
377
    break;
1036
1037
14
  case kind::DUPLICATE_REMOVAL:
1038
14
    typeNode = ::cvc5::theory::bags::DuplicateRemovalTypeRule::computeType(nodeManager, n, check);
1039
14
    break;
1040
1041
  case kind::MK_BAG_OP:
1042
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
1043
    break;
1044
1045
229
  case kind::MK_BAG:
1046
229
    typeNode = ::cvc5::theory::bags::MkBagTypeRule::computeType(nodeManager, n, check);
1047
229
    break;
1048
1049
1473
  case kind::EMPTYBAG:
1050
1473
    typeNode = ::cvc5::theory::bags::EmptyBagTypeRule::computeType(nodeManager, n, check);
1051
1473
    break;
1052
1053
14
  case kind::BAG_CARD:
1054
14
    typeNode = ::cvc5::theory::bags::CardTypeRule::computeType(nodeManager, n, check);
1055
14
    break;
1056
1057
8
  case kind::BAG_CHOOSE:
1058
8
    typeNode = ::cvc5::theory::bags::ChooseTypeRule::computeType(nodeManager, n, check);
1059
8
    break;
1060
1061
10
  case kind::BAG_IS_SINGLETON:
1062
10
    typeNode = ::cvc5::theory::bags::IsSingletonTypeRule::computeType(nodeManager, n, check);
1063
10
    break;
1064
1065
10
  case kind::BAG_FROM_SET:
1066
10
    typeNode = ::cvc5::theory::bags::FromSetTypeRule::computeType(nodeManager, n, check);
1067
10
    break;
1068
1069
10
  case kind::BAG_TO_SET:
1070
10
    typeNode = ::cvc5::theory::bags::ToSetTypeRule::computeType(nodeManager, n, check);
1071
10
    break;
1072
1073
12
  case kind::BAG_MAP:
1074
12
    typeNode = ::cvc5::theory::bags::BagMapTypeRule::computeType(nodeManager, n, check);
1075
8
    break;
1076
1077
66
  case kind::REGEXP_RV:
1078
66
    typeNode = SimpleTypeRule<RRegExp, AInteger>::computeType(nodeManager, n, check);
1079
66
    break;
1080
1081
1408
  case kind::REGEXP_CONCAT:
1082
1408
    typeNode = SimpleTypeRuleVar<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1083
1408
    break;
1084
1085
469
  case kind::REGEXP_UNION:
1086
469
    typeNode = SimpleTypeRuleVar<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1087
469
    break;
1088
1089
69
  case kind::REGEXP_INTER:
1090
69
    typeNode = SimpleTypeRuleVar<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1091
69
    break;
1092
1093
29
  case kind::REGEXP_DIFF:
1094
29
    typeNode = SimpleTypeRuleVar<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1095
29
    break;
1096
1097
5136
  case kind::REGEXP_STAR:
1098
5136
    typeNode = SimpleTypeRule<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1099
5136
    break;
1100
1101
32
  case kind::REGEXP_PLUS:
1102
32
    typeNode = SimpleTypeRule<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1103
32
    break;
1104
1105
30
  case kind::REGEXP_OPT:
1106
30
    typeNode = SimpleTypeRule<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1107
30
    break;
1108
1109
166
  case kind::REGEXP_RANGE:
1110
166
    typeNode = ::cvc5::theory::strings::RegExpRangeTypeRule::computeType(nodeManager, n, check);
1111
166
    break;
1112
1113
4
  case kind::REGEXP_REPEAT_OP:
1114
4
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
1115
4
    break;
1116
1117
6
  case kind::REGEXP_REPEAT:
1118
6
    typeNode = SimpleTypeRule<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1119
6
    break;
1120
1121
26
  case kind::REGEXP_LOOP_OP:
1122
26
    typeNode = SimpleTypeRule<RBuiltinOperator>::computeType(nodeManager, n, check);
1123
26
    break;
1124
1125
30
  case kind::REGEXP_LOOP:
1126
30
    typeNode = SimpleTypeRule<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1127
30
    break;
1128
1129
64
  case kind::REGEXP_COMPLEMENT:
1130
64
    typeNode = SimpleTypeRule<RRegExp, ARegExp>::computeType(nodeManager, n, check);
1131
64
    break;
1132
1133
5562
  case kind::STRING_TO_REGEXP:
1134
5562
    typeNode = SimpleTypeRule<RRegExp, AString>::computeType(nodeManager, n, check);
1135
5562
    break;
1136
1137
7823
  case kind::STRING_IN_REGEXP:
1138
7823
    typeNode = SimpleTypeRule<RBool, AString, ARegExp>::computeType(nodeManager, n, check);
1139
7823
    break;
1140
1141
4463
  case kind::REGEXP_EMPTY:
1142
4463
    typeNode = SimpleTypeRule<RRegExp>::computeType(nodeManager, n, check);
1143
4463
    break;
1144
1145
4462
  case kind::REGEXP_SIGMA:
1146
4462
    typeNode = SimpleTypeRule<RRegExp>::computeType(nodeManager, n, check);
1147
4462
    break;
1148
1149
37481
  case kind::STRING_CONCAT:
1150
37481
    typeNode = ::cvc5::theory::strings::StringConcatTypeRule::computeType(nodeManager, n, check);
1151
37481
    break;
1152
1153
90561
  case kind::STRING_LENGTH:
1154
90561
    typeNode = ::cvc5::theory::strings::StringStrToIntTypeRule::computeType(nodeManager, n, check);
1155
90561
    break;
1156
1157
35211
  case kind::STRING_SUBSTR:
1158
35211
    typeNode = ::cvc5::theory::strings::StringSubstrTypeRule::computeType(nodeManager, n, check);
1159
35211
    break;
1160
1161
132
  case kind::STRING_UPDATE:
1162
132
    typeNode = ::cvc5::theory::strings::StringUpdateTypeRule::computeType(nodeManager, n, check);
1163
132
    break;
1164
1165
99
  case kind::STRING_CHARAT:
1166
99
    typeNode = ::cvc5::theory::strings::StringAtTypeRule::computeType(nodeManager, n, check);
1167
99
    break;
1168
1169
29701
  case kind::STRING_CONTAINS:
1170
29701
    typeNode = ::cvc5::theory::strings::StringRelationTypeRule::computeType(nodeManager, n, check);
1171
29701
    break;
1172
1173
2203
  case kind::STRING_INDEXOF:
1174
2203
    typeNode = ::cvc5::theory::strings::StringIndexOfTypeRule::computeType(nodeManager, n, check);
1175
2203
    break;
1176
1177
322
  case kind::STRING_INDEXOF_RE:
1178
322
    typeNode = SimpleTypeRule<RInteger, AString, ARegExp, AInteger>::computeType(nodeManager, n, check);
1179
322
    break;
1180
1181
2088
  case kind::STRING_REPLACE:
1182
2088
    typeNode = ::cvc5::theory::strings::StringReplaceTypeRule::computeType(nodeManager, n, check);
1183
2088
    break;
1184
1185
123
  case kind::STRING_REPLACE_ALL:
1186
123
    typeNode = ::cvc5::theory::strings::StringReplaceTypeRule::computeType(nodeManager, n, check);
1187
123
    break;
1188
1189
172
  case kind::STRING_REPLACE_RE:
1190
172
    typeNode = SimpleTypeRule<RString, AString, ARegExp, AString>::computeType(nodeManager, n, check);
1191
172
    break;
1192
1193
118
  case kind::STRING_REPLACE_RE_ALL:
1194
118
    typeNode = SimpleTypeRule<RString, AString, ARegExp, AString>::computeType(nodeManager, n, check);
1195
118
    break;
1196
1197
108
  case kind::STRING_PREFIX:
1198
108
    typeNode = ::cvc5::theory::strings::StringStrToBoolTypeRule::computeType(nodeManager, n, check);
1199
108
    break;
1200
1201
30
  case kind::STRING_SUFFIX:
1202
30
    typeNode = ::cvc5::theory::strings::StringStrToBoolTypeRule::computeType(nodeManager, n, check);
1203
30
    break;
1204
1205
128
  case kind::STRING_REV:
1206
128
    typeNode = ::cvc5::theory::strings::StringStrToStrTypeRule::computeType(nodeManager, n, check);
1207
128
    break;
1208
1209
23574
  case kind::CONST_STRING:
1210
23574
    typeNode = SimpleTypeRule<RString>::computeType(nodeManager, n, check);
1211
23574
    break;
1212
1213
14
  case kind::STRING_LT:
1214
14
    typeNode = SimpleTypeRule<RBool, AString, AString>::computeType(nodeManager, n, check);
1215
14
    break;
1216
1217
161
  case kind::STRING_LEQ:
1218
161
    typeNode = SimpleTypeRule<RBool, AString, AString>::computeType(nodeManager, n, check);
1219
161
    break;
1220
1221
8
  case kind::STRING_IS_DIGIT:
1222
8
    typeNode = SimpleTypeRule<RBool, AString>::computeType(nodeManager, n, check);
1223
8
    break;
1224
1225
444
  case kind::STRING_ITOS:
1226
444
    typeNode = SimpleTypeRule<RString, AInteger>::computeType(nodeManager, n, check);
1227
444
    break;
1228
1229
706
  case kind::STRING_STOI:
1230
706
    typeNode = SimpleTypeRule<RInteger, AString>::computeType(nodeManager, n, check);
1231
706
    break;
1232
1233
3595
  case kind::STRING_TO_CODE:
1234
3595
    typeNode = SimpleTypeRule<RInteger, AString>::computeType(nodeManager, n, check);
1235
3595
    break;
1236
1237
36
  case kind::STRING_FROM_CODE:
1238
36
    typeNode = SimpleTypeRule<RString, AInteger>::computeType(nodeManager, n, check);
1239
36
    break;
1240
1241
38
  case kind::STRING_TOUPPER:
1242
38
    typeNode = SimpleTypeRule<RString, AString>::computeType(nodeManager, n, check);
1243
38
    break;
1244
1245
92
  case kind::STRING_TOLOWER:
1246
92
    typeNode = SimpleTypeRule<RString, AString>::computeType(nodeManager, n, check);
1247
92
    break;
1248
1249
302
  case kind::CONST_SEQUENCE:
1250
302
    typeNode = ::cvc5::theory::strings::ConstSequenceTypeRule::computeType(nodeManager, n, check);
1251
302
    break;
1252
1253
188
  case kind::SEQ_UNIT:
1254
188
    typeNode = ::cvc5::theory::strings::SeqUnitTypeRule::computeType(nodeManager, n, check);
1255
188
    break;
1256
1257
84
  case kind::SEQ_NTH:
1258
84
    typeNode = ::cvc5::theory::strings::SeqNthTypeRule::computeType(nodeManager, n, check);
1259
84
    break;
1260
1261
4
  case kind::SEQ_NTH_TOTAL:
1262
4
    typeNode = ::cvc5::theory::strings::SeqNthTypeRule::computeType(nodeManager, n, check);
1263
4
    break;
1264
1265
48538
  case kind::FORALL:
1266
48538
    typeNode = ::cvc5::theory::quantifiers::QuantifierTypeRule::computeType(nodeManager, n, check);
1267
48538
    break;
1268
1269
4189
  case kind::EXISTS:
1270
4189
    typeNode = ::cvc5::theory::quantifiers::QuantifierTypeRule::computeType(nodeManager, n, check);
1271
4189
    break;
1272
1273
36003
  case kind::BOUND_VAR_LIST:
1274
36003
    typeNode = ::cvc5::theory::quantifiers::QuantifierBoundVarListTypeRule::computeType(nodeManager, n, check);
1275
36003
    break;
1276
1277
3851
  case kind::INST_PATTERN_LIST:
1278
3851
    typeNode = ::cvc5::theory::quantifiers::QuantifierInstPatternListTypeRule::computeType(nodeManager, n, check);
1279
3851
    break;
1280
1281
2893
  case kind::INST_PATTERN:
1282
2893
    typeNode = ::cvc5::theory::quantifiers::QuantifierInstPatternTypeRule::computeType(nodeManager, n, check);
1283
2893
    break;
1284
1285
8
  case kind::INST_NO_PATTERN:
1286
8
    typeNode = ::cvc5::theory::quantifiers::QuantifierAnnotationTypeRule::computeType(nodeManager, n, check);
1287
8
    break;
1288
1289
1088
  case kind::INST_ATTRIBUTE:
1290
1088
    typeNode = ::cvc5::theory::quantifiers::QuantifierAnnotationTypeRule::computeType(nodeManager, n, check);
1291
1088
    break;
1292
1293
1
  case kind::INST_POOL:
1294
1
    typeNode = ::cvc5::theory::quantifiers::QuantifierAnnotationTypeRule::computeType(nodeManager, n, check);
1295
1
    break;
1296
1297
  case kind::INST_ADD_TO_POOL:
1298
    typeNode = ::cvc5::theory::quantifiers::QuantifierAnnotationTypeRule::computeType(nodeManager, n, check);
1299
    break;
1300
1301
6
  case kind::SKOLEM_ADD_TO_POOL:
1302
6
    typeNode = ::cvc5::theory::quantifiers::QuantifierAnnotationTypeRule::computeType(nodeManager, n, check);
1303
6
    break;
1304
1305
      // clang-format on
1306
1307
    default:
1308
      Debug("getType") << "FAILURE" << std::endl;
1309
      Unhandled() << " " << n.getKind();
1310
  }
1311
1312
15132812
  nodeManager->setAttribute(n, TypeAttr(), typeNode);
1313
15132812
  nodeManager->setAttribute(n, TypeCheckedAttr(),
1314
30265624
                            check || nodeManager->getAttribute(n, TypeCheckedAttr()));
1315
1316
15132812
  return typeNode;
1317
1318
}/* TypeChecker::computeType */
1319
1320
3703736
bool TypeChecker::computeIsConst(NodeManager* nodeManager, TNode n)
1321
{
1322
3703736
  Assert(n.getMetaKind() == kind::metakind::OPERATOR
1323
         || n.getMetaKind() == kind::metakind::PARAMETERIZED
1324
         || n.getMetaKind() == kind::metakind::NULLARY_OPERATOR);
1325
1326
3703736
  switch (n.getKind())
1327
  {
1328
    // clang-format off
1329
1330
2169
  case kind::LAMBDA:
1331
2169
    return ::cvc5::theory::builtin::LambdaTypeRule::computeIsConst(nodeManager, n);
1332
1333
7354
  case kind::STORE:
1334
7354
    return ::cvc5::theory::arrays::ArrayStoreTypeRule::computeIsConst(nodeManager, n);
1335
1336
51290
  case kind::APPLY_CONSTRUCTOR:
1337
51290
    return ::cvc5::theory::datatypes::DatatypeConstructorTypeRule::computeIsConst(nodeManager, n);
1338
1339
3108
  case kind::UNION:
1340
3108
    return ::cvc5::theory::sets::SetsBinaryOperatorTypeRule::computeIsConst(nodeManager, n);
1341
1342
1757
  case kind::SINGLETON:
1343
1757
    return ::cvc5::theory::sets::SingletonTypeRule::computeIsConst(nodeManager, n);
1344
1345
106
  case kind::UNION_DISJOINT:
1346
106
    return ::cvc5::theory::bags::BinaryOperatorTypeRule::computeIsConst(nodeManager, n);
1347
1348
182
  case kind::MK_BAG:
1349
182
    return ::cvc5::theory::bags::MkBagTypeRule::computeIsConst(nodeManager, n);
1350
1351
      // clang-format on
1352
1353
3637770
    default:;
1354
  }
1355
1356
3637770
  return false;
1357
1358
}/* TypeChecker::computeIsConst */
1359
1360
}  // namespace expr
1361
22749
}  // namespace cvc5