A representation invariant is a property that holds of all values of abstracttype produced by a module . Representation invariants play important roles in software engineering and program verification . We develop a type-directed notion of visible inductiveness that ensures that the algorithm makes progress toward its goal as it alternates between weakening and strengthening candidate invariants . We implement these ideas in a tool called Hanoi, which synthesizes representation invariants for recursion data types . Because it uses testing for verification, it is not sound, but our empirical evaluation shows that it is sound, though our empirical evaluations show that it isn’t sound, as it doesn’t perform well on benchmarks we investigated . HanoI handles invariants in first-order code, but also higher-order codes as well as recursion types. It uses an enumerative synthesizer called Myth and an enumerated

Author(s) : Anders Miltner, Saswat Padhi, Todd Millstein, David Walker

Links : PDF - Abstract

Code :
Coursera

Keywords : invariants - representation - sound - verification - called -

Leave a Reply

Your email address will not be published. Required fields are marked *