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

Replace polymorphic sets in symbolic execution #64

Open
benozol opened this issue Jan 28, 2019 · 10 comments
Open

Replace polymorphic sets in symbolic execution #64

benozol opened this issue Jan 28, 2019 · 10 comments
Assignees

Comments

@benozol
Copy link
Contributor

benozol commented Jan 28, 2019

Requires comparison for sat_conj

@benozol benozol self-assigned this Jan 28, 2019
@Niols
Copy link
Member

Niols commented Jan 28, 2019

But do we really want sets of states? I don't think that we are eliminating a lot of states by doing so, while we have to compare a lot of things, is this really giving a speedup? I should try to change it to lists and see if that makes a difference.

Also, the comparison for sat_conj might prove quite hard to write. I guess that I'd just fall back on polymorphic comparison…

@Niols
Copy link
Member

Niols commented Jan 28, 2019

Also, I was asking about BatSet because I wanted to know why we had Batteries as a dependency. But I don't mind having that dependency, and it is packaged in Debian.

@benozol
Copy link
Contributor Author

benozol commented Jan 28, 2019

Just using lists may be possible as well! I’d prefer to keep the container abstract in the symbolic execution, but replacing the set with lists is just a question of the Why3 driver.

@Niols
Copy link
Member

Niols commented Jan 29, 2019

Yes of course, the container has to be abstract. But we could adapt the Why3 driver. I'll give it a try and run some benchmarks to see if we gain a speedup when removing comparison but keeping duplicates.

@Niols Niols self-assigned this Jan 29, 2019
@Niols
Copy link
Member

Niols commented Jan 29, 2019

I've given it a try on the usual postinst of ocaml-base-nox. I get 1m7s with BatSet and 1m6s with List. I imagine that most of the time is spent in the constraints solving. So no need to bother for now. However, it might be interesting to consider that later, when we'll have a better constraint solver. We'll see.

By the way, why do we need BatSet.choose?

@benozol
Copy link
Contributor Author

benozol commented Jan 30, 2019

Thanks that’s interesting. Let’s make polymorphic sets the bottleneck!

why do we need BatSet.choose

That’s a leftover and can be removed.

@benozol benozol changed the title Replace use polymorphic sets in symbolic execution Replace polymorphic sets in symbolic execution Jan 30, 2019
@Niols
Copy link
Member

Niols commented Jan 30, 2019 via email

@Niols
Copy link
Member

Niols commented Feb 21, 2020

@benozol Does this issue still make sense? Would you want me to try the whole batch run twice, once on each kind of sets?

@benozol
Copy link
Contributor Author

benozol commented Feb 21, 2020

Maybe it would make more sense, if we replace the collection type in the symbolic engine and in the OCaml implementation of symbolic utilities (this wasn't the case before IIRC).

(An outdated attempt was made in #102.)

@Niols
Copy link
Member

Niols commented Feb 21, 2020

True, because otherwise we need conversions all the time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants