Type Inference for C Applications to the Static Analysis of Incomplete Programs
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. Neverth...
Saved in:
Published in | ACM transactions on programming languages and systems Vol. 42; no. 3; pp. 1 - 71 |
---|---|
Main Authors | , , , |
Format | Journal Article |
Language | English |
Published |
New York, NY, USA
ACM
01.12.2020
|
Subjects | |
Online Access | Get full text |
Cover
Loading…
Abstract | 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’s 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. 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 “zero setup” 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’s Coreutils and on snippets from popular projects such as CPython, FreeBSD, and Git. |
---|---|
AbstractList | 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’s 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.
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 “zero setup” 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’s Coreutils and on snippets from popular projects such as CPython, FreeBSD, and Git. 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’s 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. 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 “zero setup” 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’s Coreutils and on snippets from popular projects such as CPython, FreeBSD, and Git. |
ArticleNumber | 15 |
Author | Melo, Leandro T. C. Pereira, Fernando Magno Quintão Guimarães, Breno C. F. Ribeiro, Rodrigo G. |
Author_xml | – sequence: 1 givenname: Leandro T. C. surname: Melo fullname: Melo, Leandro T. C. email: ltcmelo@dcc.ufmg.br organization: UFMG, Brazil – sequence: 2 givenname: Rodrigo G. surname: Ribeiro fullname: Ribeiro, Rodrigo G. email: rodrigo@decsi.ufop.br organization: UFOP, Brazil – sequence: 3 givenname: Breno C. F. surname: Guimarães fullname: Guimarães, Breno C. F. email: brenosfg@dcc.ufmg.br organization: UFMG, Brazil – sequence: 4 givenname: Fernando Magno Quintão surname: Pereira fullname: Pereira, Fernando Magno Quintão email: fernando@dcc.ufmg.br organization: UFMG, Brazil |
BookMark | eNptjz1PwzAURS1UJNKCWJiYsjEZ_PwVe0QRhUqVWMocPTvPUlCbVE6W_nuKWhgQ0x3u0bm6czbrh54YuwXxCKDNk9ISdCUvWAHGOK6NVzNWCLCaCy_NFZuP46cQApxxBbvbHPZUrvpEmfpIZRpyWV-zy4TbkW7OuWAfy5dN_cbX76-r-nnNUWo9cRt9SjpAa4HaijxJGxIGWSkbpFHGYYht64876AASCasUBI0pVeCVQ7VgDydvzMM4ZkrNPnc7zIcGRPN9pjmfOZL8Dxm7Cadu6KeM3fYf_v7EY9z9Sn_KLw9JUmg |
CitedBy_id | crossref_primary_10_1109_TKDE_2024_3436883 crossref_primary_10_1016_j_cola_2022_101171 |
Cites_doi | 10.1002/(SICI)1097-024X(199706)27:6<637::AID-SPE99>3.0.CO;2-3 10.1023/A:1006277616879 10.1145/3009837.3009882 10.1145/2714064.2660205 10.1145/1985793.1985864 10.1145/1449955.1449790 10.1145/2863701 10.1007/s11390-018-1867-7 10.1016/0167-6423(94)00020-4 10.1145/2980983.2908081 10.1023/A:1006285817788 10.1145/3158117 10.1145/1993498.1993532 10.1145/345099.345100 10.1145/289423.289448 10.1145/321250.321253 10.1109/CGO.2013.6495004 10.4149/cai_2018_1_165 10.1016/S0920-5489(01)00059-9 10.1145/2103656.2103719 10.1016/0022-0000(78)90014-4 10.1145/157710.157795 10.1145/2872362.2872387 10.1145/2364527.2364554 10.1145/1878921.1878951 10.1145/2980983.2908119 10.1145/2837614.2837637 10.1145/582153.582176 10.1145/2928270 10.1145/2676724.2693571 10.1145/1111037.1111058 10.1145/503272.503286 10.1145/582153.582168 10.1017/S0956796800000113 10.1145/1133651.1133653 10.1002/(SICI)1096-9942(199901/03)5:1<35::AID-TAPO4>3.0.CO;2-4 10.1145/232627.232642 10.1109/TMSCS.2018.2791955 10.1145/357162.357169 10.1145/301631.301665 10.1145/2813885.2737979 10.3233/FI-1987-10202 10.1145/141478.141540 10.1145/3022671.2983997 10.1145/231379.231389 10.1007/s10817-009-9148-3 10.1145/373243.360207 10.1145/381788.316183 10.1017/S0956796802004380 10.1145/1065010.1065036 10.1145/6041.6042 10.1145/237721.237727 10.1007/978-3-642-00722-4_9 10.1145/2568225.2568273 10.1007/978-3-319-94460-9_7 10.1145/2345156.2254103 |
ContentType | Journal Article |
Copyright | ACM |
Copyright_xml | – notice: ACM |
DBID | AAYXX CITATION |
DOI | 10.1145/3421472 |
DatabaseName | CrossRef |
DatabaseTitle | CrossRef |
DatabaseTitleList | CrossRef |
DeliveryMethod | fulltext_linktorsrc |
Discipline | Computer Science |
EISSN | 1558-4593 |
EndPage | 71 |
ExternalDocumentID | 10_1145_3421472 3421472 |
GrantInformation_xml | – fundername: CNPq, CAPES, and FAPEMIG |
GroupedDBID | --Z -DZ -~X .4S .DC 23M 2FS 4.4 5GY 5VS 6J9 8US 8VB AAKMM AALFJ AAYFX ABFSI ABPPZ ACGFO ACGOD ACM ADBCU ADL ADMLS ADPZR AEBYY AENEX AENSD AFWIH AFWXC AHQJS AIAGR AIKLT AKVCP ALMA_UNASSIGNED_HOLDINGS ARCSS ASPBG AVWKF BDXCO CCLIF CS3 D0L EBS EBU EDO FEDTE GUFHI HGAVV H~9 I07 IAO ICD IEA IGS IOF K1G LHSKQ MK~ ML~ P1C P2P PQQKQ QWB RNS ROL RXW TAE TH9 TUS TWZ UHB UKR UPT W7O X6Y XSW Z5M ZCA ZL0 AAYXX AEFXT AEJOY AETEA AKRVB CITATION |
ID | FETCH-LOGICAL-a244t-6c9ff4b1d61ed7e9e26bfab2736b25358abcdd9858a811fe06331b4aff71938a3 |
ISSN | 0164-0925 |
IngestDate | Thu Apr 24 22:57:30 EDT 2025 Thu Jul 03 08:37:49 EDT 2025 Fri Feb 21 01:12:36 EST 2025 |
IsDoiOpenAccess | true |
IsOpenAccess | true |
IsPeerReviewed | true |
IsScholarly | true |
Issue | 3 |
Keywords | Partial programs C language parsing type inference |
Language | English |
License | Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Permissions@acm.org. |
LinkModel | OpenURL |
MergedId | FETCHMERGED-LOGICAL-a244t-6c9ff4b1d61ed7e9e26bfab2736b25358abcdd9858a811fe06331b4aff71938a3 |
OpenAccessLink | https://dl.acm.org/doi/10.1145/3421472 |
PageCount | 71 |
ParticipantIDs | crossref_primary_10_1145_3421472 crossref_citationtrail_10_1145_3421472 acm_primary_3421472 |
PublicationCentury | 2000 |
PublicationDate | 2020-12-01 |
PublicationDateYYYYMMDD | 2020-12-01 |
PublicationDate_xml | – month: 12 year: 2020 text: 2020-12-01 day: 01 |
PublicationDecade | 2020 |
PublicationPlace | New York, NY, USA |
PublicationPlace_xml | – name: New York, NY, USA |
PublicationTitle | ACM transactions on programming languages and systems |
PublicationTitleAbbrev | ACM TOPLAS |
PublicationYear | 2020 |
Publisher | ACM |
Publisher_xml | – name: ACM |
References | Robbert Krebbers and Freek Wiedijk. 2015. A Typed C11 Semantics for Interactive Theorem Proving. In CPP. ACM, 15--27. Jeffrey S. Foster, Manuel Fähndrich, and Alexander Aiken. 1999. A theory of type qualifiers. ACM SIGPLAN Not. 34, 5 (1999), 192--203. ANSI-Standard. 1989. ANSI X3.159-1989—The C Programming Language. American National Standards Institute (ANSI), Washington, D.C., USA. Mitchell Wand. 1987b. A simple algorithm and proof for type inference. Fundam. Informa. 10, 2 (1987), 115--121. Nikolaos S. Papaspyrou. 2001. Denotational semantics of ANSI C. Comput. Stand. Interf. 23, 3 (2001), 169--185. Nikolaos S. Papaspyrou. 1998. A Formal Semantics for the C Programming Language. Ph.D. Dissertation. National Technical University of Athens. Athens, Greece. Peng Zhao and José Nelson Amaral. 2003. To inline or not to inline? Enhanced inlining decisions. In LCPC. Springer, Germany, 405--419. Simon Peyton Jones et al. 2003. The Haskell 98 language and libraries: The revised report. J. Funct. Prog. 13, 1 (Jan. 2003), 0--255. Paul Gazzillo and Robert Grimm. 2012. SuperC: Parsing all of C by taming the preprocessor. ACM SIGPLAN Not. 47, 6 (2012), 323--334. Stefan Kaes. 1992. Type inference in the presence of overloading, subtyping and recursive types. In ACM SIGPLAN Lisp Pointers. ACM, 193--204. Marcelo Novaes, Vinícius Petrucci, Abdoulaye Gamatié, and Fernando Magno Quintão Pereira. 2019. Compiler-assisted adaptive program scheduling in Big.LITTLE systems: Poster. In PPoPP. ACM, New York, NY, 429--430. David Evans. 1996. Static detection of dynamic memory errors. In PLDI, Vol. 31. ACM, 44--53. Anderson Faustino, Bruno Kind, José Wesley Magalhães, Jerônimo Rocha, Breno Guimarães, and Fernando Magno Quintão Pereira. 2020. AnghaBench: A Synthetic Collection of Benchmarks Mined from Open-Source Repositories. Technical Report 01-2020. Universidade Federal de Minas Gerais. 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. Jyothi Krishna Viswakaran Sreelatha, Shankar Balachandran, and Rupesh Nasre. 2018. CHOAMP: Cost based hardware optimization for asymmetric multicore processors. Trans. Multi-Scale Comput. Syst. 4, 2 (2018), 163--176. Rainer Koppler. 1997. A systematic approach to fuzzy parsing. Softw. Pract. Exper. 27, 6 (1997), 637--649. 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. Henrique Nazaré, 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. Benjamin C. Pierce and David N. Turner. 2000. Local type inference. ACM Trans. Prog. Lang. Syst. 22, 1 (2000), 1--44. François Pottier. 1998. A framework for type inference with subtyping. In ACM SIGPLAN Not. 34 (1998). ACM, 228--238. Wolfgang Naraschewski and Tobias Nipkow. 1999. Type inference verified: Algorithm W in Isabelle/HOL. J. Autom. Reas. 23, 3 (1999), 299--318. Jakob Rehof. 1998. The Complexity of Simple Subtyping Systems. Ph.D. Dissertation. University of Copenhagen, Denmark. Walter R. Bischofberger. 1993. Sniff: A pragmatic approach to a C++ programming environment (abstract). OOPS Messenger 4, 2 (1993), 229. 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. Jerzy Tiuryn and Mitchell Wand. 1993. Type reconstruction with recursive types and atomic subtyping. In CAAP. Springer, 686--701. Alberto Martelli and Ugo Montanari. 1982. An efficient unification algorithm. ACM Trans. Prog. Lang. Syst. 4, 2 (1982), 258--282. ISO-Standard. 1990. ISO/IEC 9899:1990 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland. ISO-Standard. 2011. ISO/IEC 9899:2011 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland. Robbert Krebbers. 2015. The C Standard Formalized in Coq. Ph.D. Dissertation. Radboud University, Nijmegen, NL. Scott McPeak and George C. Necula. 2004. Elkhound: A fast, practical GLR parser generator. In CC. Springer, 73--88. Matt Noonan, Alexey Loginov, and David Cok. 2016. Polymorphic type inference for machine code. In PLDI. ACM, 27--41. 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. Douglas Simon, John Cavazos, Christian Wimmer, and Sameer Kulkarni. 2013. Automatic construction of inlining heuristics using machine learning. In CGO. IEEE Computer Society, Washington, DC, 1--12. DOI:https://doi.org/10.1109/CGO.2013.6495004 Gregory Knapen, Bruno Laguë, Michel Dagenais, and Ettore Merlo. 1999. Parsing C++ despite missing declarations. In IWPC. IEEE, 114--125. Yoann Padioleau. 2009. Parsing C/C++ code without pre-processing. In CC. Springer, 109--125. Marc A. Kaplan and Jeffrey D. Ullman. 1978. A general scheme for the automatic inference of variable types. In POPL. ACM, 60--75. Vincent Simonet. 2003. Type inference with structural subtyping: A faithful formalization of an efficient constraint solver. In APLAS. Springer, 283--302. 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. Dimitrios Vytiniotis, Simon Peyton Jones, and José Pedro Magalhães. 2012. Equality proofs and deferred type errors: A compiler pearl. In ICFP. Association for Computing Machinery, New York, NY, 341--352. DOI:https://doi.org/10.1145/2364527.2364554 Kyndylan Nienhuis, Kayvan Memarian, and Peter Sewell. 2016. An operational semantics for C/C++11 concurrency. In OOPSLA. 111--128. Michael Bayne, Richard Cook, and Michael D. Ernst. 2011. Always-available static and dynamic feedback. In ICSE. ACM, New York, NY, 521--530. DOI:https://doi.org/10.1145/1985793.1985864 Phitchaya Mangpo Phothilimthana, Aditya Thakur, Rastislav Bodik, and Dinakar Dhurjati. 2016. Scaling Up superoptimization. In ASPLOS. ACM, New York, NY, 297--310. DOI:https://doi.org/10.1145/2872362.2872387 François Pottier and Didier Rémy. 2005. The essence of ML type inference. In Advanced Topics in Types and Programming Languages, Benjamin C. Pierce (Ed.). The MIT, 389--489. Stephen Dolan and Alan Mycroft. 2017. Polymorphism, subtyping, and type inference in MLsub. In POPL. ACM, 1--13. Roger Hindley. 1969. The principal type-scheme of an object in combinatory logic. Trans. Amer. Math. Soc. 146 (1969), 29--60. Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed automated random testing. In PLDI. ACM, 213--223. Patrice Godefroid. 2014. Micro execution. In ICSE. ACM, 539--549. Benjamin C. Pierce. 2004. Types and Programming Languages (1st ed.). The MIT Press. Eric Schkufza, Rahul Sharma, and Alex Aiken. 2016. Stochastic program optimization. Commun. ACM 59, 2 (2016), 114--122. DOI:https://doi.org/10.1145/2863701 Gabriel Poesia, Breno Campos Ferreira Guimarães, Fabricio Ferracioli, and Fernando Magno Quintão Pereira. 2017. Static placement of computation on heterogeneous devices. In POPL 1, OOPSLA (2017), 50:1--50:28. Pascal Cuoq, Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, Julien Signoles, and Boris Yakobowski. 2012. Frama-c. In SEFM. Springer, 233--247. Mircea Namolaru, Albert Cohen, Grigori Fursin, Ayal Zaks, and Ari Freund. 2010. Practical aggregation of semantical program properties for machine learning based optimization. In CASES. ACM, New York, NY, 197--206. DOI:https://doi.org/10.1145/1878921.1878951 Didier Rémy. 1992. Extending ML Type System with a Sorted Equational Theory. Research Report 1766. Institut National de Recherche en Informatique et Automatisme, Rocquencourt, BP 105, 78 153 Le Chesnay Cedex, France. The Qt Project. 2017. The Qt Creator IDE. Retrieved from https://www.qt.io/ide/. Nikolai Tillmann and Jonathan De Halleux. 2008. Pex: White box test generation for .NET. In TAP. Springer, 134--153. Karl-Filip Faxén. 2002. A static semantics for Haskell. J. Funct. Prog. 12, 5 (2002), 295--357. Martin Odersky, Christoph Zenger, and Matthias Zenger. 2001. Colored local type inference. ACM SIGPLAN Not. 36, 3 (2001), 41--53. 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. Catherine Dubois and Valerie Menissier-Morain. 1999. Certification of a type inference tool for ML: Damas--Milner within Coq. J. Auto. Reas. 23, 3 (1999), 319--346. Satish Chandra and Thomas Reps. 1999. Physical type checking for C. In ACM SIGSOFT Softw. Eng. Notes, Vol. 24. ACM, 66--75. Martin Odersky, Martin Sulzmann, and Martin Wehr. 1999. Type inference with constrained types. Theor. Pract. Obj. Syst. 5, 1 (1999), 35--55. Runtime Verification Inc. 2017. RV-Match. Retrieved from https://runtimeverification.com/match/. Mitchell Wand. 1987a. Complete type inference for simple objects. In LICS. ISO-Standard. 1999. ISO/IEC 9899:1999 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland. George C. Necula, Scott McPeak, and Westley Weimer. 2002a. CCured: Type-safe retrofitting of legacy code. In ACM SIGPLAN Not. 37 (2002). ACM, 128--139. Sandrine Blazy and Xavier Leroy. 2009. Mechanized semantics for the Clight subset of the C language. J. Autom. Reas. 43, 3 (2009), 263--288. Luis Damas and Robin Milner. 1982. Principal type-schemes for functional programs. In POPL. ACM, 207--212. You-Chin Fuh and Prateek Mishra. 1988. Type inference with subtypes. In ESOP. Springer, 94--114. J. A. Robinson. 1965. A machine-oriented logic based on the resolution principle. J. ACM 12, 1 (1965), 23- e_1_2_2_6_1 e_1_2_2_20_1 Williams Nicky (e_1_2_2_104_1) e_1_2_2_2_1 Fuh You-Chin (e_1_2_2_28_1) e_1_2_2_62_1 e_1_2_2_105_1 e_1_2_2_43_1 e_1_2_2_66_1 e_1_2_2_101_1 Pottier François (e_1_2_2_80_1) Su Zhendong (e_1_2_2_95_1) e_1_2_2_47_1 Sterling Leon (e_1_2_2_94_1) al Simon Peyton (e_1_2_2_71_1) 2003; 13 Moonen Leon (e_1_2_2_54_1) e_1_2_2_13_1 Wand Mitchell (e_1_2_2_103_1) 1988 e_1_2_2_51_1 e_1_2_2_32_1 e_1_2_2_17_1 e_1_2_2_78_1 e_1_2_2_70_1 e_1_2_2_93_1 Nielson Flemming (e_1_2_2_61_1) 2005 Tillmann Nikolai (e_1_2_2_97_1) 2008 e_1_2_2_25_1 Zhao Peng (e_1_2_2_106_1) e_1_2_2_5_1 Cardelli Luca (e_1_2_2_12_1) e_1_2_2_21_1 e_1_2_2_1_1 e_1_2_2_40_1 e_1_2_2_63_1 e_1_2_2_86_1 Cadar Cristian (e_1_2_2_11_1) 2008 e_1_2_2_9_1 e_1_2_2_29_1 e_1_2_2_67_1 e_1_2_2_102_1 Cuoq Pascal (e_1_2_2_16_1) Faustino Anderson (e_1_2_2_24_1) 2020 Jim Trevor (e_1_2_2_38_1) 2002 Rodrigues Raphael Ernani (e_1_2_2_85_1) 2013 Novaes Marcelo (e_1_2_2_64_1) Larochelle David (e_1_2_2_46_1) 2001; 32 e_1_2_2_14_1 Bansal Sorav (e_1_2_2_3_1) e_1_2_2_10_1 e_1_2_2_52_1 e_1_2_2_75_1 e_1_2_2_18_1 e_1_2_2_33_1 e_1_2_2_56_1 e_1_2_2_79_1 Wadler Philip (e_1_2_2_100_1) Jones Simon Peyton (e_1_2_2_39_1) 2004 Kaplan Marc A. (e_1_2_2_41_1) 1978 Programming Language IEC (e_1_2_2_37_1) e_1_2_2_4_1 e_1_2_2_49_1 e_1_2_2_22_1 e_1_2_2_87_1 e_1_2_2_8_1 e_1_2_2_45_1 e_1_2_2_26_1 Hindley Roger (e_1_2_2_34_1) 1969; 146 e_1_2_2_83_1 e_1_2_2_60_1 Simonet Vincent (e_1_2_2_89_1) Necula George C. (e_1_2_2_59_1) 2002 e_1_2_2_30_1 e_1_2_2_19_1 e_1_2_2_53_1 e_1_2_2_99_1 e_1_2_2_57_1 Programming Language IEC (e_1_2_2_35_1) Mycroft Alan (e_1_2_2_55_1) e_1_2_2_91_1 Palsberg Jens (e_1_2_2_68_1) 1991 McPeak Scott (e_1_2_2_48_1) 2004 e_1_2_2_23_1 e_1_2_2_7_1 Poesia Gabriel (e_1_2_2_76_1) 2017 e_1_2_2_42_1 e_1_2_2_65_1 e_1_2_2_84_1 Smith Geoffrey (e_1_2_2_90_1) e_1_2_2_27_1 e_1_2_2_88_1 Programming Language IEC (e_1_2_2_36_1) Cummins Chris (e_1_2_2_15_1) Jones Simon Peyton (e_1_2_2_72_1) 2006; 41 e_1_2_2_31_1 e_1_2_2_73_1 e_1_2_2_96_1 Tiuryn Jerzy (e_1_2_2_98_1) Pierce Benjamin C. (e_1_2_2_74_1) e_1_2_2_58_1 e_1_2_2_77_1 e_1_2_2_50_1 e_1_2_2_92_1 |
References_xml | – reference: 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. – reference: Martin Odersky, Martin Sulzmann, and Martin Wehr. 1999. Type inference with constrained types. Theor. Pract. Obj. Syst. 5, 1 (1999), 35--55. – reference: Didier Rémy. 1992. Extending ML Type System with a Sorted Equational Theory. Research Report 1766. Institut National de Recherche en Informatique et Automatisme, Rocquencourt, BP 105, 78 153 Le Chesnay Cedex, France. – reference: Patrice Godefroid. 2014. Micro execution. In ICSE. ACM, 539--549. – reference: Leandro T. C. Melo, Rodrigo G. Ribeiro, Marcus R. de Araujo, and Fernando Magno Quintao Pereira. 2017. Inference of static semantics for incomplete C programs. Proc. ACM Prog. Lang. 2, POPL (Dec. 2017). DOI:https://doi.org/10.1145/3158117 – reference: Walter R. Bischofberger. 1993. Sniff: A pragmatic approach to a C++ programming environment (abstract). OOPS Messenger 4, 2 (1993), 229. – reference: Rainer Koppler. 1997. A systematic approach to fuzzy parsing. Softw. Pract. Exper. 27, 6 (1997), 637--649. – reference: Alberto Martelli and Ugo Montanari. 1982. An efficient unification algorithm. ACM Trans. Prog. Lang. Syst. 4, 2 (1982), 258--282. – reference: John C. Mitchell. 1991. Type inference with simple subtypes. J. Funct. Prog. 1, 3 (1991), 245--285. – reference: Amir Hossein Ashouri, Giovanni Mariani, Gianluca Palermo, Eunjung Park, John Cavazos, and Cristina Silvano. 2016. COBAYN: Compiler autotuning framework using Bayesian networks. Trans. Archit. Code Optim. 13, 2 (2016), 21:1--21:25. DOI:https://doi.org/10.1145/2928270 – reference: 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. – reference: Chris Cummins, Pavlos Petoumenos, Zheng Wang, and Hugh Leather. 2017. Synthesizing benchmarks for predictive modeling. In CGO. IEEE, Piscataway, NJ, 86--99. – reference: Marcelo Novaes, Vinícius Petrucci, Abdoulaye Gamatié, and Fernando Magno Quintão Pereira. 2019. Compiler-assisted adaptive program scheduling in Big.LITTLE systems: Poster. In PPoPP. ACM, New York, NY, 429--430. – reference: J. A. Robinson. 1965. A machine-oriented logic based on the resolution principle. J. ACM 12, 1 (1965), 23--41. – reference: Runtime Verification Inc. 2017. RV-Match. Retrieved from https://runtimeverification.com/match/. – reference: Robbert Krebbers and Freek Wiedijk. 2015. A Typed C11 Semantics for Interactive Theorem Proving. In CPP. ACM, 15--27. – reference: Gabriel Poesia, Breno Campos Ferreira Guimarães, Fabricio Ferracioli, and Fernando Magno Quintão Pereira. 2017. Static placement of computation on heterogeneous devices. In POPL 1, OOPSLA (2017), 50:1--50:28. – reference: Matt Noonan, Alexey Loginov, and David Cok. 2016. Polymorphic type inference for machine code. In PLDI. ACM, 27--41. – reference: Stefan Kaes. 1992. Type inference in the presence of overloading, subtyping and recursive types. In ACM SIGPLAN Lisp Pointers. ACM, 193--204. – reference: Geoffrey Smith and Dennis Volpano. 1996. Towards an ML-style polymorphic type system for C. In ESOP. Springer, 341--355. – reference: Benjamin C. Pierce and David N. Turner. 2000. Local type inference. ACM Trans. Prog. Lang. Syst. 22, 1 (2000), 1--44. – reference: Paul Gazzillo and Robert Grimm. 2012. SuperC: Parsing all of C by taming the preprocessor. ACM SIGPLAN Not. 47, 6 (2012), 323--334. – reference: Satish Chandra and Thomas Reps. 1999. Physical type checking for C. In ACM SIGSOFT Softw. Eng. Notes, Vol. 24. ACM, 66--75. – reference: Jerzy Tiuryn and Mitchell Wand. 1993. Type reconstruction with recursive types and atomic subtyping. In CAAP. Springer, 686--701. – reference: Chris Hathhorn, Chucky Ellison, and Grigore Rosu. 2015. Defining the undefinedness of C. In PLDI. ACM, 336--345. – reference: François Pottier. 1996. Simplifying subtyping constraints. In ACM SIGPLAN Not. 31 (1996). ACM, 122--133. – reference: Mark Batty, Alastair F. Donaldson, and John Wickerson. 2016. Overhauling SC atomics in C11 and OpenCL. In POPL, Vol. 51. ACM, 634--648. – reference: Mitchell Wand. 1988. Corrigendum: Complete type inference for simple objects. In LCS. – reference: Robin Milner. 1978. A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 3 (1978), 348--375. – reference: Barthélémy Dagenais and Laurie Hendren. 2008. Enabling static analysis for partial Java programs. In OOPSLA. ACM, 313--328. – reference: Yoann Padioleau. 2009. Parsing C/C++ code without pre-processing. In CC. Springer, 109--125. – reference: Luca Cardelli and Peter Wegner. 1985. On understanding types, data abstraction, and polymorphism. ACM Comput. Surv. 17, 4 (1985), 471--523. – reference: Gregory Knapen, Bruno Laguë, Michel Dagenais, and Ettore Merlo. 1999. Parsing C++ despite missing declarations. In IWPC. IEEE, 114--125. – reference: Xuejun Yang, Yang Chen, Eric Eide, and John Regehr. 2011. Finding and understanding bugs in C compilers. In PLDI. ACM, New York, NY, 283--294. DOI:https://doi.org/10.1145/1993498.1993532 – reference: Scott McPeak and George C. Necula. 2004. Elkhound: A fast, practical GLR parser generator. In CC. Springer, 73--88. – reference: João Fabrício Filho, Luis Gustavo Araujo Rodriguez, and Anderson Faustino da Silva. 2018. Yet another intelligent code-generating system: A flexible and low-cost solution. J. Comput. Sci. Technol. 33, 5 (2018), 940--965. DOI:https://doi.org/10.1007/s11390-018-1867-7 – reference: Nikolaos S. Papaspyrou. 2001. Denotational semantics of ANSI C. Comput. Stand. Interf. 23, 3 (2001), 169--185. – reference: 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. – reference: Kyndylan Nienhuis, Kayvan Memarian, and Peter Sewell. 2016. An operational semantics for C/C++11 concurrency. In OOPSLA. 111--128. – reference: You-Chin Fuh and Prateek Mishra. 1988. Type inference with subtypes. In ESOP. Springer, 94--114. – reference: Geoffrey S. Smith. 1994. Principal type schemes for functional programs with overloading and subtyping. Sci. Comput. Prog. 23, 2--3 (1994), 197--226. – reference: Didier Rémy. 2017. Type Systems for Programming Languages. Retrieved from http://pauillac.inria.fr/ remy/mpri/cours.pdf. – reference: Jeffrey S. Foster, Manuel Fähndrich, and Alexander Aiken. 1999. A theory of type qualifiers. ACM SIGPLAN Not. 34, 5 (1999), 192--203. – reference: Robbert Krebbers. 2015. The C Standard Formalized in Coq. Ph.D. Dissertation. Radboud University, Nijmegen, NL. – reference: Peng Zhao and José Nelson Amaral. 2003. To inline or not to inline? Enhanced inlining decisions. In LCPC. Springer, Germany, 405--419. – reference: Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed automated random testing. In PLDI. ACM, 213--223. – reference: David Larochelle, David Evans, et al. 2001. Statically detecting likely buffer overflow vulnerabilities. In USENIX Security, Vol. 32. Washington DC. – reference: Michael Bayne, Richard Cook, and Michael D. Ernst. 2011. Always-available static and dynamic feedback. In ICSE. ACM, New York, NY, 521--530. DOI:https://doi.org/10.1145/1985793.1985864 – reference: 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. – reference: Dan Grossman. 2006. Quantified types in an imperative language. ACM Trans. Prog. Lang. Syst. 28, 3 (May 2006), 429--475. DOI:https://doi.org/10.1145/1133651.1133653 – reference: ANSI-Standard. 1989. ANSI X3.159-1989—The C Programming Language. American National Standards Institute (ANSI), Washington, D.C., USA. – reference: Simon Peyton Jones et al. 2003. The Haskell 98 language and libraries: The revised report. J. Funct. Prog. 13, 1 (Jan. 2003), 0--255. – reference: Mitchell Wand. 1987b. A simple algorithm and proof for type inference. Fundam. Informa. 10, 2 (1987), 115--121. – reference: David Evans. 1996. Static detection of dynamic memory errors. In PLDI, Vol. 31. ACM, 44--53. – reference: Roger Hindley. 1969. The principal type-scheme of an object in combinatory logic. Trans. Amer. Math. Soc. 146 (1969), 29--60. – reference: ISO-Standard. 2011. ISO/IEC 9899:2011 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland. – reference: ISO-Standard. 1999. ISO/IEC 9899:1999 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland. – reference: Marc A. Kaplan and Jeffrey D. Ullman. 1978. A general scheme for the automatic inference of variable types. In POPL. ACM, 60--75. – reference: Nikolai Tillmann and Jonathan De Halleux. 2008. Pex: White box test generation for .NET. In TAP. Springer, 134--153. – reference: Karl-Filip Faxén. 2002. A static semantics for Haskell. J. Funct. Prog. 12, 5 (2002), 295--357. – reference: 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. – reference: Dimitrios Vytiniotis, Simon Peyton Jones, and José Pedro Magalhães. 2012. Equality proofs and deferred type errors: A compiler pearl. In ICFP. Association for Computing Machinery, New York, NY, 341--352. DOI:https://doi.org/10.1145/2364527.2364554 – reference: Mitchell Wand. 1987a. Complete type inference for simple objects. In LICS. – reference: 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. – reference: Luca Cardelli. 1984. A semantics of multiple inheritance. In Semantics of Data Types. Springer, 51--67. – reference: Alan Mycroft. 1999. Type-based decompilation (or program reconstruction via type reconstruction). In ESOP. Springer, 208--223. – reference: Jens Palsberg and Michael I. Schwartzbach. 1991. Obj.-orien. Type Inference. 26 (1991). ACM. – reference: 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. – reference: Alan H. Borning and Daniel H. H. Ingalls. 1982. A type declaration and inference system for smalltalk. In POPL. ACM, New York, NY, 133--141. DOI:https://doi.org/10.1145/582153.582168 – reference: Catherine Dubois and Valerie Menissier-Morain. 1999. Certification of a type inference tool for ML: Damas--Milner within Coq. J. Auto. Reas. 23, 3 (1999), 319--346. – reference: François Pottier and Didier Rémy. 2005. The essence of ML type inference. In Advanced Topics in Types and Programming Languages, Benjamin C. Pierce (Ed.). The MIT, 389--489. – reference: Jyothi Krishna Viswakaran Sreelatha, Shankar Balachandran, and Rupesh Nasre. 2018. CHOAMP: Cost based hardware optimization for asymmetric multicore processors. Trans. Multi-Scale Comput. Syst. 4, 2 (2018), 163--176. – reference: François Pottier. 1998. A framework for type inference with subtyping. In ACM SIGPLAN Not. 34 (1998). ACM, 228--238. – reference: ISO-Standard. 1990. ISO/IEC 9899:1990 - The C Programming Language. International Organization for Standardization (ISO), Geneva, Switzerland. – reference: Philip Wadler and Robert Bruce Findler. 2009. Well-typed programs can’t be blamed. In ESOP. Springer, 1--16. – reference: Mircea Namolaru, Albert Cohen, Grigori Fursin, Ayal Zaks, and Ari Freund. 2010. Practical aggregation of semantical program properties for machine learning based optimization. In CASES. ACM, New York, NY, 197--206. DOI:https://doi.org/10.1145/1878921.1878951 – reference: Pascal Cuoq, Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, Julien Signoles, and Boris Yakobowski. 2012. Frama-c. In SEFM. Springer, 233--247. – reference: Zhendong Su, Alexander Aiken, Joachim Niehren, Tim Priesnitz, and Ralf Treinen. 2002. The First-order Theory of Subtyping Constraints. Vol. 37. ACM. – reference: Tiago Cariolano de Souza Xavier and Anderson Faustino da Silva. 2018. Exploration of compiler optimization sequences using a hybrid approach. Comput. Inform. 37, 1 (2018), 165--185. – reference: Leon Moonen. 2001. Generating robust parsers using island grammars. In WCRE. IEEE, 13--22. – reference: Jakob Rehof. 1998. The Complexity of Simple Subtyping Systems. Ph.D. Dissertation. University of Copenhagen, Denmark. – reference: Flemming Nielson, Hanne Riis Nielson, and Chris Hankin. 2005. Principles of Program Analysis. Springer. – reference: Rudy Bunel, Alban Desmaison, M. Pawan Kumar, Philip H. S. Torr, and Pushmeet Kohli. 2017. Learning to superoptimize programs. In ICLR. OpenReview. – reference: Wolfgang Naraschewski and Tobias Nipkow. 1999. Type inference verified: Algorithm W in Isabelle/HOL. J. Autom. Reas. 23, 3 (1999), 299--318. – reference: Sorav Bansal and Alex Aiken. 2008. Binary translation using peephole superoptimizers. In OSDI. USENIX Association, Berkeley, CA, 177--192. – reference: Martin Odersky, Christoph Zenger, and Matthias Zenger. 2001. Colored local type inference. ACM SIGPLAN Not. 36, 3 (2001), 41--53. – reference: Phitchaya Mangpo Phothilimthana, Aditya Thakur, Rastislav Bodik, and Dinakar Dhurjati. 2016. Scaling Up superoptimization. In ASPLOS. ACM, New York, NY, 297--310. DOI:https://doi.org/10.1145/2872362.2872387 – reference: Eric Schkufza, Rahul Sharma, and Alex Aiken. 2016. Stochastic program optimization. Commun. ACM 59, 2 (2016), 114--122. DOI:https://doi.org/10.1145/2863701 – reference: Vincent Simonet. 2003. Type inference with structural subtyping: A faithful formalization of an efficient constraint solver. In APLAS. Springer, 283--302. – reference: Sandrine Blazy and Xavier Leroy. 2009. Mechanized semantics for the Clight subset of the C language. J. Autom. Reas. 43, 3 (2009), 263--288. – reference: Benjamin C. Pierce. 2004. Types and Programming Languages (1st ed.). The MIT Press. – reference: The Qt Project. 2017. The Qt Creator IDE. Retrieved from https://www.qt.io/ide/. – reference: Bjarne Steensgaard. 1996. Points-to analysis in almost linear time. In POPL. 32--41. – reference: François Pottier and Yann Régis-Gianas. 2006. Stratified type inference for generalized algebraic data types. In POPL. ACM, New York, NY, 232--244. DOI:https://doi.org/10.1145/1111037.1111058 – reference: Douglas Simon, John Cavazos, Christian Wimmer, and Sameer Kulkarni. 2013. Automatic construction of inlining heuristics using machine learning. In CGO. IEEE Computer Society, Washington, DC, 1--12. DOI:https://doi.org/10.1109/CGO.2013.6495004 – reference: Anderson Faustino, Bruno Kind, José Wesley Magalhães, Jerônimo Rocha, Breno Guimarães, and Fernando Magno Quintão Pereira. 2020. AnghaBench: A Synthetic Collection of Benchmarks Mined from Open-Source Repositories. Technical Report 01-2020. Universidade Federal de Minas Gerais. – reference: Nikolaos S. Papaspyrou. 1998. A Formal Semantics for the C Programming Language. Ph.D. Dissertation. National Technical University of Athens. Athens, Greece. – reference: Gergö Barany. 2017. Liveness-driven random program generation. In LOPSTR. Springer, Germany, 112--127. DOI:https://doi.org/10.1007/978-3-319-94460-9_7 – reference: George C. Necula, Scott McPeak, and Westley Weimer. 2002a. CCured: Type-safe retrofitting of legacy code. In ACM SIGPLAN Not. 37 (2002). ACM, 128--139. – reference: Stephen Dolan and Alan Mycroft. 2017. Polymorphism, subtyping, and type inference in MLsub. In POPL. ACM, 1--13. – reference: Chucky Ellison and Grigore Rosu. 2012. An executable formal semantics of C with applications. In POPL, Vol. 47. ACM, 533--544. – reference: 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. – reference: 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. – reference: Leon Sterling. 1994. The Art of Prolog (2nd ed.). The MIT Press. – reference: Luis Damas and Robin Milner. 1982. Principal type-schemes for functional programs. In POPL. ACM, 207--212. – reference: Henrique Nazaré, 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. – volume-title: The First-order Theory of Subtyping Constraints ident: e_1_2_2_95_1 – volume-title: The Art of Prolog ident: e_1_2_2_94_1 – ident: e_1_2_2_43_1 doi: 10.1002/(SICI)1097-024X(199706)27:6<637::AID-SPE99>3.0.CO;2-3 – volume-title: Type-based decompilation (or program reconstruction via type reconstruction) ident: e_1_2_2_55_1 – ident: e_1_2_2_57_1 doi: 10.1023/A:1006277616879 – ident: e_1_2_2_20_1 doi: 10.1145/3009837.3009882 – volume-title: Pex: White box test generation for year: 2008 ident: e_1_2_2_97_1 – ident: e_1_2_2_58_1 doi: 10.1145/2714064.2660205 – volume-title: PPoPP ident: e_1_2_2_64_1 – volume: 13 start-page: 1 year: 2003 ident: e_1_2_2_71_1 article-title: The Haskell 98 language and libraries: The revised report publication-title: J. Funct. Prog. – volume-title: To inline or not to inline? Enhanced inlining decisions ident: e_1_2_2_106_1 – ident: e_1_2_2_6_1 doi: 10.1145/1985793.1985864 – volume-title: Generating robust parsers using island grammars ident: e_1_2_2_54_1 – ident: e_1_2_2_17_1 doi: 10.1145/1449955.1449790 – volume-title: Jerônimo Rocha, Breno Guimarães, and Fernando Magno Quintão Pereira. year: 2020 ident: e_1_2_2_24_1 – volume-title: Ullman year: 1978 ident: e_1_2_2_41_1 – ident: e_1_2_2_87_1 doi: 10.1145/2863701 – volume-title: International Organization for Standardization (ISO) ident: e_1_2_2_36_1 – volume-title: Binary translation using peephole superoptimizers ident: e_1_2_2_3_1 – ident: e_1_2_2_26_1 doi: 10.1007/s11390-018-1867-7 – ident: e_1_2_2_91_1 doi: 10.1016/0167-6423(94)00020-4 – volume-title: Fabricio Ferracioli, and Fernando Magno Quintão Pereira. year: 2017 ident: e_1_2_2_76_1 – volume-title: International Organization for Standardization (ISO) ident: e_1_2_2_35_1 – ident: e_1_2_2_51_1 doi: 10.1145/2980983.2908081 – volume-title: Synthesizing benchmarks for predictive modeling ident: e_1_2_2_15_1 – ident: e_1_2_2_21_1 doi: 10.1023/A:1006285817788 – ident: e_1_2_2_50_1 doi: 10.1145/3158117 – ident: e_1_2_2_105_1 doi: 10.1145/1993498.1993532 – ident: e_1_2_2_75_1 doi: 10.1145/345099.345100 – ident: e_1_2_2_49_1 – ident: e_1_2_2_78_1 doi: 10.1145/289423.289448 – ident: e_1_2_2_84_1 doi: 10.1145/321250.321253 – ident: e_1_2_2_88_1 doi: 10.1109/CGO.2013.6495004 – ident: e_1_2_2_19_1 doi: 10.4149/cai_2018_1_165 – volume-title: Wobbly Types: Type Inference for Generalised Algebraic Data Types. Technical Report. Technical Report MS-CIS-05-26 year: 2004 ident: e_1_2_2_39_1 – ident: e_1_2_2_70_1 doi: 10.1016/S0920-5489(01)00059-9 – ident: e_1_2_2_22_1 doi: 10.1145/2103656.2103719 – volume: 146 start-page: 29 year: 1969 ident: e_1_2_2_34_1 article-title: The principal type-scheme of an object in combinatory logic publication-title: Trans. Amer. Math. Soc. – ident: e_1_2_2_52_1 doi: 10.1016/0022-0000(78)90014-4 – ident: e_1_2_2_7_1 doi: 10.1145/157710.157795 – ident: e_1_2_2_73_1 doi: 10.1145/2872362.2872387 – ident: e_1_2_2_99_1 doi: 10.1145/2364527.2364554 – volume-title: Corrigendum: Complete type inference for simple objects. In LCS. year: 1988 ident: e_1_2_2_103_1 – ident: e_1_2_2_56_1 doi: 10.1145/1878921.1878951 – ident: e_1_2_2_63_1 doi: 10.1145/2980983.2908119 – volume-title: Types and Programming Languages ident: e_1_2_2_74_1 – volume-title: Towards an ML-style polymorphic type system for C ident: e_1_2_2_90_1 – volume-title: Type inference with structural subtyping: A faithful formalization of an efficient constraint solver ident: e_1_2_2_89_1 – ident: e_1_2_2_5_1 doi: 10.1145/2837614.2837637 – ident: e_1_2_2_18_1 doi: 10.1145/582153.582176 – ident: e_1_2_2_2_1 doi: 10.1145/2928270 – ident: e_1_2_2_45_1 doi: 10.1145/2676724.2693571 – volume-title: International Organization for Standardization (ISO) ident: e_1_2_2_37_1 – ident: e_1_2_2_79_1 doi: 10.1145/1111037.1111058 – ident: e_1_2_2_60_1 doi: 10.1145/503272.503286 – volume-title: KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI. USENIX, 209--224. year: 2008 ident: e_1_2_2_11_1 – volume-title: Hanne Riis Nielson, and Chris Hankin year: 2005 ident: e_1_2_2_61_1 – ident: e_1_2_2_9_1 doi: 10.1145/582153.582168 – volume: 41 volume-title: ICFP year: 2006 ident: e_1_2_2_72_1 – volume-title: Type inference with subtypes ident: e_1_2_2_28_1 – volume-title: Necula year: 2004 ident: e_1_2_2_48_1 – volume-title: Type reconstruction with recursive types and atomic subtyping ident: e_1_2_2_98_1 – ident: e_1_2_2_53_1 doi: 10.1017/S0956796800000113 – ident: e_1_2_2_32_1 doi: 10.1145/1133651.1133653 – ident: e_1_2_2_65_1 doi: 10.1002/(SICI)1096-9942(199901/03)5:1<35::AID-TAPO4>3.0.CO;2-4 – volume-title: Advanced Topics in Types and Programming Languages, Benjamin C ident: e_1_2_2_80_1 – ident: e_1_2_2_77_1 doi: 10.1145/232627.232642 – ident: e_1_2_2_92_1 doi: 10.1109/TMSCS.2018.2791955 – ident: e_1_2_2_47_1 doi: 10.1145/357162.357169 – ident: e_1_2_2_27_1 doi: 10.1145/301631.301665 – volume-title: CIL: Intermediate language and tools for analysis and transformation of C programs year: 2002 ident: e_1_2_2_59_1 – ident: e_1_2_2_33_1 doi: 10.1145/2813885.2737979 – ident: e_1_2_2_1_1 – volume-title: Frama-c ident: e_1_2_2_16_1 – ident: e_1_2_2_96_1 – ident: e_1_2_2_102_1 doi: 10.3233/FI-1987-10202 – ident: e_1_2_2_40_1 doi: 10.1145/141478.141540 – volume: 32 volume-title: USENIX Security year: 2001 ident: e_1_2_2_46_1 – ident: e_1_2_2_62_1 doi: 10.1145/3022671.2983997 – ident: e_1_2_2_42_1 – ident: e_1_2_2_23_1 doi: 10.1145/231379.231389 – volume-title: PathCrawler: Automatic generation of path tests by combining static and dynamic analysis ident: e_1_2_2_104_1 – ident: e_1_2_2_8_1 doi: 10.1007/s10817-009-9148-3 – ident: e_1_2_2_66_1 doi: 10.1145/373243.360207 – ident: e_1_2_2_14_1 doi: 10.1145/381788.316183 – ident: e_1_2_2_25_1 doi: 10.1017/S0956796802004380 – ident: e_1_2_2_31_1 doi: 10.1145/1065010.1065036 – ident: e_1_2_2_13_1 doi: 10.1145/6041.6042 – ident: e_1_2_2_93_1 doi: 10.1145/237721.237727 – ident: e_1_2_2_67_1 doi: 10.1007/978-3-642-00722-4_9 – volume-title: Cyclone: A safe dialect year: 2002 ident: e_1_2_2_38_1 – volume-title: Schwartzbach year: 1991 ident: e_1_2_2_68_1 – ident: e_1_2_2_83_1 – volume-title: Well-typed programs can’t be blamed ident: e_1_2_2_100_1 – ident: e_1_2_2_30_1 doi: 10.1145/2568225.2568273 – volume-title: Victor Hugo Sperle Campos, and Fernando Magno Quintao Pereira year: 2013 ident: e_1_2_2_85_1 – ident: e_1_2_2_86_1 – ident: e_1_2_2_4_1 doi: 10.1007/978-3-319-94460-9_7 – ident: e_1_2_2_101_1 – ident: e_1_2_2_29_1 doi: 10.1145/2345156.2254103 – volume-title: Semantics of Data Types ident: e_1_2_2_12_1 – ident: e_1_2_2_10_1 |
SSID | ssj0001858 |
Score | 2.2982953 |
Snippet | 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.,... |
SourceID | crossref acm |
SourceType | Enrichment Source Index Database Publisher |
StartPage | 1 |
SubjectTerms | Compilers Constraints Formal language definitions General programming languages Language features Logic Parsers Parsing Program analysis Program constructs Program reasoning Semantics and reasoning Software and its engineering Software notations and tools Source code generation Syntax Theory of computation Type structures Type theory |
SubjectTermsDisplay | Software and its engineering -- Software notations and tools -- Compilers -- Parsers Software and its engineering -- Software notations and tools -- Compilers -- Source code generation Software and its engineering -- Software notations and tools -- Formal language definitions -- Syntax Software and its engineering -- Software notations and tools -- General programming languages -- Language features -- Constraints Theory of computation -- Logic -- Type theory Theory of computation -- Semantics and reasoning -- Program constructs -- Type structures Theory of computation -- Semantics and reasoning -- Program reasoning -- Parsing Theory of computation -- Semantics and reasoning -- Program reasoning -- Program analysis |
Subtitle | Applications to the Static Analysis of Incomplete Programs |
Title | Type Inference for C |
URI | https://dl.acm.org/doi/10.1145/3421472 |
Volume | 42 |
hasFullText | 1 |
inHoldings | 1 |
isFullTextHit | |
isPrint | |
link | http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwnV3NT9swFLdKuewC42NaYUw5TLtEyUjipPaxC-NjopOAInGr7NiWKq3NBOmFv37PsZ1aBYmPS1Qlflac9_r88_tE6FuiqoIKAv9vkQ0jLCmNCBYMTq0KpIUmArd1CsZ_ivNb_Psuv-v1Hv3skobH1eOzeSXv4SrcA77qLNk3cLabFG7Ab-AvXIHDcH0dj7X99MKl7LURg6WPNkflWPeAcA3BW8-ADciaaxOBM1aaOs0PXvHytiSv8cpcSqaLGoSTOCzjzj8z43JmUmSuawEn_Do86x6eLXUFi9YFnxkt9BNesAby8DRe6eJ7mKGFrtaWXYdjHfYXXi1ni8ZQ175RIvUDPKydssDRMTU5zbG0ujUnEc5NQ0SnfHHqCVnmadLE25JNk5anyh7ruhgZ1q2W0tV-5nz4a9tcF3xoUrHzqSXcQJspHDHSPtocnYwvb7p9HJAMMZXhzVJMyrUm_WFJNaKp5h6i8aDJ5CPasmeKYGQEZAf15GIXbbt-HYFV33toT8tL0MlLAPISlPvo9vTXpDyPbFeMiAEUa6KiokphnogikWIoqUwLrhgHGFrwNM9ywnglBIWXZyRJlAQMmiUcM6WGANYJyz6h_qJeyM8oIJJzgP-cwbYFjCGEVVQwzgsl1XGVDwdoF9Y3_WfqnrgPNkDf3XqnlS0kr_uZ_J2ufdkBCrqBbo61IQcvDzlEH1YS9gX1m_ulPAIg2PCvlmP_AXj8V4o |
linkProvider | EBSCOhost |
openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Type+Inference+for+C&rft.jtitle=ACM+transactions+on+programming+languages+and+systems&rft.au=Melo%2C+Leandro+T.+C.&rft.au=Ribeiro%2C+Rodrigo+G.&rft.au=Guimar%C3%A3es%2C+Breno+C.+F.&rft.au=Pereira%2C+Fernando+Magno+Quint%C3%A3o&rft.date=2020-12-01&rft.issn=0164-0925&rft.eissn=1558-4593&rft.volume=42&rft.issue=3&rft.spage=1&rft.epage=71&rft_id=info:doi/10.1145%2F3421472&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3421472 |
thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0164-0925&client=summon |
thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0164-0925&client=summon |
thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0164-0925&client=summon |