Simplifications to the datatypes API (#8511)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 1 Apr 2022 23:23:18 +0000 (18:23 -0500)
committerGitHub <noreply@github.com>
Fri, 1 Apr 2022 23:23:18 +0000 (23:23 +0000)
commit430c11f8794c02fb45f413596bc7929d44c0ee35
tree6d0ebc80356b96bd47bd99972a0a3d494f42cc0f
parent5982baed871b6bef18a352a3bb31186f4a364932
Simplifications to the datatypes API (#8511)

This PR makes it so that common users of the datatypes API do not need to use "unresolved" datatypes sorts. Instead, these are automatically inferred by the NodeManager when calling mkMutualDatatypeTypes.

API Changes:
(1) adds addSelectorUnresolved to DatatypeConstructorDecl, which is the sole method needed to specify ordinary recursive selectors.
(2) adds to unit test examples that use this variant instead of using unresolved sorts.
(3) the API method mkUnresolvedSort is renamed to mkUnresolvedDatatypeSort and is marked experimental.

Note that unresolved datatype sorts are still needed to support mixed parametric datatypes and nested recursive datatypes in the smt2 parser, so they cannot be deleted yet.

Followup PR will add to documentation on elaborate further on how to use the datatypes API.
15 files changed:
src/api/cpp/cvc5.cpp
src/api/cpp/cvc5.h
src/api/java/io/github/cvc5/DatatypeConstructorDecl.java
src/api/java/io/github/cvc5/Solver.java
src/api/java/jni/datatype_constructor_decl.cpp
src/api/java/jni/solver.cpp
src/api/python/cvc5.pxd
src/api/python/cvc5.pxi
src/parser/parser.cpp
test/unit/api/cpp/datatype_api_black.cpp
test/unit/api/cpp/solver_black.cpp
test/unit/api/java/DatatypeTest.java
test/unit/api/java/SolverTest.java
test/unit/api/python/test_datatype_api.py
test/unit/api/python/test_solver.py