coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Michael Shulman <mshulman AT ucsd.edu>
- To: coq-club AT inria.fr
- Subject: [Coq-Club] scoping of computational behavior
- Date: Tue, 3 May 2011 14:01:21 -0700
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type:content-transfer-encoding; b=coAvhXmXcRMnt9jumvS7i8b5ORAMmYCV3EHzYCGeZunc/vGBBznSjpakFiPvdo0ALI pjcFxhmOOuJgWtf7/80qqZib/GOeRgSt551UwI0WiH7TK+K6BUeH9RQzgkNt8B2auAxv uQP0iUhkMqHY73jjmczbHzfKBo3YxM0zi+0e0=
Hi everyone,
Is it possible for the definitions in a module to not be in scope, but
for its computational behavior to still be evaluated? If a module is
pulled in with "Require" (but not "Import"), then its computational
behavior is evaluated, but its definitions are still there and can be
accessed with "Module.definition", they just haven't been aliased into
the unqualified namespace. On the other hand, if a module implements
an abstract module type, then its definitions are only visible insofar
as they have the types specified by the module type, but its
computational behavior is also hidden. (These are my understandings,
but please correct if I am wrong, or if I am using the wrong words.)
This question came up here:
http://homotopytypetheory.org/2011/04/23/running-circles-around-in-your-proof-assistant
where the ability to do something of this sort in Agda is convenient,
but we were unable to replicate it in Coq. A suggestion was made that
this is an intentional part of the design of Coq, so that "the types
of a client of an abstract module don’t depend on the implementation
of that module". Is that correct? Is there a way to replicate this
trick in Coq, or are there good reasons that something of this sort
should never be allowed?
Thanks!
Mike
- [Coq-Club] scoping of computational behavior, Michael Shulman
Archive powered by MhonArc 2.6.16.