Revised report on the algorithmic language scheme
ACM SIGPLAN Notices
Sacrificing simplicity for convenience: Where do you draw the line?
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Equality in lazy computation systems
Proceedings of the Fourth Annual Symposium on Logic in computer science
Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
Handbook of theoretical computer science (vol. B)
A semantics for ML concurrency primitives
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
New foundations for fixpoint computations: FIX-hyperdoctrines and the FIX-logic
Information and Computation - Special issue: Selections from 1990 IEEE symposium on logic in computer science
An operational semantics for I/O in a lazy functional language
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Full abstraction in the lazy lambda calculus
Information and Computation
A co-induction principle for recursively defined domains
Theoretical Computer Science
Functional programming and input/output
Functional programming and input/output
Computational adequacy of the FIX-logic
MFPS '92 Selected papers of the meeting on Mathematical foundations of programming semantics. Part II : lambda calculus and domain theory: lambda calculus and domain theory
From operational semantics to domain theory
Information and Computation
Communication and Concurrency
The Definition of Standard ML
From Operational to Denotational Semantics
Proceedings of the 7th International Conference on Mathematical Foundations of Programming Semantics
Computational Adequacy via "Mixed" Inductive Definitions
Proceedings of the 9th International Conference on Mathematical Foundations of Programming Semantics
Towards a Lambda-Calculus for Concurrent and Communicating Systems
TAPSOFT '89/CAAP '89 Proceedings of the International Joint Conference on Theory and Practice of Software Development, Volume 1: Advanced Seminar on Foundations of Innovative Software Development I and Colloquium on Trees in Algebra and Programming
A Fully Abstract Semantics for a Concurrent Functional Language with Monadic Types
LICS '95 Proceedings of the 10th Annual IEEE Symposium on Logic in Computer Science
LISP 1.5 Programmer's Manual
Mechanized Operational Semantics via (Co)Induction
TPHOLs '99 Proceedings of the 12th International Conference on Theorem Proving in Higher Order Logics
Hi-index | 0.00 |
We study the longstanding problem of semantics for input/output (I/O) expressed using side-effects. Our vehicle is a small higher-order imperative language, with operations for interactive character I/O and based on ML syntax. Unlike previous theories, we present both operational and denotational semantics for I/O effects. We use a novel labelled transition system that uniformly expresses both applicative and imperative computation. We make a standard definition of bisimilarity and prove bisimilarity is a congruence using Howe's method.Next, we define a metalanguage ℳ in which we may give a denotational semantics to 𝒪. ℳ generalises Crole and Pitts' FIX-logic by adding in a parameterised recursive datatype, which is used to model I/O. ℳ comes equipped both with an operational semantics and a domain-theoretic semantics in the category 𝒞𝒫𝒫𝒪 of cppos (bottom-pointed posets with joins of ω-chains) and Scott continuous functions. We use the 𝒞𝒫𝒫𝒪 semantics to prove that ℳ is computationally adequate for the operational semantics using formal approximation relations. The existence of such relations is based on recent work of Pitts (Pitts 1994b) for untyped languages, and uses the idea of minimal invariant objects due to Freyd.A monadic-style textual translation into ℳ induces a denotational semantics on 𝒪. Our final result validates the denotational semantics: if the denotations of two 𝒪 programs are equal, then the 𝒪 programs are in fact operationally equivalent.