{"date_published":"2021-06-18T00:00:00Z","citation":{"ama":"Sammler MJ, Lepigre R, Krebbers R, Memarian K, Dreyer D, Garg D. RefinedC: Automating the foundational verification of C code with refined ownership types. In: Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation. Association for Computing Machinery; 2021:158-174. doi:10.1145/3453483.3454036","short":"M.J. Sammler, R. Lepigre, R. Krebbers, K. Memarian, D. Dreyer, D. Garg, in:, Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, Association for Computing Machinery, 2021, pp. 158–174.","chicago":"Sammler, Michael Joachim, Rodolphe Lepigre, Robbert Krebbers, Kayvan Memarian, Derek Dreyer, and Deepak Garg. “RefinedC: Automating the Foundational Verification of C Code with Refined Ownership Types.” In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, 158–74. Association for Computing Machinery, 2021. https://doi.org/10.1145/3453483.3454036.","ista":"Sammler MJ, Lepigre R, Krebbers R, Memarian K, Dreyer D, Garg D. 2021. RefinedC: Automating the foundational verification of C code with refined ownership types. Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation. PLDI: Conference on Programming Language Design and Implementation, 158–174.","ieee":"M. J. Sammler, R. Lepigre, R. Krebbers, K. Memarian, D. Dreyer, and D. Garg, “RefinedC: Automating the foundational verification of C code with refined ownership types,” in Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, virtual, 2021, pp. 158–174.","apa":"Sammler, M. J., Lepigre, R., Krebbers, R., Memarian, K., Dreyer, D., & Garg, D. (2021). RefinedC: Automating the foundational verification of C code with refined ownership types. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (pp. 158–174). virtual: Association for Computing Machinery. https://doi.org/10.1145/3453483.3454036","mla":"Sammler, Michael Joachim, et al. “RefinedC: Automating the Foundational Verification of C Code with Refined Ownership Types.” Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, Association for Computing Machinery, 2021, pp. 158–74, doi:10.1145/3453483.3454036."},"publication_status":"published","status":"public","oa_version":"Published Version","doi":"10.1145/3453483.3454036","month":"06","author":[{"id":"510d3901-2a03-11ee-914d-d9ae9011f0a7","full_name":"Sammler, Michael Joachim","last_name":"Sammler","first_name":"Michael Joachim"},{"first_name":"Rodolphe","last_name":"Lepigre","full_name":"Lepigre, Rodolphe"},{"last_name":"Krebbers","first_name":"Robbert","full_name":"Krebbers, Robbert"},{"last_name":"Memarian","first_name":"Kayvan","full_name":"Memarian, Kayvan"},{"last_name":"Dreyer","first_name":"Derek","full_name":"Dreyer, Derek"},{"full_name":"Garg, Deepak","last_name":"Garg","first_name":"Deepak"}],"main_file_link":[{"open_access":"1","url":"https://doi.org/10.1145/3453483.3454036"}],"language":[{"iso":"eng"}],"publisher":"Association for Computing Machinery","publication":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","day":"18","abstract":[{"text":"Given the central role that C continues to play in systems software, and the difficulty of writing safe and correct C code, it remains a grand challenge to develop effective formal methods for verifying C programs. In this paper, we propose a new approach to this problem: a type system we call RefinedC, which combines ownership types (for modular reasoning about shared state and concurrency) with refinement types (for encoding precise invariants on C data types and Hoare-style specifications for C functions).\r\nRefinedC is both automated (requiring minimal user intervention) and foundational (producing a proof of program correctness in Coq), while at the same time handling a range of low-level programming idioms such as pointer arithmetic. In particular, following the approach of RustBelt, the soundness of the RefinedC type system is justified semantically by interpretation into the Coq-based Iris framework for higher-order concurrent separation logic. However, the typing rules of RefinedC are also designed to be encodable in a new “separation logic programming” language we call Lithium. By restricting to a carefully chosen (yet expressive) fragment of separation logic, Lithium supports predictable, automatic, goal-directed proof search without backtracking. We demonstrate the effectiveness of RefinedC on a range of representative examples of C code.","lang":"eng"}],"date_updated":"2024-09-10T11:54:22Z","_id":"17505","article_processing_charge":"No","title":"RefinedC: Automating the foundational verification of C code with refined ownership types","user_id":"317138e5-6ab7-11ef-aa6d-ffef3953e345","type":"conference","date_created":"2024-09-05T08:34:50Z","extern":"1","scopus_import":"1","year":"2021","quality_controlled":"1","page":"158-174","oa":1,"conference":{"location":"virtual","name":"PLDI: Conference on Programming Language Design and Implementation","start_date":"2021-06-20","end_date":"2021-06-25"}}