M. Hofmann, Wolfgang Naraschewski, M. Steffen, T. Stroup
{"title":"证明的继承","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":"{\"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}","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}
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