Results 1 
8 of
8
A Denotational Approach to Measuring Complexity in Functional Programs
, 2003
"... ..."
(Show Context)
A linear logic model of state (extended abstract
, 1993
"... We propose an abstract formal model of state manipulation in the framework of Girard’s linear logic. Two issues motivate this work: how to describe the semantics of higherorder imperative programming langauges and how to incorporate state manipulation in functional programming languages. The centra ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We propose an abstract formal model of state manipulation in the framework of Girard’s linear logic. Two issues motivate this work: how to describe the semantics of higherorder imperative programming langauges and how to incorporate state manipulation in functional programming languages. The central idea is that a state is linear and “regenerative”, where the latter is the property of a value that generates a new value upon each use. Based on this, we define a type constructor for states and a “modality ” type constructor for regenerative values. Just as Girard’s “of course ” modality allows him to express static values and intuitionistic logic within the framework of linear logic, our regenerative modality allows us to express dynamic values and imperative programs within the same framework. We demonstrate the expressiveness of the model by showing that a higherorder Algollike language can be embedded in it. 1
Automating Functional Program Transformation
, 2000
"... We present a framework for automatic program transformation of a strict and pure functional language with a welldefined semantics. It will be shown that such a framework can be implemented most declaratively and concisely in a recently developed higherorder logic programming language called Lambda ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We present a framework for automatic program transformation of a strict and pure functional language with a welldefined semantics. It will be shown that such a framework can be implemented most declaratively and concisely in a recently developed higherorder logic programming language called LambdaProlog.
Effects in functional and dependentlytyped programming
"... Effectful programming is supported in Haskell by compilers which provide primitive effectful operations, together with functions to combine these operations into larger programs. Unfortunately, this makes the task of reasoning about the correctness of and understanding the behaviour of programs with ..."
Abstract
 Add to MetaCart
Effectful programming is supported in Haskell by compilers which provide primitive effectful operations, together with functions to combine these operations into larger programs. Unfortunately, this makes the task of reasoning about the correctness of and understanding the behaviour of programs with effects into a difficult problem. In the first part of this report, we survey the technologies that have been developed to express effects when programming in a functional language. We then move on to discuss some techniques which are used for reasoning about these programs, as well as developing correctbyconstruction programs which are guaranteed to match their specifications. We move on to discuss a potential new model for specifying local state (á la the ST monad), along with an initial prototype in the dependentlytyped functional programming language Agda. This model specifies the effect that computations have on the heap which
Theories of Information Hiding in LambdaCalculus: Logical Relations and Bisimulations for Encryption and Type Abstraction
"... Two methods are studied for proving equivalence of programs involving two forms of information hiding. The proof methods are logical relations and bisimulations; the forms of information hiding are type abstraction and perfect encryption (also known as dynamic sealing). Our thesis is that these theo ..."
Abstract
 Add to MetaCart
Two methods are studied for proving equivalence of programs involving two forms of information hiding. The proof methods are logical relations and bisimulations; the forms of information hiding are type abstraction and perfect encryption (also known as dynamic sealing). Our thesis is that these theories are useful for reasoning about programs involving information hiding. We prove it through soundness and completeness theorems as well as examples including abstract data structures and cryptographic protocols. Type abstraction is the most foundational form of information hiding in programming languages. Logical relations are the primary method for reasoning about type abstraction, which is often called relational parametricity or representation independence. Encryption is another foundational form of information hiding that is predominant in communication systems. In fact, an encryptionlike primitive is useful for abstraction in programming languages as well, where it is called dynamic sealing. Given this intuitive connection between two forms of information hiding in computer software, it is natural to wonder whether we can establish more formal connections between them and transfer reasoning techniques from one to the other. We give affirmative answers
LC) CD Monads and Comonads in Intensional Semantics
, 1993
"... Kleisli categories over monads have been used in denotational semantics to describe functional languages using various notions of computations as values. Kleisli categories over comonads have also been used to describe intensional semantics rather than extensional. This paper explores the possibilit ..."
Abstract
 Add to MetaCart
(Show Context)
Kleisli categories over monads have been used in denotational semantics to describe functional languages using various notions of computations as values. Kleisli categories over comonads have also been used to describe intensional semantics rather than extensional. This paper explores the possibilities of combining monads and comonads to obtain an intensional semantics using computations as values. We give three alternative ways to combine the two and explore which apply to known monads and comonads of interest. We will also look at various intensional semantics for an example programming language that uses monads for computations and compare them to the original extensional semantics.