@INPROCEEDINGS{hamid04:rtpcc, AUTHOR = {Nadeem Abdul Hamid and Zhong Shao}, TITLE = {Interfacing Hoare Logic and Type Systems for Foundational Proof-Carrying Code}, BOOKTITLE = {Proceedings 17th International Conference on Theorem Proving in Higher Order Logics (TPHOLs 2004)}, PUBLISHER = {Springer}, SERIES = {LNCS}, VOLUME = {3223}, MONTH = SEP, YEAR = 2004, LOCATION = {Park City, Utah}, PAGES = {118--135}, PS = {rtpcc.ps.gz}, PDF = {rtpcc.pdf}, URL = {http://www.springerlink.com/link.asp?id=ybrk3xcg1nky0mrl}, COQ = {rtpcc.coq.tar.gz}, NOTE = {(c) 2004 Springer}, ABSTRACT = {In this paper, we introduce a Foundational Proof-Carrying Code (FPCC) framework for constructing certified code packages from typed assembly language that will interface with a similarly certified runtime system. Our framework permits the typed assembly language to have a ``foreign function'' interface, in which stubs, initially provided when the program is being written, are eventually compiled and linked to code that may have been written in a language with a different type system, or even certified directly in the FPCC logic using a proof assistant. We have increased the potential scalability and flexibility of our FPCC system by providing a way to integrate programs compiled from different source type systems. In the process, we are explicitly manipulating the interface between Hoare logic and a syntactic type system. To our knowledge, this is the first account of combining such certification proofs from languages at different levels of abstraction. While type systems such as TAL facilitate reasoning about many programs, they are not sufficient for certifying the most low-level system libraries. Hoare logic-style reasoning, on the other hand, can handle low-level details very well but cannot account for embedded code pointers in data structures, a feature common to higher-order and object-oriented programming. We outline for the first time a way to allow both methods of verification to interact, gaining the advantages of both and circumventing their shortcomings.} }
@INPROCEEDINGS{hamid02:safpcc, AUTHOR = {Nadeem Abdul Hamid and Zhong Shao and Valery Trifonov and Stefan Monnier and Zhaozhong Ni}, TITLE = {A Syntactic Approach to Foundational Proof-Carrying Code}, BOOKTITLE = {Proceedings 17th Annual IEEE Symposium on Logic In Computer Science (LICS'02)}, PUBLISHER = {IEEE}, MONTH = JUL, YEAR = 2002, LOCATION = {Copenhagen, Denmark}, PAGES = {89--100}, PS = {safpcc.ps.gz}, PDF = {safpcc.pdf}, COQ = {safpcc.coq.tar.gz}, NOTE = {(c) 2002 IEEE}, ABSTRACT = { Proof-Carrying Code (PCC) is a general framework for verifying the safety properties of machine-language programs. PCC proofs are usually written in a logic extended with language-specific typing rules. In Foundational Proof-Carrying Code (FPCC), on the other hand, proofs are constructed and verified using strictly the foundations of mathematical logic, with no type-specific axioms. FPCC is more flexible and secure because it is not tied to any particular type system and it has a smaller trusted base. Foundational proofs, however, are much harder to construct. Previous efforts on FPCC all required building sophisticated semantic models for types. In this paper, we present a syntactic approach to FPCC that avoids the difficulties of previous work. Under our new scheme, the foundational proof for a typed machine program simply consists of the typing derivation plus the formalized syntactic soundness proof for the underlying type system. We give a translation from a typed assembly language into FPCC and demonstrate the advantages of our new system via an implementation in the Coq proof assistant. } }
@ARTICLE{hamid03:safpcc, AUTHOR = {Nadeem Abdul Hamid and Zhong Shao and Valery Trifonov and Stefan Monnier and Zhaozhong Ni}, TITLE = {A Syntactic Approach to Foundational Proof Carrying-Code}, JOURNAL = {Journal of Automated Reasoning (Special issue on Proof-Carrying Code)}, VOLUME = {31}, NUMBER = {3-4}, MONTH = DEC, YEAR = 2003, PAGES = {191--229}, PS = {safpccjar.ps.gz}, PDF = {safpccjar.pdf}, COQ = {safpcc.coq.tar.gz}, NOTE = {(c) 2003 Kluwer Academic Publishers}, ABSTRACT = { Proof-Carrying Code (PCC) is a general framework for verifying the safety properties of machine-language programs. PCC proofs are usually written in a logic extended with language-specific typing rules; they certify safety but only if there is no bug in the typing rules. In Foundational Proof-Carrying Code (FPCC), on the other hand, proofs are constructed and verified using strictly the foundations of mathematical logic, with no type-specific axioms. FPCC is more flexible and secure because it is not tied to any particular type system and it has a smaller trusted base. Foundational proofs, however, are much harder to construct. Previous efforts on FPCC all required building sophisticated semantic models for types. Furthermore, none of them can be easily extended to support mutable fields and higher-order polymorphism. In this article, we present a syntactic approach to FPCC that avoids all of these difficulties. Under our new scheme, the foundational proof for a typed machine program simply consists of the typing derivation plus the formalized syntactic soundness proof for the underlying type system. The former can be readily obtained from a type-checker while the latter is known to be much easier to construct than the semantic soundness proofs. We give a translation from a typed assembly language into FPCC and demonstrate the advantages of our new system via an implementation in the Coq proof assistant. } }
@INPROCEEDINGS{yu03:cdsa, AUTHOR = {Dachuan Yu and Nadeem Abdul Hamid and Zhong Shao}, TITLE = {Building Certified Libraries for {PCC}: Dynamic Storage Allocation}, BOOKTITLE = {Proceedings 12th European Symposium on Programming (ESOP 2003)}, PUBLISHER = {Springer}, SERIES = {LNCS}, VOLUME = {2618}, MONTH = APR, YEAR = 2003, LOCATION = {Warsaw, Poland}, PAGES = {363--379}, PS = {cdsa.ps.gz}, PDF = {cdsa.pdf}, COQ = {cdsacode.tar.gz}, NOTE = {(c) 2003 Springer}, ABSTRACT = { Proof-Carrying Code (PCC) allows a code producer to provide to a host a program along with its formal safety proof. The proof attests a certain safety policy enforced by the code, and can be mechanically checked by the host. While this language-based approach to code certification is very general in principle, existing PCC systems have only focused on programs whose safety proofs can be automatically generated. As a result, many low-level system libraries (e.g., memory management) have not yet been handled. In this paper, we explore a complementary approach in which general properties and program correctness are semi-automatically certified. In particular, we introduce a low-level language CAP for building certified programs and present a certified library for dynamic storage allocation.} }
@TECHREPORT{yu03:cdsatr, AUTHOR = {Dachuan Yu and Nadeem Abdul Hamid and Zhong Shao}, TITLE = {Building Certified Libraries for {PCC}: Dynamic Storage Allocation}, INSTITUTION = {Dept. of Computer Science, Yale University}, ADDRESS = {New Haven, CT}, NUMBER = {YALEU/DCS/TR-1247}, MONTH = MAY, YEAR = 2003, PS = {cdsatr.ps.gz}, PDF = {cdsatr.pdf}, COQ = {cdsacode.tar.gz}, ABSTRACT = { Proof-Carrying Code (PCC) allows a code producer to provide to a host a program along with its formal safety proof. The proof attests a certain safety policy enforced by the code, and can be mechanically checked by the host. While this language-based approach to code certification is very general in principle, existing PCC systems have only focused on programs whose safety proofs can be automatically generated. As a result, many low-level system libraries (e.g., memory management) have not yet been handled. In this paper, we explore a complementary approach in which general properties and program correctness are semi-automatically certified. In particular, we introduce a low-level language CAP for building certified programs and present a certified library for dynamic storage allocation.} }
@ARTICLE{yu04:cdsa-scp, AUTHOR = {Dachuan Yu and Nadeem Abdul Hamid and Zhong Shao}, TITLE = {Building Certified Libraries for {PCC}: Dynamic Storage Allocation}, JOURNAL = {Science of Computer Programming}, VOLUME = 50, NUMBER = {1-3}, MONTH = MAR, YEAR = 2004, PAGES = {101--127}, NOTE = {(c) 2004 Elsevier}, PDF = {cdsa-scp.pdf}, COQ = {cdsacode.tar.gz}, ABSTRACT = { Proof-Carrying Code (PCC) allows a code producer to provide to a host a program along with its formal safety proof. The proof attests to a certain safety policy enforced by the code, and can be mechanically checked by the host. While this language-based approach to code certification is very general in principle, existing PCC systems have only focused on programs whose safety proofs can be automatically generated. As a result, many low-level system libraries (e.g., memory management) have not yet been handled. In this paper, we explore a complementary approach in which general properties and program correctness are semi-automatically certified. In particular, we introduce a low-level language, CAP, for building certified programs and present a certified library for dynamic storage allocation. } }
@PHDTHESIS{hamid05:phd, AUTHOR = {Nadeem Abdul Hamid}, TITLE = {A Syntactic Approach to Foundational Proof-Carrying Code}, SCHOOL = {Yale University}, YEAR = 2005, MONTH = MAY, ADDRESS = {New Haven, CT}, PS = {nadeem-thesis-11_12.ps.gz}, PDF = {nadeem-thesis-11_12.pdf}, NOTE = {Draft version Nov 2004} }
@INPROCEEDINGS{hamid05:rgn-acmse, AUTHOR = {Nadeem Abdul Hamid}, TITLE = {Certified Memory Management for Proof-Carrying Code: A Region-Based Type System and Runtime Library (Extended Abstract)}, BOOKTITLE = {43rd ACM Southeast Conference}, MONTH = MAR, YEAR = 2005, LOCATION = {Kennesaw, Georgia}, NOTE = {(Poster presentation)}, PDF = {rgnacmse.pdf} }
This file has been generated by bibtex2html 1.77