M. Hofmann, Wolfgang Naraschewski, M. Steffen, T. Stroup
{"title":"Inheritance of Proofs","authors":"M. Hofmann, Wolfgang Naraschewski, M. Steffen, T. Stroup","doi":"10.1002/(SICI)1096-9942(1998)4:1<51::AID-TAPO4>3.0.CO;2-A","DOIUrl":null,"url":null,"abstract":"The Curry-Howard isomorphism, a fundamental property shared by many type theories, establishes a direct correspondence between programs and proofs. This suggests that the same structuring principles that ease programming be used to simplify proving as well. To exploit object-oriented structuring mechanisms for veriication, we extend the object-model of Pierce and Turner, based on the higher-order typed-calculus F ! , with a logical component. By enriching the (functional) signature of objects with a speciication, the methods and their correctness proofs are packed together in the objects. The uniform treatment of methods and proofs gives rise in a natural way to object-oriented proving principles | including inheritance of proofs, late binding of proofs, and encapsulation of proofs | as analogues to object-oriented programming principles. We have used Lego, a type-theoretic proof checker, to explore the feasibility of this approach. In particular, we have veriied a small hierarchy of classes. 1. Introduction Many programming languages have been developed to ease modular and structured design of programs. The popularity of powerful structuring techniques, including object-oriented ones, is a convincing argument that those mechanisms support the programming task. Depending on the programming style, they cater to divide-and-conquer strategies for breaking down large programs into abstract data types, modules, objects, or similar. Since the resulting components ideally mirror the decomposition of the problem into conceptually","PeriodicalId":293061,"journal":{"name":"Theory Pract. Object Syst.","volume":"4 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"11","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Theory Pract. Object Syst.","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1002/(SICI)1096-9942(1998)4:1<51::AID-TAPO4>3.0.CO;2-A","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 11
Abstract
The Curry-Howard isomorphism, a fundamental property shared by many type theories, establishes a direct correspondence between programs and proofs. This suggests that the same structuring principles that ease programming be used to simplify proving as well. To exploit object-oriented structuring mechanisms for veriication, we extend the object-model of Pierce and Turner, based on the higher-order typed-calculus F ! , with a logical component. By enriching the (functional) signature of objects with a speciication, the methods and their correctness proofs are packed together in the objects. The uniform treatment of methods and proofs gives rise in a natural way to object-oriented proving principles | including inheritance of proofs, late binding of proofs, and encapsulation of proofs | as analogues to object-oriented programming principles. We have used Lego, a type-theoretic proof checker, to explore the feasibility of this approach. In particular, we have veriied a small hierarchy of classes. 1. Introduction Many programming languages have been developed to ease modular and structured design of programs. The popularity of powerful structuring techniques, including object-oriented ones, is a convincing argument that those mechanisms support the programming task. Depending on the programming style, they cater to divide-and-conquer strategies for breaking down large programs into abstract data types, modules, objects, or similar. Since the resulting components ideally mirror the decomposition of the problem into conceptually