{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:14:39Z","timestamp":1775873679462,"version":"3.50.1"},"publisher-location":"Cham","reference-count":48,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030451899","type":"print"},{"value":"9783030451905","type":"electronic"}],"license":[{"start":{"date-parts":[[2020,1,1]],"date-time":"2020-01-01T00:00:00Z","timestamp":1577836800000},"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":[[2020]]},"DOI":"10.1007\/978-3-030-45190-5_15","type":"book-chapter","created":{"date-parts":[[2020,4,17]],"date-time":"2020-04-17T09:03:02Z","timestamp":1587114182000},"page":"266-284","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":11,"title":["Discourje: Runtime Verification of Communication Protocols in Clojure"],"prefix":"10.1007","author":[{"given":"Ruben","family":"Hamers","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4394-8745","authenticated-orcid":false,"given":"Sung-Shik","family":"Jongmans","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2020,4,17]]},"reference":[{"key":"15_CR1","doi-asserted-by":"crossref","unstructured":"Ancona, D., Bono, V., Bravetti, M., Campos, J., Castagna, G., Deni\u00e9lou, P., Gay, S.J., Gesbert, N., Giachino, E., Hu, R., Johnsen, E.B., Martins, F., Mascardi, V., Montesi, F., Neykova, R., Ng, N., Padovani, L., Vasconcelos, V.T., Yoshida, N.: Behavioral types in programming languages. Foundations and Trends in Programming Languages 3(2\u20133), 95\u2013230 (2016)","DOI":"10.1561\/2500000031"},{"key":"15_CR2","doi-asserted-by":"crossref","unstructured":"Barnett, M., Chang, B.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: A modular reusable verifier for object-oriented programs. In: FMCO. Lecture Notes in Computer Science, vol. 4111, pp. 364\u2013387. Springer (2005)","DOI":"10.1007\/11804192_17"},{"key":"15_CR3","unstructured":"Bocchi, L., Chen, T., Demangeon, R., Honda, K., Yoshida, N.: Monitoring networks through multiparty session types. Theor. Comput. Sci. 669, 33\u201358 (2017)"},{"key":"15_CR4","doi-asserted-by":"crossref","unstructured":"Bocchi, L., Honda, K., Tuosto, E., Yoshida, N.: A theory of design-by-contract for distributed multiparty interactions. In: CONCUR. Lecture Notes in Computer Science, vol. 6269, pp. 162\u2013176. Springer (2010)","DOI":"10.1007\/978-3-642-15375-4_12"},{"key":"15_CR5","doi-asserted-by":"crossref","unstructured":"Bocchi, L., Yang, W., Yoshida, N.: Timed multiparty session types. In: CONCUR. Lecture Notes in Computer Science, vol. 8704, pp. 419\u2013434. Springer (2014)","DOI":"10.1007\/978-3-662-44584-6_29"},{"key":"15_CR6","doi-asserted-by":"crossref","unstructured":"Bonnaire-Sergeant, A., Davies, R., Tobin-Hochstadt, S.: Practical optional types for clojure. In: ESOP. Lecture Notes in Computer Science, vol. 9632, pp. 68\u201394. Springer (2016)","DOI":"10.1007\/978-3-662-49498-1_4"},{"key":"15_CR7","unstructured":"Capecchi, S., Castellani, I., Dezani-Ciancaglini, M.: Typing access control and secure information flow in sessions. Inf. Comput. 238, 68\u2013105 (2014)"},{"key":"15_CR8","doi-asserted-by":"crossref","unstructured":"Capecchi, S., Castellani, I., Dezani-Ciancaglini, M.: Information flow safety in multiparty sessions. Mathematical Structures in Computer Science 26(8), 1352\u20131394 (2016)","DOI":"10.1017\/S0960129514000619"},{"key":"15_CR9","doi-asserted-by":"crossref","unstructured":"Capecchi, S., Castellani, I., Dezani-Ciancaglini, M., Rezk, T.: Session types for access and information flow control. In: CONCUR. Lecture Notes in Computer Science, vol. 6269, pp. 237\u2013252. Springer (2010)","DOI":"10.1007\/978-3-642-15375-4_17"},{"key":"15_CR10","doi-asserted-by":"crossref","unstructured":"Carbone, M., Honda, K., Yoshida, N.: Structured communication-centred programming for web services. In: ESOP. Lecture Notes in Computer Science, vol. 4421, pp. 2\u201317. Springer (2007)","DOI":"10.1007\/978-3-540-71316-6_2"},{"key":"15_CR11","doi-asserted-by":"crossref","unstructured":"Carbone, M., Honda, K., Yoshida, N.: Structured communication-centered programming for web services. ACM Trans. Program. Lang. Syst. 34(2), 8:1\u20138:78 (2012)","DOI":"10.1145\/2220365.2220367"},{"key":"15_CR12","doi-asserted-by":"crossref","unstructured":"Castagna, G., Dezani-Ciancaglini, M., Padovani, L.: On global types and multi-party session. Logical Methods in Computer Science 8(1) (2012)","DOI":"10.2168\/LMCS-8(1:24)2012"},{"key":"15_CR13","unstructured":"Castellani, I., Dezani-Ciancaglini, M., P\u00e9rez, J.A.: Self-adaptation and secure information flow in multiparty communications. Formal Asp. Comput. 28(4), 669\u2013696 (2016)"},{"key":"15_CR14","doi-asserted-by":"crossref","unstructured":"Castro, 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. PACMPL 3(POPL), 29:1\u201329:30 (2019)","DOI":"10.1145\/3290342"},{"key":"15_CR15","unstructured":"Clojure Team: Clojure - State of Clojure 2019 Results (04-02-2019), Accessed 1 2019, \nhttps:\/\/clojure.org\/news\/2019\/02\/04\/state-of-clojure-2019"},{"key":"15_CR16","unstructured":"Clojure Team: Clojure - Clojure core.async Channels (28-06-2013), Accessed 1 September 2019, \nhttps:\/\/clojure.org\/news\/2013\/06\/28\/clojure-clore-async-channels"},{"key":"15_CR17","unstructured":"Clojure Team: Clojure (nd), Accessed 1 2019, \nhttps:\/\/clojure.org"},{"key":"15_CR18","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. 5674, pp. 23\u201342. Springer (2009)","DOI":"10.1007\/978-3-642-03359-9_2"},{"key":"15_CR19","doi-asserted-by":"crossref","unstructured":"Demangeon, R., Honda, K., Hu, R., Neykova, R., Yoshida, N.: Practical interruptible conversations: distributed dynamic verification with multiparty session types and python. Formal Methods in System Design 46(3), 197\u2013225 (2015)","DOI":"10.1007\/s10703-014-0218-8"},{"key":"15_CR20","doi-asserted-by":"crossref","unstructured":"Deni\u00e9lou, P., Yoshida, N., Bejleri, A., Hu, R.: Parameterised multiparty session types. Logical Methods in Computer Science 8(4) (2012)","DOI":"10.2168\/LMCS-8(4:6)2012"},{"key":"15_CR21","doi-asserted-by":"crossref","unstructured":"Filli\u00e2tre, J., Paskevich, A.: Why3 - where programs meet provers. In: ESOP. Lecture Notes in Computer Science, vol. 7792, pp. 125\u2013128. Springer (2013)","DOI":"10.1007\/978-3-642-37036-6_8"},{"key":"15_CR22","doi-asserted-by":"crossref","unstructured":"Fokkink, W.: Introduction to Process Algebra. Texts in Theoretical Computer Science. An EATCS Series, Springer (2000)","DOI":"10.1007\/978-3-662-04293-9"},{"key":"15_CR23","unstructured":"Frumkin, M.A., Schultz, M.G., Jin, H., Yan, J.C.: Performance and scalability of the NAS parallel benchmarks in java. In: IPDPS. p. 139. IEEE Computer Society (2003)"},{"key":"15_CR24","doi-asserted-by":"crossref","unstructured":"van Glabbeek, R.J., Weijland, W.P.: Branching time and abstraction in bisimulation semantics. J. ACM 43(3), 555\u2013600 (1996)","DOI":"10.1145\/233551.233556"},{"key":"15_CR25","unstructured":"Go Team: The Go Programming Language (nd), Accessed 1 September 2019, \nhttps:\/\/golang.org"},{"key":"15_CR26","doi-asserted-by":"crossref","unstructured":"Hickey, R.: The clojure programming language. In: DLS. p. 1. ACM (2008)","DOI":"10.1145\/1408681.1408682"},{"key":"15_CR27","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":"15_CR28","doi-asserted-by":"crossref","unstructured":"Hu, R., Yoshida, N.: Hybrid session verification through endpoint API generation. In: FASE. Lecture Notes in Computer Science, vol. 9633, pp. 401\u2013418. Springer (2016)","DOI":"10.1007\/978-3-662-49665-7_24"},{"key":"15_CR29","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":"15_CR30","doi-asserted-by":"crossref","unstructured":"H\u00fcttel, H., Lanese, I., Vasconcelos, V.T., Caires, L., Carbone, M., Deni\u00e9lou, P., Mostrous, D., Padovani, L., Ravara, A., Tuosto, E., Vieira, H.T., Zavattaro, G.: Foundations of session types and behavioural contracts. ACM Comput. Surv. 49(1), 3:1\u20133:36 (2016)","DOI":"10.1145\/2873052"},{"key":"15_CR31","doi-asserted-by":"crossref","unstructured":"Jongmans, S.S., Yoshida, N.: Exploring type-level bisimilarity towards more expressive multiparty session types. In: ESOP 2020 (in press)","DOI":"10.1007\/978-3-030-44914-8_10"},{"key":"15_CR32","doi-asserted-by":"crossref","unstructured":"Lange, J., Ng, N., Toninho, B., Yoshida, N.: Fencing off go: liveness and safety for channel-based programming. In: POPL. pp. 748\u2013761. ACM (2017)","DOI":"10.1145\/3093333.3009847"},{"key":"15_CR33","doi-asserted-by":"crossref","unstructured":"Lange, J., Ng, N., Toninho, B., Yoshida, N.: A static verification framework for message passing in go using behavioural types. In: ICSE. pp. 1137\u20131148. ACM (2018)","DOI":"10.1145\/3180155.3180157"},{"key":"15_CR34","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":"15_CR35","doi-asserted-by":"crossref","unstructured":"Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight dynamic binary instrumentation. In: PLDI. pp. 89\u2013100. ACM (2007)","DOI":"10.1145\/1273442.1250746"},{"key":"15_CR36","unstructured":"Neykova, R., Bocchi, L., Yoshida, N.: Timed runtime monitoring for multiparty conversations. Formal Asp. Comput. 29(5), 877\u2013910 (2017)"},{"key":"15_CR37","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":"15_CR38","doi-asserted-by":"crossref","unstructured":"Neykova, R., Yoshida, N.: Let it recover: multiparty protocol-induced recovery. In: CC. pp. 98\u2013108. ACM (2017)","DOI":"10.1145\/3033019.3033031"},{"key":"15_CR39","doi-asserted-by":"crossref","unstructured":"Ng, N., Yoshida, N.: Pabble: parameterised scribble. Service Oriented Computing and Applications 9(3\u20134), 269\u2013284 (2015)","DOI":"10.1007\/s11761-014-0172-8"},{"key":"15_CR40","doi-asserted-by":"crossref","unstructured":"Ng, N., Yoshida, N.: Static deadlock detection for concurrent go by global session graph synthesis. In: CC. pp. 174\u2013184. ACM (2016)","DOI":"10.1145\/2892208.2892232"},{"key":"15_CR41","doi-asserted-by":"crossref","unstructured":"Pinzaru, G., Rivera, V.: Towards static verification of clojure contract-based programs. In: TOOLS. Lecture Notes in Computer Science, vol. 11771, pp. 73\u201380. Springer (2019)","DOI":"10.1007\/978-3-030-29852-4_5"},{"key":"15_CR42","unstructured":"Rust Team: Rust Programming Language (nd), Accessed 1 September 2019, \nhttps:\/\/rust-lang.org"},{"key":"15_CR43","doi-asserted-by":"crossref","unstructured":"Santos, C., Martins, F., Vasconcelos, V.T.: Deductive verification of parallel programs using why3. In: ICE. EPTCS, vol. 189, pp. 128\u2013142 (2015)","DOI":"10.4204\/EPTCS.189.11"},{"key":"15_CR44","unstructured":"Scalas, A., Dardha, O., Hu, R., Yoshida, N.: A linear decomposition of multiparty sessions for safe distributed programming. In: ECOOP. LIPIcs, vol. 74, pp. 24:1\u201324:31. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik (2017)"},{"key":"15_CR45","doi-asserted-by":"crossref","unstructured":"Stadtm\u00fcller, K., Sulzmann, M., Thiemann, P.: Static trace-based deadlock analysis for synchronous mini-go. In: APLAS. Lecture Notes in Computer Science, vol. 10017, pp. 116\u2013136 (2016)","DOI":"10.1007\/978-3-319-47958-3_7"},{"key":"15_CR46","doi-asserted-by":"crossref","unstructured":"Tasharofi, S., Dinges, P., Johnson, R.E.: Why do scala developers mix the actor model with other concurrency models? In: ECOOP. Lecture Notes in Computer Science, vol. 7920, pp. 302\u2013326. Springer (2013)","DOI":"10.1007\/978-3-642-39038-8_13"},{"key":"15_CR47","unstructured":"Toninho, B., Yoshida, N.: Certifying data in multiparty session types. J. Log. Algebr. Meth. Program. 90, 61\u201383 (2017)"},{"key":"15_CR48","doi-asserted-by":"crossref","unstructured":"Tu, T., Liu, X., Song, L., Zhang, Y.: Understanding real-world concurrency bugs in go. In: ASPLOS. pp. 865\u2013878. ACM (2019)","DOI":"10.1145\/3297858.3304069"}],"container-title":["Lecture Notes in Computer Science","Tools and Algorithms for the Construction and Analysis of Systems"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-45190-5_15","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,8,20]],"date-time":"2020-08-20T13:10:13Z","timestamp":1597929013000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-45190-5_15"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020]]},"ISBN":["9783030451899","9783030451905"],"references-count":48,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-45190-5_15","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020]]},"assertion":[{"value":"17 April 2020","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":"Dublin","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Ireland","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2020","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"25 April 2020","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"30 April 2020","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"26","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"tacas2020","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/www.etaps.org\/2020\/tacas","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 (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":"155","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":"40","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":"8","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":"26% - 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":"14","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)"}},{"value":"The conference could not take place due to the COVID-19 pandemic. There was an online event on July 2, 2020.","order":10,"name":"additional_info_on_review_process","label":"Additional Info on Review Process","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}