DeepAI AI Chat
Log In Sign Up

The Functional Machine Calculus II: Semantics

by   Chris Barrett, et al.

The Functional Machine Calculus (FMC), recently introduced by the authors, is a generalization of the lambda-calculus which may faithfully encode the effects of higher-order mutable store, I/O and probabilistic/non-deterministic input. Significantly, it remains confluent and can be simply typed in the presence of these effects. In this paper, we explore the denotational semantics of the FMC. We have three main contributions: first, we argue that its syntax – in which both effects and lambda-calculus are realised using the same syntactic constructs – is semantically natural, corresponding closely to the structure of a Scott-style domain theoretic semantics. Second, we show that simple types confer strong normalization by extending Gandy's proof for the lambda-calculus, including a small simplification of the technique. Finally, we show that the typed FMC (without considering the specifics of encoded effects), modulo an appropriate equational theory, is a complete language for Cartesian closed categories.


page 1

page 2

page 3

page 4


On the Simply-Typed Functional Machine Calculus: Categorical Semantics and Strong Normalisation

The Functional Machine Calculus (FMC) was recently introduced as a gener...

Introducing a Calculus of Effects and Handlers for Natural Language Semantics

In compositional model-theoretic semantics, researchers assemble truth-c...

Semantics of a Relational λ-Calculus (Extended Version)

We extend the λ-calculus with constructs suitable for relational and fun...

The Functional Machine Calculus

This paper presents the Functional Machine Calculus (FMC) as a simple mo...

Recovering Purity with Comonads and Capabilities

In this paper, we take a pervasively effectful (in the style of ML) type...

Pragmatic Side Effects

In the quest to give a formal compositional semantics to natural languag...

Tracing sharing in an imperative pure calculus

We introduce a type and effect system, for an imperative object calculus...