Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] ANN: linearscan, linearscan-hoopl 1.0.0

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] ANN: linearscan, linearscan-hoopl 1.0.0


Chronological Thread 
  • From: Beta Ziliani <bziliani AT famaf.unc.edu.ar>
  • To: Coq Club <coq-club AT inria.fr>, Howard Reubenstein <howard.reubenstein AT baesystems.com>, Haskell List <haskell AT haskell.org>, Ssreflect <ssreflect AT msr-inria.inria.fr>, Haskell Libraries <libraries AT haskell.org>, Haskell Cafe <haskell-cafe AT haskell.org>
  • Subject: Re: [Coq-Club] ANN: linearscan, linearscan-hoopl 1.0.0
  • Date: Fri, 20 Nov 2015 17:03:33 -0300
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=bziliani AT famaf.unc.edu.ar; spf=None smtp.mailfrom=bziliani AT famaf.unc.edu.ar; spf=None smtp.helo=postmaster AT famaf.unc.edu.ar
  • Ironport-phdr: 9a23:fC52pxwRA4OLWf/XCy+O+j09IxM/srCxBDY+r6Qd1+IQIJqq85mqBkHD//Il1AaPBtWGraocw8Pt8IneGkU4qa6bt34DdJEeHzQksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2WVTerzWI4CIIHV2nbEwudrmzQtaapv/0/t7x0qWbWx9Piju5bOE6BzSNhiKViPMrh5B/IL060BrDrygAUe1XwWR1OQDbxE6ktY+YtaRu+CVIuv8n69UIEeCjJ/x5HvRkC2ENNHl9z8n2v1GXRgyWo3AYT28+kxxSAgGD4gusGt/RtTTzrOY14iSHN8DwVqw5WDLqu6dsVxbyhGEdOiMz/WfMlsFxiopRqR+6tgdjzovPJoqSMaw6NoPUZtAXQW4JesdKS2QVAoqnbIYLC8IBNP1boo354VwUok36TTK3Hu7hzjJDmjeixrYg3uolHAra9Ak7BZcPtm7VpZP0Mr0TWKa71v+MhRXKdPBb3TO1zInCaBk7oPyXFeZ0cMDLwFMuGhjtjlyLqoHhO3WSzOtb9yC75vFjWOarw0UupQw59jim3cQhjo2MjYsbx3jE/D56zYIxY9qiRxgoT8SjFc56uj2Tf7l3RsIrRWAg7Cwoy7kHsJi6VCYDzZ0pgQPZYLqKf5XO6wi1B7XZGitxmH8wIOH3vB2160X1j7SkDsQ=

Hi John,

I'd be interested to know what was the outcome of the project from the point of view of BEA Systems. Is there any report about it?

Many thanks,
Beta

Written from mobile. Excuse my limited communication.

On Nov 20, 2015 2:44 PM, "John Wiegley" <johnw AT newartisans.com> wrote:
linearscan[1] is a linear scan register allocator[2], written in Coq[3], and
extracted to Haskell, as a library for Haskell programs that need to allocate
registers. It may also be used directly from Coq.

This project is the result of a year-long effort, funded by BAE Systems[4], to
explore the application of dependent-types and mathematical verification to a
typical engineering task. During the course of construction, several hundred
theorems about the code were proven -- although exhaustive coverage was not,
in the end, achievable given our time constraints. To remedy this, and as a
test of the extraction to Haskell, an optional runtime verifier was built to
certify the resulting allocations.

Coq 8.5b2[5] was used, as well as the ssreflect[6] library created for that
version[7]. linearscan further relies on another library, coq-haskell[8], that
I created to facilitate inter-operation between Haskell and Coq.

For those using Hoopl[9] to represent program graphs, incorporating linearscan
is quite easy: provide an instance of NodeAlloc using the linearscan-hoopl[10]
library. Examples of doing so are provided in the test suite for that library.

The allocation algorithm implemented by this library was first written in Java
by Hanspeter Mössenböck and Michael Pfeiffer[11], and later improved upon by
Christian Wimmer[12], whose master's thesis provided the specification for our
implementation.

John Wiegley
BAE Systems

Footnotes:
[1]  http://hackage.haskell.org/package/linearscan

[2]  http://www.cs.ucla.edu/~palsberg/course/cs132/linearscan.pdf

[3]  https://coq.inria.fr/

[4]  http://www.baesystems.com/en-us/our-company/inc-businesses/electronic-systems/research-advanced-development/about-r-and-ad

[5]  https://coq.inria.fr/news/125.html

[6]  http://ssr.msr-inria.inria.fr/

[7]  http://ssr.msr-inria.inria.fr/FTP/

[8]  https://github.com/jwiegley/coq-haskell

[9]  https://hackage.haskell.org/package/hoopl

[10]  http://hackage.haskell.org/package/linearscan-hoopl

[11]  http://dl.acm.org/citation.cfm?id=647478.727924

[12]  http://www.christianwimmer.at/Publications/Wimmer04a/




Archive powered by MHonArc 2.6.18.

Top of Page