{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,9]],"date-time":"2026-06-09T08:44:54Z","timestamp":1780994694584,"version":"3.54.1"},"reference-count":58,"publisher":"Association for Computing Machinery (ACM)","issue":"ISSTA","license":[{"start":{"date-parts":[[2025,6,22]],"date-time":"2025-06-22T00:00:00Z","timestamp":1750550400000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["2414110"],"award-info":[{"award-number":["2414110"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. ACM Softw. Eng."],"published-print":{"date-parts":[[2025,6,22]]},"abstract":"<jats:p>\n            A traditional program slicer constructs a smaller variant of a target program that computes the same result with respect to some target variable\u2014that is, program slicing preserves the original program\u2019s\n            <jats:italic toggle=\"yes\">run-time semantics<\/jats:italic>\n            . We propose\n            <jats:italic toggle=\"yes\">type-directed slicing<\/jats:italic>\n            , which constructs a smaller program that guarantees that a typechecker will produce the same result on the sliced program when considering only a target program location\u2014that is, a type-directed slicer preserves the target program\u2019s\n            <jats:italic toggle=\"yes\">compile-time semantics<\/jats:italic>\n            , from the view of a specific typechecker, with respect to some location.\n          <\/jats:p>\n          <jats:p>\n            Type-directed slicing is a useful debugging aid for designers and maintainers of typecheckers. When a typechecker produces an unexpected result (a crash, a false positive warning, a missed warning, etc.) on a large codebase, the user typically reports a bug to the maintainers of the typechecker without an accompanying test case. State-of-the-art approaches to this\n            <jats:italic toggle=\"yes\">program reduction problem<\/jats:italic>\n            are dynamic: they require repeatedly running the typechecker to validate minimizations. A type-directed slicer solves this problem statically, without rerunning the typechecker, by exploiting the modularity inherent in a typechecker\u2019s type rules. Our prototype type-directed slicer for Java is fully automatic, can operate on incomplete programs, and is fast. It produces a small test case that preserves typechecker misbehavior for 25 of 28 (89%) historical bugs from the issue trackers of three widely-used typecheckers: the Java compiler itself, NullAway, and the Checker Framework; in each of these 25 cases, it preserved the typechecker\u2019s behavior even without the classpath of the target program. And, it runs in under a minute on each benchmark, whose size ranges up to millions of lines of code, on a free-tier CI runner.\n          <\/jats:p>","DOI":"10.1145\/3728968","type":"journal-article","created":{"date-parts":[[2025,6,22]],"date-time":"2025-06-22T10:52:56Z","timestamp":1750589576000},"page":"2068-2090","source":"Crossref","is-referenced-by-count":1,"title":["Static Program Reduction via Type-Directed Slicing"],"prefix":"10.1145","volume":"2","author":[{"ORCID":"https:\/\/orcid.org\/0009-0000-8386-2447","authenticated-orcid":false,"given":"Loi Ngo Duc","family":"Nguyen","sequence":"first","affiliation":[{"name":"University of California, Riverside, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0009-0004-5046-6463","authenticated-orcid":false,"given":"Tahiatul","family":"Islam","sequence":"additional","affiliation":[{"name":"New Jersey Institute of Technology, Newark, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0009-0008-2768-7574","authenticated-orcid":false,"given":"Theron","family":"Wang","sequence":"additional","affiliation":[{"name":"Academy for Mathematics, Science, and Engineering, Rockaway, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0009-0000-6832-0914","authenticated-orcid":false,"given":"Sam","family":"Lenz","sequence":"additional","affiliation":[{"name":"New Jersey Institute of Technology, Newark, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3185-2340","authenticated-orcid":false,"given":"Martin","family":"Kellogg","sequence":"additional","affiliation":[{"name":"New Jersey Institute of Technology, Newark, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,6,22]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"crossref","first-page":"437","DOI":"10.1007\/978-3-540-74061-2_27","volume-title":"Static Analysis: 14th International Symposium, SAS 2007, Kongens Lyngby, Denmark, August 22-24, 2007. Proceedings 14","author":"Delmas D.","year":"2007","unstructured":"D. Delmas and J. Souyris, \u201cAstr\u00e9e: From research to industry,\u201d in Static Analysis: 14th International Symposium, SAS 2007, Kongens Lyngby, Denmark, August 22-24, 2007. Proceedings 14. Springer, 2007, pp. 437-451."},{"key":"e_1_2_1_2_1","first-page":"740","volume-title":"European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE)","author":"Banerjee S.","year":"2019","unstructured":"S. Banerjee, L. Clapp, and M. Sridharan, \u201c NullAway: Practical type-based null safety for Java,\u201d in ESEC\/FSE 2019: The ACM 27th joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE), Tallinn, Estonia, Aug. 2019, pp. 740-750."},{"key":"e_1_2_1_3_1","first-page":"511","volume-title":"ASE 2020: Proceedings of the 35th Annual International Conference on Automated Software Engineering","author":"Kellogg M.","year":"2020","unstructured":"M. Kellogg, M. Sch\u00e4f, S. Tasiran, and M. D. Ernst, \u201cContinuous compliance,\u201d in ASE 2020: Proceedings of the 35th Annual International Conference on Automated Software Engineering, Melbourne, Australia, Sep. 2020, pp. 511-523."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2015.76"},{"key":"e_1_2_1_5_1","doi-asserted-by":"crossref","first-page":"3","DOI":"10.1007\/978-3-319-17524-9_1","volume-title":"NASA Formal Methods Symp. Springer","author":"Calcagno C.","year":"2015","unstructured":"C. Calcagno, D. Distefano, J. Dubreil, D. Gabi, P. Hooimeijer, M. Luca, P. O'Hearn, I. Papakonstantinou, J. Purbrick, and D. Rodriguez, \u201c Moving fast with software verification,\u201d in NASA Formal Methods Symp. Springer, 2015, pp. 3-11."},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254104"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180236"},{"key":"e_1_2_1_8_1","first-page":"183","volume-title":"IEEE TSE","volume":"28","author":"Zeller A.","year":"2002","unstructured":"A. Zeller and R. Hildebrandt, \u201c Simplifying and isolating failure-inducing input, \u201d IEEE TSE, vol. 28, no. 3, pp. 183-200, Feb. 2002."},{"key":"e_1_2_1_9_1","unstructured":"M. Weiser \u201c Program slices: formal psychological and practical investigations of an automatic program abstraction method \u201d Ph.D. dissertation University of Michigan Ann Arbor 1979."},{"key":"e_1_2_1_10_1","first-page":"201","volume-title":"ISSTA 2008, Proceedings of the 2008 International Symposium on Software Testing and Analysis","author":"Papi M. M.","year":"2008","unstructured":"M. M. Papi, M. Ali, T. L. Correa Jr., J. H. Perkins, and M. D. Ernst, \u201c Practical pluggable types for Java,\u201d in ISSTA 2008, Proceedings of the 2008 International Symposium on Software Testing and Analysis, Seattle, WA, USA, July 2008, pp. 201-212."},{"key":"e_1_2_1_11_1","volume-title":"Regression in 3.7.1: InternalUtils.symbol: tree is null","author":"Sitnikov V.","year":"2020","unstructured":"V. Sitnikov, \u201c Regression in 3.7.1: InternalUtils.symbol: tree is null,\u201d https:\/\/github.com\/typetools\/checker-framework\/ issues\/3850, 2020, accessed 11 April 2024."},{"key":"e_1_2_1_12_1","volume-title":"Apache calcite","author":"Developers The Calcite","year":"2024","unstructured":"The Calcite Developers, \u201cApache calcite,\u201d https:\/\/github.com\/apache\/calcite, 2024, accessed 11 April 2024."},{"issue":"3","key":"e_1_2_1_13_1","doi-asserted-by":"crossref","first-page":"396","DOI":"10.1145\/503502.503505","article-title":"Featherweight Java: a minimal core calculus for Java and GJ","volume":"23","author":"Igarashi A.","year":"2001","unstructured":"A. Igarashi, B. C. Pierce, and P. Wadler, \u201c Featherweight Java: a minimal core calculus for Java and GJ,\u201d ACM TOPLAS, vol. 23, no. 3, pp. 396-450, May 2001.","journal-title":"ACM TOPLAS"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/512950.512973"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263744"},{"key":"e_1_2_1_16_1","volume-title":"Specimin: A type-directed slicer for Java","author":"Ngyuen L.","year":"2025","unstructured":"L. Ngyuen, T. Islam, T. Wang, S. Lenz, and M. Kellogg, \u201c Specimin: A type-directed slicer for Java ,\u201d https:\/\/github.com\/njitjerse\/specimin, 2025."},{"key":"e_1_2_1_17_1","volume-title":"Javaparser: Java 1-17 parser and abstract syntax tree for java with advanced analysis functionalities","author":"Contributors JavaParser","year":"2023","unstructured":"JavaParser Contributors, \u201cJavaparser: Java 1-17 parser and abstract syntax tree for java with advanced analysis functionalities ,\u201d 2023. [Online]. Available: https:\/\/github.com\/javaparser\/javaparser"},{"key":"e_1_2_1_18_1","volume-title":"Vineflower","author":"Developers The Vineflower","year":"2024","unstructured":"The Vineflower Developers, \u201cVineflower,\u201d https:\/\/github.com\/Vineflower\/vineflower, 2024, accessed 11 April 2024."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo"},{"issue":"1","key":"e_1_2_1_20_1","doi-asserted-by":"crossref","first-page":"636","DOI":"10.1145\/3586049","article-title":"Pushing the limit of 1-minimality of language-agnostic program reduction","volume":"7","author":"Xu Z.","year":"2023","unstructured":"Z. Xu, Y. Tian, M. Zhang, G. Zhao, Y. Jiang, and C. Sun, \u201c Pushing the limit of 1-minimality of language-agnostic program reduction, \u201d Proceedings of the ACM on Programming Languages, vol. 7, no. OOPSLA1, pp. 636-664, 2023.","journal-title":"Proceedings of the ACM on Programming Languages"},{"key":"e_1_2_1_21_1","article-title":"T-rec: Fine-grained language-agnostic program reduction guided by lexical syntax","author":"Xu Z.","year":"2024","unstructured":"Z. Xu, Y. Tian, M. Zhang, J. Zhang, P. Liu, Y. Jiang, and C. Sun, \u201c T-rec: Fine-grained language-agnostic program reduction guided by lexical syntax, \u201d ACM Transactions on Software Engineering and Methodology, 2024.","journal-title":"ACM Transactions on Software Engineering and Methodology"},{"key":"e_1_2_1_22_1","volume-title":"google-java-format, v1. 25.2","author":"Google","year":"2024","unstructured":"Google, \u201c google-java-format, v1. 25.2,\u201d https:\/\/github.com\/google\/google-java-format\/releases\/tag\/v1.25.2, 2024, accessed 25 February 2025."},{"key":"e_1_2_1_23_1","volume-title":"UnsolvedSymbolException resolving MethocCallExpr using MethodReferenceExpr","year":"2023","unstructured":"https:\/\/github.com\/fabgo, \u201c UnsolvedSymbolException resolving MethocCallExpr using MethodReferenceExpr ,\u201d https: \/\/github.com\/javaparser\/javaparser\/issues\/4188, 2023, issue is open as of October 31, 2024."},{"key":"e_1_2_1_24_1","volume-title":"Perses: Syntax-directed program reduction","author":"Contributors Perses","year":"2023","unstructured":"Perses Contributors, \u201cPerses: Syntax-directed program reduction ,\u201d 2023. [Online]. Available: https:\/\/github.com\/uwpluverse\/perses\/tree\/master"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993532"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2610384.2628055"},{"key":"e_1_2_1_27_1","volume-title":"Public code search","year":"2025","unstructured":"SourceGraph, \u201cPublic code search,\u201d https:\/\/sourcegraph.com\/search, 2025, accessed 26 February 2025."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1134285.1134307"},{"key":"e_1_2_1_29_1","first-page":"556","volume-title":"PLDI 2019: Proceedings of the ACM SIGPLAN 2016 Conference on Programming Language Design and Implementation","author":"Kalhauge C. G.","year":"2019","unstructured":"C. G. Kalhauge and J. Palsberg, \u201c Binary reduction of dependency graphs,\u201d in PLDI 2019: Proceedings of the ACM SIGPLAN 2016 Conference on Programming Language Design and Implementation, Phoenix, AZ, USA, June 2019, pp. 556-566."},{"issue":"1","key":"e_1_2_1_30_1","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/3617172","article-title":"On the caching schemes to speed up program reduction","volume":"33","author":"Tian Y.","year":"2023","unstructured":"Y. Tian, X. Zhang, Y. Dong, Z. Xu, M. Zhang, Y. Jiang, S.-C. Cheung, and C. Sun, \u201c On the caching schemes to speed up program reduction, \u201d ACM Transactions on Software Engineering and Methodology, vol. 33, no. 1, pp. 1-30, 2023.","journal-title":"ACM Transactions on Software Engineering and Methodology"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/3611643.3616275"},{"key":"e_1_2_1_32_1","first-page":"398","volume-title":"ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA)","author":"Gharachorlu G.","year":"2023","unstructured":"G. Gharachorlu and N. Sumner, \u201c Type batched program reduction,\u201d in ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA), 2023, pp. 398-410."},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/3650212.3652126"},{"key":"e_1_2_1_34_1","first-page":"174","volume-title":"Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC\/FSE )","author":"Ferles K.","year":"2017","unstructured":"K. Ferles, V. W\u00fcstholz, M. Christakis, and I. Dillig, \u201c Failure-directed program trimming,\u201d in Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC\/FSE ), 2017, pp. 174-185."},{"key":"e_1_2_1_35_1","first-page":"1616","volume-title":"ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE)","author":"Brunner R.","year":"2020","unstructured":"R. Brunner, R. Dyer, M. Paquin, and E. Sherman, \u201c PAClab: a program analysis collaboratory,\u201d in ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE), 2020, pp. 1616-1620."},{"issue":"3","key":"e_1_2_1_36_1","first-page":"121","article-title":"A survey of program slicing techniques","volume":"3","author":"Tip F.","year":"1995","unstructured":"F. Tip, \u201c A survey of program slicing techniques, \u201d Journal of Programming Languages, vol. 3, no. 3, pp. 121-189, 1995.","journal-title":"Journal of Programming Languages"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1050849.1050865"},{"key":"e_1_2_1_38_1","volume-title":"An overview of program slicing","author":"Harman M.","unstructured":"M. Harman and R. Hierons, \u201c An overview of program slicing,\u201d software focus, vol. 2, no. 3, pp. 85-92, 2001."},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/2187671.2187674"},{"key":"e_1_2_1_40_1","first-page":"207","volume-title":"Formal Methods for Industrial Critical Systems: 17th International Workshop, FMICS 2012, Paris, France, August 27-28, 2012. Proceedings 17","author":"J.","year":"2012","unstructured":"J. Slaby`, J. Strej\u010dek, and M. Trt\u00edk, \u201c Checking properties described by state machines: On synergy of instrumentation, slicing, and symbolic execution,\u201d in Formal Methods for Industrial Critical Systems: 17th International Workshop, FMICS 2012, Paris, France, August 27-28, 2012. Proceedings 17. Springer, 2012, pp. 207-221."},{"key":"e_1_2_1_41_1","volume-title":"Practical algorithms for incremental software development environments","author":"Wagner T. A.","year":"1997","unstructured":"T. A. Wagner, Practical algorithms for incremental software development environments. University of California, Berkeley, 1997."},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/258916.258920"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1289971.1289983"},{"key":"e_1_2_1_44_1","volume-title":"Language Server Protocol and Implementation","author":"Gunasinghe N.","year":"2021","unstructured":"N. Gunasinghe and N. Marcus, Language Server Protocol and Implementation. Springer, 2021."},{"key":"e_1_2_1_45_1","volume-title":"Roslyn: The.NET Compiler Platform","author":"Developers The Roslyn","year":"2023","unstructured":"The Roslyn Developers, \u201cRoslyn: The.NET Compiler Platform,\u201d https:\/\/github.com\/dotnet\/roslyn, 2023."},{"key":"e_1_2_1_46_1","volume-title":"TypeScript","author":"TypeScript Developers The","year":"2023","unstructured":"The TypeScript Developers, \u201cTypeScript,\u201d https:\/\/github.com\/microsoft\/TypeScript\/, 2023."},{"key":"e_1_2_1_47_1","volume-title":"Answer to \"what are some techniques for faster, fine-grained incremental compilation and static analysis?","author":"Lippert E.","year":"2023","unstructured":"E. Lippert, \u201c Answer to \"what are some techniques for faster, fine-grained incremental compilation and static analysis?\" ,\u201d https:\/\/langdev.stackexchange. com\/a\/2880, 2023."},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2008.130"},{"key":"e_1_2_1_49_1","volume-title":"Avoiding resource leaks","author":"Eclipse","year":"2020","unstructured":"Eclipse developers, \u201cAvoiding resource leaks,\u201d https:\/\/help.eclipse.org\/2020-12\/index.jsp?topic= %2Forg.eclipse.jdt.doc. user%2Ftasks%2Ftask-avoiding_resource_leaks. htm&cp%3D1_3_9_3, 2020, accessed 3 February 2021."},{"key":"e_1_2_1_50_1","volume-title":"OpenJML","author":"Developers The","year":"2022","unstructured":"The OpenJML Developers, \u201cOpenJML,\u201d https:\/\/www.openjml.org\/, 2022."},{"key":"e_1_2_1_51_1","first-page":"55","volume-title":"VSTTE 2014:  6th Working Conference on Verified Software: Theories, Tools","author":"Ahrendt W.","year":"2014","unstructured":"W. Ahrendt, B. Beckert, D. Bruns, R. Bubel, C. Gladisch, S. Grebing, R. H\u00e4hnle, M. Hentschel, M. Herda, V. Klebanov, W. Mostowski, C. Scheben, P. H. Schmitt, and M. Ulbrich, \u201c The KeY platform for verification and analysis of Java programs ,\u201d in VSTTE 2014: 6th Working Conference on Verified Software: Theories, Tools, Experiments, Vienna, Austria, July 2014, pp. 55-71."},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.5555\/151155"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199462"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(96)00072-2"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/2666356.2594299"},{"key":"e_1_2_1_56_1","first-page":"10","volume-title":"ECOOP 2018-Object-Oriented Programming, 32nd European Conference","author":"Kr\u00fcger S.","year":"2018","unstructured":"S. Kr\u00fcger, J. Sp\u00e4th, K. Ali, E. Bodden, and M. Mezini, \u201c CrySL: An extensible approach to validating the correct usage of cryptographic APIs,\u201d in ECOOP 2018-Object-Oriented Programming, 32nd European Conference, Amsterdam, Netherlands, July 2018, pp. 10 : 1-10 : 27."},{"key":"e_1_2_1_57_1","volume-title":"DeepCode AI fix: Fixing security vulnerabilities with large language models","author":"Berabi B.","year":"2024","unstructured":"B. Berabi, A. Gronskiy, V. Raychev, G. Sivanrupan, V. Chibotaru, and M. Vechev, \u201c DeepCode AI fix: Fixing security vulnerabilities with large language models, \u201d arXiv preprint arXiv:2402.13291, 2024."},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985889"}],"container-title":["Proceedings of the ACM on Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3728968","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3728968","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,16]],"date-time":"2025-07-16T16:47:30Z","timestamp":1752684450000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3728968"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,22]]},"references-count":58,"journal-issue":{"issue":"ISSTA","published-print":{"date-parts":[[2025,6,22]]}},"alternative-id":["10.1145\/3728968"],"URL":"https:\/\/doi.org\/10.1145\/3728968","relation":{},"ISSN":["2994-970X"],"issn-type":[{"value":"2994-970X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,22]]}}}