Results 1  10
of
587
Dependent Types in Practical Programming
 In Proceedings of ACM SIGPLAN Symposium on Principles of Programming Languages
, 1998
"... Programming is a notoriously errorprone process, and a great deal of evidence in practice has demonstrated that the use of a type system in a programming language can effectively detect program errors at compiletime. Moreover, some recent studies have indicated that the use of types can lead to si ..."
Abstract

Cited by 341 (38 self)
 Add to MetaCart
Programming is a notoriously errorprone process, and a great deal of evidence in practice has demonstrated that the use of a type system in a programming language can effectively detect program errors at compiletime. Moreover, some recent studies have indicated that the use of types can lead to significant enhancement of program performance at runtime. For the sake of practicality of typechecking, most type systems developed for general purpose programming languages tend to be simple and coarse, and this leaves ample room for improvement. As an advocate of types, this thesis addresses the issue of designing a type system for practical programming in which a notion of dependent types is available, leading to more accurate capture of program invariants with types. In contrast to developing a type theory with dependent types and then designing upon it a functional programming language, we study practical methods for extending the type systems of existing programming languages with dep...
Analyzing tabular and statetransition requirements specifications in PVS
, 1997
"... We describe PVS's capabilities for representing tabular specifications of the kind advocated by Parnas and others, and show how PVS's Type Correctness Conditions (TCCs) are used to ensure certain wellformedness properties. We then show how these and other capabilities of PVS can be used t ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
We describe PVS's capabilities for representing tabular specifications of the kind advocated by Parnas and others, and show how PVS's Type Correctness Conditions (TCCs) are used to ensure certain wellformedness properties. We then show how these and other capabilities of PVS can be used
A PVS based Tool for Developing Programs in the Refinement Calculus
, 1996
"... ion Command ~a... !!!" ) ;;  STRATEGY (internal)  ;;  prove the monotonicity of a representation command ;;  !com? must be in internal representation ;;  ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
ion Command ~a... !!!" ) ;;  STRATEGY (internal)  ;;  prove the monotonicity of a representation command ;;  !com? must be in internal representation ;;  (defstep rcprovereprmono (com) (let ( (r (format nil "~A" (args1 com))) (tc (format nil "~A" (car (types (domain (domain (type com))))))) (ta (format nil "~A" (car (types (domain (range (type com))))))) (tg (format nil "~A" (cadr (types (domain (range (type com))))))) (inst (concatenate 'string "reprmono[" tg "," ta "," tc "]")) ) (then@ (lemma inst) (instantiate 1 (r)) ) ) "This strategy should not be called by the user. Use PROVEMONO instead." "RCI: ??? Proving Monotonicity of Representation Command ~a... !!!" ) ;;  STRATEGY (internal)  ;;  prove the monotonicity of !com? and add a corresponding antecedent formula ;;  the...
Compiling with Proofs
, 1998
"... One of the major challenges of building software systems is to ensure that the various components fit together in a welldefined manner. This problem is exacerbated by the recent advent of software components whose origin is unknown or inherently untrusted, such as mobile code or user extensions ..."
Abstract

Cited by 152 (9 self)
 Add to MetaCart
One of the major challenges of building software systems is to ensure that the various components fit together in a welldefined manner. This problem is exacerbated by the recent advent of software components whose origin is unknown or inherently untrusted, such as mobile code or user extensions for operatingsystem kernels or database servers. Such extensions are useful for implementing an e#cient interaction model between a client and a server because several data exchanges between them can be saved at the cost of a single code exchange. In this dissertation, I propose to tackle such system integrity and security problems with techniques from mathematical logic and programminglanguage semantics. I propose a framework, called proofcarrying code, in which the extension provider sends along with the extension code a representation of a formal proof that the code meets certain safety and correctness requirements. Then, the code receiver can ensure the safety of executing the...
Specifying and Verifying Data Models in PVS: Preliminary Explorations using a Text Book Example........................................ 1
, 2007
"... ..."
Efficient Model Checking Using Tabled Resolution
 Computer Aided Verification (CAV '97)
, 1997
"... We demonstrate the feasibility of using the XSB tabled logic programming system as a programmable fixedpoint engine for implementing efficient local model checkers. In particular, we present XMC, an XSBbased local model checker for a CCSlike valuepassing language and the alternationfree fragmen ..."
Abstract

Cited by 130 (35 self)
 Add to MetaCart
We demonstrate the feasibility of using the XSB tabled logic programming system as a programmable fixedpoint engine for implementing efficient local model checkers. In particular, we present XMC, an XSBbased local model checker for a CCSlike valuepassing language and the alternationfree fragment of the modal mucalculus. XMC is written in under 200 lines of XSB code, which constitute a declarative specification of CCS and the modal mucalculus at the level of semantic equations. In order to gauge the performance of XMC as an algorithmic model checker, we conducted a series of benchmarking experiments designed to compare the performance of XMC with the local model checkers implemented in C/C++ in the Concurrency Factory and SPIN specification and verification environments. After applying certain newly developed logicprogrammingbased optimizations (along with some standard ones), XMC's performance became extremely competitive with that of the Factory and shows promise in its comparison with SPIN.
Engineering formal metatheory
 In ACM SIGPLANSIGACT Symposium on Principles of Programming Languages
, 2008
"... Machinechecked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proofcarrying code. However, constructing these proofs remains a black art, involving many choices in th ..."
Abstract

Cited by 116 (11 self)
 Add to MetaCart
Machinechecked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proofcarrying code. However, constructing these proofs remains a black art, involving many choices in the formulation of definitions and theorems that make a huge cumulative difference in the difficulty of carrying out large formal developments. The representation and manipulation of terms with variable binding is a key issue. We propose a novel style for formalizing metatheory, combining locally nameless representation of terms and cofinite quantification of free variable names in inductive definitions of relations on terms (typing, reduction,...). The key technical insight is that our use of cofinite quantification obviates the need for reasoning about equivariance (the fact that free names can be renamed in derivations); in particular, the structural induction principles of relations
Theorem Proving with the Real Numbers
, 1996
"... This thesis discusses the use of the real numbers in theorem proving. Typically, theorem provers only support a few `discrete' datatypes such as the natural numbers. However the availability of the real numbers opens up many interesting and important application areas, such as the verification ..."
Abstract

Cited by 116 (14 self)
 Add to MetaCart
This thesis discusses the use of the real numbers in theorem proving. Typically, theorem provers only support a few `discrete' datatypes such as the natural numbers. However the availability of the real numbers opens up many interesting and important application areas, such as the verification of floating point hardware and hybrid systems. It also allows the formalization of many more branches of classical mathematics, which is particularly relevant for attempts to inject more rigour into computer algebra systems. Our work is conducted in a version of the HOL theorem prover. We describe the rigorous definitional construction of the real numbers, using a new version of Cantor's method, and the formalization of a significant portion of real analysis. We also describe an advanced derived decision procedure for the `Tarski subset' of real algebra as well as some more modest but practically useful tools for automating explicit calculations and routine linear arithmetic reasoning. Finally,...
Formal verification in hardware design: A survey
, 1997
"... In recent years, formal methods have emerged as an alternative approach to ensuring the quality and correctness of hardware designs, overcoming some of the limitations of traditional validation techniques such as simulation and testing. There are two main aspects to the application of formal methods ..."
Abstract

Cited by 110 (0 self)
 Add to MetaCart
In recent years, formal methods have emerged as an alternative approach to ensuring the quality and correctness of hardware designs, overcoming some of the limitations of traditional validation techniques such as simulation and testing. There are two main aspects to the application of formal methods in a design process: The formal framework used to specify desired properties of a design, and the verification techniques and tools used to reason about the relationship between a specification and a corresponding implementation. We survey a variety of frameworks and techniques which have been proposed in the literature and applied to actual designs. The specification frameworks we describe include temporal logics, predicate logic, abstraction and refinement, as well as containment between!regular languages. The verification techniques presented include model checking, automatatheoretic techniques, automated theorem proving, and approaches that integrate the above methods.
Heuristic search planning with BDDs
 In ECAIWorkshop: PuK
, 2000
"... Abstract. In this paper we study traditional and enhanced BDDbased exploration procedures capable of handling large planning problems. On the one hand, reachability analysis and model checking have eventually approached AIPlanning. Unfortunately, they typically rely on uninformed blind search. On t ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
Abstract. In this paper we study traditional and enhanced BDDbased exploration procedures capable of handling large planning problems. On the one hand, reachability analysis and model checking have eventually approached AIPlanning. Unfortunately, they typically rely on uninformed blind search
Results 1  10
of
587