Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Analyzing recursive programs using a fixed-point calculus

Published: 15 June 2009 Publication History

Abstract

We show that recursive programs where variables range over finite domains can be effectively and efficiently analyzed by describing the analysis algorithm using a formula in a fixed-point calculus. In contrast with programming in traditional languages, a fixed-point calculus serves as a high-level programming language to easily, correctly, and succinctly describe model-checking algorithms While there have been declarative high-level formalisms that have been proposed earlier for analysis problems (e.g., Datalog the fixed-point calculus we propose has the salient feature that it also allows algorithmic aspects to be specified.
We exhibit two classes of algorithms of symbolic (BDD-based) algorithms written using this framework-- one for checking for errors in sequential recursive Boolean programs, and the other to check for errors reachable within a bounded number of context-switches in a concurrent recursive Boolean program. Our formalization of these otherwise complex algorithms is extremely simple, and spans just a page of fixed-point formulae. Moreover, we implement these algorithms in a tool called Getafix which expresses algorithms as fixed-point formulae and evaluates them efficiently using a symbolic fixed-point solver called Mucke. The resulting model-checking tools are surprisingly efficient and are competitive in performance with mature existing tools that have been fine-tuned for these problems.

References

[1]
R. Alur, M. Benedikt, K. Etessami, P. Godefroid, T. W. Reps, and M. Yannakakis. Analysis of recursive state machines. ACM Trans. Program. Lang. Syst., 27(4):786--818, 2005.
[2]
R. Alur, M. McDougall, and Z. Yang. Exploiting behavioral hierarchy for efficient model checking. In E. Brinksma and K. G. Larsen, editors, CAV, volume 2404 of Lecture Notes in Computer Science, pages 338--342. Springer, 2002.
[3]
T. Ball, B. Cook, V. Levin, and S. K. Rajamani. SLAM and Static Driver Verifier: Technology transfer of formal methods inside Microsoft. In E. A. Boiten, J. Derrick, and G. Smith, editors, IFM, volume 2999 of Lecture Notes in Computer Science, pages 1--20. Springer, 2004.
[4]
T. Ball and S. K. Rajamani. Bebop: A symbolic model checker for Boolean programs. In K. Havelund, J. Penix, and W. Visser, editors, SPIN, volume 1885 of Lecture Notes in Computer Science, pages 113--130. Springer, 2000.
[5]
T. Ball and S. K. Rajamani. The SLAM project: debugging system software via static analysis. In POPL, pages 1--3. ACM, 2002.
[6]
D. Beyer, T. A. Henzinger, R. Jhala, and R. Majumdar. The software model checker Blast. STTT, 9(5--6):505--525, 2007.
[7]
A. Biere. Mucke -- efficient mu-calculus model checking. In O. Grumberg, editor, CAV, volume 1254 of Lecture Notes in Computer Science, pages 468--471. Springer, 1997.
[8]
J. R. Buchi. Regular canonical systems. Arch. Math. Logik Grundlagenforschung, 6:91--111, 1964.
[9]
S. Chaudhuri. Subcubic algorithms for recursive state machines. In G. C. Necula and P. Wadler, editors, POPL, pages 159--169. ACM, 2008.
[10]
B. Cook, A. Podelski, and A. Rybalchenko. Terminator: Beyond safety. In T. Ball and R. B. Jones, editors, CAV, volume 4144 of Lecture Notes in Computer Science, pages 415--418. Springer, 2006.
[11]
J. Esparza and S. Schwoon. A BDD-based model checker for recursive programs. In G. Berry, H. Comon, and A. Finkel, editors, CAV, volume 2102 of Lecture Notes in Computer Science, pages 324--336. Springer, 2001.
[12]
A. Lal and T. W. Reps. Reducing concurrent analysis under a context bound to sequential analysis. In A. Gupta and S. Malik, editors, CAV, volume 5123 of Lecture Notes in Computer Science, pages 37--51. Springer, 2008.
[13]
M. S. Lam, J. Whaley, V. B. Livshits, M. C. Martin, D. Avots, M. Carbin, and C. Unkel. Context-sensitive program analysis as database queries. In C. Li, editor, PODS, pages 1--12. ACM, 2005.
[14]
O. Lhoták and L. Hendren. Jedd: a bdd-based relational extension of java. In PLDI '04: Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation, pages 158--169, New York, NY, USA, 2004. ACM.
[15]
M. Musuvathi and S. Qadeer. Iterative context bounding for systematic testing of multithreaded programs. In J. Ferrante and K. S. McKinley, editors, PLDI, pages 446--455. ACM, 2007.
[16]
W. Pugh and C. Chambers, editors. Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation 2004, Washington, DC, USA, June 9--11, 2004. ACM, 2004.
[17]
S. Qadeer and J. Rehof. Context-bounded model checking of concurrent software. In N. Halbwachs and L. D. Zuck, editors, TACAS, volume 3440 of Lecture Notes in Computer Science, pages 93--107. Springer, 2005.
[18]
S. Qadeer and D. Wu. Kiss: keep it simple and sequential. In Pugh and Chambers {16}, pages 14--24.
[19]
T.W. Reps, S. Horwitz, and S. Sagiv. Precise interprocedural dataflow analysis via graph reachability. In POPL, pages 49--61, 1995.
[20]
T.W. Reps, S. Schwoon, and S. Jha. Weighted pushdown systems and their application to interprocedural dataflow analysis. In R. Cousot, editor, SAS, volume 2694 of Lecture Notes in Computer Science, pages 189--213. Springer, 2003.
[21]
S. Schwoon. Model-Checking Pushdown Systems. PhD thesis, Technische Universitat Munchen, 2002.
[22]
M. Sharir and A. Pnueli. Two approaches to inter-procedural data-flow analysis. In Program Flow Analysis: Theory and Applications, 1981.
[23]
D. Suwimonteerabuth, J. Esparza, and S. Schwoon. Symbolic contextbounded analysis of multithreaded java programs. In K. Havelund, R. Majumdar, and J. Palsberg, editors, SPIN, volume 5156 of Lecture Notes in Computer Science, pages 270--287. Springer, 2008.
[24]
I. Walukiewicz. Pushdown processes: Games and model-checking. Inf. Comput., 164(2):234--263, 2001.
[25]
J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In Pugh and Chambers {16}, pages 131--144.

Cited By

View all
  • (2021)Bounded Verification of Multi-threaded Programs via Lazy SequentializationACM Transactions on Programming Languages and Systems10.1145/347853644:1(1-50)Online publication date: 9-Dec-2021
  • (2021)Delay-Bounded Scheduling Without Delay!Computer Aided Verification10.1007/978-3-030-81685-8_18(380-402)Online publication date: 15-Jul-2021
  • (2020)Revisiting Underapproximate Reachability for Multipushdown SystemsTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-030-45190-5_21(387-404)Online publication date: 17-Apr-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 44, Issue 6
PLDI '09
June 2009
478 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/1543135
Issue’s Table of Contents
  • cover image ACM Conferences
    PLDI '09: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation
    June 2009
    492 pages
    ISBN:9781605583921
    DOI:10.1145/1542476
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: 15 June 2009
Published in SIGPLAN Volume 44, Issue 6

Check for updates

Author Tags

  1. abstraction
  2. logic
  3. model-checking
  4. mu-calculus
  5. recursive systems
  6. software verification

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)9
  • Downloads (Last 6 weeks)2
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Bounded Verification of Multi-threaded Programs via Lazy SequentializationACM Transactions on Programming Languages and Systems10.1145/347853644:1(1-50)Online publication date: 9-Dec-2021
  • (2021)Delay-Bounded Scheduling Without Delay!Computer Aided Verification10.1007/978-3-030-81685-8_18(380-402)Online publication date: 15-Jul-2021
  • (2020)Revisiting Underapproximate Reachability for Multipushdown SystemsTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-030-45190-5_21(387-404)Online publication date: 17-Apr-2020
  • (2019)Verifying Asynchronous Event-Driven Programs Using Partial Abstract TransformersComputer Aided Verification10.1007/978-3-030-25543-5_22(386-404)Online publication date: 12-Jul-2019
  • (2014)Context-Bounded Analysis of TSO SystemsFrom Programs to Systems. The Systems perspective in Computing10.1007/978-3-642-54848-2_2(21-38)Online publication date: 2014
  • (2014)Bounded Model Checking of Multi-threaded C Programs via Lazy SequentializationProceedings of the 16th International Conference on Computer Aided Verification - Volume 855910.1007/978-3-319-08867-9_39(585-602)Online publication date: 18-Jul-2014
  • (2014)Vac - Verifier of Administrative Role-Based Access Control PoliciesProceedings of the 16th International Conference on Computer Aided Verification - Volume 855910.1007/978-3-319-08867-9_12(184-191)Online publication date: 18-Jul-2014
  • (2013)Policy analysis for self-administrated role-based access controlProceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-642-36742-7_30(432-447)Online publication date: 16-Mar-2013
  • (2012)Synchronisation- and reversal-bounded analysis of multithreaded programs with countersProceedings of the 24th international conference on Computer Aided Verification10.1007/978-3-642-31424-7_22(260-276)Online publication date: 7-Jul-2012
  • (2024)On Verifying Concurrent Programs Under Weak Consistency Models: Decidability and ComplexityTaming the Infinities of Concurrency10.1007/978-3-031-56222-8_7(133-147)Online publication date: 20-Mar-2024
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media