{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,9,13]],"date-time":"2025-09-13T15:38:01Z","timestamp":1757777881595,"version":"3.37.3"},"reference-count":37,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2017,5,1]],"date-time":"2017-05-01T00:00:00Z","timestamp":1493596800000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Form. Asp. Comput."],"published-print":{"date-parts":[[2017,5]]},"abstract":"<jats:title>Abstract<\/jats:title>\n          <jats:p>Although functional as well as logic languages use equality to discriminate between logically different cases, the operational meaning of equality is different in such languages. Functional languages reduce equational expressions to their Boolean \nvalues, True or False, logic languages use unification to check the validity only and fail otherwise. Consequently, the language Curry, which amalgamates functional and logic programming features, offers two kinds of equational expressions so that the programmer has to distinguish between these uses. We show that this distinction can be avoided by providing an analysis and transformation method that automatically selects the appropriate operation. Without this distinction in source programs, the language design can be simplified and the execution of programs can be optimized. As a consequence, we show that one kind of equational expressions is sufficient and unification is nothing else than an optimization of Boolean equality.<\/jats:p>","DOI":"10.1007\/s00165-016-0399-6","type":"journal-article","created":{"date-parts":[[2016,10,24]],"date-time":"2016-10-24T07:33:31Z","timestamp":1477294411000},"page":"475-494","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["Transforming Boolean equalities into constraints"],"prefix":"10.1145","volume":"29","author":[{"given":"Sergio","family":"Antoy","sequence":"first","affiliation":[{"name":"Computer Science Dept., Portland State University, Oregon, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4953-8202","authenticated-orcid":false,"given":"Michael","family":"Hanus","sequence":"additional","affiliation":[{"name":"Institut f\u00fcr Informatik, CAU Kiel, 24098, Kiel, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","reference":[{"doi-asserted-by":"crossref","unstructured":"Alpuente M Comini M Escobar S Falaschi M Lucas S (2002) Abstract diagnosis of functional programs. In: Proceedings of the 12th int\u2019l workshop on logic-based program synthesis and transformation (LOPSTR 2002) LNCS 2664. Springer Berlin pp 1\u201316","key":"e_1_2_1_2_1_2","DOI":"10.1007\/3-540-45013-0_1"},{"doi-asserted-by":"publisher","key":"e_1_2_1_2_2_2","DOI":"10.1145\/347476.347484"},{"doi-asserted-by":"publisher","key":"e_1_2_1_2_3_2","DOI":"10.1145\/1721654.1721675"},{"doi-asserted-by":"crossref","unstructured":"Antoy S Hanus M (2012) Contracts and specifications for functional logic programming. In: Proceedings of the 14th international symposium on practical aspects of declarative languages (PADL 2012) LNCS 7149. Springer Berlin pp 33\u201347","key":"e_1_2_1_2_4_2","DOI":"10.1007\/978-3-642-27694-1_4"},{"unstructured":"Antoy S Hanus M (2014) Curry without success. In: Proceedings of the 23rd international workshop on functional and (constraint) logic programming (WFLP 2014). CEUR workshop proceedings vol 1335. CEUR-WS.org pp 140\u2013154","key":"e_1_2_1_2_5_2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_2_6_2","DOI":"10.1016\/j.jsc.2004.01.001"},{"doi-asserted-by":"crossref","unstructured":"Antoy S (2001) Constructor-based conditional narrowing. In: Proceedings of the 3rd international ACM SIGPLAN conference on principles and practice of declarative programming (PPDP 2001). ACM Press New York pp 199\u2013206","key":"e_1_2_1_2_7_2","DOI":"10.1145\/773184.773205"},{"doi-asserted-by":"publisher","key":"e_1_2_1_2_8_2","DOI":"10.1016\/j.jsc.2010.01.006"},{"doi-asserted-by":"crossref","unstructured":"Arenas-S\u00e1nchez P Gil-Luezas A L\u00f3pez-Fraguas FJ (1994) Combining lazy narrowing with disequality constraints. In: Proceedings of the 6th international symposium on programming language implementation and logic programming LNCS 844. Springer Berlin pp 385\u2013399","key":"e_1_2_1_2_9_2","DOI":"10.1007\/3-540-58402-1_27"},{"unstructured":"Bert D Echahed R (1995) Abstraction of conditional term rewriting systems. In: Proceedings of the 1995 international logic programming symposium. MIT Press Massachusetts pp 147\u2013161","key":"e_1_2_1_2_10_2"},{"doi-asserted-by":"crossref","unstructured":"Bert D Echahed R \u00d8stvold M (1993) Abstract rewriting. In: Proceedings of third international workshop on static analysis LNCS 724. Springer Berlin pp 178\u2013192","key":"e_1_2_1_2_11_2","DOI":"10.1007\/3-540-57264-3_39"},{"doi-asserted-by":"crossref","unstructured":"Bra\u00dfel B Hanus M Peem\u00f6ller B Reck F (2011) KiCS2: a new compiler from Curry to Haskell. In: Proceedings of the 20th international workshop on functional and (constraint) logic programming (WFLP 2011) LNCS 6816. Springer Berlin pp 1\u201318","key":"e_1_2_1_2_12_2","DOI":"10.1007\/978-3-642-22531-4_1"},{"doi-asserted-by":"crossref","unstructured":"Bra\u00dfel B Hanus M Peem\u00f6ller B Reck F (2013) Implementing equational constraints in a functional language. In: Proceedings of the 15th international symposium on practical aspects of declarative languages (PADL 2013) LNCS 7752. Springer Berlin pp 125\u2013140","key":"e_1_2_1_2_13_2","DOI":"10.1007\/978-3-642-45284-0_9"},{"doi-asserted-by":"crossref","unstructured":"Cousot P Cousot R (1977) Abstract interpretation: a unified lattice model for static analysis of programs by construction of approximation of fixpoints. In: Proceedings of the 4th ACM symposium on principles of programming languages pp 238\u2013252","key":"e_1_2_1_2_14_2","DOI":"10.1145\/512950.512973"},{"doi-asserted-by":"crossref","unstructured":"Cousot P (1997) Types as abstract interpretations. In: Proceedings of the 24th ACM symposium on principles of programming languages (Paris) pp 316\u2013331","key":"e_1_2_1_2_15_2","DOI":"10.1145\/263699.263744"},{"doi-asserted-by":"crossref","unstructured":"Damas L Milner R (1982) Principal type-schemes for functional programs. In: Proceedings of the 9th annual symposium on principles of programming languages pp 207\u2013212","key":"e_1_2_1_2_16_2","DOI":"10.1145\/582153.582176"},{"unstructured":"Hanus M Antoy S Bra\u00dfel B Engelke M H\u00f6ppner K Koj J Niederau P Sadre R Steiner F (2016) PAKCS: the Portland Aachen Kiel Curry system. http:\/\/www.informatik.uni-kiel.de\/~pakcs\/","key":"e_1_2_1_2_17_2"},{"doi-asserted-by":"crossref","unstructured":"Hanus M (1997) Teaching functional and logic programming with a single computation model. In: Proceedings of the ninth international symposium on programming languages implementations logics and programs (PLILP\u201997) LNCS 1292. Springer Berlin pp 335\u2013350","key":"e_1_2_1_2_18_2","DOI":"10.1007\/BFb0033854"},{"doi-asserted-by":"crossref","unstructured":"Hanus M (2001) High-level server side web scripting in Curry. In: Proceedings of the third international symposium on practical aspects of declarative languages (PADL\u201901) LNCS 1990. Springer Berlin pp 76\u201392","key":"e_1_2_1_2_19_2","DOI":"10.1007\/3-540-45241-9_6"},{"doi-asserted-by":"crossref","unstructured":"Hanus M (2007) Putting declarative programming into the web: translating Curry to JavaScript. In: Proceedings of the 9th ACM SIGPLAN international conference on principles and practice of declarative programming (PPDP\u201907). ACM Press New York pp 155\u2013166","key":"e_1_2_1_2_20_2","DOI":"10.1145\/1273920.1273942"},{"doi-asserted-by":"crossref","unstructured":"Hanus M (2008) Call pattern analysis for functional logic programs. In: Proceedings of the 10th ACM SIGPLAN international conference on principles and practice of declarative programming (PPDP\u201908). ACM Press New York pp 67\u201378","key":"e_1_2_1_2_21_2","DOI":"10.1145\/1389449.1389459"},{"unstructured":"Hanus M (ed) (2012) Curry: an integrated functional logic language (vers. 0.8.3). http:\/\/www.curry-language.org","key":"e_1_2_1_2_22_2"},{"doi-asserted-by":"crossref","unstructured":"Hanus M (2013) Functional logic programming: from theory to Curry. In: Programming logics\u2014essays in memory of Harald Ganzinger LNCS 7797. Springer Berlin pp 123\u2013168","key":"e_1_2_1_2_23_2","DOI":"10.1007\/978-3-642-37651-1_6"},{"unstructured":"Hanus M (ed) (2016) Curry: an integrated functional logic language (vers. 0.9.0). http:\/\/www.curry-language.org","key":"e_1_2_1_2_24_2"},{"doi-asserted-by":"crossref","unstructured":"Hanus M Skrlac F (2014) A modular and generic analysis server system for functional logic programs. In: Proceedings of the ACM SIGPLAN 2014 workshop on partial evaluation and program manipulation (PEPM\u201914). ACM Press New York pp 181\u2013188","key":"e_1_2_1_2_25_2","DOI":"10.1145\/2543728.2543744"},{"unstructured":"Kuchen H L\u00f3pez-Fraguas FJ Moreno-Navarro JJ Rodr\u00edguez-Artalejo M (1992) Implementing a lazy functional logic language with disequality constraints. In: Proceedings of the 1992 joint international conference and symposium on logic programming. MIT Press Cambridge","key":"e_1_2_1_2_26_2"},{"unstructured":"Mitchell N Runciman C (2007) A static checker for safe pattern matching in Haskell. In: Trends in functional programming vol 6. Intellect New York pp 15\u201330","key":"e_1_2_1_2_27_2"},{"doi-asserted-by":"crossref","unstructured":"Mycroft A (1980) The theory and practice of transforming call-by-need into call-by-value. In: Proceedings of the international symposium on programming LNCS 83. Springer Berlin pp 269\u2013281","key":"e_1_2_1_2_28_2","DOI":"10.1007\/3-540-09981-6_19"},{"doi-asserted-by":"crossref","unstructured":"Overton D Somogyi Z Stuckey PJ (2002) Constraint-based mode analysis of mercury. In: Proceedings of the 4th ACM SIGPLAN international conference on principles and practice of declarative programming (PPDP\u201902). ACM Press Berlin pp 109\u2013120","key":"e_1_2_1_2_29_2","DOI":"10.1145\/571157.571169"},{"unstructured":"Peyton Jones S (ed) (2003) Haskell 98 language and libraries\u2014the revised report. Cambridge University Press Cambridge","key":"e_1_2_1_2_30_2"},{"unstructured":"Reddy US (1985) Narrowing as the operational semantics of functional languages. In: Proceedings of the IEEE internat. symposium on logic programming Boston pp 138\u2013151","key":"e_1_2_1_2_31_2"},{"doi-asserted-by":"crossref","unstructured":"Reynolds JC (1972) Definitional interpreters for higher-order programming languages. In: Proceedings of the ACM annual conference pp 717\u2013740. ACM Press New York","key":"e_1_2_1_2_32_2","DOI":"10.1145\/800194.805852"},{"doi-asserted-by":"publisher","key":"e_1_2_1_2_33_2","DOI":"10.1145\/321250.321253"},{"doi-asserted-by":"publisher","key":"e_1_2_1_2_34_2","DOI":"10.1016\/S0743-1066(96)00068-4"},{"doi-asserted-by":"publisher","key":"e_1_2_1_2_35_2","DOI":"10.1145\/321850.321859"},{"unstructured":"Bezem M Klop JW de Vrijer R (eds) (2003) Term rewriting systems. Cambridge University Press Cambridge","key":"e_1_2_1_2_36_2"},{"unstructured":"Warren DHD (1982) Higher-order extensions to prolog: are they needed? In: Machine intelligence vol 10 pp 441\u2013454","key":"e_1_2_1_2_37_2"}],"container-title":["Formal Aspects of Computing"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s00165-016-0399-6\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s00165-016-0399-6.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s00165-016-0399-6.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1007\/s00165-016-0399-6","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,1,7]],"date-time":"2022-01-07T06:55:40Z","timestamp":1641538540000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1007\/s00165-016-0399-6"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,5]]},"references-count":37,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2017,5]]}},"alternative-id":["10.1007\/s00165-016-0399-6"],"URL":"https:\/\/doi.org\/10.1007\/s00165-016-0399-6","relation":{},"ISSN":["0934-5043","1433-299X"],"issn-type":[{"type":"print","value":"0934-5043"},{"type":"electronic","value":"1433-299X"}],"subject":[],"published":{"date-parts":[[2017,5]]}}}