{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T09:31:05Z","timestamp":1770283865594,"version":"3.49.0"},"publisher-location":"Cham","reference-count":48,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030171834","type":"print"},{"value":"9783030171841","type":"electronic"}],"license":[{"start":{"date-parts":[[2019,1,1]],"date-time":"2019-01-01T00:00:00Z","timestamp":1546300800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2019]]},"DOI":"10.1007\/978-3-030-17184-1_3","type":"book-chapter","created":{"date-parts":[[2019,4,6]],"date-time":"2019-04-06T17:34:04Z","timestamp":1554572044000},"page":"60-87","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":6,"title":["Semi-automated Reasoning About Non-determinism in C Expressions"],"prefix":"10.1007","author":[{"given":"Dan","family":"Frumin","sequence":"first","affiliation":[]},{"given":"L\u00e9on","family":"Gondelman","sequence":"additional","affiliation":[]},{"given":"Robbert","family":"Krebbers","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2019,4,6]]},"reference":[{"key":"3_CR1","volume-title":"Program Logics for Certified Compilers","year":"2014","unstructured":"Appel, A.W. (ed.): Program Logics for Certified Compilers. Cambridge University Press, New York (2014)"},{"key":"3_CR2","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"263","DOI":"10.1007\/978-3-030-02149-8_16","volume-title":"Relational and Algebraic Methods in Computer Science","author":"C Bannister","year":"2018","unstructured":"Bannister, C., H\u00f6fner, P.: False failure: creating failure models for separation logic. In: Desharnais, J., Guttmann, W., Joosten, S. (eds.) RAMiCS 2018. LNCS, vol. 11194, pp. 263\u2013279. Springer, Cham (2018). \n                      https:\/\/doi.org\/10.1007\/978-3-030-02149-8_16"},{"key":"3_CR3","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"68","DOI":"10.1007\/978-3-319-94821-8_5","volume-title":"Interactive Theorem Proving","author":"C Bannister","year":"2018","unstructured":"Bannister, C., H\u00f6fner, P., Klein, G.: Backwards and forwards with separation logic. In: Avigad, J., Mahboubi, A. (eds.) ITP 2018. LNCS, vol. 10895, pp. 68\u201387. Springer, Cham (2018). \n                      https:\/\/doi.org\/10.1007\/978-3-319-94821-8_5"},{"key":"3_CR4","doi-asserted-by":"crossref","unstructured":"Batty, M., Owens, S., Sarkar, S., Sewell, P., Weber, T.: Mathematizing C++ concurrency. In: POPL, pp. 55\u201366 (2011)","DOI":"10.1145\/1925844.1926394"},{"key":"3_CR5","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"52","DOI":"10.1007\/11575467_5","volume-title":"Programming Languages and Systems","author":"J Berdine","year":"2005","unstructured":"Berdine, J., Calcagno, C., O\u2019Hearn, P.W.: Symbolic execution with separation logic. In: Yi, K. (ed.) APLAS 2005. LNCS, vol. 3780, pp. 52\u201368. Springer, Heidelberg (2005). \n                      https:\/\/doi.org\/10.1007\/11575467_5"},{"key":"3_CR6","unstructured":"Birkedal, L., Bizjak, A.: Lecture Notes on Iris: Higher-Order Concurrent Separation Logic, August 2018. \n                      https:\/\/iris-project.org\/tutorial-material.html"},{"key":"3_CR7","doi-asserted-by":"crossref","unstructured":"Bornat, R., Calcagno, C., O\u2019Hearn, P.W., Parkinson, M.J.: Permission accounting in separation logic. In: POPL, pp. 259\u2013270 (2005)","DOI":"10.1145\/1047659.1040327"},{"key":"3_CR8","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"55","DOI":"10.1007\/3-540-44898-5_4","volume-title":"Static Analysis","author":"J Boyland","year":"2003","unstructured":"Boyland, J.: Checking interference with fractional permissions. In: Cousot, R. (ed.) SAS 2003. LNCS, vol. 2694, pp. 55\u201372. Springer, Heidelberg (2003). \n                      https:\/\/doi.org\/10.1007\/3-540-44898-5_4"},{"issue":"6","key":"3_CR9","doi-asserted-by":"publisher","first-page":"26:1","DOI":"10.1145\/2049697.2049700","volume":"58","author":"C Calcagno","year":"2011","unstructured":"Calcagno, C., Distefano, D., O\u2019Hearn, P.W., Yang, H.: Compositional shape analysis by means of bi-abduction. J. ACM 58(6), 26:1\u201326:66 (2011)","journal-title":"J. ACM"},{"issue":"1\u20134","key":"3_CR10","doi-asserted-by":"publisher","first-page":"367","DOI":"10.1007\/s10817-018-9457-5","volume":"61","author":"Q Cao","year":"2018","unstructured":"Cao, Q., Beringer, L., Gruetter, S., Dodds, J., Appel, A.W.: VST-Floyd: a separation logic tool to verify correctness of C programs. JAR 61(1\u20134), 367\u2013422 (2018)","journal-title":"JAR"},{"issue":"9","key":"3_CR11","doi-asserted-by":"publisher","first-page":"418","DOI":"10.1145\/2034574.2034828","volume":"46","author":"A Chargu\u00e9raud","year":"2011","unstructured":"Chargu\u00e9raud, A.: Characteristic formulae for the verification of imperative programs. SIGPLAN Not. 46(9), 418\u2013430 (2011)","journal-title":"SIGPLAN Not."},{"key":"3_CR12","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"23","DOI":"10.1007\/978-3-642-03359-9_2","volume-title":"Theorem Proving in Higher Order Logics","author":"E Cohen","year":"2009","unstructured":"Cohen, E., et al.: VCC: a practical system for verifying concurrent C. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 23\u201342. Springer, Heidelberg (2009). \n                      https:\/\/doi.org\/10.1007\/978-3-642-03359-9_2"},{"key":"3_CR13","first-page":"85","volume":"254","author":"E Cohen","year":"2009","unstructured":"Cohen, E., Moskal, M., Tobies, S., Schulte, W.: A precise yet efficient memory model for C. ENTCS 254, 85\u2013103 (2009)","journal-title":"ENTCS"},{"key":"3_CR14","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"420","DOI":"10.1007\/978-3-662-54434-1_16","volume-title":"Programming Languages and Systems","author":"T Dinsdale-Young","year":"2017","unstructured":"Dinsdale-Young, T., da Rocha Pinto, P., Andersen, K.J., Birkedal, L.: Caper - automatic verification for fine-grained concurrency. In: Yang, H. (ed.) ESOP 2017. LNCS, vol. 10201, pp. 420\u2013447. Springer, Heidelberg (2017). \n                      https:\/\/doi.org\/10.1007\/978-3-662-54434-1_16"},{"key":"3_CR15","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"287","DOI":"10.1007\/11691372_19","volume-title":"Tools and Algorithms for the Construction and Analysis of Systems","author":"D Distefano","year":"2006","unstructured":"Distefano, D., O\u2019Hearn, P.W., Yang, H.: A local shape analysis based on separation logic. In: Hermanns, H., Palsberg, J. (eds.) TACAS 2006. LNCS, vol. 3920, pp. 287\u2013302. Springer, Heidelberg (2006). \n                      https:\/\/doi.org\/10.1007\/11691372_19"},{"key":"3_CR16","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"17","DOI":"10.1007\/978-3-319-03545-1_2","volume-title":"Certified Programs and Proofs","author":"J Dodds","year":"2013","unstructured":"Dodds, J., Appel, A.W.: Mostly sound type system improves a foundational program verifier. In: Gonthier, G., Norrish, M. (eds.) CPP 2013. LNCS, vol. 8307, pp. 17\u201332. Springer, Cham (2013). \n                      https:\/\/doi.org\/10.1007\/978-3-319-03545-1_2"},{"key":"3_CR17","doi-asserted-by":"crossref","unstructured":"Ellison, C., Rosu, G.: An executable formal semantics of C with applications. In: POPL, pp. 533\u2013544 (2012)","DOI":"10.1145\/2103621.2103719"},{"key":"3_CR18","doi-asserted-by":"crossref","unstructured":"Frumin, D., Gondelman, L., Krebbers, R.: Semi-automated reasoning about non-determinism in C expressions: Coq development, February 2019. \n                      https:\/\/cs.ru.nl\/~dfrumin\/wpc\/","DOI":"10.1007\/978-3-030-17184-1_3"},{"key":"3_CR19","doi-asserted-by":"crossref","unstructured":"Greenaway, D., Lim, J., Andronick, J., Klein, G.: Don\u2019t sweat the small stuff: formal verification of C code without the pain. In: PLDI, pp. 429\u2013439 (2014)","DOI":"10.1145\/2666356.2594296"},{"key":"3_CR20","doi-asserted-by":"crossref","unstructured":"Hathhorn, C., Ellison, C., Ro\u015fu, G.: Defining the undefinedness of C. In: PLDI, pp. 336\u2013345 (2015)","DOI":"10.1145\/2813885.2737979"},{"key":"3_CR21","unstructured":"Iris: Iris Project, November 2018. \n                      https:\/\/iris-project.org\/"},{"key":"3_CR22","unstructured":"ISO: ISO\/IEC 9899\u20132011: Programming Languages - C. ISO Working Group 14 (2012)"},{"key":"3_CR23","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"304","DOI":"10.1007\/978-3-642-17164-2_21","volume-title":"Programming Languages and Systems","author":"B Jacobs","year":"2010","unstructured":"Jacobs, B., Smans, J., Piessens, F.: A quick tour of the VeriFast program verifier. In: Ueda, K. (ed.) APLAS 2010. LNCS, vol. 6461, pp. 304\u2013311. Springer, Heidelberg (2010). \n                      https:\/\/doi.org\/10.1007\/978-3-642-17164-2_21"},{"key":"3_CR24","doi-asserted-by":"crossref","unstructured":"Jung, R., Krebbers, R., Birkedal, L., Dreyer, D.: Higher-order ghost state. In: ICFP, pp. 256\u2013269 (2016)","DOI":"10.1145\/3022670.2951943"},{"key":"3_CR25","doi-asserted-by":"publisher","first-page":"e20","DOI":"10.1017\/S0956796818000151","volume":"28","author":"R Jung","year":"2018","unstructured":"Jung, R., Krebbers, R., Jourdan, J.H., Bizjak, A., Birkedal, L., Dreyer, D.: Iris from the ground up: a modular foundation for higher-order concurrent separation logic. J. Funct. Program. 28, e20 (2018). \n                      https:\/\/doi.org\/10.1017\/S0956796818000151","journal-title":"J. Funct. Program."},{"key":"3_CR26","doi-asserted-by":"crossref","unstructured":"Jung, R., et al.: Iris: monoids and invariants as an orthogonal basis for concurrent reasoning. In: POPL, pp. 637\u2013650 (2015)","DOI":"10.1145\/2775051.2676980"},{"key":"3_CR27","doi-asserted-by":"crossref","unstructured":"Kang, J., Hur, C., Mansky, W., Garbuzov, D., Zdancewic, S., Vafeiadis, V.: A formal C memory model supporting integer-pointer casts. In: POPL, pp. 326\u2013335 (2015)","DOI":"10.1145\/2813885.2738005"},{"key":"3_CR28","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"50","DOI":"10.1007\/978-3-319-03545-1_4","volume-title":"Certified Programs and Proofs","author":"R Krebbers","year":"2013","unstructured":"Krebbers, R.: Aliasing restrictions of C11 formalized in Coq. In: Gonthier, G., Norrish, M. (eds.) CPP 2013. LNCS, vol. 8307, pp. 50\u201365. Springer, Cham (2013). \n                      https:\/\/doi.org\/10.1007\/978-3-319-03545-1_4"},{"key":"3_CR29","doi-asserted-by":"crossref","unstructured":"Krebbers, R.: An operational and axiomatic semantics for non-determinism and sequence points in C. In: POPL, pp. 101\u2013112 (2014)","DOI":"10.1145\/2535838.2535878"},{"key":"3_CR30","unstructured":"Krebbers, R.: The C standard formalized in Coq. Ph.D. thesis, Radboud University Nijmegen (2015)"},{"issue":"4","key":"3_CR31","doi-asserted-by":"publisher","first-page":"319","DOI":"10.1007\/s10817-016-9369-1","volume":"57","author":"R Krebbers","year":"2016","unstructured":"Krebbers, R.: A formal C memory model for separation logic. JAR 57(4), 319\u2013387 (2016)","journal-title":"JAR"},{"issue":"ICFP","key":"3_CR32","first-page":"77:1","volume":"2","author":"R Krebbers","year":"2018","unstructured":"Krebbers, R., et al.: MoSeL: a general, extensible modal framework for interactive proofs in separation logic. PACMPL 2(ICFP), 77:1\u201377:30 (2018)","journal-title":"PACMPL"},{"key":"3_CR33","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"696","DOI":"10.1007\/978-3-662-54434-1_26","volume-title":"Programming Languages and Systems","author":"R Krebbers","year":"2017","unstructured":"Krebbers, R., Jung, R., Bizjak, A., Jourdan, J.-H., Dreyer, D., Birkedal, L.: The Essence of higher-order concurrent separation logic. In: Yang, H. (ed.) ESOP 2017. LNCS, vol. 10201, pp. 696\u2013723. Springer, Heidelberg (2017). \n                      https:\/\/doi.org\/10.1007\/978-3-662-54434-1_26"},{"key":"3_CR34","doi-asserted-by":"crossref","unstructured":"Krebbers, R., Timany, A., Birkedal, L.: Interactive proofs in higher-order concurrent separation logic. In: POPL, pp. 205\u2013217 (2017)","DOI":"10.1145\/3093333.3009855"},{"key":"3_CR35","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"257","DOI":"10.1007\/978-3-642-37075-5_17","volume-title":"Foundations of Software Science and Computation Structures","author":"R Krebbers","year":"2013","unstructured":"Krebbers, R., Wiedijk, F.: Separation logic for non-local control flow and block scope variables. In: Pfenning, F. (ed.) FoSSaCS 2013. LNCS, vol. 7794, pp. 257\u2013272. Springer, Heidelberg (2013). \n                      https:\/\/doi.org\/10.1007\/978-3-642-37075-5_17"},{"key":"3_CR36","doi-asserted-by":"crossref","unstructured":"Lahav, O., Vafeiadis, V., Kang, J., Hur, C., Dreyer, D.: Repairing Sequential Consistency in C\/C++11. In: PLDI, pp. 618\u2013632 (2017)","DOI":"10.1145\/3140587.3062352"},{"issue":"7","key":"3_CR37","doi-asserted-by":"publisher","first-page":"107","DOI":"10.1145\/1538788.1538814","volume":"52","author":"X Leroy","year":"2009","unstructured":"Leroy, X.: Formal verification of a realistic compiler. CACM 52(7), 107\u2013115 (2009)","journal-title":"CACM"},{"issue":"1","key":"3_CR38","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1007\/s10817-008-9099-0","volume":"41","author":"X Leroy","year":"2008","unstructured":"Leroy, X., Blazy, S.: Formal verification of a C-like memory model and its uses for verifying program transformations. JAR 41(1), 1\u201331 (2008)","journal-title":"JAR"},{"key":"3_CR39","unstructured":"Malecha, G.: Extensible proof engineering in intensional type theory. Ph.D. thesis, Harvard University (2014)"},{"issue":"POPL","key":"3_CR40","first-page":"67:1","volume":"3","author":"K Memarian","year":"2019","unstructured":"Memarian, K., et al.: Exploring C semantics and pointer provenance. PACMPL 3(POPL), 67:1\u201367:32 (2019)","journal-title":"PACMPL"},{"key":"3_CR41","doi-asserted-by":"crossref","unstructured":"Memarian, K., et al.: Into the depths of C: elaborating the De Facto Standards. In: PLDI, pp. 1\u201315 (2016)","DOI":"10.1145\/2980983.2908081"},{"key":"3_CR42","unstructured":"Moy, Y., March\u00e9, C.: The Jessie Plugin for Deduction Verification in Frama-C, Tutorial and Reference Manual (2011)"},{"key":"3_CR43","doi-asserted-by":"crossref","unstructured":"Nienhuis, K., Memarian, K., Sewell, P.: An operational semantics for C\/C++11 concurrency. In: OOPSLA, pp. 111\u2013128 (2016)","DOI":"10.1145\/3022671.2983997"},{"key":"3_CR44","unstructured":"Norrish, M.: C Formalised in HOL. Ph.D. thesis, University of Cambridge (1998)"},{"key":"3_CR45","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"147","DOI":"10.1007\/3-540-49099-X_10","volume-title":"Programming Languages and Systems","author":"M Norrish","year":"1999","unstructured":"Norrish, M.: Deterministic expressions in C. In: Swierstra, S.D. (ed.) ESOP 1999. LNCS, vol. 1576, pp. 147\u2013161. Springer, Heidelberg (1999). \n                      https:\/\/doi.org\/10.1007\/3-540-49099-X_10"},{"issue":"1","key":"3_CR46","doi-asserted-by":"publisher","first-page":"271","DOI":"10.1016\/j.tcs.2006.12.035","volume":"375","author":"PW O\u2019Hearn","year":"2007","unstructured":"O\u2019Hearn, P.W.: Resources, concurrency, and local reasoning. Theor. Comput. Sci. 375(1), 271\u2013307 (2007). Festschrift for John C. Reynolds\u2019s 70th birthday","journal-title":"Theor. Comput. Sci."},{"issue":"4","key":"3_CR47","doi-asserted-by":"publisher","first-page":"795","DOI":"10.1017\/S0960129511000119","volume":"21","author":"B Spitters","year":"2011","unstructured":"Spitters, B., Van der Weegen, E.: Type classes for mathematics in type theory. Math. Struct. Comput. Sci. 21(4), 795\u2013825 (2011)","journal-title":"Math. Struct. Comput. Sci."},{"key":"3_CR48","doi-asserted-by":"crossref","unstructured":"Stewart, G., Beringer, L., Cuellar, S., Appel, A.W.: Compositional CompCert. In: POPL, pp. 275\u2013287 (2015)","DOI":"10.1145\/2775051.2676985"}],"container-title":["Lecture Notes in Computer Science","Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-17184-1_3","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,5,20]],"date-time":"2019-05-20T09:21:28Z","timestamp":1558344088000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-17184-1_3"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019]]},"ISBN":["9783030171834","9783030171841"],"references-count":48,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-17184-1_3","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019]]},"assertion":[{"value":"6 April 2019","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":"Prague","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Czech Republic","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2019","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"8 April 2019","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"11 April 2019","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"28","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"esop2019","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/www.etaps.org\/2019\/esop","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Single-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"86","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"28","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"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"}},{"value":"3,2","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"12","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information"}}]}}