Problem: Come up with a semi-automatic strategy for error localization in error traces. This could involve building a visualization tool as a front-end that allows the user to query various parts of the error trace. The back-end would be an optimization engine that solves a constraint problem to locate the fewest points in the trace at which a different system action could have avoided the error.
Note: Bryan Brady will be the mentor for this project, which will be conducted with the UCLID verification system.
Problem: Write an all-SAT solver that improves over the state-of-the-art over some problems. Circuit minimization techniques might be useful to optimize the size of the Boolean function representing the set of solutions.
Problem: The simplest form of timing constraint is a partial order between events.
Last year, a group of 219C students came up with an algorithm for learning partial
orders between events from event traces (from simulations or executions). Their
paper will appear at DATE this year. You can start with their work and apply
it to an entirely new application area. One possibility is generating real-time interface
specifications -- the assumptions that a system has about the real-time behavior
of its environment.
Research Plan: The project must address the following questions. What is the right modeling formalism for this class of systems? How are timing properties best specified and verified? We can foresee at least three challenging problems. The first is that of state-space explosion, which will necessitate the use of techniques such as abstraction and compositional reasoning. Secondly, finite-state sub-systems might not share the same clock, thereby requiring novel ways to model them and specify real-time properties, possibly using relative timing assumptions. Thirdly, many system properties are likely to be highly data-dependent, which, for efficiency reasons, could need models that are higher-level than just Boolean models.
Problem: FLEET programs are extremely concurrent, where instructions are organized in bags without imposing conventional sequencing. The problem with that added concurrency is that some orderings of instructions generate wrong programs. The goal of this project is to adapt current automated verification tools and techniques to verify FLEET programs.