27 research outputs found
A list-machine benchmark for mechanized metatheory
International audienceWe propose a benchmark to compare theorem-proving systems on their ability to express proofs of compiler correctness. In contrast to the first POPLmark, we emphasize the connection of proofs to compiler implementations, and we point out that much can be done without binders or alpha-conversion. We propose specific criteria for evaluating the utility of mechanized metatheory systems; we have constructed solutions in both Coq and Twelf metatheory, and we draw conclusions about those two systems in particular
Functions-as-Constructors Higher-Order Unification
Unification is a central operation in the construction of a range of
computational logic systems based on first-order and higher-order
logics. First-order unification has a number of properties that
dominates the way it is incorporated within such systems. In
particular, first-order unification is decidable, unary, and can be
performed on untyped term structures. None of these three properties
hold for full higher-order unification: unification is undecidable,
unifiers can be incomparable, and term-level typing can dominate the
search for unifiers. The so-called pattern subset of
higher-order unification was designed to be a small extension to
first-order unification that respected the basic laws governing
lambda-binding (the equalities of alpha, beta, and
eta-conversion) but which also satisfied those three properties.
While the pattern fragment of higher-order unification has been
popular in various implemented systems and in various theoretical
considerations, it is too weak for a number of applications. In this
paper, we define an extension of pattern unification that is motivated
by some existing applications and which satisfies these three
properties. The main idea behind this extension is that the arguments
to a higher-order, free variable can be more than just distinct bound
variables: they can also be terms constructed from (sufficient numbers
of) such variables using term constructors and where no argument is a
subterm of any other argument. We show that this extension to pattern
unification satisfies the three properties mentioned above
Hybrid - a definitional two-level approach to reasoning with higher-order abstract syntax
Combining higher-order abstract syntax and (co)-induction in a logical
framework is well known to be problematic.We describe the theory and the practice
of a tool called Hybrid, within Isabelle/HOL and Coq, which aims to address many
of these difficulties. It allows object logics to be represented using higher-order
abstract syntax, and reasoned about using tactical theorem proving and principles
of (co)induction. Moreover, it is definitional, which guarantees consistency within
a classical type theory. The idea is to have a de Bruijn representation of \u3bb-terms
providing a definitional layer that allows the user to represent object languages using
higher-order abstract syntax, while offering tools for reasoning about them at the
higher level. In this paper we describe how to use Hybrid in a multi-level reasoning
fashion, similar in spirit to other systems such as Twelf and Abella. By explicitly
referencing provability in a middle layer called a specification logic, we solve the
problem of reasoning by (co)induction in the presence of non-stratifiable hypothetical
judgments, which allow very elegant and succinct specifications of object logic
inference rules. We first demonstrate the method on a simple example, formally
proving type soundness (subject reduction) for a fragment of a pure functional
language, using a minimal intuitionistic logic as the specification logic. We then
prove an analogous result for a continuation-machine presentation of the operational semantics of the same language, encoded this time in an ordered linear logic that
serves as the specification layer. This example demonstrates the ease with which
we can incorporate new specification logics, and also illustrates a significantly more
complex object logic whose encoding is elegantly expressed using features of the new
specification logic
A Framework for Specifying, Prototyping, and Reasoning about Computational Systems
This thesis concerns the development of a framework that facilitates the
design and analysis of formal systems. Specifically, this framework provides a
specification language which supports the concise and direct description of
formal systems, a mechanism for animating the specification language thereby
producing prototypes of encoded systems, and a logic for proving properties of
specifications and therefore of the systems they encode. A defining
characteristic of the proposed framework is that it is based on two separate
but closely intertwined logics: a specification logic that facilitates the
description of computational structure and another logic that exploits the
special characteristics of the specification logic to support reasoning about
the computational behavior of systems that are described using it. Both logics
embody a natural treatment of binding structure by using the lambda-calculus as
a means for representing objects and by incorporating special mechanisms for
working with such structure. By using this technique, they lift the treatment
of binding from the object language into the domain of the relevant meta logic,
thereby allowing the specification or analysis components to focus on the more
essential logical aspects of the systems that are encoded. The primary
contributions of these thesis are the development of a rich meta-logic called G
with capabilities for sophisticated reasoning that includes induction and
co-induction over high-level specifications of computations and with an
associated cut-elimination result; an interactive reasoning system called
Abella based on G; and several reasoning examples which demonstrate the
expressiveness and naturalness of both G and Abella.Comment: PhD Thesis submitted September, 200
Nonfree datatypes in Isabelle/HOL: animating a many-sorted metatheory
Datatypes freely generated by their constructors are well supported in mainstream proof assistants. Algebraic specification languages offer more expressive datatypes on axiomatic means: nonfree datatypes generated from constructors modulo equations. We have implemented an Isabelle/HOL package for nonfree datatypes, without compromising foundations. The use of the package, and its nonfree iterator in particular, is illustrated with examples: bags, polynomials and λ-terms modulo α-equivalence. The many-sorted metatheory of nonfree datatypes is formalized as an ordinary Isabelle theory and is animated by the package into user-specified instances. HOL lacks a type of types, so we employ an ad hoc construction of a universe embedding the relevant parameter types
Formally Verified Bug-free Implementations of (Logical) Algorithms
Notwithstanding the advancements of formal methods, which already permit their adoption
in a industrial context (consider, for instance, the notorious examples of Airbus,
Amazon Web-Services, Facebook, or Intel), there is still no widespread endorsement.
Namely, in the Portuguese case, it is seldom the case companies use them consistently,
systematically, or both. One possible reason is the still low emphasis placed by academic
institutions on formal methods (broadly consider as developments methodologies, verification,
and tests), making their use a challenge for the current practitioners.
Formal methods build on logics, “the calculus of Computer Science”. Computational
Logic is thus an essential field of Computer Science. Courses on this subject are usually
either too informal (only providing pseudo-code specifications) or too formal (only presenting
rigorous mathematical definitions) when describing algorithms. In either case,
there is an emphasis on paper-and-pencil definitions and proofs rather than on computational
approaches. It is scarcely the case where these courses provide executable code,
even if the pedagogical advantages of using tools is well know.
In this dissertation, we present an approach to develop formally verified implementations
of classical Computational Logic algorithms. We choose the Why3 platform as it
allows one to implement functions with very similar characteristics to the mathematical
definitions, as well as it concedes a high degree of automation in the verification process.
As proofs of concept, we implement and show correct the conversion algorithms from
propositional formulae to conjunctive normal form and from this form to Horn clauses