Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Typeclasses & Modules

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Typeclasses & Modules


Chronological Thread 
  • From: Vadim Zaliva <vzaliva AT cmu.edu>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Typeclasses & Modules
  • Date: Tue, 19 Nov 2019 09:22:46 -0800
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=vzaliva AT cmu.edu; spf=Pass smtp.mailfrom=vadim.zaliva AT west.cmu.edu; spf=None smtp.helo=postmaster AT mail-io1-f54.google.com
  • Ironport-phdr: 9a23:3cLycx1K+SspZ5N9smDT+DRfVm0co7zxezQtwd8Zse0SLPad9pjvdHbS+e9qxAeQG9mCsLQd17qd4vCocFdDyK7JiGoFfp1IWk1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZrKeTpAI7SiNm82/yv95HJbAhEmTSwbalvIBi5rgjduc0bjIh/Iast1xXFpWdFdf5Lzm1yP1KTmBj85sa0/JF99ilbpuws+c1dX6jkZqo0VbNXAigoPGAz/83rqALMTRCT6XsGU2UZiQRHDg7Y5xznRJjxsy/6tu1g2CmGOMD9UL45VSi+46ptVRTljjoMOTwk/2HNksF/g6xbrxChqRJxwIDafZ+bO+Zlc6zHYd8XX3BMUtpNWyFDBI63cosBD/AGPeZdt4TyqEEBoga/BQmpGejgySVHhnv33a0kyesqDAbL3BIhHt0UtHTUrcv1O70JXO+pyanI0C/PYO1L1jfg8YXFdA0qr/+LXbJ1a8XRyE8vGhvDjlqKrIzqISqZ2fgKs2eB8+VgVfijhHIgqwF0pDWk28QiipHRi44L1lzJ8T91zYU1KNGiVUJ2YN+pHIFQuiyVMYZ9X9ksTHtyuCkgz70LoZ67czYOyJQg3xPfbuaIc4mM4h76VeaRJip0iGtreL+/iBu+60egyur7Vsm71FZFsDBJncXLtnAIzxDT686HReVh/kq5xzqDywTe5vtHLE00j6bXNp8sz78qmpcTvknPBir2l1/3jK+SeEUk4O+o6+H/b7X4vJCTKo50igTkPqUvgMO/BeU4MhYUUGWA9+Wzyqbj/VHjTLpWi/02j7PVv47HKsQGvqK5GRNa0p4/6xajCDeryMgXnX4eLF5cZB2Hi5XpNErVLfDjDfa/hkysny1xy/DHOL3hGJTNIWLZnLfvZ7Yuo3JbnQE01JVU449eIrAHOvP6HEHr5/LCCRpsDQW4wuOvOtx5150XETaREKadMb3bmVSN+6QiL/TaN9xdgyr0N/Vwv62mtnQ+g1JIJfD0j6tSU2ixG7FdG2vcYXfohY1cQ2IDvw57TeuzzVPfDXhcYHG9W6967TY+Wtr/UdXzA7u1ibnE5x+VW4VMbzEUAVWRV3rkatfcAqZeWGepOsZk1wc8e/2kQo4l2wupsVammaVqNfaS8SgF85/vyYos6g==

Existing Instance did the trick. Thanks Clément!

Shall I file this as a bug?

Vadim


--
Vadim Zaliva A button for name playback in email signature 
CMU ECE Ph.D. candidate
Mobile/Signal/WhatsApp: +1(510)220-1060




On Tue, Nov 19, 2019 at 5:28 AM Clément Pit-Claudel <cpitclaudel AT gmail.com> wrote:
On 2019-11-18 21:07, Vadim Zaliva wrote:
> Example below demonstrates the problem I am having. I would like to define Module Type which is wrapper around a type and carries over an instance of a typeclass for this type.
>
> Then I would like to use it when importing this module.
> The direct approach does not work, as shown below. If there is
> any way to make |Et| visible to typeclass resolution mechanism inside |FooProperties|? It is visible in general, not just to typeclass search:
>
> |(* Custom equality relation *) Class Equiv (T: Type) := equiv: T -> T -> Prop. (* A module to wrap a type which has `Equiv` instance *) Module Type Foo. Parameter Inline t : Type. Context `{Et: Equiv t}. (* 'foo_ok' definition works here, as it finds "Et" as an instance of "Equiv t" *) Lemma foo_ok: forall (x y: t), equiv x y. Admitted. End Foo. Module FooProperties (F: Foo). Import F. (* The following prints: Et : Equiv t *) Check Et. (* The following fails with the error: Error: Unable to satisfy the following constraints: In environment: x, y : t ?Equiv : "Equiv t" *) Lemma foo_error: forall (x y: t), equiv x y. |

Try "Existing Instance Et"?



Archive powered by MHonArc 2.6.18.

Top of Page