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

Introduce intermediate symbolic proposition interface in the symbolic executor #40

Open
skeuchel opened this issue Oct 18, 2023 · 0 comments

Comments

@skeuchel
Copy link
Member

skeuchel commented Oct 18, 2023

The symbolic executor uses the inductively defined symbolic propositions directly, i.e. we have essentially the two monads β–‘(A -> π•Š) -> π•Š and β–‘(A -> SHeap -> π•Š) -> SHeap -> π•Š. I think it might be good to introduce an intermediate type class interface for propositions π•Š and/or heap propositions SHeap -> π•Š that has as methods assert/assume etc, i.e. the interface of our symbolic propositions. Specifically the interfaces should encapsulate everything related to the solver and to heaps in its instances and hide it from the rest of the symbolic executor implementation. The symbolic executor would essentially already look as if it is based on separation logic symbolic propositions directly and does not do any solving itself. Making the switch to symbolic separation logic propositions later should be easy after this. There are other definitions that exhibit the same interface as symbolic propositions, see for example the heuristics for quantifier instantiation implemented in solve_evars / solve_uvars. Hooking a spatial solver into the symbolic executor should also be done in such an instance.

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

1 participant