Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

Ownership confinement ensures representation independence for object-oriented programs

Published: 01 November 2005 Publication History
  • Get Citation Alerts
  • Abstract

    Representation independence formally characterizes the encapsulation provided by language constructs for data abstraction and justifies reasoning by simulation. Representation independence has been shown for a variety of languages and constructs but not for shared references to mutable state; indeed it fails in general for such languages. This article formulates representation independence for classes, in an imperative, object-oriented language with pointers, subclassing and dynamic dispatch, class oriented visibility control, recursive types and methods, and a simple form of module. An instance of a class is considered to implement an abstraction using private fields and so-called representation objects. Encapsulation of representation objects is expressed by a restriction, called confinement, on aliasing. Representation independence is proved for programs satisfying the confinement condition. A static analysis is given for confinement that accepts common designs such as the observer and factory patterns. The formalization takes into account not only the usual interface between a client and a class that provides an abstraction but also the interface (often called “protected”) between the class and its subclasses.

    References

    [1]
    Abadi, M., Banerjee, A., Heintze, N., and Riecke, J. G. 1999. A core calculus of dependency. In Proceedings of the ACM Symposium on Principles of Programming Languages (POPL). ACM, New York, 147--160.]]
    [2]
    Abadi, M., and Cardelli, L. 1996. A Theory of Objects. Springer-Verlag, New York.]]
    [3]
    Abadi, M., and Leino, K. R. M. 1997. A logic of object-oriented programs. In Theory and Practice of Software Development (TAPSOFT). Springer-Verlag, New York. (Expanded in DEC SRC report 161.)]]
    [4]
    Aldrich, J., and Chambers, C. 2004. Ownership domains: Separating aliasing policy from mechanism. In Proceedings of the European Conference on Object Oriented Programming (ECOOP). Lecture Notes in Computer Science. Springer-Verlag, New York, 1--25.]]
    [5]
    Aldrich, J., Kostadinov, V., and Chambers, C. 2002. Alias annotations for program understanding. In Proceedings of the ACM Symposium on Object Oriented Programming: Systems, Languages, and Applications (OOPSLA). ACM, New York.]]
    [6]
    Almeida, P. S. 1997. Balloon types: Controlling sharing of state in data types. In Proceedings of the European Conference on Object Oriented Programming (ECOOP). Lecture Notes in Computer Science. Springer-Verlag, New York, 32--59.]]
    [7]
    Arnold, K., and Gosling, J. 1998. The Java Programming Language, 2nd ed. Addison-Wesley, Reading, MA.]]
    [8]
    Banerjee, A., Heintze, N., and Riecke, J. G. 2001. Design and correctness of program transformations based on control-flow analysis. In Proceedings of the International Symposium on Theoretical Aspects of Computer Software (TACS). Lecture Notes in Computer Science. Springer-Verlag, New York, 420--447.]]
    [9]
    Banerjee, A., and Naumann, D. A. 2002. Representation independence, confinement and access control. In Proceedings of the ACM Symposium on Principles of Programming Languages (POPL). ACM, New York, 166--177.]]
    [10]
    Banerjee, A., and Naumann, D. A. 2004a. Ownership confinement ensures representation independence for object-oriented programs. Tech. Rep. CS-2004-14, Stevens Institute of Technology. (Also available as technical report KSU CIS-TR-2004-6, Kansas State University.)]]
    [11]
    Banerjee, A., and Naumann, D. A. 2004b. State based encapsulation and generics. Tech. Rep. CS-2004-11, Stevens Institute of Technology.]]
    [12]
    Banerjee, A., and Naumann, D. A. 2005. State based ownership, reentrance, and encapsulation. In Proceedings of the 19th European Conference on Object Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 3586. Springer-Verlag, New York, pp. 387--411.]]
    [13]
    Bhowmik, A., and Pugh, W. 1999. A secure implementation of Java inner classes. PLDI poster session, http://www.cs.umd.edu/~pugh/java/SecureInnerClassesHandout.pdf.]]
    [14]
    Boyland, J. 2001. Alias burying: Unique variables without destructive reads. Softw. Prac. Exp. 31, 6, 533--553.]]
    [15]
    Bruce, K. B. 2002. Foundations of Object-Oriented Programming Languages: Types and Semantics. MIT Press, Cambridge, MA.]]
    [16]
    Bruce, K. B., Cardelli, L., and Pierce, B. C. 1999. Comparing object encodings. Inf. Comput. 155, 1/2, 108--133.]]
    [17]
    Cavalcanti, A. L. C., and Naumann, D. A. 1999. A weakest precondition semantics for an object-oriented language of refinement. In FM'99---Formal Methods, Volume II. Lecture Notes in Computer Science, vol. 1709. Springer-Verlag, New York, 1439--1459.]]
    [18]
    Cavalcanti, A. L. C., and Naumann, D. A. 2002. Forward simulation for data refinement of classes. In Formal Methods Europe. Lecture Notes in Computer Science, vol. 2391. Springer-Verlag, New York, 471--490.]]
    [19]
    Clarke, D. 2001. Object ownership and containment. Ph.D. dissertation. University of New South Wales, Australia.]]
    [20]
    Clarke, D., and Drossopoulou, S. 2002. Ownership, encapsulation and the disjointness of type and effect. In Proceedings of the ACM Symposium on Object Oriented Programming: Systems, Languages, and Applications (OOPSLA). ACM, New York.]]
    [21]
    Clarke, D. G., Noble, J., and Potter, J. M. 2001. Simple ownership types for object containment. In Proceedings of the European Conference on Object Oriented Programming (ECOOP). Lecture Notes in Computer Science. Springer-Verlag, New York.]]
    [22]
    Cormen, T. H., Leiserson, C. E., and Rivest, R. L. 1990. Introduction to Algorithms. MIT Press, Cambridge, MA.]]
    [23]
    Cousot, P., and Cousot, R. 1977. Automatic synthesis of optimal invariant assertions: Mathematical foundations. In Proceedings of the ACM Symposium on Artificial Intelligence and Programming Languages, SIGPLAN Notices, 12. ACM, New York, 1--12.]]
    [24]
    Dahl, O.-J., and Nygaard, K. 1966. Simula: An Algol-based simulation language. Commun. ACM 9, 9, 671--678.]]
    [25]
    Davey, B., and Priestley, H. 1990. Introduction to Lattices and Order. Cambridge University Press.]]
    [26]
    de Roever, W.-P., and Engelhardt, K. 1998. Data Refinement: Model-Oriented Proof Methods and Their Comparison. Cambridge University Press, Cambridge, MA.]]
    [27]
    Detlefs, D. L., Leino, K. R. M., and Nelson, G. 1998. Wrestling with rep exposure. Res. Rep. 156, DEC Systems Research Center.]]
    [28]
    Dhara, K. K., and Leavens, G. T. 1996. Forcing behavioral subtyping through specification inheritance. In Proceedings of the 18th International Conference on Software Engineering. IEEE Computer Society Press, Los Alamitos, CA, 258--267.]]
    [29]
    Donahue, J. E. 1979. On the semantics of “data type”. SIAM J. Comput. 8, 4, 546--560.]]
    [30]
    Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, MA.]]
    [31]
    German, S. M., Clarke, E. M., and Halpern, J. Y. 1989. Reasoning about procedures as parameters in the language L4. Inf. Comput. 83, 265--359.]]
    [32]
    Gong, L. 1999. Inside Java 2 Platform Security. Addison-Wesley, Reading, MA.]]
    [33]
    Gordon, A. D., and Pitts, A. M., Eds. 1998. Higher Order Operational Techniques in Semantics. Cambridge University Press.]]
    [34]
    Grossman, D., Morrisett, G., and Zdancewic, S. 2000. Syntactic type abstraction. ACM Trans. Program. Lang. Syst. 22, 6, 1037--1080.]]
    [35]
    Grothoff, C., Palsberg, J., and Vitek, J. 2001. Encapsulating objects with confined types. In Proceedings of the ACM Symposium on Object Oriented Programming: Systems, Languages, and Applications (OOPSLA). ACM, New York.]]
    [36]
    Haynes, C. T. 1984. A theory of data type representation independence. In Proceedings of the International Symposium on Semantics of Data Types, G. Kahn, D. B. MacQueen, and G. Plotkin, Eds. Lecture Notes in Computer Science, vol. 173. Springer-Verlag, New York, 157--175.]]
    [37]
    He, J., Hoare, C. A. R., and Sanders, J. 1986. Data refinement refined (resumé). In European Symposium on Programming. Lecture Notes in Computer Science, vol. 213. Springer-Verlag, New York.]]
    [38]
    Hoare, C. A. R. 1972. Proofs of correctness of data representations. Acta Inf. 1, 271--281.]]
    [39]
    Hogg, J. 1991. Islands: Aliasing protection in object-oriented languages. In Proceedings of the ACM Symposium on Object Oriented Programming: Systems, Languages, and Applications (OOPSLA). ACM, New York.]]
    [40]
    Hogg, J., Lea, D., Wills, A., deChampeaux, D., and Holt, R. 1992. The Geneva Convention on the treatment of object aliasing. OOPS Messenger 3, 2, 11--16.]]
    [41]
    Huisman, M. 2002. Verification of Java's AbstractCollection class: A case study. In Mathematics of Program Construction. Lecture Notes in Computer Science, vol. 2386. Springer-Verlag, New York, 175--194.]]
    [42]
    Huisman, M., and Jacobs, B. 2000. Java program verification via a Hoare logic with abrupt termination. In Fundamental Approaches to Software Engineering (FASE). Lecture Notes in Computer Science. Springer-Verlag, New York, 284--303.]]
    [43]
    Igarashi, A., Pierce, B., and Wadler, P. 2001. Featherweight Java: A minimal core calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23, 3 (May), 396--459.]]
    [44]
    Jones, C. B. 1986. Systematic software development using VDM. International Series in Computer Science. Prentice-Hall, New York.]]
    [45]
    Kennedy, A., and Syme, D. 2001. Design and implementation of generics for the .NET Common Language Runtime. In PLDI. 1--12.]]
    [46]
    Lea, D. 2000. Concurrent Programming in Java, Second ed. Addison-Wesley, Reading, MA.]]
    [47]
    Leavens, G. T., and Dhara, K. K. 2000. Concepts of behavioral subtyping and a sketch of their extension to component-based systems. In Foundations of Component-Based Systems, G. T. Leavens and M. Sitaraman, Eds. Cambridge University Press, Chap. 6, 113--135.]]
    [48]
    Leino, K. R. M., and Nelson, G. 2002. Data abstraction and information hiding. ACM Trans. Program. Lang. Syst. 24, 5, 491--553.]]
    [49]
    Levy, P. 2002. Possible world semantics for general storage in call-by-value. In Computer Science Logic. Number 2471 in Lecture Notes in Computer Science. Springer-Verlag, New York.]]
    [50]
    Liskov, B., and Guttag, J. 1986. Abstraction and Specification in Program Development. MIT Press, Cambridge, MA.]]
    [51]
    Liskov, B. H., and Wing, J. M. 1994. A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16, 6, 1811--1841.]]
    [52]
    Lynch, N., and Vaandrager, F. 1995. Forward and backward simulations part I: Untimed systems. Inf. Comput. 121, 2, 214--233.]]
    [53]
    Meyer, A. R., and Sieber, K. 1988. Towards fully abstract semantics for local variables: Preliminary report. In ACM Symposium on Principles of Programming Languages (POPL). ACM, New York, 191--203.]]
    [54]
    Milner, R. 1971. An algebraic definition of simulation between programs. In Proceedings of the 2nd International Joint Conference on Artificial Intelligence. 481--489.]]
    [55]
    Minsky, N. H. 1996. Towards alias-free pointers. In European Conference on Object Oriented Programming (ECOOP). Lecture Notes in Computer Science, vol. 1098. Springer-Verlag, New York, 189--209.]]
    [56]
    Mitchell, J. C. 1986. Representation independence and data abstraction. In Proceedings of the ACM Symposium on Principles of Programming Languages (POPL). ACM Press, 263--276.]]
    [57]
    Mitchell, J. C. 1991. On the equivalence of data representations. In Artificial Intelligence and Mathematical Theory of Computation: Papers in Honor of John McCarthy, V. Lifschitz, Ed. 305--330.]]
    [58]
    Mitchell, J. C. 1996. Foundations for Programming Languages. MIT Press, Cambridge, MA.]]
    [59]
    Müller, P. 2002. Modular Specification and Verification of Object-Oriented programs. Lecture Notes in Computer Science, vol. 2262. Springer-Verlag, New York.]]
    [60]
    Müller, P., and Poetzsch-Heffter, A. 2000a. Modular specification and verification techniques for object-oriented software components. In Foundations of Component-Based Systems, G. T. Leavens and M. Sitaraman, Eds. Cambridge University Press, Cambridge, MA.]]
    [61]
    Müller, P., and Poetzsch--Heffter, A. 2000b. A type system for controlling representation exposure in Java. In ECOOP Workshop on Formal Techniques for Java Programs. Technical Report 269, Fernuniversit&atuml; Hagen.]]
    [62]
    Naumann, D. A. 2001. Predicate transformer semantics of a higher order imperative language with record subtyping. Sci. Comput. Program. 41, 1, 1--51.]]
    [63]
    Naumann, D. A. 2002. Soundness of data refinement for a higher order imperative language. Theor. Comput. Sci. 278, 1--2, 271--301.]]
    [64]
    Naumann, D. A. 2005. Verifying a secure information flow analyzer. In Proceedings of 18th International Conference on Theorem Proving in Higher Order Logics (TPHOLS). Lecture Notes in Computer Science, vol. 3603. Springer-Verlag, New York, pp. 211--226.]]
    [65]
    O'Hearn, P. W., and Tennent, R. D. 1995. Parametricity and local variables. J. ACM 42, 3, 658--709.]]
    [66]
    Olderog, E.-R. 1983. Hoare's logic for programs with procedures---what has been achieved? In Proceedings, Logics of Programs, E. Clarke and D. Kozen, Eds. Lecture Notes in Computer Science, vol. 164. Springer-Verlag, New York.]]
    [67]
    Pierce, B. C. 2002. Types and Programming Languages. MIT Press, Cambridge, MA.]]
    [68]
    Pitts, A. M. 1997. Reasoning about local variables with operationally-based logical relations. In Algol-Like Languages, P. W. O'Hearn and R. D. Tennent, Eds. Vol. 2. Birkhauser, Chapter 17, 173--193. Reprinted from Proceedings Eleventh Annual IEEE Symposium on Logic in Computer Science, Brunswick, NJ, July 1996, pp 152--163.]]
    [69]
    Pitts, A. M. 2000. Parametric polymorphism and operational equivalence. Math. Struct. Comput. Sci. 10, 321--359.]]
    [70]
    Pitts, A. M. 2005. Typed operational reasoning. In Advanced Topics in Types and Programming Languages, B. C. Pierce, Ed. The MIT Press, Chapter 7, 245--289.]]
    [71]
    Plotkin, G. 1973. Lambda definability and logical relations. Tech. Rep. SAI-RM-4, University of Edinburgh, School of Artificial Intelligence.]]
    [72]
    Poetzsch-Heffter, A., and Müller, P. 1999. A programming logic for sequential Java. In Programming Languages and Systems (ESOP), S. D. Swierstra, Ed. Lecture Notes in Computer Science, vol. 1576. Springer-Verlag, New York, 162--176.]]
    [73]
    Power, A. J., and Robinson, E. P. 2000. Logical relations and data abstraction. In Proceedings of Computer Science Logic (CSL), P. Clote and H. Schwichtenberg, Eds. Lecture Notes in Computer Science. Springer-Verlag, New York, 497--511.]]
    [74]
    Reddy, U. S. 2002. Objects and classes in Algol-like languages. Inf. Comput. 172, 1 (Jan.). 63--97.]]
    [75]
    Reddy, U. S., and Yang, H. 2004. Correctness of data representations involving heap data structures. Sci. Comput. Program. 50, 1--3, 129--160.]]
    [76]
    Reus, B. 2003. Modular semantics and logics of classes. In Proceedings of the 17th International Workshop on Computer Science Logic (CSL). Lecture Notes in Computer Science, vol. 2803. Springer-Verlag, New York, 456--469.]]
    [77]
    Reus, B., and Streicher, T. 2002. Semantics and logics of objects. In Proceedings of the IEEE Symposium on Logic in Computer Science (LICS). IEEE Computer Society Press, Los Alamitos, CA, 113--124.]]
    [78]
    Reynolds, J. C. 1972. Definitional interpreters for higher-order programming languages. In Proceedings of 25th ACM National Conference. ACM, New York, 717--740.]]
    [79]
    Reynolds, J. C. 1974. Towards a theory of type structure. In Colloques sur la Programmation. Lecture Notes in Computer Science, vol. 19. Springer-Verlag, New York, 408--425.]]
    [80]
    Reynolds, J. C. 1978. User-defined types and procedural data structures as complementary approaches to data abstraction. In Programming Methodology, D. Gries, Ed. Springer-Verlag, New York, 309--317.]]
    [81]
    Reynolds, J. C. 1981a. The Craft of Programming. Prentice-Hall, Englewood Cliffs, NJ.]]
    [82]
    Reynolds, J. C. 1981b. The essence of Algol. In Algorithmic Languages, J. W. de Bakker and J. C. van Vliet, Eds. North-Holland, Amsterdam, The Netherlands.]]
    [83]
    Reynolds, J. C. 1984. Types, abstraction, and parametric polymorphism. In Information Processing '83, R. Mason, Ed. North-Holland, Amsterdam, The Netherlands, 513--523.]]
    [84]
    Reynolds, J. C. 2001. Intuitionistic reasoning about shared mutable data structure. In Millenial Perspectives in Computer Science. Palgrave.]]
    [85]
    Reynolds, J. C. 2002. Separation logic: A logic for shared mutable data structures. In IEEE Symposium on Logic in Computer Science (LICS). IEEE Computer Society Press, Los Alamitos, CA.]]
    [86]
    Riecke, J. G. 1993. Fully abstract translations between functional languages. Math. Struct. Comput. Sci. 3, 4, 387--415.]]
    [87]
    Stata, R. 1997. Modularity in the presence of subclassing. Research Report 145, DEC SRC, 130 Lytton Avenue Palo Alto, CA 94301.]]
    [88]
    Strachey, C. 2000. Fundamental concepts in programming languages. Higher Order and Symbolic Computation 13, 1, 11--49. (Originally appeared in 1967 Lecture notes, International Summer School in Computer Programming, Copenhagen.)]]
    [89]
    Sumii, E., and Pierce, B. C. 2005. A bisimulation for type abstraction and recursion. In Proceedings of the ACM Symposium on Principles of Programming Languages (POPL). ACM, New York, 63--74.]]
    [90]
    Vitek, J., and Bokowski, B. 2001. Confined types in Java. Softw. Pract. Exp. 31, 6, 507--532.]]
    [91]
    Volpano, D., Smith, G., and Irvine, C. 1996. A sound type system for secure flow analysis. J. Comput. Sec. 4, 3, 167--187.]]
    [92]
    Wallach, D., Appel, A., and Felten, E. 2000. SAFKASI: A security mechanism for language-based systems. ACM Trans. Softw. Eng. Meth. 9, 4 (Oct.), 341--378.]]
    [93]
    Winskel, G. 1993. The Formal Semantics of Programming Languages. MIT Press, Cambridge, MA.]]

    Cited By

    View all
    • (2023)Ownership-Based Owicki-Gries ReasoningProceedings of the 38th ACM/SIGAPP Symposium on Applied Computing10.1145/3555776.3577636(1685-1694)Online publication date: 27-Mar-2023
    • (2023)A Relational Program Logic with Data Abstraction and Dynamic FramingACM Transactions on Programming Languages and Systems10.1145/355149744:4(1-136)Online publication date: 10-Jan-2023
    • (2022)Necessity specifications for robustnessProceedings of the ACM on Programming Languages10.1145/35633176:OOPSLA2(811-840)Online publication date: 31-Oct-2022
    • Show More Cited By

    Recommendations

    Reviews

    Simon John Thompson

    Understanding and reasoning about the behavior of programs written in object-oriented (OO) languages, such as Java, C#, and C++, remains difficult for a variety of reasons. Setting aside the problems there are in forming clear models of concurrent behavior, the major challenge is in understanding mutable, heap-based structures that will in general be referenced by multiple pointers. Abstraction is the key to mastering this: rather than giving direct access to the representation of a particular structure (by means of variables containing pointers to the heap), the structure will be referenced through selector and mutator methods. With such a discipline, however, comes the risk that it will provide a sanitized environment that is insufficient for embodying common patterns of use. It is therefore crucial that any system is shown to be permissive enough to allow at least a proportion of realistic programs and systems to be modeled. A particularly fertile characterization of abstraction is representation independence, which formalizes the notion that, relative to a given interface, two different representations of a structure have no discernible differences. While this semantic notion formalizes what is required in semantic terms, if a particular program is to be understood, then the usual route is syntactic. It is therefore desirable to define approximations to representation independence that can be decided algorithmically using abstract interpretation (or something similar). The major contribution of this paper is that it defines ownership confinement as a tractable mechanism for deciding representation independence, analyzes its properties, and shows that a number of common OO idioms, such as the observer and visitor patterns, come under its scope. The paper is a model of clarity, with clear introductions to the various topics, and a thorough bibliography and discussion of related work. The authors conclude with a discussion of the next steps for their program: in particular, ownership can be shared (between a standard owner and an iterator, for example) or transferred (from one owner to another). Online Computing Reviews Service

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    Comments

    Information & Contributors

    Information

    Published In

    cover image Journal of the ACM
    Journal of the ACM  Volume 52, Issue 6
    November 2005
    189 pages
    ISSN:0004-5411
    EISSN:1557-735X
    DOI:10.1145/1101821
    Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 November 2005
    Published in JACM Volume 52, Issue 6

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Alias control
    2. confinement
    3. data refinement
    4. relational parametricity
    5. simulation

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)8
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 10 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Ownership-Based Owicki-Gries ReasoningProceedings of the 38th ACM/SIGAPP Symposium on Applied Computing10.1145/3555776.3577636(1685-1694)Online publication date: 27-Mar-2023
    • (2023)A Relational Program Logic with Data Abstraction and Dynamic FramingACM Transactions on Programming Languages and Systems10.1145/355149744:4(1-136)Online publication date: 10-Jan-2023
    • (2022)Necessity specifications for robustnessProceedings of the ACM on Programming Languages10.1145/35633176:OOPSLA2(811-840)Online publication date: 31-Oct-2022
    • (2020)Type-Based Declassification for FreeFormal Methods and Software Engineering10.1007/978-3-030-63406-3_11(181-197)Online publication date: 1-Mar-2020
    • (2020)Thirty-Seven Years of Relational Hoare Logic: Remarks on Its Principles and HistoryLeveraging Applications of Formal Methods, Verification and Validation: Engineering Principles10.1007/978-3-030-61470-6_7(93-116)Online publication date: 20-Oct-2020
    • (2020)Holistic Specifications for Robust ProgramsFundamental Approaches to Software Engineering10.1007/978-3-030-45234-6_21(420-440)Online publication date: 17-Apr-2020
    • (2019)SyTeCi: automating contextual equivalence for higher-order programs with referencesProceedings of the ACM on Programming Languages10.1145/33711274:POPL(1-28)Online publication date: 20-Dec-2019
    • (2018)A Logical Analysis of Framing for Specifications with Pure Method CallsACM Transactions on Programming Languages and Systems10.1145/317480140:2(1-90)Online publication date: 28-May-2018
    • (2018)Automating regression verification of pointer programs by predicate abstractionFormal Methods in System Design10.1007/s10703-017-0293-852:3(229-259)Online publication date: 1-Jun-2018
    • (2017)Correctness of speculative optimizations with dynamic deoptimizationProceedings of the ACM on Programming Languages10.1145/31581372:POPL(1-28)Online publication date: 27-Dec-2017
    • Show More Cited By

    View Options

    Get Access

    Login options

    Full Access

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media