{"id":"https://openalex.org/W2045398665","doi":"https://doi.org/10.1145/2814270.2814311","title":"Checks and balances: constraint solving without surprises in object-constraint programming languages","display_name":"Checks and balances: constraint solving without surprises in object-constraint programming languages","publication_year":2015,"publication_date":"2015-10-23","ids":{"openalex":"https://openalex.org/W2045398665","doi":"https://doi.org/10.1145/2814270.2814311","mag":"2045398665"},"language":"en","primary_location":{"id":"doi:10.1145/2814270.2814311","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2814270.2814311","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5083436290","display_name":"Tim Felgentreff","orcid":"https://orcid.org/0000-0002-1293-632X"},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Tim Felgentreff","raw_affiliation_strings":["HPI, Germany"],"affiliations":[{"raw_affiliation_string":"HPI, Germany","institution_ids":[]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5014067492","display_name":"Todd Millstein","orcid":"https://orcid.org/0000-0002-2031-1514"},"institutions":[{"id":"https://openalex.org/I161318765","display_name":"University of California, Los Angeles","ror":"https://ror.org/046rm7j60","country_code":"US","type":"education","lineage":["https://openalex.org/I161318765"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Todd Millstein","raw_affiliation_strings":["University of California at Los Angeles, USA","; University of California at Los Angeles; USA"],"affiliations":[{"raw_affiliation_string":"University of California at Los Angeles, USA","institution_ids":["https://openalex.org/I161318765"]},{"raw_affiliation_string":"; University of California at Los Angeles; USA","institution_ids":["https://openalex.org/I161318765"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5056034943","display_name":"Alan Borning","orcid":"https://orcid.org/0009-0002-3109-2967"},"institutions":[{"id":"https://openalex.org/I201448701","display_name":"University of Washington","ror":"https://ror.org/00cvxb145","country_code":"US","type":"education","lineage":["https://openalex.org/I201448701"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Alan Borning","raw_affiliation_strings":["University of Washington, USA"],"affiliations":[{"raw_affiliation_string":"University of Washington, USA","institution_ids":["https://openalex.org/I201448701"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5079160871","display_name":"Robert Hirschfeld","orcid":"https://orcid.org/0000-0002-4249-6003"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Robert Hirschfeld","raw_affiliation_strings":["HPI, Germany"],"affiliations":[{"raw_affiliation_string":"HPI, Germany","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":4,"corresponding_author_ids":["https://openalex.org/A5083436290"],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":4.7458,"has_fulltext":false,"cited_by_count":12,"citation_normalized_percentile":{"value":0.95173968,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":90,"max":99},"biblio":{"volume":null,"issue":null,"first_page":"767","last_page":"782"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9991999864578247,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9991999864578247,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T11450","display_name":"Model-Driven Software Engineering Techniques","score":0.9955000281333923,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9905999898910522,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/constraint-programming","display_name":"Constraint programming","score":0.7760193347930908},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.7670364379882812},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7243785262107849},{"id":"https://openalex.org/keywords/concurrent-constraint-logic-programming","display_name":"Concurrent constraint logic programming","score":0.5987473726272583},{"id":"https://openalex.org/keywords/constraint-logic-programming","display_name":"Constraint logic programming","score":0.5801079273223877},{"id":"https://openalex.org/keywords/constraint","display_name":"Constraint (computer-aided design)","score":0.5402498245239258},{"id":"https://openalex.org/keywords/executable","display_name":"Executable","score":0.5302761793136597},{"id":"https://openalex.org/keywords/constraint-satisfaction","display_name":"Constraint satisfaction","score":0.5200197696685791},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.49738624691963196},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.4828806221485138},{"id":"https://openalex.org/keywords/object","display_name":"Object (grammar)","score":0.4655640125274658},{"id":"https://openalex.org/keywords/method","display_name":"Method","score":0.4640713334083557},{"id":"https://openalex.org/keywords/constraint-satisfaction-problem","display_name":"Constraint satisfaction problem","score":0.4235551357269287},{"id":"https://openalex.org/keywords/object-oriented-programming","display_name":"Object-oriented programming","score":0.32085102796554565},{"id":"https://openalex.org/keywords/programming-paradigm","display_name":"Programming paradigm","score":0.2437341809272766},{"id":"https://openalex.org/keywords/functional-logic-programming","display_name":"Functional logic programming","score":0.16811752319335938},{"id":"https://openalex.org/keywords/mathematics","display_name":"Mathematics","score":0.1572924256324768},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.13937655091285706},{"id":"https://openalex.org/keywords/mathematical-optimization","display_name":"Mathematical optimization","score":0.12131208181381226},{"id":"https://openalex.org/keywords/inductive-programming","display_name":"Inductive programming","score":0.11016690731048584}],"concepts":[{"id":"https://openalex.org/C173404611","wikidata":"https://www.wikidata.org/wiki/Q528588","display_name":"Constraint programming","level":3,"score":0.7760193347930908},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.7670364379882812},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7243785262107849},{"id":"https://openalex.org/C204306468","wikidata":"https://www.wikidata.org/wiki/Q5159106","display_name":"Concurrent constraint logic programming","level":5,"score":0.5987473726272583},{"id":"https://openalex.org/C176783269","wikidata":"https://www.wikidata.org/wiki/Q5164378","display_name":"Constraint logic programming","level":4,"score":0.5801079273223877},{"id":"https://openalex.org/C2776036281","wikidata":"https://www.wikidata.org/wiki/Q48769818","display_name":"Constraint (computer-aided design)","level":2,"score":0.5402498245239258},{"id":"https://openalex.org/C160145156","wikidata":"https://www.wikidata.org/wiki/Q778586","display_name":"Executable","level":2,"score":0.5302761793136597},{"id":"https://openalex.org/C44616089","wikidata":"https://www.wikidata.org/wiki/Q30158686","display_name":"Constraint satisfaction","level":3,"score":0.5200197696685791},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.49738624691963196},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.4828806221485138},{"id":"https://openalex.org/C2781238097","wikidata":"https://www.wikidata.org/wiki/Q175026","display_name":"Object (grammar)","level":2,"score":0.4655640125274658},{"id":"https://openalex.org/C512554520","wikidata":"https://www.wikidata.org/wiki/Q815844","display_name":"Method","level":3,"score":0.4640713334083557},{"id":"https://openalex.org/C199622910","wikidata":"https://www.wikidata.org/wiki/Q1128326","display_name":"Constraint satisfaction problem","level":3,"score":0.4235551357269287},{"id":"https://openalex.org/C73752529","wikidata":"https://www.wikidata.org/wiki/Q79872","display_name":"Object-oriented programming","level":2,"score":0.32085102796554565},{"id":"https://openalex.org/C34165917","wikidata":"https://www.wikidata.org/wiki/Q188267","display_name":"Programming paradigm","level":2,"score":0.2437341809272766},{"id":"https://openalex.org/C96315309","wikidata":"https://www.wikidata.org/wiki/Q5508829","display_name":"Functional logic programming","level":4,"score":0.16811752319335938},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.1572924256324768},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.13937655091285706},{"id":"https://openalex.org/C126255220","wikidata":"https://www.wikidata.org/wiki/Q141495","display_name":"Mathematical optimization","level":1,"score":0.12131208181381226},{"id":"https://openalex.org/C50033165","wikidata":"https://www.wikidata.org/wiki/Q15712089","display_name":"Inductive programming","level":3,"score":0.11016690731048584},{"id":"https://openalex.org/C137631369","wikidata":"https://www.wikidata.org/wiki/Q7617831","display_name":"Stochastic programming","level":2,"score":0.0},{"id":"https://openalex.org/C49937458","wikidata":"https://www.wikidata.org/wiki/Q2599292","display_name":"Probabilistic logic","level":2,"score":0.0},{"id":"https://openalex.org/C2524010","wikidata":"https://www.wikidata.org/wiki/Q8087","display_name":"Geometry","level":1,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/2814270.2814311","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2814270.2814311","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications","raw_type":"proceedings-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":25,"referenced_works":["https://openalex.org/W99012786","https://openalex.org/W1480909796","https://openalex.org/W1878147133","https://openalex.org/W2017035494","https://openalex.org/W2019153550","https://openalex.org/W2053637323","https://openalex.org/W2060440626","https://openalex.org/W2103729840","https://openalex.org/W2107596222","https://openalex.org/W2115261880","https://openalex.org/W2120656140","https://openalex.org/W2123396057","https://openalex.org/W2139272205","https://openalex.org/W2143590189","https://openalex.org/W2158148130","https://openalex.org/W2168617729","https://openalex.org/W2295061292","https://openalex.org/W2403131032","https://openalex.org/W2555448203","https://openalex.org/W2561675875","https://openalex.org/W2795526566","https://openalex.org/W2914764211","https://openalex.org/W4243882797","https://openalex.org/W4285719527","https://openalex.org/W6680963656"],"related_works":["https://openalex.org/W1531664660","https://openalex.org/W1486916474","https://openalex.org/W2097415053","https://openalex.org/W2500041535","https://openalex.org/W1563755460","https://openalex.org/W4303044088","https://openalex.org/W2032348095","https://openalex.org/W1820477541","https://openalex.org/W2117339357","https://openalex.org/W2386374330"],"abstract_inverted_index":{"Object-constraint":[0],"programming":[1],"systems":[2,22,60],"integrate":[3],"declarative":[4],"constraint":[5,32,97,127],"solving":[6],"with":[7,20,205],"imperative,":[8],"object-oriented":[9,90],"languages,":[10],"seamlessly":[11],"providing":[12,179],"the":[13,31,36,57,64,67,84,88,93,96,123,126,142,146,160,171,174,185,200,222],"power":[14,29,65,124],"of":[15,66,86,92,110,125,145,162,173,184,196,202,228],"both":[16,180],"paradigms.":[17],"However,":[18],"experience":[19],"object-constraint":[21,130,176],"has":[23],"shown":[24],"that":[25,40,61,121,209,219],"giving":[26],"too":[27],"much":[28],"to":[30,104,132,212,217],"solver":[33,128],"opens":[34],"up":[35],"potential":[37],"for":[38,48,69,192],"solutions":[39,139],"are":[41],"surprising":[42,138],"and":[43,53,99,137,157,188,216,233],"unintended":[44],"as":[45,47,225],"well":[46],"complex":[49],"interactions":[50],"between":[51],"constraints":[52,73,149,153,158],"imperative":[54],"code.":[55],"On":[56],"other":[58],"hand,":[59],"overly":[62],"limit":[63],"solver,":[68],"example":[70],"by":[71],"disallowing":[72],"involving":[74,154],"mutable":[75,151],"objects,":[76,152],"object":[77,155],"identity,":[78,156],"or":[79],"polymorphic":[80],"message":[81,163],"sends,":[82],"run":[83,213],"risk":[85],"excluding":[87],"core":[89,194],"features":[91,144],"language":[94,177,187],"from":[95],"part,":[98],"consequently":[100],"not":[101],"being":[102],"able":[103],"express":[105],"declaratively":[106],"a":[107,189,193],"large":[108],"set":[109],"interesting":[111],"problem":[112],"solutions.":[113],"In":[114],"this":[115,203],"paper":[116],"we":[117],"present":[118,166],"design":[119],"principles":[120],"tame":[122],"in":[129,170,230],"languages":[131],"avoid":[133],"difficult":[134],"corner":[135],"cases":[136],"while":[140],"retaining":[141],"key":[143],"approach,":[147],"including":[148],"over":[150],"on":[159],"results":[161,224],"sends.":[164],"We":[165,198],"our":[167],"solution":[168],"concretely":[169],"context":[172],"Babelsberg":[175,229],"framework,":[178],"an":[181,206],"informal":[182],"description":[183],"resulting":[186],"formal":[190],"semantics":[191,204],"subset":[195],"it.":[197],"validate":[199],"utility":[201],"executable":[207],"version":[208],"allows":[210],"us":[211],"test":[214],"programs":[215],"verify":[218],"they":[220],"provide":[221],"same":[223],"existing":[226],"implementations":[227],"JavaScript,":[231],"Ruby,":[232],"Smalltalk.":[234]},"counts_by_year":[{"year":2019,"cited_by_count":1},{"year":2018,"cited_by_count":2},{"year":2017,"cited_by_count":3},{"year":2016,"cited_by_count":6}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
