[Agda] Classical Mathematics for a Constructive World

Peter Hancock hancock at spamcop.net
Wed Nov 28 09:52:11 CET 2012

On 27/11/2012 22:20, Martin Escardo wrote:
> There is also Peter Hancock's question. Well, probably not a
> question. But I lost your message, Peter, and I can't find it.

I don't think I had a question... oh yes I did!

First, let me try to state my position wrt Church's thesis.

MP: I would be extremely suspicious of any formal system, or
    style of formal system intended to formalise constructive mathematics
    if it was not compatible with some version of Church's thesis.
    A little more precisely, it should admit a model, constructed in a vanilla
    constructive metatheory, (well, Matin-Lof's system without special/anomalous
    stuff like identity types, extensionality in any form, etc)  
    in which a weak version of Church's thesis comes out true.  I would
    be horrified to be shown a closed term of type N->N from which I could not
    read off a Turing machine and a(n internal) proof that it computes the
    denotation of the term in the standard mode.

    Incidentally, the same/similar goes for axioms of continuity at type "2", ie. (N->N)->N,
    and even more so for axioms of extensionality at type 2.  I am *not*
    sufficiently mad to expect strong forms of (a) Church's thesis and (b) continuity at type 2 both to
    hold in the same model.

Now, what is all this about "weak" and "strong"?  Essentially, it is a matter of whether
the existential quantifier in Church's thesis (or a continuity axiom, or whatever it is)
should be full-blooded \Sigma, or a more pusillanimous \exists.  One way of weakening
Sigma is to stick notnot in front of it.  Here is what I'd call a *strong* form of CT, where T is
Kleene's "T-predicate", and U strips the result out of a terminated trace.

  CT:  (Pi f : N->N)(Sigma e : N)(Pi n : N)(Sigma m : N) T(e,n,m) and f(n)=U(m)

Here's something I'd call a *weak* form of Church's thesis.
  WCT:  (Pi f : N->N)notnot[(Sigma e : N)(Pi n : N)(Sigma m : N) T(e,n,m) and f(n)=U(m)]
Similar things can be formulated for continuity at type 2, where the thing that is said to "exist"
is roughly speaking a well-founded countably-branching tree that represents the type2 functional
a la Ghani/Hancock/Pattinson or Escardo.

Now, my question, such as it was.  Something I got from rereading an ancient
book by Troelstra, is essentially this:

   SCT + EXT2 + AC are jointly inconsistent over HAomega

EXT2 is extensionality at type (N->N)->N.
I also saw something like this in Beeson's book.  Troelstra indicates that
from these 3 ingredients one could solve the halting problem.  He mentions
that a proof can also be constructed from the Kreisel-Lacombe-Shoenfield theorem (from 1959).
I was surprised that SCT is so hostile, even to extensionality.  Univalence apparantly
implies EXT2 inter alia, and is compatible with AC.


   WCT + EXT2 + AC are jointly consistent wrt HAomega

All 3 thing are jointly satisfied in a model HEO of the hereditarily effective operations of finite type.

I simply wondered if I had got hold of the wrong end of the stick, or was misreading Troelstra
and got lost in all the metamathematical details.   I felt the need to bleat pathetically for an
expert in such things (eminently, Dr. Escardo) to prevent me from misleading people.

Notnot appears to be a (crude?) form of "squashing", or "bracketing", or "smashing" constructions
of a Sigma type down to "just one", or hiding all distinctions between them.
It seems to have a quite dramatic effect on principles like CT, continuity, and even choice.
Maybe there are other forms of squashing.

By the way, I for (the only?) one am not very sympathetic to all this stuff about "many worlds",
coming from Andrej Bauer.  But that's a whole other topic.

Peter Hancock

> My quibble with the so-called Church's Thesis in constructive
> mathematics is that ... I never need it when I prove a theorem.
> Knowing that my input is computable doesn't help me in my
> calculations. I have no need to inspect the source code of the input,
> or of merely knowing that the source code exists.
> Moreover, I would think that many inputs come without evidence of
> computability.
> Example 1. Suppose I program a certified web server in Agda. My input
> is a stream, and so is my output. If I assumed CT, the protocol would
> have to work like this: please, before sending me the stream, send me
> its Godel number, or promise that it secretly exists, and send me
> evidence of your promise.
> Example 2. Suppose I program a certified flight control system for
> airports. Again my input and output are streams. Assuming that the
> inputs come with their Godel numbers, there is no need for radars or
> other tracking devices. I can compute what will happen from the Godel
> number, and I can effectively predict which planes will be where and
> when by just computing. Wouldn't that be marvelous?
> Example 3. Suppose I program a certified nuclear power station
> control system. One of my stream inputs comes from a Geiger counter.
> I ask the physicists and engineers to design and build an improved
> Geiger counter that first gives the Godel number of the sequence that
> it produces.
> What do you need to know that your input if computable for? And what
> if your input is not (known to be) computable?
> Should you implement a validation procedure that rejects
> non-computable input?
> Martin _______________________________________________ Agda mailing
> list Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda

More information about the Agda mailing list