Static analysis of unbounded structures in object-oriented programs

In this thesis we investigate different techniques and formalisms to address complexity introduced by unbounded structures in object-oriented programs. We give a representation of a weakest precondition calculus for abstract object creation in dynamic logic. Based on this calculus we define symbolic execution including abstract object creation. We investigate the complex behaviour introduced by multi-threading and give a formalism based on the transformation of multi-threaded reentrant call-graphs to thread automata and the application of context free language reachability to decide deadlock freedom of such programs. We give a formalisation of the observable interface behaviour of a concurrent, object-oriented language with futures and promises. The calculus captures the core of the Creol language and allows for a comparison with the concurrency model of thread-based, object-oriented languages like Java or C#. We give a technique to detect deadlock freedom for an Actor-like subset of the Creol language.

[1]  G. Stewart Von Itzstein,et al.  Applications of Join Java , 2002 .

[2]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[3]  H. Lipkin Where is the ?c? , 1978 .

[4]  Thomas W. Reps,et al.  Program analysis via graph reachability , 1997, Inf. Softw. Technol..

[5]  I. Naturwissenschaftlich-TechnischeFakultat A Concurrent -Calculus with Promises and Futures , 2002 .

[6]  Arnd Poetzsch-Heffter,et al.  A Representation-Independent Behavioral Semantics for Object-Oriented Components , 2007, FMOODS.

[7]  Neil Immerman,et al.  Simulating Reachability Using First-Order Logic with Applications to Verification of Linked Data Structures , 2005, CADE.

[8]  Einar Broch Johnsen,et al.  An Asynchronous Communication Model for Distributed Concurrent Objects , 2004, SEFM.

[9]  Philippe Schnoebelen,et al.  Well-structured transition systems everywhere! , 2001, Theor. Comput. Sci..

[10]  Philipp Rümmer,et al.  Sequential, Parallel, and Quantified Updates of First-Order Structures , 2006, LPAR.

[11]  Luc Moreau,et al.  The semantics of Scheme with future , 1996, ICFP '96.

[12]  Julian Rathke,et al.  Java Jr: Fully Abstract Trace Semantics for a Core Java Language , 2005, ESOP.

[13]  Arie van Deursen,et al.  The ASF+SDF Meta-environment: A Component-Based Language Development Environment , 2001 .

[14]  Frank S. de Boer,et al.  A WP-calculus for OO , 1999, FoSSaCS.

[15]  米沢 明憲 ABCL : an object-oriented concurrent system , 1990 .

[16]  Denis Caromel,et al.  Partial behavioral reflection: spatial and temporal selection of reification , 2003, OOPSLA '03.

[17]  Frank S. de Boer,et al.  Termination detection for active objects , 2012, J. Log. Algebraic Methods Program..

[18]  Matthias Felleisen,et al.  The Semantics of Future , 1994 .

[19]  Einar Broch Johnsen,et al.  Creol: A type-safe object-oriented model for distributed concurrent systems , 2006, Theor. Comput. Sci..

[20]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[21]  Julian Rathke,et al.  A fully abstract may testing semantics for concurrent objects , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[22]  Cédric Fournet,et al.  The reflexive CHAM and the join-calculus , 1996, POPL '96.

[23]  Cédric Fournet,et al.  The Join Calculus: A Language for Distributed Mobile Programming , 2000, APPSEM.

[24]  Frank S. de Boer,et al.  A Complete Guide to the Future , 2007, ESOP.

[25]  Patrick Lincoln,et al.  Linear logic , 1992, SIGA.

[26]  Matthias Felleisen,et al.  The semantics of future and an application , 1999, Journal of Functional Programming.

[27]  Cosimo Laneve,et al.  Analysis of Deadlocks in Object Groups , 2011, FMOODS/FORTE.

[28]  Marjan Sirjani,et al.  Rebeca: Theory, Applications, and Tools , 2006, FMCO.

[29]  Mario Tokoro,et al.  Object-oriented concurrent programming , 1987 .

[30]  Bart Jacobs,et al.  The LOOP Compiler for Java and JML , 2001, TACAS.

[31]  Suresh Jagannathan,et al.  Safe futures for Java , 2005, OOPSLA '05.

[32]  Polyvios Pratikakis,et al.  Transparent proxies for java futures , 2004, OOPSLA.

[33]  Frank S. de Boer,et al.  Java Test Driver Generation from Object-Oriented Interaction Traces , 2009, Electron. Notes Theor. Comput. Sci..

[34]  Martin Odersky,et al.  Actors That Unify Threads and Events , 2007, COORDINATION.

[35]  Akinori Yonezawa,et al.  Object-oriented concurrent programming ABCL/1 , 1986, OOPLSA '86.

[36]  Matthias Felleisen,et al.  Well-Founded Touch Optimization for Futures , 1994 .

[37]  G. Ramalingam,et al.  Context-sensitive synchronization-sensitive analysis is undecidable , 2000, TOPL.

[38]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[39]  Martin C. Rinard,et al.  Analysis of Multithreaded Programs , 2001, SAS.

[40]  Tobias Nipkow,et al.  A machine-checked model for a Java-like language, virtual machine, and compiler , 2006, TOPL.

[41]  Leif Kornstaedt Alice in the Land of Oz - An Interoperability-based Implementation of a Functional Language on Top of a Relational Language , 2001, Electron. Notes Theor. Comput. Sci..

[42]  Jan Janecek,et al.  Optimizing remote method invocation in Java , 2002, Proceedings. 13th International Workshop on Database and Expert Systems Applications.

[43]  Vineet Kahlon,et al.  Reasoning About Threads Communicating via Locks , 2005, CAV.

[44]  Reiner Hähnle,et al.  Generating Unit Tests from Formal Proofs , 2007, TAP.

[45]  Dragos-Anton Manolescu,et al.  Workflow enactment with continuation and future objects , 2002, OOPSLA '02.

[46]  Alexander Aiken,et al.  A theory of type qualifiers , 1999, PLDI '99.

[47]  Philip Wadler,et al.  Linear Types can Change the World! , 1990, Programming Concepts and Methods.

[48]  Bertrand Meyer,et al.  Systematic concurrent object-oriented programming , 1993, CACM.

[49]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[50]  Joachim Niehren,et al.  Observational Semantics for a Concurrent Lambda Calculus with Reference Cells and Futures , 2007, MFPS.

[51]  Joachim Niehren,et al.  A concurrent lambda calculus with futures , 2006, Theor. Comput. Sci..

[52]  Frank S. de Boer,et al.  Automated Deadlock Detection in Synchronized Reentrant Multithreaded Call-Graphs , 2010, SOFSEM.