skip to main content
chapter

The First Fifteen Years of the Verified Software Project

Published: 02 October 2021 Publication History
First page of PDF

References

[1]
J. Abrial. 1996. The B-Book—Assigning Programs to Meanings. Cambridge University Press.
[2]
J. R. Abrial. 1980. The Specification Language Z: Syntax and Semantics. Programming Research Group, Oxford University, Oxford, UK.
[3]
J. Abrial, S. A. Schuman, and B. Meyer. 1980. Specification language. In R. M. McKeag and A. M. Macnaghten (Eds.), On the Construction of Programs. Cambridge University Press, 343–410.
[4]
J. Alglave, D. Kroening, V. Nimal, and M. Tautschnig. 2013. Software verification for weak memory via program transformation. In M. Felleisen and P. Gardner (Eds.), Programming Languages and Systems—22nd European Symposium on Programming, ESOP 2013, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2013 (March 16–24, 2013). Proceedings, Vol. 7792 of Lecture Notes in Computer Science. Springer, Rome, Italy, 512–532. ISBN 978-3-642-37035-9.
[5]
R. Alur, C. Courcoubetis, and D. L. Dill. 1993. Model-checking in dense real-time. Inf. Comput. 104, 1, 2–34.
[6]
R. Alur, C. Courcoubetis, N. Halbwachs, T. A. Henzinger, P.-H. Ho, X. Nicollin, A. Olivero, J. Sifakis, and S. Yovine. 1995. The algorithmic analysis of hybrid systems. Theor. Comput. Sci. 138, 1, 3–34.
[7]
A. L. Ambler, D. I. Good, J. C. Browne, W. F. Burger, R. M. Cohen, C. G. Hoch, and R. E. Wells. Mar. 1977. Gypsy: A language for specification and implementation of verifiable programs. In D. B. Wortman (Ed.), Proceedings of an ACM Conference on Language Design for Reliable Software. ACM, 1–10.
[8]
V. Astrauskas, P. Müller, F. Poli, and A. J. Summers. 2019. Leveraging Rust types for modular specification and verification. In Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), Vol. 3. ACM, 147:1–147:30.
[9]
M. F. Atig, A. Bouajjani, and G. Parlato. 2011. Getting rid of store-buffers in TSO analysis. In Gopalakrishnan and Qadeer [2011]. 99–115. ISBN 978-3-642-22109-5.
[10]
B. E. Aydemir, A. Bohannon, M. Fairbairn, J. N. Foster, B. C. Pierce, P. Sewell, D. Vytiniotis, G. Washburn, S. Weirich, and S. Zdancewic. 2005. Mechanized metatheory for the masses: The POPLMark challenge. In J. Hurd and T. F. Melham (Eds.), TPHOLs, Vol. 3603 of Lecture Notes in Computer Science. Springer, 50–65. ISBN 3-540-28372-2.
[11]
R. Back and J. von Wright. 1998. Refinement Calculus: A Systematic Introduction. Springer.
[12]
M. Barnett, B.-Y. E. Chang, R. DeLine, B. Jacobs, and K. R. M. Leino. 2005. Boogie: A modular reusable verifier for object-oriented programs. In International Symposium on Formal Methods for Components and Objects. Springer, 364–387.
[13]
M. Barnett, M. Fähndrich, K. R. M. Leino, P. Müller, W. Schulte, and H. Venter. June 2011. Specification and verification: The Spec# experience. Commun. ACM 54, 6, 81–91.
[14]
C. Barrett, L. de Moura, and A. Stump. 2005. Design and results of the 1st Satisfiability Modulo Theories Competition (SMT-COMP 2005). J. Autom. Reason. 35, 4, 373–390.
[15]
C. W. Barrett, C. L. Conway, M. Deters, L. Hadarean, D. Jovanovic, T. King, A. Reynolds, and C. Tinelli. 2011. In Gopalakrishnan and Qadeer [2011]. CVC4. 171–177. ISBN 978-3-642-22109-5.
[16]
G. Barthe, B. Grégoire, and S. Z. Béguelin. 2009. Formal certification of code-based cryptographic proofs. In Shao and Pierce [2009]. 90–101. ISBN 978-1-60558-379-2.
[17]
G. Barthe, P. R. D’Argenio, and T. Rezk. 2011. Secure information flow by self-composition. Math. Struct. Comput. Sci. 21, 6, 1207–1252.
[18]
G. Barthe, C. Fournet, B. Grégoire, P.-Y. Strub, N. Swamy, and S. Zanella-Béguelin. 2014. Probabilistic relational verification for cryptographic implementations. ACM SIGPLAN Not. 49, 1, 193–205.
[19]
N. Benton. 2004. Simple relational correctness proofs for static analyses and program transformations. In N. D. Jones and X. Leroy (Eds.), Proceedings of the 31st ACM SIGPLAN–SIGACT Symposium on Principles of Programming Languages, POPL 2004 (January 14–16, 2004). ACM, Venice, Italy, 14–25. ISBN 1-58113-729-X.
[20]
J. Berdine, C. Calcagno, and P. W. O’Hearn. 2005. Symbolic execution with separation logic. In K. Yi (Ed.), Programming Languages and Systems, Third Asian Symposium, APLAS 2005 (November 2–5, 2005). Proceedings, Vol. 3780 of Lecture Notes in Computer Science. Springer, Tsukuba, Japan, 52–68. ISBN 3-540-29735-9.
[21]
Y. Bertot and P. Castéran. 2004. Interactive Theorem Proving and Program Development—Coq ’Art: The Calculus of Inductive Constructions. Texts in Theoretical Computer Science. An EATCS Series. Springer. ISBN 978-3-642-05880-6.
[22]
W. R. Bevier, W. A. Hunt Jr, J. S. Moore, and W. D. Young. Dec. 1989. An approach to systems verification. J. Autom. Reason. 5, 4, 411–428.
[23]
A. Biere and R. Bloem (Eds.), 2014. Computer Aided Verification—26th International Conference, CAV 2014, Held as Part of the Vienna Summer of Logic, VSL 2014 (July 18–22, 2014). Proceedings, Vol. 8559 of Lecture Notes in Computer Science. Springer, Vienna, Austria. ISBN 978-3-319-08866-2.
[24]
L. Birkedal, N. Torp-Smith, and H. Yang. 2005. Semantics of separation-logic typing and higher-order frame rules. In 20th IEEE Symposium on Logic in Computer Science (LICS 2005) (26–29 June 2005), Proceedings. IEEE Computer Society, Chicago, IL, 260–269. ISBN 0-7695-2266-1.
[25]
D. Bjørner and C. B. Jones (Eds.), 1978. The Vienna Development Method: The Meta-Language, Vol. 61 of Lecture Notes in Computer Science. Springer. ISBN 3-540-08766-4.
[26]
N. Bjørner, A. Gurfinkel, K. McMillan, and A. Rybalchenko. 2015. Horn clause solvers for program verification. In Fields of Logic and Computation II. Springer, 24–51.
[27]
A. Blanchard, F. Loulergue, and N. Kosmatov. 2019. Towards full proof automation in Frama-C using auto-active verification. In J. M. Badger and K. Y. Rozier (Eds.), NASA Formal Methods (NFM), Vol. 11460 of Lecture Notes in Computer Science. Springer, 88–105.
[28]
S. Blom, S. Darabi, M. Huisman, and W. Oortwijn. 2007. The VerCors tool set: Verification of parallel and concurrent software. In N. Polikarpova and S. Schneider (Eds.), Integrated Formal Methods (IFM), Vol. 10510 of Lecture Notes in Computer Science. Springer, 102–110.
[29]
M. G. Bobaru, K. Havelund, G. J. Holzmann, and R. Joshi (Eds.), 2011. NASA Formal Methods—Third International Symposium, NFM 2011 (April 18–20, 2011). Proceedings, Vol. 6617 of Lecture Notes in Computer Science. Springer, Pasadena, CA. ISBN 978-3-642-20397-8.
[30]
R. S. Boyer and J. S. Moore. 1979. A Computational Logic Handbook, Vol. 23 of Perspectives in Computing. Academic Press. ISBN 978-0-12-122952-8.
[31]
R. S. Boyer and J. S. Moore. 1998. A Computational Logic Handbook, Second Edition. Academic Press International Series in Formal Methods. Academic Press. ISBN 978-0-12-122955-9.
[32]
J. Boyland. 2003. Checking interference with fractional permissions. In R. Cousot (Ed.), Static Analysis, 10th International Symposium, SAS 2003 (June 11–13, 2003). Proceedings, Vol. 2694 of Lecture Notes in Computer Science. Springer, San Diego, CA, 55–72. ISBN 3-540-40325-6.
[33]
A. R. Bradley. 2011. SAT-based model checking without unrolling. In R. Jhala and D. A. Schmidt (Eds.), Verification, Model Checking, and Abstract Interpretation—12th International Conference, VMCAI 2011 (January 23–25, 2011). Proceedings, Vol. 6538 of Lecture Notes in Computer Science. Springer, Austin, TX, 70–87. ISBN 978-3-642-18274-7.
[34]
J. R. Burch, E. M. Clarke, K. L. McMillan, D. L. Dill, and L. J. Hwang. 1990. Symbolic model checking: 1020 states and beyond. In Proceedings of the Fifth Annual Symposium on Logic in Computer Science (LICS’90) (June 4–7, 1990). IEEE Computer Society, Philadelphia, PA, 428–439. ISBN 0-8186-2073-0.
[35]
R. Butler, G. Hagen, J. Maddalon, C. Muñoz, A. Narkawicz, and G. Dowek. April 2010. How formal methods impels discovery: A short history of an air traffic management project. In C. Muñoz (Ed.), Proceedings of the Second NASA Formal Methods Symposium (NFM 2010), NASA/CP-2010-216215. NASA, Langley Research Center, Hampton VA 23681-2199, 34–46.
[36]
C. Cadar, D. Dunbar, and D. R. Engler. 2008. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In R. Draves and R. van Renesse (Eds.), 8th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2008 (December 8–10, 2008), Proceedings. USENIX Association, San Diego, CA, 209–224. ISBN 978-1-931971-65-2. http://www.usenix.org/events/osdi08/tech/full_papers/cadar/cadar.pdf.
[37]
C. Calcagno and D. Distefano. 2011. Infer: An automatic program verifier for memory safety of C programs. In Bobaru et al. [2011]. 459–465. ISBN 978-3-642-20397-8.
[38]
C. Calcagno, D. Distefano, P. W. O’Hearn, and H. Yang. 2009. Compositional shape analysis by means of bi-abduction. In Shao and Pierce [2009]. 289–300. ISBN 978-1-60558-379-2.
[39]
Q. Cao, L. Beringer, S. Gruetter, J. Dodds, and A. W. Appel. 2018. VST-Floyd: A separation logic tool to verify correctness of C programs. J. Autom. Reason. 61, 1–4, 367–422.
[40]
M. Carter, S. He, J. Whitaker, Z. Rakamaric, and M. Emmi. 2016. SMACK software verification toolchain. In L. K. Dillon, W. Visser, and L. Williams (Eds.), International Conference on Software Engineering (ICSE). ACM, 589–592.
[41]
H. Chen, D. Ziegler, T. Chajed, A. Chlipala, M. F. Kaashoek, and N. Zeldovich. 2015. Using Crash Hoare logic for certifying the FSCQ file system. In Proceedings of the 25th Symposium on Operating Systems Principles. 18–37.
[42]
M. Christakis and P. Godefroid. 2015. Proving memory safety of the ANI Windows image parser using compositional exhaustive testing. In D. D’Souza, A. Lal, and K. G. Larsen (Eds.), Verification, Model Checking, and Abstract Interpretation—16th International Conference, VMCAI 2015 (January 12–14, 2015). Proceedings, Vol. 8931 of Lecture Notes in Computer Science. Springer, Mumbai, IN, 373–392. ISBN 978-3-662-46080-1.
[43]
E. M. Clarke and E. A. Emerson. 1981. Design and synthesis of synchronization skeletons using branching-time temporal logic. In D. Kozen (Ed.), Logics of Programs, Workshop, Yorktown Heights (May 1981), Vol. 131 of Lecture Notes in Computer Science. Springer, New York, 52–71. ISBN 3-540-11212-X.
[44]
E. M. Clarke, E. A. Emerson, and A. P. Sistla. 1983. Automatic verification of finite state concurrent systems using temporal logic specifications: A practical approach. In J. R. Wright, L. Landweber, A. J. Demers, and T. Teitelbaum (Eds.), Conference Record of the Tenth Annual ACM Symposium on Principles of Programming Languages (January 1983). ACM Press, Austin, TX, 117–126. ISBN 0-89791-090-7.
[45]
E. M. Clarke, E. A. Emerson, and A. P. Sistla. Apr. 1986. Automatic verification of finite-state concurrent systems using temporal logic specifications. ACM Trans. Program. Lang. Syst. 8, 2, 244–263.
[46]
E. M. Clarke, A. Biere, R. Raimi, and Y. Zhu. 2001. Bounded model checking using satisfiability solving. Form. Methods Syst. Des. 19, 1, 7–34.
[47]
E. M. Clarke, T. A. Henzinger, H. Veith, and R. Bloem (Eds.), 2018. Handbook of Model Checking. Springer.
[48]
E. Cohen, M. Moskal, W. Schulte, and S. Tobies. 2010. Local verification of global invariants in concurrent programs. In T. Touili, B. Cook, and P. Jackson (Eds.), Computer Aided Verification (CAV), Vol. 6174 of Lecture Notes in Computer Science. Springer, 480–494.
[49]
R. L. Constable, S. F. Allen, H. M. Bromley, W. R. Cleaveland, J. F. Cremer, R. W. Harper, D. J. Howe, T. B. Knoblock, N. P. Mendler, P. Panangaden, J. T. Sasaki, and S. F. Smith. 1986. Implementing Mathematics with the Nuprl Proof Development System. Prentice Hall, Englewood Cliffs, NJ. Nuprl home page: http://www.nuprl.org/.
[50]
P. Cousot and R. Cousot. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In R. M. Graham, M. A. Harrison, and R. Sethi (Eds.), Conference Record of the Fourth ACM Symposium on Principles of Programming Languages (January 1977). ACM, Los Angeles, CA, 238–252.
[51]
L. M. de Moura and N. Bjørner. 2008. Z3: An efficient SMT solver. In C. R. Ramakrishnan and J. Rehof (Eds.), Tools and Algorithms for the Construction and Analysis of Systems, 14th International Conference, TACAS 2008, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2008 (March 29–April 6, 2008). Proceedings, Vol. 4963 of Lecture Notes in Computer Science. Springer, Budapest, Hungary, 337–340. ISBN 978-3-540-78799-0.
[52]
A. Delignat-Lavaud, C. Fournet, M. Kohlweiss, J. Protzenko, A. Rastogi, N. Swamy, S. Z. Béguelin, K. Bhargavan, J. Pan, and J. K. Zinzindohoue. 2017. Implementing and proving the TLS 1.3 record layer. In 2017 IEEE Symposium on Security and Privacy, SP 2017 (May 22–26, 2017). IEEE Computer Society, San Jose, CA, 463–482. ISBN 978-1-5090-5533-3.
[53]
D. Detlefs, G. Nelson, and J. B. Saxe. 2005. Simplify: A theorem prover for program checking. J. ACM 52, 3, 365–473.
[54]
D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. 1998. Extended Static Checking. Technical Report 159, COMPAQ Systems Research Center.
[55]
E. W. Dijkstra. 1975. Guarded commands, nondeterminacy and formal derivation of programs. Commun. ACM 18, 8, 453–457.
[56]
E. W. Dijkstra. Dec. 1989. On the cruelty of really teaching computing science. Commun. ACM 32, 1, 1398–1404.
[57]
T. Dinsdale-Young, M. Dodds, P. Gardner, M. J. Parkinson, and V. Vafeiadis. 2010. Concurrent abstract predicates. In T. D’Hondt (Ed.), ECOOP 2010—Object-Oriented Programming, 24th European Conference (June 21–25, 2010). Proceedings, Vol. 6183 of Lecture Notes in Computer Science. Springer, Maribor, Slovenia, 504–528. ISBN 978-3-642-14106-5.
[58]
D. Distefano, M. Fähndrich, F. Logozzo, and P. W. O’Hearn. 2019. Scaling static analyses at Facebook. Commun. ACM 62, 8, 62–70.
[59]
B. Dutertre. 2014. Yices 2.2. In Biere and Bloem [2014]. 737–744. ISBN 978-3-319-08866-2.
[60]
N. Eén, A. Mishchenko, and R. K. Brayton. 2011. Efficient implementation of property directed reachability. In P. Bjesse and A. Slobodová (Eds.), International Conference on Formal Methods in Computer-Aided Design, FMCAD ’11 (October 30–November 02, 2011). FMCAD, Inc., Austin, TX, 125–134. ISBN 978-0-9835678-1-3. http://dl.acm.org/citation.cfm?id=2157675.
[61]
M. Eilers and P. Müller. 2018. Nagini: A static verifier for Python. In H. Chockler and G. Weissenbacher (Eds.), Computer Aided Verification (CAV), Vol. 10982 of Lecture Notes in Computer Science. Springer, 596–603.
[62]
B. Elspas, K. N. Levitt, R. J. Waldinger, and A. Waksman. 1972. An assessment of techniques for proving program correctness. ACM Comput. Surv. 4, 2, 97–147. ISSN 0360-0300.
[63]
X. Feng, R. Ferreira, and Z. Shao. 2007. On the relationship between concurrent separation logic and assume–guarantee reasoning. In R. D. Nicola (Ed.), ESOP: Programming Languages and Systems. Springer, 173–188.
[64]
J.-C. Filliâtre and C. Marché. 2007. The Why/Krakatoa/Caduceus platform for deductive program verification. In W. Damm and H. Hermanns (Eds.), Computer Aided Verification (CAV), Vol. 4590 of Lecture Notes in Computer Science. Springer, 173–177.
[65]
J.-C. Filliâtre and A. Paskevich. 2013. Why3—Where programs meet provers. In M. Felleisen and P. Gardner (Eds.), Programming Languages and Systems (ESOP), Vol. 7792 of Lecture Notes in Computer Science. Springer, 125–128.
[66]
R. W. Floyd. 1967. Assigning meanings to programs. In Mathematical Aspects of Computer Science, Vol. 19. American Mathematical Society, 19–32.
[67]
P. Fonseca, K. Zhang, X. Wang, and A. Krishnamurthy. 2017. An empirical study on the correctness of formally verified distributed systems. In G. Alonso, R. Bianchini, and M. Vukolic (Eds.), Proceedings of the Twelfth European Conference on Computer Systems, EuroSys 2017 (April 23–26, 2017). ACM, Belgrade, Serbia, 328–343. ISBN 978-1-4503-4938-3.
[68]
T. Gehr, M. Mirman, D. Drachsler-Cohen, P. Tsankov, S. Chaudhuri, and M. T. Vechev. 2018. AI2: Safety and robustness certification of neural networks with abstract interpretation. In 2018 IEEE Symposium on Security and Privacy, SP 2018, Proceedings (21–23 May 2018). IEEE Computer Society, San Francisco, CA, 3–18. ISBN 978-1-5386-4353-2.
[69]
S. L. Gerhart, D. R. Musser, D. H. Thompson, D. A. Baker, R. L. Bates, R. W. Erickson, R. L. London, D. G. Taylor, and D. S. Wile. Oct. 1980. An overview of AFFIRM: A specification and verification system. In S. H. Lavington (Ed.), Proceedings of IFIP Congress 80. North-Holland, Tokyo, Japan, 343–347.
[70]
P. Godefroid, N. Klarlund, and K. Sen. 2005. DART: Directed automated random testing. In V. Sarkar and M. W. Hall (Eds.), Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation (June 12–15, 2005). ACM, Chicago, IL, 213–223. ISBN 1-59593-056-6.
[71]
P. Godefroid, M. Y. Levin, and D. A. Molnar. 2012. SAGE: Whitebox fuzzing for security testing. Commun. ACM 55, 3, 40–44.
[72]
G. Gopalakrishnan and S. Qadeer (Eds.), 2011. Computer Aided Verification—23rd International Conference, CAV 2011 (July 14–20, 2011). Proceedings, Vol. 6806 of Lecture Notes in Computer Science. Springer, Snowbird, UT. ISBN 978-3-642-22109-5.
[73]
M. J. C. Gordon and T. F. Melham (Eds.), 1993. Introduction to HOL: A Theorem Proving Environment for Higher-Order Logic. Cambridge University Press, Cambridge, UK. HOL home page: http://www.cl.cam.ac.uk/Research/HVG/HOL/.
[74]
R. Gu, Z. Shao, H. Chen, X. N. Wu, J. Kim, V. Sjöberg, and D. Costanzo. 2016. CertiKOS: An extensible architecture for building certified concurrent OS kernels. In K. Keeton and T. Roscoe (Eds.), 12th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2016 (November 2–4, 2016). USENIX Association, Savannah, GA, 653–669. https://www.usenix.org/conference/osdi16/technical-sessions/presentation/gu.
[75]
A. Gurfinkel, T. Kahsai, A. Komuravelli, and J. A. Navas. 2015. The SeaHorn verification framework. In D. Kroening and C. S. Pasareanu (Eds.), Computer Aided Verification—27th International Conference, CAV 2015 (July 18–24, 2015). Proceedings, Part I, Vol. 9206 of Lecture Notes in Computer Science. Springer, San Francisco, CA, 343–361. ISBN 978-3-319-21689-8.
[76]
J. V. Guttag, J. J. Horning, S. J. Garland, K. D. Jones, A. Modet, and J. M. Wing. 1993. Larch: Languages and Tools for Formal Specification. Texts and Monographs in Computer Science. Springer. ISBN 978-1-4612-7636-4.
[77]
C. Hawblitzel, J. Howell, J. R. Lorch, A. Narayan, B. Parno, D. Zhang, and B. Zill. 2014. Ironclad Apps: End-to-end security via automated full-system verification. In J. Flinn and H. Levy (Eds.), 11th USENIX Symposium on Operating Systems Design and Implementation, OSDI’14 (October 6–8, 2014). USENIX Association, Broomfield, CO, 165–181. https://www.usenix.org/conference/osdi14/technical-sessions/presentation/hawblitzel.
[78]
C. Hawblitzel, J. Howell, M. Kapritsos, J. R. Lorch, B. Parno, M. L. Roberts, S. T. V. Setty, and B. Zill. 2015. IronFleet: Proving practical distributed systems correct. In E. L. Miller and S. Hand (Eds.), Proceedings of the 25th Symposium on Operating Systems Principles, SOSP 2015 (October 4–7, 2015). ACM, Monterey, CA, 1–17. ISBN 978-1-4503-3834-9.
[79]
C. A. R. Hoare. 1969. An axiomatic basis for computer programming. Commun. ACM 12, 10, 576–580.
[80]
C. A. R. Hoare. 1972. Proof of correctness of data representations. Acta Inform. 1, 271–281.
[81]
C. A. R. Hoare. 2002. Towards the verifying compiler. In B. K. Aichernig and T. S. E. Maibaum (Eds.), Formal Methods at the Crossroads. From Panacea to Foundational Support, 10th Anniversary Colloquium of UNU/IIST, the International Institute for Software Technology of the United Nations University (March 18–20, 2002), Revised Papers, Vol. 2757 of Lecture Notes in Computer Science. Springer, Lisbon, Portugal, 151–160. ISBN 3-540-20527-6.
[82]
B. Jacobs, J. Smans, P. Philippaerts, F. Vogels, W. Penninckx, and F. Piessens. 2011. VeriFast: A powerful, sound, predictable, fast verifier for C and Java. In Bobaru et al. [2011]. 41–55. ISBN 978-3-642-20397-8.
[83]
C. B. Jones. 1980. Software Development: A Rigorous Approach. Prentice Hall International, Englewood Cliffs, NJ.
[84]
C. B. Jones. 1981. Developing Methods for Computer Programs Including a Notion of Interference. Ph.D. thesis. University of Oxford, UK. http://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.259064.
[85]
C. B. Jones. 1983. Tentative steps toward a development method for interfering programs. ACM Trans. Program. Lang. Syst. 5, 4, 596–619.
[86]
D. Kapur, G. Sivakumar, and H. Zhang. 1986. RRL: A rewrite rule laboratory. In J. H. Siekmann (Ed.), 8th International Conference on Automated Deduction (July 27–August 1, 1986). Proceedings, Vol. 230 of Lecture Notes in Computer Science. Springer, Oxford, England, 691–692. ISBN 3-540-16780-3.
[87]
I. T. Kassios. 2006. Dynamic frames: Support for framing, dependencies and sharing without restrictions. In J. Misra, T. Nipkow, and E. Sekerinski (Eds.), FM 2006: Formal Methods, 14th International Symposium on Formal Methods (August 21–27, 2006). Proceedings, Vol. 4085 of Lecture Notes in Computer Science. Springer, Hamilton, Canada, 268–283. ISBN 3-540-37215-6.
[88]
R. Kemmerer. 1980. FDM—A Specification and Verification Methodology. Technical Report SP-4088, System Development Corporation.
[89]
J. C. King. 1970. A Program Verifier. Ph.D. thesis. Carnegie Mellon University.
[90]
V. Klebanov, P. Müller, N. Shankar, G. T. Leavens, V. Wüstholz, E. Alkassar, R. Arthan, D. Bronish, R. Chapman, E. Cohen, M. Hillebrand, B. Jacobs, K. R. M. Leino, R. Monahan, F. Piessens, N. Polikarpova, T. Ridge, J. Smans, S. Tobies, T. Tuerk, M. Ulbrich, and B. Weiss. 2011. The 1st Verified Software Competition: Experience report. In M. Butler and W. Schulte (Eds.), Formal Methods (FM), Vol. 6664 of Lecture Notes in Computer Science. 154–168.
[91]
G. Klein, K. Elphinstone, G. Heiser, J. Andronick, D. Cock, P. Derrin, D. Elkaduwe, K. Engelhardt, R. Kolanski, M. Norrish, T. Sewell, H. Tuch, and S. Winwood. 2009. seL4: Formal verification of an OS kernel. In J. N. Matthews and T. E. Anderson (Eds.), Proceedings of the 22nd ACM Symposium on Operating Systems Principles 2009, SOSP 2009 (October 11–14, 2009). ACM, Big Sky, MT, 207–220. ISBN 978-1-60558-752-3.
[92]
L. Kovács and A. Voronkov. 2013. First-order theorem proving and vampire. In N. Sharygina and H. Veith (Eds.), Computer Aided Verification—25th International Conference, CAV 2013 (July 13–19, 2013). Proceedings, Vol. 8044 of Lecture Notes in Computer Science. Springer, Saint Petersburg, Russia, 1–35. ISBN 978-3-642-39798-1.
[93]
R. Kumar, M. O. Myreen, M. Norrish, and S. Owens. 2014. CakeML: A verified implementation of ML. In S. Jagannathan and P. Sewell (Eds.), The 41st Annual ACM SIGPLAN–SIGACT Symposium on Principles of Programming Languages, POPL’14 (January 20–21, 2014). ACM, San Diego, CA, 179–192. ISBN 978-1-4503-2544-8.
[94]
M. Kusano and C. Wang. 2017. Thread-modular static analysis for relaxed memory models. In E. Bodden, W. Schäfer, A. van Deursen, and A. Zisman (Eds.), Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2017 (September 4–8, 2017). ACM, Paderborn, Germany, 337–348. ISBN 978-1-4503-5105-8.
[95]
S. K. Lahiri, C. Hawblitzel, M. Kawaguchi, and H. Rebêlo. 2012. SYMDIFF: A language-agnostic semantic diff tool for imperative programs. In P. Madhusudan and S. A. Seshia (Eds.), Computer Aided Verification (CAV), Vol. 7358 of Lecture Notes in Computer Science. Springer, 712–717.
[96]
A. Lal and S. Qadeer. 2014. Powering the static driver verifier using Corral. In S. Cheung, A. Orso, and M. D. Storey (Eds.), Foundations of Software Engineering (FSE). ACM, 202–212.
[97]
A. Lal, S. Qadeer, and S. K. Lahiri. 2012. A solver for reachability modulo theories. In P. Madhusudan and S. A. Seshia (Eds.), Computer Aided Verification (CAV), Vol. 7358 of Lecture Notes in Computer Science. Springer, 427–443.
[98]
L. Lamport. 1994. The temporal logic of actions. ACM Trans. Program. Lang. Syst. 16, 3, 872–923.
[99]
C. Lattner and V. Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation. In International Symposium on Code Generation and Optimization, 2004. CGO 2004. IEEE, 75–86.
[100]
K. R. M. Leino. 2008. This is Boogie 2. Available from http://research.microsoft.com/en-us/um/people/leino/papers/krml178.pdf.
[101]
K. R. M. Leino. 2010. Dafny: An automatic program verifier for functional correctness. In E. M. Clarke and A. Voronkov (Eds.), Logic for Programming, Artificial Intelligence, and Reasoning—16th International Conference, LPAR-16 (April 25–May 1, 2010). Revised Selected Papers, Vol. 6355 of Lecture Notes in Computer Science. Springer, Dakar, Senegal, 348–370. ISBN 978-3-642-17510-7.
[102]
K. R. M. Leino and P. Müller. 2004. Object invariants in dynamic contexts. In M. Odersky (Ed.), European Conference on Object-Oriented Programming (ECOOP), Vol. 3086 of Lecture Notes in Computer Science. Springer, 491–516.
[103]
K. R. M. Leino and P. Müller. 2009. A basis for verifying multi-threaded programs. In G. Castagna (Ed.), European Symposium on Programming (ESOP), Vol. 5502 of Lecture Notes in Computer Science. Springer, 378–393.
[104]
X. Leroy. 2009. Formal verification of a realistic compiler. Commun. ACM 52, 7, 107–115.
[105]
R. J. Lipton. 1975. Reduction: A new method of proving properties of systems of processes. In R. M. Graham, M. A. Harrison, and J. C. Reynolds (Eds.), Conference Record of the Second ACM Symposium on Principles of Programming Languages (January 1975). ACM Press, Palo Alto, CA, 78–86.
[106]
B. Liskov and J. M. Wing. 1994. A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst. 16, 6, 1811–1841.
[107]
S. M. Loos, A. Platzer, and L. Nistor. 2011. Adaptive cruise control: Hybrid, distributed, and now formally verified. In International Symposium on Formal Methods. Springer, 42–56.
[108]
J. R. Lorch, Y. Chen, M. Kapritsos, B. Parno, S. Qadeer, U. Sharma, J. R. Wilcox, and X. Zhao. 2020. Armada: Low-effort verification of high-performance concurrent programs. In A. F. Donaldson and E. Torlak (Eds.), Proceedings of the 41st ACM SIGPLAN International Conference on Programming Language Design and Implementation, PLDI 2020 (June 15–20, 2020). ACM, London, UK, 197–210. ISBN 978-1-4503-7613-6.
[109]
D. C. Luckham, S. M. German, F. W. von Henke, R. A. Karp, P. W. Milne, D. C. Oppen, W. Polak, and W. L. Scherlis. Mar. 1979. Stanford Pascal Verifier User Manual. CSD Report STAN-CS-79-731, Stanford University, Stanford, CA.
[110]
Z. Manna and R. J. Waldinger. 1980. A deductive approach to program synthesis. ACM Trans. Program. Lang. Syst. 2, 1, 90–121.
[111]
Z. Manna and P. Wolper. 1984. Synthesis of communicating processes from temporal logic specifications. ACM Trans. Program. Lang. Syst. 6, 1, 68–93. ISSN 0164-0925.
[112]
J. P. Marques Silva and K. A. Sakallah. 1999. GRASP: A search algorithm for propositional satisfiability. IEEE Trans. Comput. 48, 5, 506–521.
[113]
B. Meyer. 1991. Eiffel: The Language. Prentice-Hall. ISBN 0-13-247925-7. http://www.eiffel.com/doc/#etl.
[114]
B. Meyer and J. Woodcock (Eds.), 2008. Verified Software: Theories, Tools, Experiments, First IFIP TC 2/WG 2.3 Conference, VSTTE 2005 (October 10–13, 2005), Revised Selected Papers and Discussions, Vol. 4171 of Lecture Notes in Computer Science. Springer, Zurich, Switzerland. ISBN 978-3-540-69147-1.
[115]
C. Morgan. 1990. Programming from Specifications. Prentice Hall.
[116]
M. W. Moskewicz, C. F. Madigan, Y. Zhao, L. Zhang, and S. Malik. 2001. Chaff: Engineering an efficient SAT solver. In Design Automation Conference. IEEE, 530–535.
[117]
P. Müller. 2002. Modular Specification and Verification of Object-Oriented Programs, Vol. 2262 of Lecture Notes in Computer Science. Springer.
[118]
P. Müller, M. Schwerhoff, and A. J. Summers. 2016. Viper: A verification infrastructure for permission-based reasoning. In B. Jobstmann and K. R. M. Leino (Eds.), Verification, Model Checking, and Abstract Interpretation (VMCAI), Vol. 9583 of Lecture Notes in Computer Science. Springer, 41–62.
[119]
P. Naur and B. Randell. 1969. Software Engineering: Report of a Conference Sponsored by the NATO Science Committee. Technical report, NATO Scientific Affairs Division.
[120]
G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. 2002. CIL: Intermediate language and tools for analysis and transformation of C programs. In International Conference on Compiler Construction. Springer, 213–228.
[121]
G. Nelson and D. C. Oppen. 1979. Simplification by cooperating decision procedures. ACM Trans. Program. Lang. Syst. 1, 2, 245–257.
[122]
T. Nipkow, L. C. Paulson, and M. Wenzel. 2002. Isabelle/HOL: A Proof Assistant for Higher-Order Logic. Springer. Isabelle home page: http://isabelle.in.tum.de/.
[123]
P. W. O’Hearn. 2004. Resources, concurrency and local reasoning. In P. Gardner and N. Yoshida (Eds.), CONCUR 2004—Concurrency Theory, 15th International Conference (August 31–September 3, 2004). Proceedings, Vol. 3170 of Lecture Notes in Computer Science. Springer, London, UK, 49–67. ISBN 3-540-22940-X.
[124]
P. W. O’Hearn, J. C. Reynolds, and H. Yang. 2001. Local reasoning about programs that alter data structures. In L. Fribourg (Ed.), Computer Science Logic, 15th International Workshop, CSL 2001. 10th Annual Conference of the EACSL (September 10–13, 2001). Proceedings, Vol. 2142 of Lecture Notes in Computer Science. Springer, Paris, France, 1–19. ISBN 3-540-42554-3.
[125]
S. S. Owicki and D. Gries. 1976. Verifying properties of parallel programs: An axiomatic approach. Commun. ACM 19, 5, 279–285.
[126]
S. Owre, J. M. Rushby, and N. Shankar. 1992. PVS: A prototype verification system. In D. Kapur (Ed.), Automated Deduction—CADE-11, 11th International Conference on Automated Deduction (June 15–18, 1992). Proceedings, Vol. 607 of Lecture Notes in Computer Science. Springer, Saratoga Springs, NY, 748–752. ISBN 3-540-55602-8.
[127]
M. J. Parkinson and G. M. Bierman. 2005. Separation logic and abstraction. In J. Palsberg and M. Abadi (Eds.), Proceedings of the 32nd ACM SIGPLAN–SIGACT Symposium on Principles of Programming Languages, POPL 2005 (January 12–14, 2005). ACM, Long Beach, CA, 247–258. ISBN 1-58113-830-X.
[128]
L. C. Paulson. 1994. Isabelle—A Generic Theorem Prover (with a contribution by T. Nipkow), Vol. 828 of Lecture Notes in Computer Science. Springer. ISBN 3-540-58244-4.
[129]
R. Piskac, T. Wies, and D. Zufferey. 2014. Automating separation logic with trees and data. In Biere and Bloem [2014]. 711–728. ISBN 978-3-319-08866-2.
[130]
A. Pnueli. 1977. The temporal logic of programs. In 18th Annual Symposium on Foundations of Computer Science, Providence (31 October–1 November 1977). IEEE Computer Society, Rhode Island, 46–57.
[131]
J. Protzenko, B. Parno, A. Fromherz, C. Hawblitzel, M. Polubelova, K. Bhargavan, B. Beurdouche, J. Choi, A. Delignat-Lavaud, C. Fournet, T. Ramananandro, A. Rastogi, N. Swamy, C. Wintersteiger, and S. Z. Béguelin. 2019. EverCrypt: A fast, verified, cross-platform cryptographic provider. IACR Cryptol. ePrint Arch. 2019, 757. https://eprint.iacr.org/2019/757.
[132]
Z. Shao and B. C. Pierce (Eds.), 2009. Proceedings of the 36th ACM SIGPLAN–SIGACT Symposium on Principles of Programming Languages, POPL 2009 (January 21–23, 2009). ACM, Savannah, GA. ISBN 978-1-60558-379-2. http://dl.acm.org/citation.cfm?id=1480881.
[133]
R. E. Shostak. Jan. 1984. Deciding combinations of theories. J. ACM 31, 1, 1–12.
[134]
R. E. Shostak, R. L. Schwartz, and P. M. Melliar-Smith. 1982. STP: A mechanized logic for specification and verification. In D. W. Loveland (Ed.), 6th Conference on Automated Deduction (June 7–9, 1982). Proceedings, Vol. 138 of Lecture Notes in Computer Science. Springer, New York, 32–49.
[135]
B. A. Silverberg, L. Robinson, and K. N. Levitt. June 1979. The HDM Handbook. SRI International, Computer Science Laboratory. Three Volumes.
[136]
J. M. Spivey. 1988. Understanding Z: A Specification Language and its Formal Semantics. Cambridge Tracts in Theoretical Computer Science 3. Cambridge University Press, Cambridge, UK.
[137]
N. Swamy, C. Hritcu, C. Keller, A. Rastogi, A. Delignat-Lavaud, S. Forest, K. Bhargavan, C. Fournet, P. Strub, M. Kohlweiss, J. K. Zinzindohoue, and S. Z. Béguelin. 2016. Dependent types and multi-monadic effects in F*. In R. Bodk and R. Majumdar (Eds.), Proceedings of the 43rd Annual ACM SIGPLAN–SIGACT Symposium on Principles of Programming Languages, POPL 2016 (January 20 –22, 2016). ACM, St. Petersburg, FL, 256–270. ISBN 978-1-4503-3549-2.
[138]
V. Vafeiadis. 2007. Modular Fine-Grained Concurrency Verification. Ph.D. thesis. University of Cambridge.
[139]
V. Vafeiadis and C. Narayan. 2013. Relaxed separation logic: A program logic for C11 concurrency. In A. L. Hosking, P. T. Eugster, and C. V. Lopes (Eds.), Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA 2013, part of SPLASH 2013 (October 26–31, 2013). ACM, Indianapolis, IN, 867–884. ISBN 978-1-4503-2374-1.
[140]
M. Y. Vardi and P. Wolper. 1986. Automata-theoretic techniques for modal logics of programs. J. Comput. Syst. Sci. 32, 2, 183–221.
[141]
F. W. von Henke, J. S. Crow, R. Lee, J. M. Rushby, and R. A. Whitehurst. Oct. 1988. The EHDM verification environment: An overview. In Proceedings 11th National Computer Security Conference. NBS/NCSC, Baltimore, MD, 147–155.

Cited By

View all
  • (2022)Automation of C Program Deductive Verification without Using Loop InvariantsProgramming and Computing Software10.1134/S036176882205005X48:5(331-346)Online publication date: 1-Oct-2022

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Books
Theories of Programming: The Life and Works of Tony Hoare
October 2021
450 pages
ISBN:9781450387286
DOI:10.1145/3477355

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 02 October 2021

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Chapter

Appears in

ACM Books

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)9
Reflects downloads up to 17 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2022)Automation of C Program Deductive Verification without Using Loop InvariantsProgramming and Computing Software10.1134/S036176882205005X48:5(331-346)Online publication date: 1-Oct-2022

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media