Skip to content
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

checking unbounded quantification #425

Open
Laplace-Demon opened this issue Aug 27, 2024 · 4 comments
Open

checking unbounded quantification #425

Laplace-Demon opened this issue Aug 27, 2024 · 4 comments

Comments

@Laplace-Demon
Copy link
Collaborator

Laplace-Demon commented Aug 27, 2024

discussion 23/08

@zapashcanon
Copy link
Member

Do you want to start implementing it ?

In the meantime, we can probably take care of providing the missing model_exists(var, prop) function, although I'm not completely sure how we could implement it because it is more complicated than simply asking if a model exists. (cc @filipeom)

@Laplace-Demon
Copy link
Collaborator Author

Laplace-Demon commented Aug 27, 2024

Do you want to start implementing it ?

In the meantime, we can probably take care of providing the missing model_exists(var, prop) function, although I'm not completely sure how we could implement it because it is more complicated than simply asking if a model exists. (cc @filipeom)

There won't be much problem with respect to code generation, and I've just realized we no longer need the PNF form, a simple recursion works.

  • model_exists(var, prop) which returns a boolean, indicating whether the proposition prop holds true for one possible value of var, prop may contain free variables.
  • model_forall(var, prop) which returns a boolean, indicating whether the proposition prop holds true for all possible values of var, prop may contain free variables.

In the mean time, just like what you said, I'm not sure if those are feasible in the solver.

@filipeom
Copy link
Collaborator

filipeom commented Aug 27, 2024

Maybe I misunderstood this, but it seems like a lot of work, we'd essentially be trying to reimplement quantifier elimination for fixed size bitvectors?

This makes the analysis inherently undecidable which will make the solver poop its pants. But why wouldn't we want to use Z3's quantifiers? They probably do a good job a trying to solve these? It would output a bunch of Unknowns for harder formulas but adding then in smtml would be easy

@zapashcanon
Copy link
Member

No, we actually want to use Z3! We are going to craft an example of what we want to achieve and show it to you on Friday :)

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

No branches or pull requests

3 participants