Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Zify support for all instances of a type function

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Zify support for all instances of a type function


Chronological Thread 
  • From: Chantal Keller <chantal.keller AT wanadoo.fr>
  • To: coq-club AT inria.fr, Eddy Westbrook <westbrook AT galois.com>
  • Cc: Enzo Crance <enzo.crance AT inria.fr>
  • Subject: Re: [Coq-Club] Zify support for all instances of a type function
  • Date: Fri, 14 Oct 2022 07:47:36 +0200
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=chantal.keller AT wanadoo.fr; spf=Pass smtp.mailfrom=chantal.keller AT wanadoo.fr; spf=Pass smtp.helo=postmaster AT smtp.smtpout.orange.fr
  • Ironport-data: A9a23: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 aMJqayoja11pYMd0SqtRpKNJCwkgQ==
  • Ironport-hdrordr: A9a23:Mv658az3I+euxA2YipCvKrPw8r1zdoMgy1knxilNoNJuA6ulfr OV7ZYmPHjP+U0ssRAb6Ki90ca7L080maQFh7X5eI3SJTUO21HIEGgB1+TfKlTbckWUygce79 YFT0EUMqySMbEVt7ee3OD1KbYd6ejC1IztqO/Cwx5WID1CWuVFw0NZBgOce3cdeCB2Qb4UUL qkj/Aqmwad
  • Ironport-phdr: A9a23:mbxK0x0Tt3kiXAuUsmDOPA0yDhhOgF0UFjAc5pdvsb9SaKPrp82kY BaEo6491RSYDc3y0LFts6LuqafuWGgNs96qkUspV9hybSIDktgchAc6AcSIWgXRJf/uaDEmT owZDAc2t360PlJIF8ngelbcvmO97SIIGhX4KAF5Ovn5FpTdgsip2e2+4ZPebgZViDayZb5/L wi9oBnMuMURnYZsMLs6xAHTontPdeRWxGdoKkyWkh3h+Mq+/4Nt/jpJtf45+MFOTav1f6IjT bxFFzsmKHw65NfqtRbYUwSC4GYXX3gMnRpJBwjF6wz6Xov0vyDnuOdxxDWWMMvrRr0vRz+s8 7lkRwPpiCcfNj427mfXitBrjKlGpB6tvgFzz5LIbI2QMvdxeb7Tfc4BRWpZQMleSzBBDI27b 4sKFeUBPOBYpJT5q1YBqRayAA+hD/7txDBVnH/7xa403eouHg7IwQIuAdwOvWrUotr3KKgcX vu4zLXLwDjZc/9axTnw5YrOfxs8of+MR7Vwcc/JxEQxFwPKlFOQqZD/MDORy+8DtnaU7+5kV e2xkW4stgZ8rSSvxsg2jInJmpgaylTe+SV63ok1Idm4R1BhYdO/HppfrSeaOJFrTcMlRGFko ig6yqcftJO9YSMFx4gpyQTFZPybb4iH/AjjVOCJLDpli3xofKyyihSv/UWh1ODxS9S53VlUo ydEkdTAqmwB2wHP5sWJTvZw4kas1DKA2g3T6OxJJVw5mLTFJ5M9wbM9kIcYv0rEHi/zgkr2j amWe10r+uip9+TnYqjmqYSGO4BojQH+N7wimsO+AeQkMggOQnOU9f691L3k+0DyXbZEjuUun 6TarJzWP9kXqrCjDwNL3Ysv9QyzAymn3dgAnnQKLUhJdAyIgoXoIV3CPfP1Aemlj1ixkDpmx /bLNaD7DJrXNHjMirLhcK5960FCzAozyshS54lRCrEdOPL/QFTxtNnEDh8hNAy03vrnBM961 oMEQ22PBKCZP73IvV+G/OIjO+iMZIkLtzbhM/Uo5OLigWUklVMDZ6Wlw5QaZG6iEvh4IkiVe X/sjc0AEWcOsAo+VuvqiFiaXDFPZ3a9RaQ85i0hB4KiF4vDRZ6igLiF3CilBJ1bfW5HBUqKE XjyaoqEXPAMZDicIs97ijAEU6OuRJc71R6yrA/616ZnLu3M9yEFrZ7jzsR65/XPlREu8jx5F 9iS02aUT21tgmwIQyI207tkrExmylaD1LB4jOZCGdxS4fNJSAY6OoTGw+x0EdChEj7GK9yOU ROtRsisKTA3VNM4hdEUJw5QF9mzxi/OxDagGbgSlPTfG5Ev7qjG2H/yD8l0z3HHz+8qiFxwE eVVMmjzra528RTaA8bqnkGdmrziIa8c1SjR/WPFzmeKuExCeBF5V6zJWndZaFGA/oex3V/LU 7L7UedvCQBG08PXb/YTAjWIpVBPRfO5fc/bf3r0gWC7QxCB2rKLaoPuPWQbxiTUTkYewEgI5 XjTEw84C2+6pn7GSiR0HAfkY0rq7eB67nC2Sks51SmVZkto272yvBAP1rSHU/1G5rsfo286r ilsWlO03tbYEd2F8gFhdaNAaNd741pD0W/DnxN0OJWsKKckiERNOx9vsRbW3g5sQp5FjdBsr H4uy19qLrmE1Vpaaz6C9Yv1JqWRMWzu5Beyd+jRwFjY39vQ9L1nBO0QjVLlsUnpE0Mj9y8iy NxJyz6G4Z6MCgMOUJX3W0Jx9h5gpricbDNvr4XTnWZhN6W5qFqgk5ogGfclxxC8ftxeLLLMF Qn8FNcfDtSvL+pikkagbxYNNuRfvKAuOMbue/yD0a+tdOFu+VDuxW9H6YZh20bK9Cd4TuPS9 4kMxfiU2QzBWS29xFatv8brmJxVMCkIFznaq2CsD4pQa6tuOIcTXDf2ZZTtgI8i3di3BS09l hbrHV4N1c63dADHalX82VcVzkELuTm9niD+yTVokjYvp67Z3SrUwu2kegBUXwwDDGRkk1roJ pC5yt4AW039JQMpnR257EK8xKVfoKllB3baR05EeC+wIXsoAc7S/vKSJtVC7p8lq3AdW+S1Z 0yTTvj+rh8e3jnLAGJYzTw8cHekoN+q+n4ywHLYJ3F1on3DfMh2zhqK/93QS8la2T8eTTV5g z3abrSlF+Gg5s7c15LKs+TkEnmkSoUWay7gi4WJqCq842RuRxy5hfG63NP9Q0A21iry1t8iU iutzl60aYni0bizNaRkc01sCUXU9MN8E415lc0+ntkc1GMbiZOc4Xcc2Terd4wBn/iiNjxXG 3YC2Lu3qED91VdmL26Vyo6xTXibzsZ7JpG7bm4QxiMh/pVPAaaQ4qZDmHg9qV65oATNJPlly 2dFj6J0riRG2adT5llIrG3VGL0ZEEhGMDa5kh2J64r7t6BLfCO1drP20kNinNenBbXEowdGW X+/dI1xeE04psh5Ll/I12X+r4/+f9yFJ9kTvxuImhOGjOVRLJ8rvuUDgyNrPmW7s2dvmItZx VR+mIq3uoSKMTAn96KwBAJRMnv2ascX9yvFkq9Yl8qR2MahBN8yf1dDFIutRvWuHjUIsP3hP AvbCzwwpECQHr/HFBOe4kNr/DrfVoqmPHaNKDwF3M1vEVODcVdHjlleD1BY1tYpUxqnz8v7f AJl6yANsxTm/wBUxLsgNgGjADeH4l7yLG1oEt7Ha0ALpgBauxWFaYrHtKQpQ3sep8fx61bcT w7TLwVQUTNQCxfCXQ25eOP1o4OZq6/DX6K/N6ecOOTV77YDDbHSntT1i9EhpG7EN93TbCAzV LthhxAFBys/RZq8+X1HSjRLxXucNIjB+U36oHcx9oflrbzqQF69vNrUTeEPa5M1oVbs2P/Eb Lf15m4xKC4EhMpdnjmSleJZhgRU0Xg0MGL1WeMJsSqHJE7JspdeFAVTKyZ6Nc8Sqrk5whEII 8nQzNX8yr9/iPcxTVZDT13o3M+zN4QGJGS0NVWPA0juVvzOPTrQ38T+er+xU5VLiflM8Qa1p S6cDlOlOS6KkTbkER61ee1BlyCUOhVCtZr1Ik4rUDKlFo68LEfleNZs6F9+iaU5nHbLKXIRP XBnfkVBo6fRpSJUj/NjGnBQu3poKe7X0y2d7uTeNtMXqa47WmItzaQAvC58keUGiUMMDOZ4k ybTsNN09lSvk+3VjyFiTAILsDFAwoSCoURlP6zdsJhGQ3fNuhwXvgDyQ1wHocVoDtr3tuVe0 N/Kwej4KD5E79vQu8gRA8zZMuqYOXwoPR3uXjDORlhgL3bjJSTEikpRnevHvGWStYQ/o4Pwl YAmUbpHTBouE+8CDVl5WtsYKZF4U3Uqi/TI6axArWr7px7XSsJAu5nBXf/HGvTjJgGSirxcb gcJy7f1fswDc5f20Et4ZhxmjZzHTgDOCMtVrHQrPWpW6A1dtWJzRWop1wf5ZxOxtTUNQOWsk Ed+ixMiM7R1sm62pQ1rfByS43Ft2EgpxYe12XbIKnircP32BNsGTHCl0ip5epLjH1QsPFb0x xE+cm2fAegI1/w7LChqkFOO4MoUX6QBF+seO1lKnKvQPK1g0EwA+Hz2ngkduLGDU8AkylVPE 9bkrmociVsyN5hvePaWfvAPlh8K2+qPpnP6j7FqhlVDfQBXqiXIIXZP4xVtVPFuJjL0rLU9s krYxmEFIjJKDaNw5akyvhQ0P+DKp8oB+6VGNlj3LOmDN6SEpy7Hj8eOTV522FlaziGtEpBp2 MEqf02TEU41nuL5//EhKsPEIA1SaIxc7iqLFRs=
  • Ironport-sdr: 6348f7f9_sJOPhbynXsCHRfc9Ox0cVBskGGNWOxPAg/axShmI8YdXDUC Oi0w/yKjVA9vfO+gfOAXYJB3qSG2bsnDfugzBMQ==

Hi Eddy

As Pierre wrote, Trakt is able to do what you want. You can find examples here: https://github.com/ecranceMERCE/trakt/blob/master/example/Example.v#L303

The documentation is available here: https://ecrancemerce.github.io/trakt/#/

Best
Chantal



Le 14/10/2022 à 01:46, Eddy Westbrook a écrit :
Mukesh and Pierre,

It’s ironic that you would say that, because we actually go the other
direction, and only translate to Coq when we can’t just solve something with
SMT. Unfortunately, while SMT is good at proving properties of concrete sizes
of bitvectors, it is not good at proving properties for all sizes of
bitvector.

Back to my original question: is it maybe the case that Add Zify is just a
thin wrapper around adding some hints to a particular database? If so, could
I add them in a way that generalizes over the width value?

-Eddy

On Oct 13, 2022, at 2:07 PM, Pierre Vial <pvial2401 AT gmail.com> wrote:



Le jeu. 13 oct. 2022 à 22:46, mukesh tiwari <mukeshtiwari.iiitm AT gmail.com
<mailto:mukeshtiwari.iiitm AT gmail.com>> a écrit :
This is not an answer to your question, but have you seen SMTCoq [1, 2]. I
haven’t used it in my projects but SMT solvers are good with length indexed
vectors so most of your problems can be solved (but I could be wrong).

[1] https://smtcoq.github.io/ <https://smtcoq.github.io/>
[2] https://github.com/smtcoq/sniper <https://github.com/smtcoq/sniper>

I have a type function bitvector : nat -> Set that constructs the type of
bitvectors (binary numbers) of a given bit width. Is it possible to get the zify
tactic to support the class of types bitvector w for all w? The existing Add
Zify commands seem to only work for a specific type.


Mukesh is right, Sniper not only features SMTsolving, but also Trakt which
allows you to quickly implement an equivalent of zify w.r.t any integer type
you want.
You will find examples on the sniper repository but also there (
https://github.com/ecranceMERCE/trakt <https://github.com/ecranceMERCE/trakt>
) and I think Enzo Crance will be happy to answer any question you have on Zulip.

--
Pierre





Archive powered by MHonArc 2.6.19+.

Top of Page