Skip to main navigation Skip to search Skip to main content

Proof checking and logic programming

Research output: Contribution to journalArticlepeer-review

Abstract

In a world where trusting software systems is increasingly important, formal methods and formal proof can help provide some basis for trust. Proof checking can help to reduce the size of the trusted base since we do not need to trust an entire theorem prover: instead, we only need to trust a (smaller and simpler) proof checker. Many approaches to building proof checkers require embedding within them a full programming language. In most modern proof checkers and theorem provers, that programming language is a functional programming language, often a variant of ML. In fact, aspects of ML (e.g., strong typing, abstract datatypes, and higher-order programming) were designed to make ML a trustworthy “meta-language” for checking proofs. While there is considerable overlap between logic programming and proof checking (e.g., both benefit from unification, backtracking search, efficient term structures, etc.), the discipline of logic programming has, in fact, played a minor role in the history of proof checking. I will argue that logic programming can have a major role in the future of this important topic.

Original languageEnglish
Pages (from-to)383-399
Number of pages17
JournalFormal Aspects of Computing
Volume29
Issue number3
DOIs
Publication statusPublished - 1 May 2017

Keywords

  • Focused proof systems
  • Logic programming
  • Proof certificates
  • Proof checking

Fingerprint

Dive into the research topics of 'Proof checking and logic programming'. Together they form a unique fingerprint.

Cite this