# [Agda] Parametricity is inconsistent with classical logic

Bas Spitters spitters at cs.ru.nl
Thu May 10 13:35:56 CEST 2012

```In Hlevel.v:

Definition forall_isprop {X} (P : X -> Type) :
(forall x, is_prop (P x)) -> is_prop (forall x, P x).

Bas
On Thu, May 10, 2012 at 1:16 PM, Martin Escardo <m.escardo at cs.bham.ac.uk> wrote:
> The hprop reflection of a type A is an hproposition A* such that A->A*,
> and for every hproposition P, A->P implies A*->P. Voevodsky defined it
> in the last types meeting as
>
>  A* = Prod P : U. hprop P -> (A -> P) -> P.
>
> In MLTT as it stands (without his resizing rules), this gives a large type.
>
> Because P=￢￢A is an hproposition (assuming extensionality of
> empty-type-valued functions), we have that A* -> ￢￢A (but hardly ever
> ￢￢A -> A*, of course).
>
> The HoTT analogue of the DNS would be
>
>  ((x : X)->  (A x)*) ->  ((x : X)->  A x)*.
>
> I haven't thought whether this is true. But it is not quite the same as
> extensionality, which has isContr rather than the hprop reflection. The
> pattern is the same, though, as observed by Hank: something is pushed
> out of a product.
>
> Martin
>
> On 10/05/12 11:38, Altenkirch Thorsten wrote:
>> This looks interesting.
>>
>> I was thinking that ￢ ￢ turns a Set into a proposition, i.e. a type whose
>> equalities are contractible.
>>
>> Actually, on a related topic - when carrying out the setoid construction
>> in Type Theory (related to my LICS 99 paper) I needed that Prop is closed
>> under Pi, I.e.
>>
>> ((x : X)->  isProp(F x)) ->  isProp((x : X)->  F x)
>>
>>
>> but as far as I can see this doesn't imply extensionality.
>>
>> To put it in another way: extensionality is equivalent to H-level 0
>> (contractible types) is closed under Pi, and it implies that H-level 1
>> (propositional types) is closed under Pi but the latter is weaker.
>>
>> Thorsten
>>
>>
>> On 10/05/2012 10:59, "Peter Hancock"<hancock at spamcop.net>  wrote:
>>
>>>>>>> ((x : X) → ￢ ￢ F x) → ￢ ￢ ((x : X) → F x)
>>>
>>> I just wanted to say that DNS in this form resembles the
>>> extensionality axiom in Voevodsky's form.
>>>
>>>     ((x : X)->  isContr(F x)) ->  isContr((x : X)->  F x)
>>>
>>> A double negation seems to be a crude way of turning an
>>> inhabited set into a singleton.
>>>
>>> Or is that nonsense?  It looks like an extensionality axiom.
>>>
>>> Hank
>>> _______________________________________________
>>> Agda mailing list
>>> Agda at lists.chalmers.se
>>> https://lists.chalmers.se/mailman/listinfo/agda
>>
>> This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please send it back to me, and immediately delete it.   Please do not use, copy or disclose the information contained in this message or in any attachment.  Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham.
>>
>> This message has been checked for viruses but the contents of an attachment
>> may still contain software viruses which could damage your computer system:
>> you are advised to perform your own checks. Email communications with the
>> University of Nottingham may be monitored as permitted by UK legislation._______________________________________________
>> Agda mailing list
>> Agda at lists.chalmers.se
>> https://lists.chalmers.se/mailman/listinfo/agda
>
> --
> Martin Escardo
> http://www.cs.bham.ac.uk/~mhe
> _______________________________________________
> Agda mailing list
> Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda
```