From : "John Wiegley" <johnw AT newartisans.com>

: "John Wiegley" <johnw AT newartisans.com> To : Haskell List <haskell AT haskell.org>

: Haskell List <haskell AT haskell.org> Cc : Haskell Libraries <libraries AT haskell.org>, Haskell Cafe <haskell-cafe AT haskell.org>, Coq Club <coq-club AT inria.fr>, Ssreflect <ssreflect AT msr-inria.inria.fr>, Howard Reubenstein <howard.reubenstein AT baesystems.com>

: Haskell Libraries <libraries AT haskell.org>, Haskell Cafe <haskell-cafe AT haskell.org>, Coq Club <coq-club AT inria.fr>, Ssreflect <ssreflect AT msr-inria.inria.fr>, Howard Reubenstein <howard.reubenstein AT baesystems.com> Subject : [Coq-Club] ANN: linearscan, linearscan-hoopl 1.0.0

: [Coq-Club] ANN: linearscan, linearscan-hoopl 1.0.0 Date : Fri, 20 Nov 2015 09:44:00 -0800

: Fri, 20 Nov 2015 09:44:00 -0800 Authentication-results : mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=jwiegley AT gmail.com; spf=Pass smtp.mailfrom=jwiegley AT gmail.com; spf=None smtp.helo=postmaster AT mail-pa0-f48.google.com

: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=jwiegley AT gmail.com; spf=Pass smtp.mailfrom=jwiegley AT gmail.com; spf=None smtp.helo=postmaster AT mail-pa0-f48.google.com Ironport-phdr : 9a23:HfGYNBFH4+s2m7U83onZR51GYnF86YWxBRYc798ds5kLTJ75oM6wAkXT6L1XgUPTWs2DsrQf27eQ6/iocFdDyKjCmUhKSIZLWR4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TWM5DIfUi/yKRBybrysXNWC0oLvj6ibwN76XUZhvHKFe7R8LRG7/036l/I9ps9cEJs30QbDuXBSeu5blitCLFOXmAvgtI/rpMYwuwwZgf8q9tZBXKPmZOx4COUAVHV1e1wyse3irhrOSQ/HwnoHTi1CkhNTAAXB6Dn6V4zyvy/+8O1n13/JE9fxSOV+ezOi6e9USRLnjCoWfXZt8mbXjNNYiq9EqQi9pgd2xZWSa4aQYqktNpjBdM8XEDISFv1aUDZMV8blN9MC

: 9a23:HfGYNBFH4+s2m7U83onZR51GYnF86YWxBRYc798ds5kLTJ75oM6wAkXT6L1XgUPTWs2DsrQf27eQ6/iocFdDyKjCmUhKSIZLWR4BhJdetC0bK+nBN3fGKuX3ZTcxBsVIWQwt1Xi6NU9IBJS2PAWK8TWM5DIfUi/yKRBybrysXNWC0oLvj6ibwN76XUZhvHKFe7R8LRG7/036l/I9ps9cEJs30QbDuXBSeu5blitCLFOXmAvgtI/rpMYwuwwZgf8q9tZBXKPmZOx4COUAVHV1e1wyse3irhrOSQ/HwnoHTi1CkhNTAAXB6Dn6V4zyvy/+8O1n13/JE9fxSOV+ezOi6e9USRLnjCoWfXZt8mbXjNNYiq9EqQi9pgd2xZWSa4aQYqktNpjBdM8XEDISFv1aUDZMV8blN9MC Organization: New Artisans LLC

linearscan[1] is a linear scan register allocator[2], written in Coq[3], andextracted to Haskell, as a library for Haskell programs that need to allocateregisters. It may also be used directly from Coq.This project is the result of a year-long effort, funded by BAE Systems[4], toexplore the application of dependent-types and mathematical verification to atypical engineering task. During the course of construction, several hundredtheorems about the code were proven -- although exhaustive coverage was not,in the end, achievable given our time constraints. To remedy this, and as atest of the extraction to Haskell, an optional runtime verifier was built tocertify the resulting allocations.Coq 8.5b2[5] was used, as well as the ssreflect[6] library created for thatversion[7]. linearscan further relies on another library, coq-haskell[8], thatI created to facilitate inter-operation between Haskell and Coq.For those using Hoopl[9] to represent program graphs, incorporating linearscanis 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 Javaby Hanspeter Mössenböck and Michael Pfeiffer[11], and later improved upon byChristian Wimmer[12], whose master's thesis provided the specification for ourimplementation.John WiegleyBAE SystemsFootnotes:[1] http://hackage.haskell.org/package/linearscan [2] http://www.cs.ucla.edu/~palsberg/course/cs132/linearscan.pdf [3] https://coq.inria.fr/ [4][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/