  This demo presents the implementation and usage details of GASSERT, the first
tool to automatically improve assertion oracles. Assertion oracles are
executable boolean expressions placed inside the program that should pass
(return true) for all correct executions and fail (return false) for all
incorrect executions. Because designing perfect assertion oracles is difficult,
assertions are prone to both false positives (the assertion fails but should
pass) and false negatives (the assertion passes but should fail). Given a Java
method containing an assertion oracle to improve, GASSERT returns an improved
assertion with fewer false positives and false negatives than the initial
assertion. Internally, GASSERT implements a novel co-evolutionary algorithm
that explores the space of possible assertions guided by two fitness functions
that reward assertions with fewer false positives, fewer false negatives, and
smaller size.
