[Agda] Bezonas helpon !

Serge Leblanc 33dbqnxpy7if at gmail.com
Thu Aug 17 12:18:32 CEST 2017


Sinceran dankon Andreas.

I don't understand that the following function (foldr″) is well accepted
while foldl″ is not?
Mi ne komprenas kial la sekva funkcio (foldr″) trafas kvankam la
funkciofoldl″ maltrafas?

foldr″ : ∀ {a} {A : Set a} → (A → A → A) → List⁺ A → A
foldr″ c (n ∷ []) = n
foldr″ c (n ∷ (x ∷ xs)) = c x (foldr″ c (n ∷ xs))

foldl″ : ∀ {a} {A : Set a} → (A → A → A) → List⁺ A → A
foldl″ c (n ∷ []) = n
foldl″ c (n ∷ (x ∷ xs)) = foldl″ c (c n x ∷ xs)

Termination checking failed for the following functions: foldl″

I also remarked that Agda rejects that:
Mi ankaŭ remarkis ke agda malakceptas tion:

foldr‴  : ∀ {a} {A : Set a} → (A → A → A) → List⁺ A → A
foldr‴ c (n ∷ []) = n
foldr‴ c (n ∷ (x ∷ xs)) = c x (foldr‴ c (*id* n ∷ xs))
   where
    open import Function using (id)

Termination checking failed for the following functions:foldr‴

Andreas,unfortunately I really don't understand your explanation of the
/length/ of the list!
Andreas, bedaûrinde mi vere ne komprenis vian klarigon pri la grandeco
de la listo!


On 2017-08-16 22:54, Andreas Abel wrote:
> The function is structurally recursive on the /length/ of the list,
> not on the list itself.  You can expose the length by
>
>   1. using vectors instead of lists, or
>   2. using sized lists (sized types).
>
> Alternatively, you can just define an auxiliary function first which
> takes the first element of List+ as separate argument.  Then the
> recursion on the list goes through.
>
> Best,
> Andreas
>
> On 16.08.2017 22:23, Serge Leblanc wrote:
>> Thank you for your help.
>>
>> Why Agda refuses the following  structurally decreasing function?
>>
>> foldl″ : ∀ {a} {A : Set a} → (A → A → A) → List⁺ A → A
>> foldl″ c (n ∷ []) = n
>> foldl″ c (n ∷ (x ∷ xs)) = foldl″ c (c n x ∷ xs)
>>
>> /home/serge/agda/Maximal.agda:47,1-49,50 Termination checking failed
>> for the following functions: foldl″ Problematic calls: foldl″ c (c n
>> x ∷ xs) (at /home/serge/agda/Maximal.agda:49,27-33)
>>
>> On 2017-08-14 20:55, Ulf Norell wrote:
>>> The fact that foldr₁ is using a private recursive helper function
>>> will likely make it impossible to prove your theorem.
>>>
>>> / Ulf
>>>
>>> On Mon, Aug 14, 2017 at 6:47 PM, Jesper Cockx <Jesper at sikanda.be
>>> <mailto:Jesper at sikanda.be>> wrote:
>>>
>>>     Maybe you can explain what approaches you have already tried and
>>>     why you got stuck? I think people would be more inclined to help
>>>     that way.
>>>
>>>     To get you started on proof1, here's a hint: since you are proving
>>>     something about the functions foldr₁ and _⊔_, you can take a look
>>>     at their definitions and follow the same structure for your proof.
>>>     For example, since foldr₁ is defined in terms of the helper
>>>     function foldr, you probably also need to define a helper lemma
>>>     that proves a similar statement about foldr.
>>>
>>>     Best regards,
>>>     Jesper
>>>
>>>     2017-08-14 18:33 GMT+02:00 Serge Leblanc <33dbqnxpy7if at gmail.com
>>>     <mailto:33dbqnxpy7if at gmail.com>>:
>>>
>>>         Saluton, neniu bonvolas helpi min?
>>>
>>>         Hi, nobody wants to help me?
>>>
>>>
>>>         On 2017-08-06 18:23, Serge Leblanc wrote:
>>>>         Dear All,
>>>>         I need help to finish these lemmas.
>>>>         They have the same meaning, I am right?
>>>>         All helpers are welcome!
>>>>
>>>>         Estimata ĉiuj,
>>>>         Mi bezonas helpon por daŭrigi ci-tiuj pruvojn!
>>>>         Ĉu ili havas je la saman signifon! Ĉu mi pravas?
>>>>         Ĉiuj helpantoj estas bonvenaj!
>>>>
>>>>         Sincere.
>>>>         --         Serge Leblanc
>>>>        
>>>> ------------------------------------------------------------------------
>>>>
>>>>         gpg --search-keys 0x67B17A3F
>>>>         Fingerprint = 2B2D AC93 8620 43D3 D2C2 C2D3 B67C F631 67B1
>>>> 7A3F
>>>
>>>         --         Serge Leblanc
>>>        
>>> ------------------------------------------------------------------------
>>>
>>>         gpg --search-keys 0x67B17A3F
>>>         Fingerprint = 2B2D AC93 8620 43D3 D2C2 C2D3 B67C F631 67B1 7A3F
>>>
>>>         _______________________________________________
>>>         Agda mailing list
>>>         Agda at lists.chalmers.se <mailto:Agda at lists.chalmers.se>
>>>         https://lists.chalmers.se/mailman/listinfo/agda
>>>         <https://lists.chalmers.se/mailman/listinfo/agda>
>>>
>>>
>>>
>>>     _______________________________________________
>>>     Agda mailing list
>>>     Agda at lists.chalmers.se <mailto:Agda at lists.chalmers.se>
>>>     https://lists.chalmers.se/mailman/listinfo/agda
>>>     <https://lists.chalmers.se/mailman/listinfo/agda>
>>>
>>>
>>
>> -- 
>> Serge Leblanc
>> ------------------------------------------------------------------------
>> gpg --search-keys 0x67B17A3F
>> Fingerprint = 2B2D AC93 8620 43D3 D2C2 C2D3 B67C F631 67B1 7A3F
>>
>>
>> _______________________________________________
>> Agda mailing list
>> Agda at lists.chalmers.se
>> https://lists.chalmers.se/mailman/listinfo/agda
>>
>
>

-- 
Serge Leblanc
------------------------------------------------------------------------
gpg --search-keys 0x67B17A3F
Fingerprint = 2B2D AC93 8620 43D3 D2C2 C2D3 B67C F631 67B1 7A3F
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.chalmers.se/pipermail/agda/attachments/20170817/035fd136/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: OpenPGP digital signature
URL: <http://lists.chalmers.se/pipermail/agda/attachments/20170817/035fd136/attachment.sig>


More information about the Agda mailing list