Results 1 -
7 of
7
A Semantic Approach to Secure Information Flow
, 1997
"... A classic problem in security is the problem of determining whether a given program has secure information flow. Informally, this problem may be described as follows: Given a program operating on public and private variables, check whether observations of the public variables before and after execu ..."
Abstract
-
Cited by 71 (0 self)
- Add to MetaCart
A classic problem in security is the problem of determining whether a given program has secure information flow. Informally, this problem may be described as follows: Given a program operating on public and private variables, check whether observations of the public variables before and after execution reveal any information about the initial values of the private variables. Although the problem has been studied for several decades, most of the previous approaches have been syntactic in nature, often using type systems and compiler data flow analysis techniques to analyze program texts. This paper presents a considerably different approach to checking secure information flow, based on a semantic characterization of security. A semantic approach has several desirable features. Firstly, it gives a more precise characterization of security than that possible by conservative methods based on type systems. Secondly, it applies to any programming constructs whose semantics are definable; fo...
Java Program Verification via a Hoare Logic with Abrupt Termination
- Fundamental Approaches to Software Engineering (FASE 2000), number 1783 in LNCS
, 2000
"... This paper formalises a semantics for statements and expressions (in sequential imperative languages) which includes non-termination, normal termination and abrupt termination (e.g. because of an exception, break, return or continue). This extends the traditional semantics underlying e.g. Hoare logi ..."
Abstract
-
Cited by 58 (6 self)
- Add to MetaCart
This paper formalises a semantics for statements and expressions (in sequential imperative languages) which includes non-termination, normal termination and abrupt termination (e.g. because of an exception, break, return or continue). This extends the traditional semantics underlying e.g. Hoare logic, which only distinguishes termination and non-termination. An extension of Hoare logic is elaborated that includes means for reasoning about abrupt termination (and side-effects). It prominently involves rules for reasoning about while loops, which may contain exceptions, breaks, continues and returns. This extension applies in particular to Java. As an example, a standard pattern search algorithm in Java (involving a while loop with returns) is proven correct using the proof-tool PVS.
A Case Study in Class Library Verification: Java's Vector Class
, 1999
"... One of the reasons for the popularity of object-oriented programming is the possibility it offers for reuse of code. Usually, the distribution of an object-oriented programming language comes together with a collection of ready-to-use classes, in a class library. Typically, these classes contain gen ..."
Abstract
-
Cited by 20 (6 self)
- Add to MetaCart
One of the reasons for the popularity of object-oriented programming is the possibility it offers for reuse of code. Usually, the distribution of an object-oriented programming language comes together with a collection of ready-to-use classes, in a class library. Typically, these classes contain general purpose code, which can be used in many applications. Before using such classes, a programmer usually wants to know how they behave and when their methods throw exceptions. One way to do this, is to study the actual code, but since this is time-consuming and requires understanding all particular ins and outs of the implementation, this is often not the most efficient way. Another approach is to study the documentation provided. As long as the documentation is clear and concise, this works well, but otherwise one still is forced to look at the actual code.
A Formalisation of Java's Exception Mechanism
- Programming Languages and Systems (ESOP), number 2028 in Lect. Notes Comp. Sci
, 2000
"... This paper examines Java's exception mechanism, and formalises its main operations (throw, try-catch and try-catch-finally) in a type-theoretic setting. This formalisation uses so-called coalgebras for modeling Java statements and expressions, thus providing a convenient setting for handling the var ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
This paper examines Java's exception mechanism, and formalises its main operations (throw, try-catch and try-catch-finally) in a type-theoretic setting. This formalisation uses so-called coalgebras for modeling Java statements and expressions, thus providing a convenient setting for handling the various termination options that may arise in exception handling (closely following the Java Language Specification). This semantics of exceptions is used within the LOOP project on Java program verification. It is illustrated in two example verifications in PVS.
Coalgebras and Monads in the Semantics of Java
- Theoretical Computer Science
, 2002
"... This paper describes the basic structures in the denotational and axiomatic semantics of sequential Java, both from a monadic and a coalgebraic perspective. This semantics is an abstraction of the one used for the verification of (sequential) Java programs using proof tools in the LOOP project at th ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
This paper describes the basic structures in the denotational and axiomatic semantics of sequential Java, both from a monadic and a coalgebraic perspective. This semantics is an abstraction of the one used for the verification of (sequential) Java programs using proof tools in the LOOP project at the University of Nijmegen. It is shown how the monadic perspective gives rise to the relevant computational structure in Java (composition, extension and repetition), and how the coalgebraic perspective o#ers an associated program logic (with invariants, bisimulations, and Hoare logics) for reasoning about the computational structure provided by the monad.
Conditional Composition
- Formal Aspects of Computer Science
, 1995
"... . Generalizing the notion of function composition, we introduce the concept of conditional function composition and present a theory of such compositions. We use the theory to describe the semantics of a programming language with exceptions, and to relate exceptions to the IF statement. 1. INTRODUCT ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
. Generalizing the notion of function composition, we introduce the concept of conditional function composition and present a theory of such compositions. We use the theory to describe the semantics of a programming language with exceptions, and to relate exceptions to the IF statement. 1. INTRODUCTION In this note, we generalize the concept of function composition. We introduce the notion of conditional composition of functions, and develop a theory of such compositions. We also introduce a conditional replace operator, which can be used to define conditional composition in terms of ordinary function application. We show how these concepts can be used to define the semantics of a programming language with exceptions. In particular, we show how exceptions can be described in terms of the IF statement. This work generalizes the concepts introduced in [6]. 2. THEORY OF CONDITIONAL COMPOSITION We generalize the concept of function composition to conditional function composition. To enab...
Constructing a program with exceptions
, 1995
"... An exception is a form of a structured jump. A program that uses exceptions can sometimes be written in a way that is simpler, easier to understand, and more efficient than a similar program written without exceptions. Moreover, program constructs in a language with exceptions are not appreciably mo ..."
Abstract
- Add to MetaCart
An exception is a form of a structured jump. A program that uses exceptions can sometimes be written in a way that is simpler, easier to understand, and more efficient than a similar program written without exceptions. Moreover, program constructs in a language with exceptions are not appreciably more difficult to reason about than those in a language without exceptions. In fact, the weakest preconditions of these constructs make up a nice algebra over functions of two arguments. We prove some theorems in this algebra using the calculational method, and then show a novel derivation of a simple program.

