Inorder traversal of a binary tree and its inversion
Formal development programs and proofs
The Geneva convention on the treatment of object aliasing
ACM SIGPLAN OOPS Messenger
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Ownership types for object encapsulation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Generating Test Data with Enhanced Context-Free Grammars
IEEE Software
Overcoming Representation Exposure
Proceedings of the Workshop on Object-Oriented Technology
Program Construction, International Summer Schoo
Inorder Traversal of a Binary Heap and its Inversion in Optimal Time and Space
Proceedings of the Second International Conference on Mathematics of Program Construction
COMPSAC '03 Proceedings of the 27th Annual International Conference on Computer Software and Applications
A practical type system and language for reference immutability
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Simplify: a theorem prover for program checking
Journal of the ACM (JACM)
Ownership confinement ensures representation independence for object-oriented programs
Journal of the ACM (JACM)
Fuzzing: Brute Force Vulnerability Discovery
Fuzzing: Brute Force Vulnerability Discovery
Automatic system testing of programs without test oracles
Proceedings of the eighteenth international symposium on Software testing and analysis
Solving quantified verification conditions using satisfiability modulo theories
Annals of Mathematics and Artificial Intelligence
Path-based inductive synthesis for program inversion
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
The definition of a data structure may permit many different concrete representations of the same logical content. A (client) program that accepts such a data structure as input is said to have a representation dependence if its behavior differs for logically equivalent input values. In this paper, we present a methodology and tool for automated testing of clients of a data structure for representation dependence. In the proposed methodology, the developer expresses the logical equivalence by writing a normalization program f that maps each concrete representation to a canonical one. Our solution relies on automatically synthesizing the one-to-many inverse function of f: given an input value x, we can generate multiple test inputs logically equivalent to x by executing the inverse with the canonical value f(x) as input repeatedly. We present an inversion algorithm for restricted classes of normalization programs including programs mapping arrays to arrays in a typical iterative manner. We present a prototype implementation of the algorithm, and demonstrate how our methodology reveals bugs due to representation dependence in open source software such as Open Office and Picasa using the widely used image format TIFF. TIFF is a challenging case study for our approach.