formal verification for functional programming languages
Hello, where can I find information about formal verification techniques and tools for functional programming languages? Both introductionary texts and current research papers etc. are welcome. Best wishes, Wolfgang
On Nov 4, 2005, at 3:13 AM, Wolfgang Jeltsch wrote:
Hello,
where can I find information about formal verification techniques and tools for functional programming languages? Both introductionary texts and current research papers etc. are welcome.
Best wishes, Wolfgang
Please do consider posting a summary of responses you receive. I'm looking for much the same type of information. If it's of any value, two books I'm reading right now are Benjamin C. Pierce, "Types and Programming Languages" Klaus Schneider, "Verification of Reactive Systems: Formal Methods and Algorithms" I still don't think I understand how to apply these ideas in a useful way, but a book I picked up a couple of years ago and found absolutely fascinating (possibly what led me down the path of exploring functional programming, believe it or not) is David Harel, Dexter Kozen and Jerzy Tiuryn, "Dynamic Logic" Pierce is part of a two volume series, and focuses on typed lambda calculus, with implementation examples in ML. (I just hope the syntax doesn't throw a Haskell newbie like me off too much!) Schneider has a bit more of a handbook feel to it, but focuses on automata based methods and their relationship with *temporal* logic. I've just started reading it, but it doesn't seem to be particularly functional, but seems interesting. Kozen et al. is an introduction to dynamic logic, a modal program logic generalizing Hoare's invariant logic (pre- and post-conditions. The idea of DL is to interpret [P]a to mean a must hold after an execution of P and <P>a to mean that it holds after some execution of P. The logic becomes interesting when the semantics of [P] and <P> for composite programs are given in terms of those of their subprograms. What is intriguing is that it is possible to prove decidability based on "small model" properties which are somewhat surprising, since the proof of compactness for traditional logic doesn't carry though at all. I am still looking for somewhat more satisfying account of lambda calculus, though. It is frustrating to read that there is this mysterious result called the Church-Rosser theorem stating that the order in which you reduce a lambda expression doesn't affect the normal form you (may) reach. I often wonder if this kind of mystery is a lot of what leads people to shy away from functional programming, given that lambda calculus seems a lot harder to understand on an intuitive level than Turing machines or RAMs (which are appropriate models for procedural programming). === Gregory Woodhouse gregory.woodhouse@sbcglobal.net "Einstein was a giant. He had his head in the clouds and his feet on the ground." --Richard P. Feynman
Am Freitag, 4. November 2005 13:51 schrieb Gregory Woodhouse:
On Nov 4, 2005, at 3:13 AM, Wolfgang Jeltsch wrote:
Hello,
where can I find information about formal verification techniques and tools for functional programming languages? Both introductionary texts and current research papers etc. are welcome.
Best wishes, Wolfgang
Please do consider posting a summary of responses you receive. I'm looking for much the same type of information.
Hello Gregory (and the others), I didn't write a summary but instead attached the e-mails I recieved in reply to my question. Some of them went also to the list so there is a bit of duplication. In addition to asking about verification wrt. functional programming languages on the Haskell Mailing List, I asked about verification wrt. functional-logic languages on the Curry Mailing List. The answers to this question are also attached. You might also find http://www.e-pig.org/ useful. HList might also be interesting in conjunction with verfication. See: http://homepages.cwi.nl/~ralf/HList/paper.pdf
[...]
Best wishes, Wolfgang
Anyone interested in program verification issues in a Haskell context should check out the Programatica project: <http://www.cse.ogi.edu/PacSoft/projects/programatica/> (I'm not sure how recent changes at OGI/PacSoft may have affected the on-going status of this project, but there is a lot there already and the principals are still active, if a bit shuffled around.) -- Fritz
Are you familiar with Hoare and Misra's Verification Grand Challenge? Here are a couple of pointers to recent workshops http://www.csl.sri.com/users/shankar/VGC05/ and http://vstte.ethz.ch/index.html FWIW, I personally feel that transforming specifications into programs via synthesis or refinement or whatever is going to net you a better return than after the fact verification. That's just IMHO. Right now I'm looking at different possibilities for specification languages, and I feel that Haskell gets you 70-80% of the way there (I think that Hoare himself said something along those lines sometime back) cheers "Wolfgang Jeltsch" <wolfgang@jeltsch.net> wrote in message news:200511041213.04185.wolfgang@jeltsch.net...
Hello,
where can I find information about formal verification techniques and tools for functional programming languages? Both introductionary texts and current research papers etc. are welcome.
Best wishes, Wolfgang
Wolfgang Jeltsch wrote:
Hello,
where can I find information about formal verification techniques and tools for functional programming languages? Both introductionary texts and current research papers etc. are welcome.
Take a look at Omega. It is an experimental interpreter building up Curry Howard Isomorphism within the programming language using Generalized Algebraic Data Types. http://www.cs.pdx.edu/~sheard/Omega/index.html http://www.cs.pdx.edu/~sheard/papers/OmegaLangOfFutOnwardOct04.ppt http://www.cs.pdx.edu/~sheard/papers/LangOfTheFuture.ps If you are familiar with Haskell or want to work on some formal verification using Haskell code, I think this one would be convenient and also practical since some part of Omega's is already built into GHC now. See Generalized Algebraic Data Types section in GHC User Manual. http://www.haskell.org/ghc/docs/latest/html/users_guide/gadt.html -- Ahn, Ki Yung
Wolfgang Jeltsch wrote:
Hello,
where can I find information about formal verification techniques and tools for functional programming languages? Both introductionary texts and current research papers etc. are welcome.
See the specification language HasCASL. For specification of monadic programs, we have developed a Hoare calculus and a dynamic logic, which are also represented in the theorem prover Isabelle. Related is the Heterogeneous Tool Set. http://www.tzi.de/agbkb/forschung/formal_methods/CoFI/HasCASL/ http://www.tzi.de/cofi/hets The Isabelle tutorial has some examples from functional programming http://www4.in.tum.de/~nipkow/LNCS2283/ Also, P-logic and the Programatica tool should be of interest: ftp://ftp.cse.ogi.edu/pub/pacsoft/papers/Plogic.pdf http://www.cse.ogi.edu/PacSoft/projects/programatica/ Greetings, Till -- Till Mossakowski Phone +49-421-218-4683 Dept. of Computer Science Fax +49-421-218-3054 University of Bremen till@tzi.de P.O.Box 330440, D-28334 Bremen http://www.tzi.de/~till
participants (6)
-
Ahn, Ki-yung -
Fritz Ruehr -
Gregory Woodhouse -
Srinivas Nedunuri -
Till Mossakowski -
Wolfgang Jeltsch