Properly represent Tuples in the TypeNode AST (#8648)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 29 Apr 2022 21:49:13 +0000 (16:49 -0500)
committerGitHub <noreply@github.com>
Fri, 29 Apr 2022 21:49:13 +0000 (21:49 +0000)
commitf6034c8ede6e9b81f4eb8729594301a8ff3982ff
tree1252606ff39287574db28c256e63254f7daadb46
parent4ae38ac43e7218c28e4dd0bb20902b2ce4268dfc
Properly represent Tuples in the TypeNode AST (#8648)

This makes it so that Tuple types are properly represented in the AST. It also removes a spurious restriction that disallowed higher-order tuples (this was leftover from a very old sanity check in the old API).

For example, a tuple type over (Int, Int) is now (TUPLE_TYPE INT INT) instead of a DATATYPE_TYPE constant.

Tuple types behave exactly like datatypes; we can still retrieve their DType as before.

This is in preparation for gradual types and symbolic tuple projections.
src/expr/node_manager_attributes.h
src/expr/node_manager_template.cpp
src/expr/node_manager_template.h
src/expr/type_node.cpp
src/printer/smt2/smt2_printer.cpp
src/proof/lfsc/lfsc_node_converter.cpp
src/theory/datatypes/kinds
src/theory/datatypes/theory_datatypes_type_rules.cpp
test/unit/api/cpp/solver_black.cpp
test/unit/api/java/SolverTest.java
test/unit/api/python/test_solver.py