<?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>A Lambda Calculus for Real Analysis</title>
 <link>http://lambda-the-ultimate.org/node/3831</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://paultaylor.eu/ASD/lamcra/&quot;&gt;A Lambda Calculus for Real Analysis&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Abstract Stone Duality is a revolutionary paradigm for general topology that describes computable continuous functions directly, without using set theory, infinitary lattice theory or a prior theory of discrete computation. Every expression in the calculus denotes both a continuous function and a program, and the reasoning looks remarkably like a sanitised form of that in classical topology. This is an introduction to ASD for the general mathematician, with application to elementary real analysis.&lt;/p&gt;
&lt;p &gt;This language is applied to the Intermediate Value Theorem: the solution of equations for continuous functions on the real line. As is well known from both numerical and constructive considerations, the equation cannot be solved if the function &quot;hovers&quot; near 0, whilst tangential solutions will never be found.&lt;/p&gt;
&lt;p &gt;In ASD, both of these failures and the general method of finding solutions of the equation when they exist are explained by the new concept of overtness. The zeroes are captured, not as a set, but by higher-type modal operators. Unlike the Brouwer degree, these are defined and (Scott) continuous across singularities of a parametric equation.&lt;/p&gt;
&lt;p &gt;Expressing topology in terms of continuous functions rather than sets of points leads to treatments of open and closed concepts that are very closely lattice- (or de Morgan-) dual, without the double negations that are found in intuitionistic approaches. In this, the dual of compactness is overtness. Whereas meets and joins in locale theory are asymmetrically finite and infinite, they have overt and compact indices in ASD.&lt;/p&gt;
&lt;p &gt;Overtness replaces metrical properties such as total boundedness, and cardinality conditions such as having a countable dense subset. It is also related to locatedness in constructive analysis and recursive enumerability in recursion theory.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Paul Taylor is deadly serious about the intersection of logic, mathematics, and computation. I came across this after beating my head against &lt;a href=&quot;http://www.amazon.com/Probability-Theory-Logic-Science-Vol/dp/0521592712/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1266357272&amp;amp;sr=8-1&quot;&gt;Probability Theory: The Logic of Science&lt;/a&gt; and &lt;a href=&quot;http://axiomaticeconomics.com/&quot;&gt;Axiomatic Theory of Economics&lt;/a&gt; over the weekend, realizing that my math just wasn&#039;t up to the tasks, and doing a Google search for &quot;constructive real analysis.&quot; &quot;Real analysis&quot; because it was obvious that that was what both of the aforementioned texts were relying on; &quot;constructive&quot; because I&#039;d really like to develop proofs in Coq/extract working code from them. This paper was on the second page of results. Paul&#039;s name was familiar (and not just because I share it with him); he translated Jean-Yves Girard&#039;s regrettably out-of-print &lt;a href=&quot;http://paultaylor.eu/stable/Proofs+Types&quot;&gt;Proofs and Types&lt;/a&gt; to English and maintains a very popular set of tools for typesetting &lt;a href=&quot;http://paultaylor.eu/diagrams/&quot;&gt;commutative diagrams&lt;/a&gt; using LaTeX.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/22">Category Theory</category>
 <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/15">Meta-Programming</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>Tue, 16 Feb 2010 17:00:42 -0500</pubDate>
</item>
<item>
 <title>Joe-E: A Security-Oriented Subset of Java</title>
 <link>http://lambda-the-ultimate.org/node/3830</link>
 <description>&lt;small&gt;&lt;a href=&quot;http://www.cs.berkeley.edu/~daw/papers/joe-e-ndss10.pdf&quot;&gt;Joe-E: A Security-Oriented Subset of Java&lt;/a&gt;. Adrian Mettler, David Wagner, and Tyler Close. To appear at ISOC NDSS 2010.&lt;/small&gt;&lt;p&gt;
&lt;blockquote&gt;
We present Joe-E, a language designed to support the development of secure software systems. Joe-E is a subset of Java that makes it easier to architect and implement programs with strong security properties that can be checked
during a security review. It enables programmers to apply the principle of least privilege to their programs; implement application-specific reference monitors that cannot be bypassed; introduce and use domain-specific security abstractions; safely execute and interact with untrusted code; and build secure, extensible systems. Joe-E demonstrates how it is possible to achieve the strong security properties of an object-capability language while retaining the features and feel of a mainstream object-oriented language...
&lt;/blockquote&gt;&lt;p&gt;
Section 5.2 discuss how Joe-E leverages Java static typing. Joe-E is implemented as a source-code verifier not a bytecode verifier. Section 6 of the paper explains this design choice.&lt;p&gt;
Joe-E was mentioned on LtU in the &lt;a href=&quot;http://lambda-the-ultimate.org/node/2560&quot;&gt;past&lt;/a&gt; and is available &lt;a href=&quot;http://www.joe-e.org&quot;&gt;here&lt;/a&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, 16 Feb 2010 01:50:39 -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>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>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>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>
<item>
 <title>A Type-theoretic Foundation for Programming with Higher-order Abstract Syntax and First-class Substitutions</title>
 <link>http://lambda-the-ultimate.org/node/3627</link>
 <description>&lt;a href=&quot;http://complogic.cs.mcgill.ca/beluga/popl08/Pientka08_hoasfun.pdf&quot;&gt;A Type-theoretic Foundation for Programming with Higher-order Abstract Syntax and First-class Substitutions&lt;/a&gt; by Brigitte Pientka, appeared in POPL 08. 

&lt;blockquote &gt;
Higher-order abstract syntax (HOAS) is a simple, powerful technique
for implementing object languages, since it directly supports
common and tricky routines dealing with variables, such as
capture-avoiding substitution and renaming. This is achieved by
representing binders in the object-language via binders in the meta-language.
However, enriching functional programming languages
with direct support for HOAS has been a major challenge, because
recursion over HOAS encodings requires one to traverse -
abstractions and necessitates programming with open objects.
&lt;p &gt;
We present a novel type-theoretic foundation based on contextual
modal types which allows us to recursively analyze open terms
via higher-order pattern matching. By design, variables occurring
in open terms can never escape their scope. Using several examples,
we demonstrate that our framework provides a name-safe foundation
to operations typically found in nominal systems. In contrast
to nominal systems however, we also support capture-avoiding
substitution operations and even provide first-class substitutions to
the programmer. The main contribution of this paper is a syntax directed
bi-directional type system where we distinguish between
the data language and the computation language together with the
progress and preservation proof for our language.
&lt;/blockquote&gt;

Its been a while since I posted, but this paper appears that it may be of interest to some members of this community. It looks interesting to me, but I just wish I understood all the terminology. I don&#039;t know what &quot;open objects&quot; are, and why they are a problem. I don&#039;t understand what HOAS is. I don&#039;t even know what binders are. The list goes on. I surely can&#039;t be the only person who is interested, but feels that this is just out of their grasp. I bet that I probably could understand these things with a minimum of explanation, given I have experience implementing languages. If anyone is interested in rephrasing the abstract in more basic terms, I would be very appreciative.  

[Edit: corrected spelling of Brigitte Pientka. My apologies.]</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/19">Theory</category>
 <pubDate>Sat, 03 Oct 2009 14:51:00 -0400</pubDate>
</item>
<item>
 <title>A Veriﬁed Compiler for an Impure Functional Language</title>
 <link>http://lambda-the-ultimate.org/node/3554</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://adam.chlipala.net/tmp/imp.pdf&quot;&gt;A Veriﬁed Compiler for an Impure Functional Language&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We present a veriﬁed 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’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 veriﬁcation 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’s logic.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The latest from Adam Chlipala. Yet another evolutionary step for &lt;a href=&quot;http://lambda-the-ultimate.org/node/2146&quot;&gt;Lambda&lt;/a&gt; &lt;a href=&quot;http://lambda-the-ultimate.org/node/2853&quot;&gt;Tamer&lt;/a&gt;. Between this and &lt;a href=&quot;http://lambda-the-ultimate.org/node/3549&quot;&gt;Ynot&lt;/a&gt; the Coq/certified compiler story seems to be getting more impressive nearly daily.&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>Mon, 10 Aug 2009 12:09:11 -0400</pubDate>
</item>
<item>
 <title>LNGen</title>
 <link>http://lambda-the-ultimate.org/node/3309</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cis.upenn.edu/~baydemir/papers/lngen/&quot;&gt;LNGen&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
LNgen generates locally nameless infrastructure for the &lt;a href=&quot;http://coq.inria.fr/&quot;&gt;Coq proof assistant&lt;/a&gt; from &lt;a href=&quot;http://www.cl.cam.ac.uk/~pes20/ott/&quot;&gt;Ott&lt;/a&gt;-like specifications. Its output is based on the locally nameless style advocated in &lt;a href=&quot;http://www.cis.upenn.edu/~baydemir/papers.html#AydCha_08a&quot;&gt;Engineering Formal Metatheory&lt;/a&gt; and includes all of the &quot;infrastructure&quot; lemmas associated with that style. Compared to &lt;a href=&quot;http://moscova.inria.fr/~zappa/projects/ln_ott/&quot;&gt;Ott&#039;s locally nameless backend&lt;/a&gt;, LNgen favors generating a large collection of infrastructure lemmas over handling complex binding specifications and methods of defining syntax and relations.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;There are really three stories here:&lt;/p&gt;
&lt;ol &gt;
&lt;li &gt;Coq 8.2 shipped a while ago.&lt;/li&gt;
&lt;li &gt;Ott, a tool for PLT semantics work, has acquired a backend in support of the increasingly-popular &quot;locally nameless&quot; representation of binding structure in mechanized programming language metatheory.&lt;/li&gt;
&lt;li &gt;LNGen is another tool, using a subset of Ott syntax, that takes a slightly different approach from Ott&#039;s new backend to addressing the same issues.&lt;/li&gt;
&lt;/ol&gt;
&lt;p &gt;From the U. Penn folks who brought us the Coq tutorial at POPL &#039;08.&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>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Thu, 07 May 2009 16:28:56 -0400</pubDate>
</item>
<item>
 <title>Achieving Security Despite Compromise Using Zero-Knowledge</title>
 <link>http://lambda-the-ultimate.org/node/3308</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.infsec.cs.uni-sb.de/projects/zk-typechecker&quot;&gt;Achieving Security Despite Compromise Using Zero-Knowledge&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
One of the important challenges when designing and analyzing cryptographic protocols is the enforcement of security properties in the presence of compromised participants. This paper presents a general technique for strengthening cryptographic protocols in order to satisfy authorization policies despite participant compromise. The central idea is to automatically transform the original cryptographic protocols by adding non-interactive zero-knowledge proofs. Each participant proves that the messages sent to the other participants are generated&lt;br &gt;
in accordance to the protocol. The zero-knowledge proofs are forwarded to ensure the correct behavior of all participants involved in the protocol, without revealing any secret data. We use an enhanced type system for zero-knowledge to verify that the transformed protocols conform to their authorization policy even if some participants are compromised. Finally, we developed a tool that automatically generates ML implementations of protocols based on zero-knowledge proofs. The protocol transformation, the veriﬁcation, and the generation of protocol implementations are fully automated.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is the follow-up to &lt;a href=&quot;http://lambda-the-ultimate.org/node/3099&quot;&gt;this&lt;/a&gt; story. The prior work did not account for compromised participants. This work does.&lt;/p&gt;
&lt;p &gt;I continue to be excited about the prospect of &lt;a href=&quot;http://lambda-the-ultimate.org/node/3121&quot;&gt;this&lt;/a&gt; previous story&#039;s work being applied to the type system described in this story, possibly resulting in an awesome new language for developing secure software.&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>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Thu, 07 May 2009 16:20:16 -0400</pubDate>
</item>
<item>
 <title>Branching Time vs. Linear Time: Semantical Perspective</title>
 <link>http://lambda-the-ultimate.org/node/3291</link>
 <description>&lt;p &gt;Sumit Nain and Moshe Vardi, &lt;a href=&quot;http://www.cs.rice.edu/~vardi/papers/atva0711.pdf&quot;&gt;Branching Time vs. Linear Time: Semantical Perspective&lt;/a&gt;, invited ATVA&#039;07 paper.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;...this paper puts forward an, admittedly provocative, thesis, which is that process-equivalence theory allowed itself to wander in the “wilderness” for lack of accepted guiding principles. The obvious deﬁnition of contextual equivalence was not scrupulously adhered to, and the underspeciﬁcity of the formalisms proposed led to too many interpretations of equivalence.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;In revisiting the notion of process equivalence, which is a fairly central part of concurrency theory, Nain and Vardi end up arguing in favor of a purely trace-based notion of equivalence and the use of linear-time logics. This in turn leads to a rejection of bisimulation as a tool for establishing process equivalences:   &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;The gist of our argument is that branching-time-based notions of process equivalence are not reasonable notions of process equivalence, as they distinguish between processes that are not contextually distinguishable. In contrast, the linear-time view does yield an appropriate notion of contextual equivalence.&lt;br &gt;
...&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote &gt;&lt;p &gt;In spite of its mathematical elegance and ubiquity in logic, bisimulation is not a reasonable notion of process equivalence, as it makes distinctions that cannot be observed.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;They take pains to point out that they are not claiming that bisimulation or CTL should be abandoned or are not useful. Rather their emphasis is on the fact that bisimulation is not a &lt;i &gt;contextual&lt;/i&gt; equivalence and is therefore not appropriate for establishing equivalence between (for example) a specification and its implementation. As they say in the conclusion of the paper:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;While one may not realistically expect a single paper to overwrite about 30 years of research, a more modest hope would be for this paper to stimulate a lively discussion on the basic principles of process-equivalence theory.&lt;/p&gt;&lt;/blockquote&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>Sun, 26 Apr 2009 18:55:39 -0400</pubDate>
</item>
<item>
 <title>Semantics of Memory Management  for Polymorphic Languages</title>
 <link>http://lambda-the-ultimate.org/node/3274</link>
 <description>&lt;p &gt;In &lt;a href=&quot;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.47.9873&quot;&gt;Semantics of Memory Management for Polymorphic Languages&lt;/a&gt; (1997) Greg Morrisett and Robert Harper&lt;br &gt;
&lt;blockquote &gt;
...present a static and dynamic semantics for an abstract machine that evaluates expressions of a polymorphic programming language. Unlike traditional semantics, our abstract machine exposes many important issues of memory management, such as value sharing and control representation. We prove the soundness of the static semantics with respect to the dynamic semantics using traditional techniques. We then show how these same techniques may be used to establish the soundness of various memory management strategies, including type-based, tag-free garbage collection; tail-call elimination; and environment strengthening.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This should keep the formal semantics LtUers happy for a little while.  But is all the machinery necessary?  Is there an easier way to prove that garbage can be thrown out?&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Wed, 15 Apr 2009 17:39:46 -0400</pubDate>
</item>
<item>
 <title>Denotational design with type class morphisms</title>
 <link>http://lambda-the-ultimate.org/node/3215</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://conal.net/papers/type-class-morphisms/&quot;&gt;Denotational design with type class morphisms&lt;/a&gt;. Conal Elliott.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Type classes provide a mechanism for varied implementations of standard interfaces. Many of these interfaces are founded in mathematical tradition and so have regularity not only of types but also of properties (laws) that must hold. Types and properties give strong guidance to the library implementor, while leaving freedom as well. Some of the remaining freedom is in how the implementation works, and some is in what it accomplishes.&lt;/p&gt;
&lt;p &gt;To give additional guidance to the what, without impinging on the how, this paper proposes a principle of type class morphisms (TCMs), which further refines the compositional style of denotational semantics. The TCM idea is simply that the instance’s meaning is the meaning’s instance. This principle determines the meaning of each type class instance, and hence defines correctness of implementation. In some cases, it also provides a systematic guide to implementation, and in some cases, valuable design feedback.&lt;/p&gt;
&lt;p &gt;The paper is illustrated with several examples of type, meanings, and morphisms.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;To continue in our new all-Conal format... This paper brings together a bunch of things that Conal&#039;s been talking about lately, and &quot;algebra of programming&quot; fans will probably like his approach.&lt;/p&gt;
&lt;p &gt;(I have a hunch that what he calls a &quot;type class morphism&quot; could be described using standard categorical jargon, but I haven&#039;t given it much thought. Suggestions?)&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>Thu, 19 Feb 2009 16:35:22 -0500</pubDate>
</item>
</channel>
</rss>
