coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Pierre Courtieu <pierre.courtieu AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Module types as types
- Date: Mon, 14 Mar 2022 09:52:50 +0100
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=pierre.courtieu AT gmail.com; spf=Pass smtp.mailfrom=pierre.courtieu AT gmail.com; spf=None smtp.helo=postmaster AT mail-qk1-f180.google.com
- Ironport-data: A9a23:PUQoZasOlIvFmxCNDYYXdiwl7+fnVJdYMUV32f8akzHdYApBsoF/q tZmKTiDOq6LY2WgKttzPYji9U0E65WAxodgHAA6pS08Ei0XgMeUXt7xwmXYb3rDdJWbJK5Ex 5xDMYeYdJhcolv0/ErF3m3J9CEkvU2wbuOgTraCY0idfCc8IMsboUsLd9UR38g52bBVPyvX4 Ymo+5aGZAf8s9JJGjt8B5yr+EsHUMva42twUmwWPZina3eD/5W9JMt3yZCZdxMUcKEMdgKJb 7qrIIWCw4/s10xF5uVJPVrMWhZirrb6ZWBig5fNMkSoqkAqSicais7XOBeAAKtao23hojx/9 DlCnaKwd1kWZK3vofw2YiN5FSt/BbV/6IaSdBBTseTLp6HHW37lwvErFUJveINBqr4xDmZJ+ vgVbjsKa3hvhcrsmOP9GrQq3J55apC7ZOvzuVk4pd3dJe4nTIrZTuPB4sJCwDY9m+hBGP/fY 4wSbj8HgBHoOUAeZgpMUsNWcOGAlnv5YRRF8l2st4ko/lDyyC9zwanGP4+AEjCNbZwNwhzwS nj912/+G1QRMMGV4SGU92qlwO7JhyLyHowIfIBU7dZviVyXg3UQUVgYDAvj5/a+jUG6VpRUL El8FjcSQbYaykyVEOanXz6BuFW1hD8aUdtoC9Qq0VTYokbL2DqxCm8BRz9HTdUpss4qWDAnv mNlefu5W1SDV5XFGRqgGqeoQSCaYndKcDdTDcMQZU5UvIm5+dBbYgfnF447SMaIYsvJ9SYcK g1mQQA7jrQXyNcIjuC1pACfxT2roZfNQ0g+4QC/soOZAuFRNNHNi2+AswCzARN8wGCxEwjpU J8sxpn20Qz2JcvR/BFhuc1UdF1T296LMSfHnXlkFIQ7+jKm9haLJN4Mv2gveh0xap1bIFcFh XM/XysBuve/21P6PcdKj36ZVqzGMIC8TYS0D6iKBjawSsEoKF7WlM2RWaJg9zm1zBJEfVAXN pCcfsKhZUv2+ow2pAdas9w1iOdxrghnnT27bcmil3yPiOPCDFbIF+ptGAbRNogRsfLcyC2Io o03H5bbm313DrehCgGJqtV7BQ5RfRAG6WXe8ZM/mhireVo4RgnMypb5ndscRmCSt/8Mx7mSo S3lBBMwJZiWrSSvFDhmo0tLMNvHNauTZ1phVcD1FVr3iXUlf6i166ITK8k+cbU9pb5syPd1S 78OfMDZWqZDTTHO+jI8a5jhrdw6JE77217WZyf1MiIie5NARhDS/oC2cwbq8h4IBHXluMY7p YqmyQ6GE4EIQB5vDZqNZf/2lwGxsHERlfhcRUzNJtUPKkzg/JI7eSP0h/4zZcoLLEyblDed0 g+XBzYepPXM89dlqomX2fjcot7wQeVkH0dcE23K1pqMNHHXrji53ItNcOeUZjSCBm75/aOVY +8KnfzxNfswmkkT79hxHrNt+qIJ59X1oohcwAk5Tm7AaE6mC+85L3SLgZtPu6lKyuMLsAe6Q BjTqNxTOLHMIcC8VVBIdFJjYeOE2vUZ3DLV6K1tckn94SZ2+puBUFlTb0bQ0n0DdOMtPdN32 /olte4X9xe71kggPOGAg30G7G+LNHEBD/gqu81IGoPtkQZ3mFhObYaGVn3z6ZCLLsxPawwke 2/MwqXFgLtYywzJdH9qTSrB2u9UhJIvvhFWzQ9dew7YxIKd3vJnjgdM9TkXTxhOykkV2exEP GU2ZVZ+Ir+D/ms1icVON4x299qt2PFEFo3NJ1o1eKnxSkCpUinULzR4N7/dpAYW9GVTejUd9 7adoIogvfAGY+mpthbem2Y8wxAgcTC13gLHkcGjWc+CGvHWpBL717S2azNgRwTPWKsMaY6um QWu1Ol1YKz/cyUXpsXXzmVcOas4EHi5GYCJfR2tEG7l040RlPFeFAVi83yMR/4=
- Ironport-hdrordr: A9a23:pO3TPaMht6HpX8BcTvijsMiBIKoaSvp037BL7TEJdfUxSKalfq +V7ZEmPHPP+VQssTQb6LO90cq7IE80l6QFhbX5VI3KNGLbUSmTTL2KhrGSpAEIdReOkNK1Fp 0NT0G9MrDN5JRB4voSKTPXL+od
- Ironport-phdr: A9a23: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
- Ironport-sdr: /hEgRgdWKVZ1v+1PL4vgBn0JPJ3NFRwq6pTTKmu/z8MvRhlsqsjqjNXrZ9XlCskrEvgzS9VbCc Vgeu1P1NHTzPvEzWXiXjXkMy8YZIdXkVJUayYxDsTiQBRMMV73G5EQ9a01z86RiaJnv3dtdxzO NmvMnCNIZgnISg4vfBBTt/O6VuW1gAA4Q5Lc6xMUyqrmmUbKEkzxfVUbNVOz8He0DaooIjRg9O ZfiZ8ITzCF0isQnjPPqdi6wi1Gv2EBgh6sd7HKNPElTVgXkCsmY9dzvCt3b99KeHkeuQ5cmdtm UNnlcZnYPddV9lz0GwPXjdd2
To add to Adam’s answer, the key tool to packaging structures in the Mathematical Components project (or, actually, the Hierarchy Builder tool, which is now a standalone project) are record types. They are quite similar to modules, but with a somewhat different trade-off in the precise functionalities. In particular, they are first-class types. The best reference I know of to compare the different forms of "packaging" available in Coq is this short abstract for the Types conferences, it might be of interest to you, although it’s quite short…
Meven LENNON-BERTRAND Doctorant, Équipe Gallinette – LS2N – Université de Nantes www.meven.acLe 13/03/2022 à 13:43, Adam Chlipala a écrit :
On 3/12/22 11:10 PM, Constantine Plotnikov wrote:
Module Type AbelianGroup.
Include Group.
Axiom comutative : forall a b : T, operation a b = operation b a.
End AbelianGroup.
[...]
Theorem plus_group : AbelianGroup with T := T, operation := plus, identity = zero, inverse = unary_minus).
(* proof that it exists with specified operators *)
End plus_group.
As you've discovered here, modules are not first-class in Coq. There is no way to define a module from within a Gallina term, just to reference module members. I suppose technically the Coq vernacular language could allow use of the tactic mode to define a complete module (albeit with the complication that the goal is no longer a Gallina term), but I don't think that support exists either.
You may not be aware that the style of definition you are pursuing is already one of the standard uses of Coq, rather than a fully novel experiment. The Mathematical Components project may be the most extensive work with algebraic hierarchies. They use canonical structures (a relative of type classes) instead of modules.
- [Coq-Club] Module types as types, Constantine Plotnikov, 03/13/2022
- Re: [Coq-Club] Module types as types, Adam Chlipala, 03/13/2022
- Re: [Coq-Club] Module types as types, Meven LENNON-BERTRAND, 03/14/2022
- Re: [Coq-Club] Module types as types, Pierre Courtieu, 03/14/2022
- Re: [Coq-Club] Module types as types, Meven LENNON-BERTRAND, 03/14/2022
- Re: [Coq-Club] Module types as types, Adam Chlipala, 03/13/2022
Archive powered by MHonArc 2.6.19+.