Tools and Methods for Scalable Software Verifications
- Peter Sestoft(CoI),
- Lars Birkedal(PI),
- Hannes Mehnert(CoI),
- Jonas Buhrkal Jensen(CoI),
- Jesper Bengtson(CoI),
- Jacob Junker Thamsborg(CoI)
Project:
Research
Project status
Finished
Description
The need for correct and reliable software pervades all branches of society, such as telecommunications, manufacturing, trade, healthcare, finance, defense, and research. While software correctness has many facets (usability, security, and so on), this project focuses on functional correctness of sequential programs.
The last 50 years have shown how difficult it is to construct software that works correctly. In the last 40 years researchers have endeavored to develop program logics for formal specification of software's intended behavior and to prove that it satisfies the specification.
So-called shared mutable data have proven to be especially problematic, yet are ubiquitous in widely use programming languages such as Java and C#. It is hard to express properties of such software and it is hard to conduct proofs about it.
In recent years progress has been made on two fronts: the development of program logics, notably separation logic, and the development of proof assistants. Separation logic allows one to focus a proof on only the relevant substructures of shared mutable data, but so far only smallish "toy" programs have been specified and proven using separation logic.
The goals of this project are therefore:
- To apply the above-mentioned theoretical advances to practice
- To develop prototype software tools for formal specification with separation logic
- To apply the prototypes in a realistic case study
- To give methodological advice on how to structure software so as to facilitate formal specification and proof about it, and give advice on how to conduct such proofs.
The last 50 years have shown how difficult it is to construct software that works correctly. In the last 40 years researchers have endeavored to develop program logics for formal specification of software's intended behavior and to prove that it satisfies the specification.
So-called shared mutable data have proven to be especially problematic, yet are ubiquitous in widely use programming languages such as Java and C#. It is hard to express properties of such software and it is hard to conduct proofs about it.
In recent years progress has been made on two fronts: the development of program logics, notably separation logic, and the development of proof assistants. Separation logic allows one to focus a proof on only the relevant substructures of shared mutable data, but so far only smallish "toy" programs have been specified and proven using separation logic.
The goals of this project are therefore:
- To apply the above-mentioned theoretical advances to practice
- To develop prototype software tools for formal specification with separation logic
- To apply the prototypes in a realistic case study
- To give methodological advice on how to structure software so as to facilitate formal specification and proof about it, and give advice on how to conduct such proofs.
Project Information
Project Type
Research
Acronym
ToMeSoTime Period
01/03/2009 – 30/06/2013Status
FinishedID
External Project ID: 274-08-0412
Funding Details
Tools and Methods for Scalable Software VerificationsAward
FundersAmounts
Independent Research Fund Denmark
5394541 DKK