A high-level modular definition of the semantics of C#

We propose a structured mathematical definition of the semantics of C# programs to provide a platform-independent interpreter view of the language for the C# programmer, which can also be used for a precise analysis of the ECMA standard of the language and as a reference model for teaching. The definition takes care to reflect directly and faithfully--as much as possible without becoming inconsistent or incomplete--the descriptions in the C# standard to become comparable with the corresponding models for Java in Stark et al. (Java and Java Virtual Machine--Definition, Verification, Validation, Springer, Berlin, 2001) and to provide for implementors the possibility to check their basic design decisions against an accurate high-level model. The model sheds light on some of the dark corners of C# and on some critical differences between the ECMA standard and the implementations of the language.

[1]  Claus Lewerentz,et al.  Formal Development of Reactive Systems , 1995, Lecture Notes in Computer Science.

[2]  Joachim Schmid,et al.  Refinement and implementation techniques for Abstract State Machines , 2002 .

[3]  Egon Börger,et al.  An ASM Specification of C# Threads and the .NET Memory Model , 2004, Abstract State Machines.

[4]  Egon Börger,et al.  Exploiting Abstraction for Specification Reuse. The Java/C# Case Study , 2003, FMCO.

[5]  Egon Börger,et al.  A Logical Operational Semantics of Full Prolog. Part I: Selection Core and Control , 1989, CSL.

[6]  J. van Leeuwen,et al.  Theoretical Computer Science , 2003, Lecture Notes in Computer Science.

[7]  R. Stärk,et al.  Abstract State Machines , 2003, Springer Berlin Heidelberg.

[8]  David Stutz,et al.  Shared source CLI essentials , 2003 .

[9]  Egon Börger,et al.  Java and the Java Virtual Machine: Definition, Verification, Validation , 2001 .

[10]  Axel Dold,et al.  A Framework for Modeling the Semantics of Expression Evaluation with Abstract State Machines , 2003, Abstract State Machines.

[11]  Egon Börger,et al.  The Stream Boiler Case Study: Competition of Formal Program Specification and Development Methods , 1995, Formal Methods for Industrial Applications.

[12]  Egon Börger,et al.  The ASM Refinement Method , 2003, Formal Aspects of Computing.

[13]  Claus Lewerentz,et al.  Formal Development of Reactive Systems: Case Study Production Cell , 1995 .

[14]  Peter H. Golde,et al.  C# Language Specification , 2003 .

[15]  Egon Börger,et al.  Formal methods for industrial applications : specifying and programming the steam boiler control , 1996 .

[16]  Nicu G. Fruja The Correctness of the Definite Assignment Analysis in C# , 2004, J. Object Technol..

[17]  Egon Börger,et al.  Integrating ASMs into the Software Development Life Cycle , 1997, J. Univers. Comput. Sci..

[18]  Egon Börger,et al.  Composition and Submachine Concepts for Sequential ASMs , 2000, CSL.

[19]  Jeff Prosise Programming Microsoft .NET , 2002 .

[20]  James K. Huggins Broy-Lamport Specification Problem: A Gurevich Abstract State Machine Solution , 1998, ArXiv.

[21]  Nicu G. Fruja Specification and Implementation Problems for C# , 2004, Abstract State Machines.

[22]  Egon Börger,et al.  High Level System Design and Analysis Using Abstract State Machines , 1998, FM-Trends.

[23]  Egon Börger,et al.  The ASM Ground Model Method as a Foundation for Requirements Engineering , 2003, Verification: Theory and Practice.

[24]  Pieter H. Hartel,et al.  Formalizing the safety of Java, the Java virtual machine, and Java card , 2001, CSUR.

[25]  Elvinia Riccobene,et al.  Refining Abstract Machine Specifications of the Steam Boiler Control to Well Documented Executable Code , 1995, Formal Methods for Industrial Applications.

[26]  Egon Börger Abstract State Machines: a unifying view of models of computation and of system design frameworks , 2005, Ann. Pure Appl. Log..

[27]  Andrew D. Gordon,et al.  Typing a multi-language intermediate code , 2001, POPL '01.

[28]  Egon Börger,et al.  Remarks on Turbo ASMs for Functional Equations and Recursion Schemes , 2003, Abstract State Machines.

[29]  Jeffrey Richter Applied Microsoft .NET Framework Programming , 2002 .

[30]  Egon Börger,et al.  Abstract State Machines. A Method for High-Level System Design and Analysis , 2003 .

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

[32]  Andrew Whitechapel,et al.  Inside C , 2001 .

[33]  Manfred Broy,et al.  Formal Systems Specification, The RPC-Memory Specification Case Study (the book grow out of a Dagstuhl Seminar, September 1994) , 1996 .

[34]  Donald Robert Syme Declarative theorem proving for operational semantics , 1999 .

[35]  Robert F. Stärk,et al.  The hidden computation steps of Turbo Abstract State Machines , 2003 .

[36]  Martin Wirsing,et al.  An Event-Based Structural Operational Semantics of Multi-Threaded Java , 1999, Formal Syntax and Semantics of Java.