Re: [TYPES] Meaning explanations and the invalidity of the law of excluded middle
Paolo Giarrusso <[email protected]>
| Newsgroups | gmane.comp.science.types |
|---|---|
| Message-ID | <CAAcnjCSjesQq8Ka5_bd9RhzpFprqERd3WF+pOAH4-m6BCHKppQ@mail.gmail.com> |
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] On 13 October 2017 at 10:23, Bruno Bentzen <[email protected]> wrote: > but I would like to understand why, from the perspective of the meaning explanations alone (where terms are open-ended programs in a computation system resulted from an untyped notion of computation), the inference from 1 to 2 fails? > > Perhaps because programs are open-ended (as it was pointed out to me by Bob Harper), so that we have no means of recursively enumerate them all (because one can always extend the computational system with new programs)? But if this is the case, I fail to see why it is acceptable to rule out Kleene's T as a program (since programs are open-ended). Dear Bruno, I understand the meaning explanation can be seen as basically a realizability interpretation of type theory based on untyped realizers [1]? Then let me provide my 2 cents, based on my (partial) understanding of realizability and PER models. I welcome any corrections. Since we talk about truth in a model and not usual provability, I'll write Γ ⊧ t : T, instead of Γ ⊢ t : T true. I'm not 100% what you mean by open-ended — with an open-ended set of terms, where you allow adding "postulates", you can't even validate (E) [1]. But once you fix your set of terms, you can do structural induction on them *in the metatheory*, but even untyped lambda terms cannot inspect the structure of their arguments (as Andrej explained), unlike Turing machines. So, let's write U for your type Π(e : nat) (Σ (i, x : nat) T(e,i,x)) + ¬(Σ (i, x : nat) T(e,i,x)). Then, it should be provable metatheoretically that there is no closed value of of type U (as you say). This reasoning cannot be internalized into a lambda term, essentially by Andrej's argument; yet, I expect the metatheoretic argument is sufficient to prove that H: U ⊧ ⊥ (or, in your notation, that H : U ⊢ empty true). Specifically, just like (E) p : Id(nat,0,1) ⊧ 1 : nat -> nat holds because Id(nat,0,1) is empty, and vacuously for all members p of Id(nat,0,1) we have that 1 realizes nat -> nat, I think that judgement (B) p : U ⊧ 1 : empty holds by a similar argument. In either case, if we add postulates to sets of realizers so that Id(nat,0,1) or U is non-empty [1], we get a different model where (E) and (B) fail—however, such postulates could not be reduced, destroying canonicity. Which is good: canonicity enables computation, so a realizer for excluded middle can't actually be computable in all cases. (Formally, IIUC, instead of considering closed values as realizers, we'd allow a few free variables, and make assumptions on what types those variables realize). On a related note, IIUC your judgement holds in NuPRL (by a different proof?), which appears to be also based on the meaning explanation [2]. That's how I interpret http://www.nuprl.org/LibrarySnapshots/Published/Version2/Standard/quot_1/no-excluded-middle-quot-true2.html (where ⇃ is defined in http://www.nuprl.org/LibrarySnapshots/Published/Version2/Standard/per!type!1/quotient.html and quotients realizers together). [1] https://ncatlab.org/nlab/show/meaning+explanation [2] http://www.jonmsterling.com/pdfs/meaning-explanations.pdf Cheers, -- Paolo G. Giarrusso - Ph.D. Student, Tübingen University http://ps.informatik.uni-tuebingen.de/team/giarrusso/