Skip to Content.
Sympa Menu

coq-club - [Coq-Club] question about developing and instantiating Coq libraries

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] question about developing and instantiating Coq libraries


Chronological Thread 
  • From: Andrei Popescu <andrei.h.popescu AT gmail.com>
  • To: coq-club AT inria.fr
  • Cc: Dmitriy Traytel <dmitriy.traytel AT googlemail.com>
  • Subject: [Coq-Club] question about developing and instantiating Coq libraries
  • Date: Thu, 22 Dec 2022 16:04:36 +0000
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=andrei.h.popescu AT gmail.com; spf=Pass smtp.mailfrom=andrei.h.popescu AT gmail.com; spf=None smtp.helo=postmaster AT mail-yw1-f179.google.com
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:GNYABK6M5rCkI20BIAPXwMvXdLJyesId70hD6qm+c20zTiX4rb HJoB1/73XJYVkqKRIdcLy7WJVoIkm8yXcW2/hyAV7KZmCP01dAR7sSiLcKrQeQfxEWNdQw6U 6jScVD4RHLYmSSRPyV3DWF
  • Ironport-phdr: A9a23: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 UNg/A==
  • Ironport-sdr: 63a48021_INan8Ic1zkb6jHKRwfDH0qm6hXD6HApfDanxk0esGhuNCDw 3oosPYkGPTOiG1OoJ/GI4cIVulXo82CeGDkS4nw==

Hello,

I am working (with Dmitriy Traytel, in CC) on a problem motivated by
simplifying the formal developments in Isabelle/HOL, and would like to
know to which extent this is also relevant for Coq. I would appreciate
any insight on this from people who develop or use Coq mathematical
libraries.

Let's say one has libraries L_1, ..., L_n containing theories of
algebraic structures (such as groups, monoids, relation algebras
etc.). Then say one has a concrete type T and operations on this type,
in such a way that, for any i between 1 and n, the restriction of some
of these operations on a subset A_i of T forms an algebraic structure
satisfying the assumptions of library L_i. And say one wants to prove
a result that needs to instantiate results from all of these libraries
to T. (For example, T could be the type of relations on S for some
type S, and we may want to instantiate: results from relation algebras
to the entire type T, results from groups to the restriction of T to
bijective functional relations, etc.)

My question is: What is a good approach to achieve the above, and how
are things currently done in Coq? Three approaches come to mind:

(1) Put the burden on the user who instantiates the library: Develop
the libraries without explicit carrier sets. Then the user would
seemingly have to introduce custom types different from T
(corresponding to the subsets A_i) in order to instantiate the
different libraries, and then some transfer would be necessary in
order to apply them to T.

(2) Put the burden on the library developer: Develop the libraries L_i
not considering the entire type as carrier, but maintaining explicit
carrier sets (subsets of the entire type) and assuming that they are
closed under the operations (e.g., by giving a more specific type for
these operations). Then instantiation can go smoothly, but with the
price of dealing with additional bureaucracy when developing the
library.

(3) A hybrid between (1) and (2): Develop the libraries without
explicit carrier sets, and then, for the main (to be exported) results
only, infer carrier-set-based versions -- so that one still achieves
instantiation flexibility.

I would very much like to hear your thoughts. Also, I apologise for
the potentially naive suggestions included in the above analysis -- I
am not a Coq expert.

Best wishes,
Andrei


  • [Coq-Club] question about developing and instantiating Coq libraries, Andrei Popescu, 12/22/2022

Archive powered by MHonArc 2.6.19+.

Top of Page