[Agda] Postulating double-negated consistent axioms without breaking canonicity?

Nils Anders Danielsson nad at chalmers.se
Wed May 25 11:57:56 CEST 2011


Hi,

It's annoying, but unavoidable, that there are total functions which
cannot be implemented in Agda (assuming consistency). Last week we
discussed one instance of this problem here at Chalmers. For some
properties A and B I proved the following:

   ((P : ℕ → Set) → A P → ¬ ¬ B P)  ⇔  (∀ P → DNS P)

Here DNS stands for double-negation shift:

   DNS : (ℕ → Set) → Set
   DNS P = (∀ i → ¬ ¬ P i) → ¬ ¬ (∀ i → P i)

It is known that ∀ P → DNS P cannot be proven in some type theories, but
also that other type theories support this principle, without
sacrificing canonicity or strong normalisation. One could add something
like bar recursion to Agda and strengthen the statement above to the
following:

   (P : ℕ → Set) → A P → ¬ ¬ B P

However, Ulf Norell conjectured that we could fix this problem in an
easier way. He remarked that all we are doing is proving that something
implies ⊥, and then it seems to be fine to assume consistent classical
axioms. In particular he conjectured that we can add the following as an
axiom, without any computational interpretation, /without breaking
canonicity/ (because ⊥ is empty in the empty context):

   em : ¬ ¬ ((P : Set) → P ⊎ ¬ P)

Do you know if this conjecture holds up to closer scrutiny? Do you see
any other problems with it? (Thierry Coquand pointed out that this axiom
is inconsistent in the presence of impredicativity.)

-- 
/NAD



More information about the Agda mailing list