  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.
