coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Pierre Courtieu <pierre.courtieu AT gmail.com>
- To: Frederic Blanqui <frederic.blanqui AT inria.fr>
- Cc: "coq-club AT inria.fr" <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] Inductive data types modulo equations in Coq
- Date: Wed, 15 May 2013 22:55:03 +0200
It hasn't been implemented, mainly by lack of interest compared to proof irrelevance. Since PI did not make it I may try to implement it one day...
P.
Le mardi 7 mai 2013, Frederic Blanqui a écrit :
Most of the time it is worth trying to define a free inductive type that correspond to the quotient you have in mind. If this is possible and you still want to consider it as a quotient then you should have a look at Cyril Cohen work: http://perso.crans.org/cohen/work/quotients/
The idea is to already have one type on which you want to build a quotient, and another one that has the structure of the quotient. The technique (heavily based on ssreflect technology) consist in considering one inductive type as the quotient of another one.
The idea is to already have one type on which you want to build a quotient, and another one that has the structure of the quotient. The technique (heavily based on ssreflect technology) consist in considering one inductive type as the quotient of another one.
P.
Le mardi 7 mai 2013, Frederic Blanqui a écrit :
Hello.
For references, there is also Pierre Courtieu's 2001 PhD in French: " Représentation de structures non libres en théorie des types" and his CSL'01 paper "Normalized types". But I don't know if it has been implemented.
Best regards,
Frederic.
Le 07/05/2013 17:08, Arnaud Spiwack a écrit :
None that I know of. And I've just heard of the prototype, I don't know who wrote it.On 05/06/2013 11:22 AM, Arnaud Spiwack wrote:Is there a good reference using this technique or
The normal method in Coq is indeed to define a setoid equality on lists.
should I cite this as folklore?
I don't think there is anything specific. Setoids as a way to do mathematics go back to Bishop's 1967 book Foundations of constructive analysis (although he didn't call them that way). It is a common way conduct mathematics in Coq. Or in a constructive setting in general. The current implementation of so-called setoid rewriting in Coq is due to Matthieu Sozeau (see A New Look at Generalized Rewriting in Type Theory).Let me understand some things:
An alternative method of defining quotient has been played with in the recent month within the framework of homotopy type theory: higher inductive type (in which case it would work nicely with Coq's native equality rather than a setoid equality). It is not available in Coq yet (though I understand there is a prototype out there).
* The identity type of HTT would then be a new proof-relevant
propositional equality type in Coq, while the definitional equality
stays the same?
* This new equality will not be an automated Leibniz equality and
people want to write out substitution "transport" explicitly
(because of proof-relevance)?
* If this is true, the identification of constructor terms will only
be possible by manual application of the equality proofs? Is that
not worse than using rewriting with a setoid equality? The benefit
over using setoid equality will therefore only be that functions
over the higher inductive type are automatically invariant under
homotopic transport?
Well, you shouldn't focus on the proof relevance thing. It's not relevant to this particular application. All in all, it would be pretty much like the setoid situation, but internalised within the native equality. Resulting in a lot fewer proofs obligations to be discharged by the user, and much smaller proof terms.
Is there some writeup of the Coq extension yet?
Alternatively I would like to name the (future) implementors of
this Coq extension and not just point to the homotopy blog.
I forgot another approach to quotient, a bit like what Moca does, but without the automation. The idea is that if you have a notion of canonical form, and a test for canonicity the (dependent) type { x:A | canonical x = true } happens to be a quotient (in fact a retraction) of A for the equality of Coq, without any proof obligations to prove ever. It's been perused in Cyril Cohen's PhD. That so
- [Coq-Club] Inductive data types modulo equations in Coq, Andreas Schropp, 05/05/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Arnaud Spiwack, 05/06/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Andreas Schropp, 05/06/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Arnaud Spiwack, 05/07/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Frederic Blanqui, 05/07/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Pierre Courtieu, 05/15/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Frederic Blanqui, 05/07/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Bas Spitters, 05/14/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Arnaud Spiwack, 05/07/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Bas Spitters, 05/14/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Andreas Schropp, 05/06/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Frederic Blanqui, 05/06/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Andreas Schropp, 05/06/2013
- Re: [Coq-Club] Inductive data types modulo equations in Coq, Arnaud Spiwack, 05/06/2013
Archive powered by MHonArc 2.6.18.