Skip to content

Runtime Assertion Checking for Old Expressions #101

@DavePearce

Description

@DavePearce

(see also Whiley/WhileyCompiler#1096)

There are a number of questions around old(e) expressions and how they can be checked at runtime efficiently. At the moment, the Whiley interpreter clones the entire program state --- which is pretty inefficient. For example, in the JML Runtime Assertion Checker, they evaluate old(e) expressions on entry to a method and stash them for checking the postcondition. But, this is very problematic for a few reasons: firstly, how do we manage recursive properties involving old()? secondly, how do we handle quantified expressions, etc?

References

  1. Past Expression: Encapsulating Pre-States at Post-Conditions by Means of AOP Proposes \past(e) to replace \old(e) in JML to address the issue that (in Java) \old(p) for some class variable p only returns its reference, and there is no way to do e.g. \old(*p) as we can in Whiley. Yes, we can do e.g. \old(p.f) for each field, but this breaks encapsulation. To address performance of runtime checking, they employ a difference heap.
  2. How the design of JML accommodates both runtime assertion checking and formal verification
  3. A Runtime Assertion Checker for the Java Modeling Language (JML). "The runtime assertion checker handles old expressions by evaluating them in the pre-state inside the precondition check method and caching the results in private fields"
  4. Prototyping a tool environment for run-time assertion checking in JML with communication histories
  5. Temporaljmlc: A JML Runtime Assertion Checker Extension for Specification and Checking of Temporal Properties
  6. An Optimized Memory Monitoring for Runtime Assertion Checking of C Programs
  7. Combining Monitoring with Run-Time Assertion Checking
  8. OpenJML: JML for Java 7 by Extending OpenJDK
  9. Run-time assertion checking of JML annotations in multithreaded applications with e-OpenJML
  10. A Lesson on Runtime Assertion Checking with Frama-C
  11. Runtime Assertion Checking and Static Verification: Collaborative Partners
  12. Efficient Runtime Assertion Checking of Assignable Clauses with Datagroups
  13. Client-aware checking and information hiding in interface specifications with JML/ajmlc
  14. Verified Runtime Assertion Checking for Memory Properties
  15. The e-ACSL perspective on runtime assertion checking

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions