Nishant Sinha 0001

dblp:07/201-1 · DBLP profile ↗
← Back
24ranked-venue papers
8as first author
0since 2021 · last 2016
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 22 · 8 first-authorTheory of computation · 14 · 4 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
9 papers
Software testing · 40% Program analysis · 26% Concurrent programming · 20%
Theoretical computer science
5 papers
Automated reasoning and model checking · 91% Logic in computer science · 5% Graph algorithms and graph theory · 5%
Human-computer interaction and pervasive computing
2 papers
User interface design and tools · 51% Design research and methods · 49%

Topics — the 30 heaviest of 36, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
0.322016
Static DOM event dependency analysis for testing web applications · SIGSOFT FSE 2016
Static data race detection for concurrent programs with asynchronous calls · ESEC/SIGSOFT FSE 2009
Software testing › test input generation
concolic testing
0.212016
Type-aware concolic testing of JavaScript programs · ICSE 2016
Program analysis › static analysis
constraint-based analysis
0.212016
Static DOM event dependency analysis for testing web applications · SIGSOFT FSE 2016
Software testing
test input generation
0.212016
Static DOM event dependency analysis for testing web applications · SIGSOFT FSE 2016
Software testing
web application testing
0.212016
Static DOM event dependency analysis for testing web applications · SIGSOFT FSE 2016
Design research and methods › design space
design space exploration
0.212015
Responsive designs in a snap · ESEC/SIGSOFT FSE 2015
Automated reasoning and model checking
model checking
0.222012
Alternate and Learn: Finding Witnesses without Looking All over · CAV 2012
SAT-Based Compositional Verification Using Lazy Learning · CAV 2007
User interface design and tools › user interface generation
model-based interface design
0.212013
Compiling mockups to flexible UIs · ESEC/SIGSOFT FSE 2013
Software testing › test generation
GUI test generation
0.212013
Guided test generation for web applications · ICSE 2013
Software testing
test generation
0.212013
Guided test generation for web applications · ICSE 2013
Automated reasoning and model checking › model checking
counterexample generation
0.112012
Alternate and Learn: Finding Witnesses without Looking All over · CAV 2012
Automated reasoning and model checking › model checking
witness generation
0.112012
Alternate and Learn: Finding Witnesses without Looking All over · CAV 2012
Concurrent programming
memory models
0.112011
On interference abstractions · POPL 2011
Program analysis
concurrent program analysis
0.112010
Staged concurrent program analysis · SIGSOFT FSE 2010
Concurrent programming › concurrency verification
thread-modular reasoning
0.112010
Staged concurrent program analysis · SIGSOFT FSE 2010
Concurrent programming
concurrency bugs
0.112009
Static data race detection for concurrent programs with asynchronous calls · ESEC/SIGSOFT FSE 2009
Concurrent programming › concurrency bugs
data races
0.112009
Static data race detection for concurrent programs with asynchronous calls · ESEC/SIGSOFT FSE 2009
Concurrent programming › concurrency bug detection
data race detection
0.112009
Static data race detection for concurrent programs with asynchronous calls · ESEC/SIGSOFT FSE 2009
Programming languages and type systems › type systems
dynamic typing
0.112016
Type-aware concolic testing of JavaScript programs · ICSE 2016
Automated reasoning and model checking
compositional verification
0.112007
SAT-Based Compositional Verification Using Lazy Learning · CAV 2007
Automated reasoning and model checking › model checking › symbolic model checking
SAT-based model checking
0.112007
SAT-Based Compositional Verification Using Lazy Learning · CAV 2007
Program verification › model checking
partial order reduction
0.112006
Symbolic Model Checking of Concurrent Programs Using Partial Orders and On-the-Fly Transactions · CAV 2006
Automated reasoning and model checking › model checking
symbolic model checking
0.112006
Symbolic Model Checking of Concurrent Programs Using Partial Orders and On-the-Fly Transactions · CAV 2006
Program verification
modular verification
0.112005
Automated Assume-Guarantee Reasoning for Simulation Conformance · CAV 2005
Automated reasoning and model checking › compositional verification
assume-guarantee reasoning
0.112005
Automated Assume-Guarantee Reasoning for Simulation Conformance · CAV 2005
Requirements engineering and software design
business rules
0.012013
Guided test generation for web applications · ICSE 2013
Automated reasoning and model checking
decision procedures
0.012004
Range Allocation for Separation Logic · CAV 2004
Graph algorithms and graph theory
graph algorithms
0.012004
Range Allocation for Separation Logic · CAV 2004
Automated reasoning and model checking
satisfiability modulo theories
0.012004
Range Allocation for Separation Logic · CAV 2004
Logic in computer science › program logic
separation logic
0.012004
Range Allocation for Separation Logic · CAV 2004

Methods — techniques the papers use, named apart from their topics

combinatorial search · 0.4type analysis · 0.2constraint-based declarative program analysis · 0.2concolic testing · 0.2design space pruning · 0.2learning · 0.2directed crawling · 0.2abstract state-transition diagram · 0.2CSS rule-based architecture · 0.2alternation · 0.1partial order reduction · 0.1thread-modular summaries · 0.1sequential consistency · 0.1SMT solver · 0.1static analysis · 0.1SAT solving · 0.1symbolic model checking · 0.1automata learning · 0.1
YearPublicationVenuePosition
2016 Type-aware concolic testing of JavaScript programs
abstract
Conventional concolic testing has been used to provide high coverage of paths in statically typed languages. While it has also been applied in the context of JavaScript (JS) programs, we observe that applying concolic testing to dynamically-typed JS programs involves tackling unique problems to ensure scalability. In particular, a naive type-agnostic extension of concolic testing to JS programs causes generation of large number of inputs. Consequently, many executions operate on undefined values and repeatedly explore same paths resulting in redundant tests, thus diminishing the scalability of testing drastically.
Monika Dhok, Murali Krishna Ramanathan, Nishant Sinha 0001
ICSE3
2016 Static DOM event dependency analysis for testing web applications
abstract
The number and complexity of JavaScript-based web applications are rapidly increasing, but methods and tools for automatically testing them are lagging behind, primarily due to the difficulty in analyzing the subtle interactions between the applications and the event-driven execution environment. Although static analysis techniques have been routinely used on software written in traditional programming languages, such as Java and C++, adapting them to handle JavaScript code and the HTML DOM is difficult. In this work, we propose the first constraint-based declarative program analysis procedure for computing dependencies over program variables as well as event-handler functions of the various DOM elements, which is crucial for analyzing the behavior of a client-side web application. We implemented the method in a software tool named JSDEP and evaluated it in ARTEMIS, a platform for automated web application testing. Our experiments on a large set of web applications show the new method can significantly reduce the number of redundant test sequences and significantly increase test coverage with minimal overhead.
Chungha Sung, Markus Kusano, Nishant Sinha 0001, Chao Wang 0001
SIGSOFT FSE3
2015 Responsive designs in a snap
abstract
With the massive adoption of mobile devices with different form- factors, UI designers face the challenge of designing responsive UIs which are visually appealing across a wide range of devices. De- signing responsive UIs requires a deep knowledge of HTML/CSS as well as responsive patterns - juggling through various design configurations and re-designing for multiple devices is laborious and time-consuming. We present DECOR, a recommendation tool for creating multi-device responsive UIs. Given an initial UI de- sign, user-specified design constraints and a list of devices, DECOR provides ranked, device-specific recommendations to the designer for approval. Design space exploration involves a combinatorial explosion: we formulate it as a design repair problem and devise several design space pruning techniques to enable efficient repair. An evaluation over real-life designs shows that DECOR is able to compute the desired recommendations, involving a variety of responsive design patterns, in less than a minute.
Nishant Sinha 0001, Rezwana Karim
ESEC/SIGSOFT FSE1
2015 Commutativity of Reducers
Yu-Fang Chen 0001, Chih-Duo Hong, Nishant Sinha 0001, Bow-Yaw Wang
TACAS3
2014 Efficient verification of periodic programs using sequential consistency and snapshots
abstract
We verify safety properties of periodic programs, consisting of periodically activated threads scheduled preemptively based on their priorities. We develop an approach based on generating, and solving, a provably correct verification condition (VC). The VC is generated by adapting Lamport's sequential consistency to the semantics of periodic programs. Our approach is able to handle periodic programs that synchronize via two commonly used types of locks - priority ceiling protocol (PCP) locks, and CPU locks. To improve the scalability of our approach, we develop a strategy called snapshotting, which leads to VCs containing fewer redundant sub-formulas, and are therefore more easily solved by current SMT engines. We develop two types of snapshotting - SS-ALL snapshots all shared variables aggressively, while SS-MOD snapshots only modified variables. We have implemented our approach in a tool. Experiments on a benchmark of robot controllers indicate that SS-MOD is the best overall strategy, and even outperforms significantly the state-of-the art periodic program verifier prior to this work.
Sagar Chaki, Arie Gurfinkel, Nishant Sinha 0001
FMCAD3
2013 Guided test generation for web applications
abstract
We focus on functional testing of enterprise applications with the goal of exercising an application's interesting behaviors by driving it from its user interface. The difficulty in doing this is focusing on the interesting behaviors among an unbounded number of behaviors. We present a new technique for automatically generating tests that drive a web-based application along interesting behaviors, where the interesting behavior is specified in the form of “business rules.” Business rules are a general mechanism for describing business logic, access control, or even navigational properties of an application's GUI. Our technique is black box, in that it does not analyze the application's server-side implementation, but relies on directed crawling via the application's GUI. To handle the unbounded number of GUI states, the technique includes two phases. Phase 1 creates an abstract state-transition diagram using a relaxed notion of equivalence of GUI states without considering rules. Next, Phase 2 identifies rule-relevant abstract paths and refines those paths using a stricter notion of state equivalence. Our technique can be much more effective at covering business rules than an undirected technique, developed as an enhancement of an existing test-generation technique. Our experiments showed that the former was able to cover 92% of the rules, compared to 52% of the rules covered by the latter.
Suresh Thummalapenta, K. Vasanta Lakshmi, Saurabh Sinha 0001, Nishant Sinha 0001, Satish Chandra 0001
ICSE4
2013 Compiling mockups to flexible UIs
abstract
As the web becomes ubiquitous, developers are obliged to develop web applications for a variety of desktop and mobile platforms. Re- designing the user interface for every such platform is clearly cumbersome. We propose a new framework based on model-based compilation to assist the designer in solving this problem. Starting from an under-specified visual design mockup drawn by the designer, we show how faithful and flexible web pages can be obtained with virtually no manual effort. Our framework, in sharp contrast to existing web design tools, overcomes the tough challenges involved in mockup compilation by (a) employing combinatorial search to infer hierarchical layouts and (b) mechanizing adhoc principles for CSS design into a modular, extensible rule-based architecture. We believe ours is the first disciplined effort to solve the problem and will inspire rapid, low-effort web design.
Nishant Sinha 0001, Rezwana Karim
ESEC/SIGSOFT FSE1
2012 Alternate and Learn: Finding Witnesses without Looking All over
Nishant Sinha 0001, Nimit Singhania, Satish Chandra 0001, Manu Sridharan
CAV1
2012 Object Model Construction for Inheritance in C++ and Its Applications to Program Analysis
Jing Yang 0003, Gogul Balakrishnan, Naoto Maeda, Franjo Ivancic, Aarti Gupta, Nishant Sinha 0001, Sriram Sankaranarayanan 0001, Naveen Sharma
CC6
2011 On interference abstractions
Nishant Sinha 0001, Chao Wang 0001
POPL1
2010 Scalable and precise program analysis at NEC
Gogul Balakrishnan, Malay K. Ganai, Aarti Gupta, Franjo Ivancic, Vineet Kahlon, Naoto Maeda, Nadia Papakonstantinou, Sriram Sankaranarayanan 0001, Nishant Sinha 0001, Chao Wang 0001
FMCAD10
2010 Modular bug detection with inertial refinement
Nishant Sinha 0001
FMCAD1
2010 Staged concurrent program analysis
abstract
Concurrent program verification is challenging because it involves exploring a large number of possible thread interleavings together with complex sequential reasoning. As a result, concurrent program verifiers resort to bi-modal reasoning, which alternates between reasoning over intra-thread (sequential) semantics and inter-thread (concurrent) semantics. Such reasoning often involves repeated intra-thread reasoning for exploring each interleaving (inter-thread reasoning) and leads to inefficiency. In this paper, we present a new two-stage analysis which completely separates intra- and inter-thread reasoning. The first stage uses sequential program semantics to obtain a precise summary of each thread in terms of the global accesses made by the thread. The second stage performs inter-thread reasoning by composing these thread-modular summaries using the notion of sequential consistency. Assertion violations and other concurrency errors are then checked in this composition with the help of an off-the-shelf SMT solver. We have implemented our approach in the FUSION framework for checking concurrent C programs shows that avoiding redundant bi-modal reasoning makes the analysis more scalable.
Nishant Sinha 0001, Chao Wang 0001
SIGSOFT FSE1
2009 Static data race detection for concurrent programs with asynchronous calls
abstract
A large number of industrial concurrent programs are being designed based on a model which combines threads with event-based communication. These programs consist of several threads which perform computation by dispatching tasks to other threads via asynchronous function calls. These asynchronous function calls are implemented using function objects, which are essentially wrappers containing a pointer to the function that should be executed on a particular thread with the corresponding arguments. In many cases, the arguments, in turn, contain function objects which serve as callbacks. Verifying such programs which involves reasoning about complex concurrency constructs comprising function pointers and callback functions is extremely tricky especially in the presence of recursion. In this paper, we present a fast and accurate static data race detection technique for multi-threaded C programs with asynchronous function calls and demonstrate its application to real-life software.
Vineet Kahlon, Nishant Sinha 0001, Erik Kruus
ESEC/SIGSOFT FSE2
2008 Symbolic Program Analysis Using Term Rewriting and Generalization
abstract
Symbolic execution by James C. King (1976) is a popular program verification technique, where the program inputs are initialized to unknown symbolic values, and then propagated along program paths with the help of decision procedures. This technique has two main bottlenecks: (a) the number of program execution paths to be explored may be exponential, and, (b) the state representation (map from variables to terms) may blow-up. We propose a new program verification technique that addresses the problems by (a) performing a work list based analysis that handles join points, and (b) simplifying the intermediate state representation by using term rewriting. In addition, our technique tries to compact expressions generated during analysis of program loops by using a term generalization technique based on anti-unification. We have implemented the proposed method in the F-SOFT verification framework using the Maude term rewriting engine. Preliminary experiments show that the proposed method is effective in improving verification times on real-life benchmarks.
Nishant Sinha 0001
FMCAD1
2008 Verification of evolving software via component substitutability analysis
Sagar Chaki, Edmund M. Clarke, Natasha Sharygina, Nishant Sinha 0001
Formal Methods Syst. Des.4
2007 SAT-Based Compositional Verification Using Lazy Learning
Nishant Sinha 0001, Edmund M. Clarke
CAV1
2006 Symbolic Model Checking of Concurrent Programs Using Partial Orders and On-the-Fly Transactions
Vineet Kahlon, Aarti Gupta, Nishant Sinha 0001
CAV3
2006 Assume-Guarantee Reasoning for Deadlock
abstract
We extend the learning-based automated assume guarantee paradigm to perform compositional deadlock detection. We define failure automata, a generalization of finite automata that accept regular failure sets. We develop a learning algorithm LF that constructs the minimal deterministic failure automaton accepting any unknown regular failure set using a minimally adequate teacher. We show how LF can be used for compositional regular failure language containment, and deadlock detection, using non-circular and circular assume guarantee rules. We present an implementation of our techniques and encouraging experimental results on several non-trivial benchmarks
Sagar Chaki, Nishant Sinha 0001
FMCAD2
2005 Automated Assume-Guarantee Reasoning for Simulation Conformance
Sagar Chaki, Edmund M. Clarke, Nishant Sinha 0001, Prasanna Thati
CAV3
2005 Dynamic Component Substitutability Analysis
Natasha Sharygina, Sagar Chaki, Edmund M. Clarke, Nishant Sinha 0001
FM4
2005 Concurrent software verification with states, events, and deadlocks
abstract
Abstract We present a framework for model checking concurrent software systems which incorporates both states and events. Contrary to other state/event approaches, our work also integrates two powerful verification techniques, counterexample-guided abstraction refinement and compositional reasoning. Our specification language is a state/event extension of linear temporal logic, and allows us to express many properties of software in a concise and intuitive manner. We show how standard automata-theoretic LTL model checking algorithms can be ported to our framework at no extra cost, enabling us to directly benefit from the large body of research on efficient LTL verification. We also present an algorithm to detect deadlocks in concurrent message-passing programs. Deadlock- freedom is not only an important and desirable property in its own right, but is also a prerequisite for the soundness of our model checking algorithm. Even though deadlock is inherently non-compositional and is not preserved by classical abstractions, our iterative algorithm employs both (non-standard) abstractions and compositional reasoning to alleviate the state-space explosion problem. The resulting framework differs in key respects from other instances of the counterexample-guided abstraction refinement paradigm found in the literature. We have implemented this work in the magic verification tool for concurrent C programs and performed tests on a broad set of benchmarks. Our experiments show that this new approach not only eases the writing of specifications, but also yields important gains both in space and in time during verification. In certain cases, we even encountered specifications that could not be verified using traditional pure event-based or state-based approaches, but became tractable within our state/event framework. We also recorded substantial reductions in time and memory consumption when performing deadlock-freedom checks with our new abstractions. Finally, we report two bugs (including a deadlock) in the source code of Micro-C/OS versions 2.0 and 2.7, which we discovered during our experiments.
Sagar Chaki, Edmund M. Clarke, Joël Ouaknine, Natasha Sharygina, Nishant Sinha 0001
Formal Aspects Comput.5
2004 Range Allocation for Separation Logic
abstract
Separation Logic consists of a Boolean combination of predicates of the form v i ≥ v j + c where c is a constant and v i ,v j are variables of some ordered infinite type like real or integer. Any equality or inequality can be expressed in this logic. We propose a decision procedure for Separation Logic based on allocating small domains (ranges) to the formula’s variables that are sufficient for preserving satisfiability. Given a Separation Logic formula φ, our procedure constructs the inequalities graph of φ, based on φ’s predicates. This graph represents an abstraction of the formula, as there are many formulas with the same set of predicates. Our procedure then analyzes this graph and allocates a range to each variable that is adequate for all of these formulas. This approach of finding small finite ranges and enumerating them symbolically is both theoretically and empirically more efficient than methods based on case-splitting or reduction to Propositional Logic. Experimental results show that the state-space (that is, the number of assignments that need to be enumerated) allocated by our procedure is frequently exponentially smaller than previous methods.
Muralidhar Talupur, Nishant Sinha 0001, Ofer Strichman, Amir Pnueli
CAV2
2004 State/Event-Based Software Model Checking
Sagar Chaki, Edmund M. Clarke, Joël Ouaknine, Natasha Sharygina, Nishant Sinha 0001
IFM5