{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,20]],"date-time":"2026-03-20T22:45:21Z","timestamp":1774046721099,"version":"3.50.1"},"reference-count":13,"publisher":"Cambridge University Press (CUP)","issue":"4-5","license":[{"start":{"date-parts":[[2015,9,3]],"date-time":"2015-09-03T00:00:00Z","timestamp":1441238400000},"content-version":"unspecified","delay-in-days":64,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Theory and Practice of Logic Programming"],"published-print":{"date-parts":[[2015,7]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Partial functions are common abstractions in formal specification notations such as Z, B and Alloy. Conversely, executable programming languages usually provide little or no support for them. In this paper we propose to add partial functions as a primitive feature to a Constraint Logic Programming (CLP) language, namely {<jats:italic>log<\/jats:italic>}. Although partial functions could be programmed on top of {<jats:italic>log<\/jats:italic>}, providing them as first-class citizens adds valuable flexibility and generality to the form of set-theoretic formulas that the language can safely deal with. In particular, the paper shows how the {<jats:italic>log<\/jats:italic>} constraint solver is naturally extended in order to accommodate for the new primitive constraints dealing with partial functions. Efficiency of the new version is empirically assessed by running a number of non-trivial set-theoretical goals involving partial functions, obtained from specifications written in Z.<\/jats:p>","DOI":"10.1017\/s1471068415000290","type":"journal-article","created":{"date-parts":[[2015,9,3]],"date-time":"2015-09-03T08:21:21Z","timestamp":1441268481000},"page":"651-665","source":"Crossref","is-referenced-by-count":5,"title":["Adding partial functions to Constraint Logic Programming with sets"],"prefix":"10.1017","volume":"15","author":[{"given":"MAXIMILIANO","family":"CRISTI\u00c1","sequence":"first","affiliation":[]},{"given":"GIANFRANCO","family":"ROSSI","sequence":"additional","affiliation":[]},{"given":"CLAUDIA","family":"FRYDMAN","sequence":"additional","affiliation":[]}],"member":"56","published-online":{"date-parts":[[2015,9,3]]},"reference":[{"key":"S1471068415000290_ref2","first-page":"229","volume-title":"SEFM","author":"Cristi\u00e1","year":"2013"},{"key":"S1471068415000290_ref10","unstructured":"Rossi G. 2008. {log}. http:\/\/people.math.unipr.it\/gianfranco.rossi\/setlog.Home.html. last access: May 2015."},{"key":"S1471068415000290_ref9","volume-title":"ZB 2003: Formal Specification and Development in Z and B, Third International Conference of B and Z Users, Turku, Finland, June 4-6, 2003, Proceedings","author":"Jackson","year":"2003"},{"key":"S1471068415000290_ref11","unstructured":"Saaltink M. 1997. The Z\/EVES mathematical toolkit version 2.2 for Z\/EVES version 1.5. Tech. rep., ORA Canada."},{"key":"S1471068415000290_ref8","doi-asserted-by":"publisher","DOI":"10.1016\/S1574-6526(06)80021-0"},{"key":"S1471068415000290_ref6","doi-asserted-by":"publisher","DOI":"10.1145\/365151.365169"},{"key":"S1471068415000290_ref1","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511624162"},{"key":"S1471068415000290_ref7","doi-asserted-by":"publisher","DOI":"10.1007\/BF00137870"},{"key":"S1471068415000290_ref3","doi-asserted-by":"crossref","first-page":"219","DOI":"10.1145\/888251.888272","volume-title":"PPDP","author":"Dal Pal\u00f9","year":"2003"},{"key":"S1471068415000290_ref5","doi-asserted-by":"publisher","DOI":"10.1016\/0743-1066(95)00147-6"},{"key":"S1471068415000290_ref12","doi-asserted-by":"crossref","DOI":"10.1007\/978-1-4613-9575-1","volume-title":"Programming with Sets - An Introduction to SETL","author":"Schwartz","year":"1986"},{"key":"S1471068415000290_ref13","volume-title":"The Z notation: a reference manual","author":"Spivey","year":"1992"},{"key":"S1471068415000290_ref4","unstructured":"Deville Y. , Dooms G. , Zampelli S. , and Dupont P. 2005. CP(graph+map) for approximate graph matching. In 1st International Workshop on Constraint Programming Beyond Finite Integer Domains. 31\u201347."}],"container-title":["Theory and Practice of Logic Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S1471068415000290","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,9,7]],"date-time":"2020-09-07T23:12:41Z","timestamp":1599520361000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S1471068415000290\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2015,7]]},"references-count":13,"journal-issue":{"issue":"4-5","published-print":{"date-parts":[[2015,7]]}},"alternative-id":["S1471068415000290"],"URL":"https:\/\/doi.org\/10.1017\/s1471068415000290","relation":{},"ISSN":["1471-0684","1475-3081"],"issn-type":[{"value":"1471-0684","type":"print"},{"value":"1475-3081","type":"electronic"}],"subject":[],"published":{"date-parts":[[2015,7]]}}}