4th Annual Symposium on Theoretical Aspects of Computer Sciences on STACS 87
The SCHEME programming language
The SCHEME programming language
A simple, comprehensive type system for Java bytecode subroutines
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for Java bytecode subroutines
ACM Transactions on Programming Languages and Systems (TOPLAS)
Featherweight Java: a minimal core calculus for Java and GJ
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A type system for object initialization in the Java bytecode language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Verifying object initialization in the Java bytecode language
SAC '00 Proceedings of the 2000 ACM symposium on Applied computing - Volume 2
Typing a multi-language intermediate code
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formalizing the safety of Java, the Java virtual machine, and Java card
ACM Computing Surveys (CSUR)
Stacking them up: a comparison of virtual machines
ACSAC '01 Proceedings of the 6th Australasian conference on Computer systems architecture
Java Virtual Machine Specification
Java Virtual Machine Specification
Java and the Java Virtual Machine: Definition, Verification, Validation with Cdrom
Java and the Java Virtual Machine: Definition, Verification, Validation with Cdrom
Evaluating the Java Virtual Machine as a Target for Languages Other Than Java
JMLC '00 Proceedings of the Joint Modular Languages Conference on Modular Programming Languages
Abstract State Machines: A Method for High-Level System Design and Analysis
Abstract State Machines: A Method for High-Level System Design and Analysis
Completeness of a Bytecode Verifier and a Certifying Java-to-JVM Compiler
Journal of Automated Reasoning
A Type System for the Java Bytecode Language and Verifier
Journal of Automated Reasoning
Type systems for object-oriented intermediate languages
Type systems for object-oriented intermediate languages
A machine-checked model for a Java-like language, virtual machine, and compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Electronic Notes in Theoretical Computer Science (ENTCS)
The hidden computation steps of turbo abstract state machines
ASM'03 Proceedings of the abstract state machines 10th international conference on Advances in theory and practice
ASMs versus natural semantics: a comparison with new insights
ASM'03 Proceedings of the abstract state machines 10th international conference on Advances in theory and practice
Type safety of generics for the .NET common language runtime
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Towards proving type safety of C#
Computer Languages, Systems and Structures
The subject-oriented approach to software design and the abstract state machines method
Conceptual Modelling and Its Theoretical Foundations
Contribution to a rigorous analysis of web application frameworks
ABZ'12 Proceedings of the Third international conference on Abstract State Machines, Alloy, B, VDM, and Z
Contribution to a rigorous analysis of web application frameworks
IFM'12 Proceedings of the 9th international conference on Integrated Formal Methods
Hi-index | 0.00 |
A crucial role in the Microsoft .NET Framework Common Language Runtime (CLR) security model is played by type safety of the Common Intermediate Language (CIL). In this paper, we formally prove type safety of a large subset of CIL. To do so, we begin by specifying the static and dynamic semantics of CIL by providing an abstract interpreter for CIL programs. We then formalize the bytecode verification algorithm, whose job it is to compute a well-typing for a given method. We then prove type safety of well-typed methods, i.e., the execution according to the semantics model of legal and well-typed methods does not lead to any run-time type violations. Finally, to prove CIL's type safety, we show that the verification algorithm is sound, i.e., the typings it produces are well-typings, and complete, i.e., if a well-typing exists, then the algorithm computes one.