skip to main content
research-article
Open Access

Modular verification of programs with effects and effects handlers

Authors Info & Claims
Published:01 January 2021Publication History
Skip Abstract Section

Abstract

Abstract

Modern computing systems have grown in complexity, and even though system components are generally carefully designed and even verified by different groups of people, the composition of these components is often regarded with less attention. Inconsistencies between components’ assumptions on the rest of the system can have significant repercussions on this system, and may ultimately lead to safety or security issues. In this article, we introduce FreeSpec, a formalismbuilt upon the key idea that components can bemodeled as programs with algebraic effects to be realized by other components. FreeSpec allows for the modular modeling of a complex system, by defining idealized components connected together, and the modular verification of the properties of their composition. In addition, we have implemented a framework for the Coq proof assistant based on FreeSpec.

References

  1. [ABB+05] Abel A, Benke M, Bove A, Hughes J, Norell U (2005) Verifying Haskell programs using constructive type theory. In: Leijen D (ed) Proceedings of the ACM SIGPLAN workshop on Haskell, Haskell 2005, Tallinn, Estonia, September 30, 2005. ACM, pp 62–73Google ScholarGoogle Scholar
  2. [Abr05] Abrial J-RThe B-book: assigning programs to meanings2005CambridgeCambridge University PressGoogle ScholarGoogle ScholarDigital LibraryDigital Library
  3. [Apf10] Apfelmus H (2010) The operational package. https://hackage.haskell.org/package/operationalGoogle ScholarGoogle Scholar
  4. [BA17] Bélanger OS, Appel AW (2017) Shrink fast correctly! In: Vanhoof W, Pientka B (eds) Proceedings of the 19th international symposium on principles and practice of declarative programming, Namur, Belgium, October 09–11, 2017. ACM, pp 49–60Google ScholarGoogle Scholar
  5. [BFL+11] Barnett MFähndrich MRustan KLeino MMüller PSchulte WVenter HSpecification and verification: the spec# experienceCommun ACM2011546819110.1145/1953122.1953145Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. [BP15] Bauer APretnar MProgramming with algebraic effects and handlersJ Logic Algeb Methods Program2015841108123329294810.1016/j.jlamp.2014.02.001Google ScholarGoogle ScholarCross RefCross Ref
  7. [Bra11] Thomas BraibantCoquet: a Coq library for verifying hardwareCPP20117086330345Google ScholarGoogle Scholar
  8. [Bra14] Brady E (2014) Resource-dependent algebraic effects. In: international symposium on trends in functional programming. Springer, Berlin, vol 8843, pp 18–33Google ScholarGoogle Scholar
  9. [CRG15] Claret G, Yann R-G (2015) Mechanical verification of interactive programs specified by use cases. In: Proceedings of the third FME workshop on formal methods in software engineering. IEEE Press, pp 61–67Google ScholarGoogle Scholar
  10. [CVS+17] Choi J,Vijayaraghavan M, Sherman B, Chlipala A et al (2017) Kami: a platform for high-level parametric hardware specification and its modular verification. In: Proceedings of the ACM on programming languages, 1(ICFP):24Google ScholarGoogle Scholar
  11. [DCT19] Dylus SChristiansen JTeegen FOne Monad to prove them allProgram J201933810.22152/programming-journal.org/2019/3/8Google ScholarGoogle Scholar
  12. [Dee] DeepSpec. DeepSpec: The Science of Deep SpecificationGoogle ScholarGoogle Scholar
  13. [DLMG09] Duflot LLevillain OMorin BGrumelard OGetting into the SMRAM: SMM reloaded2009Vancouver, CanadaCanSecWestGoogle ScholarGoogle Scholar
  14. [FLL+13] Flanagan CRustan KLeino MLillibridge MNelson GSaxe JBStata RPLDI 2002: extended static checking for JavaSIGPLAN Not2013484S223310.1145/2502508.2502520Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. [HNDV13] Hur C-K, Georg N, Derek D, Viktor V (2013) The power of parameterization in coinductive proof. In: Giacobazzi R, Cousot R (eds) The 40th annual ACM SIGPLAN-SIGACT symposium on principles of programming languages, POPL '13, Rome, Italy—January 23–25, 2013. ACM, pp 193–206Google ScholarGoogle Scholar
  16. [HSJ12] Heyman T, Scandariato R, Joosen W (2012) Reusable formal models for secure software architectures. In: 2012 joint working IEEE/IFIP conference on software architecture and european conference on software architecture, WICSA/ECSA 2012, Helsinki, Finland, August 20–24, 2012, pp 41–50Google ScholarGoogle Scholar
  17. [HV15] Hinze R, Voigtländer J(eds) (2015) Mathematics of program construction—12th international conference, MPC 2015, Königswinter, Germany, June 29–July 1, 2015. Proceedings, volume 9129 of Lecture notes in computer science. Springer, BerlinGoogle ScholarGoogle Scholar
  18. [Inr] Inria. The Coq Proof Assistant. https://coq.inria.fr/Google ScholarGoogle Scholar
  19. [Jac12] Jackson DSoftware abstractions: logic, language and analysis2012CambridgeMIT PressGoogle ScholarGoogle ScholarDigital LibraryDigital Library
  20. [JNGH16] Jomaa N, Nowak D, Grimaud G, Hym S (2016) Formal proof of dynamic memory isolation based on MMU. In: 2016 10th international symposium on theoretical aspects of software engineering (TASE). IEEE, pp 73–80Google ScholarGoogle Scholar
  21. [KI15] Kiselyov OIshii HFreer monads, more extensible effectsACM SIGPLAN notices. ACM2015509410510.1145/2887747.2804319Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. [KLL+19] Koh N, Li Y, Li Y, Xia L, Beringer L, Honoré W, Mansky W, Pierce BC, Zdancewic S (2019) From C to interaction trees: specifying, verifying, and testing a networked server. In: Mahboubi A, Myreen MO (eds) Proceedings of the 8th ACM SIGPLAN international conference on certified programs and proofs, CPP 2019, Cascais, Portugal, January 14–15, 2019 ACM, pp 234–248Google ScholarGoogle Scholar
  23. [LCH+16] Letan T, Chifflier P, Hiet G, Néron P, Morin B (2016) SpecCert: specifying and verifying hardware-based security enforcement. In: 21st international symposium on formal methods (FM 2016). Springer, Berlin, vol 9995Google ScholarGoogle Scholar
  24. [Let18] Letan T (2018) FreeSpec: a compositional reasoning framework for the Coq theorem prover https://github.com/lthms/speccertGoogle ScholarGoogle Scholar
  25. [LHJ95] Liang S, Hudak P, Jones M (1995) Monadtrans formers and modular interpreters. In: Proceedings of the 22nd ACM SIGPLANSIGACT symposium on principles of programming languages. ACM, pp 333–343Google ScholarGoogle Scholar
  26. [LRGCH18] Letan T, Yann R-G, Pierre C, Guillaume H (2018) Modular verification of programs with effects and effects handlers in Coq. In: 22st international symposium on formal methods (FM 2018). Springer, Berlin, vol 10951Google ScholarGoogle Scholar
  27. [LW94] Liskov BWing JMA behavioral notion of subtypingACM Trans Program Lang Syst19941661811184110.1145/197320.197383Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. [Mey92] Meyer BApplying "design by contract"IEEE Comput19922510405110.1109/2.161279Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. [MTT+12] Morrisett GTan GTassarotti JTristan J-BGan ERockSalt: better, faster, stronger SFI for the x86ACMSIGPLAN notices. ACM20124739540410.1145/2345156.2254111Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. [NMS+08] Nanevski AMorrisett GShinnar AGovereau PBirkedal LY not: dependent types for imperative programsACM sigplan notices. ACM20084322924010.1145/1411203.1411237Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. [OZ05] Odersky M, Zenger M (2005) Scalable component abstractions. In: Johnson RE, Gabriel RP (eds) Proceedings of the 20th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications, OOPSLA 2005, October 16–20, 2005, San Diego, CA, USA. ACM, pp 41–57Google ScholarGoogle Scholar
  32. [Par83] Parnas DLA technique for software module specification with examples (Reprint)Commun ACM1983261757810.1145/357980.358011Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. [Pes14] Pessaux F (2014) FoCaLiZe: inside an F-IDE. arXiv preprint arXiv:1404.6607Google ScholarGoogle Scholar
  34. [PJ01] Peyton Jones S (2001) Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell. Engineering theories of software constructionGoogle ScholarGoogle Scholar
  35. [Rey02] Reynolds JC (2002) Separation logic: a logic for sharedmutable data structures. In: 17th IEEE symposium on logic in computer science (LICS 2002), 22–25 July 2002, Copenhagen, Denmark, Proceedings. IEEE Computer Society, pp 55–74Google ScholarGoogle Scholar
  36. [Uus17] Uustalu T (2017) Container combinatorics: monads and lax monoidal functors. In: Mousavi MR, Sgall J (eds) Topics in theoretical computer science—second IFIP WG 1.8 international conference, TTCS 2017, Tehran, Iran, September 12–14, 2017, Proceedings, lecture notes in computer science. Springer, Berlin, vol 10608, pp 91–105Google ScholarGoogle Scholar
  37. [Wad92] Wadler PComprehending Monads. Math Struct Comput Sci199224461493120272210.1017/S0960129500001560Google ScholarGoogle ScholarCross RefCross Ref
  38. [Win03] Wing JMA call to action: look beyond the horizonIEEE Secur Privacy20036626710.1109/MSECP.2003.1253571Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. [WR09] Wojtczuk R, Rutkowska J (2009) Attacking SMM memory via intel CPU cache poisoning. Invisible Things LabGoogle ScholarGoogle Scholar
  40. [XZH+19] Xia L, Zakowski Y, He P Hur C-K, Malecha G, Pierce BC, Zdancewic S (2019) Interaction trees: representing recursive and impure programs in Coq (work in progress). CoRR arXiv:1906.00046Google ScholarGoogle Scholar

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

  • Published in

    cover image Formal Aspects of Computing
    Formal Aspects of Computing  Volume 33, Issue 1
    Special Issue on Extended Versions of Papers Presented at FM 2018
    Jan 2021
    147 pages
    ISSN:0934-5043
    EISSN:1433-299X
    Issue’s Table of Contents

    © British Computer Society 2020

    Publisher

    Springer-Verlag

    Berlin, Heidelberg

    Publication History

    • Published: 1 January 2021
    • Accepted: 29 October 2020
    • Received: 8 July 2019
    Published in fac Volume 33, Issue 1

    Qualifiers

    • research-article

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader