{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:11:52Z","timestamp":1775873512824,"version":"3.50.1"},"reference-count":102,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2020,9,30]],"date-time":"2020-09-30T00:00:00Z","timestamp":1601424000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"CNPq, CAPES, and FAPEMIG"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2020,9,30]]},"abstract":"<jats:p>Type inference is a feature that is common to a variety of programming languages. While, in the past, it has been prominently present in functional ones (e.g., ML and Haskell), today, many object-oriented\/multi-paradigm languages such as C# and C++ offer, to a certain extent, such a feature. Nevertheless, type inference still is an unexplored subject in the realm of C. In particular, it remains open whether it is possible to devise a technique that encompasses the idiosyncrasies of this language. The first difficulty encountered when tackling this problem is that parsing C requires, not only syntactic, but also semantic information. Yet, greater challenges emerge due to C\u2019s intricate type system. In this work, we present a unification-based framework that lets us infer the missing struct, union, enum, and typedef declarations in a program.<\/jats:p>\n          <jats:p>As an application of our technique, we investigate the reconstruction of partial programs. Incomplete source code naturally appears in software development: during design and while evolving, testing, and analyzing programs; therefore, understanding it is a valuable asset. With a reconstructed well-typed program, one can: (i) enable static analysis tools in scenarios where components are absent; (ii) improve precision of \u201czero setup\u201d static analysis tools; (iii) apply stub generators, symbolic executors, and testing tools on code snippets; and (iv) provide engineers with an assortment of compilable benchmarks for performance and correctness validation. We evaluate our technique on code from a variety of C libraries, including GNU\u2019s Coreutils and on snippets from popular projects such as CPython, FreeBSD, and Git.<\/jats:p>","DOI":"10.1145\/3421472","type":"journal-article","created":{"date-parts":[[2020,11,24]],"date-time":"2020-11-24T20:43:02Z","timestamp":1606250582000},"page":"1-71","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":10,"title":["Type Inference for C"],"prefix":"10.1145","volume":"42","author":[{"given":"Leandro T. C.","family":"Melo","sequence":"first","affiliation":[{"name":"UFMG, Brazil"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Rodrigo G.","family":"Ribeiro","sequence":"additional","affiliation":[{"name":"UFOP, Brazil"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Breno C. F.","family":"Guimar\u00e3es","sequence":"additional","affiliation":[{"name":"UFMG, Brazil"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Fernando Magno Quint\u00e3o","family":"Pereira","sequence":"additional","affiliation":[{"name":"UFMG, Brazil"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,11,13]]},"reference":[{"key":"e_1_2_2_1_1","unstructured":"ANSI-Standard. 1989. ANSI X3.159-1989\u2014The C Programming Language. American National Standards Institute (ANSI) Washington D.C. USA."},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2928270"},{"key":"e_1_2_2_3_1","volume-title":"Binary translation using peephole superoptimizers","author":"Bansal Sorav","unstructured":"Sorav Bansal and Alex Aiken. 2008. Binary translation using peephole superoptimizers. In OSDI. USENIX Association, Berkeley, CA, 177--192."},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-94460-9_7"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2837614.2837637"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985864"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/157710.157795"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10817-009-9148-3"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/582153.582168"},{"key":"e_1_2_2_10_1","unstructured":"Rudy Bunel Alban Desmaison M. Pawan Kumar Philip H. S. Torr and Pushmeet Kohli. 2017. Learning to superoptimize programs. In ICLR. OpenReview."},{"key":"e_1_2_2_11_1","volume-title":"KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI. USENIX, 209--224.","author":"Cadar Cristian","year":"2008","unstructured":"Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI. USENIX, 209--224."},{"key":"e_1_2_2_12_1","volume-title":"Semantics of Data Types","author":"Cardelli Luca","unstructured":"Luca Cardelli. 1984. A semantics of multiple inheritance. In Semantics of Data Types. Springer, 51--67."},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/6041.6042"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/381788.316183"},{"key":"e_1_2_2_15_1","volume-title":"Synthesizing benchmarks for predictive modeling","author":"Cummins Chris","unstructured":"Chris Cummins, Pavlos Petoumenos, Zheng Wang, and Hugh Leather. 2017. Synthesizing benchmarks for predictive modeling. In CGO. IEEE, Piscataway, NJ, 86--99."},{"key":"e_1_2_2_16_1","volume-title":"Frama-c","author":"Cuoq Pascal","unstructured":"Pascal Cuoq, Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, Julien Signoles, and Boris Yakobowski. 2012. Frama-c. In SEFM. Springer, 233--247."},{"key":"e_1_2_2_17_1","doi-asserted-by":"crossref","unstructured":"Barth\u00e9l\u00e9my Dagenais and Laurie Hendren. 2008. Enabling static analysis for partial Java programs. In OOPSLA. ACM 313--328.","DOI":"10.1145\/1449955.1449790"},{"key":"e_1_2_2_18_1","doi-asserted-by":"crossref","unstructured":"Luis Damas and Robin Milner. 1982. Principal type-schemes for functional programs. In POPL. ACM 207--212.","DOI":"10.1145\/582153.582176"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.4149\/cai_2018_1_165"},{"key":"e_1_2_2_20_1","doi-asserted-by":"crossref","unstructured":"Stephen Dolan and Alan Mycroft. 2017. Polymorphism subtyping and type inference in MLsub. In POPL. ACM 1--13.","DOI":"10.1145\/3009837.3009882"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1006285817788"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103656.2103719"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/231379.231389"},{"key":"e_1_2_2_24_1","volume-title":"Jer\u00f4nimo Rocha, Breno Guimar\u00e3es, and Fernando Magno Quint\u00e3o Pereira.","author":"Faustino Anderson","year":"2020","unstructured":"Anderson Faustino, Bruno Kind, Jos\u00e9 Wesley Magalh\u00e3es, Jer\u00f4nimo Rocha, Breno Guimar\u00e3es, and Fernando Magno Quint\u00e3o Pereira. 2020. AnghaBench: A Synthetic Collection of Benchmarks Mined from Open-Source Repositories. Technical Report 01-2020. Universidade Federal de Minas Gerais."},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796802004380"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11390-018-1867-7"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/301631.301665"},{"key":"e_1_2_2_28_1","volume-title":"Type inference with subtypes","author":"Fuh You-Chin","unstructured":"You-Chin Fuh and Prateek Mishra. 1988. Type inference with subtypes. In ESOP. Springer, 94--114."},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2345156.2254103"},{"key":"e_1_2_2_30_1","doi-asserted-by":"crossref","unstructured":"Patrice Godefroid. 2014. Micro execution. In ICSE. ACM 539--549.","DOI":"10.1145\/2568225.2568273"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065010.1065036"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133651.1133653"},{"key":"e_1_2_2_33_1","doi-asserted-by":"crossref","unstructured":"Chris Hathhorn Chucky Ellison and Grigore Rosu. 2015. Defining the undefinedness of C. In PLDI. ACM 336--345.","DOI":"10.1145\/2813885.2737979"},{"key":"e_1_2_2_34_1","first-page":"29","article-title":"The principal type-scheme of an object in combinatory logic","volume":"146","author":"Hindley Roger","year":"1969","unstructured":"Roger Hindley. 1969. The principal type-scheme of an object in combinatory logic. Trans. Amer. Math. Soc. 146 (1969), 29--60.","journal-title":"Trans. Amer. Math. Soc."},{"key":"e_1_2_2_35_1","volume-title":"International Organization for Standardization (ISO)","author":"Programming Language IEC","unstructured":"ISO-Standard. 1990. ISO\/IEC 9899:1990 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland."},{"key":"e_1_2_2_36_1","volume-title":"International Organization for Standardization (ISO)","author":"Programming Language IEC","unstructured":"ISO-Standard. 1999. ISO\/IEC 9899:1999 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland."},{"key":"e_1_2_2_37_1","volume-title":"International Organization for Standardization (ISO)","author":"Programming Language IEC","unstructured":"ISO-Standard. 2011. ISO\/IEC 9899:2011 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland."},{"key":"e_1_2_2_38_1","volume-title":"Cyclone: A safe dialect","author":"Jim Trevor","year":"2002","unstructured":"Trevor Jim, J. Greg Morrisett, Dan Grossman, Michael W. Hicks, James Cheney, and Yanling Wang. 2002. Cyclone: A safe dialect of C. In ATEC. USENIX Association, 275--288."},{"key":"e_1_2_2_39_1","volume-title":"Wobbly Types: Type Inference for Generalised Algebraic Data Types. Technical Report. Technical Report MS-CIS-05-26","author":"Jones Simon Peyton","year":"2004","unstructured":"Simon Peyton Jones, Geoffrey Washburn, and Stephanie Weirich. 2004. Wobbly Types: Type Inference for Generalised Algebraic Data Types. Technical Report. Technical Report MS-CIS-05-26, University of Pennsylvania."},{"key":"e_1_2_2_40_1","doi-asserted-by":"crossref","unstructured":"Stefan Kaes. 1992. Type inference in the presence of overloading subtyping and recursive types. In ACM SIGPLAN Lisp Pointers. ACM 193--204.","DOI":"10.1145\/141478.141540"},{"key":"e_1_2_2_41_1","volume-title":"Ullman","author":"Kaplan Marc A.","year":"1978","unstructured":"Marc A. Kaplan and Jeffrey D. Ullman. 1978. A general scheme for the automatic inference of variable types. In POPL. ACM, 60--75."},{"key":"e_1_2_2_42_1","unstructured":"Gregory Knapen Bruno Lagu\u00eb Michel Dagenais and Ettore Merlo. 1999. Parsing C++ despite missing declarations. In IWPC. IEEE 114--125."},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1097-024X(199706)27:6<637::AID-SPE99>3.0.CO;2-3"},{"key":"e_1_2_2_45_1","doi-asserted-by":"crossref","unstructured":"Robbert Krebbers and Freek Wiedijk. 2015. A Typed C11 Semantics for Interactive Theorem Proving. In CPP. ACM 15--27.","DOI":"10.1145\/2676724.2693571"},{"key":"e_1_2_2_46_1","volume-title":"USENIX Security","volume":"32","author":"Larochelle David","year":"2001","unstructured":"David Larochelle, David Evans, et\u00a0al. 2001. Statically detecting likely buffer overflow vulnerabilities. In USENIX Security, Vol. 32. Washington DC."},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/357162.357169"},{"key":"e_1_2_2_48_1","volume-title":"Necula","author":"McPeak Scott","year":"2004","unstructured":"Scott McPeak and George C. Necula. 2004. Elkhound: A fast, practical GLR parser generator. In CC. Springer, 73--88."},{"key":"e_1_2_2_49_1","unstructured":"Leandro T. C. Melo. 2020. Supplement to: Type Inference for C: Applications to the Static Analysis of Incomplete Programs. Retrieved from http:\/\/ltcmelo.com\/resources\/TypeInferenceForC_Supplement.pdf."},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/3158117"},{"key":"e_1_2_2_51_1","doi-asserted-by":"crossref","unstructured":"Kayvan Memarian Justus Matthiesen James Lingard Kyndylan Nienhuis David Chisnall Robert N. M. Watson and Peter Sewell. 2016. Into the depths of C: Elaborating the De Facto standards. In PLDI. ACM 1--15.","DOI":"10.1145\/2980983.2908081"},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.1016\/0022-0000(78)90014-4"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800000113"},{"key":"e_1_2_2_54_1","volume-title":"Generating robust parsers using island grammars","author":"Moonen Leon","unstructured":"Leon Moonen. 2001. Generating robust parsers using island grammars. In WCRE. IEEE, 13--22."},{"key":"e_1_2_2_55_1","volume-title":"Type-based decompilation (or program reconstruction via type reconstruction)","author":"Mycroft Alan","unstructured":"Alan Mycroft. 1999. Type-based decompilation (or program reconstruction via type reconstruction). In ESOP. Springer, 208--223."},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/1878921.1878951"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1006277616879"},{"key":"e_1_2_2_58_1","doi-asserted-by":"crossref","unstructured":"Henrique Nazar\u00e9 Izabela Maffra Willer Santos Leonardo Barbosa Laure Gonnord and Fernando Magno Quintao Pereira. 2014. Validation of memory accesses through symbolic analyses. In OOPSLA. ACM 791--809.","DOI":"10.1145\/2714064.2660205"},{"key":"e_1_2_2_59_1","volume-title":"CIL: Intermediate language and tools for analysis and transformation of C programs","author":"Necula George C.","year":"2002","unstructured":"George C. Necula, Scott McPeak, Shree P. Rahul, and Westley Weimer. 2002b. CIL: Intermediate language and tools for analysis and transformation of C programs. In CC. Springer, 213--228."},{"key":"e_1_2_2_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/503272.503286"},{"key":"e_1_2_2_61_1","volume-title":"Hanne Riis Nielson, and Chris Hankin","author":"Nielson Flemming","year":"2005","unstructured":"Flemming Nielson, Hanne Riis Nielson, and Chris Hankin. 2005. Principles of Program Analysis. Springer."},{"key":"e_1_2_2_62_1","doi-asserted-by":"crossref","unstructured":"Kyndylan Nienhuis Kayvan Memarian and Peter Sewell. 2016. An operational semantics for C\/C++11 concurrency. In OOPSLA. 111--128.","DOI":"10.1145\/3022671.2983997"},{"key":"e_1_2_2_63_1","doi-asserted-by":"crossref","unstructured":"Matt Noonan Alexey Loginov and David Cok. 2016. Polymorphic type inference for machine code. In PLDI. ACM 27--41.","DOI":"10.1145\/2980983.2908119"},{"key":"e_1_2_2_64_1","volume-title":"PPoPP","author":"Novaes Marcelo","unstructured":"Marcelo Novaes, Vin\u00edcius Petrucci, Abdoulaye Gamati\u00e9, and Fernando Magno Quint\u00e3o Pereira. 2019. Compiler-assisted adaptive program scheduling in Big.LITTLE systems: Poster. In PPoPP. ACM, New York, NY, 429--430."},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1096-9942(199901\/03)5:1<35::AID-TAPO4>3.0.CO;2-4"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/373243.360207"},{"key":"e_1_2_2_67_1","doi-asserted-by":"crossref","unstructured":"Yoann Padioleau. 2009. Parsing C\/C++ code without pre-processing. In CC. Springer 109--125.","DOI":"10.1007\/978-3-642-00722-4_9"},{"key":"e_1_2_2_68_1","volume-title":"Schwartzbach","author":"Palsberg Jens","year":"1991","unstructured":"Jens Palsberg and Michael I. Schwartzbach. 1991. Obj.-orien. Type Inference. 26 (1991). ACM."},{"key":"e_1_2_2_70_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0920-5489(01)00059-9"},{"key":"e_1_2_2_71_1","first-page":"1","article-title":"The Haskell 98 language and libraries: The revised report","volume":"13","author":"\u00a0al Simon Peyton","year":"2003","unstructured":"Simon Peyton Jones et\u00a0al. 2003. The Haskell 98 language and libraries: The revised report. J. Funct. Prog. 13, 1 (Jan. 2003), 0--255.","journal-title":"J. Funct. Prog."},{"key":"e_1_2_2_72_1","volume-title":"ICFP","volume":"41","author":"Jones Simon Peyton","year":"2006","unstructured":"Simon Peyton Jones, Dimitrios Vytiniotis, Stephanie Weirich, and Geoffrey Washburn. 2006. Simple unification-based type inference for GADTs. In ICFP, Vol. 41. ACM, 50--61."},{"key":"e_1_2_2_73_1","doi-asserted-by":"publisher","DOI":"10.1145\/2872362.2872387"},{"key":"e_1_2_2_74_1","volume-title":"Types and Programming Languages","author":"Pierce Benjamin C.","unstructured":"Benjamin C. Pierce. 2004. Types and Programming Languages (1st ed.). The MIT Press.","edition":"1"},{"key":"e_1_2_2_75_1","doi-asserted-by":"publisher","DOI":"10.1145\/345099.345100"},{"key":"e_1_2_2_76_1","volume-title":"Fabricio Ferracioli, and Fernando Magno Quint\u00e3o Pereira.","author":"Poesia Gabriel","year":"2017","unstructured":"Gabriel Poesia, Breno Campos Ferreira Guimar\u00e3es, Fabricio Ferracioli, and Fernando Magno Quint\u00e3o Pereira. 2017. Static placement of computation on heterogeneous devices. In POPL 1, OOPSLA (2017), 50:1--50:28."},{"key":"e_1_2_2_77_1","doi-asserted-by":"publisher","DOI":"10.1145\/232627.232642"},{"key":"e_1_2_2_78_1","doi-asserted-by":"publisher","DOI":"10.1145\/289423.289448"},{"key":"e_1_2_2_79_1","doi-asserted-by":"publisher","DOI":"10.1145\/1111037.1111058"},{"key":"e_1_2_2_80_1","volume-title":"Advanced Topics in Types and Programming Languages, Benjamin C","author":"Pottier Fran\u00e7ois","unstructured":"Fran\u00e7ois Pottier and Didier R\u00e9my. 2005. The essence of ML type inference. In Advanced Topics in Types and Programming Languages, Benjamin C. Pierce (Ed.). The MIT, 389--489."},{"key":"e_1_2_2_83_1","unstructured":"Didier R\u00e9my. 2017. Type Systems for Programming Languages. Retrieved from http:\/\/pauillac.inria.fr\/ remy\/mpri\/cours.pdf."},{"key":"e_1_2_2_84_1","doi-asserted-by":"publisher","DOI":"10.1145\/321250.321253"},{"key":"e_1_2_2_85_1","volume-title":"Victor Hugo Sperle Campos, and Fernando Magno Quintao Pereira","author":"Rodrigues Raphael Ernani","year":"2013","unstructured":"Raphael Ernani Rodrigues, Victor Hugo Sperle Campos, and Fernando Magno Quintao Pereira. 2013. A fast and low overhead technique to secure programs against integer overflows. In CGO. ACM, 1--11."},{"key":"e_1_2_2_86_1","unstructured":"Runtime Verification Inc. 2017. RV-Match. Retrieved from https:\/\/runtimeverification.com\/match\/."},{"key":"e_1_2_2_87_1","doi-asserted-by":"publisher","DOI":"10.1145\/2863701"},{"key":"e_1_2_2_88_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2013.6495004"},{"key":"e_1_2_2_89_1","volume-title":"Type inference with structural subtyping: A faithful formalization of an efficient constraint solver","author":"Simonet Vincent","unstructured":"Vincent Simonet. 2003. Type inference with structural subtyping: A faithful formalization of an efficient constraint solver. In APLAS. Springer, 283--302."},{"key":"e_1_2_2_90_1","volume-title":"Towards an ML-style polymorphic type system for C","author":"Smith Geoffrey","unstructured":"Geoffrey Smith and Dennis Volpano. 1996. Towards an ML-style polymorphic type system for C. In ESOP. Springer, 341--355."},{"key":"e_1_2_2_91_1","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(94)00020-4"},{"key":"e_1_2_2_92_1","doi-asserted-by":"publisher","DOI":"10.1109\/TMSCS.2018.2791955"},{"key":"e_1_2_2_93_1","doi-asserted-by":"crossref","unstructured":"Bjarne Steensgaard. 1996. Points-to analysis in almost linear time. In POPL. 32--41.","DOI":"10.1145\/237721.237727"},{"key":"e_1_2_2_94_1","volume-title":"The Art of Prolog","author":"Sterling Leon","unstructured":"Leon Sterling. 1994. The Art of Prolog (2nd ed.). The MIT Press.","edition":"2"},{"key":"e_1_2_2_95_1","volume-title":"The First-order Theory of Subtyping Constraints","author":"Su Zhendong","unstructured":"Zhendong Su, Alexander Aiken, Joachim Niehren, Tim Priesnitz, and Ralf Treinen. 2002. The First-order Theory of Subtyping Constraints. Vol. 37. ACM."},{"key":"e_1_2_2_96_1","unstructured":"The Qt Project. 2017. The Qt Creator IDE. Retrieved from https:\/\/www.qt.io\/ide\/."},{"key":"e_1_2_2_97_1","volume-title":"Pex: White box test generation for","author":"Tillmann Nikolai","year":"2008","unstructured":"Nikolai Tillmann and Jonathan De Halleux. 2008. Pex: White box test generation for .NET. In TAP. Springer, 134--153."},{"key":"e_1_2_2_98_1","volume-title":"Type reconstruction with recursive types and atomic subtyping","author":"Tiuryn Jerzy","unstructured":"Jerzy Tiuryn and Mitchell Wand. 1993. Type reconstruction with recursive types and atomic subtyping. In CAAP. Springer, 686--701."},{"key":"e_1_2_2_99_1","doi-asserted-by":"publisher","DOI":"10.1145\/2364527.2364554"},{"key":"e_1_2_2_100_1","volume-title":"Well-typed programs can\u2019t be blamed","author":"Wadler Philip","unstructured":"Philip Wadler and Robert Bruce Findler. 2009. Well-typed programs can\u2019t be blamed. In ESOP. Springer, 1--16."},{"key":"e_1_2_2_101_1","unstructured":"Mitchell Wand. 1987a. Complete type inference for simple objects. In LICS."},{"key":"e_1_2_2_102_1","doi-asserted-by":"publisher","DOI":"10.3233\/FI-1987-10202"},{"key":"e_1_2_2_103_1","volume-title":"Corrigendum: Complete type inference for simple objects. In LCS.","author":"Wand Mitchell","year":"1988","unstructured":"Mitchell Wand. 1988. Corrigendum: Complete type inference for simple objects. In LCS."},{"key":"e_1_2_2_104_1","volume-title":"PathCrawler: Automatic generation of path tests by combining static and dynamic analysis","author":"Williams Nicky","unstructured":"Nicky Williams, Bruno Marre, Patricia Mouy, and Muriel Roger. 2005. PathCrawler: Automatic generation of path tests by combining static and dynamic analysis. In EDCC. Springer, 281--292."},{"key":"e_1_2_2_105_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993532"},{"key":"e_1_2_2_106_1","volume-title":"To inline or not to inline? Enhanced inlining decisions","author":"Zhao Peng","unstructured":"Peng Zhao and Jos\u00e9 Nelson Amaral. 2003. To inline or not to inline? Enhanced inlining decisions. In LCPC. Springer, Germany, 405--419."}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3421472","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3421472","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T17:49:21Z","timestamp":1750268961000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3421472"}},"subtitle":["Applications to the Static Analysis of Incomplete Programs"],"short-title":[],"issued":{"date-parts":[[2020,9,30]]},"references-count":102,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2020,9,30]]}},"alternative-id":["10.1145\/3421472"],"URL":"https:\/\/doi.org\/10.1145\/3421472","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,9,30]]},"assertion":[{"value":"2019-03-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2020-08-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2020-11-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}