Results 1  10
of
33
Algebraic Approaches to Nondeterminism  an Overview
 ACM Computing Surveys
, 1997
"... this paper was published as Walicki, M.A. and Meldal, S., 1995, Nondeterministic Operators in Algebraic Frameworks, Tehnical Report No. CSLTR95664, Stanford University ..."
Abstract

Cited by 23 (3 self)
 Add to MetaCart
this paper was published as Walicki, M.A. and Meldal, S., 1995, Nondeterministic Operators in Algebraic Frameworks, Tehnical Report No. CSLTR95664, Stanford University
On the Expressiveness of Purely Functional I/O Systems
, 1989
"... Functional programming languages have traditionally lacked complete, flexible, and yet referentially transparent I/O mechanisms. Previous proposals for I/O have used either the notion of lazy streams or continuations to model interaction with the external world. We discuss and generalize these mo ..."
Abstract

Cited by 22 (2 self)
 Add to MetaCart
Functional programming languages have traditionally lacked complete, flexible, and yet referentially transparent I/O mechanisms. Previous proposals for I/O have used either the notion of lazy streams or continuations to model interaction with the external world. We discuss and generalize these models and introduce a third, which we call the systems model, to perform I/O. The expressiveness of the styles are compared by means of an example. We then give a series of surprisingly simple translations between the three models, demonstrating that they are not as different as their programming styles suggest, and implying that the styles could be mixed within a single program. The need to express nondeterministic behavior in a functional language is well recognized. So is the problem of doing so without destroying referential transparency. We survey past approaches to this problem, and suggest a solution in the context of the I/O models described. The I/O system of the purely func...
Erratic Fudgets: A Semantic Theory for an Embedded Coordination Language
 SCIENCE OF COMPUTER PROGRAMMING
, 2003
"... The powerful abstraction mechanisms of functional programming languages provide the means to develop domainspecific programming languages within the language itself. Typically, this is realised by designing a set of combinators (higherorder reusable programs) for an application area, and by constr ..."
Abstract

Cited by 20 (3 self)
 Add to MetaCart
The powerful abstraction mechanisms of functional programming languages provide the means to develop domainspecific programming languages within the language itself. Typically, this is realised by designing a set of combinators (higherorder reusable programs) for an application area, and by constructing individual applications by combining and coordinating individual combinators. This paper is concerned with a successful example of such an embedded programming language, namely Fudgets, a library of combinators for building graphical user interfaces in the lazy functional language Haskell. The Fudget library has been used to build a number of substantial applications, including a web browser and a proof editor interface to a proof checker for constructive type theory. This paper develops a semantic theory for the nondeterministic stream processors that are at the heart of the Fudget concept. The interaction of two features of stream processors makes the development of such a semantic theory problematic: (i) the sharing of computation provided by the lazy evaluation mechanism of the underlying host language, and (ii) the addition of nondeterministic choice needed to handle the natural concurrency that reactive applications entail We demonstrate that this combination of features in a higherorder functional language can be tamed to provide a tractable semantic theory and induction principles suitable for reasoning about contextual equivalence of Fudgets.
A simple rewrite notion for calltime choice semantics
 In Proc. Principles and Practice of Declarative Programming, ACM Press
, 2007
"... Nonconfluent and nonterminating rewrite systems are interesting from the point of view of programming. In particular, existing functional logic languages use such kind of rewrite systems to define possibly nonstrict nondeterministic functions. The semantics adopted for nondeterminism is callti ..."
Abstract

Cited by 15 (4 self)
 Add to MetaCart
Nonconfluent and nonterminating rewrite systems are interesting from the point of view of programming. In particular, existing functional logic languages use such kind of rewrite systems to define possibly nonstrict nondeterministic functions. The semantics adopted for nondeterminism is calltime choice, whose combination with nonstrictness is not a trivial issue that has been addressed from a semantic point of view in the Constructorbased Rewriting Logic (CRWL) framework. We investigate here how to express calltime choice and nonstrict semantics from a point of view closer to classical rewriting. The proposed notion of rewriting uses an explicit representation for sharing with letconstructions and is proved to be equivalent to the CRWL approach. Moreover, we relate this letrewriting relation (and hence CRWL) with ordinary rewriting, providing in particular soundness and completeness of letrewriting with respect to rewriting for a class of programs which are confluent in a certain semantic sense.
A callbyneed lambdacalculus with locally bottomavoiding choice: Context lemma and correctness of transformations
 MATHEMATICAL STRUCTURES IN COMPUTER SCIENCE
, 2008
"... We present a higherorder callbyneed lambda calculus enriched with constructors, caseexpressions, recursive letrecexpressions, a seqoperator for sequential evaluation and a nondeterministic operator amb that is locally bottomavoiding. We use a smallstep operational semantics in form of a sin ..."
Abstract

Cited by 15 (9 self)
 Add to MetaCart
We present a higherorder callbyneed lambda calculus enriched with constructors, caseexpressions, recursive letrecexpressions, a seqoperator for sequential evaluation and a nondeterministic operator amb that is locally bottomavoiding. We use a smallstep operational semantics in form of a singlestep rewriting system that defines a (nondeterministic) normal order reduction. This strategy can be made fair by adding resources for bookkeeping. As equational theory we use contextual equivalence, i.e. terms are equal if plugged into any program context their termination behaviour is the same, where we use a combination of may as well as mustconvergence, which is appropriate for nondeterministic computations. We show that we can drop the fairness condition for equational reasoning, since the valid equations w.r.t. normal order reduction are the same as for fair normal order reduction. We evolve different proof tools for proving correctness of program transformations, in particular, a context lemma for may as well as mustconvergence is proved, which restricts the number of contexts that need to be examined for proving contextual equivalence. In combination with socalled complete sets of commuting and forking diagrams we show that
all the deterministic reduction rules and also some additional transformations preserve contextual equivalence.We also prove a standardisation theorem for fair normal order reduction. The structure of the ordering <= c is also analysed: Ω is not a least element, and <=c already implies contextual equivalence w.r.t. mayconvergence.
A nondeterministic callbyneed lambda calculus
 INTERNATIONAL CONFERENCE ON FUNCTIONAL PROGRAMMING
, 1998
"... In this paper we present a nondeterministic callbyneed (untyped) lambda calculus nd with a constant choice and a letsyntax that models sharing. Our main result is that nd has the nice operational properties of the standard lambda calculus: confluence on sets of expressions, and normal order redu ..."
Abstract

Cited by 14 (7 self)
 Add to MetaCart
In this paper we present a nondeterministic callbyneed (untyped) lambda calculus nd with a constant choice and a letsyntax that models sharing. Our main result is that nd has the nice operational properties of the standard lambda calculus: confluence on sets of expressions, and normal order reduction is sufficient to reach head normal form. Using a strong contextual equivalence we show correctness of several program transformations. In particular of lambdalifting using deterministic maximal free expressions. These results show that nd is a new and also natural combination of nondeterminism and lambdacalculus, which has a lot of opportunities for parallel evaluation. An intended application of nd is as a foundation for compiling lazy functional programming languages with I/O based on direct calls. The set of correct program transformations can be rigorously distinguished from noncorrect ones. All program transformations are permitted with the slight exception that for transformations like common subexpression elimination and lambdalifting with maximal free expressions the involved subexpressions have to be deterministic ones.
Translating Specifications in VDMSL to PVS
 Theorem Proving in Higher Order Logics: 9th International Conference, TPHOLs '96, volume 1125 of Lecture Notes in Computer Science
, 1996
"... . This paper presents a method for translating a subset of VDMSL to higher order logic, more specifically the PVS specification language. This method has been used in an experiment where we have taken three existing, relatively large specifications written in VDMSL, handtranslated these to PVS an ..."
Abstract

Cited by 13 (2 self)
 Add to MetaCart
. This paper presents a method for translating a subset of VDMSL to higher order logic, more specifically the PVS specification language. This method has been used in an experiment where we have taken three existing, relatively large specifications written in VDMSL, handtranslated these to PVS and then tried to type check the results. This is not as simple as it may sound since the specifications make extensive use of subtypes, via type invariants and pre and postconditions, and therefore type checking necessarily involves some theorem proving. In trying to prove some of these type checking conditions, a worrying number of errors were identified in the specifications. 1 Introduction In a research project entitled "Towards industrially applicable proof support for VDMSL", we aim at developing tool support for proving theorems about specifications written in the VDM Specification Language (VDMSL) [6]. We would like to base our work on available theorem proving technology. The goal...
Nondeterministic Expressions and Predicate Transformers
 Information Processing Letters
, 1997
"... . Nondeterminacy is important in the formal specification and formal derivation of programs, but nondeterminacy within expressions is theoretically problematical. The refinement calculus sidesteps the problem by admitting nondeterminacy only at the level of statements, leading to a style of prog ..."
Abstract

Cited by 10 (1 self)
 Add to MetaCart
. Nondeterminacy is important in the formal specification and formal derivation of programs, but nondeterminacy within expressions is theoretically problematical. The refinement calculus sidesteps the problem by admitting nondeterminacy only at the level of statements, leading to a style of programming that favours statements and procedures over expressions and functions. But expressions are easier to manipulate than statements, and the poverty of the expression notation has made the formal derivation of imperative programs tedious. Here we introduce nondeterministic expressions into the refinement calculus by constructing a weakest precondition semantics for imperative specifications and programs that holds good even when expressions may be nondeterministic. Keywords nondeterministic expressions; weakest preconditions; refinement calculus 1 Introduction Consider the little problem of making a program to compute the sign ('+' or '') of an integer n, not caring whether '+' o...
Adequacy of compositional translations for observational semantics
 INTERNATIONAL CONFERENCE ON THEORETICAL COMPUTER SCIENCE
, 2008
"... We investigate methods and tools for analyzing translations between programming languages with respect to observational semantics. The behavior of programs is observed in terms of may and mustconvergence in arbitrary contexts, and adequacy of translations, i.e., the reflection of program equivalenc ..."
Abstract

Cited by 10 (7 self)
 Add to MetaCart
We investigate methods and tools for analyzing translations between programming languages with respect to observational semantics. The behavior of programs is observed in terms of may and mustconvergence in arbitrary contexts, and adequacy of translations, i.e., the reflection of program equivalence, is taken to be the fundamental correctness condition. For compositional translations we propose a notion of convergence equivalence as a means for proving adequacy. This technique avoids explicit reasoning about contexts, and is able to deal with the subtle role of typing in implementations of language extensions.
Logical Specifications for Functional Programs
, 1993
"... We present a formal method of functional program development based on stepbystep transformation. In their most abstract form, specifications are essentially predicates that relate the result of the specified program to the free variables of that program. In their most concrete form, specifications ..."
Abstract

Cited by 9 (3 self)
 Add to MetaCart
We present a formal method of functional program development based on stepbystep transformation. In their most abstract form, specifications are essentially predicates that relate the result of the specified program to the free variables of that program. In their most concrete form, specifications are simply programs in a functional programming language. Development from abstract specifications to programs is calculational. Using logic in the specification language has many advantages. Importantly it allows nondeterministic specifications to be given, and thus does not force overspecification.