Aditya V. Thakur
University of Wisconsin-Madison
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Aditya V. Thakur.
tools and algorithms for construction and analysis of systems | 2009
Aditya V. Nori; Sriram K. Rajamani; Sai Deep Tetali; Aditya V. Thakur
We present Yogi , a tool that checks properties of C programs by combining static analysis and testing. Yogi implements the Dash algorithm which performs verification by combining directed testing and abstraction. We have engineered Yogi in such a way that it plugs into Microsofts Static Driver Verifier framework. We have used this framework to run Yogi on 69 Windows Vista drivers with 85 properties. We find that the new algorithm enables Yogi to scale much better than Slam , which is the current engine driving Microsofts Static Driver Verifier.
computer aided verification | 2010
Aditya V. Thakur; Junghee Lim; Akash Lal; Amanda Burton; Evan Driscoll; Matt Elder; Tycho Andersen; Thomas W. Reps
We present the algorithms used in McVeto (Machine-Code VErification TOol), a tool to check whether a stripped machine-code program satisfies a safety property The verification problem that McVeto addresses is challenging because it cannot assume that it has access to (i) certain structures commonly relied on by source-code verification tools, such as control-flow graphs and call-graphs, and (ii) meta-data, such as information about variables, types, and aliasing It cannot even rely on out-of-scope local variables and return addresses being protected from the programs actions What distinguishes McVeto from other work on software model checking is that it shows how verification of machine-code can be performed, while avoiding conventional techniques that would be unsound if applied at the machine-code level.
IEEE Transactions on Software Engineering | 2010
Nels E. Beckman; Aditya V. Nori; Sriram K. Rajamani; Robert J. Simmons; Sai Deep Tetali; Aditya V. Thakur
We present an algorithm DASH to check if a program P satisfies a safety property φ. The unique feature of this algorithm is that it uses only test generation operations, and it refines and maintains a sound program abstraction as a consequence of failed test generation operations. Thus, each iteration of the algorithm is inexpensive, and can be implemented without any global may-alias information. In particular, we introduce a new refinement operator WPα that uses only the alias information obtained by symbolically executing a test to refine abstractions in a sound manner. We present a full exposition of the DASH algorithm and its theoretical properties. We have implemented DASH in a tool called YOGI that plugs into Microsofts Static Driver Verifier framework. We have used this framework to run YOGI on 69 Windows Vista drivers with 85 properties and find that YOGI scales much better than SLAM, the current engine driving Microsofts Static Driver Verifier.
static analysis symposium | 2012
Aditya V. Thakur; Thomas W. Reps
This paper gives an account of Stalmarcks method for validity checking of propositional-logic formulas, and explains each of the key components in terms of concepts from the field of abstract interpretation. We then use these insights to present a framework for propositional-logic validity-checking algorithms that is parametrized by an abstract domain and operations on that domain. Stalmarcks method is one instantiation of the framework; other instantiations lead to new decision procedures for propositional logic.
architectural support for programming languages and operating systems | 2016
Phitchaya Mangpo Phothilimthana; Aditya V. Thakur; Rastislav Bodik; Dinakar Dhurjati
Developing a code optimizer is challenging, especially for new, idiosyncratic ISAs. Superoptimization can, in principle, discover machine-specific optimizations automatically by searching the space of all instruction sequences. If we can increase the size of code fragments a superoptimizer can optimize, we will be able to discover more optimizations. We develop LENS, a search algorithm that increases the size of code a superoptimizer can synthesize by rapidly pruning away invalid candidate programs. Pruning is achieved by selectively refining the abstraction under which candidates are considered equivalent, only in the promising part of the candidate space. LENS also uses a bidirectional search strategy to prune the candidate space from both forward and backward directions. These pruning strategies allow LENS to solve twice as many benchmarks as existing enumerative search algorithms, while LENS is about 11-times faster. Additionally, we increase the effective size of the superoptimized fragments by relaxing the correctness condition using contexts (surrounding code). Finally, we combine LENS with complementary search techniques into a cooperative superoptimizer, which exploits the stochastic search to make random jumps in a large candidate space, and a symbolic (SAT-solver-based) search to synthesize arbitrary constants. While existing superoptimizers consistently solve 9--16 out of 32 benchmarks, the cooperative superoptimizer solves 29 benchmarks. It can synthesize code fragments that are up to 82% faster than code generated by gcc -O3 from WiBench and MiBench.
static analysis symposium | 2012
Aditya V. Thakur; Matt Elder; Thomas W. Reps
Given a concrete domain
computer aided verification | 2010
Thomas W. Reps; Junghee Lim; Aditya V. Thakur; Gogul Balakrishnan; Akash Lal
\mathcal{C}
symposium on code generation and optimization | 2008
Aditya V. Thakur; R. Govindarajan
, a concrete operation
computer aided verification | 2012
Evan Driscoll; Aditya V. Thakur; Thomas W. Reps
\tau: \mathcal{C} \to \mathcal{C}
Electronic Notes in Theoretical Computer Science | 2015
Aditya V. Thakur; Akash Lal; Junghee Lim; Thomas W. Reps
, and an abstract domain