<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Theory</title>
 <link>http://lambda-the-ultimate.org/taxonomy/term/19/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>Revisiting Coroutines</title>
 <link>http://lambda-the-ultimate.org/node/2868</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.58.4017&quot;&gt;Revisiting Coroutines&lt;/a&gt;, by Ana Lucia de Moura and Roberto Ierusalimschy:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;This paper defends the revival of coroutines as a general control abstraction. After proposing a new classification of coroutines, we introduce the concept of full asymmetric coroutines and provide a precise definition for it through an operational semantics. We then demonstrate that full coroutines have an expressive power equivalent to one-shot continuations and oneshot partial continuations. We also show that full asymmetric coroutines and one-shot partial continuations have many similarities, and therefore present comparable benefits. Nevertheless, coroutines are easier implemented and understood, specially in the realm of procedural languages. Finally, we provide a collection of programming examples that illustrate the use of full asymmetric coroutines to support direct and concise implementations of several useful control behaviors, including cooperative multitasking.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Coroutines seem to get fairly short riff in the literature, and they have only been &lt;a href=&quot;http://lambda-the-ultimate.org/node/1439&quot;&gt;discussed on LTU&lt;/a&gt;, a &lt;a href=&quot;http://lambda-the-ultimate.org/node/438&quot;&gt;couple of times&lt;/a&gt;. Given coroutines have such a straightforward mapping to hardware, I hope they get more attention.&lt;/p&gt;
&lt;p &gt;Coroutines show up in many different places. For instance, the inter-process communication (IPC) facilities of microkernels, like &lt;a href=&quot;http://eros-os.org/&quot;&gt;EROS&lt;/a&gt;, are a faithful implementation of &lt;a href=&quot;http://eros-os.org/papers/sosp99-eros-preprint.ps&quot;&gt;asymmetric coroutines&lt;/a&gt;, with an important difference. Essentially, yield and resume must &lt;em &gt;both&lt;/em&gt; take an explicit coroutine argument naming the coroutine respectively yield to and resume. If the coroutine to yield to is left implicit, as it is in most treatments I&#039;ve seen, then coroutines become less composable since yield returns control to the innermost resume which, given abstract types, might be the wrong one.&lt;/p&gt;
&lt;p &gt;This problem is discussed in Section 5.6, &quot;Avoiding Interference Between Control Actions&quot;. The paper recommends tagging coroutines to match up resume/yield pairs, but the EROS IPC system provides a more direct encoding via a &quot;resume&quot; capability, which is a single-use coroutine used to return control directly to a client. Each subsequent invocation of the object synthesizes a new resume capability.&lt;/p&gt;
&lt;p &gt;Taking this to the extreme implies that yield and resume can be unified into a single &quot;invoke&quot; operation which accepts a coroutine argument to be used in a subsequent invoke operation. Indeed, these are &quot;symmetric coroutines&quot;. This paper suggests that symmetric coroutines are harder to understand due to the actors/CPS-like nature of the control flow.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Mon, 23 Jun 2008 14:29:39 -0400</pubDate>
</item>
<item>
 <title>Pure imperative programming</title>
 <link>http://lambda-the-ultimate.org/node/2860</link>
 <description>&lt;p &gt;Two intensively studied intermediate representations in compiler theory are Static Single Assignment form (SSA) and CPS translations, and Richard Kelsey&#039;s 1995 paper, &lt;a href=&quot;http://mumble.net/~kelsey/papers/cps-ssa.ps.gz&quot;&gt;A Correspondence Between Continuation Passing Style and Static Single Assignment Form (.ps.gz)&lt;/a&gt;, which shows a nearly-complete, exact equivalence between the two IRs.&lt;/p&gt;
&lt;p &gt;The correspondence shows how the imperatively expressed SSA can be regarded as side-effect free, and Andrew Appel has pushed this idea to claim that &lt;a href=&quot;http://www.cs.princeton.edu/~appel/papers/ssafun.ps&quot;&gt;SSA &lt;i &gt;is&lt;/i&gt; functional programming&lt;/a&gt;.  This result is of clear relevance to discussions turning on &quot;what is purity?&quot;, such as &lt;a href=&quot;http://lambda-the-ultimate.org/node/2845#comment-42164&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;As an aside, the Wikipedia article &lt;a href=&quot;http://en.wikipedia.org/wiki/Static_single_assignment_form&quot;&gt;Static Single Assignment form&lt;/a&gt; is rather good.&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>Fri, 20 Jun 2008 05:56:04 -0400</pubDate>
</item>
<item>
 <title>Applied Proof Theory: Proof Interpretations and their Use in Mathematics</title>
 <link>http://lambda-the-ultimate.org/node/2834</link>
 <description>&lt;p &gt;I mentioned this &lt;a href=&quot;http://www.springer.com/math/book/978-3-540-77532-4&quot;&gt;book&lt;/a&gt; in a recent discussion, but I think it might interest members not following that discussion.&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
Ulrich Kohlenbach presents an applied form of proof theory that has led in recent years to new results in number theory, approximation theory, nonlinear analysis, geodesic geometry and ergodic theory (among others). This applied approach is based on logical transformations (so-called proof interpretations) and concerns the extraction of effective data (such as bounds) from prima facie ineffective proofs as well as new qualitative results such as independence of solutions from certain parameters, generalizations of proofs by elimination of premises.
&lt;p &gt;
The book first develops the necessary logical machinery emphasizing novel forms of Gödel&#039;s famous functional (&#039;Dialectica&#039;) interpretation. It then establishes general logical metatheorems that connect these techniques with concrete mathematics. Finally, two extended case studies (one in approximation theory and one in fixed point theory) show in detail how this machinery can be applied to concrete proofs in different areas of mathematics.&lt;/blockquote&gt;
&lt;p &gt;
The site includes some &lt;a href=&quot;http://www.springer.com/math/book/978-3-540-77532-4?detailsPage=samplePages&quot;&gt;sample pages&lt;/a&gt; for your reading pleasure. Not ten lines into the preface does Dana Scott appear, and he is clearly one of us...&lt;p &gt;
Read &lt;a href=&quot;http://www.springer.com/cda/content/document/cda_downloaddocument/9783540775324-p1.pdf?SGWID=0-0-45-557101-p173805804&quot;&gt;the preface&lt;/a&gt; and share your thoughts!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Tue, 03 Jun 2008 20:05:20 -0400</pubDate>
</item>
<item>
 <title>Sliced Bananas On Opaque Data</title>
 <link>http://lambda-the-ultimate.org/node/2709</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.uni-koblenz.de/~laemmel/expression/&quot;&gt;Sliced bananas on opaque data (The expression lemma)&lt;/a&gt;. Ralf L&amp;auml;mmel and Ondrej Rypacek.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Algebraic data types and catamorphisms (folds) play a central role in functional programming as they allow programmers to define recursive data structures and operations on them uniformly by structural recursion. Likewise, in object-oriented (OO) programming, recursive hierarchies of object types with virtual methods play a central role for the same reason. There is a semantical correspondence between these two situations which we reveal and formalize categorically. To this end, we assume a coalgebraic model of OO programming with functional objects. In practical terms, the development prepares for refactorings that turn sufficiently disciplined functional folds into OO programs of a designated shape (and v.v.).&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I haven&#039;t even glanced at the paper yet, but it looks extremely interesting, and it&#039;s directly related to some &lt;a href=&quot;http://lambda-the-ultimate.org/node/2658#comment-40087&quot;&gt;recent discussion&lt;/a&gt;. This &lt;a href=&quot;http://sneezy.cs.nott.ac.uk/fplunch/weblog/?p=90&quot;&gt;blog post from Ondrej&lt;/a&gt; is also relevant.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Wed, 05 Mar 2008 11:46:45 -0500</pubDate>
</item>
<item>
 <title>Relating Complexity and Precision in Control Flow Analysis</title>
 <link>http://lambda-the-ultimate.org/node/2647</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.brandeis.edu/~mairson/Papers/icfp07.pdf&quot;&gt;Relating Complexity and Precision in Control Flow Analysis&lt;/a&gt;, David Van Horn and Harry Mairson. ICFP 2007.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
We analyze the computational complexity of kCFA, a hierarchy of control flow analyses that determine which functions may be applied at a given call-site. This hierarchy specifies related decision problems, quite apart from any algorithms that may implement their solutions. We identify a simple decision problem answered by this analysis and prove that in the 0CFA case, the problem is complete for polynomial time. The proof is based on a nonstandard, symmetric implementation of Boolean logic within multiplicative linear logic (MLL). We also identify a simpler version of 0CFA related to eta-expansion, and prove that it is complete for logarithmic space, using arguments based on computing paths and permutations.&lt;/p&gt;
&lt;p &gt;For any fixed k &amp;gt; 0, it is known that kCFA (and the analogous decision problem) can be computed in time exponential in the program size. For k = 1, we show that the decision problem is NP-hard, and sketch why this remains true for larger fixed values of k. The proof technique depends on using the approximation of CFA as an essentially nondeterministic computing mechanism, as distinct from the exactness of normalization. When k = n, so that the &quot;depth&quot; of the control flow analysis grows linearly in the program length, we show that the decision problem is complete for exponential time.&lt;/p&gt;
&lt;p &gt;In addition, we sketch how the analysis presented here may be extended naturally to languages with control operators. All of the insights presented give clear examples of how straightforward observations about linearity, and linear logic, may in turn be used to give a greater understanding of functional programming and program analysis.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;There&#039;s ton of really good stuff in here; I was particularly fascinated by the fact that 0-CFA is &lt;em &gt;exact&lt;/em&gt; for multiplicatively linear programs (ie, that use variables at most once), because linearity guarantees that every lambda can flow to at most one use site.  &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/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Fri, 01 Feb 2008 13:47:53 -0500</pubDate>
</item>
<item>
 <title>A Model for Formal Parametric Polymorphism: A PER Interpretation for System R </title>
 <link>http://lambda-the-ultimate.org/node/2636</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://citeseer.ist.psu.edu/96857.html&quot;&gt;A Model for Formal Parametric Polymorphism: A PER Interpretation for System R &lt;/a&gt;, Roberto Bellucci, Martin Abadi, Pierre-Louis Curien. TLCA 1995&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
System R is an extension of system F that formalizes Reynolds&#039; notion of relational parametricity. In system R, considerably more lambda-terms can be proved equal than in system F: for example, the encoded weak products of F are strong products in R. Also, many &quot;theorems for free&quot; à la Wadler can be proved formally in R. In this paper we describe a semantics for system R. As a first step, we give a precise and general reconstruction of the per model of system F of Bainbridge et al., presenting it as a categorical model in the sense of Seely. Then we interpret System R in this model.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;System R is a logic for proving relational parametricity results. It&#039;s similar in some ways to Abadi-Plotkin logic, which we have &lt;a href=&quot;http://lambda-the-ultimate.org/node/2195&quot;&gt;linked to previously on LtU&lt;/a&gt;. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Mon, 28 Jan 2008 10:35:30 -0500</pubDate>
</item>
<item>
 <title>Engineering Formal Metatheory</title>
 <link>http://lambda-the-ultimate.org/node/2602</link>
 <description>&lt;p &gt;&lt;b &gt;Aydemir, Charguéraud, Pierce, Pollack, and Weirich. &lt;a href=&quot;http://www.cis.upenn.edu/~bcpierce/papers/binders.pdf&quot;&gt;Engineering Formal Metatheory&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Machine-checked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proof-carrying code. However, constructing these proofs remains a black art, involving many choices in the formulation of definitions and theorems that make a huge cumulative difference in the difficulty of carrying out large formal developments. The representation and manipulation of terms with variable binding is a key issue.&lt;/p&gt;&lt;p &gt;
We propose a novel style for formalizing metatheory, combining locally nameless representation of terms and cofinite quantification of free variable names in inductive definitions of relations on terms (typing, reduction, . . . ). &lt;/p&gt;... &lt;p &gt;We have carried out several large developments in this style using the Coq proof assistant and have made them publicly available. Our developments include type soundness for System F&lt;sub &gt;&amp;lt;:&lt;/sub&gt; and core ML (with references, exceptions, datatypes, recursion, and patterns) and subject reduction for the Calculus of Constructions.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;A fairly recent paper from the &lt;a href=&quot;http://alliance.seas.upenn.edu/~plclub/cgi-bin/poplmark/index.php?title=The_POPLmark_Challenge&quot;&gt;POPLmark &lt;/a&gt; team, which describes an approach to formalizing programming metatheory that they think performs well on the POPLmark challenge criteria (low formalization overhead, low cost of entry, and reasonable similarity to existing informal proof techniques). It looks like this is related to some of the material presented in the &lt;a href=&quot;http://www.cis.upenn.edu/~plclub/popl08-tutorial/&quot;&gt;How to write your next POPL paper in Coq&lt;/a&gt; tutorial at POPL&#039;08, which was &lt;a href=&quot;http://lambda-the-ultimate.org/node/2564&quot;&gt;previously mentioned on LtU&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Wed, 09 Jan 2008 23:54:44 -0500</pubDate>
</item>
<item>
 <title>A Dialogue on Infinity</title>
 <link>http://lambda-the-ultimate.org/node/2578</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://dialinf.wordpress.com/&quot;&gt;A Dialogue on Infinity, between a mathematician and a philosopher&lt;/a&gt;. Alexandre Borovik and David Corfield.&lt;/p&gt;
&lt;p &gt;A new blog... From the first post:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;The project concentrates on one of the principal purposes of the Exploring the Infinite Program:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;To understand the nature of and the role played by conceptualizations of infinity in mathematics.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;It will be shaped as a dialogue between a mathematician (AB) and a philosopher (DC) and will address one of the central paradoxes of mathematics:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;why are most uses of infinity in mathematics restricted to the recycling of a small number of “canonical” and ubiquitous structures?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;...To put the study of infinity on a firm basis, we first have to discuss the issue of the identity and “sameness” of mathematical objects: infinity of what?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is pretty far out for LtU, but I suspect it will interest some more philosophically inclined readers. They will look at a number of disciplines, &lt;a href=&quot;http://dialinf.wordpress.com/2007/12/15/case-study-iii-computer-science-the-bestiary-of-potential-infinities/&quot;&gt;including computer science&lt;/a&gt;. &lt;/p&gt;
&lt;p &gt;(I feel like maybe even &quot;Theory&quot; is not theoretical for this. Therefore I am also calling it &quot;Fun&quot;.)&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/19">Theory</category>
 <pubDate>Thu, 20 Dec 2007 14:46:49 -0500</pubDate>
</item>
<item>
 <title>How to write your next POPL paper in Coq</title>
 <link>http://lambda-the-ultimate.org/node/2564</link>
 <description>&lt;p &gt;If this sounds like a worthy goal, or if you are simply interested in the use of proof assistants for rogramming language research, you don&#039;t want to miss upcoming &lt;a href=&quot;http://www.cis.upenn.edu/~plclub/popl08-tutorial/&quot;&gt;tutorial&lt;/a&gt;. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Thu, 06 Dec 2007 03:52:41 -0500</pubDate>
</item>
<item>
 <title>OCaml Light: A Formal Semantics For a Substantial Subset of the Objective Caml Language</title>
 <link>http://lambda-the-ultimate.org/node/2544</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cl.cam.ac.uk/~so294/ocaml/&quot;&gt;OCaml Light: a formal semantics for a substantial subset of the Objective Caml language.&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
OCaml light is a formal semantics for a substantial subset of the Objective Caml language. It is written in Ott, and it comprises a small-step operational semantics and a syntactic, non-algorithmic type system. A type soundness theorem has been proved and mechanized using the HOL-4 proof assistant, thereby ensuring that the proof is free from errors. To ensure that the operational semantics accurately models Objective Caml, an executable version of the semantics has been created (and proved equivalent in HOL to the original, relational version) and tested on a number of small test cases.&lt;/p&gt;
&lt;p &gt;Note that while we have tried to make the semantics accurate, we are not part of the OCaml development team - this is in no sense a normative specification of the implemented language.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;From a team including Peter Sewell (&lt;a href=&quot;http://lambda-the-ultimate.org/node/163&quot;&gt;Acute&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/1460&quot;&gt;HashCaml&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/2002&quot;&gt;Ott&lt;/a&gt;).&lt;/p&gt;
&lt;p &gt;I continue to believe that things are heating up nicely in mechanized metatheory, which, in the multicore/multiprocessor world in which we now live, is extremely good news.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Mon, 26 Nov 2007 13:33:45 -0500</pubDate>
</item>
<item>
 <title>On the origins of Bisimulation, Coinduction, and  Fixed Points</title>
 <link>http://lambda-the-ultimate.org/node/2522</link>
 <description>&lt;p &gt;Davide Sangiorgi, &lt;a href=&quot;http://www.cs.unibo.it/~sangio/DOC_public/history_bis_coind.pdf&quot;&gt;On the origins of Bisimulation, Coinduction, and  Fixed Points&lt;/a&gt;.&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
The origins of bisimulation and bisimilarity are examined, in the three fields where they have been independently discovered: Computer Science, Philosophical Logic (precisely, Modal Logic), Set Theory.&lt;/p&gt;
&lt;p &gt;Bisimulation and bisimilarity are coinductive notions, and as such are intimately related to fixed points, in particular greatest fixed points.  Therefore also the appearance of coinduction and fixed points are discussed, though in this case only within Computer Science. The paper ends with some historical remarks on the main fixed-point theorems (such as Knaster-Tarski) that underpin the  fixed-point theory presented.&lt;/blockquote&gt;
&lt;p &gt;
There is a wealth of interesting information in this paper. Alas, it is not very easy to read, and the exposition can be improved. So this is not for beginners or outsiders, but if you are familiar with the topic the historical discussion will be of interest. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Sat, 03 Nov 2007 02:24:24 -0400</pubDate>
</item>
<item>
 <title>Lifting Abstract Interpreters to Quantified Logical Domains</title>
 <link>http://lambda-the-ultimate.org/node/2433</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://research.microsoft.com/research/pubs/view.aspx?0rc=p&amp;amp;type=technical+report&amp;amp;id=1329&quot;&gt;Lifting Abstract Interpreters to Quantified Logical Domains&lt;/a&gt;. Sumit Gulwani, Bill McCloskey, Ashish Tiwari. July 2007. &lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
Today, abstract interpretation is capable of inferring a wide variety of quantifier-free program invariants. In this paper, we describe a general technique for building powerful quantified abstract domains that leverage existing quantifier-free domains. For example, from a domain that abstracts facts like &quot;a[1] = 0&quot;, we automatically construct a domain that can represent universally quantified facts like &quot;Forall i: (0 &amp;lt;= i &amp;lt; n) =&amp;gt; A[i]=0)&quot;. The principal challenge in building such a domain is that, while most domains supply over-approximations of operations like join, meet, and variable elimination, working with the guards of quantified facts requires under-approximation...&lt;p &gt;
Using our generic construction, we build a number of abstract interpreters on top of domains for linear arithmetic, uninterpreted function symbols (used to model heap accesses), and pointer reachability. Our experiments on a variety of programs using arrays and pointers (including several sorting algorithms) demonstrate the feasibility of the approach on challenging examples.&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Sat, 01 Sep 2007 09:40:47 -0400</pubDate>
</item>
<item>
 <title>Validity Invariants and Effects</title>
 <link>http://lambda-the-ultimate.org/node/2401</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cse.unsw.edu.au/~ylu/ecoop07.pdf&quot;&gt;Validity Invariants and Effects&lt;/a&gt;, Yi Lu, John Potter and Jingling Xue. ECOOP 2007.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Object invariants describe the consistency of object states, and are crucial for reasoning about the correctness of object-oriented programs. However, reasoning about object invariants in the presence of object abstraction and encapsulation, arbitrary object aliasing and re-entrant method calls, is difficult. We present a general framework for reasoning about object invariants based on a behavioural abstraction that specifies two sets---the validity invariant, representing objects that must be valid before and after the behaviour, and the validity effect, describing objects that may be invalidated during the behaviour. The overlap of these two sets is critical because it captures precisely those objects that need to be re-validated at the end of the behaviour. When there is no overlap, no further validity checking is required. We also present a type system based on this framework. This system uses ownership types to confine dependencies for object invariants, and restricts permissible updates to track where object invariants hold even in the presence of re-entrant calls, but otherwise object referenceability and read access are not restricted.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I really liked this paper, but I think it might need a few preliminary explanations. There&#039;s a style of verification of OO programs based on &quot;object invariants&quot;, which is the idea that you ensure that each object has an invariant, which every method maintains. Then verification is local, in the sense that you can verify each class&#039;s invariants independently. (This is used in the Boogie methodology used by Spec#, for instance.) &lt;/p&gt;
&lt;p &gt;However, there are a couple of wrinkles. First, aliasing: every object&#039;s invariant depends on some of the objects in its fields, and you don&#039;t want random aliases letting strangers modify your representation objects underneath your feet. So you introduce a notion of &lt;em &gt;ownership&lt;/em&gt; to help track who has permission to mess with each object. Second, reentrancy: suppose the middle of a method body has temporarily broken the object&#039;s invariant, and you call another method on the object? You don&#039;t a priori know the call is safe.&lt;/p&gt;
&lt;p &gt;The type system the authors have introduced here tracks ownership and possibly-dangerous reentrant calls. The really clever part is that instead of just rejecting programs that fail these checks, they log all of the places where things break. So instead of saying &quot;yes&quot; or &quot;no&quot;, the type system says &quot;yes&quot; or &quot;manually verify the following things&quot;. So it&#039;s a labor-saving device for a verification methodology.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Wed, 15 Aug 2007 15:24:21 -0400</pubDate>
</item>
<item>
 <title>A Natural Axiomatization of Church&#039;s Thesis</title>
 <link>http://lambda-the-ultimate.org/node/2345</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://research.microsoft.com/research/pubs/view.aspx?0rc=p&amp;amp;type=technical+report&amp;amp;id=1327&quot;&gt;A Natural Axiomatization of Church&#039;s Thesis&lt;/a&gt;. Nachum Dershowitz and Yuri Gurevich. July 2007.&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
The Abstract State Machine Thesis asserts that every classical algorithm is behaviorally equivalent to an abstract state machine. This thesis has been shown to follow from three natural postulates about algorithmic computation. Here, we prove that augmenting those postulates with an additional requirement regarding basic operations implies Church&#039;s Thesis, namely, that the only numeric functions that can be calculated by effective means are the recursive ones (which are the same, extensionally, as the Turing-computable numeric functions). In particular, this gives a natural axiomatization of Church&#039;s Thesis, as Gödel and others suggested may be possible.&lt;/blockquote&gt;
&lt;p &gt;
While not directly dealing with programming &lt;i &gt;languages&lt;/i&gt;, I still think this paper might be of interest, since our field (and our discussions) are often concerned with computability (or effective computation, if you prefer).&lt;p &gt;
The idea the Church&#039;s Thesis can be proven is not new, and indeed there seems to be a cottage industry  devoted to this issue (for a quick glance search the paper for references to Gandy and work related to his).&lt;p &gt;
Even if the discussion of ASMs is not your cup of tea, it seems like a good idea to keep in mind the distinctions elaborated in the conclusions section between &quot;Thesis M&quot; (the &quot;Physical C-T Thesis&quot;), the &quot;AI Thesis&quot;, and the &quot;standard&quot; meaning of the C-T thesis.&lt;p &gt;
Another quote (from the same section) that may prove useful in future LtU discussions: &lt;i &gt;We should point out that, nowadays, one deals daily with more flexible notions of algorithm, such as interactive and distributed computations. To capture such non-sequential processes and non-classical algorithms, additional postulates are required&lt;/i&gt;. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <pubDate>Wed, 11 Jul 2007 15:16:26 -0400</pubDate>
</item>
<item>
 <title>Derivatives of Regular Expressions</title>
 <link>http://lambda-the-ultimate.org/node/2293</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://portal.acm.org/citation.cfm?id=321249&quot;&gt;Derivatives of Regular Expressions&lt;/a&gt;, Janusz Brzozowski, Journal of the ACM 1964.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Kleene&#039;s regular expressions, which can be used for describing sequential circuits, were defined using three operators (union, concatenation and iterate) on sets of sequences. Word descriptions of problems can be more easily put in the regular expression language if the language is enriched by the inclusion of other logical operations. However, in the problem of converting the regular expression description to a state diagram, the existing methods either cannot handle expressions with additional operators, or are made quite complicated by the presence of such operators. In this paper the notion of a derivative of a regular expression is introduced and the properties of derivatives are discussed. This leads, in a very natural way, to the construction of a state diagram from a regular expression containing any number of logical operators.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is one of my favorite papers. It describes a very cute algorithm for building deterministic finite automata directly from a regular expression. The key trick is the idea of a derivative of a regular expression with respect to a string, which is a non-obvious but fun idea. &lt;/p&gt;
&lt;p &gt;Note: This is an ACM DL link; I couldn&#039;t find the paper freely available online. :(&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/19">Theory</category>
 <pubDate>Mon, 11 Jun 2007 22:40:52 -0400</pubDate>
</item>
</channel>
</rss>
