{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:45Z","timestamp":1779836745149,"version":"3.53.1"},"reference-count":55,"publisher":"Cambridge University Press (CUP)","issue":"6","license":[{"start":{"date-parts":[[2012,10,11]],"date-time":"2012-10-11T00:00:00Z","timestamp":1349913600000},"content-version":"unspecified","delay-in-days":0,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2012,11]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    <jats:italic>Incremental Programming<\/jats:italic>\n                    (IP) is a programming style in which new program components are defined as increments of other components. Examples of IP mechanisms include\n                    <jats:italic>Object-oriented programming<\/jats:italic>\n                    inheritance,\n                    <jats:italic>aspect-oriented programming<\/jats:italic>\n                    advice, and\n                    <jats:italic>feature-oriented programming<\/jats:italic>\n                    . A characteristic of IP mechanisms is that, while individual components can be independently defined, the composition of components makes those components become tightly coupled, sharing both control and data flows. This makes reasoning about IP mechanisms a notoriously hard problem:\n                    <jats:italic>modular reasoning<\/jats:italic>\n                    about a component becomes very difficult; and it is very hard to tell if two tightly coupled components\n                    <jats:italic>interfere<\/jats:italic>\n                    with each other's control and data flows. This paper presents\n                    <jats:italic>modular reasoning about interference<\/jats:italic>\n                    (MRI), a\n                    <jats:italic>purely functional<\/jats:italic>\n                    model of IP embedded in Haskell. MRI models inheritance with mixins and side effects with monads. It comes with a range of powerful reasoning techniques: equational reasoning, parametricity, and reasoning with algebraic laws about effectful operations. These techniques enable MRI in the presence of side effects. MRI formally captures\n                    <jats:italic>harmlessness<\/jats:italic>\n                    , a hard-to-formalize notion in the interference literature, in two theorems. We prove these theorems with a non-trivial combination of all three reasoning techniques.\n                  <\/jats:p>","DOI":"10.1017\/s0956796812000354","type":"journal-article","created":{"date-parts":[[2012,10,11]],"date-time":"2012-10-11T10:51:44Z","timestamp":1349952704000},"page":"797-852","source":"Crossref","is-referenced-by-count":12,"title":["MRI: Modular reasoning about interference in incremental programming"],"prefix":"10.1017","volume":"22","author":[{"given":"BRUNO C. D. S.","family":"OLIVEIRA","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"TOM","family":"SCHRIJVERS","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"WILLIAM R.","family":"COOK","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2012,10,11]]},"reference":[{"key":"S0956796812000354_ref32","first-page":"333","volume-title":"Proceedings of the 22nd Symposium on Principles of Programming Languages (POPL'95)","author":"Liang","year":"1995"},{"key":"S0956796812000354_ref8","first-page":"451","volume-title":"Proceedings of the 21st European Conference on Object-Oriented Programming (ECOOP'07)","author":"Clifton","year":"2007"},{"key":"S0956796812000354_ref31","first-page":"219","volume-title":"Proceedings of the European Symposium on Programming (ESOP'96)","author":"Liang","year":"1996"},{"key":"S0956796812000354_ref14","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-77351-1_15"},{"key":"S0956796812000354_ref7","unstructured":"Clifton C. & Leavens G. T. (2002) Observers and assistants: A proposal for modular aspect-oriented reasoning. In Proceedings of the 1st Workshop on Foundations of Aspect-Oriented Languages (FOAL'02), pp. 33\u201344."},{"key":"S0956796812000354_ref28","doi-asserted-by":"publisher","DOI":"10.1145\/165854.165891"},{"key":"S0956796812000354_ref23","doi-asserted-by":"publisher","DOI":"10.1145\/169701.169682"},{"key":"S0956796812000354_ref21","unstructured":"Jaskelioff M. (2008) Monatron: An extensible monad transformer library. Proceedings of the 20th International Conference on Implementation and Application of Functional Languages (IFL'08), pp. 233\u2013248."},{"key":"S0956796812000354_ref42","doi-asserted-by":"publisher","DOI":"10.1145\/1173706.1173742"},{"key":"S0956796812000354_ref27","first-page":"49","volume-title":"Proceedings of the 27th International Conference on Software Engineering (ICSE'05)","author":"Kiczales","year":"2005"},{"key":"S0956796812000354_ref40","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0053389"},{"key":"S0956796812000354_ref55","first-page":"37","volume-title":"Proceedings of the 8th Workshop on Generic Programming (WGP'09)","author":"Wang","year":"2009"},{"key":"S0956796812000354_ref20","first-page":"26","volume-title":"Proceedings of the Symposium on Trends in Functional Programming","author":"Hutton","year":"2008"},{"key":"S0956796812000354_ref36","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006326"},{"key":"S0956796812000354_ref18","first-page":"2","volume-title":"Proceedings of the 16th International Conference on Functional Programming (ICFP'11)","author":"Gibbons","year":"2011"},{"key":"S0956796812000354_ref38","doi-asserted-by":"crossref","first-page":"109","DOI":"10.1145\/1739230.1739244","volume-title":"Proceedings of the 9th International Conference on Aspect-Oriented Software Development (AOSD'10)","author":"Oliveira","year":"2010"},{"key":"S0956796812000354_ref12","first-page":"383","volume-title":"Proceedings of the 33rd Symposium on Principles of Programming Languages (POPL'06)","author":"Dantas","year":"2006"},{"key":"S0956796812000354_ref46","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353186"},{"key":"S0956796812000354_ref3","volume-title":"Algebra of Programming","author":"Bird","year":"1997"},{"key":"S0956796812000354_ref43","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-06859-7_148"},{"key":"S0956796812000354_ref52","first-page":"347","volume-title":"Proceedings of the 4th International Conference on Functional Programming and Computer Architecture (FPLCA'89)","author":"Wadler","year":"1989"},{"key":"S0956796812000354_ref15","doi-asserted-by":"publisher","DOI":"10.1145\/976270.976288"},{"key":"S0956796812000354_ref9","doi-asserted-by":"crossref","unstructured":"Cook W. R. (1989) A Denotational Semantics of Inheritance. PhD thesis, Brown University, Providence, RI.","DOI":"10.1145\/74877.74922"},{"key":"S0956796812000354_ref30","first-page":"108","volume-title":"Proceedings of the 27th Symposium on Principles of Programming Languages (POPL'00)","author":"Lewis","year":"2000"},{"key":"S0956796812000354_ref19","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(99)00023-4"},{"key":"S0956796812000354_ref37","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.713"},{"key":"S0956796812000354_ref16","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2006.01.003"},{"key":"S0956796812000354_ref24","doi-asserted-by":"publisher","DOI":"10.1007\/11687061_4"},{"key":"S0956796812000354_ref41","unstructured":"Prehofer C. (1999) Flexible Construction of Software Components: A Feature Oriented Approach. Habilitation Thesis, Fakult\u00e4t f\u00fcr Informatik der Technischen Universit\u00e4t M\u00fcnchen."},{"key":"S0956796812000354_ref45","doi-asserted-by":"publisher","DOI":"10.1145\/1041685.1029917"},{"key":"S0956796812000354_ref48","first-page":"32","volume-title":"Proceedings of the 16th International Conference on Functional Programming (ICFP'11)","author":"Schrijvers","year":"2011"},{"key":"S0956796812000354_ref47","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-30579-8_14"},{"key":"S0956796812000354_ref35","first-page":"320","volume-title":"Proceedings of the 10th International Conference on Functional Programming (ICFP'05)","author":"Masuhara","year":"2005"},{"key":"S0956796812000354_ref51","first-page":"173","volume-title":"Proceedings of the 14th International Conference on Functional Programming (ICFP'09)","author":"Voigtl\u00e4nder","year":"2009"},{"key":"S0956796812000354_ref2","doi-asserted-by":"crossref","first-page":"141","DOI":"10.1145\/1960275.1960293","volume-title":"Proceedings of the 10th International Conference on Aspect-Oriented Software Development (AOSD'11)","author":"Bagherzadeh","year":"2011"},{"key":"S0956796812000354_ref29","first-page":"144","volume-title":"Proceedings of the 13th Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'98)","author":"Leino","year":"1998"},{"key":"S0956796812000354_ref4","doi-asserted-by":"publisher","DOI":"10.1145\/97945.97982"},{"key":"S0956796812000354_ref33","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2006.01.004"},{"key":"S0956796812000354_ref50","doi-asserted-by":"publisher","DOI":"10.1145\/1353482.1353503"},{"key":"S0956796812000354_ref34","first-page":"68","volume-title":"Proceedings of the Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM'06)","author":"Lopez-Herrejon","year":"2006"},{"key":"S0956796812000354_ref39","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796806006034"},{"key":"S0956796812000354_ref6","first-page":"34","volume-title":"Proceedings of the 14th International Symposium on Static Analysis (SAS'07)","author":"Chen","year":"2007"},{"key":"S0956796812000354_ref25","doi-asserted-by":"publisher","DOI":"10.1145\/141936.141971"},{"key":"S0956796812000354_ref49","doi-asserted-by":"publisher","DOI":"10.1145\/217838.217861"},{"key":"S0956796812000354_ref26","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0053381"},{"key":"S0956796812000354_ref11","doi-asserted-by":"publisher","DOI":"10.1145\/365813.365819"},{"key":"S0956796812000354_ref53","first-page":"1","volume-title":"Proceedings of the 19th Symposium on Principles of Programming Languages (POPL'92)","author":"Wadler","year":"1992"},{"key":"S0956796812000354_ref54","volume-title":"Proceedings of the Marktoberdorf Summer Schoolon Program Design Calculi","author":"Wadler","year":"1992"},{"key":"S0956796812000354_ref5","doi-asserted-by":"publisher","DOI":"10.1007\/s10990-011-9073-0"},{"key":"S0956796812000354_ref17","doi-asserted-by":"publisher","DOI":"10.1145\/268946.268961"},{"key":"S0956796812000354_ref13","doi-asserted-by":"publisher","DOI":"10.1145\/1353445.1353448"},{"key":"S0956796812000354_ref10","doi-asserted-by":"publisher","DOI":"10.1145\/74877.74922"},{"key":"S0956796812000354_ref22","first-page":"230","volume-title":"Proceedings of the 2000 European Symposium on Programming (ESOP'00)","author":"Jones","year":"2000"},{"key":"S0956796812000354_ref44","unstructured":"Reynolds John C. (1983) Types, abstraction and parametric polymorphism. In Proceedings of the IFIP Congress, pp. 513\u2013523."},{"key":"S0956796812000354_ref1","first-page":"144","volume-title":"Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP'05)","author":"Aldrich","year":"2005"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796812000354","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:36:28Z","timestamp":1779834988000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796812000354\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,10,11]]},"references-count":55,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2012,11]]}},"alternative-id":["S0956796812000354"],"URL":"https:\/\/doi.org\/10.1017\/s0956796812000354","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,10,11]]}}}