Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Software Correctness and Safety Research Laboratory (SCAS)
[go: Go Back, main page]

 
 
Software Correctness and Safety

The Software Correctness and Safety Research Laboratory studies the application of theorem proving and other related formal techniques to providing assurance that complex software systems work correctly and safely. We are affiliated with: Our current research includes the following projects.

Higher-Order Abstract Syntax and Induction

Logical frameworks supporting higher-order abstract syntax allow a direct and concise specification of a wide variety of logics, programming languages, and deductive systems. Programming with such specifications is well-supported by languages such as Lambda Prolog and Twelf. Reasoning about such specifications provides the opportunity to establish meta-theory of the encoded languages; it can be used, for example, to formalize the meta-theory of programming languages. Carrying out such reasoning within the same framework as the specifications, however, is well-known to be problematic. Our group is active in developing the Hybrid approach and tool [1, 2], which implements a definitional, multi-level approach [5] to such reasoning within the Isabelle and Coq proof assistants. In particular, we define higher-order syntax encodings on top of the base level so that they expand to a de Bruijn representation of terms, and provide a library of operations and lemmas to reason on the higher-order syntax which hide the details of the de Bruijn representation. We have also implemented a constructive version of Hybrid in Coq, which includes recursion principles that work directly on the higher-order syntax [4]. In addition, we have developed a generalized version where a large class of theorems that must be repeated for each object language in Hybrid is done once in the new version and can be applied directly to each object language [3].

Policy Compliance and Policy Verification

One kind of policy of interest are those which concern privacy protection defined as "the right of individuals to control the collection, use and dissemination of their personal information that is held by others" (Electronic Privacy Information Center). In our approach, users express their privacy policy as logical constraints and developers of data mining software provide proofs that their software respects these user-specified permissions [8, 9, 10] We have also recently formally verified an algorithm for detecting conflicts in firewall access rules [7]. We are working toward extending these results to more general policy languages like XACML (OASIS eXtensible Access Control Markup Language). This is joint work with several colleagues including Stan Matwin of the Text Analysis and Machine Learning (TAMALE) group.

    [7] Formal Correctness of Conflict Detection for Firewalls, by Venanzio Capretta, Bernard Stepien, Amy Felty, and Stan Matwin. In ACM Workshop on Formal Methods in Security Engineering, November 2007 (pdf, Coq formalization).

    [8] Privacy-Sensitive Information Flow with JML, by Guillaume Dufay, Amy Felty, and Stan Matwin. In Twentieth International Conference on Automated Deduction, Springer-Verlag LNCS, July 2005 (postscript).

    [9] Privacy in Data Mining Using Formal Methods, by Stan Matwin, Amy Felty, Istvan Hernadvolgyi, and Venanzio Capretta. In Seventh International Conference on Typed Lambda Calculi and Applications, Springer-Verlag LNCS 3461, April 2005 (postscript).

    [10] Privacy-Oriented Data Mining by Proof Checking, by Amy Felty and Stan Matwin In Sixth European Conference on Principles of Data Mining and Knowledge Discovery, Springer-Verlag LNCS 2431, August 2002 (postscript).

Proof-Carrying Code

Proof-carrying code (PCC) provides a mechanism for insuring that a host, or code consumer, can safely run code delivered by a code producer. The host specifies a safety policy as a set of axioms and inference rules. In addition to a compiled program, the code producer delivers a formal proof of safety expressed in terms of those rules that can be easily checked. The principle advantage is that the trusted computing base is extremely small; it includes only the proof checker for verifying the proof of safety. In addition, the safety properties of interest are much easier to prove automatically than general program correctness. Our current work is on foundational proof-carrying code [11, 14] which provides increased security by decreasing the size of the trusted computing base (TCB), and increased flexibility by allowing a single safety policy to be used for multiple programming languages and compilers. This work is in collaboration with Andrew Appel (Princeton University) and others. Our current work centers around two areas. First, we aim to scale up the approach to fully automate proofs of safety for full programming languages such as ML and Java. Second, we are designing a general environment for implementing foundational proof-carrying code systems [12, 13]. This work is part of a more general effort on the design and implementation of a system which provides a uniform framework for developing programming languages and proving properties about them, and for writing, interpreting, debugging, and proving properties of programs written in these languages.

    [11]Tutorial Examples of the Semantic Approach to Foundational Proof-Carrying Code, by Amy P. Felty. Fundamenta Informaticae, 7(4):303-330, 2007 (pdf).

    [12] Dependent Types Ensure Partial Correctness of Theorem Provers, by Andrew W. Appel and Amy P. Felty. Journal of Functional Programming, 14(1):3-19, January 2004 (postscript).

    [13] Polymorphic Lemmas and Definitions in Lambda Prolog and Twelf, by Andrew W. Appel and Amy P. Felty. Theory and Practice of Logic Programming, 4(1&2):1-39, January & March 2004 (postscript).

    [14] A Semantic Model of Types and Machine Instructions for Proof-Carrying Code, by Andrew W. Appel and Amy P. Felty. In The 27th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, January 2000 (postscript).

Feature Interaction

Telecommunications services are typically marketed to customers as groups of features such as call-waiting and call-forwarding. We have developed a formal feature specification language and a method of automatically detecting feature conflicts ("undesirable interactions") at the specification stage [15]. Early conflict detection can help prevent costly and time-consuming problem fixes during implementation. Features are specified in linear temporal logic; two features conflict essentially if their specifications are mutually inconsistent under axioms about the underlying system behavior. We have implemented a conflict detection tool that uses the a model-checker for the inconsistency check. We are working on a theorem proving approach to allow more general conflict tests [16].

Faculty:

  Amy Felty (SITE and Math)

Research Scientists:

  Bernard Stepien (SITE)

Ph.D. Students:

  Franck Binard (SITE)
Alan Martin (Math)
Bahman Sistany (SITE)

M.Sc. Students:

  Riley August (SITE)
Jiangong Weng (SITE)