<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Programming Languages Weblog</title>
 <link>http://lambda-the-ultimate.org</link>
 <description>Programming languages news, articles and discussion</description>
 <language>en</language>
<item>
 <title>Resolving and Exploiting the k-CFA Paradox</title>
 <link>http://lambda-the-ultimate.org/node/3814</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.ccs.neu.edu/home/dvanhorn/pubs/might-smaragdakis-vanhorn-preprint09.pdf&quot;&gt;Resolving and Exploiting the k-CFA Paradox&lt;/a&gt;, Matthew Might, Yannis Smaragdakis, and David Van Horn. To appear in PLDI 2010. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Low-level program analysis is a fundamental problem, taking the shape of &quot;flow analysis&quot; in functional languages and &quot;points-to&quot; analysis in imperative and object-oriented (OO) languages. Despite the similarities, the vocabulary and results in the two communities remain largely distinct, with limited cross-understanding. One of the few links is Shivers&#039;s k-CFA work, which has advanced the concept of &quot;context-sensitive analysis&quot; and is widely known in both communities. Recent results, however, indicate that the relationship between the different incarnations of the analysis is not understood. &lt;/p&gt;
&lt;p &gt;Van Horn and Mairson proved k-CFA for k ≥ 1 to be EXPTIME-complete, hence no polynomial algorithm exists. Yet there have been multiple polynomial formulations of context-sensitive points-to analyses in OO languages. Is functional k-CFA a profoundly different analysis from OO k-CFA? We resolve this paradox by showing that OO features conspire to make the exact same specification of k-CFA be polynomial-time: objects and closures are subtly different, in a way that interacts crucially with context-sensitivity. This leads to a significant practical result: by emulating the OO approximation, we derive a polynomial hierarchy of context-sensitive CFAs for functional programs, simultaneously achieving high precision and efficiency.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I learned that performance bounds on flow analysis were fascinating from &lt;a href=&quot;http://lambda-the-ultimate.org/node/2647&quot;&gt;earlier work by David van Horn and Harry Mairson&lt;/a&gt;, so it&#039;s good to see that this line of work is still being continued, and even better to see new algorithms come out of it. &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/19">Theory</category>
 <pubDate>Mon, 08 Feb 2010 12:24:16 -0500</pubDate>
</item>
<item>
 <title>Continuity Analysis of Programs</title>
 <link>http://lambda-the-ultimate.org/node/3809</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cse.psu.edu/~swarat/pubs/continuity.pdf&quot;&gt;Continuity Analysis of Programs&lt;/a&gt;, Swarat Chaudhuri, Sumit Galwani, and Roberto Lublinerman. POPL 2010. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We present an analysis to automatically determine if a program represents a continuous function, or equivalently, if infinitesimal changes to its inputs can only cause infinitesimal changes to its outputs. The analysis can be used to verify the robustness of programs whose inputs can have small amounts of error and uncertainty -- e.g., embedded controllers processing slightly unreliable sensor data, or handheld devices using slightly stale satellite data.&lt;/p&gt;
&lt;p &gt;Continuity is a fundamental notion in mathematics. However, it is difficult to apply continuity proofs from real analysis to functions that are coded as imperative programs, especially when they use diverse data types and features such as assignments, branches, and loops. We associate data types with metric spaces as opposed to just sets of values, and continuity of typed programs is phrased in terms of these spaces. Our analysis reduces questions about continuity to verification conditions that do not refer to infinitesimal changes and can be discharged using off-the-shelf SMT solvers. Challenges arise in proving continuity of programs with branches and loops, as a small perturbation in the value of a variable often leads to divergent control-flow that can lead to large changes in values of variables. Our proof rules identify appropriate “synchronization points” between executions and their perturbed counterparts, and establish that values of certain variables converge back to the original results in spite of temporary divergence.&lt;/p&gt;
&lt;p &gt;We prove our analysis sound with respect to the traditional epsilon-delta definition of continuity. We demonstrate the precision of our analysis by applying it to a range of classic algorithms, including algorithms for array sorting, shortest paths in graphs, minimum spanning trees, and combinatorial optimization. A prototype implementation based on the Z3 SMT-solver is also presented.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Another fun paper from POPL this year. I&#039;ve seen metric spaces used to solve domain equations before, but the idea of actually considering a metric on the outputs was a new one to me. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Thu, 04 Feb 2010 12:01:24 -0500</pubDate>
</item>
<item>
 <title>Monads in Action</title>
 <link>http://lambda-the-ultimate.org/node/3805</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.diku.dk/hjemmesider/ansatte/andrzej/papers/popl10-mia.pdf&quot;&gt;Monads in Action&lt;/a&gt;, Andrzej Filinski, POPL 2010. &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;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 effect-free semantics. Any effect-specific 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 Church-style view of effects: the nominal meaning of every effectful term in the program depends crucially on its type. &lt;/p&gt;
&lt;p &gt;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 small-step operational semantics of a prototypical functional language supporting programmer-definable, layered effects, and show how this semantics naturally supports reasoning by familiar syntactic techniques, such as showing soundness of a Curry-style effect-type system by the progress+preservation method.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The idea of monadic reflection was one I never felt I really understood properly until I read this paper, so now I&#039;ll have to go back and re-read some of his older papers on the subject. &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/21">Type Theory</category>
 <pubDate>Wed, 03 Feb 2010 08:17:23 -0500</pubDate>
</item>
<item>
 <title>HipHop: Facebook runs compiled PHP on its servers</title>
 <link>http://lambda-the-ultimate.org/node/3801</link>
 <description>&lt;p &gt;While PHP deservedly gets a terrible rep around programming language folks, this is still an interesting &lt;a href=&quot;http://developers.facebook.com/news.php?blog=1&amp;amp;story=358&quot;&gt;announcement&lt;/a&gt;: HipHop compiles PHP down to C++ and gets about a 2x speedup. HipHop will be released as open source, and is currently in production use, serving 90% of Facebook&#039;s traffic. It makes me wish Facebook used Python: a large-scale deployment like this would be a great boon to the PyPy project.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Tue, 02 Feb 2010 19:42:02 -0500</pubDate>
</item>
<item>
 <title>Delimited Control in OCaml, Abstractly and Concretely, System Description</title>
 <link>http://lambda-the-ultimate.org/node/3788</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://okmij.org/ftp/Computation/caml-shift.pdf&quot;&gt;Delimited Control in OCaml, Abstractly and Concretely, System Description&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We describe the first implementation of multi-prompt delimited control operators in OCaml that is direct in that it captures only the needed part of the control stack. The implementation is a library that requires no changes to the OCaml compiler or run-time, so it is perfectly compatible with existing OCaml source code and byte-code. The library has been in fruitful practical use for four years.&lt;/p&gt;
&lt;p &gt;We present the library as an implementation of an abstract machine derived by elaborating the definitional machine. The abstract view lets us distill a minimalistic API, scAPI, sufficient for implementing multi-prompt delimited control. We argue that a language system that supports exception and stack-overflow handling supports scAPI. Our library illustrates how to use scAPI to implement multi-prompt delimited control in a typed language. The approach is general and can be used to add multi-prompt delimited control to other existing language systems.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Oleg was kind enough to send me an e-mail letting me know of this paper&#039;s existence (it appears not yet to be linked from the &quot;Computation&quot; page under which it is stored) and to include me in the acknowledgements. Since the paper in its current form has been accepted for publication, he indicated that it can be made more widely available, so here it is. In typical Oleg fashion, it offers insights at both the theoretical and implementation levels.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/23">Cross language runtimes</category>
 <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, 25 Jan 2010 12:27:44 -0500</pubDate>
</item>
<item>
 <title>The Recruitment Theory of Language Origins</title>
 <link>http://lambda-the-ultimate.org/node/3787</link>
 <description>&lt;p &gt;Leo Meyerovich recently started a thread on LtU asking about &lt;a href=&quot;http://lambda-the-ultimate.org/node/3786&quot;&gt;Historical or sociological studies of programming language evolution?&lt;/a&gt;.  I&#039;ve been meaning to post a paper on this topic to LtU for awhile now, but simply cherrypicking for the opportune time to fit it into forum discussion.  With Leo&#039;s question at hand, I give you an interesting paper that models language evolution, by artificial intelligence researcher Luc Steels.  Steels has spent over 10 years researching this area, and his recent paper, &lt;a href=&quot;http://www.ecagents.org/imgs/steels_2007.pdf&quot;&gt;The Recruitment Theory of Language Origins&lt;/a&gt;, summarizes one of his models for dealing with language evolution:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;The recruitment theory of language origins argues that language users recruit and try out different strategies for solving the task of communication and retain those that maximise communicative success and cognitive economy. Each strategy requires specific cognitive neural mechanisms, which in themselves serve a wide range of purposes and therefore may have evolved or could be learned independently of language. The application of a strategy has an impact on the properties of the emergent language and this fixates the use of the strategy in the population. Although neurological evidence can be used to show that certain cognitive neural mechanisms are common to linguistic and non-linguistic tasks, this only shows that recruitment has happened, not why. To show the latter, we need models demonstrating that the recruitment of a particular strategy and hence the mechanisms to carry out this strategy lead to a better communication system. This paper gives concrete examples how such models can be built and shows the kinds of results that can be expected from them.
&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Mon, 25 Jan 2010 10:41:56 -0500</pubDate>
</item>
<item>
 <title>Scala Days at EPFL, Lausanne, Switzerland</title>
 <link>http://lambda-the-ultimate.org/node/3784</link>
 <description>&lt;p &gt;I owe Martin Odersky and his team at EPFL an apology: as you can see, I&#039;m posting this rather dramatically late, as the deadline for submission has already passed. Nevertheless, hopefully the notice of the event itself is still worthwhile.&lt;/p&gt;
&lt;p &gt;Sheepishly,&lt;br &gt;
Paul&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
The First Scala Workshop&lt;br &gt;
========================&lt;/p&gt;
&lt;p &gt;Call for Papers&lt;br &gt;
---------------&lt;/p&gt;
&lt;p &gt;Scala is a general purpose programming language designed to express&lt;br &gt;
common programming patterns in a concise, elegant, and type-safe&lt;br &gt;
way. It smoothly integrates features of object-oriented and&lt;br &gt;
functional languages.&lt;/p&gt;
&lt;p &gt;This workshop is a forum for researchers and practitioners to share&lt;br &gt;
new ideas and results of interest to the Scala community. The first&lt;br &gt;
workshop will be held at EPFL in Lausanne, Switzerland, on Thursday&lt;br &gt;
15 April 2010, co-located with Scala Days 2010 (15-16 April).&lt;/p&gt;
&lt;p &gt;We seek papers on topics related to Scala, including (but not&lt;br &gt;
limited to):&lt;/p&gt;
&lt;p &gt;1. Language design and implementation -- language extensions,&lt;br &gt;
optimization, and performance evaluation.&lt;/p&gt;
&lt;p &gt;2. Library design and implementation patterns for extending Scala --&lt;br &gt;
embedded domain-specific languages, combining language features,&lt;br &gt;
generic and meta-programming.&lt;/p&gt;
&lt;p &gt;3.Formal techniques for Scala-like programs -- formalizations of the&lt;br &gt;
language, type system, and semantics, formalizing proposed language&lt;br &gt;
extensions and variants, dependent object types, type and effect&lt;br &gt;
systems.&lt;/p&gt;
&lt;p &gt;4. Concurrent and distributed programming -- libraries, frameworks,&lt;br &gt;
language extensions, programming paradigms: (Actors, STM, ...),&lt;br &gt;
performance evaluation, experimental results.&lt;/p&gt;
&lt;p &gt;5. Safety and reliability -- pluggable type systems, contracts,&lt;br &gt;
static analysis and verification, runtime monitoring.&lt;/p&gt;
&lt;p &gt;6. Tools -- development environments, debuggers, refactoring&lt;br &gt;
tools, testing frameworks.&lt;/p&gt;
&lt;p &gt;7. Case studies, experience reports, and pearls&lt;/p&gt;
&lt;p &gt;Important Dates&lt;br &gt;
---------------&lt;/p&gt;
&lt;p &gt;Submission:             Friday, Jan 15, 2010 (24:00 in Apia, Samoa)&lt;br &gt;
Notification:           Monday, Feb 15, 2010&lt;br &gt;
Final revision:         Monday, Mar 15, 2010&lt;br &gt;
Workshop:               Thursday, Apr 15, 2010&lt;/p&gt;
&lt;p &gt;Submission Guidelines&lt;br &gt;
---------------------&lt;/p&gt;
&lt;p &gt;Submitted papers should describe new ideas, experimental results, or&lt;br &gt;
projects related to Scala. In order to encourage lively discussion,&lt;br &gt;
submitted papers may describe work in progress. All papers will be&lt;br &gt;
judged on a combination of correctness, significance, novelty,&lt;br &gt;
clarity, and interest to the community.&lt;/p&gt;
&lt;p &gt;Submissions must be in English and at most 12 pages total length in&lt;br &gt;
the standard ACM SIGPLAN two-column conference format (10pt).&lt;br &gt;
No formal proceedings will be published, but there will be a webpage&lt;br &gt;
linking to all accepted papers. The workshop also welcomes short papers.&lt;/p&gt;
&lt;p &gt;Submission instructions will be published at:&lt;br &gt;
http://www.scala-lang.org/days2010&lt;/p&gt;
&lt;p &gt;Program Committee&lt;br &gt;
-----------------&lt;/p&gt;
&lt;p &gt;Ian Clarke, Uprizer Labs&lt;br &gt;
William Cook, UT Austin&lt;br &gt;
Adriaan Moors, KU Leuven&lt;br &gt;
Martin Odersky, EPFL (chair)&lt;br &gt;
Kunle Olukotun, Stanford University&lt;br &gt;
David Pollak, Liftweb&lt;br &gt;
Lex Spoon, Google
&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <pubDate>Sun, 24 Jan 2010 14:23:08 -0500</pubDate>
</item>
<item>
 <title>Project Sikuli</title>
 <link>http://lambda-the-ultimate.org/node/3783</link>
 <description>&lt;p &gt;Picture or &lt;a href=&quot;http://web.mit.edu/newsoffice/2010/screen-shots-0120.html&quot;&gt;screenshot driven programming&lt;/a&gt; from the MIT.&lt;/p&gt;
&lt;p &gt;From the Sikuli &lt;a href=&quot;http://sikuli.csail.mit.edu/&quot;&gt;project page&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Sikuli is a visual technology to search and automate graphical user interfaces (GUI) using images (screenshots). The first release of Sikuli contains Sikuli Script, a visual scripting API for Jython, and Sikuli IDE, an integrated development environment for writing visual scripts with screenshots easily.&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/26">Python</category>
 <pubDate>Sun, 24 Jan 2010 00:31:57 -0500</pubDate>
</item>
<item>
 <title>Clojure 1.1 and Beyond</title>
 <link>http://lambda-the-ultimate.org/node/3781</link>
 <description>&lt;p &gt;Useful &lt;a href=&quot;http://www.fogus.me/static/preso/clj1.1+/&quot;&gt;presentation&lt;/a&gt;.&lt;br &gt;
The most intriguing part, of course, is the &lt;a href=&quot;http://blog.n01se.net/?p=41&quot;&gt;Clojure-in-Clojure&lt;/a&gt; bit.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/33">Clojure</category>
 <pubDate>Fri, 22 Jan 2010 00:58:51 -0500</pubDate>
</item>
<item>
 <title>The Theory and Calculus of Aliasing</title>
 <link>http://lambda-the-ultimate.org/node/3780</link>
 <description>&lt;p &gt;I have done some work recently on the theory of aliasing, which I believe provides the key to the frame problem and more generally to proving O-O programs (although these applications remain to be better explained and explored further).&lt;/p&gt;
&lt;p &gt;I was struck by the simplicity and generality of the laws uncovered in the process.&lt;/p&gt;
&lt;p &gt;A blog entry at &lt;a href=&quot;http://bertrandmeyer.com/&quot;&gt;bertrandmeyer.com&lt;/a&gt; presents the basics. It includes a link to the draft paper, and also to a downloadable version of the implementation (currently a Windows executable, the source will be released later), which makes it possible to test all the examples of the paper. &lt;/p&gt;
&lt;p &gt;-- Bertrand Meyer&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Wed, 20 Jan 2010 21:08:45 -0500</pubDate>
</item>
<item>
 <title>Verified Just-In-Time Compiler on x86</title>
 <link>http://lambda-the-ultimate.org/node/3768</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cl.cam.ac.uk/~mom22/jit/jit.pdf&quot;&gt;Verified Just-In-Time Compiler on x86&lt;/a&gt;&lt;br &gt;
&lt;i &gt;&lt;a href=&quot;http://www.cl.cam.ac.uk/~mom22/&quot;&gt;Magnus O. Myreen&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;This paper presents a method for creating formally correct just-in-time (JIT) compilers. The tractability of our approach is demonstrated through, what we believe is the first, verification of a JIT compiler with respect to a realistic semantics of self-modifying x86 machine code. Our semantics includes a model of the instruction cache. Two versions of the verified JIT compiler are presented: one generates all of the machine code at once, the other one is incremental i.e. produces code on-demand. All proofs have been performed inside the HOL4 theorem prover.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;(To appear in next week&#039;s &lt;a href=&quot;http://www.cse.psu.edu/popl/10/program.html&quot;&gt;POPL&lt;/a&gt;.)&lt;/p&gt;
&lt;p &gt;I&#039;ve been enjoying this paper on my commute this week. It&#039;s a nice little distillation of some of the basics of the engineering structure of a JITted language and how the pieces fit together in a correct implementation. As JIT compilers become more and more commonplace, I&#039;d like to see them presented in such a way that they&#039;re no more scary or daunting -- at least in principle -- than traditional offline compilers. Perhaps a chapter in &lt;a href=&quot;http://www.google.com/search?q=site%3Alambda-the-ultimate.org+eopl&quot;&gt;EoPL&lt;/a&gt;4?&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>Tue, 12 Jan 2010 12:56:19 -0500</pubDate>
</item>
<item>
 <title>ScalaModules: a DSL for bringing OSGi to Scala</title>
 <link>http://lambda-the-ultimate.org/node/3767</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://wiki.github.com/hseeberger/scalamodules&quot;&gt;ScalaModules&lt;/a&gt; is an open source project aimed at providing fluent support for OSGi to Scala developers.  It takes advantage of Scala&#039;s infix operator notation, higher order functions, and implicit conversions.  ScalaModules transparently uses the Scala compiler to wrap an OSGi BundleContext with &lt;a href=&quot;http://wiki.github.com/hseeberger/scalamodules/user-guide-03-background&quot;&gt;its own RichBundleContext model&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;This general technique is not unusual for creating DSLs in mainstream languages.  Sean McDirmid uses similar tricks for his C# &lt;a href=&quot;http://bling.codeplex.com/&quot;&gt;Bling&lt;/a&gt; library for WPF, except that Bling must overcome the &lt;a href=&quot;http://lambda-the-ultimate.org/node/3135#comment-46738&quot;&gt;lack of C# offering comparable extensions to Scala&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <pubDate>Mon, 11 Jan 2010 13:03:52 -0500</pubDate>
</item>
<item>
 <title>Syntactic Proofs of Compositional Compiler Correctness</title>
 <link>http://lambda-the-ultimate.org/node/3765</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://adam.chlipala.net/tmp/compose.pdf&quot;&gt;Syntactic Proofs of Compositional Compiler Correctness&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Semantic preservation by compilers for higher-order languages can be veriﬁed using simple syntactic methods. At the heart of classic techniques are relations between source-level and target-level values. Unfortunately, these relations are speciﬁc to particular compilers, leading to correctness theorems that have nothing to say about linking programs with functions compiled by other compilers or written by hand in the target language. Theorems based on logical relations manage to avoid this problem, but at a cost: standard logical relations do not apply directly to programs with non-termination or impurity, and extensions to handle those features are relatively complicated, compared to the classical compiler veriﬁcation literature. &lt;/p&gt;
&lt;p &gt;In this paper, we present a new approach to “open” compiler correctness theorems that is “syntactic” in the sense that the core relations do not refer to semantics. Though the technique is much more elementary than previous proposals, it scales up nicely to realistic languages. In particular, untyped and impure programs may be handled simply, while previous work has addressed neither in this context. &lt;/p&gt;
&lt;p &gt;Our approach is based on the observation that it is an unnecessary handicap to consider proofs as black boxes. We identify some theorem-speciﬁc proof skeletons, such that we can deﬁne an algebra of nondeterministic compilations and their proofs, and we can compose any two compilations to produce a correct-by-construction result. We have prototyped these ideas with a Coq implementation of multiple CPS translations for an untyped Mini-ML source language with recursive functions, sums, products, mutable references, and exceptions.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;A submitted draft of another paper from Adam, continuing to expand &lt;a href=&quot;http://ltamer.sourceforge.net&quot;&gt;LambdaTamer&lt;/a&gt;&#039;s reach.&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>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Sat, 09 Jan 2010 12:10:05 -0500</pubDate>
</item>
<item>
 <title>A Verified Compiler for an Impure Functional Language</title>
 <link>http://lambda-the-ultimate.org/node/3764</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://adam.chlipala.net/papers/ImpurePOPL10/&quot;&gt;A Verified Compiler for an Impure Functional Language&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We present a verified compiler to an idealized assembly language from a small, untyped functional language with mutable references and exceptions. The compiler is programmed in the Coq proof assistant and has a proof of total correctness with respect to big-step operational semantics for the source and target languages. Compilation is staged and includes standard phases like translation to continuation-passing style and closure conversion, as well as a common subexpression elimination optimization. In this work, our focus has been on discovering and using techniques that make our proofs easy to engineer and maintain. While most programming language work with proof assistants uses very manual proof styles, all of our proofs are implemented as adaptive programs in Coq&#039;s tactic language, making it possible to reuse proofs unchanged as new language features are added.&lt;/p&gt;
&lt;p &gt;In this paper, we focus especially on phases of compilation that rearrange the structure of syntax with nested variable binders. That aspect has been a key challenge area in past compiler verification projects, with much more effort expended in the statement and proof of binder-related lemmas than is found in standard pencil-and-paper proofs. We show how to exploit the representation technique of parametric higher-order abstract syntax to avoid the need to prove any of the usual lemmas about binder manipulation, often leading to proofs that are actually shorter than their pencil-and-paper analogues. Our strategy is based on a new approach to encoding operational semantics which delegates all concerns about substitution to the meta language, without using features incompatible with general purpose type theories like Coq&#039;s logic.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Further work on/with &lt;a href=&quot;http://ltamer.sourceforge.net/&quot;&gt;LambdaTamer&lt;/a&gt; for certified compiler development.&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>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Sat, 09 Jan 2010 12:03:42 -0500</pubDate>
</item>
<item>
 <title>Certified Programming With Dependent Types Goes Beta</title>
 <link>http://lambda-the-ultimate.org/node/3763</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://adam.chlipala.net/cpdt/&quot;&gt;Certified Programming With Dependent Types&lt;/a&gt;&lt;/p&gt;
&lt;p &gt;From the introduction:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We would all like to have programs check that our programs are correct.  Due in no small part to some bold but unfulfilled promises in the history of computer science, today most people who write software, practitioners and academics alike, assume that the costs of formal program verification outweigh the benefits.  The purpose of this book is to convince you that the technology of program verification is mature enough today that it makes sense to use it in a support role in many kinds of research projects in computer science.  Beyond the convincing, I also want to provide a handbook on practical engineering of certified programs with the Coq proof assistant.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is the best Coq tutorial that I know of, partially for being comprehensive, and partially for taking a very different tack than most with Adam&#039;s emphasis on proof automation using Coq&#039;s Ltac tactic language. It provides an invaluable education toward understanding what&#039;s going on either in &lt;a href=&quot;http://ltamer.sourceforge.net/&quot;&gt;LambdaTamer&lt;/a&gt; or &lt;a href=&quot;http://ynot.cs.harvard.edu/&quot;&gt;Ynot&lt;/a&gt;, both of which are important projects in their own rights.&lt;/p&gt;
&lt;p &gt;Please note that Adam is explicitly requesting feedback on this work.&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/13">Logic/Declarative</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/9">Misc Books</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/18">Teaching &amp; Learning</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Sat, 09 Jan 2010 11:56:49 -0500</pubDate>
</item>
</channel>
</rss>
