Design and Implementation of the Andromeda Proof Assistant

02/17/2018
by   Andrej Bauer, et al.
0

Andromeda is an LCF-style proof assistant where the user builds derivable judgments by writing code in a meta-level programming language AML. The only trusted component of Andromeda is a minimalist nucleus (an implementation of the inference rules of an object-level type theory), which controls construction and decomposition of type-theoretic judgments. Since the nucleus does not perform complex tasks like equality checking beyond syntactic equality, this responsibility is delegated to the user, who implements one or more equality checking procedures in the meta-language. The AML interpreter requests witnesses of equality from user code using the mechanism of algebraic operations and handlers. Dynamic checks in the nucleus guarantee that no invalid object-level derivations can be constructed. the AML code (or interpreter) is untrusted. To demonstrate the flexibility of this system structure, we implemented a nucleus consisting of dependent type theory with equality reflection. Equality reflection provides a very high level of expressiveness, as it allows the user to add new judgmental equalities, but it also destroys desirable meta-theoretic properties of type theory (such as decidability and strong normalization). The power of effects and handlers in AML is demonstrated by a standard library that provides default algorithms for equality checking, computation of normal forms, and implicit argument filling. Users can extend these new algorithms by providing local "hints" or by completely replacing these algorithms for particular developments. We demonstrate the resulting system by showing how to axiomatize and compute with natural numbers, by axiomatizing the untyped λ-calculus, and by implementing a simple automated system for managing a universe of types.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/12/2021

An extensible equality checking algorithm for dependent type theories

We present a general and user-extensible equality checking algorithm tha...
research
12/12/2021

Reflective Metagraph Rewriting as a Foundation for an AGI "Language of Thought"

MeTTa (Meta Type Talk) is a novel programming language created for use i...
research
11/28/2018

Adventures in Formalisation: Financial Contracts, Modules, and Two-Level Type Theory

We present three projects concerned with applications of proof assistant...
research
05/06/2022

The Supervisionary proof-checking kernel (or: a work-in-progress towards proof generating code)

Interactive theorem proving software is typically designed around a trus...
research
02/01/2021

Quadratic type checking for objective type theory

We introduce a modification of standard Martin-Lof type theory in which ...
research
09/20/2022

Staged Compilation with Two-Level Type Theory

The aim of staged compilation is to enable metaprogramming in a way such...
research
02/15/2021

Metatheory.jl: Fast and Elegant Algebraic Computation in Julia with Extensible Equality Saturation

We introduce Metatheory.jl: a lightweight and performant general purpose...

Please sign up or login with your details

Forgot password? Click here to reset