-
Notifications
You must be signed in to change notification settings - Fork 54
Add support for arrays in Yices2 #523
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The implementation looks good at first view.
Does it work with existing Yices2 bindings or do we need an update?
I saw the other PR. I am just wondering, whether we can merge this first.
Hello Karlheinz, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can be merged
Thanks for merging! I think we still need to update |
Hello,
in this PR we add support for arrays to the Yices2 backend. Yices has supported arrays for a while, however, the implementation is a bit non-standard. Instead of the usual array operations from SMTLIB we have to use function terms:
Const
become(lambda (x::T) c)
whereT
is the index type andc
the default elementSelect
becomes regular function applicationStore
become function update where we "fix" the function for a single valueArray types from SMTLIB then map to (curried) function types in Yices2
There can be some confusion between UF terms and arrays as both are just function terms in Yices2. We work around issue this by explicitly keeping track of all our UF declarations in the
FormulaCreator
and assume all other function terms must be arrays