[Agda] Agda's coinduction incompatible with initial algebras
Thorsten Altenkirch
txa at Cs.Nott.AC.UK
Wed Oct 5 22:06:08 CEST 2011
The issue is that currently Agda doesn't handle mu-nu nesting properly. Any datatype is viewed as a nu-mu.
This is not what we want, because as you say it is not compositional.
Sized types are one solution but I am not sure they are the best one. I'd hope that we can extend the current termination checker to deal with nested mu-nu.
While we haven't got a solution we can all agree on yet, it may be a good idea not to jump too quickly. The current algorithm is an approximation which works in most cases.
Also I do think it is sound even though not compositional as you say.
Cheers,
Thorsten
On 5 Oct 2011, at 19:13, Andreas Abel wrote:
> On 04.10.11 11:18 PM, Dan Doel wrote:
>> On Tue, Oct 4, 2011 at 2:07 PM, Andreas Abel<andreas.abel at ifi.lmu.de> wrote:
>>> But the principle of sized types can also be applied to coinduction, under
>>> the interpretation of "size" as "depth", i.e., number of guarding
>>> constructors. Corecursion is sound if it increases the guardedness of the
>>> result in the body surrounding the recursive call (rather than increasing
>>> the size of the function argument as in the recursion case).
>>>
>>> Yet that does not happen here.
>>
>> It doesn't appear to happen anywhere to me.
>
> Not in Agda. Try MiniAgda. Or read the literature.
>
>> The sized type checker
>> doesn't seem to recognize Agda's coinductive definitions at all
>> (currently). You just get whatever is better at the time. If you write
>> an obviously guarded corecursive definition, it's accepted by the
>> guardedness checker. If you write a size-decreasing function, it's
>> also accepted, even though the type may be coinductive due to the
>> presence of the built-in.
>
> These two systems have not been integrated, since there is a history of dispute stretching several years what we should go for. [With a current cease-fire, but no peace treaty. Maybe I should not have touched this issue.]
>
> I have embraced sized types since the are compositional. Meaning you can abstract code out and still retain termination. This enables me, in the given example, to write iter for a generic initial algebra.
>
> The (non-sized) termination and guardedness checker of Agda is not compositional. Ulf has demonstrated how to do initial algebras in current Agda: You need to define iter and a specialized version of map mutually. Compositionally is precious, not only to write better code, but also when you try to give a formal semantics of your language.
>
>> So, one could probably argue that the bug is in assuming that Mu F is
>> an initial algebra without knowing what F is. Knowing only that it is
>> a functor is not enough in Agda. You need to know whether or not it's
>> a magic functor that turns things into codata.
>
> I do not want magic functors. At least the type system should distinguish them from ordinary functors. But as of now, attempts to give a semantics of co per se have failed, also as a magic functor.
>
>> I'm not particularly happy that things work that way.
>
> Well, then things should change.
>
>> But I don't
>> think it's possible to exhibit this without using the sized-type
>> checker to assume things are data when they may not be (that is, the
>> checker can't know whether it should be doing termination or
>> guardedness checking without knowing what F is, but it assumes
>> termination).
>
> As long as F is (strictly) positive, I can form an initial algebra. I do not want to care about more. F is positive as witnessed by map. Ralph Matthes has shown that every monotone F has a least fixed point, the existence of map is enough. (Search for "monotone inductive types").
>
>> Your argument for your various definitions is how things
>> work in the literature, and how I'd like things to work in Agda, but
>> it is not how things do work, and so I don't think it's inconceivable
>> to suggest the error is in the sized types checker's not appropriately
>> handling Agda's conventions.
>
> Well, what exactly Agda's conventions are, is under dispute.
>
> We are not faced with a God-given system called Agda to which we have to bow and accept whatever it grants us. We are building a system called Agda, and we want to apply the best principles to it. Compositionality is a principle I am not sacrificing to limitations of an implementation. Good theoretical justification is another principle I am not sacrificing. There are 4 PhD theses on sized types in the context of type theory, and there are more than a dozen papers. These give models that show consistency and prove strong normalization. Point me to a foundation of "how things work in Agda", I would be grateful, since I am not aware of any.
>
> I am getting tired of defending sized types against non-scientific arguments. Do the hard science, or let it be.
>
> Please excuse my impatience, there is a history to this dispute,
>
> Andreas
>
> --
> 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