hout-0.1.0.0: Non-interactive proof assistant monad for first-order logic.

Copyright(c) Isaac van Bakel 2020
LicenseBSD-3
Maintainerivb@vanbakel.io
Stabilityexperimental
PortabilityPOSIX
Safe HaskellSafe
LanguageHaskell2010

Hout.Prover.Proofs

Description

This module contains some helpers for declaring proofs, and running them as code.

Synopsis

Documentation

runProof :: Theorem a -> a Source #

Run a theorem to its Haskell term. If the proof of the theorem uses only terminating values, then the resulting Haskell term can be run as usual without errors.

data Theorem a Source #

A proven theorem.

As described in Hout.Prover.Tactics, proof of a is equivalent to reducing the proof goal a to the trival proof goal ().

Constructors

Proof (Tactic a () ()) 

type Lemma a = Theorem a Source #

type Example a = Theorem a Source #

data Axiom a Source #

An unprovable axiom.

admitted :: Axiom a Source #

Admit an axiom, without proof. Note that this is not a terminating term, so using it will not yield computable Haskell.

noncomputable :: Axiom a -> a Source #

Use an axiom, with the understood caveat that the result will not be a computable term. It is impossible to construct an Axiom, so using one cannot give runnable Haskell.