<?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>Vellvm: Formalizing the LLVM Intermediate Representation for Verified Program Transformations</title>
 <link>http://lambda-the-ultimate.org/node/4440</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cis.upenn.edu/~jianzhou/Vellvm/&quot;&gt;Vellvm: Formalizing the LLVM Intermediate Representation for Verified Program Transformations&lt;/a&gt; by Jianzhou Zhao, Santosh Nagarakatte, Milo M. K. Martin, and Steve Zdancewic, POPL 2012&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
This paper presents Vellvm (&lt;em &gt;verified&lt;/em&gt; &lt;a href=&quot;http://llvm.org/&quot;&gt;LLVM&lt;/a&gt;), a framework for reasoning about programs expressed in &lt;a href=&quot;http://llvm.org/docs/LangRef.html&quot;&gt;LLVM&#039;s intermediate representation&lt;/a&gt; and transformations that operate on it. Vellvm provides a mechanized formal semantics of LLVM&#039;s intermediate representation, its type system, and properties of its &lt;a href=&quot;http://en.wikipedia.org/wiki/Static_single_assignment_form&quot;&gt;SSA&lt;/a&gt; form. The framework is built using the &lt;a href=&quot;http://coq.inria.fr/&quot;&gt;Coq&lt;/a&gt; interactive theorem prover. It includes multiple operational semantics and proves relations among them to facilitate different reasoning styles and proof techniques.&lt;/p&gt;
&lt;p &gt;To validate Vellvm&#039;s design, we extract an interpreter from the Coq formal semantics that can execute programs from LLVM &lt;a href=&quot;http://llvm.org/docs/TestingGuide.html#quicktestsuite&quot;&gt;test suite&lt;/a&gt; and thus be compared against LLVM reference implementations. To demonstrate Vellvm&#039;s practicality, we formalize and verify a &lt;a href=&quot;http://www.cis.upenn.edu/acg/softbound/&quot;&gt;previously proposed transformation&lt;/a&gt; that hardens C programs against spatial memory safety violations. Vellvm&#039;s tools allow us to &lt;a href=&quot;http://coq.inria.fr/refman/Reference-Manual027.html&quot;&gt;extract&lt;/a&gt; a new, verified implementation of the transformation pass that plugs into the real LLVM infrastructure; its performance is competitive with the non-verified, ad-hoc original.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This obviously represents huge progress in marrying the theoretical benefits of tools like Coq with the practical benefits of tools like LLVM. We can only hope that this spurs further development in practical certified software 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/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, 28 Jan 2012 10:57:08 -0500</pubDate>
</item>
<item>
 <title>The Experimental Effectiveness of Mathematical Proof</title>
 <link>http://lambda-the-ultimate.org/node/4392</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://perso.ens-lyon.fr/alexandre.miquel/publis/effectiveness.pdf&quot;&gt;The Experimental Effectiveness of Mathematical Proof&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
The aim of this paper is twofold. First, it is an attempt to give an answer to the famous essay of Eugene Wigner about the unreasonable effectiveness of mathematics in the natural sciences [25]. We will argue that mathematics are not only reasonably effective, but that they are also objectively effective in a sense that can be given a precise meaning. For that—and this is the second aim of this paper—we shall reconsider some aspects of Popper’s epistemology [23] in the light of recent advances of proof theory [8, 20], in order to clarify the interaction between pure mathematical reasoning (in the sense of a formal system) and the use of empirical hypotheses (in the sense of the natural sciences).&lt;/p&gt;
&lt;p &gt;The technical contribution of this paper is the proof-theoretic analysis of the problem (already evoked in [23]) of the experimental modus tollens, that deals with the combination of a formal proof of the implication U ⇒ V with an experimental falsification of V to get an experimental falsification of U in the case where the formulæ U and V express empirical theories in a sense close to Popper’s. We propose a practical solution to this problem based on Krivine’s theory of classical realizability [20], and describe a simple procedure to extract from a formal proof of U ⇒ V (formalized in classical second-order arithmetic) and a falsifying instance of V a computer program that performs a finite sequence of tests on the empirical theory U until it finds (in finite time) a falsifying instance of U.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I thought I had already posted this, but apparently not.&lt;/p&gt;
&lt;p &gt;Consider this paper the main gauntlet thrown down to those who insist that mathematical logic, the Curry-Howard Isomorphism, etc. might be fine for &quot;algorithmic code&quot; (as if there were any other kind) but is somehow inapplicable the moment a system interacts with the &quot;real&quot; or &quot;outside&quot; world (as if software weren&#039;t real).&lt;/p&gt;
&lt;p &gt;&lt;b &gt;Update:&lt;/b&gt; the author is Alexandre Miquel, and the citation is &quot;Chapitre du livre Anachronismes logiques, à paraître dans la collection Logique, Langage, Sciences, Philosophie, aux Publications de la Sorbonne. Éd.: Myriam Quatrini et Samuel Tronçon, 2010.&quot;&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/29">Semantics</category>
 <pubDate>Sun, 30 Oct 2011 12:05:45 -0400</pubDate>
</item>
<item>
 <title>A Semantic Model for Graphical User Interfaces</title>
 <link>http://lambda-the-ultimate.org/node/4352</link>
 <description>&lt;p &gt;Nick Benton and Neel Krishnaswami, ICFP&#039;11, &lt;A href=&quot;http://www.cs.cmu.edu/~neelk/icfp11-krishnaswami-benton.pdf&quot;&gt;A Semantic Model for Graphical User Interfaces&lt;/A&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We give a denotational model for graphical user interface (GUI) programming using the Cartesian closed category of ultrametric spaces. [..] We capture the arbitrariness of user input [..] [by a nondeterminism] “powerspace” monad.&lt;/p&gt;
&lt;p &gt;Algebras for the powerspace monad yield a model of intuitionistic linear logic, which we exploit in the definition of a mixed linear/non-linear domain-specific language for writing GUI programs. The non-linear part of the language is used for writing reactive stream-processing functions whilst the linear sublanguage naturally captures the generativity and usage constraints on the various linear objects in GUIs, such as the elements of a DOM or scene graph.&lt;/p&gt;
&lt;p &gt;We have implemented this DSL as an extension to OCaml, and give examples demonstrating that programs in this style can be short and readable.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is an application of their (more squiggly) LICS&#039;11 submission, &lt;A href=&quot;http://www.cs.cmu.edu/~neelk/frp-lics11.pdf&quot;&gt;Ultrametric Semantics of Reactive Programs&lt;/A&gt;. In both these cases, I find appealing the fact the semantic model led to a type system and a language that was tricky to find.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</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, 10 Sep 2011 16:25:56 -0400</pubDate>
</item>
<item>
 <title>Lightweight Monadic Programming in ML</title>
 <link>http://lambda-the-ultimate.org/node/4321</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.umd.edu/~mwh/papers/swamy11monad.html&quot;&gt;Lightweight Monadic Programming in ML&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Many useful programming constructions can be expressed as monads. Examples include probabilistic modeling, functional reactive programming, parsing, and information flow tracking, not to mention effectful functionality like state and I/O. In this paper, we present a type-based rewriting algorithm to make programming with arbitrary monads as easy as using ML&#039;s built-in support for state and I/O. Developers write programs using monadic values of type &lt;i &gt;M t&lt;/i&gt; as if they were of type &lt;i &gt;t&lt;/i&gt;, and our algorithm inserts the necessary binds, units, and monad-to-monad morphisms so that the program type checks. Our algorithm, based on Jones&#039; qualified types, produces principal types. But principal types are sometimes problematic: the program&#039;s semantics could depend on the choice of instantiation when more than one instantiation is valid. In such situations we are able to simplify the types to remove any ambiguity but without adversely affecting typability; thus we can accept strictly more programs. Moreover, we have proved that this simplification is &lt;i &gt;efficient&lt;/i&gt; (linear in the number of constraints) and &lt;i &gt;coherent&lt;/i&gt;: while our algorithm induces a particular rewriting, all related rewritings will have the same semantics. We have implemented our approach for a core functional language and applied it successfully to simple examples from the domains listed above, which are used as illustrations throughout the paper.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is an intriguing paper, with an implementation in about 2,000 lines of OCaml. I&#039;m especially interested in its application to probabilistic computing, yielding a result related to Kiselyov and Shan&#039;s Hansei effort, but without requiring delimited continuations (not that there&#039;s anything wrong with delimited continuations). On a theoretical level, it&#039;s nice to see such a compelling example of what can be done once types are freed from the shackle of &quot;describing how bits are laid out in memory&quot; (another such compelling example, IMHO, is type-directed partial evaluation, but that&#039;s literally another story).&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/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, 28 Jul 2011 14:11:27 -0400</pubDate>
</item>
<item>
 <title>Levy:  a Toy Call-by-Push-Value Language</title>
 <link>http://lambda-the-ultimate.org/node/4314</link>
 <description>&lt;p &gt;Andrej Bauer&#039;s &lt;A href=&#039;http://math.andrej.com/&#039;&gt;blog&lt;/A&gt; contains the &lt;A href=&#039;http://math.andrej.com/?s=PL+Zoo&#039;&gt;PL Zoo&lt;/A&gt; project. In particular, the &lt;A href=&#039;http://math.andrej.com/2008/11/23/a-toy-call-by-push-value-language/&#039;&gt;Levy&lt;/A&gt; language, a toy implementation of Paul Levy&#039;s &lt;A href=&#039;http://lambda-the-ultimate.org/node/1975&#039;&gt;CBPV&lt;/A&gt; in OCaml. &lt;/p&gt;
&lt;p &gt;If you&#039;re curious about CBPV, this implementation might be a nice accompaniment to the &lt;A href=&#039;http://portal.acm.org/citation.cfm?id=984044&#039;&gt;book&lt;/A&gt;, or simply a hands on way to check it out.&lt;/p&gt;
&lt;p &gt;It looks like an implementation of CBPV without sum and product types, with complex values, and without effects. I guess a more hands-on way to get to grips with CBPV would be to implement any of these missing features.&lt;/p&gt;
&lt;p &gt;The posts are are 3 years old, but I&#039;ve only just noticed them. The PL Zoo project was &lt;A href=&#039;http://lambda-the-ultimate.org/node/2815#comment-42266&#039;&gt;briefly mentioned&lt;/A&gt; here.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</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/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</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/19">Theory</category>
 <pubDate>Thu, 14 Jul 2011 14:57:09 -0400</pubDate>
</item>
<item>
 <title>Imperative Programs as Proofs via Game Semantics </title>
 <link>http://lambda-the-ultimate.org/node/4253</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://people.bath.ac.uk/mdc25/lics11.pdf&quot;&gt;Imperative Programs as Proofs via Game Semantics&lt;/a&gt;, Martin Churchill, James Laird and Guy McCusker. To appear at LICS 2011.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Game semantics extends the Curry-Howard isomorphism to a three-way correspondence: proofs, programs, strategies. But the universe of strategies goes beyond intuitionistic logics and lambda calculus, to capture stateful programs. In this paper we describe a logical counterpart to this extension, in which proofs denote such strategies. We can embed intuitionistic ﬁrst-order linear logic into this system, as well as an imperative total programming language. The logic makes explicit use of the fact that in the game semantics the exponential can be expressed as a ﬁnal coalgebra. We establish a full completeness theorem for our logic, showing that every bounded strategy is the denotation of a proof.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This paper increases the importance of gaining a more-than-casual understanding of game semantics for me, since it combines two of my favorite things: polarized type theories and imperative higher-order programs.&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>Wed, 13 Apr 2011 05:28:25 -0400</pubDate>
</item>
<item>
 <title>Macros that Work Together </title>
 <link>http://lambda-the-ultimate.org/node/4196</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://david.darais.com/assets/racket-macros.pdf&quot;&gt;Macros that Work Together - Compile-Time Bindings, Partial Expansion, and Definition Contexts&lt;/a&gt;, Matthew Flatt, Ryan Culpepper, David Darais, and Robert Bruce Findler. Under consideration for publication in J. Functional Programming.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Racket (formerly PLT Scheme) is a large language that is built mostly within itself. Unlike the usual&lt;br &gt;
approach taken by non-Lisp languages, the self-hosting of Racket is not a matter of bootstrapping&lt;br &gt;
one implementation through a previous implementation, but instead a matter of building a tower of&lt;br &gt;
languages and libraries via macros. The upper layers of the tower include a class system, a component&lt;br &gt;
system, pedagogic variants of Scheme, a statically typed dialect of Scheme, and more. The demands&lt;br &gt;
of this language-construction effort require a macro system that is substantially more expressive than&lt;br &gt;
previous macro systems. In particular, while conventional Scheme macro systems handle stand-alone&lt;br &gt;
syntactic forms adequately, they provide weak support for macros that share information or macros&lt;br &gt;
that use existing syntactic forms in new contexts.&lt;/p&gt;
&lt;p &gt;This paper describes and models novel features of the Racket macro system, including support for&lt;br &gt;
general compile-time bindings, sub-form expansion and analysis, and environment management. The&lt;br &gt;
presentation assumes a basic familiarity with Lisp-style macros, and it takes for granted the need for&lt;br &gt;
macros that respect lexical scope. The model, however, strips away the pattern and template system&lt;br &gt;
that is normally associated with Scheme macros, isolating a core that is simpler, that can support&lt;br &gt;
pattern and template forms themselves as macros, and that generalizes naturally to Racket’s other&lt;br &gt;
extensions.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;A good description of Racket&#039;s rocket science tools for growing languages. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</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>
 <pubDate>Thu, 03 Feb 2011 09:25:01 -0500</pubDate>
</item>
<item>
 <title>Conservative Logic</title>
 <link>http://lambda-the-ultimate.org/node/4120</link>
 <description>&lt;p &gt;Edward Fredkin and Tommoasso Toffoli from the MIT Labratory for Computer Science present  &lt;a href=&quot;http://calculemus.org/logsoc03/materialy/ConservativeLogic.pdf&quot;&gt;Conservative Logic&lt;/a&gt;...&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
a comprehensive model of computation which explicitly reflects a number of fundamental principles of physics, such as the reversibility of the dynamical laws and the conservation of certain additive quantities (among which energy plays a distinguished role). Because it more closely mirrors physics than traditional models of computation, conservative logic is in a better position to provide indications concerning the realization of high-performance computing systems, i.e., of systems that make very efficient use of the &quot;computing resources&quot; actually offered by nature. In particular, conservative logic shows that it is ideally possible to build sequential circuits with zero internal power dissipation. After establishing a general framework, we discuss two specific models of computation. The first uses binary variables and is the conservative-logic counterpart of switching theory; this model proves that universal computing capabilities are compatible with the reversibility and conservation constraints. The second model, which is a refinement of the first, constitutes a substantial breakthrough in establishing a correspondence between computation and physics. In fact, this model is based on elastic collisions of identical &quot;balls,&quot; and thus is formally identical with the atomic model that underlies the (classical) kinetic theory of perfect gases. Quite literally, the functional behavior of a general-purpose digital computer can be reproduced by a perfect gas placed in a suitably shaped container and given appropriate initial conditions.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This paper has a small discussion in a &lt;a href=&quot;http://lambda-the-ultimate.org/node/2913#comment-43037&quot;&gt;forum thread&lt;/a&gt; mostly saying the paper should be on the front page.&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>Tue, 02 Nov 2010 11:16:04 -0400</pubDate>
</item>
<item>
 <title>Abstract interpreters for free</title>
 <link>http://lambda-the-ultimate.org/node/4063</link>
 <description>&lt;p &gt;&lt;i &gt;Matthew Might, &lt;a href=&quot;http://matt.might.net/papers/might2010free.pdf&quot;&gt;&quot;Abstract interpreters for free&quot;&lt;/a&gt;, Static Analysis Symposium 2010 (SAS 2010).&lt;/i&gt; &lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
...we present a two-step method to convert a small-step concrete semantics into a family of sound, computable abstract interpretations. The first step re-factors the concrete state-space to eliminate recursive structure; this refactoring of the state-space simultaneously determines a store-passing-style transformation on the underlying concrete semantics. The second step uses inference rules to generate an abstract state-space and a Galois connection simultaneously. The Galois connection allows the calculation of the “optimal” abstract interpretation. The two-step process is unambiguous, but nondeterministic: at each step, analysis designers face choices. Some of these choices ultimately influence properties such as flow-, field- and context-sensitivity. Thus, under the method, we can give the emergence of these properties a graph-theoretic characterization.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;The work in this paper provides some context for known static analysis techniques like &lt;i &gt;k&lt;/i&gt;-CFA, and also opens up some interesting new directions for static analysis development. Also, as Matt points out, there are some pedagogical benefits to having a systematic process for getting from semantics to abstract interpretation. &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/18">Teaching &amp; Learning</category>
 <pubDate>Sun, 29 Aug 2010 09:31:51 -0400</pubDate>
</item>
<item>
 <title>What Sequential Games, the Tychonoff Theorem and the Double-Negation Shift have in Common</title>
 <link>http://lambda-the-ultimate.org/node/4037</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.bham.ac.uk/~mhe/papers/msfp2010/&quot;&gt;What Sequential Games, the Tychonoff Theorem, and the Double-Negation Shift have in Common&lt;/a&gt;, Martin Escardo and Paulo Oliva, to appear in MSFP 2010.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
This is a tutorial for mathematically inclined functional programmers, based on previously published, peered reviewed theoretical work. We discuss a higher-type functional, written here in the functional programming language Haskell, which &lt;/p&gt;
&lt;ol &gt;
&lt;li &gt;optimally plays sequential games,
&lt;li &gt;implements a computational version of the Tychonoff Theorem from topology, and
&lt;li &gt; realizes the Double-Negation Shift from logic and proof theory.
&lt;/ol&gt;
&lt;p &gt;The functional makes sense for finite and infinite (lazy) lists, and in the binary case it amounts to an operation that is available in any (strong) monad. &lt;/p&gt;
&lt;p &gt;In fact, once we define this monad in Haskell, it turns out that this amazingly versatile functional is already available in Haskell, in the standard prelude, called &lt;code &gt;sequence&lt;/code&gt;, which iterates this binary operation. Therefore Haskell proves that this functional is even more versatile than anticipated, as the function sequence was introduced for other purposes by the language designers, in particular the iteration of a list of monadic effects (but effects are not what we discuss here).
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;One of the most durable and productive analogies in semantics is the analogy between computability and continuity. Depending on how you read the history, this idea might even predate computers: Brouwer proved that all intuitonistic functions on the reals were continuous.&lt;/p&gt;
&lt;p &gt;Over the last few years, Escardo and his collaborators have done a lot of cool stuff showing how this network of ideas can be turned into miraculous-looking little programs, so it&#039;s very nice to see a relatively accesible introduction to this work. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Wed, 04 Aug 2010 06:12:04 -0400</pubDate>
</item>
<item>
 <title>Handlers of Algebraic Effects</title>
 <link>http://lambda-the-ultimate.org/node/4006</link>
 <description>&lt;p &gt;Matija Pretnar, Gordon Plotkin (2009) &lt;A href=&quot;http://matija.pretnar.info/handlers-of-algebraic-effects.pdf&quot;&gt;Handlers of Algebraic Effects&lt;/A&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We present an algebraic treatment of exception handlers and,&lt;br &gt;
more generally, introduce handlers for other computational effects repre-&lt;br &gt;
sentable by an algebraic theory. These include nondeterminism, interac-&lt;br &gt;
tive input/output, concurrency, state, time, and their combinations; in&lt;br &gt;
all cases the computation monad is the free-model monad of the theory.&lt;br &gt;
Each such handler corresponds to a model of the theory for the effects&lt;br &gt;
at hand. The handling construct, which applies a handler to a compu-&lt;br &gt;
tation, is based on the one introduced by &lt;A href=&quot;http://lambda-the-ultimate.org/node/1193&quot;&gt;Benton and Kennedy&lt;/A&gt;, and is&lt;br &gt;
interpreted using the homomorphism induced by the universal property&lt;br &gt;
of the free model. This general construct can be used to describe previ-&lt;br &gt;
ously unrelated concepts from both theory and practice.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Handling a computational effect, such as raising an exception, amounts to homomorphically mapping the handled computation onto another computation. So, for example, &lt;code &gt;raise&lt;/code&gt; is interpreted as the exception handling code given to the handler.&lt;/p&gt;
&lt;p &gt;While encompassing both returning and non-returning handlers, this idea becomes more interesting when you start to handle the other effects, such as &lt;code &gt;lookup&lt;/code&gt; and update&lt;/code&gt;. Then you can get things like state rollback when an exception occurs, and others (CSS renaming and hiding, stream redirection, timeout). Thus the semantics of handlers gives rise to a new programming construct.&lt;/p&gt;
&lt;p &gt;If you want a gentler introduction to the subject (along with Plotkin&#039;s &lt;A href=&quot;http://lambda-the-ultimate.org/node/1024&quot;&gt;algebraic theory of effects&lt;/A&gt; and Levy&#039;s &lt;A href=&quot;http://lambda-the-ultimate.org/node/1975&quot;&gt;Call-by-Push-Value&lt;/A&gt;), try Pretnar&#039;s &lt;A href=&quot;http://matija.pretnar.info/the-logic-and-handling-of-algebraic-effects.pdf&quot;&gt;2010 thesis.&lt;/A&gt;&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Sun, 04 Jul 2010 05:54:45 -0400</pubDate>
</item>
<item>
 <title>The Galois connection between syntax and semantics</title>
 <link>http://lambda-the-ultimate.org/node/3971</link>
 <description>&lt;small&gt;Peter Smith, &lt;a href=&quot;http://www.logicmatters.net/resources/pdfs/Galois.pdf&quot;&gt;The Galois connection between syntax and semantics&lt;/a&gt;.&lt;/small&gt;&lt;p&gt;
&lt;blockquote&gt;
explains Lawvere’s remark about ‘the familiar Galois connection between sets of axioms and classes of models, for a fixed [signature]‘
&lt;/blockquote&gt;&lt;p&gt;
Seems like a rather nice introduction to the notion of Galois connection (I seem to remember someone asking about this awhile back).&lt;p&gt;
One place Galois connections pop up is in the realm of Abstract Interpretation.</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Sat, 05 Jun 2010 16:14:27 -0400</pubDate>
</item>
<item>
 <title>Milawa: A Self-Verifying Theorem Prover for an ACL2-Like Logic</title>
 <link>http://lambda-the-ultimate.org/node/3964</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://userweb.cs.utexas.edu/users/jared/milawa/Web/&quot;&gt;Milawa: A Self-Verifying Theorem Prover for an ACL2-Like Logic&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Milawa is a &quot;self-verifying&quot; theorem prover for an ACL2-like logic.&lt;/p&gt;
&lt;p &gt;We begin with a simple proof checker, call it A, which is short enough to verify by the &quot;social process&quot; of mathematics.&lt;/p&gt;
&lt;p &gt;We then develop a series of increasingly powerful proof checkers, call them B, C, D, and so on. We show that each of these is sound: they accept only the same formulas as A. We use A to verify B, and B to verify C, and so on. Then, since we trust A, and A says B is sound, we can trust B, and so on for C, D, and the rest.&lt;/p&gt;
&lt;p &gt;Our final proof checker is really a theorem prover; it can carry out a goal-directed proof search using assumptions, calculation, rewrite rules, and so on. We use this theorem prover to discover the proofs of soundness for B, C, and so on, and to emit these proofs in a format that A can check. Hence, &quot;self verifying.&quot;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This might help inform discussions of the relationship between the de Bruijn criterion (the &quot;social process&quot; of mathematics) and formal verification. I think it also serves as an interesting signpost on the road forward: it&#039;s one thing to say that starting with a de Bruijn core and evolving a more powerful prover is possible in principle; it&#039;s another thing for it to actually have been done. The author&#039;s thesis &lt;a href=&quot;http://userweb.cs.utexas.edu/users/jared/milawa/Documentation/defense.pdf&quot;&gt;defense&lt;/a&gt; slides provide a nice, quick overview.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</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/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/29">Semantics</category>
 <pubDate>Sat, 29 May 2010 13:49:47 -0400</pubDate>
</item>
<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>
</channel>
</rss>

