We present a new technique for automatically synthesizing replacement classes. The technique starts with an original class O and a potential replacement class R, then uses R to synthesize a new class that implements the same interface and provides the same functionality as O. Critically, our technique works with a synthesized inter-class equivalence predicate between the states of O and R. It uses this predicate to ensure that original and synthesized methods leave corresponding O and R objects in equivalent states. The predicate therefore enables the technique to synthesize individual replacement methods in isolation while still obtaining a replacement class that leaves the original and replacement objects in equivalent states after arbitrarily long method invocation sequences. We have implemented the technique and evaluated it using popular Java classes from open-source libraries such as JDK and apache. The results from this implementation highlight the effectiveness of the technique in synthesizing replacement classes.
Wed 22 JanDisplayed time zone: Saskatchewan, Central America change
11:45 - 12:30
|Program Synthesis by Type-Guided Abstraction Refinement|
Zheng Guo University of California, San Diego, Michael B. James University of California, San Diego, David Justo University of California, San Diego, Jiaxiao Zhou University of California, San Diego, Ziteng Wang University of California, San Diego, Ranjit Jhala University of California, San Diego, Nadia Polikarpova University of California, San DiegoLink to publication DOI Media Attached File Attached
|Synthesizing Replacement Classes|
Research PapersLink to publication DOI Media Attached File Attached