{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:58Z","timestamp":1779836758612,"version":"3.53.1"},"reference-count":56,"publisher":"Cambridge University Press (CUP)","license":[{"start":{"date-parts":[[2024,3,25]],"date-time":"2024-03-25T00:00:00Z","timestamp":1711324800000},"content-version":"unspecified","delay-in-days":84,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["cambridge.org"],"crossmark-restriction":true},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2024]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    Gradual typing integrates static and dynamic typing by introducing a dynamic type and a consistency relation. A problem of gradual type systems is that dynamic types can easily hide erroneous data flows since consistency relations are not transitive. Therefore, a more rigorous static check is required to reveal these hidden data flows statically. However, in order to preserve the expressiveness of gradually typed languages, static checks for gradually typed languages cannot simply reject programs with potentially erroneous data flows. By contrast, a more reasonable request is to show how these data flows can affect the execution of the program. In this paper, we propose and formalize\n                    <jats:italic>Static Blame<\/jats:italic>\n                    , a framework that can reveal hidden data flows for gradually typed programs and establish the correspondence between static-time data flows and runtime behavior. With this correspondence, we build a classification of potential errors detected from hidden data flows and formally characterize the possible impact of potential errors in each category on program execution, without simply rejecting the whole program. We implemented Static Blame on Grift, an academic gradually typed language, and evaluated the effectiveness of Static Blame by mutation analysis to verify our theoretical results. Our findings revealed that Static Blame exhibits a notable level of precision and recall in detecting type-related bugs. Furthermore, we conducted a manual classification to elucidate the reasons behind instances of failure. We also evaluated the performance of Static Blame, showing a quadratic growth in run time as program size increases.\n                  <\/jats:p>","DOI":"10.1017\/s0956796824000029","type":"journal-article","created":{"date-parts":[[2024,3,25]],"date-time":"2024-03-25T00:32:25Z","timestamp":1711326745000},"update-policy":"https:\/\/doi.org\/10.1017\/policypage","source":"Crossref","is-referenced-by-count":0,"title":["Static Blame for gradual typing"],"prefix":"10.1017","volume":"34","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-3273-1222","authenticated-orcid":false,"given":"CHENGHAO","family":"SU","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-2352-2226","authenticated-orcid":false,"given":"LIN","family":"CHEN","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-2282-7175","authenticated-orcid":false,"given":"LI","family":"YANHUI","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4645-2526","authenticated-orcid":false,"given":"YUMING","family":"ZHOU","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2024,3,25]]},"reference":[{"key":"S0956796824000029_ref25","doi-asserted-by":"crossref","unstructured":"Lazarek, L. , Greenman, B. , Felleisen, M. & Dimoulas, C. (2021) How to evaluate blame for gradual types. Proc. ACM Program. Lang. 5(ICFP), 1\u201329.","DOI":"10.1145\/3473573"},{"key":"S0956796824000029_ref35","doi-asserted-by":"crossref","first-page":"17","DOI":"10.1007\/978-3-642-00590-9_2","volume-title":"Programming Languages and Systems","author":"Siek","year":"2009"},{"key":"S0956796824000029_ref45","doi-asserted-by":"crossref","unstructured":"Tobin-Hochstadt, S. & Felleisen, M. (2008) The design and implementation of typed scheme. In Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. New York, NY, USA: Association for Computing Machinery, pp. 395\u2013406.","DOI":"10.1145\/1328438.1328486"},{"key":"S0956796824000029_ref4","doi-asserted-by":"crossref","first-page":"e19","DOI":"10.1017\/S0956796816000162","article-title":"Gradual type-and-effect systems","volume":"26","author":"Ba\u00f1ados Schwerter","year":"2016","journal-title":"J. Funct. Program."},{"key":"S0956796824000029_ref47","first-page":"382","volume-title":"A Gradual Interpretation of Union Types. Static Analysis","author":"Toro","year":"2017"},{"key":"S0956796824000029_ref48","doi-asserted-by":"crossref","first-page":"102496","DOI":"10.1016\/j.scico.2020.102496","article-title":"Abstracting gradual references","volume":"197","author":"Toro","year":"2020","journal-title":"Sci. Comput. Program."},{"key":"S0956796824000029_ref49","doi-asserted-by":"crossref","unstructured":"Vitousek, M. M. , Kent, A. M. , Siek, J. G. & Baker, J. (2014) Design and evaluation of gradual typing for python. In Proceedings of the 10th ACM Symposium on Dynamic Languages. New York, NY, USA: Association for Computing Machinery, pp. 45\u201356.","DOI":"10.1145\/2661088.2661101"},{"key":"S0956796824000029_ref53","unstructured":"Williams, J. , Morris, J. G. , Wadler, P. & Zalewski, J. (2017) Mixed messages: Measuring conformance and non-interference in TypeScript. In 31st European Conference on Object-Oriented Programming (ECOOP 2017). Dagstuhl, Germany: Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, pp. 28:1\u201328:29."},{"key":"S0956796824000029_ref54","doi-asserted-by":"crossref","first-page":"87","DOI":"10.1145\/239912.239917","article-title":"A practical soft type system for scheme","volume":"19","author":"Wright","year":"1997","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"S0956796824000029_ref12","doi-asserted-by":"crossref","unstructured":"Castagna, G. , Laurent, M. , Nguy\u00ea\u0303n, K. & Lutze, M. (2022) On type-cases, union elimination, and occurrence typing. Proc. ACM Program. Lang. 6(POPL).","DOI":"10.1145\/3498674"},{"key":"S0956796824000029_ref31","doi-asserted-by":"crossref","DOI":"10.1007\/978-3-662-03811-6","volume-title":"Principles of Program Analysis","author":"Nielson","year":"1999"},{"key":"S0956796824000029_ref41","doi-asserted-by":"crossref","unstructured":"Siek, J. G. , Vitousek, M. M. , Cimini, M. , Tobin-Hochstadt, S. & Garcia, R. (2015) Monotonic references for efficient gradual typing. In Programming Languages and Systems. vol. 9032. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 432\u2013456. Available at: http:\/\/link.springer.com\/10.1007\/978-3-662-46669-8_18.","DOI":"10.1007\/978-3-662-46669-8_18"},{"key":"S0956796824000029_ref21","doi-asserted-by":"crossref","unstructured":"Greenman, B. , Felleisen, M. & Dimoulas, C. (2019) Complete monitors for gradual types. Proc. ACM Program. Lang. 3(OOPSLA), 1\u201329.","DOI":"10.1145\/3360548"},{"key":"S0956796824000029_ref38","unstructured":"Siek, J. G. & Taha, W. (2006) Gradual typing for functional languages. In Scheme and Functional Programming Workshop, pp. 81\u201392."},{"key":"S0956796824000029_ref24","doi-asserted-by":"crossref","unstructured":"Kuhlenschmidt, A. , Almahallawi, D. & Siek, J. G. (2019) Toward efficient gradual typing for structural types via coercions. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation, Phoenix, AZ, USA. New York, NY, USA: Association for Computing Machinery, pp. 517\u2013532.","DOI":"10.1145\/3314221.3314627"},{"key":"S0956796824000029_ref55","doi-asserted-by":"crossref","unstructured":"Wrigstad, T. , Nardelli, F. Z. , Lebresne, S. , \u00d6stlund, J. & Vitek, J. (2010) Integrating typed and untyped code in a scripting language. In Proceedings of the 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Madrid, Spain. New York, NY, USA: Association for Computing Machinery, pp. 377\u2013388.","DOI":"10.1145\/1706299.1706343"},{"key":"S0956796824000029_ref13","doi-asserted-by":"crossref","unstructured":"Chaudhuri, A. , Vekris, P. , Goldman, S. , Roch, M. & Levi, G. (2017) Fast and precise type checking for JavaScript. Proc. ACM Program. Lang. 1(OOPSLA), 1\u201330.","DOI":"10.1145\/3133872"},{"key":"S0956796824000029_ref56","doi-asserted-by":"crossref","unstructured":"Xie, N. , Bi, X. , d. S. Oliveira, B. C. & Schrijvers, T. (2020) Consistent subtyping for all. ACM Trans. Program. Lang. Syst. 42(1), 2:1\u20132:79.","DOI":"10.1145\/3310339"},{"key":"S0956796824000029_ref6","doi-asserted-by":"crossref","unstructured":"Bierman, G. , Abadi, M. & Torgersen, M. (2014) Understanding TypeScript. In ECOOP 2014 \u2013 Object-Oriented Programming. Berlin, Heidelberg: Springer, pp. 257\u2013281.","DOI":"10.1007\/978-3-662-44202-9_11"},{"key":"S0956796824000029_ref27","doi-asserted-by":"crossref","first-page":"2","DOI":"10.22152\/programming-journal.org\/2023\/7\/2","article-title":"Gradual Soundness: Lessons from static Python","volume":"7","author":"Lu","year":"2022","journal-title":"Art, Sci. Eng. Program."},{"key":"S0956796824000029_ref34","unstructured":"Richards, G. , Nardelli, F. Z. & Vitek, J. (2015) Concrete types for TypeScript. In 29th European Conference on Object-Oriented Programming (ECOOP 2015). Dagstuhl, Germany: Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, pp. 76\u2013100. ISSN: 1868-8969."},{"key":"S0956796824000029_ref19","doi-asserted-by":"crossref","unstructured":"Garcia, R. , Clark, A. M. & Tanter, \u00c9. (2016) Abstracting gradual typing. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. St. Petersburg FL USA: ACM. pp. 429\u2013442.","DOI":"10.1145\/2837614.2837670"},{"key":"S0956796824000029_ref50","doi-asserted-by":"crossref","unstructured":"Vitousek, M. M. , Swords, C. & Siek, J. G. (2017) Big types in little runtime: Open-world soundness and collaborative blame for gradual type systems. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages. New York, NY, USA: Association for Computing Machinery, pp. 762\u2013774.","DOI":"10.1145\/3009837.3009849"},{"key":"S0956796824000029_ref1","doi-asserted-by":"crossref","unstructured":"Ahmed, A. , Findler, R. B. , Siek, J. G. & Wadler, P. (2011) Blame for all. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, New York, NY, USA. Association for Computing Machinery, pp. 201\u2013214.","DOI":"10.1145\/1926385.1926409"},{"key":"S0956796824000029_ref32","doi-asserted-by":"crossref","unstructured":"Phipps-Costin, L. , Anderson, C. J. , Greenberg, M. & Guha, A. (2021) Solver-based gradual type migration. Proc. ACM Program. Lang. 5(OOPSLA), 1\u201327.","DOI":"10.1145\/3485488"},{"key":"S0956796824000029_ref40","unstructured":"Siek, J. G. , Vitousek, M. M. , Cimini, M. & Boyland, J. T. (2015) Refined criteria for gradual typing. In 1st Summit on Advances in Programming Languages (SNAPL 2015). Dagstuhl, Germany: Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, pp. 274\u2013293. ISSN: 1868-8969."},{"key":"S0956796824000029_ref44","doi-asserted-by":"crossref","unstructured":"Tobin-Hochstadt, S. & Felleisen, M. (2006) Interlanguage migration: From scripts to programs. In Companion to the 21st ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications - OOPSLA \u201906. Portland, Oregon, USA: ACM Press, pp. 964.","DOI":"10.1145\/1176617.1176755"},{"key":"S0956796824000029_ref39","doi-asserted-by":"crossref","unstructured":"Siek, J. G. & Vachharajani, M. (2008) Gradual typing with unification-based inference. In Proceedings of the 2008 Symposium on Dynamic Languages. New York, NY, USA: Association for Computing Machinery.","DOI":"10.1145\/1408681.1408688"},{"key":"S0956796824000029_ref3","doi-asserted-by":"crossref","unstructured":"Ba\u00f1ados Schwerter, F. , Garcia, R. & Tanter, \u00c9. (2014) A theory of gradual effect systems. In Proceedings of the 19th ACM SIGPLAN International Conference on Functional Programming. Gothenburg Sweden. ACM, pp. 283\u2013295.","DOI":"10.1145\/2628136.2628149"},{"key":"S0956796824000029_ref22","doi-asserted-by":"crossref","first-page":"167","DOI":"10.1007\/s10990-011-9066-z","article-title":"Space-efficient gradual typing","volume":"23","author":"Herman","year":"2010","journal-title":"Higher-Order Symb. Comput."},{"key":"S0956796824000029_ref26","unstructured":"Lehtosalo, J. , van Rossum, G. , Levkivskyi, I. & Sullivan, M. J. (2014) mypy - Optional Static Typing for Python."},{"key":"S0956796824000029_ref15","doi-asserted-by":"crossref","unstructured":"Feldthaus, A. & M\u00f8ller, A. (2014) Checking correctness of TypeScript interfaces for JavaScript libraries. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages Applications, Portland, Oregon, USA. New York, NY, USA: Association for Computing Machinery, pp. 1\u201316.","DOI":"10.1145\/2660193.2660215"},{"key":"S0956796824000029_ref29","doi-asserted-by":"crossref","unstructured":"Migeed, Z. & Palsberg, J. (2020) What is decidable about gradual types? Proc. ACM Program. Lang. 4(POPL), 1\u201329.","DOI":"10.1145\/3371097"},{"key":"S0956796824000029_ref36","doi-asserted-by":"crossref","unstructured":"Siek, J. & Taha, W. (2007) Gradual typing for objects. In ECOOP 2007 \u2013 Object-Oriented Programming. vol. 4609. Lecture Notes in Computer Science. Springer Berlin Heidelberg. Berlin, Heidelberg, pp. 2\u201327. Available at: http:\/\/link.springer.com\/10.1007\/978-3-540-73589-2_2.","DOI":"10.1007\/978-3-540-73589-2_2"},{"key":"S0956796824000029_ref42","doi-asserted-by":"crossref","unstructured":"Siek, J. G. & Wadler, P. (2010) Threesomes, with and without blame. In Proceedings of the 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Madrid, Spain. New York, NY, USA: Association for Computing Machinery, pp. 365\u2013376.","DOI":"10.1145\/1706299.1706342"},{"key":"S0956796824000029_ref23","doi-asserted-by":"crossref","unstructured":"Igarashi, Y. , Sekiyama, T. & Igarashi, A. (2017) On polymorphic gradual typing. Proc. ACM Program. Lang. 1(ICFP), 1\u201329.","DOI":"10.1145\/3110284"},{"key":"S0956796824000029_ref16","doi-asserted-by":"crossref","unstructured":"Findler, R. B. & Felleisen, M. (2002) Contracts for higher-order functions. In Proceedings of the Seventh ACM SIGPLAN International Conference on Functional Programming - ICFP \u201902. Pittsburgh, PA, USA. ACM Press, pp. 48\u201359.","DOI":"10.1145\/583852.581484"},{"key":"S0956796824000029_ref33","doi-asserted-by":"crossref","unstructured":"Rastogi, A. , Chaudhuri, A. & Hosmer, B. (2012) The Ins and Outs of gradual type inference. In Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Philadelphia, PA, USA. New York, NY, USA: Association for Computing Machinery, pp. 481\u2013494.","DOI":"10.1145\/2103656.2103714"},{"key":"S0956796824000029_ref37","doi-asserted-by":"crossref","unstructured":"Siek, J. , Thiemann, P. & Wadler, P. (2015) Blame and coercion: Together again for the first time. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation. New York, NY, USA: Association for Computing Machinery, pp. 425\u2013435.","DOI":"10.1145\/2737924.2737968"},{"key":"S0956796824000029_ref11","doi-asserted-by":"crossref","unstructured":"Castagna, G. , Lanvin, V. , Petrucciani, T. & Siek, J. G. (2019) Gradual typing: A new perspective. Proc. ACM Program. Lang. 3(POPL), 1\u201332.","DOI":"10.1145\/3290329"},{"key":"S0956796824000029_ref9","doi-asserted-by":"crossref","unstructured":"Campora, J. P. & Chen, S. (2020) Taming type annotations in gradual typing. Proc. ACM Program. Lang. 4(OOPSLA), 1\u201330.","DOI":"10.1145\/3428259"},{"key":"S0956796824000029_ref46","unstructured":"Tobin-Hochstadt, S. , Felleisen, M. , Findler, R. , Flatt, M. , Greenman, B. , Kent, A. M. , St-Amour, V. , Strickland, T. S. & Takikawa, A. (2017) Migratory typing: Ten years later. In 2nd Summit on Advances in Programming Languages (SNAPL 2017). Dagstuhl, Germany: Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, pp. 17:1\u201317:17. ISSN: 1868-8969."},{"key":"S0956796824000029_ref51","doi-asserted-by":"crossref","unstructured":"Wadler, P. (2021) GATE: Gradual effect types. In Leveraging Applications of Formal Methods, Verification and Validation. vol. 13036. Lecture Notes in Computer Science. Cham: Springer International Publishing, pp. 335\u2013345. Available at: https:\/\/link.springer.com\/10.1007\/978-3-030-89159-6_21.","DOI":"10.1007\/978-3-030-89159-6_21"},{"key":"S0956796824000029_ref52","doi-asserted-by":"crossref","unstructured":"Wadler, P. & Findler, R. B. (2009) Well-typed programs can\u2019t be blamed. In Programming Languages and Systems. vol. 5502. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 1\u201316. Available at: http:\/\/link.springer.com\/10.1007\/978-3-642-00590-9_1.","DOI":"10.1007\/978-3-642-00590-9_1"},{"key":"S0956796824000029_ref18","doi-asserted-by":"crossref","unstructured":"Garcia, R. & Cimini, M. (2015) Principal type schemes for gradual programs. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. Mumbai India. ACM, pp. 303\u2013315.","DOI":"10.1145\/2676726.2676992"},{"key":"S0956796824000029_ref10","doi-asserted-by":"crossref","unstructured":"Campora, J. P. , Chen, S. , Erwig, M. & Walkingshaw, E. (2017) Migrating gradual types. Proc. ACM Program. Lang. 2(POPL).","DOI":"10.1145\/3158103"},{"key":"S0956796824000029_ref2","doi-asserted-by":"crossref","unstructured":"Ahmed, A. , Jamner, D. , Siek, J. G. & Wadler, P. (2017) Theorems for free for free: Parametricity, with and without types. Proc. ACM Program. Lang. 1(ICFP), 1\u201328.","DOI":"10.1145\/3110283"},{"key":"S0956796824000029_ref20","doi-asserted-by":"crossref","unstructured":"Greenman, B. & Felleisen, M. (2018) A spectrum of type soundness and performance. Proc. ACM Program. Lang. 2(ICFP), 1\u201332.","DOI":"10.1145\/3236766"},{"key":"S0956796824000029_ref43","doi-asserted-by":"crossref","unstructured":"Takikawa, A. , Feltey, D. , Greenman, B. , New, M. S. , Vitek, J. & Felleisen, M. (2016) Is sound gradual typing dead? In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. St. Petersburg FL USA: ACM, pp. 456\u2013468.","DOI":"10.1145\/2837614.2837630"},{"key":"S0956796824000029_ref14","unstructured":"Chung, B. , Li, P. , Nardelli, F. Z. & Vitek, J. (2018) KafKa: Gradual typing for objects. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018). Dagstuhl, Germany: Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik. pp. 12:1\u201312:24."},{"key":"S0956796824000029_ref5","doi-asserted-by":"crossref","unstructured":"Bauman, S. , Bolz, C. F. , Hirschfeld, R. , Kirilichev, V. , Pape, T. , Siek, J. G. & Tobin-Hochstadt, S. (2015) Pycket: A tracing JIT for a functional language. In Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, Vancouver, BC, Canada. New York, NY, USA. Association for Computing Machinery, pp. 22\u201334.","DOI":"10.1145\/2784731.2784740"},{"key":"S0956796824000029_ref17","unstructured":"Flatt, M. & PLT. (2010) Reference: Racket. Technical Report PLT-TR-2010-1. PLT Design Inc. Available at: https:\/\/racket-lang.org\/tr1\/."},{"key":"S0956796824000029_ref8","doi-asserted-by":"crossref","unstructured":"Bonnaire-Sergeant, A. , Davies, R. & Tobin-Hochstadt, S. (2016) Practical optional types for clojure. In Programming Languages and Systems, vol. 9632. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 68\u201394. Available at: http:\/\/link.springer.com\/10.1007\/978-3-662-49498-1_4.","DOI":"10.1007\/978-3-662-49498-1_4"},{"key":"S0956796824000029_ref28","doi-asserted-by":"crossref","unstructured":"Matthews, J. & Findler, R. B. (2007) Operational semantics for multi-language programs. In Proceedings of the 34th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. New York, NY, USA: Association for Computing Machinery, pp. 3\u201310.","DOI":"10.1145\/1190216.1190220"},{"key":"S0956796824000029_ref7","first-page":"85","volume-title":"Design and Implementation of a Special-Purpose Static Program Analyzer for Safety-Critical Real-Time Embedded Software","author":"Blanchet","year":"2002"},{"key":"S0956796824000029_ref30","doi-asserted-by":"crossref","unstructured":"Muehlboeck, F. & Tate, R. (2017) Sound gradual typing is nominally alive and well. Proc. ACM Program. Lang. 1(OOPSLA), 1\u201330.","DOI":"10.1145\/3133880"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796824000029","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:37:02Z","timestamp":1779835022000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796824000029\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024]]},"references-count":56,"alternative-id":["S0956796824000029"],"URL":"https:\/\/doi.org\/10.1017\/s0956796824000029","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024]]},"assertion":[{"value":"\u00a9 The Author(s), 2024. Published by Cambridge University Press","name":"copyright","label":"Copyright","group":{"name":"copyright_and_licensing","label":"Copyright and Licensing"}},{"value":"This is an Open Access article, distributed under the terms of the Creative Commons Attribution licence (https:\/\/creativecommons.org\/licenses\/by\/4.0\/), which permits unrestricted re-use, distribution and reproduction, provided the original article is properly cited.","name":"license","label":"License","group":{"name":"copyright_and_licensing","label":"Copyright and Licensing"}},{"value":"This content has been made available to all.","name":"free","label":"Free to read"}],"article-number":"e4"}}