{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T00:50:19Z","timestamp":1775868619206,"version":"3.50.1"},"reference-count":31,"publisher":"Association for Computing Machinery (ACM)","issue":"POPL","license":[{"start":{"date-parts":[[2019,12,20]],"date-time":"2019-12-20T00:00:00Z","timestamp":1576800000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,1]]},"abstract":"<jats:p>\n            Dependent Object Types (DOT) is a calculus with path dependent types, intersection types, and object self-references, which serves as the core calculus of Scala 3. Although the calculus has been proven sound, it remains open whether type checking in DOT is decidable. In this paper, we establish undecidability proofs of type checking and subtyping of\n            <jats:italic>D<\/jats:italic>\n            <jats:sub>&lt;:<\/jats:sub>\n            , a syntactic subset of DOT. It turns out that even for\n            <jats:italic>D<\/jats:italic>\n            <jats:sub>&lt;:<\/jats:sub>\n            , undecidability is surprisingly difficult to show, as evidenced by counterexamples for past attempts. To prove undecidability, we discover an equivalent definition of the\n            <jats:italic>D<\/jats:italic>\n            <jats:sub>&lt;:<\/jats:sub>\n            subtyping rules in normal form. Besides being easier to reason about, this definition makes the phenomenon of subtyping reflection explicit as a single inference rule. After removing this rule, we discover two decidable fragments of\n            <jats:italic>D<\/jats:italic>\n            <jats:sub>&lt;:<\/jats:sub>\n            subtyping and identify algorithms to decide them. We prove soundness and completeness of the algorithms with respect to the fragments, and we prove that the algorithms terminate. Our proofs are mechanized in a combination of Coq and Agda.\n          <\/jats:p>","DOI":"10.1145\/3371077","type":"journal-article","created":{"date-parts":[[2019,12,20]],"date-time":"2019-12-20T19:45:25Z","timestamp":1576871125000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":9,"title":["Undecidability of\n            <i>\n              d\n              <sub>&lt;:<\/sub>\n            <\/i>\n            and its decidable fragments"],"prefix":"10.1145","volume":"4","author":[{"given":"Jason Z. S.","family":"Hu","sequence":"first","affiliation":[{"name":"McGill University, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ond\u0159ej","family":"Lhot\u00e1k","sequence":"additional","affiliation":[{"name":"University of Waterloo, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2019,12,20]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-30936-1_14"},{"key":"e_1_2_2_2_1","volume-title":"19th International Workshop on Foundations of Object-Oriented Languages.","author":"Amin Nada","year":"2012"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009866"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660216"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0304-3975(00)00175-4"},{"key":"e_1_2_2_6_1","volume-title":"The lambda calculus - its syntax and semantics. Studies in logic and the foundations of mathematics","author":"Barendregt Hendrik Pieter"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1994.1013"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/6041.6042"},{"key":"e_1_2_2_9_1","doi-asserted-by":"crossref","volume-title":"Certified Programming with Dependent Types: A Pragmatic Introduction to the Coq Proof Assistant","author":"Chlipala Adam","DOI":"10.7551\/mitpress\/9153.001.0001"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-52590-4_45"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-94821-8_15"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3293880.3294096"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-66107-0_13"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2594291.2594308"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009871"},{"key":"e_1_2_2_16_1","volume-title":"Decidability and Algorithmic Analysis of Dependent Object Types (DOT). Master\u2019s thesis","author":"Zhong Sheng Hu."},{"key":"e_1_2_2_17_1","volume-title":"Pierce","author":"Kennedy Andrew","year":"2007"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3371134"},{"key":"e_1_2_2_19_1","volume-title":"Introduction to Languages and the Theory of Computation","author":"Martin John C.","edition":"2"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3136000.3136003"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-45070-2_10"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1999.2832"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/143165.143228"},{"key":"e_1_2_2_25_1","volume-title":"Bounded Quantification with Bottom","author":"Pierce Benjamin C."},{"key":"e_1_2_2_26_1","volume-title":"Types and Programming Languages","author":"Pierce Benjamin C.","edition":"1"},{"key":"e_1_2_2_27_1","volume-title":"Advanced Topics in Types and Programming Languages","author":"Pierce Benjamin C."},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133870"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984008"},{"key":"e_1_2_2_30_1","unstructured":"Agda Team. 2019. Agda 2.5.4.2.  Agda Team. 2019. Agda 2.5.4.2."},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.1219885"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-10672-9_10"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3371077","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3371077","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T19:05:42Z","timestamp":1750273542000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3371077"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,12,20]]},"references-count":31,"journal-issue":{"issue":"POPL","published-print":{"date-parts":[[2020,1]]}},"alternative-id":["10.1145\/3371077"],"URL":"https:\/\/doi.org\/10.1145\/3371077","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,12,20]]},"assertion":[{"value":"2019-12-20","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}