Abstract
The SPARK tool analyzes Ada programs statically. It can be used to verify both that a program is free from runtime exceptions and that it conforms to a specification expressed through contracts. To facilitate dynamic analysis, Ada contracts are regular expressions which can be evaluated at execution. As a result, the annotation language of the SPARK tool is restricted to executable constructs. In this context, high-level concepts necessary for specification by contracts need to be supplied as libraries. For example, the latest version of the Ada language introduces unbounded integers and rational numbers to the standard library. In this article, we present the functional containers library which provides collections suitable for use in specification. We explain how they can be used to specify and verify complex programs through concrete examples that have been developed over many years.
- M Anthony Aiello, Claire Dross, Patrick Rogers, Laura Humphrey, and James Hamil. 2019. Practical application of SPARK to OpenUxAS. In International Symposium on Formal Methods. Springer, 751--761.Google Scholar
Digital Library
- John Backes, Pauline Bolignano, Byron Cook, Andrew Gacek, Kasper Soe Luckow, Neha Rungta, Martin Schaef, Cole Schlesinger, Rima Tanash, Carsten Varming, et al. 2019. One-click formal methods. IEEE Software 36, 6 (2019), 61--65.Google Scholar
Digital Library
- Kshitij Bansal, Andrew Reynolds, Clark Barrett, and Cesare Tinelli. 2016. A new decision procedure for finite sets and cardinality constraints in SMT. In International Joint Conference on Automated Reasoning. Springer, 82--98.Google Scholar
Digital Library
- John Barnes. 2012. SPARK: The Proven Approach to High Integrity Software. Altran Praxis.Google Scholar
- Allan Blanchard, Nikolai Kosmatov, and Frédéric Loulergue. 2018. Ghosts for lists: a critical module of Contiki verified in Frama-C. In NASA Formal Methods Symposium. Springer, 37--53.Google Scholar
Cross Ref
- Martin Clochard. 2014. Automatically verified implementation of data structures based on AVL trees. In Working Conference on Verified Software: Theories, Tools, and Experiments. Springer, 167--180.Google Scholar
Cross Ref
- Claire Dross, Jean-Christophe Filliâtre, and Yannick Moy. 2011. Correct code containing containers. In International Conference on Tests and Proofs. Springer, 102--118.Google Scholar
Cross Ref
- Claire Dross and Johannes Kanig. 2020. Recursive data structures in SPARK. In International Conference on Computer Aided Verification. Springer, 178--189.Google Scholar
Digital Library
- Claire Dross and Johannes Kanig. 2021. Making Proofs of Floating- Point Programs Accessible to Regular Developers. In Software Verification. Springer, 7--24.Google Scholar
- Claire Dross and Yannick Moy. 2016. Abstract software specifications and automatic proof of refinement. In International Conference on Reliability, Safety, and Security of Railway Systems. Springer, 215--230.Google Scholar
Cross Ref
- Claire Dross and Yannick Moy. 2017. Auto-active proof of red-black trees in SPARK. In NASA Formal Methods Symposium. Springer, 68--83.Google Scholar
Cross Ref
- Jean-Christophe Filliâtre and Andrei Paskevich. 2013. Why3-where programs meet provers. In European symposium on programming. Springer, 125--128.Google Scholar
Digital Library
- Richard L Ford and K Rustan M Leino. 2017. Dafny Reference Manual.Google Scholar
- Peter W O'Hearn. 2018. Continuous reasoning: Scaling the impact of formal methods. In Proceedings of the 33rd annual ACM/IEEE symposium on logic in computer science. 13--25.Google Scholar
Digital Library
- Nadia Polikarpova, Julian Tschannen, and Carlo A. Furia. 2015. A fully verified container library. In International Symposium on Formal Methods. Springer, 414--434.Google Scholar
- Ying Sheng, Andres Nötzli, Andrew Reynolds, Yoni Zohar, David Dill, Wolfgang Grieskamp, Junkil Park, Shaz Qadeer, Clark Barrett, and Cesare Tinelli. 2022. Reasoning About Vectors using an SMT Theory of Sequences. arXiv preprint arXiv:2205.08095 (2022).Google Scholar
- The Why3 Development Team. 2022. Why3 Documentation. https: //why3.lri.fr/manual.pdfGoogle Scholar
Recommendations
Experiences with specification and verification in LOTOS: a report on two case studies
WIFT '95: Proceedings of the 1st Workshop on Industrial-Strength Formal Specification TechniquesWe consider the problems of verifying properties of LOTOS specifications with specific reference to two case studies, one of which was proposed by an industrial collaborator. The case studies present quite different verification requirements and we ...
Specification, Refinement and Verification of Concurrent Systems—An Integration of Object-Z and CSP
This paper presents a method of formally specifying, refining and verifying concurrent systems which uses the object-oriented state-based specification language Object-Z together with the process algebra CSP. Object-Z provides a convenient way of ...
Design and Implementation of a Tool for Specifying Specification in SOFL
Revised Selected Papers of the Second International Workshop on Structured Object-Oriented Formal Language and Method - Volume 7787Structure Object-oriented Formal Language SOFL is not just a formal language for writing formal specification. It is also an approach and a methodology. SOFL provides a three-step approach for modelling a software system using formal specification. ...






Comments