Formal Techniques for Java-Like Programs

ion-carrying Code: A New Method to Certify Temporal Properties Songtao Xia, James Hook Instrumentation of Java Bytecode for Runtime Analysis Allen Goldberg and Klaus Havelund ! "$# %& ' ( # *) + ' , , ' (&' . ' / 0 1 2 3 4 5 6&7 8 6 6 2 9 2 8 : = 2 ? 2 = @ > 8 6 8 9 A*5 > B*C*2 B 4 = 4 > 2 D E F G H I J G K / > > 2 3 = 6 5 L L 2 L 5 1 1 2 5 3 > 2 L M 2 B N 4 M @ 4 > = 6 5 L L B 2 O > 4 M 4 8 > L P ? @ 2 A 0*5 A 5 = = 2 L L 5 > A 0 2 0 Q R 2 3 L 8 : M @ 2 = 6 5 L L 2 L 4 > N @ 4 = @ M @ 2 A 5 3 2 = 8 > M 5 4 > 2 B P ? @ 2 4 > M 2 3 1 6 5 A R 2 M N 2 2 > 4 > > 2 3 = 6 5 L L 2 L S 5 6 4 5 L 4 > 9 5 > B*L T R = 6 5 L L 2 LU= 5 >*0*5 V 2U3 2 L 8 6 T M 4 8 >$8 :L N 4 > 9 5 1 1 6 4 = 5 M 4 8 > L 5 L 4 MU5 Y 8 4 B L 2 a 1 6 4 = 4 M 1 5 L L 4 > 9 8 : > ) * + , , 4 ?%: @ 2 : 1 A , 4 5 . 0 1 2%B 7 8 . 9 : 2 ; 9 1 - > > M

[1]  Z. Chen Java Card Technology for Smart Cards: Architecture and Programmer''s Guide. The Java Series. Addis , 2000 .

[2]  Giovanni Lagorio,et al.  Towards a Smart Compilation Manager for Java , 2003, ICTCS.

[3]  David Gries,et al.  A proof technique for communicating sequential processes , 1981, Acta Informatica.

[4]  Michael R. Lowry,et al.  Experiments with Test Case Generation and Runtime Analysis , 2003, Abstract State Machines.

[5]  Frank Pfenning,et al.  A Compilation Manager for Standard ML of New Jersey , 1994 .

[6]  Martin Wirsing,et al.  Formal Syntax and Semantics of Java , 1999 .

[7]  Davide Ancona,et al.  True Modules for Java-like Languages , 2001, ECOOP.

[8]  John Tang Boyland,et al.  Alias burying: Unique variables without destructive reads , 2001, Softw. Pract. Exp..

[9]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[10]  Armin Biere,et al.  High‐level data races , 2003, Softw. Test. Verification Reliab..

[11]  K. Rustan M. Leino,et al.  Extended static checking , 1998, PROCOMET.

[12]  Engelbert Hubbers,et al.  Generating JML Specifications from UML State Diagrams , 2003, FDL.

[13]  Andrew W. Appel,et al.  Smartest recompilation , 1993, POPL '93.

[14]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[15]  Willem P. de Roever,et al.  A Proof System for Communicating Sequential Processes , 1980, ACM Trans. Program. Lang. Syst..

[16]  Tobias Nipkow,et al.  Hoare Logic for NanoJava: Auxiliary Variables, Side Effects, and Virtual Methods Revisited , 2002, FME.

[17]  Walter F. Tichy,et al.  Smart recompilation , 1986, TOPL.

[18]  Davide Ancona,et al.  Stronger Typings for Separate Compilation of Java-like Languages , 2004, J. Object Technol..

[19]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[20]  Rolf Adams,et al.  The cost of selective recompilation and environment processing , 1994, TSEM.

[21]  Joe B. Wells,et al.  The Essence of Principal Typings , 2002, ICALP.

[22]  Robert DeLine,et al.  Adoption and focus: practical linear types for imperative programming , 2002, PLDI '02.

[23]  David Walker,et al.  Typed memory management via static capabilities , 2000, TOPL.

[24]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[25]  K. Rustan M. Leino,et al.  Using data groups to specify and check side effects , 2002, PLDI '02.

[26]  Grigore Rosu,et al.  Monitoring Java Programs with Java PathExplorer , 2001, RV@CAV.

[27]  Jim Alves-Foss,et al.  Formal Syntax and Semantics of Java , 2002, Lecture Notes in Computer Science.

[28]  Luca Cardelli,et al.  Program fragments, linking, and modularization , 1997, POPL '97.

[29]  Fred Kröger,et al.  Temporal Logic of Programs , 1987, EATCS Monographs on Theoretical Computer Science.

[30]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[31]  W. D. Roever,et al.  A Hoare Logic for Monitors in Java , 2002 .

[32]  Davide Ancona,et al.  True separate compilation of Java classes , 2002, PPDP '02.

[33]  Anneke Kleppe,et al.  The object constraint language: precise modeling with UML , 1998 .

[34]  Erik Poll,et al.  From Finite State Machines to Provably Correct Java Card Applets , 2003, SEC.

[35]  Davide Ancona,et al.  Principal typings for Java-like languages , 2004, POPL '04.

[36]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.

[37]  Sophia Drossopoulou,et al.  Flexible Models for Dynamic Linking , 2003, ESOP.

[38]  K. Rustan M. Leino,et al.  Data abstraction and information hiding , 2002, TOPL.

[39]  K. Rustan M. Leino,et al.  Checking Java Programs via Guarded Commands , 1999, ECOOP Workshops.

[40]  Robert DeLine,et al.  The fugue protocol checker: is your software baroque? technical report msr-tr-2004-07 , 2004 .

[41]  Susan Owicki,et al.  An axiomatic proof technique for parallel programs I , 1976, Acta Informatica.

[42]  Arnd Poetzsch-Heffter,et al.  A Programming Logic for Sequential Java , 1999, ESOP.

[43]  Sophia Drossopoulou,et al.  Describing the Semantics of Java and Proving Type Soundness , 1999, Formal Syntax and Semantics of Java.

[44]  Arnd Poetzsch-Heffter,et al.  Modular specification and verification techniques for object-oriented software components , 2000 .

[45]  Bart Jacobs,et al.  Objects and Classes, Co-Algebraically , 1995, Object Orientation with Parallelism and Persistence.

[46]  Davide Ancona,et al.  A Formal Framework for Java Separate Compilation , 2002, ECOOP.

[47]  Robert E. Filman,et al.  What Is Aspect-Oriented Programming , 2001 .

[48]  Peter B. Andrews An introduction to mathematical logic and type theory - to truth through proof , 1986, Computer science and applied mathematics.

[49]  Greg Nelson,et al.  A generalization of Dijkstra's calculus , 1989, ACM Trans. Program. Lang. Syst..

[50]  Klaus Havelund,et al.  Reducing False Positives in Runtime Analysis of Deadlocks , 2002 .

[51]  Robert DeLine,et al.  Enforcing high-level protocols in low-level software , 2001, PLDI '01.

[52]  Gail E. Kaiser,et al.  Smarter recompilation , 1988, TOPL.