coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Gert Smolka <smolka AT ps.uni-saarland.de>
- To: "coq-club AT inria.fr Club" <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] Turn a definition opaque
- Date: Wed, 24 Apr 2019 09:43:26 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=smolka AT ps.uni-saarland.de; spf=Pass smtp.mailfrom=smolka AT ps.uni-saarland.de; spf=None smtp.helo=postmaster AT thyone.hiz-saarland.de
- Ironport-phdr: 9a23:LzB8VxwwdHlIWEHXCy+O+j09IxM/srCxBDY+r6Qd1OIUIJqq85mqBkHD//Il1AaPAdyCra4VwLOM6+jJYi8p2d65qncMcZhBBVcuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6JvjvGo7Vks+7y/2+94fcbglVmTaxe7x/IRG5oQnMqMUanZZpJ7osxBfOvnZGYfldy3lyJVKUkRb858Ow84Bm/i9Npf8v9NNOXLvjcaggQrNWEDopM2Yu5M32rhbDVheA5mEdUmoNjBVFBRXO4QzgUZfwtiv6sfd92DWfMMbrQ704RSiu4qF2QxLulSwJNSM28HvPh8JwkK1Vrx2uqQFxzY7afo+aNvlwcKTGcNMGXGpBW9pdVyxdDo6+aYYEEuoPPfxfr4n4v1YArAWxBROwBOjy1zFIg3j23ak50+s7DArL2xcgH9cJsHTQr9X6LrwfUfiuzKXS0DXDafJW1S7m6IfSaB8hu/WMUqh2ccXM00UgCh3Kg0yWpIf4PD2VzvwAv3WV4udvT+6ij28qpxtzrzS12MshhJfFipoRx13K7yl13YI4KN6iREJlYdOoDoFcuz+aOodoRM4pXntmtzwgyrIcvJ62ZCgKx4ojxx7Yc/GHb4iI4xLkVOaXPzh0nnJleLO+hhqr6kiv0PfzVtOw0FlQqCpKj8PAuW0T2BDL68iHTOVy/lu51DqS2Q3e5ftILEQ1mKbBKZMt2KA8m5QNvUjbGy/5gkT2jKuYdkU+/eio7vzqYq7jpp+bM490iRvxP782msykG+g4Lw4OX2mC9eSnzrLs51f5QLFQgf0wj6bVqo3VKtoDqq6jHwBVypoj6wq4Dzq+zNsYmmAHIEtZdxKDkojmIErDIOv4DPe6m1Sjii1nx/HAPr37A5XCNGLPkLn7feU110kJggE01JVU449eIrAHOvP6HEHr/PfcExVze1i/xP+iA9Fg3KsfX3iOC+mXKvWBn0WP47cALvOQLLQQvzL+IrBx/PvpiXwwsUcGO7Sv3N4MYXmiGv1gLwOVbCy/0Z86DW4Ws19mH6TRg1qYXGsLPirgb+cH/jg+TbmeI8LbXIn32O6Zx2GmGJwTfWlPEFSFF3uue4jWA65ROhLXGddol3k/bZbkS4Il0kvy5hP62r1hI6zU+z9drpvqztx84eGVmRxgrWUlXfTY6HmESiRPpk1NQjY32K5lpkknkgWbyu5lhf0dDtVa/fdAVAt8OZOOluE=
On 22. Apr 2019, at 19:51, Xavier Leroy
<xavier.leroy AT college-de-france.fr>
wrote:
>
> I, too, would like "Opaque" to completely hide the definition of a name,
> instead of just making it harder to unfold.
I fully agree.
To give an example, if you want to provide propositional equality but *hide*
its definition,
you may write
Module Type EQ.
Parameter eq : forall X, X -> X -> Prop.
Parameter Q : forall X x, eq X x x.
Parameter R : forall X x y (p: X -> Prop), eq X x y -> p x -> p y.
End EQ.
Module EqLeibniz : EQ.
Definition eq X x y := forall p: X -> Prop, p x -> p y.
Definition Q X x : eq X x x := fun p h => h.
Definition R X x y p (f: eq X x y) := f p.
End EqLeibniz.
Open EqLeibniz.
With a real “Opaque” you could just write
Definition eq X x y := forall p: X -> Prop, p x -> p y.
Definition Q X x : eq X x x := fun p h => h.
Definition R X x y p (f: eq X x y) := f p.
Opaque eq Q R.
Much easier to explain to students who don’t know ML modules.
Gert
- [Coq-Club] Turn a definition opaque, Jason -Zhong Sheng- Hu, 04/22/2019
- Re: [Coq-Club] Turn a definition opaque, Gaëtan Gilbert, 04/22/2019
- Re: [Coq-Club] Turn a definition opaque, Xavier Leroy, 04/22/2019
- Re: [Coq-Club] Turn a definition opaque, Gert Smolka, 04/24/2019
Archive powered by MHonArc 2.6.18.