[Agda] a strange "unsolved" report
mechvel at scico.botik.ru
mechvel at scico.botik.ru
Mon Oct 5 18:37:08 CEST 2020
On 2020-10-05 01:47, James Wood wrote:
> Is `mmons` used somewhere, maybe giving a hint as to what type to check
> it at?
>
It has
m = monᶜ a e; m' = monᶜ b e'
m'' = monᶜ c e''; mmons = m ∷ mons
m'mons' : List Mon -- Agda forces me to set this signature
m'mons' = m' ∷ mons'
m m' m'' : Mon, monᶜ a constructor for the record Mon.
and
mons mons' mons'' : List Mon are derived from the head function
pattern:
m = monᶜ a e; m' = monᶜ b e'; m'' = monᶜ c e''
mmons m'mons m''mons : List Mon are computed by the assignments
mmons = m ∷ mons -- *
m'mons' : List Mon
m'mons' = m' ∷ mons'
m''mons'' = m'' ∷ mons''
_∷_ is overloaded by
open import Data.List using (List; []; _∷_ ...),
open import Data.List.Relation.Unary.All as AllM using (All; []; _∷_)
It does work. But it looks new and a bit strange that it chooses one
assignment in the middle
of an array of similar assignments, and requires a signature for it:
-----------------------------------------------------------------------------
+ms-assoc-aux {monᶜ a e ∷ mons} {monᶜ b e' ∷ mons'} {monᶜ c e'' ∷
mons''}
ord-ees ord-e'es' ord-e''es'' (suc l) l₁'+[l₂'+l₃']≤l' =
aux (<-cmp e e') (<-cmp e' e'') (<-cmp e e'')
where
a+b = a + b; b+c = b + c
m = monᶜ a e; m' = monᶜ b e'
m'' = monᶜ c e''
mmons = m ∷ mons
m'mons' : List Mon -- (I) forced
m'mons' = m' ∷ mons'
m''mons'' = m'' ∷ mons''
es = map Mon.exp mons; es' = map Mon.exp mons'; es'' = map Mon.exp
mons''
mons'+mons'' = mons' +ms mons''
...
aux : Tri (e < e') (e ≡ e') (e > e') →
Tri (e' < e'') (e' ≡ e'') (e' > e'') →
Tri (e < e'') (e ≡ e'') (e > e'') →
((m ∷ mons) +ms (m' ∷ mons')) +ms (m'' ∷ mons'') =ms
(m ∷ mons) +ms ((m' ∷ mons') +ms (m'' ∷ mons''))
-- many patterns for aux :
aux (tri> _ _ e>e') (tri< e'<e'' _ _) (tri> _ _ e>e'') = ...
...
------------------------------------------------------------------------------
The effect is only in the assigments before `aux'.
--
SM
> On 04/10/2020 23:43, mechvel at scico.botik.ru wrote:
>> On 2020-10-04 23:30, James Wood wrote:
>>> Hi Sergei,
>>>
>>> Quick questions first: is `_∷_` overloaded at all in this context?
>>> That'd be my guess for why Agda has no clue what the type is supposed
>>> to be.
>>>
>>
>> It is overloaded.
>> But there are other similar assignments before and around (like the
>> one
>> marked with *),
>> and Agda does resolve them without providing a signature.
>>
>> --
>> SM
>>
>>
>>
>>> On 04/10/2020 18:19, mechvel at scico.botik.ru wrote:
>>>> Dear Agda developers,
>>>>
>>>> There is a question about the following code fragment:
>>>>
>>>> -----------------------------------------------------
>>>> +ms-assoc-aux {monᶜ a e ∷ mons} {monᶜ b e' ∷ mons'} {monᶜ c e'' ∷
>>>> mons''} ... =
>>>>
>>>> aux (<-cmp e e') (<-cmp e' e'') (<-cmp e e'')
>>>> where
>>>> m = monᶜ a e; m' = monᶜ b e'; m'' = monᶜ c e''
>>>>
>>>> mmons = m ∷ mons -- *
>>>>
>>>> -- m'mons' : List Mon -- (I-s)
>>>> m'mons' = m' ∷ mons' -- (I)
>>>>
>>>> m''mons'' = m'' ∷ mons''
>>>> ...
>>>> -----------------------------------------------------
>>>>
>>>> Agda 2.6.1 reports
>>>> "
>>>> Sort _1156 [ at ...Over-abelianGroup.agda:414,5-12 ]
>>>> _1157 : _1156 [ at ...Over-abelianGroup.agda:414,5-12 ]
>>>> _1159 : _1157 [ at ...Over-abelianGroup.agda:414,15-25 ]
>>>> "
>>>>
>>>> I guess this is the kind of "unsolved metas".
>>>> And the first "unsolved" is about the line marked (I).
>>>>
>>>> The previous line (marked *) is solved - while it is not any more
>>>> clear
>>>> than (I).
>>>>
>>>> Then, after adding the signature (I-s), everything is type-checked.
>>>> 1) This necessity to add signature in the middle of an array of
>>>> short
>>>> assignments of the same
>>>> type looks strange.
>>>> 2) There are many similar fragments in the program, and I never
>>>> observed
>>>> such an effect.
>>>>
>>>> What might this mean?
>>>>
>>>> --
>>>> SM
>>>> _______________________________________________
>>>> Agda mailing list
>>>> Agda at lists.chalmers.se
>>>> https://lists.chalmers.se/mailman/listinfo/agda
>>>>
>>>>
>>> _______________________________________________
>>> Agda mailing list
>>> Agda at lists.chalmers.se
>>> https://lists.chalmers.se/mailman/listinfo/agda
>>>
> _______________________________________________
> Agda mailing list
> Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda
More information about the Agda
mailing list