<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Semantics</title>
 <link>http://lambda-the-ultimate.org/taxonomy/term/29/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>Revisiting Coroutines</title>
 <link>http://lambda-the-ultimate.org/node/2868</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.58.4017&quot;&gt;Revisiting Coroutines&lt;/a&gt;, by Ana Lucia de Moura and Roberto Ierusalimschy:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;This paper defends the revival of coroutines as a general control abstraction. After proposing a new classification of coroutines, we introduce the concept of full asymmetric coroutines and provide a precise definition for it through an operational semantics. We then demonstrate that full coroutines have an expressive power equivalent to one-shot continuations and oneshot partial continuations. We also show that full asymmetric coroutines and one-shot partial continuations have many similarities, and therefore present comparable benefits. Nevertheless, coroutines are easier implemented and understood, specially in the realm of procedural languages. Finally, we provide a collection of programming examples that illustrate the use of full asymmetric coroutines to support direct and concise implementations of several useful control behaviors, including cooperative multitasking.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Coroutines seem to get fairly short riff in the literature, and they have only been &lt;a href=&quot;http://lambda-the-ultimate.org/node/1439&quot;&gt;discussed on LTU&lt;/a&gt;, a &lt;a href=&quot;http://lambda-the-ultimate.org/node/438&quot;&gt;couple of times&lt;/a&gt;. Given coroutines have such a straightforward mapping to hardware, I hope they get more attention.&lt;/p&gt;
&lt;p &gt;Coroutines show up in many different places. For instance, the inter-process communication (IPC) facilities of microkernels, like &lt;a href=&quot;http://eros-os.org/&quot;&gt;EROS&lt;/a&gt;, are a faithful implementation of &lt;a href=&quot;http://eros-os.org/papers/sosp99-eros-preprint.ps&quot;&gt;asymmetric coroutines&lt;/a&gt;, with an important difference. Essentially, yield and resume must &lt;em &gt;both&lt;/em&gt; take an explicit coroutine argument naming the coroutine respectively yield to and resume. If the coroutine to yield to is left implicit, as it is in most treatments I&#039;ve seen, then coroutines become less composable since yield returns control to the innermost resume which, given abstract types, might be the wrong one.&lt;/p&gt;
&lt;p &gt;This problem is discussed in Section 5.6, &quot;Avoiding Interference Between Control Actions&quot;. The paper recommends tagging coroutines to match up resume/yield pairs, but the EROS IPC system provides a more direct encoding via a &quot;resume&quot; capability, which is a single-use coroutine used to return control directly to a client. Each subsequent invocation of the object synthesizes a new resume capability.&lt;/p&gt;
&lt;p &gt;Taking this to the extreme implies that yield and resume can be unified into a single &quot;invoke&quot; operation which accepts a coroutine argument to be used in a subsequent invoke operation. Indeed, these are &quot;symmetric coroutines&quot;. This paper suggests that symmetric coroutines are harder to understand due to the actors/CPS-like nature of the control flow.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Mon, 23 Jun 2008 14:29:39 -0400</pubDate>
</item>
<item>
 <title>The Disciplined Disciple Compiler</title>
 <link>http://lambda-the-ultimate.org/node/2727</link>
 <description>&lt;blockquote &gt;Disciple is an explicitly lazy dialect of Haskell which includes:
  &lt;ul &gt;
    &lt;li &gt;first class destructive update of arbitrary data.&lt;/li&gt;
    &lt;li &gt;computational effects without the need for state monads.&lt;/li&gt;
    &lt;li &gt;type directed field projections.&lt;/li&gt;
  &lt;/ul&gt;
All this and more through the magic of effect typing.&lt;/blockquote&gt;
&lt;p &gt;The &lt;a href=&#039;http://www.haskell.org/haskellwiki/DDC&#039;&gt;wiki page&lt;/a&gt; has more information, unfortunately there&#039;s &lt;a href=&#039;http://www.haskell.org/haskellwiki/DDC/FurtherReading&#039;&gt;no paper yet&lt;/a&gt; summarizing the ideas and results. Their &lt;a href=&#039;http://www.haskell.org/haskellwiki/DDC/EffectSystem&#039;&gt;effect system&lt;/a&gt; is quite interesting. Some of the ideas &lt;a href=&#039;http://lambda-the-ultimate.org/node/2706&#039;&gt;recently discussed here&lt;/a&gt; are implemented in Disciple.&lt;/p&gt;
&lt;p &gt;via &lt;a href=&#039;http://www.nabble.com/ANN:-The-Disciplined-Disciple-Compiler---alpha-1-td16172459.html&#039;&gt;Haskell Cafe&lt;/a&gt;&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Thu, 20 Mar 2008 10:19:29 -0400</pubDate>
</item>
<item>
 <title>Eriskay: a Programming Language Based on Game Semantics</title>
 <link>http://lambda-the-ultimate.org/node/2716</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://homepages.inf.ed.ac.uk/jrl/Research/eriskay-galop.pdf&quot;&gt;Eriskay: a Programming Language Based on Game Semantics&lt;/a&gt;. John Longley and Nicholas Wolverson. GaLoP 2008. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We report on an ongoing project to design a strongly typed, class-based object-oriented language based around ideas from game semantics. Part of our goal is to create a powerful modern programming language whose clean semantic basis renders it amenable to work in program verification; however, we argue that our semantically inspired approach also yields benefits of more immediate relevance to programmers, such as expressive new language constructs and novel type systems for enforcing security properties of the language. We describe a simple-minded game model with a rich mathematical structure, and explain how this model may be used to guide the design of our language. We then focus on three specific areas where our approach appears to offer something new: linear types and continuations; observational equivalence for class types; and static control of the use of higher-order store.  &lt;/p&gt;
&lt;p &gt;In a substantial appendix, we present the formal definition of a fragment of our language which embodies many of the innovative features of the full language.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;It&#039;s always interesting to see a new programming language strongly based on some mathematical formalism, because a language gives you a concrete example to match the abstract semantic definitions to, and game semantics is something that I&#039;ve been curious about for a while.&lt;/p&gt;
&lt;p &gt;One particularly interesting feature is that the core language has a restricted model of the heap, which controls the use of higher-order store in such a way that cycles are prohibited. This is enforced with a notion called &quot;argument safety&quot;, which essentially prohibits storing values of higher type into fields which come from &quot;outside&quot; the object. This is somewhat reminiscent of the ownership disciplines found in OO verification systems like Boogie, which enforce a tree structure on the ownership hierarchy. It would be very interesting to find out whether this resemblance is a coincidence or not. &lt;/p&gt;
&lt;p &gt;(Samson Abramsky has some &lt;a href=&quot;http://web.comlab.ox.ac.uk/oucl/work/samson.abramsky/gsem/gsnotes.pdf&quot;&gt;lecture notes on game semantics&lt;/a&gt; for the very curious.)&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Tue, 11 Mar 2008 16:04:49 -0400</pubDate>
</item>
<item>
 <title>Foundations for Structured Programming with GADTs</title>
 <link>http://lambda-the-ultimate.org/node/2692</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://crab.rutgers.edu/~pjohann/popl08.pdf&quot;&gt;Foundations for Structured Programming with GADTs&lt;/a&gt;, Patricia Johann and Neil Ghani. POPL 2008. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
GADTs are at the cutting edge of functional programming and become more widely used every day. Nevertheless, the semantic foundations underlying GADTs are not well understood. In this paper we solve this problem by showing that the standard theory of datatypes as carriers of initial algebras of functors can be extended from algebraic and nested data types to GADTs. We then use this observation to derive an initial algebra semantics for GADTs, thus ensuring that all of the accumulated knowledge about initial algebras can be brought to bear on them. Next, we use our initial algebra semantics for GADTs to derive expressive and principled tools -- analogous to the well-known and widely-used ones for algebraic and nested data types -- for reasoning about, programming with, and improving the performance of programs involving, GADTs; we christen such a collection of tools for a GADT an initial algebra package. Along the way, we give a constructive demonstration that every GADT can be reduced to one which uses only the equality GADT and existential quantification. Although other such reductions exist in the literature, ours is entirely local, is independent of any particular syntactic presentation of GADTs, and can be implemented in the host language, rather than existing solely as a metatheoretical artifact. The main technical ideas underlying our approach are (i) to modify the notion of a higher-order functor so that GADTs can be seen as carriers of initial algebras of higher-order functors, and (ii) to use left Kan extensions to trade arbitrary GADTs for simpler-but-equivalent ones for which initial algebra semantics can be derived.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I found this to be a really interesting paper, because the work had an opposite effect on my opinions from what I expected. Usually, when I see a paper give a really clean semantics to an idea, I end up convinced that this is actually a good idea. However, Johann and Ghani gave a really elegant treatment of GADTs, which had the effect of making me think that perhaps Haskell-style GADTs should &lt;em &gt;not&lt;/em&gt; be added as is to new programming languages! &lt;/p&gt;
&lt;p &gt;This is because of the way they give semantics to GADTs as functors &lt;code &gt;|C| -&amp;gt; C&lt;/code&gt;, where &lt;code &gt;C&lt;/code&gt; is the usual semantic category (eg, CPPO) and &lt;code &gt;|C|&lt;/code&gt; is the discrete category formed from &lt;code &gt;C&lt;/code&gt; that retains the objects and only the identity morphisms. If I understand rightly, this illustrates that the indices in a GADT are only being used as index terms, and their structure as types is going unused. So it&#039;s really kind of a pun, arising from the accident that Haskell has &lt;code &gt;*&lt;/code&gt; as its only base kind. This makes me think that future languages should include indices, but that these index domains should not coincide with kind type. That is, users should be able to define new kinds distinct from &lt;code &gt;*&lt;/code&gt;, and use those as indexes to types, and these are the datatypes which should get a semantics in the style of this paper. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Sun, 24 Feb 2008 17:22:45 -0500</pubDate>
</item>
<item>
 <title>When Is A Functional Program Not A Functional Program?</title>
 <link>http://lambda-the-ultimate.org/node/2680</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://citeseer.ist.psu.edu/longley99when.html&quot;&gt;When Is A Functional Program Not A Functional Program?&lt;/a&gt;, John Longley. ICFP 1999.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
In an impure functional language, there are programs whose behavior is completely functional (in that they behave extensionally on inputs) but the functions they compute cannot be written in the purely functional fragment of the language. That is, the class of programs with functional behavior is more expressive than the usual class of pure functional programs. In this paper we introduce this extended class of &quot;functional&quot; programs by means of examples in Standard ML, and explore what they might have to offer to programmers and language implementors. &lt;/p&gt;
&lt;p &gt;After reviewing some theoretical background, we present some examples of functions of the above kind, and discuss how they may be implemented. We then consider two possible programming applications for these functions: the implementation of a search algorithm, and an algorithm for exact real-number integration. We discuss the advantages and limitations of this style of programming relative to other approaches. We also consider the increased scope for compiler optimizations that these functions would offer.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I like this paper because it shows how some of the most abstract bits of formal logic (realizability models of higher order logic) suggest actual programs you can write. &lt;/p&gt;
&lt;p &gt;As a barely-related aside, even a brief look into this realizability stuff also taught me a good deal of humility -- for example, it seems that at higher types, what you can represent mathematically depends on the specific notion of computation you&#039;re using. So the mathematical consequences of the Church-Turing thesis are rather more subtle than we might initially expect. (Andrej Bauer discusses a related point in more detail in &lt;a href=&quot;http://math.andrej.com/2006/03/27/sometimes-all-functions-are-continuous/#more-36&quot;&gt;this blog post&lt;/a&gt;.)&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Tue, 19 Feb 2008 15:54:29 -0500</pubDate>
</item>
<item>
 <title>The YNot Project</title>
 <link>http://lambda-the-ultimate.org/node/2638</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.eecs.harvard.edu/~greg/ynot/&quot;&gt;The YNot Project&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
The goal of the Ynot project is to make programming with dependent types practical for a modern programming language.  In particular, we are extending the Coq proof assistant to make it possible to write higher-order, imperative and concurrent programs (in the style of Haskell) through a shallow embedding of Hoare Type Theory (HTT).  HTT provides a clean separation between pure and effectful computations, makes it possible to formally specify and reason about effects, and is fully compositional.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This was actually commented on &lt;a href=&quot;http://lambda-the-ultimate.org/node/2551#comment-38515&quot;&gt;here&lt;/a&gt;, by Greg Morrisett himself. Conceptually, this seems like it&#039;s related to Adam Chlipala&#039;s &lt;a href=&quot;http://lambda-the-ultimate.org/node/2146&quot;&gt;A Certified Type-Preserving Compiler from Lambda Calculus to Assembly Language&lt;/a&gt;. See, in particular, slides 23-24 of &lt;a href=&quot;http://adam.chlipala.net/papers/CtpcPLDI07/CtpcINRIA.pdf&quot;&gt;this presentation&lt;/a&gt; (PDF). More generally, computation and reflection seem to be gaining recognition as important features for the practical use of such powerful tools as Coq; see also &lt;a href=&quot;http://research.microsoft.com/research/downloads/Details/6658d5cc-9965-4e6f-9fe1-b3d94e6b8346/Details.aspx&quot;&gt;SSREFLECT tactics for Coq&lt;/a&gt; and their accompanying paper &lt;a href=&quot;http://www.lix.polytechnique.fr/~assia/Publi/ssrdoc.pdf&quot;&gt;A Small Scale Reflection Extension for the Coq system&lt;/a&gt; (PDF).&lt;/p&gt;
&lt;p &gt;It&#039;s also interesting to observe that the work appears to depend on the &quot;Program&quot; keyword in the forthcoming Coq 8.2, the work behind which is known as &quot;Russell,&quot; as referred to in &lt;a href=&quot;http://lambda-the-ultimate.org/node/2626&quot;&gt;this thread&lt;/a&gt;. Russell&#039;s main page in the meantime is &lt;a href=&quot;http://www.lri.fr/~sozeau/research/russell.fr.html&quot;&gt;here&lt;/a&gt;. Again, the point is to simplify programming with dependent types in Coq.&lt;/p&gt;
&lt;p &gt;&lt;b &gt;Update:&lt;/b&gt; Some preliminary code is available from the project page.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Mon, 28 Jan 2008 21:14:52 -0500</pubDate>
</item>
<item>
 <title>Call-by-value Termination in the Untyped Lambda-calculus</title>
 <link>http://lambda-the-ultimate.org/node/2598</link>
 <description>&lt;p &gt;&lt;a href=&#039;http://arxiv.org/abs/0801.0882&#039;&gt;From Arxiv:&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;A fully-automated algorithm is developed able to show that evaluation of a given untyped lambda-expression will terminate under CBV (call-by-value). The ``size-change principle&#039;&#039; from first-order programs is extended to arbitrary untyped lambda-expressions in two steps. The first step suffices to show CBV termination of a single, stand-alone lambda-expression. The second suffices to show CBV termination of any member of a regular set of lambda-expressions, defined by a tree grammar. (A simple example is a minimum function, when applied to arbitrary Church numerals.) The algorithm is sound and proven so in this paper. The Halting Problem&#039;s undecidability implies that any sound algorithm is necessarily incomplete: some lambda-expressions may in fact terminate under CBV evaluation, but not be recognised as terminating.&lt;br &gt;
The intensional power of the termination algorithm is reasonably high. It certifies as terminating many interesting and useful general recursive algorithms including programs with mutual recursion and parameter exchanges, and Colson&#039;s ``minimum&#039;&#039; algorithm. Further, our type-free approach allows use of the Y combinator, and so can identify as terminating a substantial subset of PCF.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;To renew the discussion on &lt;a href=&#039;http://lambda-the-ultimate.org/node/2003&#039;&gt;Total Functional Programming&lt;/a&gt;, this paper is an alternative to &lt;a href=&#039;http://lambda-the-ultimate.org/node/2030&#039;&gt;Termination Checking with Types&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Tue, 08 Jan 2008 00:29:25 -0500</pubDate>
</item>
<item>
 <title>Theorem proving support in programming language semantics</title>
 <link>http://lambda-the-ultimate.org/node/2582</link>
 <description>&lt;blockquote &gt;&lt;p &gt;
We describe several views of the semantics of a simple programming language as formal documents in the calculus of inductive constructions that can be verified by the Coq proof system. Covered aspects are natural semantics, denotational semantics, axiomatic semantics, and abstract interpretation. Descriptions as recursive functions are also provided whenever suitable, thus yielding a a verification condition generator and a static analyser that can be run inside the theorem prover for use in reflective proofs. Extraction of an interpreter from the denotational semantics is also described. All different aspects are formally proved sound with respect to the natural semantics specification.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;More work on mechanized metatheory with an eye towards naturalness of representation and automation. This seems to me to relate to Adam Chlipala&#039;s work on &lt;a href=&quot;http://lambda-the-ultimate.org/node/2146&quot;&gt;A Certified Type-Preserving Compiler from Lambda Calculus to Assembly Language&lt;/a&gt;, which relies on denotational semantics and proof by reflection, in crucial ways. More generally, it seems to reinforce an important trend in using type-theory-based theorem provers to tackle programming language design from the semantic point of view (see also &lt;a href=&quot;http://lambda-the-ultimate.org/node/1760&quot;&gt;A Very Modal Model of a Modern, Major, General Type System&lt;/a&gt; and &lt;a href=&quot;http://lambda-the-ultimate.org/node/2171&quot;&gt;Verifying Semantic Type Soundness of a Simple Compiler&lt;/a&gt;). I find the trend exciting, but of course I also wonder how far we can practically go with it today, given that the overwhelming majority of the literature, including our beloved &lt;a href=&quot;http://lambda-the-ultimate.org/node/492&quot;&gt;Types and Programming Languages&lt;/a&gt;, is based on &lt;a href=&quot;http://lambda-the-ultimate.org/node/1883&quot;&gt;A Syntactic Approach to Type Soundness&lt;/a&gt;. Even the upcoming &lt;a href=&quot;http://lambda-the-ultimate.org/node/2564&quot;&gt;How to write your next POPL paper in Coq&lt;/a&gt; at POPL &#039;08 centers on the syntactic approach.&lt;/p&gt;
&lt;p &gt;Is the syntactic approach barking up the wrong tree, in the long term? The semantic approach? Both? Neither?&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Thu, 27 Dec 2007 17:21:42 -0500</pubDate>
</item>
<item>
 <title>Computation Orchestration: A Basis for Wide-Area Computing</title>
 <link>http://lambda-the-ultimate.org/node/2569</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.utexas.edu/users/wcook/papers/OrcJSSM05/OrcJSSM.pdf&quot;&gt;Computation Orchestration: A Basis for Wide-Area Computing&lt;/a&gt;, Jayadev Misra and William Cook. JSSM 2006. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;The widespread deployment of networked applications and adoption of the internet has fostered an environment in which many distributed services are available. There is great demand to automate business processe and workflows among organizations and individuals. Solutions to such problems require &lt;em &gt;orchestration&lt;/em&gt; of concurrent and distributed services in the face of arbitrary delays and failures of components and communication.&lt;/p&gt;
&lt;p &gt;We propose a novel approach, called Orc for orchestration, that supports a structured model of concurrent and distributed programming. This model assumes that basic services, like sequential computation and data manipulation, are implemented by primitive &lt;em &gt;sites&lt;/em&gt;. Orc provides constructs to orchestrate the concurrent invocation of sites to achieve a goal -- while managing time-outs, priorities, and failure of sites or communication.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The idea of orchestration languages is one of the good ideas to come out of the web services world. Orc is an elegant little process-calculus-inspired programming language that illustrates and embodies the key ideas, and I&#039;d recommend studying it to anyone who has even a passing inclination to design languages or libraries for &quot;mashup&quot; style programming. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/16">Parallel/Distributed</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Mon, 10 Dec 2007 18:17:37 -0500</pubDate>
</item>
<item>
 <title>OCaml Light: A Formal Semantics For a Substantial Subset of the Objective Caml Language</title>
 <link>http://lambda-the-ultimate.org/node/2544</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cl.cam.ac.uk/~so294/ocaml/&quot;&gt;OCaml Light: a formal semantics for a substantial subset of the Objective Caml language.&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
OCaml light is a formal semantics for a substantial subset of the Objective Caml language. It is written in Ott, and it comprises a small-step operational semantics and a syntactic, non-algorithmic type system. A type soundness theorem has been proved and mechanized using the HOL-4 proof assistant, thereby ensuring that the proof is free from errors. To ensure that the operational semantics accurately models Objective Caml, an executable version of the semantics has been created (and proved equivalent in HOL to the original, relational version) and tested on a number of small test cases.&lt;/p&gt;
&lt;p &gt;Note that while we have tried to make the semantics accurate, we are not part of the OCaml development team - this is in no sense a normative specification of the implemented language.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;From a team including Peter Sewell (&lt;a href=&quot;http://lambda-the-ultimate.org/node/163&quot;&gt;Acute&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/1460&quot;&gt;HashCaml&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/2002&quot;&gt;Ott&lt;/a&gt;).&lt;/p&gt;
&lt;p &gt;I continue to believe that things are heating up nicely in mechanized metatheory, which, in the multicore/multiprocessor world in which we now live, is extremely good news.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Mon, 26 Nov 2007 13:33:45 -0500</pubDate>
</item>
<item>
 <title>PLT Redex operational semantics for Scheme</title>
 <link>http://lambda-the-ultimate.org/node/2534</link>
 <description>&lt;small&gt;(via the TYPES Forum)&lt;/small&gt;&lt;P&gt;
R6RS includes an operational semantics for a large portion of the language including unspecified order of evaluation, continuations and dynamic-wind, multiple values, quote, exceptions, eqv, letrec, etc. (the only major, missing features are macros and the numeric tower). The semantics are Felleisen/Hieb-style reduction semantics
and are implemented in &lt;a href=&quot;http://lambda-the-ultimate.org/node/159&quot;&gt;PLT Redex&lt;/a&gt;.&lt;p&gt;
A draft JFP paper describing operational semantics for R5RS and the reduction systems themselves are both available &lt;a href=&quot;http://people.cs.uchicago.edu/~robby/an-operational-semantics-for-scheme/&quot;&gt;online&lt;/a&gt; courtesy of Jacob Matthews and Robert Findler. </description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Tue, 13 Nov 2007 22:31:59 -0500</pubDate>
</item>
<item>
 <title>A functional correspondence between evaluators and abstract machines</title>
 <link>http://lambda-the-ultimate.org/node/2423</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.brics.dk/RS/03/13/BRICS-RS-03-13.pdf&quot;&gt;A functional correspondence between evaluators and abstract machines&lt;/a&gt; by Mads Sig Ager, Dariusz Biernacki, Olivier Danvy, and Jan Midtgaard, 2003.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We bridge the gap between functional evaluators and abstract machines for the lambda-calculus, using closure conversion, transformation into continuation-passing style, and defunctionalization of continuations.&lt;br &gt;
We illustrate this bridge by deriving Krivine&#039;s abstract machine from an ordinary call-by-name evaluator and by deriving an ordinary call-by-value evaluator from Felleisen et al.&#039;s CEK machine. The first derivation is strikingly simpler than what can be found in the literature. The second one is new. Together, they show that Krivine&#039;s abstract machine and the CEK machine correspond to the call-by-name and call-by-value facets of an ordinary evaluator for the lambda-calculus.&lt;br &gt;
We then reveal the denotational content of Hannan and Miller&#039;s CLS machine and of Landin&#039;s SECD machine. We formally compare the corresponding evaluators and we illustrate some relative degrees of freedom in the design spaces of evaluators and of abstract machines for the lambda-calculus with computational effects.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I was surprized not to find this paper featured in a story on LtU, as it looks very important both from implementation and understanding points of view.&lt;br &gt;
See also more recent paper by Dariusz Biernacki and Olivier Danvy: &lt;a href=&quot;http://citeseer.ist.psu.edu/732596.html&quot;&gt;From Interpreter to Logic Engine by Defunctionalization&lt;/a&gt;, which applies similar ideas in context of Prolog-like language.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Sat, 25 Aug 2007 11:26:04 -0400</pubDate>
</item>
<item>
 <title>Theory and Practice of Constraint Handling Rules</title>
 <link>http://lambda-the-ultimate.org/node/2420</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://citeseer.ist.psu.edu/216100.html&quot;&gt;Theory and Practice of Constraint Handling Rules&lt;/a&gt;, Thom Fruewirth, Journal of Logic Programming, 1994. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Constraint Handling Rules (CHR) are our proposal to allow more flexibility and application-oriented customization of constraint systems. CHR are a declarative language extension especially designed for writing user-defined constraints. CHR are essentially a committed-choice language consisting of multi-headed guarded rules that rewrite constraints into simpler ones until they are solved. &lt;/p&gt;
&lt;p &gt;In this broad survey we cover all aspects of CHR as they currently present themselves. Going from theory to practice, we will define the syntax and semantics of CHR, introduce an important decidable property, confluence, of CHR programs and define a tight integration of CHR with constraint logic programming languages. This survey then describes implementations of the language before we review several constraint solvers -- both traditional and non-standard ones -- written in the CHR language. Finally we introduce two innovative applications that benefited from being written in CHR.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;In the last post, we had some requests for constraint programming, so here you go. Constraint solving programs are often essentially stateful algorithms, and I see CHR as a particularly nice way of handling all that state in a declarative way. (They have a very pretty semantics as proof search in linear logic, too.)&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/13">Logic/Declarative</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Sat, 25 Aug 2007 05:04:42 -0400</pubDate>
</item>
<item>
 <title>Analyzing the Environment Structure ofHigher-Order Languages using Frame Strings</title>
 <link>http://lambda-the-ultimate.org/node/2404</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://matt.might.net/papers/might2007dcfa.pdf&quot;&gt;Analyzing the Environment Structure of Higher-Order Languages using Frame Strings&lt;/a&gt;, Matthew Might and Olin Shivers. 2007. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Reasoning about program behaviour in programming languages based on the lambda-calculus requires reasoning in a unified way about control, data and environment structure. Previous analysis work has done an inadequate job on the environment component of this task. We develop a new analytic framework, Delta-CFA, which is based on a new abstraction: frame strings, an enriched variant of procedure strings that can be used to model both control flow and environment allocation. This abstraction enables new environment-sensitive analyses and transformations that have not been previously attainable. We state the critical theorems needed to establish correctness of the entire technology suite, with their proofs.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Even if you&#039;re not interested in flow analysis of functional languages, the preface to this paper is very enjoyable reading. (If you are interested in flow analysis, the whole thing is enjoyable reading. I want a couple of weeks to go through this paper in detail.)  &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Thu, 16 Aug 2007 12:23:15 -0400</pubDate>
</item>
<item>
 <title>Theorem proving support in programming language semantics</title>
 <link>http://lambda-the-ultimate.org/node/2338</link>
 <description>&lt;p &gt;Yves Bertot, one of the coauthors of &lt;a href=&quot;http://www.labri.fr/perso/casteran/CoqArt/index.html&quot;&gt;the Coq&#039;Art book&lt;/a&gt;, has made available a tech report on &lt;a href=&quot;http://arxiv.org/abs/0707.0926&quot;&gt;Theorem proving support in programming language semantics&lt;/a&gt;, which describes how Coq can be used to support an exhasutive &quot;views&quot; approach to program semantics, using a toy imperative language from Glyn Winskel&#039;s book, &lt;i &gt;The Formal Semantics of Programming Languages&lt;/i&gt;, and specifying a family of kinds of semantics on it, following Winskel&#039;s treatment.
&lt;p &gt;
Bertot follows the work of Tobias Nipkow, in &lt;a href=&quot;http://www4.informatik.tu-muenchen.de/~nipkow/pubs/fac98.html&quot;&gt;Winskel is (almost) Right: Towards a Mechanized Semantics Textbook&lt;/a&gt; using Isabelle, but he shows how Coq&#039;s support for reflection allows this treatment to be carried out in a lean, condensed manner.  The 23 page paper covers Plotkin-style SOS semantics, Kahn&#039;s natural semantics, Dijkstra&#039;s weakest precondition semantics, a simple CPO denotational semantics that I assume is due to Winskel &amp;amp; finally uses the  denotational model as a basis for abstract interpretation.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Mon, 09 Jul 2007 11:22:13 -0400</pubDate>
</item>
</channel>
</rss>
