-
Notifications
You must be signed in to change notification settings - Fork 17
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
Handling abstract values in (get-value)
statements
#202
Comments
Currently, With that said, I'd propose to close this issue, unless I missed something ? |
As you wish, I opened it only as a remainder but if you believe this feature is unwanted, I agree to close it. |
FWIW Alt-Ergo does have a bare-bones interactive mode for SMT-LIB input (see OCamlPro/alt-ergo#949). Parsing and typing errors make it crash currently but it is still useful for quick tests. That said, I don't think the issue is really related to checking. Handling this properly (when using |
Ok, so I was really confused for a while and I didn't really understand what feature was being asked, but I see I'm starting to see. If I understand correctly, @Halbaroth is saying that a smt2 file such as the following: (set-option :produce-models true)
(set-logic ALL)
(declare-const a (Array Int Int))
(check-sat)
(get-value (a))
(get-value ((select @array1 0 0))) is technically valid if one supposes the answer to the first (a (as @array1 (Array Int Int))) and therefore, @Halbaroth would like it if alt-ergo (when using the That means different things depending on the use of
In order to add a new term (or type) symbol to the typing env from a loop, the steps would be:
All that being said, considering the need to maintain a part of the typing env that would be tied to the |
Thanks for the detailed explanation! I missed the Further thoughts: this would not need to depend on the Would that sound like a good way to do this for library users (not asking to implement this in Dolmen, trying to understand how best to implement this in Alt-Ergo)? |
I agree that this depends on the mode of the SMT-LIB automaton, and therefore one could handle that by using appropriate |
@bclement-ocp @Halbaroth any news on that one ? |
The PR OCamlPro/alt-ergo#1032 is stalled until we have a decent incremental mode for Alt-Ergo (which isn't planned for the next release as you know). Besides, the feature isn't crucial, so we can close this issue and open a new one if we need this feature later. |
According to the SMT-LIB standard (see page 49 and 65), we can use abstract values returned by a previous
get-value
statement in a new statement.For instance:
Let's imagine the last statement produces the output:
Then the statement:
is valid even if
@array1
isn't a part of signature.Notice that this feature can be used only in an interactive mode. Otherwise, there is no way to predict the abstract value
returned by the previous
get-value
.Both
Z3
andcvc5
don't print an abstract value for the arraya
butAlt-Ergo
does.We don't plan to implement an interactive mode for AE but if we do, we'll need to fix this issue to be
SMT-LIB
compliant.The text was updated successfully, but these errors were encountered: