Learn More
In an object-oriented language such as Java, every class requires implementations of two special methods, one for determining equality and one for computing hash codes. Although the specification of these methods is usually straightforward, they can be hard to code (due to subclassing, delegation, cyclic references, and other factors) and often harbor(More)
Derailer is an interactive tool for finding security bugs in web applications. Using symbolic execution, it enumerates the ways in which application data might be exposed. The user is asked to examine these exposures and classify the conditions under which they occur as security-related or not; in so doing, the user effectively constructs a specification of(More)
A <i>dependability case</i> is an explicit, end-to-end argument, based on concrete evidence, that a system satisfies a critical property. We report on a case study constructing a dependability case for the control software of a medical device. The key novelty of our approach is a lightweight code analysis that generates a list of side conditions that(More)
The authors find reasons to question whether conventional measures of job satisfaction capture the original conception of 'morale'. In particular, evidence suggests that these measures reflect primarily cognitive evaluation rather than affective state or hedonic tone. Recent developments indicate that cognitive and affective systems may be somewhat(More)
The last decade has seen a dramatic growth in the use of constraint solvers as a computational mechanism, not only for analysis of software, but also at runtime. Solvers are available for a variety of logics but are generally restricted to first-order formulas. Some tasks, however, most notably those involving synthesis, are inherently higher order; these(More)
Alloy is a declarative language for lightweight modeling and analysis of software. The core of the language is based on first-order relational logic, which offers an attractive balance between analyzability and expressiveness. The logic is expressive enough to capture the intricacies of real systems, yet it is also simple enough to support fully automated(More)
We present αleanTAP , a declarative tableau-based theorem prover written as a pure relation. Like leanTAP, on which it is based, αleanTAP can prove ground theorems in first-order classical logic. Since it is declarative, αleanTAP generates theorems and accepts non-ground theorems and proofs. The lack of mode restrictions also allows the user to provide(More)