[Agda] Why does Agda think this is not strictly positive?

Frédéric Blanqui frederic.blanqui at inria.fr
Wed Jul 20 12:08:07 CEST 2016


Hi.


Le 20/07/2016 à 11:22, Fredrik Nordvall Forsberg a écrit :
> Hi Roman,
>
> On 20/07/16 09:57, Roman wrote:
>> Is Agda correct that D is not strictly positive? Is there something I
>> can do to make positivity check pass?
>>      data Coerce β : ∀ {α} -> Set α -> Set β where
>>        coerce : ∀ {A} -> A -> Coerce β A
> This implies that Coerce β A is equivalent to (A -> Coerce β A)...
Could you please give more explanation about that?

Regards,

Frédéric.

>>      data D : Set where
>>        C : Coerce zero D -> D
> ...which means that the type of C is equivalent to
> (D -> Coerce zero D) -> D. Doesn't look very positive, and indeed, if we
> allow the definition of D, it is very easy to define
>
> open import Data.Empty
>
> oops : D -> ⊥
> oops (C (coerce x)) = oops x
>
> Cheers,
> Fredrik
>
>> Agda reports
>>
>>      D is not strictly positive, because it occurs
>>      in the third argument to Coerce
>>      in the type of the constructor C
>>      in the definition of D.
>>
>



More information about the Agda mailing list