Results 1 
9 of
9
Substructural Operational Semantics as Ordered Logic Programming
"... We describe a substructural logic with ordered, linear, and persistent propositions and then endow a fragment with a committed choice forwardchaining operational interpretation. Exploiting higherorder terms in this metalanguage, we specify the operational semantics of a number of object language f ..."
Abstract

Cited by 12 (8 self)
 Add to MetaCart
We describe a substructural logic with ordered, linear, and persistent propositions and then endow a fragment with a committed choice forwardchaining operational interpretation. Exploiting higherorder terms in this metalanguage, we specify the operational semantics of a number of object language features, such as callbyvalue, callbyname, callbyneed, mutable store, parallelism, communication, exceptions and continuations. The specifications exhibit a high degree of uniformity and modularity that allows us to analyze the structural properties required for each feature in isolation. Our substructural framework thereby provides a new methodology for language specification that synthesizes structural operational semantics, abstract machines, and logical approaches. 1
Monads in Action
"... In functional programming, monadic characterizations of computational effects are normally understood denotationally: they describe how an effectful program can be systematically expanded or translated into a larger, pure program, which can then be evaluated according to an effectfree semantics. An ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
In functional programming, monadic characterizations of computational effects are normally understood denotationally: they describe how an effectful program can be systematically expanded or translated into a larger, pure program, which can then be evaluated according to an effectfree semantics. Any effectspecific operations expressible in the monad are also given purely functional definitions, but these definitions are only directly executable in the context of an already translated program. This approach thus takes an inherently Churchstyle view of effects: the nominal meaning of every effectful term in the program depends crucially on its type. We present here a complementary, operational view of monadic effects, in which an effect definition directly induces an imperative behavior of the new operations expressible in the monad. This behavior is formalized as additional operational rules for only the new constructs; it does not require any structural changes to the evaluation judgment. Specifically, we give a smallstep operational semantics of a prototypical functional language supporting programmerdefinable, layered effects, and show how this semantics naturally supports reasoning by familiar syntactic techniques, such as showing soundness of a Currystyle effecttype system by the progress+preservation method.
15819K: Logic Programming Lecture 25 Substructural Operational Semantics
, 2006
"... In this lecture we combine ideas from the previous two lectures, linear monadic logic programming and higherorder abstract syntax, to present a specification technique for programming languages we call substructural operational semantics. The main aim of this style of presentation is semantic modul ..."
Abstract
 Add to MetaCart
In this lecture we combine ideas from the previous two lectures, linear monadic logic programming and higherorder abstract syntax, to present a specification technique for programming languages we call substructural operational semantics. The main aim of this style of presentation is semantic modularity: we can add new language features without having to rewrite prior definitions for smaller language fragments. We determine that this is mostly the case, although structural properties of the specification such as weakening or contraction might change. 25.1 A BigStep Natural Semantics As a warmup exercise, and also to understand the lack of modularity in traditional specifications, we present the semantics for functional abstraction and application in a callbyvalue language. This is called natural semantics because of an analogy to natural deduction. The representation of terms employs higherorder abstract syntax, as sketched in the last lecture. Expressions e:: = x  lam(x.e)  app(e1,e2) In the expression lam(x.e) the variable x is bound with scope e. The main judgment is e ↩ → v, where e and v are expressions. This is a bigstep semantics, so the judgment directly relates e to its final value v. lam(x.e) ↩ → lam(x.e) e1 ↩ → lam(x.e ′ 1) e2 ↩ → v2 e ′ 1 (v2/x) ↩ → v app(e1,e2) ↩ → v
Avoiding Spurious Causal Dependencies via Proof Irrelevance in a Concurrent Logical Framework
, 2007
"... The Concurrent Logic Framework (CLF) is a foundational type theory for encoding concurrent computations by representing resources with linearity and encapsulating the effects of concurrency in a monad. The definition of concurrent equality via commuting conversions identifies computations differing ..."
Abstract
 Add to MetaCart
The Concurrent Logic Framework (CLF) is a foundational type theory for encoding concurrent computations by representing resources with linearity and encapsulating the effects of concurrency in a monad. The definition of concurrent equality via commuting conversions identifies computations differing only in the order of execution of independent steps, capturing a form of true concurrency in a prooftheoretic way. However, some examples suffer from spurious dependencies whereby independent computations cannot be reordered because they use the same shared resource but are not causally linked, or computations are distinguished even though they only differ in the use of isomorphic objects. We address these limitations by incorporating a linear proof irrelevance modality and adopting a richer definition of equality that admits reordering computations modulo proof irrelevant terms. We present several encodings of stateful concurrent systems to demonstrate the usefulness of this extension.
Avoiding Causal Dependencies via Proof Irrelevance in a Concurrent Logical Framework
, 2006
"... The Concurrent Logic Framework (CLF) is a foundational type theory for encoding concurrent computations by representing resources with linearity and encapsulating the effects of concurrency in a monad. The definition of concurrent equality via commuting conversions identifies computations differing ..."
Abstract
 Add to MetaCart
The Concurrent Logic Framework (CLF) is a foundational type theory for encoding concurrent computations by representing resources with linearity and encapsulating the effects of concurrency in a monad. The definition of concurrent equality via commuting conversions identifies computations differing only in the order of execution of independent steps, capturing a form of true concurrency in a prooftheoretic way. However, some examples suffer from spurious dependencies whereby independent computations cannot be reordered because they use the same shared resource but are not causally linked, or computations are distinguished even though they only differ in the use of isomorphic objects. We address these limitations by incorporating a linear proof irrelevance modality and adopting a richer definition of equality that admits reordering computations modulo proof irrelevant terms. We present several encodings of concurrent systems to demonstrate the usefulness of this extension.
Lecture Notes on Substructural Operational Semantics 15816: Linear Logic
, 2012
"... In this lecture we view the operational semantics of a programming language as a stateful system with some transitions. This suggests we should be able to describe it in linear logic in a way that is analogous to the early examples used in this class, like blocks world. Since we use linear logic to ..."
Abstract
 Add to MetaCart
In this lecture we view the operational semantics of a programming language as a stateful system with some transitions. This suggests we should be able to describe it in linear logic in a way that is analogous to the early examples used in this class, like blocks world. Since we use linear logic to describe operational semantics, we could use the term linear operational semantics to describe this technique. It turns out that other substructural logics, like ordered logic [PS09] or affine logic are often more appropriate, so we refer to it more generally as substructural operational semantics [Pfe04] (SSOS). The particular semantics that we will describe is a transcription of the semantics via the translation to the sessiontyped πcalculus presented in the last lecture. 1 General Principles The general idea is that we describe the state of a (potentially nondeterministic) abstract machine by propositions in linear logic. These are of the following forms: Evaluation: eval(M, x) means that we would like to evaluate M and communicate the value along channel x. In the terminology of SSOS, x is called a destination. Return: retn(V, x) means that we return value V to destination x. Continuation: cont(x, F, w) means that we wait for a value on x to carry out F and pass the result to w. LECTURE NOTES FEBRUARY 27, 2012Substructural Operational Semantics L12.2 Some flexibility will be required to interpret these correctly in each case. The overall idea is that we model state transitions so that eval(M, x) − → ∗ retn(V, x) if and only if V is the value of M. Because of the frame property for linear contexts, we also get ∆, eval(M, x) − → ∗ ∆, retn(V, x) State transitions, the way we discussed them at the very beginning of the class, are most directly modeled in the focusing calculus, where ∆ − → ∗ ∆ ′ if
Decentralized Execution of Constraint Handling Rules for Ensembles ∗
, 2013
"... CHR is a declarative, concurrent and committed choice rulebased constraint programming language. In this paper, we adapt CHR to provide a decentralized execution model for parallel and distributed programs. Specifically, we consider an execution model consisting of an ensemble of computing entities ..."
Abstract
 Add to MetaCart
CHR is a declarative, concurrent and committed choice rulebased constraint programming language. In this paper, we adapt CHR to provide a decentralized execution model for parallel and distributed programs. Specifically, we consider an execution model consisting of an ensemble of computing entities, each with its own constraint store and each capable of communicating with its neighbors. We extend CHR into CHR e, in which rewrite rules are executed at one location and are allowed to access the constraint store of its immediate neighbors. We give an operational semantics for CHR e, denoted ω e 0, that defines incremental and asynchronous decentralized rewriting for the class of CHR e rules characterized by purely local matching CHR semantics. We then give a safe encoding of the more general 1neighbor restricted rules as 0neighbor
Recommended Citation
"... We describe a substructural logic with ordered, linear, and persistent propositions and then endow a fragment with a committed choice forwardchaining operational interpretation. Exploiting higherorder terms in this metalanguage, we specify the operational semantics of a number of object language f ..."
Abstract
 Add to MetaCart
We describe a substructural logic with ordered, linear, and persistent propositions and then endow a fragment with a committed choice forwardchaining operational interpretation. Exploiting higherorder terms in this metalanguage, we specify the operational semantics of a number of object language features, such as callbyvalue, callbyname, callbyneed, mutable store, parallelism, communication, exceptions and continuations. The specifications exhibit a high degree of uniformity and modularity that allows us to analyze the structural properties required for each feature in isolation. Our substructural framework thereby provides a new methodology for language specification that synthesizes structural operational semantics, abstract machines, and logical approaches. 1
Compiler Generation for Substructural Operational Semantics
, 2012
"... Semantic specifications of programming languages can be used to assist or automate compiler generation. Semanticsdriven compiler generation has already been studied for specification techniques such as denotational semantics, natural semantics, structural operational semantics and action semantics. ..."
Abstract
 Add to MetaCart
Semantic specifications of programming languages can be used to assist or automate compiler generation. Semanticsdriven compiler generation has already been studied for specification techniques such as denotational semantics, natural semantics, structural operational semantics and action semantics. Compilers generated from such specifications bring some of the performance benefits of traditional compilers to prototype specifications of programming languages while reducing or eliminating the logistical overhead of implementing a separate piece of software and proving its correctness. This dissertation describes techniques that can be used to synthesize a compiler and virtual machine from a Substructural Operational Semantics (SSOS). Whereas prior work relied on techniques such as partial evaluation and staged computation to derive compilers from interpreters, we use linear logical approximations for synthesis. Our methodology is illustrated using language features from C0, a safe subset of C used to teach imperative programming at Carnegie Mellon University. ivAcknowledgments I owe the successful completion of this dissertation to my advisor, Frank Pfenning.