5,003 research outputs found
A Comparative Study of Coq and HOL
This paper illustrates the differences between the style of theory mechanisation of Coq and of HOL. This comparative study is based on the mechanisation of fragments of the theory of computation in these systems. Examples from these implementations are given to support some of the arguments discussed in this paper. The mechanisms for specifying definitions and for theorem proving are discussed separately, building in parallel two pictures of the different approaches of mechanisation given by these systems
Research in mathematical theory of computation
Research progress in the following areas is reviewed: (1) new version of computer program LCF (logic for computable functions) including a facility to search for proofs automatically; (2) the description of the language PASCAL in terms of both LCF and in first order logic; (3) discussion of LISP semantics in LCF and attempt to prove the correctness of the London compilers in a formal way; (4) design of both special purpose and domain independent proving procedures specifically program correctness in mind; (5) design of languages for describing such proof procedures; and (6) the embedding of ideas in the first order checker
Recursive Program Optimization Through Inductive Synthesis Proof Transformation
The research described in this paper involved developing transformation techniques which increase the efficiency of the noriginal program, the source, by transforming its synthesis proof into one, the target, which yields a computationally more efficient algorithm. We describe a working proof transformation system which, by exploiting the duality between mathematical induction and recursion, employs the novel strategy of optimizing recursive programs by transforming inductive proofs. We compare and contrast this approach with the more traditional approaches to program transformation, and highlight the benefits of proof transformation with regards to search, correctness, automatability and generality
Constrained Query Answering
Traditional answering methods evaluate queries only against positive
and definite knowledge expressed by means of facts and deduction rules. They do
not make use of negative, disjunctive or existential information. Negative or indefinite
knowledge is however often available in knowledge base systems, either as
design requirements, or as observed properties. Such knowledge can serve to rule out
unproductive subexpressions during query answering. In this article, we propose an
approach for constraining any conventional query answering procedure with general,
possibly negative or indefinite formulas, so as to discard impossible cases and to
avoid redundant evaluations. This approach does not impose additional conditions
on the positive and definite knowledge, nor does it assume any particular semantics
for negation. It adopts that of the conventional query answering procedure it
constrains. This is achieved by relying on meta-interpretation for specifying the
constraining process. The soundness, completeness, and termination of the underlying
query answering procedure are not compromised. Constrained query answering
can be applied for answering queries more efficiently as well as for generating more
informative, intensional answers
A Step-indexed Semantics of Imperative Objects
Step-indexed semantic interpretations of types were proposed as an
alternative to purely syntactic proofs of type safety using subject reduction.
The types are interpreted as sets of values indexed by the number of
computation steps for which these values are guaranteed to behave like proper
elements of the type. Building on work by Ahmed, Appel and others, we introduce
a step-indexed semantics for the imperative object calculus of Abadi and
Cardelli. Providing a semantic account of this calculus using more
`traditional', domain-theoretic approaches has proved challenging due to the
combination of dynamically allocated objects, higher-order store, and an
expressive type system. Here we show that, using step-indexing, one can
interpret a rich type discipline with object types, subtyping, recursive and
bounded quantified types in the presence of state
Logic Programming as Constructivism
The features of logic programming that
seem unconventional from the viewpoint of classical logic
can be explained in terms of constructivistic logic. We
motivate and propose a constructivistic proof theory of
non-Horn logic programming. Then, we apply this formalization
for establishing results of practical interest.
First, we show that 'stratification can be motivated in a
simple and intuitive way. Relying on similar motivations,
we introduce the larger classes of 'loosely stratified' and
'constructively consistent' programs. Second, we give a
formal basis for introducing quantifiers into queries and
logic programs by defining 'constructively domain
independent* formulas. Third, we extend the Generalized
Magic Sets procedure to loosely stratified and constructively
consistent programs, by relying on a 'conditional
fixpoini procedure
- ā¦