[Agda] Automatic conversion between records and iterated Sigma types

Jacques Carette carette at mcmaster.ca
Tue Apr 14 21:40:34 CEST 2020


That's the easier direction. I am not surprised, yet pleased, that it is 
feasible.

So is this confirmation the Sigma -> record is indeed currently not 
feasible?

Jacques

On 2020-04-14 2:12 p.m., Jesper Cockx wrote:
> Hi Jacques,
>
> No, I was thinking of the other direction: if you define a record type 
> in Agda, then a macro could automatically turn it into its 
> representation as an iterated sigma type, and automatically generate 
> the conversion functions back and forth.
>
> -- Jesper
>
> On Tue, Apr 14, 2020 at 7:38 PM Jacques Carette <carette at mcmaster.ca 
> <mailto:carette at mcmaster.ca>> wrote:
>
>     Thanks Jesper.
>
>     I don't think I fully follow though.  Is it possible to use
>     reflection to take in a (nested) Sigma type (say the one for
>     Monoid) and return the declaration of the associated record type? 
>     Could I take the name of the bound variables in that Sigma type as
>     the labels of the resulting record type?  That would be perfect. 
>     I did not think that was possible. I would love to be wrong here!
>
>     Jacques
>
>     On 2020-04-14 4:07 a.m., Jesper Cockx wrote:
>>     Hi Jacques,
>>
>>     Note that it *is* possible to generate fresh names from Agda's
>>     reflection machinery, it is just not possible to access those
>>     generated names from outside of the macro call. But if you're
>>     willing to give just one name manually to the top-level
>>     definition (e.g. a value of a record type containing fields for
>>     the iterated sigma type itself, functions converting back and
>>     forth, and proofs about them) then the current reflection
>>     machinery should work just fine. In particular, there should be
>>     no need to generate new datatypes, which is the main bottleneck
>>     in #3699.
>>
>>     -- Jesper
>>
>>     On Mon, Apr 13, 2020 at 9:20 PM Jacques Carette
>>     <carette at mcmaster.ca <mailto:carette at mcmaster.ca>> wrote:
>>
>>         Very hard, I believe.  Lines 1113 and 1114
>>
>>            let u := fresh "u" in
>>            let v := fresh "v" in
>>
>>         in particular.  See the comment by @jespercockx on
>>         https://github.com/agda/agda/issues/3699.
>>
>>         Jacques
>>
>>         On 2020-04-13 3:11 p.m., Bas Spitters wrote:
>>         > This is what the issig tactic does in the HoTT library. I
>>         don't know
>>         > how difficult it is to convert it to agda.
>>         >
>>         https://github.com/HoTT/HoTT/blob/master/theories/Basics/Overture.v
>>         >
>>         > On Mon, Apr 13, 2020 at 8:47 PM Martin Escardo
>>         <m.escardo at cs.bham.ac.uk <mailto:m.escardo at cs.bham.ac.uk>> wrote:
>>         >> Is it possible to write a tactic to convert between
>>         records and
>>         >> equivalent iterated Sigma types? And, if so, to also
>>         produce code to
>>         >> establish their equivalence?
>>         >>
>>         >> Thanks,
>>         >> Martin
>>         >> _______________________________________________
>>         >> Agda mailing list
>>         >> Agda at lists.chalmers.se <mailto:Agda at lists.chalmers.se>
>>         >> 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
>>         _______________________________________________
>>         Agda mailing list
>>         Agda at lists.chalmers.se <mailto:Agda at lists.chalmers.se>
>>         https://lists.chalmers.se/mailman/listinfo/agda
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.chalmers.se/pipermail/agda/attachments/20200414/7c0237c9/attachment.html>


More information about the Agda mailing list