Citations
1515 | The model checker SPIN
- Holzmann
- 1997
(Show Context)
Citation Context ...e only additional differences here. The benefits of static analysis are widely acknowledged, even more so recently as a result of the extensive work in model checking research and industrial practice =-=[10, 14, 36]-=-. Though model checking has its origins in hardware verification, an impressive collection of results spans a spectrum of programming languages and software systems. Given that it is difficult to summ... |
1348 | Chaff: Engineering an Efficient SAT Solver
- Moskewicz, Madigan, et al.
- 2001
(Show Context)
Citation Context ... normal form (CNF). We do not convert them to CNF, but rather apply a SAT-solver that can handle arbitrary propositional formulas [41]; other state-ofthe-art SAT solvers such as BerkMin [28] or Chaff =-=[54]-=- could be used by converting the formulas to CNF. The solver we have used, developed by the co-authors at Tübingen, is based on a Davis-Putnam-style [16] algorithm. It can handle formulas involving se... |
1259 |
A computing procedure for quantification theory
- Davis, Putnam
- 1960
(Show Context)
Citation Context ...-art SAT solvers such as BerkMin [28] or Chaff [54] could be used by converting the formulas to CNF. The solver we have used, developed by the co-authors at Tübingen, is based on a Davis-Putnam-style =-=[16]-=- algorithm. It can handle formulas involving several thousand variables. For example, when the formula in Figure 6 was (translated into the required input format and) supplied to this solver, it produ... |
728 |
Symbolic execution and program testing
- King
- 1976
(Show Context)
Citation Context ...s. Symbolic execution of programs, where concrete inputs used in testing are replaced with symbolic values to generate constraints between inputs and outputs, have been used for debugging and testing =-=[12, 45]-=- and verification [19]. Early work on symbolic execution was limited by its inability to handle complex types, loops, and dynamic data structures. Coen et al. have shown that symbolic execution can be... |
726 | Systematic Software Development using VDM - Jones - 1986 |
658 | Parametric shape analysis via 3-valued logic
- Sagiv, Reps, et al.
- 1999
(Show Context)
Citation Context ...can be expressed as “graph types” [53]. There is also significant work in shape analysis, including recent work on parametric shape analysis that allows more questions to be answered concerning heaps =-=[62]-=-. Ramalingam et al. describe how to check client conformance with component constraints [61] using abstract interpretation. The goals and methods of these related efforts are quite different from ours... |
654 | Bandera: Extracting finite-state models from java source code
- Corbett, Dwyer, et al.
- 2000
(Show Context)
Citation Context ...a Pathfinder at NASA has been used successfully to locate a variety of heap-related errors [31]. To limit the search space, Bandera, a tool for analyzing Java code, employs user-supplied abstractions =-=[15, 58]-=- whereas Smith et al. have described a system that assists in property specification [74]. The fundamental difference between DEET and such uses of model checkers is in the way a finite-state model of... |
459 | Alloy: a lightweight object modelling notation. - Jackson - 2002 |
386 | Model checking Java programs using Java PathFinder.
- Havelund, Pressburger
- 1999
(Show Context)
Citation Context ...[5]). Holzman has employed SPIN to detect numerous bugs in the PathStar processing system developed in C. Java Pathfinder at NASA has been used successfully to locate a variety of heap-related errors =-=[31]-=-. To limit the search space, Bandera, a tool for analyzing Java code, employs user-supplied abstractions [15, 58] whereas Smith et al. have described a system that assists in property specification [7... |
384 |
Object-Oriented Software Construction, 2nd Edition.
- Meyer
- 1997
(Show Context)
Citation Context ...to detect errors in software are widely known [26, 78], assertion checking is especially useful in component-based software development to detect contractual violations among collaborating components =-=[2, 8, 21, 27, 52]-=-. Eiffel is among the earliest systems to popularize runtime assertion checking [52]. iContract, a contract-checking tool for Java programs, has similar objectives [20]. Using an executable industrial... |
332 | ªFormal Verification for Fault-Tolerant Architectures: Prolegomena to the Design of PVS,º
- Owre, Rushby, et al.
- 1995
(Show Context)
Citation Context ...ss of looking for errors, DEET generates the verification condition that would be needed to prove correctness. Proofs of this assertion can be attempted with human-assisted theorem provers (e.g., PVS =-=[60]-=-) when DEET finds no errors. And using the foundations for an extended system for specification and verification of performance (both time and space) [46, 69, 70], in principle DEET might be extended ... |
312 | Model checking and modular verification.
- Grumberg, Long
- 1994
(Show Context)
Citation Context ...lized computer algebra techniques. 4. OTHER RELATED WORK The idea of error detection within a small “scope”—borrowed by DEET from Alloy—differs from most related work in fundamental ways, as noted in =-=[29, 37, 42, 77]-=-, and we summarize only additional differences here. The benefits of static analysis are widely acknowledged, even more so recently as a result of the extensive work in model checking research and ind... |
311 |
A static analyzer for finding dynamic programming errors
- Bush, Pincus, et al.
- 2000
(Show Context)
Citation Context ...d et al. have addressed properties of the heap and dynamic data structures [43]. Unlike these efforts, whose focus is on verification, PREfix is a tool based on symbolic execution for error detection =-=[6]-=-. While the tool has been shown to reveal errors in large-scale C/C++ systems, it cannot handle properties such as invariants and it can produce false alarms. With user-supplied loop invariants (simil... |
284 | BerkMin: a fast and robust SATsolver,
- Goldberg, Novikov
- 2002
(Show Context)
Citation Context ...in conjunctive normal form (CNF). We do not convert them to CNF, but rather apply a SAT-solver that can handle arbitrary propositional formulas [41]; other state-ofthe-art SAT solvers such as BerkMin =-=[28]-=- or Chaff [54] could be used by converting the formulas to CNF. The solver we have used, developed by the co-authors at Tübingen, is based on a Davis-Putnam-style [16] algorithm. It can handle formula... |
262 |
A system to generate test data and symbolically execute programs,"
- CLARKE
- 1975
(Show Context)
Citation Context ...s. Symbolic execution of programs, where concrete inputs used in testing are replaced with symbolic values to generate constraints between inputs and outputs, have been used for debugging and testing =-=[12, 45]-=- and verification [19]. Early work on symbolic execution was limited by its inability to handle complex types, loops, and dynamic data structures. Coen et al. have shown that symbolic execution can be... |
232 | Generalized symbolic execution for model checking and testing.
- Khurshid, Pasareanu, et al.
- 2003
(Show Context)
Citation Context ... using symbolic execution for model checking, the SLAM project [1] has shown how to handle recursive calls in C code. Khurshid et al. have addressed properties of the heap and dynamic data structures =-=[43]-=-. Unlike these efforts, whose focus is on verification, PREfix is a tool based on symbolic execution for error detection [6]. While the tool has been shown to reveal errors in large-scale C/C++ system... |
195 | Bounded model checking using satisfiability solving. - Clarke, Bierea, et al. - 2001 |
170 | A runtime assertion checker for the Java Modeling Language (JML).
- Cheon, Leavens
- 2002
(Show Context)
Citation Context ...to detect errors in software are widely known [26, 78], assertion checking is especially useful in component-based software development to detect contractual violations among collaborating components =-=[2, 8, 21, 27, 52]-=-. Eiffel is among the earliest systems to popularize runtime assertion checking [52]. iContract, a contract-checking tool for Java programs, has similar objectives [20]. Using an executable industrial... |
154 | The Pointer Assertion Logic Engine
- Møller, Schwartzbach
- 2001
(Show Context)
Citation Context ...ogic. While this work focuses on linear linked lists and tree structures, more recently Moller and Schwartzbach have extended the results to all data structures that can be expressed as “graph types” =-=[53]-=-. There is also significant work in shape analysis, including recent work on parametric shape analysis that allows more questions to be answered concerning heaps [62]. Ramalingam et al. describe how t... |
149 | G.T.: A Simple and Practical Approach to Unit Testing: The JML and JUnit Way. In: ecoop.
- Cheon, Leavens
- 2002
(Show Context)
Citation Context ...n language, AsmL, Barnett et al. describe a system for dynamic checking [2]. Cheon and Leavens have used JML for writing assertions and for runtime assertion checking of component-based Java programs =-=[7, 8, 9]-=-. The benefit of contract checking in commercial development of a component-based C++ software system is described in [34]. Use of wrappers to separate contract-checking code from underlying component... |
130 | Verification tools for finite-state concurrent systems,
- Clarke, Grumberg, et al.
- 1994
(Show Context)
Citation Context ...e only additional differences here. The benefits of static analysis are widely acknowledged, even more so recently as a result of the extensive work in model checking research and industrial practice =-=[10, 14, 36]-=-. Though model checking has its origins in hardware verification, an impressive collection of results spans a spectrum of programming languages and software systems. Given that it is difficult to summ... |
123 |
Finding bugs with a constraint solver
- Jackson, Vaziri
- 2000
(Show Context)
Citation Context ... it is complementary in nearly every respect, as explained in this section. Only one technical detail from these systems has been consciously adapted for use in DEET: Jackson’s small scope hypothesis =-=[37]-=-, which is discussed in Section 3.2.3. 2.1 Objectives, Context, and Assumptions ESC and Alloy seek incremental improvements to current software engineering practice, focusing on “real” languages 1 But... |
117 | The Geneva convention on the treatment of object aliasing
- Hogg, Lea, et al.
- 1992
(Show Context)
Citation Context ...on-trivial type parameters, which is an important issue in the design of generic abstractions. It is well known that copying references, while efficient, introduces aliasing and complicates reasoning =-=[33, 49, 79]-=-. The present specification is more flexible. It allows the entry to be moved or swapped into the container structure (efficiently, i.e., in constant time, by manipulating references “under the covers... |
115 | TestEra: a novel framework for automated testing of Java programs. - Marinov, Khurshid - 2001 |
96 | Static and dynamic analysis: Synergy and duality
- Ernst
- 2003
(Show Context)
Citation Context ...t-based software based on design-by-contract, not on verifying heap properties. Ernst provides an overview of the complementary merits of dynamic and static analysis approaches for error detection in =-=[24]-=-. While the benefits of writing assertions and using them to detect errors in software are widely known [26, 78], assertion checking is especially useful in component-based software development to det... |
93 |
Benefits of bounded model checking at an industrial setting
- Copty, Fix, et al.
- 2001
(Show Context)
Citation Context ...e only additional differences here. The benefits of static analysis are widely acknowledged, even more so recently as a result of the extensive work in model checking research and industrial practice =-=[10, 14, 36]-=-. Though model checking has its origins in hardware verification, an impressive collection of results spans a spectrum of programming languages and software systems. Given that it is difficult to summ... |
86 | S.S.: Model-checking LTL with regular valuations for pushdown systems. - Esparza, Kucera, et al. - 2003 |
84 | Model-checking concurrent systems with unbounded integer variables: Symbolic representations, approximations, and experimental results.
- Bultan, Gerber, et al.
- 1999
(Show Context)
Citation Context ...is area, we discuss only a representative sample. Finite-state systems are the focus, though there have been efforts to extend model checking to minimize the impact of this inherent limitation (e.g., =-=[5]-=-). Holzman has employed SPIN to detect numerous bugs in the PathStar processing system developed in C. Java Pathfinder at NASA has been used successfully to locate a variety of heap-related errors [31... |
75 | Model variables: cleanly supporting abstraction in design by contract.
- Cheon, Leavens, et al.
- 2005
(Show Context)
Citation Context ...n language, AsmL, Barnett et al. describe a system for dynamic checking [2]. Cheon and Leavens have used JML for writing assertions and for runtime assertion checking of component-based Java programs =-=[7, 8, 9]-=-. The benefit of contract checking in commercial development of a component-based C++ software system is described in [34]. Use of wrappers to separate contract-checking code from underlying component... |
73 | Static verification of dynamically detected program invariants: Integrating Daikon and ESC/Java. - Nimmer, Ernst - 2001 |
71 |
Copying and swapping: Influences on the design of reusable software components.
- Harms, Weide
- 1991
(Show Context)
Citation Context ...to be moved or swapped into the container structure (efficiently, i.e., in constant time, by manipulating references “under the covers”) and thus potentially to alter it, without introducing aliasing =-=[30]-=-. Correspondingly, the Remove operation is specified to remove an entry from P, and it replaces the parameter R. Operation Advance allows the list insertion position (fence) to be moved ahead. The res... |
70 |
Symbolic model checking without bdds. In Tools and Alg. for the Const. and Analysis of Sys.,
- Biere, Cimatti, et al.
- 1999
(Show Context)
Citation Context ...programmers are unwilling or even unable to write full specifications of intended functional behavior, and that they will write only certain kinds of annotations that capture part of that intent; and =-=(3)-=- an interest in a tool that can be used with any software—component-based or not—that can be written in the “real” language. 2 By contrast, DEET is part of a long-term plan to explore the foundations ... |
62 | Automatic verification of pointer programs using monadic second order logic
- Jensen, Jørgensen, et al.
(Show Context)
Citation Context ... in large-scale C/C++ systems, it cannot handle properties such as invariants and it can produce false alarms. With user-supplied loop invariants (similar to the DEET approach for handling loops), in =-=[39]-=- Jensen et al. have discussed how to prove heap-related properties and find counterexamples. Their program has been shown to be quite effective in practice. Their work differs from traditional pointer... |
62 | Invariant inference for static checking: An empirical evaluation. - Nimmer, Ernst - 2002 |
60 | Wrestling with rep exposure
- Detlefs, Rustan, et al.
- 1996
(Show Context)
Citation Context ...ingredient of our solution to the problem” [18]. Nonetheless, it is admitted that “one problem in this area that has stumped us is a form of rep exposure that we call abstract aliasing”[18]; see also =-=[17]-=-. The potential for aliasing technically does not always prevent modular reasoning, but the above measures help illustrate that it seriously complicates matters [79]. The Alloy approach “targets prope... |
53 | Using symbolic execution for verifying safety-critical systems
- Coen-Porisini, Denaro, et al.
- 2001
(Show Context)
Citation Context ...es. Coen et al. have shown that symbolic execution can be useful for verification of safety-critical properties in an industrial setting, but this requires severe limitations to be placed on the code =-=[13]-=-. More recently, using symbolic execution for model checking, the SLAM project [1] has shown how to handle recursive calls in C code. Khurshid et al. have addressed properties of the heap and dynamic ... |
49 | Finding feasible counter-examples when model checking Java programs
- Pasareanu, Visser
- 2001
(Show Context)
Citation Context ...a Pathfinder at NASA has been used successfully to locate a variety of heap-related errors [31]. To limit the search space, Bandera, a tool for analyzing Java code, employs user-supplied abstractions =-=[15, 58]-=- whereas Smith et al. have described a system that assists in property specification [74]. The fundamental difference between DEET and such uses of model checkers is in the way a finite-state model of... |
48 | Using data groups to specify and check side effects. - Leino, Poetzsch-Heffter, et al. - 2002 |
47 | Contract soundness for object-oriented languages.
- Findler, Felleisen
- 2001
(Show Context)
Citation Context ...to detect errors in software are widely known [26, 78], assertion checking is especially useful in component-based software development to detect contractual violations among collaborating components =-=[2, 8, 21, 27, 52]-=-. Eiffel is among the earliest systems to popularize runtime assertion checking [52]. iContract, a contract-checking tool for Java programs, has similar objectives [20]. Using an executable industrial... |
42 | Adding Contracts to Java with Handshake.
- Duncan, Hoelzle
- 1998
(Show Context)
Citation Context ...rating components [2, 8, 21, 27, 52]. Eiffel is among the earliest systems to popularize runtime assertion checking [52]. iContract, a contract-checking tool for Java programs, has similar objectives =-=[20]-=-. Using an executable industrialstrength specification language, AsmL, Barnett et al. describe a system for dynamic checking [2]. Cheon and Leavens have used JML for writing assertions and for runtime... |
42 |
Component-based software using RESOLVE.
- Sitariman, Weide
- 1994
(Show Context)
Citation Context .... The overall project goal is not to live within the shackles of current practice, but rather to remove them. DEET’s context includes (1) a combined specification and implementation language (Resolve =-=[66]-=-) that is expressly designed to support modular reasoning, while still permitting the development of “real” software by strictly disciplined use of “real” languages such as C++ [34]; (2) a recognition... |
37 | PaSAT - parallel SAT-checking with lemma exchange: Implementation and applications - Sinz, Blochinger, et al. - 2001 |
36 | Deriving specialized program analyses for certifying component-client conformance.
- Ramalingam, Warshavsky, et al.
- 2002
(Show Context)
Citation Context ...cluding recent work on parametric shape analysis that allows more questions to be answered concerning heaps [62]. Ramalingam et al. describe how to check client conformance with component constraints =-=[61]-=- using abstract interpretation. The goals and methods of these related efforts are quite different from ours because our focus is on the total correctness of component-based software based on design-b... |
31 | Behavioral Contracts and Behavioral Subtyping
- Findler, Latendresse, et al.
- 2001
(Show Context)
Citation Context ...f the complementary merits of dynamic and static analysis approaches for error detection in [24]. While the benefits of writing assertions and using them to detect errors in software are widely known =-=[26, 78]-=-, assertion checking is especially useful in component-based software development to detect contractual violations among collaborating components [2, 8, 21, 27, 52]. Eiffel is among the earliest syste... |
30 | An analyzable annotation language
- Khurshid, Marinov, et al.
- 2002
(Show Context)
Citation Context ...e tool will work well for modular analysis of even quite complex classes; how well it scales for analyses amongst classes and whether it will be economical enough for everyday use remains to be seen” =-=[42]-=-. Resolve has value semantics for all variables; there is no aliasing because the language does not permit it [49]. Resolve 2 ESC handles not just sequential programs but a class of synchronization er... |
26 | Parallel propositional satisfiability checking with distributed dynamic learning - BLOCHINGER, SINZ, et al. - 2003 |
24 |
A Framework for Detecting Interface Violation in Component-Based Software
- Edward, Shakir
(Show Context)
Citation Context ...to detect errors in software are widely known [26, 78], assertion checking is especially useful in component-based software development to detect contractual violations among collaborating components =-=[2, 8, 21, 27, 52]-=-. Eiffel is among the earliest systems to popularize runtime assertion checking [52]. iContract, a contract-checking tool for Java programs, has similar objectives [20]. Using an executable industrial... |
23 | Modular Verification of Data Abstractions with Shared Realizations”, - Ernst, Hookway, et al. - 1994 |
22 | Experience report: Using RESOLVE/C++ for commercial software
- HOLLINGSWORTH, BLANKENSHIP, et al.
- 2000
(Show Context)
Citation Context ... language (Resolve [66]) that is expressly designed to support modular reasoning, while still permitting the development of “real” software by strictly disciplined use of “real” languages such as C++ =-=[34]-=-; (2) a recognition, based on teaching experience [71], that tomorrow’s software engineers can be taught to understand and even to write formal-language specifications, just as they can be taught to w... |
22 | Modular specification of frame properties - Müller, Poetzsch-Heffter, et al. - 2003 |
16 |
Computer Program Verification: Improvements for Human Reasoning.
- Heym
- 1995
(Show Context)
Citation Context ...where none exist [37]. DEET is much like Alloy in this regard, with two major exceptions. First, the soundness of verification condition generation has been established for most constructs of Resolve =-=[22, 32, 67, 68]-=-. The overall approach is still that the verification condition needed for full verification is generated from the relevant specifications and code. But then the scopes of all variables are restricted... |
15 |
Using symbolic execution for verification of ada tasking programs
- Dillon
- 1990
(Show Context)
Citation Context ...rograms, where concrete inputs used in testing are replaced with symbolic values to generate constraints between inputs and outputs, have been used for debugging and testing [12, 45] and verification =-=[19]-=-. Early work on symbolic execution was limited by its inability to handle complex types, loops, and dynamic data structures. Coen et al. have shown that symbolic execution can be useful for verificati... |
13 | A case for efficient solution enumeration - Khurshid, Marinov, et al. - 2003 |
10 | Serious specification for composing components
- Barnett, Grieskamp, et al.
- 2003
(Show Context)
Citation Context ...to detect errors in software are widely known [26, 78], assertion checking is especially useful in component-based software development to detect contractual violations among collaborating components =-=[2, 8, 21, 27, 52]-=-. Eiffel is among the earliest systems to popularize runtime assertion checking [52]. iContract, a contract-checking tool for Java programs, has similar objectives [20]. Using an executable industrial... |
10 | A SAT-based propositional prover for consistency checking of automotive product data
- Kaiser
- 2001
(Show Context)
Citation Context ...that the formulas generated during this process are not in conjunctive normal form (CNF). We do not convert them to CNF, but rather apply a SAT-solver that can handle arbitrary propositional formulas =-=[41]-=-; other state-ofthe-art SAT solvers such as BerkMin [28] or Chaff [54] could be used by converting the formulas to CNF. The solver we have used, developed by the co-authors at Tübingen, is based on a ... |
10 | Modular verification of performance constraints
- Krone, Ogden, et al.
- 2003
(Show Context)
Citation Context ...ith human-assisted theorem provers (e.g., PVS [60]) when DEET finds no errors. And using the foundations for an extended system for specification and verification of performance (both time and space) =-=[46, 69, 70]-=-, in principle DEET might be extended to detect errors relative to performance contracts. 3. DEET APPROACH This section explains the DEET approach. As in [37], we choose a simple list example to expla... |
7 | Clean Semantics for Calls with Repeated Arguments - Kulczycki, Sitaraman, et al. - 2005 |
7 | Direct reasoning
- Kulczycki
- 2004
(Show Context)
Citation Context ...classes and whether it will be economical enough for everyday use remains to be seen” [42]. Resolve has value semantics for all variables; there is no aliasing because the language does not permit it =-=[49]-=-. Resolve 2 ESC handles not just sequential programs but a class of synchronization errors in multi-threaded programs. Alloy and DEET so far are limited to sequential programs. includes reference-free... |
5 | Component Technology for Pointers: Why and How
- Kulczycki, Sitaraman, et al.
- 2003
(Show Context)
Citation Context ...However, it remains possible to write programs for situations where explicit aliasing improves efficiency and would be exploited in a language like Java. Using specifications of pointer-like behavior =-=[47]-=-, it is possible to reason about these programs formally and to find errors in them using the DEET approach (although the current prototype does not handle this). Techniques used in ESC and/or Alloy t... |
4 | search space structure, and local search performance - Sat-encodings - 1999 |
4 | Detection of dynamic execution errors in {IBM} system automation’s rule-based expert system. - Sinz, Lumpp, et al. - 2002 |
3 | Verifikation regelbasierter Konfigurationssysteme. Fak. fuer Informationsund Kognitionswissenschaften, - Sinz - 2003 |
2 |
Contract-Checking Wrappers for C++ Components
- Edwards, Sitaraman, et al.
- 2004
(Show Context)
Citation Context ...where none exist [37]. DEET is much like Alloy in this regard, with two major exceptions. First, the soundness of verification condition generation has been established for most constructs of Resolve =-=[22, 32, 67, 68]-=-. The overall approach is still that the verification condition needed for full verification is generated from the relevant specifications and code. But then the scopes of all variables are restricted... |
1 | Local search on SAT-encoded coloring problems - Prestwich - 2003 |