17,820 research outputs found
Adventures in Formalisation: Financial Contracts, Modules, and Two-Level Type Theory
We present three projects concerned with applications of proof assistants in
the area of programming language theory and mathematics. The first project is
about a certified compilation technique for a domain-specific programming
language for financial contracts (the CL language). The code in CL is
translated into a simple expression language well-suited for integration with
software components implementing Monte Carlo simulation techniques (pricing
engines). The compilation procedure is accompanied with formal proofs of
correctness carried out in Coq. The second project presents techniques that
allow for formal reasoning with nested and mutually inductive structures built
up from finite maps and sets. The techniques, which build on the theory of
nominal sets combined with the ability to work with isomorphic representations
of finite maps, make it possible to give a formal treatment, in Coq, of a
higher-order module system, including the ability to eliminate at compile time
abstraction barriers introduced by the module system. The development is based
on earlier work on static interpretation of modules and provides the foundation
for a higher-order module language for Futhark, an optimising compiler
targeting data-parallel architectures. The third project presents an
implementation of two-level type theory, a version of Martin-Lof type theory
with two equality types: the first acts as the usual equality of homotopy type
theory, while the second allows us to reason about strict equality. In this
system, we can formalise results of partially meta-theoretic nature. We develop
and explore in details how two-level type theory can be implemented in a proof
assistant, providing a prototype implementation in the proof assistant Lean. We
demonstrate an application of two-level type theory by developing some results
on the theory of inverse diagrams using our Lean implementation.Comment: PhD thesis defended in January 2018 at University of Copenhagen,
Department of Computer Scienc
Formal logic: Classical problems and proofs
Not focusing on the history of classical logic, this book provides discussions and quotes central passages on its origins and development, namely from a philosophical perspective. Not being a book in mathematical logic, it takes formal logic from an essentially mathematical perspective. Biased towards a computational approach, with SAT and VAL as its backbone, this is an introduction to logic that covers essential aspects of the three branches of logic, to wit, philosophical, mathematical, and computational
A Vernacular for Coherent Logic
We propose a simple, yet expressive proof representation from which proofs
for different proof assistants can easily be generated. The representation uses
only a few inference rules and is based on a frag- ment of first-order logic
called coherent logic. Coherent logic has been recognized by a number of
researchers as a suitable logic for many ev- eryday mathematical developments.
The proposed proof representation is accompanied by a corresponding XML format
and by a suite of XSL transformations for generating formal proofs for
Isabelle/Isar and Coq, as well as proofs expressed in a natural language form
(formatted in LATEX or in HTML). Also, our automated theorem prover for
coherent logic exports proofs in the proposed XML format. All tools are
publicly available, along with a set of sample theorems.Comment: CICM 2014 - Conferences on Intelligent Computer Mathematics (2014
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
Automated verification of termination certificates
In order to increase user confidence, many automated theorem provers provide
certificates that can be independently verified. In this paper, we report on
our progress in developing a standalone tool for checking the correctness of
certificates for the termination of term rewrite systems, and formally proving
its correctness in the proof assistant Coq. To this end, we use the extraction
mechanism of Coq and the library on rewriting theory and termination called
CoLoR
More on Unfold/Fold Transformations of Normal Programs: Preservation of Fitting's Semantics
The unfold/fold transformation system defined by Tamaki and Sato was meant for definite programs. It transforms a program into an equivalent one in the sense of both the least Herbrand model semantics and the Computed Answer Substitution semantics. Seki extended the method to normal programs and specialized it in order to preserve also the finite failure set. The resulting system is correct wrt nearly all the declarative semantics for normal programs. An exception is Fitting's model semantics. In this paper we consider a slight variation of Seki's method and we study its correctness wrt Fitting's semantics. We define an applicability condition for the fold operation and we show that it ensures the preservation of the considered semantics through the transformation
- …