{"date_created":"2018-12-11T12:08:39Z","publist_id":"1059","volume":4590,"intvolume":" 4590","year":"2007","publisher":"Springer","status":"public","acknowledgement":"This research was supported in part by the grant SFU/PRG 06-3, and by the Swiss National Science Foundation.","quality_controlled":0,"title":"Algorithms for interface synthesis","alternative_title":["LNCS"],"author":[{"last_name":"Beyer","first_name":"Dirk","full_name":"Beyer, Dirk"},{"id":"40876CD8-F248-11E8-B48F-1D18A9856A87","full_name":"Thomas Henzinger","last_name":"Henzinger","first_name":"Thomas A","orcid":"0000−0002−2985−7724"},{"id":"4DAE2708-F248-11E8-B48F-1D18A9856A87","full_name":"Vasu Singh","last_name":"Singh","first_name":"Vasu"}],"day":"02","page":"4 - 19","doi":"10.1007/978-3-540-73368-3_4","type":"conference","date_updated":"2021-01-12T07:56:41Z","month":"07","date_published":"2007-07-02T00:00:00Z","extern":1,"conference":{"name":"CAV: Computer Aided Verification"},"citation":{"ieee":"D. Beyer, T. A. Henzinger, and V. Singh, “Algorithms for interface synthesis,” presented at the CAV: Computer Aided Verification, 2007, vol. 4590, pp. 4–19.","mla":"Beyer, Dirk, et al. Algorithms for Interface Synthesis. Vol. 4590, Springer, 2007, pp. 4–19, doi:10.1007/978-3-540-73368-3_4.","short":"D. Beyer, T.A. Henzinger, V. Singh, in:, Springer, 2007, pp. 4–19.","ama":"Beyer D, Henzinger TA, Singh V. Algorithms for interface synthesis. In: Vol 4590. Springer; 2007:4-19. doi:10.1007/978-3-540-73368-3_4","apa":"Beyer, D., Henzinger, T. A., & Singh, V. (2007). Algorithms for interface synthesis (Vol. 4590, pp. 4–19). Presented at the CAV: Computer Aided Verification, Springer. https://doi.org/10.1007/978-3-540-73368-3_4","ista":"Beyer D, Henzinger TA, Singh V. 2007. Algorithms for interface synthesis. CAV: Computer Aided Verification, LNCS, vol. 4590, 4–19.","chicago":"Beyer, Dirk, Thomas A Henzinger, and Vasu Singh. “Algorithms for Interface Synthesis,” 4590:4–19. Springer, 2007. https://doi.org/10.1007/978-3-540-73368-3_4."},"publication_status":"published","abstract":[{"lang":"eng","text":"A temporal interface for a software component is a finite automaton that specifies the legal sequences of calls to functions that are provided by the component. We compare and evaluate three different algorithms for automatically extracting temporal interfaces from program code: (1) a game algorithm that computes the interface as a representation of the most general environment strategy to avoid a safety violation; (2) a learning algorithm that repeatedly queries the program to construct the minimal interface automaton; and (3) a CEGAR algorithm that iteratively refines an abstract interface hypothesis by adding relevant program variables. For comparison purposes, we present and implement the three algorithms in a unifying formal setting. While the three algorithms compute the same output and have similar worst-case complexities, their actual running times may differ considerably for a given input program. On the theoretical side, we provide for each of the three algorithms a family of input programs on which that algorithm outperforms the two alternatives. On the practical side, we evaluate the three algorithms experimentally on a variety of Java libraries. "}],"_id":"4399"}