{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,18]],"date-time":"2026-05-18T07:03:23Z","timestamp":1779087803940,"version":"3.51.4"},"publisher-location":"Cham","reference-count":35,"publisher":"Springer Nature Switzerland","isbn-type":[{"value":"9783031308192","type":"print"},{"value":"9783031308208","type":"electronic"}],"license":[{"start":{"date-parts":[[2023,1,1]],"date-time":"2023-01-01T00:00:00Z","timestamp":1672531200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2023,4,20]],"date-time":"2023-04-20T00:00:00Z","timestamp":1681948800000},"content-version":"vor","delay-in-days":109,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2023]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Multiparty session typing (MPST) is a method to automatically prove safety and liveness of protocol implementations relative to specifications. We present BGJ: a new tool to apply the MPST method in combination with Java. The checks performed using our tool are purely static (all errors are reported early at compile-time) and resource-efficient (near-zero cost abstractions at run-time), thereby addressing two issues of existing tools. BGJ is built using VerCors, but our approach is general.<\/jats:p>","DOI":"10.1007\/978-3-031-30820-8_3","type":"book-chapter","created":{"date-parts":[[2023,4,19]],"date-time":"2023-04-19T19:02:36Z","timestamp":1681930956000},"page":"19-27","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["Multiparty Session Typing in Java, Deductively"],"prefix":"10.1007","author":[{"given":"Jelle","family":"Bouma","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Stijn","family":"de Gouw","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sung-Shik","family":"Jongmans","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2023,4,20]]},"reference":[{"key":"3_CR1","doi-asserted-by":"crossref","unstructured":"Ahrendt, W., Beckert, B., Bubel, R., H\u00e4hnle, R., Schmitt, P.H., Ulbrich, M. (eds.): Deductive Software Verification - The KeY Book - From Theory to Practice, Lecture Notes in Computer Science, vol. 10001. Springer (2016)","DOI":"10.1007\/978-3-319-49812-6"},{"key":"3_CR2","doi-asserted-by":"crossref","unstructured":"Blom, S., Huisman, M.: The vercors tool for verification of concurrent programs. In: FM. Lecture Notes in Computer Science, vol.\u00a08442, pp. 127\u2013131. Springer (2014)","DOI":"10.1007\/978-3-319-06410-9_9"},{"key":"3_CR3","doi-asserted-by":"publisher","unstructured":"Bouma, J., de\u00a0Gouw, S., Jongmans, S.: Multiparty session typing in java, deductively (artifact) (2023). https:\/\/doi.org\/10.5281\/zenodo.7559175","DOI":"10.5281\/zenodo.7559175"},{"key":"3_CR4","doi-asserted-by":"crossref","unstructured":"Brookes, S.: A semantics for concurrent separation logic. Theor. Comput. Sci. 375(1-3), 227\u2013270 (2007)","DOI":"10.1016\/j.tcs.2006.12.034"},{"key":"3_CR5","doi-asserted-by":"crossref","unstructured":"Castro-Perez, D., Hu, R., Jongmans, S., Ng, N., Yoshida, N.: Distributed programming using role-parametric session types in Go: statically-typed endpoint APIs for dynamically-instantiated communication structures. Proc. ACM Program. Lang. 3(POPL), 29:1\u201329:30 (2019)","DOI":"10.1145\/3290342"},{"key":"3_CR6","unstructured":"Cledou, G., Edixhoven, L., Jongmans, S., Proen\u00e7a, J.: API generation for multiparty session types, revisited and revised using scala 3. In: ECOOP. LIPIcs, vol.\u00a0222, pp. 27:1\u201327:28. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2022)"},{"key":"3_CR7","doi-asserted-by":"crossref","unstructured":"Cohen, E., Dahlweid, M., Hillebrand, M.A., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: A practical system for verifying concurrent C. In: TPHOLs. Lecture Notes in Computer Science, vol.\u00a05674, pp. 23\u201342. Springer (2009)","DOI":"10.1007\/978-3-642-03359-9_2"},{"key":"3_CR8","doi-asserted-by":"crossref","unstructured":"Cutner, Z., Yoshida, N.: Safe session-based asynchronous coordination in rust. In: COORDINATION. Lecture Notes in Computer Science, vol. 12717, pp. 80\u201389. Springer (2021)","DOI":"10.1007\/978-3-030-78142-2_5"},{"key":"3_CR9","doi-asserted-by":"crossref","unstructured":"Cutner, Z., Yoshida, N., Vassor, M.: Deadlock-free asynchronous message reordering in rust with multiparty session types. In: PPoPP. pp. 246\u2013261. ACM (2022)","DOI":"10.1145\/3503221.3508404"},{"key":"3_CR10","doi-asserted-by":"crossref","unstructured":"Deni\u00e9lou, P., Yoshida, N.: Multiparty session types meet communicating automata. In: ESOP. Lecture Notes in Computer Science, vol.\u00a07211, pp. 194\u2013213. Springer (2012)","DOI":"10.1007\/978-3-642-28869-2_10"},{"key":"3_CR11","doi-asserted-by":"crossref","unstructured":"Deni\u00e9lou, P., Yoshida, N.: Multiparty compatibility in communicating automata: Characterisation and synthesis of global session types. In: ICALP (2). Lecture Notes in Computer Science, vol.\u00a07966, pp. 174\u2013186. Springer (2013)","DOI":"10.1007\/978-3-642-39212-2_18"},{"key":"3_CR12","unstructured":"GitHub, Inc: scribble-java\/adder.scr at 02dbf9abd9993b17c809aa610311452ec4c763bc $${\\cdot }$$ scribble\/scribble-java, accessed 22 January 2023, https:\/\/github.com\/scribble\/scribble-java\/blob\/02dbf9abd9993b17c809aa610311452ec4c763bc\/scribble-demos\/scrib\/tutorial\/src\/tutorial\/adder\/Adder.scr"},{"key":"3_CR13","unstructured":"GitHub, Inc: scribble-java\/scribble-demos\/scrib at ccb0e48d69c6e3088e746138099c3183ca1ac79b $$\\cdot $$ scribble\/scribble-java, accessed 22 January 2023, https:\/\/github.com\/scribble\/scribble-java\/tree\/ccb0e48d69c6e3088e746138099c3183ca1ac79b\/scribble-demos\/scrib"},{"key":"3_CR14","doi-asserted-by":"crossref","unstructured":"Honda, K., Yoshida, N., Carbone, M.: Multiparty asynchronous session types. In: POPL. pp. 273\u2013284. ACM (2008)","DOI":"10.1145\/1328897.1328472"},{"key":"3_CR15","doi-asserted-by":"crossref","unstructured":"Honda, K., Yoshida, N., Carbone, M.: Multiparty asynchronous session types. J. ACM 63(1), 9:1\u20139:67 (2016)","DOI":"10.1145\/2827695"},{"key":"3_CR16","doi-asserted-by":"crossref","unstructured":"Hu, R., Yoshida, N.: Hybrid session verification through endpoint API generation. In: FASE. Lecture Notes in Computer Science, vol.\u00a09633, pp. 401\u2013418. Springer (2016)","DOI":"10.1007\/978-3-662-49665-7_24"},{"key":"3_CR17","doi-asserted-by":"crossref","unstructured":"Hu, R., Yoshida, N.: Explicit connection actions in multiparty session types. In: FASE. Lecture Notes in Computer Science, vol. 10202, pp. 116\u2013133. Springer (2017)","DOI":"10.1007\/978-3-662-54494-5_7"},{"key":"3_CR18","doi-asserted-by":"crossref","unstructured":"Huisman, M., Monti, R.E.: On the industrial application of critical software verification with vercors. In: ISoLA (3). Lecture Notes in Computer Science, vol. 12478, pp. 273\u2013292. Springer (2020)","DOI":"10.1007\/978-3-030-61467-6_18"},{"key":"3_CR19","doi-asserted-by":"crossref","unstructured":"Jacobs, B., Smans, J., Philippaerts, P., Vogels, F., Penninckx, W., Piessens, F.: Verifast: A powerful, sound, predictable, fast verifier for C and java. In: NASA Formal Methods. Lecture Notes in Computer Science, vol.\u00a06617, pp. 41\u201355. Springer (2011)","DOI":"10.1007\/978-3-642-20398-5_4"},{"key":"3_CR20","doi-asserted-by":"crossref","unstructured":"Jongmans, S., Yoshida, N.: Exploring type-level bisimilarity towards more expressive multiparty session types. In: ESOP. Lecture Notes in Computer Science, vol. 12075, pp. 251\u2013279. Springer (2020)","DOI":"10.1007\/978-3-030-44914-8_10"},{"key":"3_CR21","doi-asserted-by":"crossref","unstructured":"Kouzapas, D., Dardha, O., Perera, R., Gay, S.J.: Typechecking protocols with mungo and stmungo: A session type toolchain for java. Sci. Comput. Program. 155, 52\u201375 (2018)","DOI":"10.1016\/j.scico.2017.10.006"},{"key":"3_CR22","doi-asserted-by":"crossref","unstructured":"Lagaillardie, N., Neykova, R., Yoshida, N.: Implementing multiparty session types in Rust. In: COORDINATION. Lecture Notes in Computer Science, vol. 12134, pp. 127\u2013136. Springer (2020)","DOI":"10.1007\/978-3-030-50029-0_8"},{"key":"3_CR23","unstructured":"Lagaillardie, N., Neykova, R., Yoshida, N.: Stay safe under panic: Affine rust programming with multiparty session types. In: ECOOP. LIPIcs, vol.\u00a0222, pp. 4:1\u20134:29. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2022)"},{"key":"3_CR24","doi-asserted-by":"crossref","unstructured":"L\u00f3pez, H.A., Marques, E.R.B., Martins, F., Ng, N., Santos, C., Vasconcelos, V.T., Yoshida, N.: Protocol-based verification of message-passing parallel programs. In: OOPSLA. pp. 280\u2013298. ACM (2015)","DOI":"10.1145\/2858965.2814302"},{"key":"3_CR25","doi-asserted-by":"crossref","unstructured":"Miu, A., Ferreira, F., Yoshida, N., Zhou, F.: Communication-safe web programming in typescript with routed multiparty session types. In: CC. pp. 94\u2013106. ACM (2021)","DOI":"10.1145\/3446804.3446854"},{"key":"3_CR26","doi-asserted-by":"crossref","unstructured":"Monti, R.E., Rubbens, R., Huisman, M.: On deductive verification of an industrial concurrent software component with vercors. In: ISoLA (1). Lecture Notes in Computer Science, vol. 13701, pp. 517\u2013534. Springer (2022)","DOI":"10.1007\/978-3-031-19849-6_29"},{"key":"3_CR27","doi-asserted-by":"crossref","unstructured":"Neykova, R., Hu, R., Yoshida, N., Abdeljallal, F.: A session type provider: compile-time API generation of distributed protocols with refinements in F#. In: CC. pp. 128\u2013138. ACM (2018)","DOI":"10.1145\/3178372.3179495"},{"key":"3_CR28","doi-asserted-by":"crossref","unstructured":"Neykova, R., Yoshida, N.: Featherweight scribble. In: Models, Languages, and Tools for Concurrent and Distributed Programming. Lecture Notes in Computer Science, vol. 11665, pp. 236\u2013259. Springer (2019)","DOI":"10.1007\/978-3-030-21485-2_14"},{"key":"3_CR29","doi-asserted-by":"crossref","unstructured":"O\u2019Hearn, P.W.: Resources, concurrency, and local reasoning. Theor. Comput. Sci. 375(1-3), 271\u2013307 (2007)","DOI":"10.1016\/j.tcs.2006.12.035"},{"key":"3_CR30","doi-asserted-by":"crossref","unstructured":"Oortwijn, W., Huisman, M.: Formal verification of an industrial safety-critical traffic tunnel control system. In: IFM. Lecture Notes in Computer Science, vol. 11918, pp. 418\u2013436. Springer (2019)","DOI":"10.1007\/978-3-030-34968-4_23"},{"key":"3_CR31","doi-asserted-by":"crossref","unstructured":"Penninckx, W., Jacobs, B., Piessens, F.: Sound, modular and compositional verification of the input\/output behavior of programs. In: ESOP. Lecture Notes in Computer Science, vol.\u00a09032, pp. 158\u2013182. Springer (2015)","DOI":"10.1007\/978-3-662-46669-8_7"},{"key":"3_CR32","unstructured":"Scalas, A., Dardha, O., Hu, R., Yoshida, N.: A linear decomposition of multiparty sessions for safe distributed programming. In: ECOOP. LIPIcs, vol.\u00a074, pp. 24:1\u201324:31. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik (2017)"},{"key":"3_CR33","doi-asserted-by":"crossref","unstructured":"Strom, R.E., Yemini, S.: Typestate: A programming language concept for enhancing software reliability. IEEE Trans. Software Eng. 12(1), 157\u2013171 (1986)","DOI":"10.1109\/TSE.1986.6312929"},{"key":"3_CR34","doi-asserted-by":"crossref","unstructured":"Yoshida, N., Zhou, F., Ferreira, F.: Communicating finite state machines and an extensible toolchain for multiparty session types. In: FCT. Lecture Notes in Computer Science, vol. 12867, pp. 18\u201335. Springer (2021)","DOI":"10.1007\/978-3-030-86593-1_2"},{"key":"3_CR35","doi-asserted-by":"crossref","unstructured":"Zhou, F., Ferreira, F., Hu, R., Neykova, R., Yoshida, N.: Statically verified refinements for multiparty protocols. Proc. ACM Program. Lang. 4(OOPSLA), 148:1\u2013148:30 (2020)","DOI":"10.1145\/3428216"}],"container-title":["Lecture Notes in Computer Science","Tools and Algorithms for the Construction and Analysis of Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-031-30820-8_3","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,8,2]],"date-time":"2023-08-02T11:02:32Z","timestamp":1690974152000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-031-30820-8_3"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023]]},"ISBN":["9783031308192","9783031308208"],"references-count":35,"URL":"https:\/\/doi.org\/10.1007\/978-3-031-30820-8_3","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023]]},"assertion":[{"value":"20 April 2023","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"TACAS","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Tools and Algorithms for the Construction and Analysis of Systems","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Paris","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"France","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2023","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"22 April 2023","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"27 April 2023","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"29","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"tacas2023","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/etaps.org\/2023\/tacas","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":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"169","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":"56","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":"6","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","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":"11","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)"}}]}}