Results 1 -
8 of
8
A machine-checked model for a Java-like language, virtual machine and compiler
- ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS
, 2004
"... We introduce Jinja, a Java-like programming language with a formal semantics designed to exhibit core features of the Java language architecture. Jinja is a compromise between realism of the language and tractability and clarity of the formal semantics. The following aspects are formalised: a big an ..."
Abstract
-
Cited by 126 (9 self)
- Add to MetaCart
We introduce Jinja, a Java-like programming language with a formal semantics designed to exhibit core features of the Java language architecture. Jinja is a compromise between realism of the language and tractability and clarity of the formal semantics. The following aspects are formalised: a big and a small step operational semantics for Jinja and a proof of their equivalence; a type system and a definite initialisation analysis; a type safety proof of the small step semantics; a virtual machine (JVM), its operational semantics and its type system; a type safety proof for the JVM; a bytecode verifier, i.e. data flow analyser for the JVM; a correctness proof of the bytecode verifier w.r.t. the type system; a compiler and a proof that it preserves semantics and well-typedness. The emphasis of this work is not on particular language features but on providing a unified model of the source language, the virtual machine and the compiler. The whole development has been carried out in the theorem prover Isabelle/HOL.
Java Jr.: A fully abstract trace semantics for a core Java language
- In ESOP, volume 3444 of LNCS
, 2005
"... Abstract. We introduce an expressive yet semantically clean core Java-like language, Java Jr., and provide it with a formal operational semantics based on traces of observable actions which represent interaction across package boundaries. A detailed example based on the Observer Pattern is used to d ..."
Abstract
-
Cited by 38 (0 self)
- Add to MetaCart
(Show Context)
Abstract. We introduce an expressive yet semantically clean core Java-like language, Java Jr., and provide it with a formal operational semantics based on traces of observable actions which represent interaction across package boundaries. A detailed example based on the Observer Pattern is used to demonstrate the intuitive character of the semantic model. We also show that our semantic trace equivalence is fully-abstract with respect to a natural notion of testing equivalence for object systems. This is the first such result for a full class-based OO-language with inheritance. 1
Dynamic logic with non-rigid functions: A basis for object-oriented program verification
- IJCAR, volume 4130 of LNCS
, 2006
"... Abstract. We introduce a dynamic logic that is enriched by non-rigid functions, i.e., functions that may change their value from state to state (during program execution), and we present a (relatively) complete sequent calculus for this logic. In conjunction with dynamically typed object enumerators ..."
Abstract
-
Cited by 23 (10 self)
- Add to MetaCart
(Show Context)
Abstract. We introduce a dynamic logic that is enriched by non-rigid functions, i.e., functions that may change their value from state to state (during program execution), and we present a (relatively) complete sequent calculus for this logic. In conjunction with dynamically typed object enumerators, non-rigid functions allow to embed notions of objectorientation in dynamic logic, thereby forming a basis for verification of object-oriented programs. A semantical generalisation of substitutions, called state update, which we add to the logic, constitutes the central technical device for dealing with object aliasing during function modification. With these few extensions, our dynamic logic captures the essential aspects of the complex verification system KeY and, hence, constitutes a foundation for object-oriented verification with the principles of reasoning that underly the successful KeY case studies.
On the speed of quantum computation
- Fe Institute Working Paper Series
, 1994
"... Abstract. This paper describes an undergraduate course taught at the University of Newcastle upon Tyne; the title of the module is Understanding Programming Languages. The main thrust of the course is to understand how to model features of language semantics. Specifically, (structural) operational s ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Abstract. This paper describes an undergraduate course taught at the University of Newcastle upon Tyne; the title of the module is Understanding Programming Languages. The main thrust of the course is to understand how to model features of language semantics. Specifically, (structural) operational semantics (SOS) is taught as a convenient and notational light way of recording and experimenting with features of procedural programming languages. We outline the content, discuss the contentious issue of tool support and relate experiences. 1
Chapter 1 Translating Hume to Java
"... Abstract Progress towards the compilation of Hume to Java is presented. ..."
(Show Context)
Manifest Security for Distributed Information
, 2006
"... What is the best way to build programs that compute with data sources controlled by multiple principals, while ensuring compliance with the security policies of the principals involved? The objective of this project is to devise methods for building manifestly secure applications for an information ..."
Abstract
- Add to MetaCart
(Show Context)
What is the best way to build programs that compute with data sources controlled by multiple principals, while ensuring compliance with the security policies of the principals involved? The objective of this project is to devise methods for building manifestly secure applications for an information grid consisting of multiple data sources controlled by multiple principals. This is achieved by using techniques from mathematical logic, programming language semantics, and mechanized reasoning to ensure security of application code, while permitting convenient expression of complex computations with data sources on the information grid. The project will design and implement a programming language whose type system ensures compliance with security policies through the use of proofs in a formal logic of authorization during both the static and dynamic phases of processing. The project will use automated reasoning tools such as theorem provers and logical frameworks to prove formally and rigorously the security properties of the programming language. As a result, every application written in the language enjoys the guarantees afforded by the language as a whole. The intellectual merit of the project consists of scientific and engineering techniques for building practical programs for computing with multiple data sources that are manifestly secure. Manifest security means that the trust relationships, access control and information flow policies, and proofs
Black tie optional: Modelling programming language concepts
, 2004
"... This paper describes an undergraduate course taught at the University of Newcastle upon Tyne; the title of the module is Understanding Programming Languages. The main thrust of the course is to understand how to model features of language semantics. Specifically, (structural) operational semanti ..."
Abstract
- Add to MetaCart
This paper describes an undergraduate course taught at the University of Newcastle upon Tyne; the title of the module is Understanding Programming Languages. The main thrust of the course is to understand how to model features of language semantics. Specifically, (structural) operational semantics (SOS) is taught as a convenient and notational light way of recording and experimenting with features of procedural programming languages. We outline the content, discuss the contentious issue of tool support and relate experiences.