summaryrefslogtreecommitdiff
path: root/src/theory/uf/kinds
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2021-11-05 15:12:22 -0500
committerGitHub <noreply@github.com>2021-11-05 20:12:22 +0000
commitbc6f79ab1ca703b3507fc43e438f17b4422360b8 (patch)
treef4d0d45d36d94bfde765f1e0f497a9a96293aa03 /src/theory/uf/kinds
parente187b4c5709fc7b15e3d4c0e751224824208d28b (diff)
Move functions and lambdas from builtin to uf (#7570)
This is in preparation for adding better native support for handling lambdas in the higher-order extension of the UF theory. We require that LAMBDA and function types belong to theory UF so that the theory solver is properly notified. This also splits the utility methods for computing whether a function is "constant" to its own file. This PR is code move only.
Diffstat (limited to 'src/theory/uf/kinds')
-rw-r--r--src/theory/uf/kinds22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/theory/uf/kinds b/src/theory/uf/kinds
index 0faa5c672..a1db5120f 100644
--- a/src/theory/uf/kinds
+++ b/src/theory/uf/kinds
@@ -15,10 +15,28 @@ parameterized APPLY_UF VARIABLE 1: "application of an uninterpreted function; fi
typerule APPLY_UF ::cvc5::theory::uf::UfTypeRule
+operator FUNCTION_TYPE 2: "a function type"
+cardinality FUNCTION_TYPE \
+ "::cvc5::theory::uf::FunctionProperties::computeCardinality(%TYPE%)" \
+ "theory/uf/theory_uf_type_rules.h"
+well-founded FUNCTION_TYPE \
+ "::cvc5::theory::uf::FunctionProperties::isWellFounded(%TYPE%)" \
+ "::cvc5::theory::uf::FunctionProperties::mkGroundTerm(%TYPE%)" \
+ "theory/uf/theory_uf_type_rules.h"
+enumerator FUNCTION_TYPE \
+ ::cvc5::theory::uf::FunctionEnumerator \
+ "theory/uf/type_enumerator.h"
+
+operator LAMBDA 2 "a lambda expression; first parameter is a BOUND_VAR_LIST, second is lambda body"
+
+typerule LAMBDA ::cvc5::theory::uf::LambdaTypeRule
+
variable BOOLEAN_TERM_VARIABLE "Boolean term variable"
-parameterized PARTIAL_APPLY_UF APPLY_UF 1: "partial uninterpreted function application"
-typerule PARTIAL_APPLY_UF ::cvc5::theory::uf::PartialTypeRule
+variable LAMBDA_VARIABLE "Lambda variable, used for lazy lambda lifting"
+
+# lambda expressions that are isomorphic to array constants can be considered constants
+construle LAMBDA ::cvc5::theory::uf::LambdaTypeRule
operator HO_APPLY 2 "higher-order (partial) function application"
typerule HO_APPLY ::cvc5::theory::uf::HoApplyTypeRule
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback