{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,20]],"date-time":"2026-03-20T16:56:57Z","timestamp":1774025817569,"version":"3.50.1"},"publisher-location":"Cham","reference-count":36,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030993351","type":"print"},{"value":"9783030993368","type":"electronic"}],"license":[{"start":{"date-parts":[[2022,1,1]],"date-time":"2022-01-01T00:00:00Z","timestamp":1640995200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2022,3,29]],"date-time":"2022-03-29T00:00:00Z","timestamp":1648512000000},"content-version":"vor","delay-in-days":87,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2022]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>The rise of persistent memory is disrupting computing to its core. Our work aims to help programmers navigate this brave new world by providing a program logic for reasoning about x86 code that uses low-level operations such as memory accesses and fences, as well as persistency primitives such as flushes. Our logic, <jats:sc>Pierogi<\/jats:sc>, benefits from a simple underlying operational semantics based on <jats:italic>views<\/jats:italic>, is able to handle <jats:italic>optimised<\/jats:italic> flush operations, and is mechanised in the Isabelle\/HOL proof assistant. We detail the proof rules of <jats:sc>Pierogi<\/jats:sc> and prove them sound. We also show how <jats:sc>Pierogi<\/jats:sc> can be used to reason about a range of challenging single- and multi-threaded persistent programs.<\/jats:p>","DOI":"10.1007\/978-3-030-99336-8_9","type":"book-chapter","created":{"date-parts":[[2022,3,28]],"date-time":"2022-03-28T20:02:48Z","timestamp":1648497768000},"page":"234-261","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":20,"title":["View-Based Owicki\u2013Gries Reasoning for Persistent x86-TSO"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-3399-0736","authenticated-orcid":false,"given":"Eleni Vafeiadi","family":"Bila","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0446-3507","authenticated-orcid":false,"given":"Brijesh","family":"Dongol","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4305-6998","authenticated-orcid":false,"given":"Ori","family":"Lahav","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2319-3242","authenticated-orcid":false,"given":"Azalea","family":"Raad","sequence":"additional","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6735-5533","authenticated-orcid":false,"given":"John","family":"Wickerson","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2022,3,29]]},"reference":[{"key":"9_CR1","doi-asserted-by":"publisher","unstructured":"Abdulla, P.A., Atig, M.F., Bouajjani, A., Kumar, K.N., Saivasan, P.: Deciding reachability under persistent x86-TSO. Proc. ACM Program. Lang. 5(POPL), 1\u201332 (2021). https:\/\/doi.org\/10.1145\/3434337","DOI":"10.1145\/3434337"},{"key":"9_CR2","doi-asserted-by":"publisher","unstructured":"Apt, K.R., de\u00a0Boer, F.S., Olderog, E.: Verification of Sequential and Concurrent Programs. Texts in Computer Science, Springer (2009). https:\/\/doi.org\/10.1007\/978-1-84882-745-5","DOI":"10.1007\/978-1-84882-745-5"},{"key":"9_CR3","doi-asserted-by":"publisher","unstructured":"Bila, E., Doherty, S., Dongol, B., Derrick, J., Schellhorn, G., Wehrheim, H.: Defining and verifying durable opacity: Correctness for persistent software transactional memory. In: Gotsman, A., Sokolova, A. (eds.) FORTE. Lecture Notes in Computer Science, vol. 12136, pp. 39\u201358. Springer (2020). https:\/\/doi.org\/10.1007\/978-3-030-50086-3_3","DOI":"10.1007\/978-3-030-50086-3_3"},{"key":"9_CR4","doi-asserted-by":"publisher","unstructured":"Bila, E.V., Dongol, B., Lahav, O., Raad, A., Wickerson, J.: Isabelle\/HOL files for \"View-Based Owicki-Gries Reasoning for Persistent x86-TSO\" (Jan 2022). https:\/\/doi.org\/10.6084\/m9.figshare.18469103","DOI":"10.6084\/m9.figshare.18469103"},{"key":"9_CR5","doi-asserted-by":"crossref","unstructured":"Bila, E.V., Dongol, B., Lahav, O., Raad, A., Wickerson, J.: View-based Owicki-Gries reasoning for persistent x86-TSO (extended version) (2022), https:\/\/arxiv.org\/abs\/2201.05860","DOI":"10.1007\/978-3-030-99336-8_9"},{"key":"9_CR6","doi-asserted-by":"publisher","unstructured":"B\u00f6hme, S., Nipkow, T.: Sledgehammer: Judgement day. In: Giesl, J., H\u00e4hnle, R. (eds.) Automated Reasoning, 5th International Joint Conference, IJCAR 2010, Edinburgh, UK, July 16-19, 2010. Proceedings. LNCS, vol.\u00a06173, pp. 107\u2013121. Springer (2010). https:\/\/doi.org\/10.1007\/978-3-642-14203-1_9","DOI":"10.1007\/978-3-642-14203-1_9"},{"key":"9_CR7","doi-asserted-by":"publisher","unstructured":"Chajed, T., Tassarotti, J., Kaashoek, M.F., Zeldovich, N.: Verifying concurrent, crash-safe systems with perennial. In: Brecht, T., Williamson, C. (eds.) Proceedings of the 27th ACM Symposium on Operating Systems Principles, SOSP 2019, Huntsville, ON, Canada, October 27-30, 2019. pp. 243\u2013258. ACM (2019). https:\/\/doi.org\/10.1145\/3341301.3359632","DOI":"10.1145\/3341301.3359632"},{"key":"9_CR8","doi-asserted-by":"publisher","unstructured":"Chen, H., Ziegler, D., Chajed, T., Chlipala, A., Kaashoek, M.F., Zeldovich, N.: Using crash hoare logic for certifying the FSCQ file system. In: Miller, E.L., Hand, S. (eds.) Proceedings of the 25th Symposium on Operating Systems Principles, SOSP 2015, Monterey, CA, USA, October 4-7, 2015. pp. 18\u201337. ACM (2015). https:\/\/doi.org\/10.1145\/2815400.2815402","DOI":"10.1145\/2815400.2815402"},{"key":"9_CR9","doi-asserted-by":"publisher","unstructured":"Cho, K., Lee, S.H., Raad, A., Kang, J.: Revamping hardware persistency models: view-based and axiomatic persistency models for Intel-x86 and Armv8. In: Freund, S.N., Yahav, E. (eds.) PLDI \u201921: 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, Virtual Event, Canada, June 20-25, 2021. pp. 16\u201331. ACM (2021). https:\/\/doi.org\/10.1145\/3453483.3454027","DOI":"10.1145\/3453483.3454027"},{"key":"9_CR10","doi-asserted-by":"publisher","unstructured":"Condit, J., Nightingale, E.B., Frost, C., Ipek, E., Lee, B., Burger, D., Coetzee, D.: Better I\/O through byte-addressable, persistent memory. In: Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles. pp. 133\u2013146. SOSP \u201909, ACM, New York, NY, USA (2009). https:\/\/doi.org\/10.1145\/1629575.1629589","DOI":"10.1145\/1629575.1629589"},{"key":"9_CR11","doi-asserted-by":"publisher","unstructured":"Dalvandi, S., Doherty, S., Dongol, B., Wehrheim, H.: Owicki-Gries reasoning for C11 RAR. In: Hirschfeld, R., Pape, T. (eds.) 34th European Conference on Object-Oriented Programming, ECOOP 2020, November 15-17, 2020, Berlin, Germany (Virtual Conference). LIPIcs, vol.\u00a0166, pp. 11:1\u201311:26. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2020). https:\/\/doi.org\/10.4230\/LIPIcs.ECOOP.2020.11","DOI":"10.4230\/LIPIcs.ECOOP.2020.11"},{"key":"9_CR12","doi-asserted-by":"publisher","unstructured":"Dalvandi, S., Doherty, S., Dongol, B., Wehrheim, H.: Owicki-Gries reasoning for C11 RAR (artifact). Dagstuhl Artifacts Ser. 6(2), 15:1\u201315:2 (2020). https:\/\/doi.org\/10.4230\/DARTS.6.2.15","DOI":"10.4230\/DARTS.6.2.15"},{"key":"9_CR13","doi-asserted-by":"publisher","unstructured":"Dalvandi, S., Dongol, B., Doherty, S., Wehrheim, H.: Integrating Owicki-Gries for C11-style memory models into Isabelle\/HOL. J. Autom. Reason. 66(1), 141\u2013171 (2022). https:\/\/doi.org\/10.1007\/s10817-021-09610-2","DOI":"10.1007\/s10817-021-09610-2"},{"key":"9_CR14","doi-asserted-by":"publisher","unstructured":"Derrick, J., Doherty, S., Dongol, B., Schellhorn, G., Wehrheim, H.: Verifying correctness of persistent concurrent data structures. In: ter Beek, M.H., McIver, A., Oliveira, J.N. (eds.) Formal Methods - The Next 30 Years - Third World Congress, FM 2019, Porto, Portugal, October 7-11, 2019, Proceedings. Lecture Notes in Computer Science, vol. 11800, pp. 179\u2013195. Springer (2019). https:\/\/doi.org\/10.1007\/978-3-030-30942-8_12","DOI":"10.1007\/978-3-030-30942-8_12"},{"key":"9_CR15","doi-asserted-by":"publisher","unstructured":"Derrick, J., Doherty, S., Dongol, B., Schellhorn, G., Wehrheim, H.: Verifying correctness of persistent concurrent data structures: a sound and complete method. Formal Aspects Comput. 33(4-5), 547\u2013573 (2021). https:\/\/doi.org\/10.1007\/s00165-021-00541-8","DOI":"10.1007\/s00165-021-00541-8"},{"key":"9_CR16","doi-asserted-by":"publisher","unstructured":"Doherty, S., Dongol, B., Wehrheim, H., Derrick, J.: Verifying C11 programs operationally. In: Hollingsworth, J.K., Keidar, I. (eds.) Proceedings of the 24th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2019, Washington, DC, USA, February 16-20, 2019. pp. 355\u2013365. ACM (2019). https:\/\/doi.org\/10.1145\/3293883.3295702","DOI":"10.1145\/3293883.3295702"},{"key":"9_CR17","doi-asserted-by":"publisher","unstructured":"Friedman, M., Herlihy, M., Marathe, V.J., Petrank, E.: A persistent lock-free queue for non-volatile memory. In: Krall, A., Gross, T.R. (eds.) Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2018, Vienna, Austria, February 24-28, 2018. pp. 28\u201340. ACM (2018). https:\/\/doi.org\/10.1145\/3178487.3178490","DOI":"10.1145\/3178487.3178490"},{"key":"9_CR18","doi-asserted-by":"publisher","unstructured":"Gorjiara, H., Xu, G.H., Demsky, B.: Jaaru: efficiently model checking persistent memory programs. In: Sherwood, T., Berger, E.D., Kozyrakis, C. (eds.) ASPLOS \u201921: 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Virtual Event, USA, April 19-23, 2021. pp. 415\u2013428. ACM (2021). https:\/\/doi.org\/10.1145\/3445814.3446735","DOI":"10.1145\/3445814.3446735"},{"key":"9_CR19","unstructured":"Intel Corporation: Intel 64 and IA-32 Architectures Optimization Reference Manual (2021), https:\/\/software.intel.com\/content\/dam\/develop\/external\/us\/en\/documents-tps\/64-ia-32-architectures-optimization-manual.pdf"},{"key":"9_CR20","doi-asserted-by":"publisher","unstructured":"Izraelevitz, J., Mendes, H., Scott, M.L.: Linearizability of persistent memory objects under a full-system-crash failure model. In: Gavoille, C., Ilcinkas, D. (eds.) Distributed Computing - 30th International Symposium, DISC 2016, Paris, France, September 27-29, 2016. Proceedings. Lecture Notes in Computer Science, vol.\u00a09888, pp. 313\u2013327. Springer (2016). https:\/\/doi.org\/10.1007\/978-3-662-53426-7_23","DOI":"10.1007\/978-3-662-53426-7_23"},{"key":"9_CR21","unstructured":"Kaiser, J., Dang, H.H., Dreyer, D., Lahav, O., Vafeiadis, V.: Strong logic for weak memory: Reasoning about release-acquire consistency in Iris. In: ECOOP (2017)"},{"key":"9_CR22","doi-asserted-by":"publisher","unstructured":"Kang, J., Hur, C., Lahav, O., Vafeiadis, V., Dreyer, D.: A promising semantics for relaxed-memory concurrency. In: Castagna, G., Gordon, A.D. (eds.) Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, January 18-20, 2017. pp. 175\u2013189. ACM (2017). https:\/\/doi.org\/10.1145\/3009837.3009850","DOI":"10.1145\/3009837.3009850"},{"key":"9_CR23","doi-asserted-by":"publisher","unstructured":"Khyzha, A., Lahav, O.: Taming x86-TSO persistency. Proc. ACM Program. Lang. 5(POPL), 1\u201329 (2021). https:\/\/doi.org\/10.1145\/3434328","DOI":"10.1145\/3434328"},{"key":"9_CR24","doi-asserted-by":"crossref","unstructured":"Khyzha, A., Lahav, O.: Abstraction for crash-resilient objects. In: Programming Languages and Systems. Springer International Publishing, Cham (2022)","DOI":"10.1007\/978-3-030-99336-8_10"},{"key":"9_CR25","doi-asserted-by":"publisher","unstructured":"Kokologiannakis, M., Kaysin, I., Raad, A., Vafeiadis, V.: Persevere: Persistency semantics for verification under ext4. Proc. ACM Program. Lang. 5(POPL) (jan 2021). https:\/\/doi.org\/10.1145\/3434324","DOI":"10.1145\/3434324"},{"key":"9_CR26","doi-asserted-by":"crossref","unstructured":"Lahav, O., Vafeiadis, V.: Owicki-Gries reasoning for weak memory models. In: Halld\u00f3rsson, M.M., Iwama, K., Kobayashi, N., Speckmann, B. (eds.) Automata, Languages, and Programming. pp. 311\u2013323. Springer, Berlin, Heidelberg (2015)","DOI":"10.1007\/978-3-662-47666-6_25"},{"key":"9_CR27","doi-asserted-by":"publisher","unstructured":"Lamport, L.: How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Computers 28(9), 690\u2013691 (Sep 1979). https:\/\/doi.org\/10.1109\/TC.1979.1675439","DOI":"10.1109\/TC.1979.1675439"},{"key":"9_CR28","doi-asserted-by":"publisher","unstructured":"Nipkow, T., Prensa\u00a0Nieto, L.: Owicki\/Gries in Isabelle\/HOL. In: Finance, J. (ed.) FASE. Lecture Notes in Computer Science, vol.\u00a01577, pp. 188\u2013203. Springer (1999). https:\/\/doi.org\/10.1007\/978-3-540-49020-3_13","DOI":"10.1007\/978-3-540-49020-3_13"},{"key":"9_CR29","doi-asserted-by":"publisher","unstructured":"Ntzik, G., da\u00a0Rocha\u00a0Pinto, P., Gardner, P.: Fault-tolerant resource reasoning. In: Feng, X., Park, S. (eds.) APLAS. Lecture Notes in Computer Science, vol.\u00a09458, pp. 169\u2013188. Springer (2015). https:\/\/doi.org\/10.1007\/978-3-319-26529-2_10","DOI":"10.1007\/978-3-319-26529-2_10"},{"key":"9_CR30","doi-asserted-by":"publisher","unstructured":"Owicki, S.S., Gries, D.: An axiomatic proof technique for parallel programs I. Acta Informatica 6, 319\u2013340 (1976). https:\/\/doi.org\/10.1007\/BF00268134","DOI":"10.1007\/BF00268134"},{"key":"9_CR31","doi-asserted-by":"publisher","unstructured":"Raad, A., Lahav, O., Vafeiadis, V.: Persistent Owicki-Gries reasoning: a program logic for reasoning about persistent programs on Intel-x86. Proc. ACM Program. Lang. 4(OOPSLA), 151:1\u2013151:28 (2020). https:\/\/doi.org\/10.1145\/3428219","DOI":"10.1145\/3428219"},{"key":"9_CR32","doi-asserted-by":"publisher","unstructured":"Raad, A., Maranget, L., Vafeiadis, V.: Extending Intel-X86 consistency and persistency: Formalising the semantics of Intel-X86 memory types and non-temporal stores. Proc. ACM Program. Lang. 6(POPL) (jan 2022). https:\/\/doi.org\/10.1145\/3498683","DOI":"10.1145\/3498683"},{"key":"9_CR33","doi-asserted-by":"publisher","unstructured":"Raad, A., Vafeiadis, V.: Persistence semantics for weak memory: Integrating epoch persistency with the TSO memory model. Proc. ACM Program. Lang. 2(OOPSLA) (oct 2018). https:\/\/doi.org\/10.1145\/3276507","DOI":"10.1145\/3276507"},{"key":"9_CR34","doi-asserted-by":"publisher","unstructured":"Raad, A., Wickerson, J., Neiger, G., Vafeiadis, V.: Persistency semantics of the Intel-x86 architecture. Proc. ACM Program. Lang. 4(POPL), 11:1\u201311:31 (2020). https:\/\/doi.org\/10.1145\/3371079","DOI":"10.1145\/3371079"},{"key":"9_CR35","doi-asserted-by":"publisher","unstructured":"Raad, A., Wickerson, J., Vafeiadis, V.: Weak persistency semantics from the ground up: Formalising the persistency semantics of ARMv8 and transactional models. Proc. ACM Program. Lang. 3(OOPSLA) (oct 2019). https:\/\/doi.org\/10.1145\/3360561","DOI":"10.1145\/3360561"},{"key":"9_CR36","doi-asserted-by":"publisher","unstructured":"Sewell, P., Sarkar, S., Owens, S., Nardelli, F.Z., Myreen, M.O.: x86-TSO: A rigorous and usable programmer\u2019s model for x86 multiprocessors. Commun. ACM 53(7), 89\u201397 (Jul 2010). https:\/\/doi.org\/10.1145\/1785414.1785443","DOI":"10.1145\/1785414.1785443"}],"container-title":["Lecture Notes in Computer Science","Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-99336-8_9","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,11,15]],"date-time":"2024-11-15T05:07:50Z","timestamp":1731647270000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-99336-8_9"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022]]},"ISBN":["9783030993351","9783030993368"],"references-count":36,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-99336-8_9","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022]]},"assertion":[{"value":"29 March 2022","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"ESOP","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"European Symposium on Programming","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Munich","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Germany","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2022","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"5 April 2022","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"7 April 2022","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"31","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"esop2022","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/etaps.org\/2022\/esop","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Double-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"HotCRP","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"64","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"21","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"33% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3.5","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"7","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}