9 research outputs found

    Specification and verification challenges for sequential object-oriented programs

    Get PDF
    The state of knowledge in how to specify sequential programs in object-oriented languages such as Java and C# and the state of the art in automated verification tools for such programs have made measurable progress in the last several years. This paper describes several remaining challenges and approaches to their solutio

    Specification and verification challenges for sequential object-oriented programs

    Get PDF
    The state of knowledge in how to specify sequential programs in object-oriented languages such as Java and C# and the state of the art in automated verification tools for such programs have made measurable progress in the last several years. This paper describes several remaining challenges and approaches to their solution

    Program Logic and Equivalence in the Presence Of Garbage Collection

    Get PDF
    It is generally thought that reasoning about programs in memory safe, garbage collected languages is much easier than in languages where the programmer has more explicit control over memory. Paradoxically

    Program Logic and Equivalence in the Presence of Garbage Collection?

    No full text
    Abstract. It is generally thought that reasoning about programs in memory safe, garbage collected languages is much easier than in languages where the programmer has more explicit control over memory. Paradoxically, existing program logics are based on a low level view of storage that is sensitive to the presence or absence of unreachable cells, and Reynolds has pointed out that the Hoare triples derivable in these logics are even incompatible with garbage collection. We present a study of a small language whose operational semantics includes a rule for reclaiming garbage. Our main results include an analysis of propositions that are garbage insensitive, and full abstraction results connecting partial and total correctness to two natural notions of observational equivalence between programs. 1 Introduction Garbage collection is an essential method used to reclaim heap-allocated objects whose lifetime cannot be easily predicted at compile time. It is most strongly associated with high-level languages such as Lisp, ML and Java, where heap allocation is the norm. It can also be used in a lower level language like C, coexisting with explicit deallocation primitives [10]. In any case, garbage collection relieves the programmer of the burden of explicitly managing dynamically allocated memory. This generally leads to simpler programs, and removes or lessens errors that result from incorrect attempts to access disposed memory, errors that are often difficult to diagnose or even reproduce
    corecore