{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,9,4]],"date-time":"2023-09-04T16:28:27Z","timestamp":1693844907704},"reference-count":44,"publisher":"Cambridge University Press (CUP)","issue":"4","license":[{"start":{"date-parts":[[2007,8,1]],"date-time":"2007-08-01T00:00:00Z","timestamp":1185926400000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Math. Struct. Comp. Sci."],"published-print":{"date-parts":[[2007,8]]},"abstract":"<jats:p>We present a simple module calculus where selection and execution of a component is possible on<jats:italic>open<\/jats:italic>modules, that is, modules that still need to import some external definitions. Hence, it provides a kernel model for a computational paradigm in which standard execution (that is, execution of a single computation described by a fragment of code) can be interleaved with operations at the meta-level, which can manipulate in various ways the context in which this computation takes place. Formally, this is achieved by introducing<jats:italic>configurations<\/jats:italic>as basic terms. These are, roughly speaking, pairs consisting of an (open, mutually recursive) collection of named components and a term representing a program running in the context of these components. Configurations can be manipulated by classical module\/fragment operators, hence reduction steps can be either execution steps of the program or steps that perform module operations (called<jats:italic>reconfiguration<\/jats:italic>steps).<\/jats:p><jats:p>Since configurations combine the features of lambda abstractions (first-class functions), records, environments with mutually recursive definitions and modules, the calculus extends and integrates both traditional module calculi and recursive lambda calculi. We state confluence of the calculus, and propose different ways to prevent errors arising from the lack of some required component, either by a purely static type system or by a combination of static and run-time checks. Moreover, we define a call-by-need strategy that performs module simplification<jats:italic>only when needed and only once<\/jats:italic>, leading to a generalisation of call-by-need lambda calculi that includes module features. We prove the soundness and completeness of this strategy using an approach based on information content, which also allows us to preserve confluence, even when local substitution rules are added to the calculus.<\/jats:p>","DOI":"10.1017\/s0960129507006238","type":"journal-article","created":{"date-parts":[[2007,8,2]],"date-time":"2007-08-02T13:34:17Z","timestamp":1186061657000},"page":"675-751","source":"Crossref","is-referenced-by-count":2,"title":["A calculus of open modules: call-by-need strategy and confluence"],"prefix":"10.1017","volume":"17","author":[{"given":"SONIA","family":"FAGORZI","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"ELENA","family":"ZUCCA","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"56","published-online":{"date-parts":[[2007,8,1]]},"reference":[{"key":"S0960129507006238_ref44","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-46425-5_27"},{"key":"S0960129507006238_ref41","doi-asserted-by":"publisher","DOI":"10.1023\/A:1010087314987"},{"key":"S0960129507006238_ref37","doi-asserted-by":"crossref","unstructured":"Liu Y. D. and Smith S. F. (2004) Modules with interfaces for dynamic linking and communication. In: Odersky M. (ed.) ECOOP'04 \u2013 Object-Oriented Programming. Springer-Verlag Lecture Notes in Computer Science 3086 414\u2013439.","DOI":"10.1007\/978-3-540-24851-4_19"},{"key":"S0960129507006238_ref35","doi-asserted-by":"crossref","unstructured":"Klop J. , van Oostrom V. and van Raamsdonk F. (1993) Combinatory reduction systems: introduction and survey. Technical Report CS-R9362, CWI.","DOI":"10.1016\/0304-3975(93)90091-7"},{"key":"S0960129507006238_ref34","first-page":"143","article-title":"Term rewriting systems: a tutorial","volume":"32","author":"Klop","year":"1987","journal-title":"Bulletin of EATCS"},{"key":"S0960129507006238_ref32","doi-asserted-by":"crossref","unstructured":"Hirschowitz T. and Leroy X. (2002) Mixin modules in a call-by-value setting. In: Le M\u00e9tayer D. (ed.) ESOP 2002 \u2013 European Symposium on Programming 2002. Springer-Verlag Lecture Notes in Computer Science 2305 6\u201320.","DOI":"10.1007\/3-540-45927-8_2"},{"key":"S0960129507006238_ref31","doi-asserted-by":"crossref","unstructured":"Hirschowitz T. (2004) Rigid mixin modules. In: Kameyama Y. and Stuckey P. J. (eds.) FLOPS 2004 \u2013 Functional and Logic Programming. Springer-Verlag Lecture Notes in Computer Science 2998 214\u2013228.","DOI":"10.1007\/978-3-540-24754-8_16"},{"key":"S0960129507006238_ref30","unstructured":"Hindley J. R. (1964) The Church\u2013Rosser Property and a Result in Combinatory Logic, Ph.D. thesis, University of Newcastle-upon-Tyne."},{"key":"S0960129507006238_ref28","volume-title":"PLDI'01 \u2013 ACM Conference on Programming Language Design and Implementation","author":"Hicks","year":"2001"},{"key":"S0960129507006238_ref27","unstructured":"Felleisen M. and Friedman D. P. (1986) Control operators, the SECD-machine, and the lambda calculus. In: 3rd Working Conference on the Formal Description of Programming Concepts, Ebberup, Denmark 193\u2013219."},{"key":"S0960129507006238_ref26","unstructured":"Fagorzi S. and Zucca E. (2006c) A framework for type safe exchange of mobile code. Technical report, Dipartimento di Informatica e Scienze dell'Informazione, Universit\u00e0 di Genova. (Extended version of Fagorzi and Zucca (2006)b)."},{"key":"S0960129507006238_ref25","unstructured":"Fagorzi S. and Zucca E. (2006b) A framework for type safe exchange of mobile code. In: TGC 2006 \u2013 Trustworthy Global Computing. Springer-Verlag Lecture Notes in Computer Science (to appear)."},{"key":"S0960129507006238_ref23","article-title":"A calculus for reconfiguration","volume":"135","author":"Fagorzi","year":"2005","journal-title":"Electronic Notes in Theoretical Computer Science"},{"key":"S0960129507006238_ref21","unstructured":"Fagorzi S. (2005) Module Calculi for Dynamic Reconfiguration, Ph.D. thesis, Dipartimento di Informatica e Scienze dell'Informazione, Universit\u00e0 di Genova."},{"key":"S0960129507006238_ref43","unstructured":"van Oostrom V. (1994) Confluence for Abstract and Higher-Order Rewriting, Ph.D. thesis, Vrije Universiteit, Amsterdam."},{"key":"S0960129507006238_ref20","doi-asserted-by":"crossref","unstructured":"Drossopoulou S. , Lagorio G. and Eisenbach S. (2006) A flexible model for dynamic linking in Java and C#. Theoretical Computer Science (to appear).","DOI":"10.1016\/j.tcs.2006.02.021"},{"key":"S0960129507006238_ref19","doi-asserted-by":"crossref","unstructured":"Drossopoulou S. , Lagorio G. and Eisenbach S. (2003) Flexible models for dynamic linking. In: Degano P. (ed.) ESOP 2003 \u2013 European Symposium on Programming 2003. Springer-Verlag Lecture Notes in Computer Science 2618 38\u201353.","DOI":"10.1007\/3-540-36575-3_4"},{"key":"S0960129507006238_ref18","doi-asserted-by":"crossref","unstructured":"Drossopoulou S. (2001) Towards an abstract model of Java dynamic linking and verification. In: Harper R. (ed.) TIC'00 \u2013 Third Workshop on Types in Compilation (Selected Papers). Springer-Verlag Lecture Notes in Computer Science 2071 53\u201384.","DOI":"10.1007\/3-540-45332-6_3"},{"key":"S0960129507006238_ref17","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2005.02.036"},{"key":"S0960129507006238_ref15","doi-asserted-by":"publisher","DOI":"10.1007\/s00236-005-0176-0"},{"key":"S0960129507006238_ref12","doi-asserted-by":"publisher","DOI":"10.1016\/S0168-0072(01)00104-X"},{"key":"S0960129507006238_ref9","doi-asserted-by":"crossref","unstructured":"Ancona D. and Zucca E. (1999) A primitive calculus for module systems. In: Nadathur G. (ed.) PPDP'99 \u2013 Principles and Practice of Declarative Programming. Springer-Verlag Lecture Notes in Computer Science 1702 62\u201379.","DOI":"10.1007\/10704567_4"},{"key":"S0960129507006238_ref5","first-page":"423","volume-title":"TCS 2004 (IFIP International Conference on Theoretical Computer Science)","author":"Ancona","year":"2004"},{"key":"S0960129507006238_ref4","doi-asserted-by":"crossref","unstructured":"Ancona D. , Fagorzi S. and Zucca E. (2003) A calculus for dynamic linking. In: Blundo C. and Laneve C. (eds.) Italian Conference on Theoretical Computer Science 2003. Springer-Verlag Lecture Notes in Computer Science 2841 284\u2013301.","DOI":"10.1007\/978-3-540-45208-9_23"},{"key":"S0960129507006238_ref2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-24727-2_3"},{"key":"S0960129507006238_ref13","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002724"},{"key":"S0960129507006238_ref3","unstructured":"Ancona D. (1998) Modular Formal Frameworks for Module Systems, Ph.D. thesis, Dipartimento di Informatica, Universit\u00e0 di Pisa."},{"key":"S0960129507006238_ref22","doi-asserted-by":"publisher","DOI":"10.5381\/jot.2004.3.11.a2"},{"key":"S0960129507006238_ref7","doi-asserted-by":"crossref","unstructured":"Ancona D. , Fagorzi S. and Zucca E. (2005b) Mixin modules for dynamic rebinding. In: De Nicola R. and Sangiorgi D. (eds.) TGC 2005 \u2013 Trustworthy Global Computing. Springer-Verlag Lecture Notes in Computer Science 3705 279\u2013298.","DOI":"10.1007\/11580850_15"},{"key":"S0960129507006238_ref11","doi-asserted-by":"crossref","unstructured":"Ariola Z. M. and Blom S. (1997) Cyclic lambda calculi. In: Abadi M. and Ito T. (eds.) Theoretical Aspects of Computer Software. Springer-Verlag Lecture Notes in Computer Science 1281 77\u2013106.","DOI":"10.1007\/BFb0014548"},{"key":"S0960129507006238_ref1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4419-8598-9"},{"key":"S0960129507006238_ref14","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1997.2651"},{"key":"S0960129507006238_ref40","unstructured":"Mens T. and Kniesel G. (2004) Workshop on foundations of unanticipated software evolution. ETAPS 2004 (available at http:\/\/joint.org\/fuse2004\/)."},{"key":"S0960129507006238_ref39","first-page":"156","volume-title":"International Conference on Functional Programming 2005","author":"Makholm","year":"2005"},{"key":"S0960129507006238_ref6","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2005.09.009"},{"key":"S0960129507006238_ref8","doi-asserted-by":"publisher","DOI":"10.1017\/S0960129598002576"},{"key":"S0960129507006238_ref33","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-24725-8_6"},{"key":"S0960129507006238_ref24","doi-asserted-by":"crossref","unstructured":"Fagorzi S. and Zucca E. (2006a) A calculus of components with dynamic type-checking. In: Formal Aspects of Component Software (FACS'06). Electronic Notes in Theoretical Computer Science (to appear).","DOI":"10.1016\/j.entcs.2006.09.032"},{"key":"S0960129507006238_ref38","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-46425-5_17"},{"key":"S0960129507006238_ref36","unstructured":"Lagorio G. (2006) Dynamic linking of polymorphic bytecode. In: 8th International Workshop on Formal Techniques for Java-like Programs."},{"key":"S0960129507006238_ref29","doi-asserted-by":"publisher","DOI":"10.1145\/1108970.1108971"},{"key":"S0960129507006238_ref42","first-page":"183","volume-title":"ACM Symposium on Principles of Programming Languages 2005","author":"Stoyle","year":"2005"},{"key":"S0960129507006238_ref16","first-page":"99","volume-title":"International Conference on Functional Programming 2003","author":"Bierman","year":"2003"},{"key":"S0960129507006238_ref10","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796801004257"}],"container-title":["Mathematical Structures in Computer Science"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0960129507006238","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,5,13]],"date-time":"2023-05-13T17:19:39Z","timestamp":1683998379000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0960129507006238\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2007,8]]},"references-count":44,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2007,8]]}},"alternative-id":["S0960129507006238"],"URL":"https:\/\/doi.org\/10.1017\/s0960129507006238","relation":{},"ISSN":["0960-1295","1469-8072"],"issn-type":[{"value":"0960-1295","type":"print"},{"value":"1469-8072","type":"electronic"}],"subject":[],"published":{"date-parts":[[2007,8]]}}}