Skip to main content
Erschienen in: Automatic Control and Computer Sciences 7/2022

01.12.2022

Towards Automatic Deductive Verification of C Programs with Sisal Loops Using the C-lightVer System

verfasst von: D. A. Kondratyev

Erschienen in: Automatic Control and Computer Sciences | Ausgabe 7/2022

Einloggen, um Zugang zu erhalten

Aktivieren Sie unsere intelligente Suche, um passende Fachinhalte oder Patente zu finden.

search-config
loading …

Abstract

The C-lightVer system for deductive verification of C programs has been developed at the Institute of Informatics Systems of the Siberian Branch of the Russian Academy of Sciences (IIS SB RAS). C-kernel is an intermediate verification language in this system. The cloud parallel programming system (CPPS) is also developed at the IIS SB RAS. Cloud Sisal is the input language of the CPPS system. The main feature of the CPPS system is the implicit parallel execution based on the automatic parallelization of Cloud Sisal loops. Cloud-Sisal-kernel is an intermediate verification language in the CPPS system. Our goal is the automatic parallelization of such a superset of the C language that allows implementing automatic verification. Our solution is a superset of the C-kernel language such as the C-Sisal-kernel language. The first result presented in this article is an extension of C-kernel by Cloud-Sisal-kernel loops. As a consequence, the C-Sisal-kernel language is developed. The second result presented in this article is the extension of the C-kernel axiomatic semantics by an inference rule for Cloud-Sisal-kernel loops. This article also presents our approach to the problem of automating deductive verification in the case of definite iterations over data sequences. Such loops are called definite iterations. Our solution is a composition of a symbolic method of verification of definite iterations, verification condition metageneration, and mixed axiomatic semantics. The symbolic method of verification of definite iterations allows us to define inference rules for such loops without invariants. Symbolic replacement of definite iterations by recursive functions is the basis of this method. The resulting verification conditions using recursive functions correspond to the logical basis of the ACL2 prover. We use the ACL2 system based on computable recursive functions. Verification condition metageneration simplifies the implementation of new inference rules in the verification system. In some cases, the use of mixed axiomatic semantics leads to simpler verification conditions.
Literatur
8.
Zurück zum Zitat Hähnle, R. and Huisman, M., Deductive software verification: From pen-and-paper proofs to industrial tools, Computing and Software Science, Steffen, B. and Woeginger, G., Eds., Lecture Notes in Computer Science, vol. 10000, Springer, 2019, pp. 345–373. https://doi.org/10.1007/978-3-319-91908-9_18 Hähnle, R. and Huisman, M., Deductive software verification: From pen-and-paper proofs to industrial tools, Computing and Software Science, Steffen, B. and Woeginger, G., Eds., Lecture Notes in Computer Science, vol. 10000, Springer, 2019, pp. 345–373. https://​doi.​org/​10.​1007/​978-3-319-91908-9_​18
13.
16.
Zurück zum Zitat Kasyanov, V.N. and Stasenko, A.P., Sisal 3.2 language structure decomposition, Proc. European Computing Conference, Mastorakis, N., Mladenov, V., and Kontargyri, V., Eds., Lecture Notes in Electrical Engineering, vol. 28, Springer, 2009, pp. 533–543. https://doi.org/10.1007/978-0-387-85437-3_53 Kasyanov, V.N. and Stasenko, A.P., Sisal 3.2 language structure decomposition, Proc. European Computing Conference, Mastorakis, N., Mladenov, V., and Kontargyri, V., Eds., Lecture Notes in Electrical Engineering, vol. 28, Springer, 2009, pp. 533–543. https://​doi.​org/​10.​1007/​978-0-387-85437-3_​53
20.
Zurück zum Zitat Gaudiot, J.-L., DeBoni, T., Feo, J., Böhm, W., Najjar, W., and Miller, P., The Sisal project: Real world functional programming, Compiler Optimizations for Scalable Parallel Systems,Pande, S. and Agrawal, D.P., Eds., Lecture Notes in Computer Science, vol. 1808, Springer, 2001, pp. 45–72. https://doi.org/10.1007/3-540-45403-9_2CrossRef Gaudiot, J.-L., DeBoni, T., Feo, J., Böhm, W., Najjar, W., and Miller, P., The Sisal project: Real world functional programming, Compiler Optimizations for Scalable Parallel Systems,Pande, S. and Agrawal, D.P., Eds., Lecture Notes in Computer Science, vol. 1808, Springer, 2001, pp. 45–72. https://​doi.​org/​10.​1007/​3-540-45403-9_​2CrossRef
23.
Zurück zum Zitat Dean, J. and Ghemawat, S., MapReduce: Simplified data processing on large clusters, Proc. 6th Conf. on Symp. on Operating Systems Design & Implementation, 2004, vol. 6. Dean, J. and Ghemawat, S., MapReduce: Simplified data processing on large clusters, Proc. 6th Conf. on Symp. on Operating Systems Design & Implementation, 2004, vol. 6.
26.
Zurück zum Zitat Jacobs, B., Kiniry, J., and Warnier, M., Java program verification challenges, Formal Methods for Components and Objects, de Boer, F.S., Bonsangue, M.M., Graf, S., and de Roever, W.P., Eds., Lecture Notes in Computer Science, vol. 2852, Springer, 2003, pp. 202–219. https://doi.org/10.1007/978-3-540-39656-7_8 Jacobs, B., Kiniry, J., and Warnier, M., Java program verification challenges, Formal Methods for Components and Objects, de Boer, F.S., Bonsangue, M.M., Graf, S., and de Roever, W.P., Eds., Lecture Notes in Computer Science, vol. 2852, Springer, 2003, pp. 202–219. https://​doi.​org/​10.​1007/​978-3-540-39656-7_​8
28.
Zurück zum Zitat Cok, D.R. and Tasiran, S., Practical methods for reasoning about Java 8’s functional programming features, in Verified Software: Theories, Tools, and Experiments. VSTTE 2018, Piskac, R. and Rümmer, P., Eds., Lecture Notes in Computer Science, vol. 11294, Springer, 2018, pp. 267–278. https://doi.org/10.1007/978-3-030-03592-1_15CrossRef Cok, D.R. and Tasiran, S., Practical methods for reasoning about Java 8’s functional programming features, in Verified Software: Theories, Tools, and Experiments. VSTTE 2018, Piskac, R. and Rümmer, P., Eds., Lecture Notes in Computer Science, vol. 11294, Springer, 2018, pp. 267–278. https://​doi.​org/​10.​1007/​978-3-030-03592-1_​15CrossRef
29.
Zurück zum Zitat ISO/IEC 14882:2020: Programming language C++. ISO/IEC, 2020. ISO/IEC 14882:2020: Programming language C++. ISO/IEC, 2020.
30.
Zurück zum Zitat ISO/IEC 9899:2011: Programming language C. ISO/IEC, 2011. ISO/IEC 9899:2011: Programming language C. ISO/IEC, 2011.
31.
Zurück zum Zitat Krebbers, R. and Wiedijk, F., A typed C11 semantics for interactive theorem proving, CPP ’15: Proc. 2015 Conference on Certified Programs and Proofs, Mumbai, India, 2015, New York: Association for Computing Machinery, 2015, pp. 15–27. https://doi.org/10.1145/2676724.2693571 Krebbers, R. and Wiedijk, F., A typed C11 semantics for interactive theorem proving, CPP ’15: Proc. 2015 Conference on Certified Programs and Proofs, Mumbai, India, 2015, New York: Association for Computing Machinery, 2015, pp. 15–27. https://​doi.​org/​10.​1145/​2676724.​2693571
32.
Zurück zum Zitat Sammler, M., Lepigre, R., Krebbers, R., Memarian, K., Dreyer, D., and Garg, D., RefinedC: automating the foundational verification of C code with refined ownership types, PLDI 2021: Proc. 42nd ACM SIGPLAN Int. Conference on Programming Language Design and Implementation, New York: Association for Computing Machinery, 2021, pp. 158–174. https://doi.org/10.1145/3453483.3454036 Sammler, M., Lepigre, R., Krebbers, R., Memarian, K., Dreyer, D., and Garg, D., RefinedC: automating the foundational verification of C code with refined ownership types, PLDI 2021: Proc. 42nd ACM SIGPLAN Int. Conference on Programming Language Design and Implementation, New York: Association for Computing Machinery, 2021, pp. 158–174. https://​doi.​org/​10.​1145/​3453483.​3454036
34.
Zurück zum Zitat Blanc, R., Kuncak, V., Kneuss, E., and Suter, P., An overview of the Leon verification system: verification by translation to recursive functions, SCALA ’13: Proc. 4th Workshop on Scala, Montpellier, France, 2013, New York: Association for Computing Machinery, 2013, p. 1. https://doi.org/10.1145/2489837.2489838 Blanc, R., Kuncak, V., Kneuss, E., and Suter, P., An overview of the Leon verification system: verification by translation to recursive functions, SCALA ’13: Proc. 4th Workshop on Scala, Montpellier, France, 2013, New York: Association for Computing Machinery, 2013, p. 1. https://​doi.​org/​10.​1145/​2489837.​2489838
35.
Zurück zum Zitat Humenberger, A., Jaroschek, M., and Kovács, L., Invariant generation for multi-path loops with polynomial assignments, Verification, Model Checking, and Abstract Interpretation. VMCAI 2018, Dillig, I. and Palsberg, J., Eds., Lecture Notes in Computer Science, vol. 10747, Springer, 2018, pp. 226–246. https://doi.org/10.1007/978-3-319-73721-8_11CrossRefMATH Humenberger, A., Jaroschek, M., and Kovács, L., Invariant generation for multi-path loops with polynomial assignments, Verification, Model Checking, and Abstract Interpretation. VMCAI 2018, Dillig, I. and Palsberg, J., Eds., Lecture Notes in Computer Science, vol. 10747, Springer, 2018, pp. 226–246. https://​doi.​org/​10.​1007/​978-3-319-73721-8_​11CrossRefMATH
37.
Zurück zum Zitat Tuerk, T., Local reasoning about while-loops, Proc. Theory Workshop at VSTTE 2010, 2010, pp. 29–39. Tuerk, T., Local reasoning about while-loops, Proc. Theory Workshop at VSTTE 2010, 2010, pp. 29–39.
38.
39.
Zurück zum Zitat Baudin, P., Bobot, F., Bühler, D., Correnson, L., Kirchner, F., Kosmatov, N., Maroneze, A., Perrelle, V., Prevosto, V., Signoles, J., and Williams, N., The dogged pursuit of bug-free C programs: the Frama-C software analysis platform, Commun. ACM, 2021, vol. 64, no. 8, pp. 56–68. https://doi.org/10.1145/3470569CrossRef Baudin, P., Bobot, F., Bühler, D., Correnson, L., Kirchner, F., Kosmatov, N., Maroneze, A., Perrelle, V., Prevosto, V., Signoles, J., and Williams, N., The dogged pursuit of bug-free C programs: the Frama-C software analysis platform, Commun. ACM, 2021, vol. 64, no. 8, pp. 56–68. https://​doi.​org/​10.​1145/​3470569CrossRef
40.
Zurück zum Zitat Attali, I., Caromel, D., and Wendelborn, A., A formal semantics and an interactive environment for Sisal, Tools and Environments for Parallel and Distributed Systems, Zaky, A. and Lewis, T., Eds., The Springer International Series in Software Engineering, vol. 2, Boston, Springer, 1996, pp. 229–256. https://doi.org/10.1007/978-1-4615-4123-3_11 Attali, I., Caromel, D., and Wendelborn, A., A formal semantics and an interactive environment for Sisal, Tools and Environments for Parallel and Distributed Systems, Zaky, A. and Lewis, T., Eds., The Springer International Series in Software Engineering, vol. 2, Boston, Springer, 1996, pp. 229–256. https://​doi.​org/​10.​1007/​978-1-4615-4123-3_​11
41.
Zurück zum Zitat Kondratyev, D. and Promsky, A., Proof strategy for automated Sisal program verification, Software Technology: Methods and Tools. TOOLS 2019, Mazzara, M., Bruel, JM., Meyer, B., and Petrenko, A., Eds., Lecture Notes in Computer Science, vol. 11771, Cham: Springer, 2019, pp. 113–120. https://doi.org/10.1007/978-3-030-29852-4_9CrossRef Kondratyev, D. and Promsky, A., Proof strategy for automated Sisal program verification, Software Technology: Methods and Tools. TOOLS 2019, Mazzara, M., Bruel, JM., Meyer, B., and Petrenko, A., Eds., Lecture Notes in Computer Science, vol. 11771, Cham: Springer, 2019, pp. 113–120. https://​doi.​org/​10.​1007/​978-3-030-29852-4_​9CrossRef
42.
Zurück zum Zitat Beckert, B., Bingmann, T., Kiefer, M., Sanders, P., Ulbrich, M., and Weigl, A., Relational equivalence proofs between imperative and MapReduce algorithms, Verified Software. Theories, Tools, and Experiments. VSTTE 2018, Piskac, R. and Rümmer, P., Eds., Lecture Notes in Computer Science, vol. 11294, Springer, 2018, pp. 248–266. https://doi.org/10.1007/978-3-030-03592-1_14 Beckert, B., Bingmann, T., Kiefer, M., Sanders, P., Ulbrich, M., and Weigl, A., Relational equivalence proofs between imperative and MapReduce algorithms, Verified Software. Theories, Tools, and Experiments. VSTTE 2018, Piskac, R. and Rümmer, P., Eds., Lecture Notes in Computer Science, vol. 11294, Springer, 2018, pp. 248–266. https://​doi.​org/​10.​1007/​978-3-030-03592-1_​14
43.
Metadaten
Titel
Towards Automatic Deductive Verification of C Programs with Sisal Loops Using the C-lightVer System
verfasst von
D. A. Kondratyev
Publikationsdatum
01.12.2022
Verlag
Pleiades Publishing
Erschienen in
Automatic Control and Computer Sciences / Ausgabe 7/2022
Print ISSN: 0146-4116
Elektronische ISSN: 1558-108X
DOI
https://doi.org/10.3103/S0146411622070070

Weitere Artikel der Ausgabe 7/2022

Automatic Control and Computer Sciences 7/2022 Zur Ausgabe

Neuer Inhalt