skip to main content
10.1145/503272.503291acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article

Predicate abstraction for software verification

Published:01 January 2002Publication History

ABSTRACT

Software verification is an important and difficult problem. Many static checking techniques for software require annotations from the programmer in the form of method specifications and loop invariants. This annotation overhead, particularly of loop invariants, is a significant hurdle in the acceptance of static checking. We reduce the annotation burden by inferring loop invariants automatically.Our method is based on predicate abstraction, an abstract interpretation technique in which the abstract domain is constructed from a given set of predicates over program variables. A novel feature of our approach is that it infers universally-quantified loop invariants, which are crucial for verifying programs that manipulate unbounded data such as arrays. We present heuristics for generating appropriate predicates for each loop automatically; the programmer can specify additional predicates as well. We also present an efficient algorithm for computing the abstraction of a set of states in terms of a collection of predicates.Experiments on a 44KLOC program show that our approach can automatically infer the necessary predicates and invariants for all but 31 of the 396 routines that contain loops.

References

  1. BBM97.N.S.Bj~rner,A.Browne,and Z.Manna.Automatic generation of invariants and intermediate assertions. Theoretical Computer Science 173(1):49 -87,1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. BLS96.S.Bensalem,Y.Lakhnech,and H.Saidi.Powerful techniques for the automatic eneration of invariants. In R.Alur and T.A.Henzinger,editors,CAV 96: Computer Aided Verification Lecture Notes in Computer Science 1102,pages 325 -335.Springer-Verlag, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. BMMR01.T.Ball,R.Majumdar,T.Millstein,and S.K.Rajamani.Automatic predicate abstraction of C programs.In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI),pages 203 -213,2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Bry86.R.E.Bryant.Graph-based algorithms for boolean function manipulation.IEEE Transactions on Computers C-35(8):677 -691,1986.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. BvW98.R.-J.Back and J.von Wright.Refinement Calculus: A Systematic Introduction Graduate Texts in Computer Science.Springer-Verlag,1998.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. CC77.P.Cousot and R.Cousot.Abstract interpretation: a uni .ed lattice model for the static analysis of programs by construction or approximation of fixpoints. In Proceedings of the Fourth Annual Symposium on Principles of Programming Languages ACM Press, 1977.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. CGJ+00.E.M.Clarke,O.Grumber ,S.Jha,Y.Lu,and H.Veith.Counterexample-uided abstraction refinement.In E.A.Emerson and A.P.Sistla,editors,CAV 2000: Computer Aided Verification Lecture Notes in Computer Science 1855,pages 154 -169.Springer- Verlag,2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. CH78.P.Cousot and N.Halbwachs.Automatic discovery of linear restraints amon variables of a pro ram.In Proceedings of the 5th Annual Symposium on Princiles of Programming Languages pages 84 -96.ACM Press,1978.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. DDP99.S.Das,D.L.Dill,and S.Park.Experience with predicate abstraction.In N.Halbwachs and D.Peled, editors,CAV 99: Computer Aided Verification Lecture Notes in Computer Science 1633,pages 160 -171. Springer-Verlag,1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Dij76.E.W.Dijkstra.A Discipline of Programming Prentice-Hall,1976.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. DLNS98.D.L.Detlefs,K.R.M.Leino,C.G.Nelson,and J.B. Saxe.Extended static checking.Research Report 159,Compaq Systems Research Center,December 1998.]]Google ScholarGoogle Scholar
  12. FS01.C.Flanagan and J.B.Saxe.Avoiding exponential explosion:Generating compact verification conditions. In Conference Record of the 28th Annual ACM Symposium on Principles of Programming Languages pages 193 -205.ACM,January 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. GS97.S.Graf and H.Saidi.Construction of abstract state graphs with PVS.In O.Grumber, editor,CAV 97: Computer Aided Verification Lecture Notes in Computer Science 1254,pages 72 -83.Springer-Verlag, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. GW74.I.Greif and R.Waldin er.A more mechanical heuristic approach to program veri .cation.In Proceedings of the International Symposium on Programming pages 83 -90,1974.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. GW75.S.M.German and B.Wegbreit.A synthesizer of inductive assertions.IEEE Transactions on Software Engineering SE-1(1):68 -75,1975.]]Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. KM76.S.M.Katz and Z.Manna.A logical analysis of programs.Communications of the ACM 19(4):188 -206, 1976.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. LSS99.K.R.M.Leino,J.B.Saxe,and R.Stata.Checkin Java programs via guarded commands.In Bart Jacobs,Gary T.Leavens,Peter Muller,and Arnd Poetzsch-Heffter,editors,Formal Techniques for Java Programs Technical Report 251.Fernuniversitat Hagen,May 1999.]]Google ScholarGoogle Scholar
  18. MP92.Z.Manna and A.Pnueli.The Temporal Logic of Reactive and Concurrent Systems: Specification Springer-Verlag,1992.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Nel81.C.G.Nelson.Techniques for program verification. Technical Report CSL-81-10,Xerox Palo Alto Research Center,1981.]]Google ScholarGoogle Scholar
  20. Nel89.C.G.Nelson.A eneralization of Dijkstra's calculus. ACM Transactions on Programming Languages and Systems 11(4):517 -561,1989.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. SI77.N.Suzuki and K.Ishihata.Implementation of an array bound checker.In Proceedings of the 4th Annual Symposium on Principles of Programming Languages pages 132 -143.ACM Press,1977.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. SS99.S.Saidi and N.Shankar.Abstract and model check while you prove.In N.Halbwachs and D.Peled,editors,CAV 99: Computer Aided Verification Lecture Notes in Computer Science 1633,pages 443 -454. Springer-Verlag,1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. TML97.C.A.Thekkath,T.Mann,and E.K.Lee.Frangipani: A scalable distributed file system.In Proceedings of the 16th ACM Symposium on Operating Systems Principles pages 224 -237,October 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Weg74.B.We breit.The synthesis of loop predicates.Communications of the ACM 17(2):102 -112,1974.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  1. Predicate abstraction for software verification

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            POPL '02: Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
            January 2002
            351 pages
            ISBN:1581134509
            DOI:10.1145/503272

            Copyright © 2002 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 1 January 2002

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • Article

            Acceptance Rates

            POPL '02 Paper Acceptance Rate28of128submissions,22%Overall Acceptance Rate824of4,130submissions,20%

            Upcoming Conference

            POPL '25

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader