coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Meven LENNON-BERTRAND <Meven.Bertrand AT univ-nantes.fr>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Module types as types
- Date: Mon, 14 Mar 2022 09:29:24 +0100
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=Meven.Bertrand AT univ-nantes.fr; spf=Pass smtp.mailfrom=Meven.Bertrand AT univ-nantes.fr; spf=None smtp.helo=postmaster AT smtp-tls.univ-nantes.fr
- Ironport-data: A9a23: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
- Ironport-hdrordr: A9a23:vfi946m/7tYD4fAcJlWvoAbNf2XpDfIT3DAbv31ZSRFFG/Fw5P re+sjztCWUtN91YhtPpTnuAtjifZqxz+8P3WBVB8bZYOCEghrLEGgB1+vfKlTbckWUmoFgPO VbAtBD4bvLfDxHZK3BkW6F+rgbsaC6GeyT9ILjJqhWID1XVw==
- Ironport-phdr: A9a23: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 5eqs39bnQx5PoddGA==
- Ironport-sdr: NPsD5U+n55kJvxv78qMMdAICm6riy8ic1C+AgCmhVmI5fltXAlXMQHlnNJE0NJK4C1fnMC9ljE AewCrK8/KzlVYq+P4e9znOn/NwO7Ee+jnoQT0uLKGN1V367F4ACie0FG0czoarc50LGHSA5QBV VpL7U+lx1p1yjYVx1n5hEJRw6oflh1f80yVKQBzV4RFqCRrROm7b9grcTDTCE7lVQKgzM66YQ1 BMPkfn1TO5PhA/6nUI2EcRAjr0M/80BFcWxUXC+RVVpXTfrhBxrejJNv5ozwFKB05Nqz0DiA9k /BBlQJk+L/0jrMgkYWRPRlFw
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.ac
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+.