Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Using patterns as arguments to Ltac tactics

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Using patterns as arguments to Ltac tactics


Chronological Thread 
  • From: Gaëtan Gilbert <gaetan.gilbert AT skyskimmer.net>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Using patterns as arguments to Ltac tactics
  • Date: Thu, 20 Jul 2023 07:54:44 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gaetan.gilbert AT skyskimmer.net; spf=Pass smtp.mailfrom=gaetan.gilbert AT skyskimmer.net; spf=Pass smtp.helo=postmaster AT relay3-d.mail.gandi.net
  • Ironport-data: A9a23:tu/1z6xDYXnErE6wV5h6t+f6wirEfRIJ4+MujC+fZmUNrF6WrkUCy WEWC2zVOazeMGL9fNx+YNu38xtT75PRy941TFFvqlhgHilAwSbnLYTAfx2oZ0t+DeWaERk5t 51GAjXkBJppJpMJjk71atANlVEliefSAOCU5NfsYkhZXRVjRDoqlSVtkus4hp8AqdWiCmthg /uryyHkEAHjg2cc3l48sfrZ80sw5aWq4lv0g3RnDRx1lA+G/5UqJMlHTU2BByOQapVZGOe8W 9HCwNmRlo8O10pF5nuNy94XQ2VSKlLgFVDmZkl+B8BOtiN/Shkaic7XAhazhXB/0F1ll/gpo DlEWAfZpQ0BZsUgk8xFO/VU/r0X0QSrN9YrLFDm2fF/wXEqfFPnyOppNnwEGrc28/9vD2xBq NNFK2g0O0Xra+KemNpXS8F2i8AqPZKuMMUas3Bkiz7QC/onB5bOX80m5/cChWh22ZgIRKaFI ZNINFKDbzyYC/FLElgeBY43mqGnh331fidEgEmWtLE04m3WwRY31rXxWDbQUoLTFZ0IwxnBz o7A10rpORExMtKF9Tiq71aj3cPrvXrZQZ1HQdVU8dYw0QXMmjFLYPEMbnOwpuD8gUqjUfpEO kkM82wvq7Iz/QqlVLHAswaQunOAtw9HHtYWFuQ77EeCw6zY4kCfC3RsoiN9hMIOv8QpQgYX5 HizsdrwHTJiv+C6FHHFz+LBxd+tAhQ9IWgHbC4CaAIK5dj/vY0+5i4jqP4+QcZZafWoSVnNL yC2QDsW2+VD0J5Rv0mv1Qqc2GLzznTcZlNtvm3qsnSZAhRRSrTNWmBFwULW6f9Rd8OVCFyIv XxClMGY4OFIC5yR/MBsfAnvNO70jxpmGGeG6bKKI3XH32jzk5JEVdwOiAyS3G8zbq45lcbBO Sc/Qz956p5JJ2eNZqRqeY+3AMlC5fG+RYW6B6mIMoATPskZmOq7EMdGOxf4M4fFzhBErE3DE c3znTuEUS9LWfgPIMSeGbtDuVPU+szO7TmCHc+nkkzPPUu2a3eTRbZNK1KVBt3VH4vayDg5B +13bpPQoz0GCLOWSnCOreY7cwpWRVBlXsqeg5IMKYa+zv9OQzxJ5wn5mu96JOSIXs19yo/1w 51KchQGkQek1CKXdVnih7IKQOqHYKuTZEkTZUQEVWtEEVB6CWp2xPdOJ8kEbvM8+fZ9zPV5a fAAdo/SSr5MUznLsXBVJ5X0sIUoJlzhiBOsLhiVRmE1X6dhYAjVpf7iXA/krxcVAgSN6MARn ryH1yHge6QleThMNsjtRcyK80KQplkYweJ7YFvJKIJceWLq64lbFBbyhf4WfeAKCxHJ6RXH8 hfPAjMd/OnEnJAowoPnmJKrrJqjFtUmP0tFHlv06aS9Gjna81GCn65BcresVhLMWFzk/J6NY b1u8Mj9F/kcjnNmipFZAZ8y6Y4fvvzB/6R7yCZgF1X1N2WbMKtqeCS67JMep59zya98kirof EC2o/1xG6iDYeHhG34vfDsVVPyJj6woq2OD/MYOARvI4QFs9+C6SmRUBR6HjRJdIJZTMI8Ix eQAutYc2zegiygFY8q3sSRJy1uidnAwcb0rlpU/Mr/ZjgAGzlJjY5uFBBTmv7CJSdFHaXcxL hGu2aHturV7x2j5SUQVK0Tj5+RnuMkxiEh492Naf1WtsfjZt8AzxyxUoGgWTBwK7xBp0NBTG 2lMNm9nLP6K7T4ygNRJYF69PwQcABGy21fQzmERnzbzVHiYVW3qLUw8N92S/UsfzXluQzhD8 Jycy0fnSTzPfvyt7hAtWEVglePvfeZx+iLGhsqjOcaPRLs+XhbInY6sYjAuhyb8IMZsmnDCm /ZmzNxwZYL/KyQUha8xUKue9LYITSG7NH5weu5g8IwJDFPjVmmLgxbWEH+Ie+RJO/Du2m27A ZY3JstwCjKP5BzXpTUfXaMxM7t4mcAy3+U7e5TpGz8ik6CepT9Xop7v5nDApGs0ce5Pz+c5C K3sLgynLELBpEF6uWH3qOt8BlGZevgBPQ314/C0+r4GFrUFq+BdTnsx2bqV4VSTFhFqzzSOt Tyae53m7vFozLo0vorzE5dsAxe/BsPzWd+priGykYVqRvHePfjeszg6rgHcAD1XGr8KSvJLl bipm/zm7nPv5boZfTjQpMicKvNv+863YttyDuv2C3trxQ25R87m5ko4yVCScJBmvotU2Zi6e lGedsC1SN8yXuVdzl1zbwx1MU4UK4bzX5faiRKNlda+ITlD7lWfN/Kiz2HjUk9DfCxRO5HeN B79i8zz2v9m9rZzFD02LNA4Ja8hLFHaDP5sM5W7sDSDFWCnj2+Toraox1Jq9TjPDWLCC8rgp 47MQh/lbhmppaXU15djvpdvugEMRmNI6QXqkpnxJ/Yt49x7MIIHEQjZGY8LDphFyWn+kpTxZ TWLY2IkBSS7WzlYGfk5yMq2RR+RX4TiJf+gTgHFPWvNA8t1OG9EKKBi5zxj4nJzdyGlyuy7Q T3b0mOlJQC/m/mFWs5KjsFWQo5bKjfy3XEZ4kP8lsn/GVAYDKliOLmN2uZSfXSvLvwhX3kn6 YT4qa6oja17pYPM/R5cRkNo
  • Ironport-hdrordr: A9a23:OWHcl6ke9TBR3fztiCSItkljj53pDfIR3DAbv31ZSRFFG/Fw5P re/8jzsiWE7wr5OUtQ/exoV5PsfZqxz+8W3WBVB8bGYOCEggeVxeNZh7cKqgeIc0bDH6xmtZ uIGJIRNDSfNzlHZIrBjzWQIpIP5/TCyqizgI7lvhFQcT0=
  • Ironport-phdr: A9a23:xcSggxGpclrcn3jA8OUpWp1Gf9VGhN3EVzX9CrIZgr5DOp6u447ld BSGo6k30hmVDM6KtrptsKn/i+jYQ2sO4JKM4jgpUadncFs7s/gQhBEqG8WfCEf2f7bAZi0+G 9leBhc+pynoeUdaF9zjaFLMv3a88SAdGgnlNQpyO+/5BpPeg9642uys+pDfeQpFiT6ybb52L Bi9sBncuNQRjYZ+MKg61wHHomFPe+RYxGNoIUyckhPh7cqu/5Bt7jpdtes5+8FPTav1caI4T adFDDs9KGA6+NfrtRjYQgSR4HYXT3gbnQBJAwjB6xH6Q4vxvy7nvedzxCWWIcv7Rq0yVD+/7 alkVQXohT8EOTA3/27YhNF+grxVoByhpRNw34HabZqJNPd9ZK7RYc8WSGRDU8tXSidPApm8b 4wKD+cZPOhXtZX6p0cUohu4GAKiBeLvyjtTiXDox606z/kqHAbJ3AM6Ad0OrG7brNPvOKcdU OC1yLLHwivZb/NKwjr984vIcxA6ofGPXLJwdM/Rxlc1Fw/fiFWft5DlMiqT2+8QvGeV8/BuW vizi247tQ5xuD6vy98xhofGhowY1lDJ+Th6zYs1JNC1VE92b9G6HJdOqS2XNYR7T98mTm10t yg3xbIItIK6cSUWyJkqyQLTZ+KbfoWI5B/oSeWfIS9giX57Zb6yhQy+/Eq8xuHmS8W501hHo jBYntTItn0A0QHY5NKdRftn5Eih3C6C1wDN5eFAJkA5jbDbJIAlwrEqlpsev13PETLslEXzl qCWd0Ek9vKn6+v9ZLXpu56cO5Vyig7gLqQigs2/AeImPQgSR2WX5/mw2b/58UD7XLlGlOA6n 6rXvZzAOMgWoq60DxdQ0ok56ha/Czmm0M4fnXkCNF9FdwiIgJb1O17UJvD0F/i/g1WokDhw2 f/GJKHhD47WLnjAkLbhZrV9609ZyAo2099f/YhYCrcfL/LvQkPxssfXAQcjMwOo2+bnFMl91 oQGVG6SGqOZKr/dsUeU5uIzJOmBfJMauDHkK/Q8+/HuiWI5lkQGcKmy3ZoXbWi4Ee58L0WYZ 3rsmNYBHn0QsgowVuy5wGGFBDVUfjO5W782zjA9EoOvS4nZFa63h7nU8y44ApRQLk9HDlqBC 2ugI4qNVusFbmSdI8trnyYYfaOiWpQi1BSruRW8zbd7eLmHshYEvI7ugYAmr9bYkgs/oGQc5 6W11miMSzoxhWYUX3ot27g5p0Vhy1CF2Kw+gvpCFNUV6ekaGhwiO8v6yOp3Q8v3RhqHZs2AH VmvT8mvB3c+T9Y7zsUSS11+Cs6hjxXG0jDsBbIJxPSQHJJhyqvHxDDqItpljXPP1a0vlV4jF 8RGOHGvgOhw9gzZCpTVu16ahr2pdKEZ0TSL8mqfniKVpE8NaAdrSu3eWGwHIEvbqdOs/kTZU 7qnEqgqKCNbxMqLO/APZpvshFRCAvjqPtjfJWS8hw9cHD6uwbWBJMrvcmQZh2DGDVQc1hsU5 TCAPBQ/ASGopyTfCiZvHBTheRGk9+42s369QkIuqmPCJ0R8y7q4/AIUjv2AWrsS2LwDoiIot zRzGh60wdvXD9OKowcpcr9bZJsx51JO1GSRsAIYXNToIKlvmlcYNQt2u0njzQlfEYZRissrq XYn1kx0JL7ZmFJNejWE3Izhb6XNIzqXnljnYKrX11fCldeOr/1Wt7Jn8xO67FrvTxt/oBAFm 5FP3nCR54vHFl8XWJP1CQMs8gRi4qrdem877p/V0ntlNe+1tCXD0pQnHrhAqF7octFBPaeDD AK3HdcdAp3kJ+Unh1GvKB0FOOpf7rIcJMC3bPiH3aumJqBmkS7s3gElqMhtl1mB8SZxULuC0 J8I3/iemASGUz3xlkuJqcPmgoNFYDQfBCy5xDSuV+szLuViOI0MD2mpOci+wN5z0oXsV3Bv/ 1mmH1oa2cWtdHJ+dnTF1BZLnQQSqH2jwm6jyiBs1ioutuyZ1TDPxOLrcFwGPHRKTS9slwWkL Y+xhtEcFE+mCmph3BSs6Frzwe5UpaB1InPPaVxLbjP1LmRnX7H2sLeeK8JC85IntyxLXf/0O wnFDOGl5UJKiGW6TjYWzSteFXniopjjmh1mlG+RZG1+qnbUY4A4xBvS4sDdWe8E2zMHQCdij jyEYzr0d9Kt/NiSi9LCqrXkDj3nCcUVKHmwi9rR6XjehyUiGxC0kvGtl8eyFAE71XS+zNx2T WDTqw66ZID31qO8OOYhf09yBVa65dApf+M22oY2mpwU3mAXw5uP+n9S22j6PMlS3+TxbX4HS CQX68XW8RPm2UhmI2jPwY/lHCb4oIMpd5yhb2Ua1zhopc9DBbud6vpLnC9/r0CkhRnScON+n zIYxOFo7nMGybJs2kJl3mCWBbYcGlNdNCrnmkGT7tywm65QYX6mbbm60Ect1cDkFryJpRtQH WroYpp3VzEl9d1xaRiftR+7opGhYtTbasgf8wGZgwuVxfYAM4o/z7ILnXY1Yzui+yJ9jbdk3 Vo3jMv95tbiSS0l/brnUEQAbmSnO8lCqmPhhvoMzpTEmN7zVpR5RmdRBcSuEqruSWJJ8622b UHUQFhe4j+aAeaNR1bArhg+6SufSdb0bTbMfjEY1YkwHkDCYhMHxllEBnNlwtliTEj9zcjlO i+V/xgp70Xj4ltJw+NsbFzkV3vH4RyvcnEyQYSeKxxf6kdD4V3UOIqQ9LA7EyZd95yn5AuDT w7TLxxPFn0MU1eYCkrLJLSq7MibtuTeA+O/K73BaLOCqKpYWuvAyZ+004Rg9iqBLY3VZyYkU KV9gxoYGykoRqG7030GUGQPmjjIbtKHqRv04SBxos2lsbzqVA/p+YqTGu5SPNFoqFi9haaOM fLVhT4sc28HkMxUgyaYk/5GjQNB7kMmPyOgGrkBqyPXGafZm6sMSgUedzs2L8xQqaQ1wghKP 8ffzNLzzL9xyPAvWDInHRTsnN+kYcsSLiSzLlTCUQyEPbmaLDuNzMDza66mVZVLj/RPtBy1v DuBVUnuIn7Q8luhHwDqKuxKgCyBaVZGv5qhdx92FWX5ZMjrbhSqa5p7yzg/wLlyiXrMOW9aN zVgORAozPXY/WZThfNxHHZE53xuILyfmiqX2OLfL44frfphBikn3/If+nkxzKFZqT1VXPEg0 jWHtcZg+hv194vHgioiShdFrSxHwZ6GrVk3c7uM7YFOAD7NtFcE6WHaY/zrj8FoDtT+4OVcj N3Glaa1Jz5E/9OS+8YAVZG8wC2vK3kwKhnoHTvZFk0DQCL5bAk3YmRGk+CJ9XyQq5Ug7J7hh MhWIoI=
  • Ironport-sdr: 64b8cc27_9bIDGxaCPTwQkTcEvw6o4BFOaYub/VO4lxjAcLw+eMzFOAD K6TbfvjhM5W/LDoRHM6o14LEtm1EDRKUussQ9Vw==

Using uconstr probably works, something like

Ltac program_data_destruct_impl st ll glob H
:= destruct st as [ll glob|] eqn:H;
[fold mk_program_data in H |- * | fold mk_program_data_error in H |- *].

Tactic Notation "program_data_destruct" uconstr(st) ident(ll) ident(glob)
ident(H) :=
(program_data_destruct_impl st ll glob H).

Gaëtan Gilbert

On 19/07/2023 17:30, Chris Dams wrote:
Dear All,

I would like to be able to use a pattern as an argument to an Ltac
tactic. Is this somehow possible? At the moment I am running into:

Ltac program_data_destruct st ll glob H
:= destruct st as [ll glob|] eqn:H;
[fold mk_program_data in H |- * | fold mk_program_data_error in H |- *].

I would like to use a pattern instead of a complete term for st
because what I would like to pass as st can be quite large and I like
to fill in a few parameters to indicate which instance I want to
destruct but not all of them because that would be a bit too large.
E.g., I would like to do

program_data_destruct (set_pointer (mk_program_data _ _) _ _ _) ll' glob' H4.

but that runs into the error 'Cannot infer this placeholder of type
"program.stack program_global_type_info"'. Note that it would be quite
possible to pass the pattern term (set_pointer (mk_program_data _ _) _
_ _) as an argument to the destruct tactic, it is just the Ltac macro
that apparently forbids using this pattern term.

Is it possible to make this work somehow?

Kind Regards,
Chris



Archive powered by MHonArc 2.6.19+.

Top of Page