Issue 777 [Re: [Agda] Semigroup.Carrier in 2.3.2]

Dominique Devriese dominique.devriese at gmail.com
Wed Jan 2 10:46:11 CET 2013


For those who are interested, I have posted a detailed analysis of
Serge's examples in issue 777. I am working on a patch that provides a
partial solution.

Dominique

2012/12/31 Andreas Abel <andreas.abel at ifi.lmu.de>:
> Your example below works under Agda 2.3.2 if we bring H into scope with {H =
> H}:
>
>   powerToPositive {H = H} x e e>0 =  pow e e e>0
>        where
>        open Semigroup {{...}}
>        pow : Nat -> (e : Nat) -> e > 0 -> Carrier
>
> However, this should not be necessary, I filed this as bug 777.
>
> Cheers,
> Andreas
>
> On 30.12.12 5:14 PM, Serge D. Mechveliani wrote:
>>
>> On Tue, Dec 25, 2012 at 09:26:00AM +0100, Andreas Abel wrote:
>>>
>>> Instance search is experimental, so it is likely not all things work
>>> the same.
>>>
>>> Could you please attach a test case I can try directly without have
>>> to do imports, renaming etc.?
>>
>>
>>
>> See the attachment to this letter:   Main.agda.zip.
>>
>> The first variant there works under  Agda-2.3.0.1
>> but not under                        Agda-2.3.2.
>>
>> The second variant is commented out,
>> it "fixes" the code for 2.3.2 by making the argument explicit.
>>
>> Which Agda version is more correct at this point?
>>
>> Regards,
>>
>> ------
>> Sergei
>>
>>
>>> On 23.12.12 12:09 PM, Serge D. Mechveliani wrote:
>>>>
>>>> People,
>>>> this program is accepted in by Agda-2.3.0.1
>>>> and rejected by                Agda-2.3.2 :
>>>>
>>>> ---------------------------------------------------------------
>>>> powerToPositive : {c l : Level} -> {H : Semigroup c l} ->
>>>>              let C = Semigroup.Carrier H in  C -> (e : Nat) -> e > 0 ->
>>>> C
>>>> --
>>>> -- Power  x  to a positive degree  e.  The binary method.
>>>>
>>>> powerToPositive x e e>0 =  pow e e e>0
>>>>       where
>>>>       open Semigroup {{...}}
>>>>       pow : Nat -> (e : Nat) -> e > 0 -> Carrier
>>>>          -- cnt  is the counter used in termination proof
>>>>
>>>>       pow 0         _             _  = x
>>>>       pow _         0             ()
>>>>       pow _         (suc 0)       _  = x
>>>>       pow (suc cnt) (suc (suc e)) _  =
>>>>                                (if even? e then  p * p  else (p * p) *
>>>> x)
>>>>                                where
>>>>                                half = suc $ quot2 e
>>>>                                p    = pow cnt half $ positiveHalf? e
>>>> ---------------------------------------------------------------
>>>>
>> [..]
>>
>
> --
> Andreas Abel  <><      Du bist der geliebte Mensch.
>
> Theoretical Computer Science, University of Munich
> Oettingenstr. 67, D-80538 Munich, GERMANY
>
> andreas.abel at ifi.lmu.de
> http://www2.tcs.ifi.lmu.de/~abel/
>
> _______________________________________________
> Agda mailing list
> Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda


More information about the Agda mailing list