coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Maximilian Wuttke <s8mawutt AT stud.uni-saarland.de>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] "Opaquify operator" to simplify work with dependent types
- Date: Tue, 15 May 2018 18:51:35 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=s8mawutt AT stud.uni-saarland.de; spf=None smtp.mailfrom=s8mawutt AT stud.uni-saarland.de; spf=None smtp.helo=postmaster AT triton.rz.uni-saarland.de
- Autocrypt: addr=s8mawutt AT stud.uni-saarland.de; prefer-encrypt=mutual; keydata= xsFNBFWVkZsBEADmp2Mq5XZcOg38F91SMR5uF8cqC7LaODrnF+xh3TNKgbK301sPwcSKA4gr +TKV73e4VQoWihiWaYfPJYHsudXrp644dqYvWuxNWlkh4S2HIOmcopuTEd063TL5hRvhkg0V ZOMq000ucKo0yBsUux7+TdZdDAX3WP1whF7jY8OTe5xnEO3yv4xydAZhbT/gMO/IW6BVE2xO eElXEwC8Tnssar8cM0wZcnxgKXq4dhjDO6sSkeaf81a6FPlpy+VuCIHFYoFIAquX6T6V+Zbi UXJyDSUSUVVmechLA8vXmiRgOTyVMdTejXQb5niLGjb/Upvy9uSlO7eR0aSkCs3vqeXIppmS PDTKVwPso/PmJHEJnZLrbXKqqh589pbDAdYfJvP3Sg0fncL5bzxV0gdSqWH0t0e7c9AMiHs5 5bxEHBXuVtNs1srF52gT0KlE84R2UOmZ9Kst7P3XgJtIGzuS5uSHqFmtknh9tj+/G/Kg3qDz njxM6xTGExNPHQuskwbvYDqA6/5Hslqis6D6EpMPGhRuUhPuE5Eb+PsxpV26UccZt51FqIIc Mwv+3AUPbF7v7s7rAE1BkbmClUGuYUGfqfndGT4V6fLpQH5F9kRdxmIm9FcMURUDvX4CBKZz gmwIZ4jgZ2jZ1VTy+MWIXRpgJIt5aim4liycyDoPk+fyYfdmQwARAQABzSdNYXhpbWlsaWFu IFd1dHRrZSA8bXd1dHRrZTk3QGdtYWlsLmNvbT7CwXAEEwEKABoECwkIBwIVCgIWAQIZAQWC ViZaNwKeAQKbAQAKCRDtV7tm27383rSlEACQWMbiBNwU4PwlFg2EEcOpRfUQFeXnxjQUbe0J g38Y33w4bRb5Vy5xw34F8+GEL0UV2j4R5VlXpoD+RuLfLPoeqZwqD2RiBK8rCNmg/lt4cWWL fSCS2HlPXrxFWcH9uIWIJEqMmqq7PAe92FMNtxKQBocICj3Dsr+AUf2ySkuIEf/pH5akmuoN rXn96eB3CSrUgxDoUi10aqQWxGBfACjp0vEOGDMWFhmolTq4i6T8PmRTpepLwmnT04XqK2fg H9g5OzSbC6xAvD1axvbLLQs0wW/DpmUpCGkJbl0j5G76noUAA6GyOHt1d39qVtwS5TxaCmEd ku7KU+1zkwWTlvFTyNn/cMojGXsR4YPV+ESg4n0zn/B2Omg1J5iQUpZU83SjpBdw2xssVAfH SE7P4UIzdOwCkcfxGArFwenwA7R4hvL1Ya1knJhAudBmHcj0BQQlhE56eDeV2KKwzIPT/Qzl 5lPCUoEj5T3aAoTh7TCb+PI+NZ4DO/wGZ5z898L9QIMa3C1bBYNh5t4uFIgWQkQOOccsIHD6 NQQ8VtHvJA4LwjV13NyztHJ3eBs5dt7ov/e1fKjXJ/rphwSKwkB5yG3rxe6keEecTNDrWE85 4ofSETer5XHrzSlmFn1i4ar+jsRf5FWA2nxjdr8z/MIFX0lyGkltrkveUyU7t2Xqfc8OFM7B TQRVlZGbARAApgVrdjp3kPfhiRo0Fi+NTeZSVpLa6ruSGhXGGc+Jp3j3o/OnGkXvqvCkBuHv 5X5qrEUOV2bJ2NXdEQ+AkqTmGeEnad2W1qjLQK3MU6NRXYqTPO8bZhcANIoKq8uu1XHfB8DE 5XGM86UXMbnua9l3cxSXE4Yk+81sUklj3w7ONAZ4K6QhMw7iaK+5uVKUnLyE2TBsyCQB8GS4 hM1eWWst9PFyHrCKS6diUOu0jZfX+HrKBef+bx1hbMMa/zQ/LNUdY0zPslLlS4Ps+SRrOSov Mf0dD7GPbHso5Ygez0FCn306tl9QxwPngR+gzQlQbmSrRezT31nhQQUDY+X7yaefvPs01nUl I3TGNS7GEy7l14iQoSPxcbAH7o5dgSEXeZ2HlPb0LgscOmnd+lr0tT7wOWmrQcmXAHHmeBc5 8CZmsoAmGLLyRPcB82ySJVbGBiBrYqTaS7y9XgOQxqLuTMrjm3T9wPB2C6B5yTzfH/vJH1ci sHCW3w3ht0ndRFs62e4a5iMzlFO2qlp2NUsuv5l2Eo90zuq09+cei2NGr5tqfVN0D/OUI5b6 ziD3nmS9p9jb2qeHHnjL4NAlTAQsBkJMDR9P94ezSfoz+Agt6kyV4FHtJMD5eqcjlpaVafc+ nqcjy3dvPRPqwUShwP75gk0Sv8nvJ269w1ojziPTeJEx8+MAEQEAAcLBXwQYAQgACQWCVZWR mwKbDAAKCRDtV7tm27383gYkD/9/bWgXr9cKXJOduw1IEou9u1v0KMrH71zoHqTWod49LKUV /4GysoUwR23KfjRt9WdCpDUbM0UVvMaIWRSXAzUFkxHSiCXpqG0kvczhN/tGRXoVSGSi/kfB ghcOPH1Z1ugs8/Pg1CSiaBxbJzS8Cd20vW9gWLNUuTEh1aiee/XUzgyhDJsKO/2Wb5TCaiou RK+tafcXpEw/CxzgdYNEeIFg2QLFgaV9V9BrHW7cQ0fsp8SdkAQSjFIGRqFrVO//TrAeND3D 7tnC56IHjwwJCV4MzjE/4Z6ib9UiETF3JKsC0ZkQ/sOMKlxdNgvrj3UbWAN1K2nNJTSh0orG nfFSAHuAW56AGwzh1ebTZDq3Ov6hUuQJ5MZaV3f8N/IhVWLd/bD6D4kQTxbvUbG4jDgjC7Fe vSwajWAecfwIPmTLT90Zh9brjihnoNBHMOqn7uwk0ahI6YRsnmTsiCQ+XBvjWM0TPWaKr8Ai V4ONWAzpk/WDh5UBaCMBMWp+/3L9ZHW3UG+tyiAYp1Ut9GvqQNjA/YbPMIbPYqJW2U9o+/nZ Rg9r3NfohPmEQ6rgZIBWjYgfC26TIbXSXuxqersnqzkK6Y26QPO4nEn4SA1gjFoS126NQ8nG VFBwXCqNssS3YtAEmK/DNGFGZB9DPm23dzv3tOy2jzvlNGC8Ue757NK2KZv17A==
- Ironport-phdr: 9a23:rkutRxMkotH7vURunf4l6mtUPXoX/o7sNwtQ0KIMzox0Iv3+rarrMEGX3/hxlliBBdydt6ofzbKO+4nbGkU4qa6bt34DdJEeHzQksu4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1Ov71GonPhMiryuy+4ZLebxlGiTanfb9+MAi9oBnMuMURnYZsMLs6xAHTontPdeRWxGdoKkyWkh3h+Mq+/4Nt/jpJtf45+MFOTav1f6IjTbxFFzsmKHw65NfqtRbYUwSC4GYXX3gMnRpJBwjF6wz6Xov0vyDnuOdxxDWWMMvrRr0yRD+s7bpkSAXwhSkaKTA5/mHZhM9+gq1Vrx2upQBwzYHPbYGJN/dzZL/Rcc8USGdBWMtaSixPApm7b4sKF+cPOvxXrob8p1sLrBu+AQisC/npyjRVhnD2wLE60/giEQ7YwQctGMkOvXfRrNrvOqYSTPy1zLXTwDXYc/NWxCry5JLVchAnoPGARKlwftDLxkk1EwPKlFOQppH/MzyIyOsAqm6W5PduW+Kojm4osQBxoj63y8ctjInJmpwaylTe+Spk3ok4I8CzRk1jYdO8DZdduS6XO5FyT84jWW1lujw2xqMGtJKjYSQHxpsqywTbZvGGaYSE/xHuWeeLLTtlin9ofq+0iQyo/ki60OL8U9G50FZUoSpBldnBrmwN1wbS6sibTft9+F2t2SyO1gzJ9+FEJ0E0mbPAK5E72LEwjJ4Tvl7FHiDrgkn5kbGZel0l+uiu9evnfq3rqoKSOoJ7kA3zNqUjlta9DOgiLAQDX3CX+eGm273i+U35Tq9KjvozkqTBq5DXJsEbqbS3Ag9IzoYj9w2yDyy60NQFgHYLNk9FeBSGj4TwIFHBOur3De27g1u2ljdk2urKMaD/DZnVNHjMjK/hfaph605b0Ac80ddf54tNBr4dJPLzR1T+ucfDDh45Ngy02/zoBM981oMYQ2KPA7WWPLncsV+StaoTJLyHY5ZQszLgIdAk4eTvhDk3gwwzZ66siL4eeHG9H/BnKkPRXmfwntQMWTMR7g83U/H2lHWZTSNfIWu0Xucn7zghDIugAcHPS9b+0/S6wC6nE8gONSh9AVeWHCKwLtTWa7I3cCuXZ/RZvHkBXLmlRZUm0Ev05hTm1rYhM+zVvzYRvIjn3d55oeHex0lrqW5ESv+F2mTIdFla23sSTmVsjrtjvEA711GClLNxiuZcHNpfof9EAF9jaMzsitdiAtW3YTrvO9eETFH8HYe6GzAtSdR32c1IfkB8Xs6rhwrH1iymRbMYxeSG
- Openpgp: preference=signencrypt
Hi Michael,
have you tried something like:
~~~~
Set Implicit Arguments.
Definition opaque X (P : X) := P.
Arguments opaque X {P}.
Check @opaque _ (ltac:(omega) : 1 < 2).
~~~~
which gives
~~~~
opaque (1 < 2)
: 1 < 2
~~~~
(Alternatively, if you construct the term using a proof script, `apply
opaque` also works.)
However, this doesn't really remove the proof from the proof term, it
just "hides" the proof while printing, I.e. if you use `Set Printing
Implicit`, the proof term is still shown.
If you want to make the actual proof "opaque" in the sense of "Qed.",
you could use the tactical `abstract`, for example:
~~~~~
Example ex : 1 < 2.
Proof.
abstract omega.
Defined.
Print ex.
ex = ex_subproof
: 1 < 2
~~~~~
However, this only works (AFAIK), if the proof consists of just one tactic.
Then, there are other possibilities, for example using Program.
Sincerely
Maximilian
On 05/15/2018 06:10 PM, Soegtrop, Michael wrote:
> Dear Coq Users/Team,
>
>
>
> I did some experiments with dependent types again, and I think the thing
> I am sometimes missing is an opaquify operator. Terms of dependent types
> usually contain a mixture of “data” expressions one is interested in and
> “proof” expressions for which just the type is interesting. The idea is
> that if I have a term, opaquify(term) makes the term as such opaque,
> only the type remains visible. The term cannot be unified any more, only
> its type. When printing an opaquified term, it is printed as something
> like opaque:<type> or maybe just opaque in case the type can be inferred.
>
>
>
> I can use notations and to a certain extent opaque proofs to hide the
> proof parts of terms of dependent type, but sometimes I think it might
> also help Coq’s performance to know that it should never look into the
> term as such, just as if it would be an opaque proof term. Another
> benefit would be less distraction and maybe a better understanding of
> the users.
>
>
>
> My question: am I doing something wrong when I end up at this thought?
> How are others handling this?
>
>
>
> Best regards,
>
>
>
> Michael
>
> Intel Deutschland GmbH
> Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
> Tel: +49 89 99 8853-0, www.intel.de
> Managing Directors: Christin Eisenschmid, Christian Lamprechter
> Chairperson of the Supervisory Board: Nicole Lau
> Registered Office: Munich
> Commercial Register: Amtsgericht Muenchen HRB 186928
>
- [Coq-Club] "Opaquify operator" to simplify work with dependent types, Soegtrop, Michael, 05/15/2018
- RE: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Jason -Zhong Sheng- Hu, 05/15/2018
- RE: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Soegtrop, Michael, 05/16/2018
- Re: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Fabian Kunze, 05/16/2018
- RE: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Soegtrop, Michael, 05/16/2018
- Re: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Fabian Kunze, 05/16/2018
- RE: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Soegtrop, Michael, 05/16/2018
- Re: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Maximilian Wuttke, 05/15/2018
- RE: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Soegtrop, Michael, 05/15/2018
- RE: [Coq-Club] "Opaquify operator" to simplify work with dependent types, Jason -Zhong Sheng- Hu, 05/15/2018
Archive powered by MHonArc 2.6.18.