Interactive theorem provers based on dependent type theory have the
flexibility to support both constructive and classical reasoning. Constructive
reasoning is supported natively by dependent type theory and classical
reasoning is typically supported by adding additional non-constructive axioms.
However, there is another perspective that views constructive logic as an
extension of classical logic. This paper will illustrate how classical
reasoning can be supported in a practical manner inside dependent type theory
without additional axioms. We will see several examples of how classical
results can be applied to constructive mathematics. Finally, we will see how to
extend this perspective from logic to mathematics by representing classical
function spaces using a weak value monad.Comment: v2: Final copy for publicatio