-
Notifications
You must be signed in to change notification settings - Fork 0
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
Order of definitions in models #26
Comments
Hi Guillaume, thanks for your comment! Clark, Cesare, and I discussed and worked on the issue. Here is a draft of a change that should fix the issue. What do you think? Best, Pascal (also for Cesare and Clark) |
Hi Pascal, That seems to fix the problem I raised indeed. That being said, your proposal also seem to forbid using theory-defined symbols in the terms for model values ? For instance, |
Actually, after having thought about it some more: some models actually do require the use of theory-defined function symbols (which, as far as I understand it, would be forbidden by the proposed new spec, since they are not defined in the model). For instance:
So, I think that theory-defined function symbols must also be allowed, and the wording of the restriction should be adapted to make it clear that they are allowed. |
Hi Guillaume, Thanks for your comment! You are right, we clarified that we meant that user symbols must be properly ordered. Theory symbols can indeed occur in definitions. |
That seems great ! Thanks for the effort |
During the last SMT-COMP, there was an issue where a solver (cvc5 in this case) generated a model where the definition of a symbol/constant used a symbol/constant that was defined later in the model (and dolmen refused that model). It is not very clear whether the standard allows such models or not, so this issue is to ask for a clarification on whether this should be allowed, or whether models should be defined in a particular/defined order.
Personally, I'd argue for models to be at least defined in topological order (i.e. every constant is defined before being used), so let me copy part of my answer in the mentioned issue:
If one wants to go further, in order to make model validation as efficient as possible, the best things would be to have definitions in the model be in the same order as the declarations of the corresponding symbols appear in the original problem file. However, that may be too restrictive/annoying to implement for solvers.
In conclusion, I think requiring topological order of definitions is a reasonable constraint, helps prevent unwanted (and dangerous) situations such as infinite recursive values, and does not restrict expressiveness since there are dedicated commands to define recursive values.
The text was updated successfully, but these errors were encountered: