skip to main content
research-article
Open Access

HFL(Z) Validity Checking for Automated Program Verification

Published:11 January 2023Publication History
Skip Abstract Section

Abstract

We propose an automated method for checking the validity of a formula of HFL(Z), a higher-order logic with fixpoint operators and integers. Combined with Kobayashi et al.'s reduction from higher-order program verification to HFL(Z) validity checking, our method yields a fully automated, uniform verification method for arbitrary temporal properties of higher-order functional programs expressible in the modal mu-calculus, including termination, non-termination, fair termination, fair non-termination, and also branching-time properties. We have implemented our method and obtained promising experimental results.

References

  1. Tewodros A. Beyene, Corneliu Popeea, and Andrey Rybalchenko. 2013. Solving Existentially Quantified Horn Clauses. In Computer Aided Verification - 25th International Conference, CAV 2013, Saint Petersburg, Russia, July 13-19, 2013. Proceedings, Natasha Sharygina and Helmut Veith (Eds.) (Lecture Notes in Computer Science, Vol. 8044). Springer, 869–882. https://doi.org/10.1007/978-3-642-39799-8_61 Google ScholarGoogle ScholarCross RefCross Ref
  2. Nikolaj Bjørner, Arie Gurfinkel, Kenneth L. McMillan, and Andrey Rybalchenko. 2015. Horn Clause Solvers for Program Verification. In Fields of Logic and Computation II - Essays Dedicated to Yuri Gurevich on the Occasion of His 75th Birthday (LNCS, Vol. 9300). Springer, 24–51. https://doi.org/10.1007/978-3-319-23534-9_2 Google ScholarGoogle ScholarCross RefCross Ref
  3. Nikolaj S. Bjørner, Kenneth L. McMillan, and Andrey Rybalchenko. 2013. On Solving Universally Quantified Horn Clauses. In Static Analysis - 20th International Symposium, SAS 2013, Seattle, WA, USA, June 20-22, 2013. Proceedings, Francesco Logozzo and Manuel Fähndrich (Eds.) (Lecture Notes in Computer Science, Vol. 7935). Springer, 105–125. https://doi.org/10.1007/978-3-642-38856-9_8 Google ScholarGoogle ScholarCross RefCross Ref
  4. Julian C. Bradfield and Igor Walukiewicz. 2018. The mu-calculus and Model Checking. In Handbook of Model Checking, Edmund M. Clarke, Thomas A. Henzinger, Helmut Veith, and Roderick Bloem (Eds.). Springer, 871–919. https://doi.org/10.1007/978-3-319-10575-8_26 Google ScholarGoogle ScholarCross RefCross Ref
  5. Aaron R. Bradley, Zohar Manna, and Henny B. Sipma. 2005. Linear Ranking with Reachability. In Computer Aided Verification, 17th International Conference, CAV 2005, Edinburgh, Scotland, UK, July 6-10, 2005, Proceedings, Kousha Etessami and Sriram K. Rajamani (Eds.) (Lecture Notes in Computer Science, Vol. 3576). Springer, 491–504. https://doi.org/10.1007/11513988_48 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Toby Cathcart Burn, C.-H. Luke Ong, and Steven J. Ramsay. 2018. Higher-order constrained Horn clauses for verification. Proc. ACM Program. Lang., 2, POPL (2018), 11:1–11:28. https://doi.org/10.1145/3158099 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Byron Cook, Alexey Gotsman, Andreas Podelski, Andrey Rybalchenko, and Moshe Y. Vardi. 2007. Proving that programs eventually do something good. In Proceedings of the 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2007, Nice, France, January 17-19, 2007, Martin Hofmann and Matthias Felleisen (Eds.). ACM, 265–276. https://doi.org/10.1145/1190216.1190257 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Byron Cook and Eric Koskinen. 2013. Reasoning About Nondeterminism in Programs. In Proceedings of PLDI 2013. ACM Press, 219–230. https://doi.org/10.1145/2491956.2491969 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Byron Cook, Abigail See, and Florian Zuleger. 2013. Ramsey vs. Lexicographic Termination Proving. In Tools and Algorithms for the Construction and Analysis of Systems - 19th International Conference, TACAS 2013, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2013, Rome, Italy, March 16-24, 2013. Proceedings, Nir Piterman and Scott A. Smolka (Eds.) (Lecture Notes in Computer Science, Vol. 7795). Springer, 47–61. https://doi.org/10.1007/978-3-642-36742-7_4 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Giorgio Delzanno and Andreas Podelski. 2001. Constraint-based deductive model checking. Int. J. Softw. Tools Technol. Transf., 3, 3 (2001), 250–270. https://doi.org/10.1007/s100090100049 Google ScholarGoogle ScholarCross RefCross Ref
  11. Grigory Fedyukovich, Yueling Zhang, and Aarti Gupta. 2018. Syntax-Guided Termination Analysis. In Computer Aided Verification - 30th International Conference, CAV 2018, Held as Part of the Federated Logic Conference, FloC 2018, Oxford, UK, July 14-17, 2018, Proceedings, Part I (LNCS, Vol. 10981). Springer, 124–143. https://doi.org/10.1007/978-3-319-96145-3_7 Google ScholarGoogle ScholarCross RefCross Ref
  12. David Harel. 1986. Effective transformations on infinite trees, with applications to high undecidability, dominoes, and fairness. J. ACM, 33, 1 (1986), 224–248. https://doi.org/10.1145/4904.4993 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Martin Hofmann and Wei Chen. 2014. Abstract interpretation from Büchi automata. In Joint Meeting of the Twenty-Third EACSL Annual Conference on Computer Science Logic (CSL) and the Twenty-Ninth Annual ACM/IEEE Symposium on Logic in Computer Science (LICS), CSL-LICS ’14, Vienna, Austria, July 14 - 18, 2014, Thomas A. Henzinger and Dale Miller (Eds.). ACM, 51:1–51:10. https://doi.org/10.1145/2603088.2603127 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Martin Hofmann and Wei Chen. 2014. Büchi types for infinite traces and liveness. CoRR, abs/1401.5107 (2014). Google ScholarGoogle Scholar
  15. Naoki Iwayama, Naoki Kobayashi, Ryota Suzuki, and Takeshi Tsukada. 2020. Predicate Abstraction and CEGAR for ν HFL_Z Validity Checking. In Static Analysis - 27th International Symposium, SAS 2020, Virtual Event, November 18-20, 2020, Proceedings, David Pichardie and Mihaela Sighireanu (Eds.) (Lecture Notes in Computer Science, Vol. 12389). Springer, 134–155. https://doi.org/10.1007/978-3-030-65474-0_7 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Joxan Jaffar, Andrew E. Santosa, and Razvan Voicu. 2006. A CLP Method for Compositional and Intermittent Predicate Abstraction. In Proceedings of VMCAI 2006 (Lecture Notes in Computer Science, Vol. 3855). Springer, 17–32. https://doi.org/10.1007/11609773_2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Hiroyuki Katsura, Naoki Iwayama, Naoki Kobayashi, and Takeshi Tsukada. 2020. A New Refinement Type System for Automated ν HFL_Z Validity Checking. In Programming Languages and Systems - 18th Asian Symposium, APLAS 2020, Fukuoka, Japan, November 30 - December 2, 2020, Proceedings, Bruno C. d. S. Oliveira (Ed.) (Lecture Notes in Computer Science, Vol. 12470). Springer, 86–104. https://doi.org/10.1007/978-3-030-64437-6_5 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Naoki Kobayashi, Étienne Lozes, and Florian Bruse. 2017. On the relationship between higher-order recursion schemes and higher-order fixpoint logic. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, January 18-20, 2017, Giuseppe Castagna and Andrew D. Gordon (Eds.). ACM, 246–259. https://doi.org/10.1145/3009837.3009854 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Naoki Kobayashi, Takeshi Nishikawa, Atsushi Igarashi, and Hiroshi Unno. 2019. Temporal Verification of Programs via First-Order Fixpoint Logic. In Static Analysis - 26th International Symposium, SAS 2019, Porto, Portugal, October 8-11, 2019, Proceedings, Bor-Yuh Evan Chang (Ed.) (Lecture Notes in Computer Science, Vol. 11822). Springer, 413–436. https://doi.org/10.1007/978-3-030-32304-2_20 Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Naoki Kobayashi, Ryosuke Sato, and Hiroshi Unno. 2011. Predicate abstraction and CEGAR for higher-order model checking. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011, San Jose, CA, USA, June 4-8, 2011, Mary W. Hall and David A. Padua (Eds.). ACM, 222–233. https://doi.org/10.1145/1993498.1993525 Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Naoki Kobayashi, Takeshi Tsukada, and Keiichi Watanabe. 2017. Higher-Order Program Verification via HFL Model Checking. CoRR, abs/1710.08614 (2017), arxiv:1710.08614 Google ScholarGoogle Scholar
  22. Naoki Kobayashi, Takeshi Tsukada, and Keiichi Watanabe. 2018. Higher-Order Program Verification via HFL Model Checking. In Programming Languages and Systems - 27th European Symposium on Programming, ESOP 2018, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018, Thessaloniki, Greece, April 14-20, 2018, Proceedings, Amal Ahmed (Ed.) (Lecture Notes in Computer Science, Vol. 10801). Springer, 711–738. https://doi.org/10.1007/978-3-319-89884-1_25 Google ScholarGoogle ScholarCross RefCross Ref
  23. Eric Koskinen and Tachio Terauchi. 2014. Local temporal reasoning. In Joint Meeting of the Twenty-Third EACSL Annual Conference on Computer Science Logic (CSL) and the Twenty-Ninth Annual ACM/IEEE Symposium on Logic in Computer Science (LICS), CSL-LICS ’14, Vienna, Austria, July 14 - 18, 2014, Thomas A. Henzinger and Dale Miller (Eds.). ACM, 59:1–59:10. https://doi.org/10.1145/2603088.2603138 Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Takuya Kuwahara, Ryosuke Sato, Hiroshi Unno, and Naoki Kobayashi. 2015. Predicate Abstraction and CEGAR for Disproving Termination of Higher-Order Functional Programs. In Computer Aided Verification - 27th International Conference, CAV 2015, San Francisco, CA, USA, July 18-24, 2015, Proceedings, Part II, Daniel Kroening and Corina S. Pasareanu (Eds.) (Lecture Notes in Computer Science, Vol. 9207). Springer, 287–303. https://doi.org/10.1007/978-3-319-21668-3_17 Google ScholarGoogle ScholarCross RefCross Ref
  25. Takuya Kuwahara, Tachio Terauchi, Hiroshi Unno, and Naoki Kobayashi. 2014. Automatic Termination Verification for Higher-Order Functional Programs. In Programming Languages and Systems - 23rd European Symposium on Programming, ESOP 2014, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2014, Grenoble, France, April 5-13, 2014, Proceedings, Zhong Shao (Ed.) (Lecture Notes in Computer Science, Vol. 8410). Springer, 392–411. https://doi.org/10.1007/978-3-642-54833-8_21 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. M. Lester, R. P. Neatherway, C.-H. Luke Ong, and S. J. Ramsay. 2011. Model checking liveness properties of higher-order functional programs. In Proceedings of ML Workshop 2011. Google ScholarGoogle Scholar
  27. Akihiro Murase, Tachio Terauchi, Naoki Kobayashi, Ryosuke Sato, and Hiroshi Unno. 2016. Temporal verification of higher-order functional programs. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016, St. Petersburg, FL, USA, January 20 - 22, 2016, Rastislav Bodík and Rupak Majumdar (Eds.). ACM, 57–68. https://doi.org/10.1145/2837614.2837667 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Yoji Nanjo, Hiroshi Unno, Eric Koskinen, and Tachio Terauchi. 2018. A Fixpoint Logic and Dependent Effects for Temporal Property Verification. In Proceedings of the 33rd Annual ACM/IEEE Symposium on Logic in Computer Science, LICS 2018, Oxford, UK, July 09-12, 2018, Anuj Dawar and Erich Grädel (Eds.). ACM, 759–768. https://doi.org/10.1145/3209108.3209204 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Flemming Nielson, Hanne Riis Nielson, and Chris Hankin. 1999. Principles of Program Analysis. Springer. https://doi.org/10.1007/978-3-662-03811-6 Google ScholarGoogle ScholarCross RefCross Ref
  30. C.-H. Luke Ong and Steven J. Ramsay. 2011. Verifying higher-order functional programs with pattern-matching algebraic data types. In Proceedings of the 38th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2011, Austin, TX, USA, January 26-28, 2011, Thomas Ball and Mooly Sagiv (Eds.). ACM, 587–598. https://doi.org/10.1145/1926385.1926453 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Jens Palsberg. 2001. Type-based analysis and applications. In Proceedings of the 2001 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis For Software Tools and Engineering, PASTE’01, Snowbird, Utah, USA, June 18-19, 2001, John Field and Gregor Snelting (Eds.). ACM, 20–27. https://doi.org/10.1145/379605.379635 Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Zvonimir Pavlinovic, Yusen Su, and Thomas Wies. 2021. Data flow refinement type inference. Proc. ACM Program. Lang., 5, POPL (2021), 1–31. https://doi.org/10.1145/3434300 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Andreas Podelski and Andrey Rybalchenko. 2004. Transition Invariants. In 19th IEEE Symposium on Logic in Computer Science (LICS 2004), 14-17 July 2004, Turku, Finland, Proceedings. IEEE Computer Society, 32–41. https://doi.org/10.1109/LICS.2004.1319598 Google ScholarGoogle ScholarCross RefCross Ref
  34. Patrick Maxim Rondon, Ming Kawaguchi, and Ranjit Jhala. 2008. Liquid types. In Proceedings of the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation, Tucson, AZ, USA, June 7-13, 2008, Rajiv Gupta and Saman P. Amarasinghe (Eds.). ACM, 159–169. https://doi.org/10.1145/1375581.1375602 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Ryosuke Sato, Hiroshi Unno, and Naoki Kobayashi. 2013. Towards a scalable software model checker for higher-order programs. In Proceedings of the ACM SIGPLAN 2013 Workshop on Partial Evaluation and Program Manipulation, PEPM 2013, Rome, Italy, January 21-22, 2013, Elvira Albert and Shin-Cheng Mu (Eds.). ACM, 53–62. https://doi.org/10.1145/2426890.2426900 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Kento Tanahashi, Naoki Kobayashi, and Ryosuke Sato. 2022. Automatic HFL(Z) Validity Checking for Program Verification. CoRR, abs/2203.07601 (2022), https://doi.org/10.48550/arXiv.2203.07601 arXiv:2203.07601. Google ScholarGoogle Scholar
  37. Tachio Terauchi. 2010. Dependent types from counterexamples. In Proceedings of the 37th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2010, Madrid, Spain, January 17-23, 2010, Manuel V. Hermenegildo and Jens Palsberg (Eds.). ACM, 119–130. https://doi.org/10.1145/1706299.1706315 Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Takeshi Tsukada. 2020. On Computability of Logical Approaches to Branching-Time Property Verification of Programs. In LICS ’20: 35th Annual ACM/IEEE Symposium on Logic in Computer Science, Saarbrücken, Germany, July 8-11, 2020, Holger Hermanns, Lijun Zhang, Naoki Kobayashi, and Dale Miller (Eds.). ACM, 886–899. https://doi.org/10.1145/3373718.3394766 Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Hiroshi Unno, Tachio Terauchi, and Naoki Kobayashi. 2013. Automating relatively complete verification of higher-order functional programs. In The 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’13, Rome, Italy - January 23 - 25, 2013, Roberto Giacobazzi and Radhia Cousot (Eds.). ACM, 75–86. https://doi.org/10.1145/2429069.2429081 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Mahesh Viswanathan and Ramesh Viswanathan. 2004. A Higher Order Modal Fixed Point Logic. In CONCUR 2004 - Concurrency Theory, 15th International Conference, London, UK, August 31 - September 3, 2004, Proceedings, Philippa Gardner and Nobuko Yoshida (Eds.) (Lecture Notes in Computer Science, Vol. 3170). Springer, 512–528. https://doi.org/10.1007/978-3-540-28644-8_33 Google ScholarGoogle ScholarCross RefCross Ref
  41. Keiichi Watanabe, Ryosuke Sato, Takeshi Tsukada, and Naoki Kobayashi. 2016. Automatically disproving fair termination of higher-order functional programs. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming, ICFP 2016, Nara, Japan, September 18-22, 2016, Jacques Garrigue, Gabriele Keller, and Eijiro Sumii (Eds.). ACM, 243–255. https://doi.org/10.1145/2951913.2951919 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Keiichi Watanabe, Takeshi Tsukada, Hiroki Oshikawa, and Naoki Kobayashi. 2019. Reduction from branching-time property verification of higher-order programs to HFL validity checking. In Proceedings of the 2019 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, [email protected] 2019, Cascais, Portugal, January 14-15, 2019, Manuel V. Hermenegildo and Atsushi Igarashi (Eds.). ACM, 22–34. https://doi.org/10.1145/3294032.3294077 Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. He Zhu, Aditya V. Nori, and Suresh Jagannathan. 2015. Learning refinement types. In Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, ICFP 2015, Vancouver, BC, Canada, September 1-3, 2015. ACM, 400–411. https://doi.org/10.1145/2784731.2784766 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. HFL(Z) Validity Checking for Automated Program 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

        Full Access

        • Article Metrics

          • Downloads (Last 12 months)153
          • Downloads (Last 6 weeks)18

          Other Metrics

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!