-
Notifications
You must be signed in to change notification settings - Fork 3
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
Send simplified list of locations to front end for purposes of providing constraints #426
Comments
From @danmatichuk: Implementation steps needed to address this issue:
|
From @danmatichuk:
|
My plan is to implement a GUI for a limited form of constraint for now. Basically a conjunction of relations with LHS a variable and RHS and integer constant. The relations I will allow are: LTs | LTu | GTs | GTu | LEs | LEu | GEs | GEu | NEQ | EQ. We can allow more general constraints on the option if desired. Here is a sketch of the JSON I could send to the verifier:
Seem reasonable? Nothing set in stone yet. |
I have a work in progress pr #428 that adds a footprint for the original and patched traces. The format is the same as the register and memory events that are sent with the concrete traces, but the values are either concrete (as with a concrete trace) or be symbolic identifiers that look like this:
For an 8-bit bitvector. |
Is the "symbolic_ident" appropriate to show the user and to identify the symbolic identifier in the constraint I send to the verifier? |
Is the PR stable enough for me to try it? |
From @danmatichuk: Step (2) & (3) implemented. Working on step (1) "Create hook to tell verifier to regenerate trace using constraint." Have plumbing in place for receiving constraints, plan for today is to create the constraint events by adding these features:
|
Have you started coding to the JSON structure of constraints I specified above? It occurred to me that we could save ourselves some busy work and I can just send the constraints as a simple list of triples [, , ] with being the same JSON for a var that you sent me. We can generalize this if desired on the option. |
I'm just starting this now so any format is fine. The main thing I need in addition to the triple is a mapping to the corresponding trace. At the moment probably the easiest way to do it is to just take a list of list of triples, and just assume by convention that they're in the same order as the trace footprints. |
For simplicity we're restricting the cases where you can generate new traces to only the traces presented at the end of the analysis for each equivalence condition. This simplifies the interaction model significantly, since the trace generation can be easily made re-entrant during this final phase (since we know the assumptions/domain for each node is now fixed). Later we can generalize this to allow providing constraints to any of the traces emitted as part of the analysis, which just requires a bit more coordination between the front and backend in order for the user to request nodes to be re-processed with extra constraints. |
In lieu of the full generality of an expression language as described in #425, we can consider a simplified approach where we simply extract a list of "interesting" machine locations from a given trace and assign them to opaque identifiers. The idea is that only these identifiers are sent to the front end and send back to the verifier, which avoids the complexity of passing arbitrary expressions back and forth.
The verifier therefore provides the front end with a list of 4-tuples: the abstract identifier, the symbolic expression, the concretized expression with respect to the current trace, and the type
The text was updated successfully, but these errors were encountered: