<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>open-DO &#187; Hi-Lite</title>
	<atom:link href="http://www.open-do.org/tag/hi-lite/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.open-do.org</link>
	<description>Toward a cooperative and open framework for the development of certifiable software</description>
	<lastBuildDate>Fri, 03 Feb 2012 16:13:41 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Executable Annotations for C Programs</title>
		<link>http://www.open-do.org/2012/01/09/executable-annotations-for-c-programs/</link>
		<comments>http://www.open-do.org/2012/01/09/executable-annotations-for-c-programs/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 11:49:16 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[Open-DO News]]></category>
		<category><![CDATA[Related Initiatives]]></category>
		<category><![CDATA[Formal verification]]></category>
		<category><![CDATA[Hi-Lite]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1908</guid>
		<description><![CDATA[The Frama-C platform, which integrates static analysis and formal proof of C programs, now has a plug-in for run-time execution of annotations. In particular, preconditions and postconditions written using the E-ACSL subset of the ACSL annotation language for C can now be executed thanks to this plug-in. This is a great move in the direction [...]]]></description>
			<content:encoded><![CDATA[<p>The Frama-C platform, which integrates static analysis and formal proof of C programs, now has <a href="http://frama-c.com/eacsl.html">a plug-in for run-time execution of annotations</a>. In particular, preconditions and postconditions written using the E-ACSL subset of the ACSL annotation language for C can now be executed thanks to this plug-in. This is a great move in the direction of better integration of proofs and tests for C programs!
</p>

<p>As far as I know, this is the first attempt at defining a common annotation language for tests and static analysis / proof for C. The annotation languages for C that I know of cannot be executed: Microsoft&#8217;s widely used <a href="http://msdn.microsoft.com/en-us/library/ms235402.aspx">Standard Annotation Language</a>, the annotation language used by the <a href="http://www.eschertech.com/products/ecv.php">Escher C Verifier</a> or the one from Microsoft&#8217;s <a href="http://research.microsoft.com/en-us/projects/vcc/">VCC</a>.
</p>

<p>Note that an important difference between this annotation language and others is that it uses mathematical semantics for operations in annotations. So an addition in annotations cannot overflow. In practice, they are using the GMP library for mathematical integers. Try it for yourself by downloading/installing <a href="http://frama-c.com/download.html">Frama-C</a> and <a href="http://frama-c.com/download/e-acsl/e-acsl-0.1.tar.gz ">this plug-in</a>!
</p>]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2012/01/09/executable-annotations-for-c-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prove &amp; Fly!</title>
		<link>http://www.open-do.org/2011/12/14/prove-fly/</link>
		<comments>http://www.open-do.org/2011/12/14/prove-fly/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 13:51:40 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[Certification]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[Hi-Lite]]></category>
		<category><![CDATA[theorem proving]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1894</guid>
		<description><![CDATA[On December 5-6, I participated in the 2nd workshop on Theorem Proving in
Certification, in Cambridge (UK). This turned out to be even more interesting than last year&#8217;s program promised.

The goal of the workshop is to clarify under which conditions theorem proving
can be applied in the context of DO-178C Formal Methods Supplement (hence Prove &#038; Fly!):

	extent [...]]]></description>
			<content:encoded><![CDATA[<p>On December 5-6, I participated in the <a href="http://www.cl.cam.ac.uk/~mjcg/FMStandardsWorkshop.html">2nd workshop on Theorem Proving in
Certification</a>, in Cambridge (UK). This turned out to be even more interesting than last year&#8217;s program promised.</p>

<p>The goal of the workshop is to clarify under which conditions theorem proving
can be applied in the context of DO-178C Formal Methods Supplement (hence <em>Prove &#038; Fly!</em>):
<ul>
	<li>extent of verifications performed</li>
        <li>cost/benefit compared to testing</li>
	<li>characteristics of a technique/tool to be called <em>theorem proving</em></li>
	<li>tool qualification needs</li>
</ul></p>

<p>The workshop was organized around a common challenge (<em>gear nose challenge</em>) which all participants were
invited to address from different angles. The challenge was to compute the
velocity of the nose gear of a plane while on the ground.
This was made even more interesting by the need to comply with a small
certification standard (<em>Tamarack standard</em>). Both the challenge and the certification standard were
created by Jeff Joyce from CSL.</p>

<p>Besides sharing the strategy we follow in project Hi-Lite, and showing how it applied to the common challenge, 
I was very interested in the discussions we had over tool qualification and the alternate objectives to coverage in DO-178C, 
when using formal verification instead of testing. An interesting shared opinion was that the automatic prover does not need to 
be qualified if it generates a trace that can be double-checked independently by a theorem prover (based on a small set of induction rules). 
For example, <a href="http://www.divms.uiowa.edu/~astump/papers/fast-proof-checking-smt09.pdf">that&#8217;s the case for CVC3</a>.
In the discussion on alternate objectives to coverage, Jeff Joyce clearly stated that the underlying goal is to detect incompleteness
of specifications, or equivalently (from the opposite point of view) unintended functionalities. During the discussion, it appeared that
we may be able to use either model checking to perform a symbolic coverage analysis, or information given by automatic provers stating which
hypotheses (and thus source code constructs) were used in proofs, but for example not concolic testing which is based on source code.   
</p> 

<p>Many of these subjects will need to be further explored as DO-178C is adopted in new projects and tools based on formal methods are applied in this context. 
In particular, I look forward to the evolutions of the Tamarack standard and new solutions to the gear nose challenge.
Hot news: Open-DO will host the workshop forge and wiki to support these evolutions. <img src='http://www.open-do.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 
</p>]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2011/12/14/prove-fly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cookbook for Applying Formal Methods in Industry</title>
		<link>http://www.open-do.org/2011/07/13/cookbook-for-applying-formal-methods-in-industry/</link>
		<comments>http://www.open-do.org/2011/07/13/cookbook-for-applying-formal-methods-in-industry/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 08:07:40 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[In the Press]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[Hi-Lite]]></category>
		<category><![CDATA[SPARK]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1798</guid>
		<description><![CDATA[If you read a bit of French, you&#8217;ll be happy to know that Hermes Publishing has just issued the first of a three-volume series on 
Utilisations industrielles des techniques formelles (use of formal methods in industry). This first volume is concerned with abstract interpretation techniques and tools.
As such, we at AdaCore contributed a chapter on [...]]]></description>
			<content:encoded><![CDATA[<p>If you read a bit of French, you&#8217;ll be happy to know that Hermes Publishing has just issued the first of a three-volume series on 
<i>Utilisations industrielles des techniques formelles</i> (use of formal methods in industry). This first volume is concerned with abstract interpretation techniques and tools.
As such, we at AdaCore contributed a chapter on the static analyzer CodePeer that we develop. Other chapters describe the use of other tools based on abstract interpretation and
formal methods in a broader sense: Polyspace, Astrée, Frama-C, etc. I liked in particular the discussion about the use of formal methods for in DO-178C context, and the combination of
formal verification and testing, in chapter 7 by Dassault Aviation <i>Méthodes formelles et conformité au standard DO-178C/ED-12C en aéronautique</i>. We do have solutions in project Hi-Lite to 
some of the problems they raised.<p>

<p>Here is <a href=http://www.lavoisier.fr/fr/livres/index.asp?texte=2746232060&#038;select=isbn&#038;from=Hermes>the book</a>, that you can also find at your preferred web merchant.
</p>

<p>The two remaining books on the B methods, Scade, SPARK and others, should be published by the end of 2011. An English version of the three books is expected to be published in 2012.</p>]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2011/07/13/cookbook-for-applying-formal-methods-in-industry/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Being Elmer Fudd</title>
		<link>http://www.open-do.org/2011/03/31/being-elmer-fudd/</link>
		<comments>http://www.open-do.org/2011/03/31/being-elmer-fudd/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 21:04:12 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[Certification]]></category>
		<category><![CDATA[Open-DO News]]></category>
		<category><![CDATA[Papers and Slides]]></category>
		<category><![CDATA[formal methods]]></category>
		<category><![CDATA[Hi-Lite]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1659</guid>
		<description><![CDATA[Ever found yourself in an extreme stressed state because of some bugs* escaping you? Then you know how it feels to be Elmer Fudd. Not a typical hero, never victorious in his hunt. So it feels being a software engineer. A new episode in this tragicomedy is a paper by Yang et al. from Uni [...]]]></description>
			<content:encoded><![CDATA[<p>Ever found yourself in an extreme stressed state because of some bugs* escaping you? Then you know how it feels to be <a href="http://en.wikipedia.org/wiki/Elmer_Fudd">Elmer Fudd</a>. Not a typical hero, never victorious in his hunt. So it feels being a software engineer. A new episode in this tragicomedy is <a href="http://www.cs.utah.edu/~regehr/papers/pldi11-preprint.pdf">a paper by Yang et al.</a> from Uni Utah that will be presented at PLDI conference this year.</p>

<p>In this paper, the authors report on 3 years looking for bugs in C compilers. They generated random compliant ANSI C programs, which all C compilers should compile to a program computing the same values, and compared the results of various C compilers on the generated programs. They found 325 bugs, 8 of which they present in a few lines in the paper. Really savory to see how logic defeats man. In case you chill like me over these bug stories, you can read some I wrote <a href="http://research.microsoft.com/apps/pubs/?id=80722">at Microsoft</a> and <a href="http://www.open-do.org/wp-content/uploads/2010/05/erts2010.pdf">at AdaCore</a>.</p>

<p>The light in the dark comes from a little known C compiler, <a href="http://compcert.inria.fr/">CompCert</a> whose middle-end successfully defeated the repeated attacks (6 CPU-years!) of the researchers. Guess what? It is written in Coq, a formal language, which allowed proving its correctness. Also interesting is the fact that even CompCert had bugs in its non formally verified parts, like the parser, where it makes sense to have testing in place.</p>

<p>* bunny of course<p>]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2011/03/31/being-elmer-fudd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proving Alt-Ergo prover in Coq</title>
		<link>http://www.open-do.org/2011/01/05/proving-alt-ergo-prover-in-coq/</link>
		<comments>http://www.open-do.org/2011/01/05/proving-alt-ergo-prover-in-coq/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 08:37:21 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[Certification]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Hi-Lite]]></category>
		<category><![CDATA[proof]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1505</guid>
		<description><![CDATA[I attended yesterday the PhD defense of Stéphane Lescuyer, who presented his work on the proof of prover Alt-Ergo, pushing the boundary of what&#8217;s feasible with today&#8217;s proof technology. 

First, a few words of why this is interesting for us at AdaCore, in an industrial setting. Starting with SPARK Pro 9.1, users now have the [...]]]></description>
			<content:encoded><![CDATA[<p>I attended yesterday the PhD defense of Stéphane Lescuyer, who presented his work on the proof of prover Alt-Ergo, pushing the boundary of what&#8217;s feasible with today&#8217;s proof technology. </p>

<p>First, a few words of why this is interesting for us at AdaCore, in an industrial setting. Starting with SPARK Pro 9.1, users now have the possibility to call the prover Alt-Ergo to prove some formulas generated by the SPARK tool-set, in addition to the existing SPARK prover. Proving these formulas ensures that there are no run-time errors and that subprograms properly implement their contracts. Thus, it is crucial that the prover used is correct: whenever it says a formula is true, it must be the case. In project Hi-Lite (hosted on Open-DO), we also aim at using Alt-Ergo to prove functional properties of interest to a user on parts of an Ada codebase.</p>

<p>Second, the inner algorithms of such automatic provers are very tricky, so it is quite hard to show a convincing proof that they are correct. The well-known case is the Shostak&#8217;s method on which Alt-Ergo&#8217;s main algorithm is based: Shostak published his algorithm in 84, and despite many papers discussing the approach, the algorithm was erroneous on various accounts; it was corrected in two steps, in 1996 by Cyrluk, Lincoln and Shankar and in 2001 by Rueß and Shankar. Only a formal proof like the one done by Stéphane Lescuyer can then provide a strong argument for correctness.</p>

<p>Bottom line is that Alt-Ergo is built around a proven core, and that&#8217;s great news in order to use it in safety-critical software development and verification.</p>]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2011/01/05/proving-alt-ergo-prover-in-coq/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Case Study: Can you afford to ignore formal analysis?</title>
		<link>http://www.open-do.org/2010/12/06/case-study-can-you-afford-to-ignore-formal-analysis/</link>
		<comments>http://www.open-do.org/2010/12/06/case-study-can-you-afford-to-ignore-formal-analysis/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 14:47:05 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[Certification]]></category>
		<category><![CDATA[Open-DO News]]></category>
		<category><![CDATA[Papers and Slides]]></category>
		<category><![CDATA[Formal verification]]></category>
		<category><![CDATA[Hi-Lite]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1501</guid>
		<description><![CDATA[This is a title I&#8217;d like to reuse some day for a case study in Hi-Lite, but right now it is the title of a very interesting paper published by EE Times: people from Alcatel-Lucent formally verified many properties of an ASIC design in a large communication system.

What is stricking is the similarity of the [...]]]></description>
			<content:encoded><![CDATA[<p>This is a title I&#8217;d like to reuse some day for a case study in Hi-Lite, but right now it is the title of <a href="http://www.eetimes.com/design/eda-design/4211188/Case-Study--Can-you-afford-to-ignore-formal-analysis-?pageNumber=0&#038;Ecosystem=embedded">a very interesting paper</a> published by EE Times: people from Alcatel-Lucent formally verified many properties of an ASIC design in a large communication system.</p>

<p>What is stricking is the similarity of the findings and the challenges with what we do in Hi-Lite, despite the very different nature of the properties verified in hardware and in software, and the different techniques involved. Pages 3 and 4, they detail the additional errors found by formal verification on a codebase already simulated, with actual examples of what simulation missed and why. Very instructive. Which leads them to propose to bring together simulation and formal verification on page 5.</p>

<p>Interestingly, the difficulties to bring these two worlds together are the same as the ones in software: different semantics in simulation and formal verification (ex 1 p 5) and non-executable annotations (ex 2 p 5). Good thing that we insisted on the same semantics in Hi-Lite for execution and formal verification, as well as executable annotations!<p> ]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2010/12/06/case-study-can-you-afford-to-ignore-formal-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Must-see Videos on Code Verification</title>
		<link>http://www.open-do.org/2010/08/24/must-see-videos-on-code-verification/</link>
		<comments>http://www.open-do.org/2010/08/24/must-see-videos-on-code-verification/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 21:57:50 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[Videos]]></category>
		<category><![CDATA[Formal verification]]></category>
		<category><![CDATA[Hi-Lite]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1446</guid>
		<description><![CDATA[Rustan Leino, a researcher at Microsoft Research, has started creating a set of videos where he both teaches and demoes how to do code verification with the tools developed at Microsoft Research. This shows how to overcome the difficulties than someone may encounter with every code verification tool, except the GUI is amazingly intuitive (verification [...]]]></description>
			<content:encoded><![CDATA[<p>Rustan Leino, a researcher at Microsoft Research, has started creating <a href="http://research.microsoft.com/en-us/projects/verificationcorner/">a set of videos</a> where he both teaches and demoes how to do code verification with the tools developed at Microsoft Research. This shows how to overcome the difficulties than someone may encounter with every code verification tool, except the GUI is amazingly intuitive (verification in the background while typing, very precise error messages).</p>

<p>No only that, but Rustan also sings and dances&#8230; really enjoyable!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2010/08/24/must-see-videos-on-code-verification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embedded Contract Languages by Microsoft Research</title>
		<link>http://www.open-do.org/2010/06/09/embedded-contract-languages-by-microsoft-research/</link>
		<comments>http://www.open-do.org/2010/06/09/embedded-contract-languages-by-microsoft-research/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 07:45:19 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[Open-DO News]]></category>
		<category><![CDATA[Papers and Slides]]></category>
		<category><![CDATA[Contracts]]></category>
		<category><![CDATA[Hi-Lite]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1408</guid>
		<description><![CDATA[
People from the group developing Spec# at Microsoft Research finally published an article on their new Code Contracts approach.


Chosen excerpts: &#8220;embedding of contracts as code is a better approach&#8221;; &#8220;The language of conditions is just the language of expressions
in the programming language used&#8221;; &#8220;ForAll and Exists that work over integer ranges and collections&#8221;; &#8220;Any methods [...]]]></description>
			<content:encoded><![CDATA[<p>
People from the group developing Spec# at Microsoft Research finally published <a href="http://research.microsoft.com/pubs/104989/cc.pdf">an article</a> on their new Code Contracts approach.
</p>
<p>
Chosen excerpts: <em>&#8220;embedding of contracts as code is a better approach&#8221;</em>; <em>&#8220;The language of conditions is just the language of expressions
in the programming language used&#8221;</em>; <em>&#8220;ForAll and Exists that work over integer ranges and collections&#8221;</em>; <em>&#8220;Any methods called from within contract expressions
should be pure methods&#8221;</em>; <em>&#8220;Runtime contract checking is particularly
effective in conjunction with automated testing&#8221;</em>; <em>&#8220;generating good documentation from the embedded
contracts is a key scenario&#8221;</em>.
</p>
<p>
And the conclusion: <em>&#8220;Since contract expressions are compiled by the existing
compiler, the typical problem of having the specifications
and the code drift apart due to edits, refactoring, etc., is
avoided.&#8221;</em>
</p>
<p>
All of this supports the vision of project Hi-Lite, and provides valuable experience reports which should inspire us in Hi-Lite.
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2010/06/09/embedded-contract-languages-by-microsoft-research/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A &#8220;Lighter&#8221; Introduction to Hi-Lite</title>
		<link>http://www.open-do.org/2010/05/10/a-lighter-introduction-to-hi-lite/</link>
		<comments>http://www.open-do.org/2010/05/10/a-lighter-introduction-to-hi-lite/#comments</comments>
		<pubDate>Mon, 10 May 2010 10:50:39 +0000</pubDate>
		<dc:creator>Yannick Moy</dc:creator>
				<category><![CDATA[Open-DO News]]></category>
		<category><![CDATA[CodePeer]]></category>
		<category><![CDATA[Frama-C]]></category>
		<category><![CDATA[Hi-Lite]]></category>
		<category><![CDATA[SPARK]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.open-do.org/?p=1330</guid>
		<description><![CDATA[The recently launched project Hi-Lite is based on powerful industrial tools that have been developed by the different partners for the last 10 to 25 years. This means in particular that it is not obvious to grasp the &#8220;vision&#8221; of Hi-Lite without knowing how all these tools work. To share this vision as broadly as [...]]]></description>
			<content:encoded><![CDATA[The recently launched project Hi-Lite is based on powerful industrial tools that have been developed by the different partners for the last 10 to 25 years. This means in particular that it is not obvious to grasp the &#8220;vision&#8221; of Hi-Lite without knowing how all these tools work. To share this vision as broadly as possible, we have come up with a &#8220;light&#8221; (one may even say humorous) <a href="http://www.open-do.org/projects/hi-lite/a-lighter-introduction">introduction to Hi-Lite</a> in which we describe the application of the various tools and techniques that are part of Hi-Lite to a very simple program. ]]></content:encoded>
			<wfw:commentRss>http://www.open-do.org/2010/05/10/a-lighter-introduction-to-hi-lite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

