[Agda-dev] Positivity checker and abstract blocks

Andreas Abel abela at chalmers.se
Sun Jan 3 18:09:29 CET 2016


Andres,

 From what you quote, both seem to be GuardPos...

On 02.01.2016 17:31, Andrés Sicard-Ramírez wrote:
> Hi,
>
> Given the data constructors of `Occurrence` (
> https://github.com/agda/agda/blob/master/src/full/Agda/TypeChecking/Positivity/Occurrence.hs#L20-L27
> )
> why `Foo` is `StrictPos` in
>
>    {-# OPTIONS -v tc.pos:25 #-}
>
>    data Foo : Set where
>      foo : Foo → Foo
>
> that is,
>
>    $ agda Test.agda
>    ...
>    positivity graph for Foo foo
>    Foo
>      -[g+]-> Foo InDefOf Test.Foo (ConArgType
>                  Test.Foo.foo Here)

g+ means GuardPos

>
>
> but `Foo` is `GuardPos` in an abstract block, that is,
>
>    {-# OPTIONS -v tc.pos:25 #-}
>
>    abstract
>      data Foo : Set where
>        foo : Foo → Foo
>
>    $ agda Test.agda
>    ...
>    positivity graph for Foo foo
>
>    Foo
>      -[g+]-> Foo InDefOf Test.Foo (ConArgType
>                  Test.Foo.foo Here)

same here.

>
> ?
>
> Best,
>

-- 
Andreas Abel  <><      Du bist der geliebte Mensch.

Department of Computer Science and Engineering
Chalmers and Gothenburg University, Sweden

andreas.abel at gu.se
http://www2.tcs.ifi.lmu.de/~abel/


More information about the Agda-dev mailing list