13 research outputs found
TWAM: A Certifying Abstract Machine for Logic Programs
Type-preserving (or typed) compilation uses typing derivations to certify
correctness properties of compilation. We have designed and implemented a
type-preserving compiler for a simply-typed dialect of Prolog we call T-Prolog.
The crux of our approach is a new certifying abstract machine which we call the
Typed Warren Abstract Machine (TWAM). The TWAM has a dependent type system
strong enough to specify the semantics of a logic program in the logical
framework LF. We present a soundness metatheorem which constitutes a partial
correctness guarantee: well-typed programs implement the logic program
specified by their type. This metatheorem justifies our design and
implementation of a certifying compiler from T-Prolog to TWAM.Comment: 41 pages, under submission to ACM Transactions on Computational Logi
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
Refinement Types for Logical Frameworks and Their Interpretation as Proof Irrelevance
Refinement types sharpen systems of simple and dependent types by offering
expressive means to more precisely classify well-typed terms. We present a
system of refinement types for LF in the style of recent formulations where
only canonical forms are well-typed. Both the usual LF rules and the rules for
type refinements are bidirectional, leading to a straightforward proof of
decidability of typechecking even in the presence of intersection types.
Because we insist on canonical forms, structural rules for subtyping can now be
derived rather than being assumed as primitive. We illustrate the expressive
power of our system with examples and validate its design by demonstrating a
precise correspondence with traditional presentations of subtyping. Proof
irrelevance provides a mechanism for selectively hiding the identities of terms
in type theories. We show that LF refinement types can be interpreted as
predicates using proof irrelevance, establishing a uniform relationship between
two previously studied concepts in type theory. The interpretation and its
correctness proof are surprisingly complex, lending support to the claim that
refinement types are a fundamental construct rather than just a convenient
surface syntax for certain uses of proof irrelevance
Foundational certified code in the Twelf metalogical framework
Foundational certified code systems seek to prove untrusted programs to be safe relative to safety policies given in terms of actual machine architectures, thereby improving the systems' flexibility and extensibility. Using the Twelf metalogical framework, we have constructed a safety policy for the IA-32 architecture with a trusted runtime library. The safety policy is based on a formalized operational semantics. We have also developed a complete, foundational proof that a fully expressive typed assembly language satisfies that safety policy.</p
Foundational Certified Code in the Twelf Metalogical Framework
Foundational certified code systems seek to prove untrusted programs to be safe relative to safety policies given in terms of actual machine architectures, thereby improving the systems ’ flexibility and extensibility. Using the Twelf metalogical framework, we have constructed a safety policy for the IA-32 architecture with a trusted runtime library. The safety policy is based on a formalized operational semantics. We have also developed a complete, foundational proof that a fully expressive typed assembly language satisfies that safety policy
Automated Deduction – CADE 28
This open access book constitutes the proceeding of the 28th International Conference on Automated Deduction, CADE 28, held virtually in July 2021. The 29 full papers and 7 system descriptions presented together with 2 invited papers were carefully reviewed and selected from 76 submissions. CADE is the major forum for the presentation of research in all aspects of automated deduction, including foundations, applications, implementations, and practical experience. The papers are organized in the following topics: Logical foundations; theory and principles; implementation and application; ATP and AI; and system descriptions