Skip to content

Fix QuantifierRef.sort to return the correct sort for lambda expressions - #115

Closed
msakai wants to merge 1 commit into
cvc5:mainfrom
msakai:fix-lambda-sort
Closed

Fix QuantifierRef.sort to return the correct sort for lambda expressions#115
msakai wants to merge 1 commit into
cvc5:mainfrom
msakai:fix-lambda-sort

Conversation

@msakai

@msakai msakai commented Aug 9, 2026

Copy link
Copy Markdown

No description provided.

@daniel-larraz

Copy link
Copy Markdown
Contributor

Closing as superseded by PR #118.

daniel-larraz added a commit that referenced this pull request Aug 12, 2026
QuantifierRef.sort() hardcoded the Boolean sort, so a lambda expression
reported Bool instead of its actual function sort.

Return the real sort for lambdas, and introduce FuncSortRef so that
function sorts are more than an opaque SortRef. _to_sort_ref now routes
function sorts to it, giving every function sort - a lambda's or an
uninterpreted function's - the arity(), domain(), domain_n() and range()
accessors. Those names mirror Z3Py's ArraySortRef, where lambdas have
array sorts, so code inspecting a lambda's sort carries over from Z3Py.

cvc5 keeps function and array sorts distinct, so is_array_sort() still
reports False for them; add is_func_sort() to test for the new sort.

FuncDeclRef.arity/domain/range now delegate to the sort instead of each
re-deriving from getSort().getFunction*(), which is behavior-preserving:
every FuncDeclRef is built from a function sort.

This supersedes #115.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants