Behavioral Subtyping, Specification Inheritance, and Modular Reasoning

  title={Behavioral Subtyping, Specification Inheritance, and Modular Reasoning},
  author={Gary T. Leavens and D. Naumann},
  journal={ACM Trans. Program. Lang. Syst.},
  • Gary T. Leavens, D. Naumann
  • Published 2015
  • Computer Science
  • ACM Trans. Program. Lang. Syst.
  • Verification of a dynamically dispatched method call, E.m(), seems to depend on E’s dynamic type. To avoid case analysis and allow incremental development, object-oriented program verification uses supertype abstraction. In other words, one reasons about E.m() using m’s specification for E’s static type. Supertype abstraction is valid when each subtype in the program is a behavioral subtype. This article semantically formalizes supertype abstraction and behavioral subtyping for a Java-like… CONTINUE READING
    27 Citations

    Figures and Topics from this paper

    A modular reasoning system using uninterpreted predicates for code reuse
    • 5
    • PDF
    A Methodology for Invariants, Framing, and Subtyping in JML
    Modular Reasoning in Aspect-Oriented Languages from a Substitution Perspective
    • 6
    • PDF
    Towards Modular Reasoning for Context-Oriented Programs
    • 4
    Specifying subtypes in Safety Critical Java programs
    • 3
    • PDF
    Modular reasoning in the presence of event subtyping
    • 7
    • Highly Influenced


    On Behavioral Subtyping and Completeness
    • 11
    • Highly Influential
    • PDF
    Inheritance and Subtyping in a Parallel Object-Oriented Language
    • 201
    • Highly Influential
    Verifying object-oriented programs that use subtypes
    • 66
    • Highly Influential
    • PDF
    Local reasoning for Java
    • 162
    • Highly Influential
    • PDF
    Validation techniques for object-oriented proof outlines
    • 52
    • Highly Influential
    • PDF
    Designing an Object-Oriented Programming Language with Behavioural Subtyping
    • 262
    • Highly Influential
    A behavioral notion of subtyping
    • 1,282
    • Highly Influential
    • PDF
    Extended static checking for Java
    • 908
    • Highly Influential
    An algebraic model of sybtypes in object-oriented languages (draft)
    • 14
    • Highly Influential
    Behavioral contracts and behavioral subtyping
    • 87
    • Highly Influential
    • PDF