Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] add Search functionality to ltac2

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] add Search functionality to ltac2


Chronological Thread 
  • From: Abhishek Anand <abhishek.anand.iitg AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] add Search functionality to ltac2
  • Date: Fri, 3 May 2024 18:22:05 -0400
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=abhishek.anand.iitg AT gmail.com; spf=Pass smtp.mailfrom=abhishek.anand.iitg AT gmail.com; spf=None smtp.helo=postmaster AT mail-wm1-f45.google.com
  • Ironport-data: A9a23:tKTt3qx0VGKueIARzuF6t+eWwirEfRIJ4+MujC+fZmUNrF6WrkVWm DRJXzzQbquCYGKkc9F2O4S3pk8GvMKHnYdiQQBqpFhgHilAwSbnLYTAfx2oZ0t+DeWaERk5t 51GAjXkBJppJpMJjk71atANlVEliefSAOCU5NfsYkhZXRVjRDoqlSVtkus4hp8AqdWiCmthg /uryyHkEAHjg2Ec3l48sfrZ9Esy5K+q4lv0g3RnDRx1lA+G/5UqJMlHTU2BByOQapVZGOe8W 9HCwNmRlo8O10pF5nuNy94XQ2VSKlLgFVDmZkl+B8BOtiN/Shkaic7XAhazhXB/0F1ll/gpo DlEWAfZpQ0BZsUgk8xFO/VU/r0X0QSrN9YrLFDm2fF/wXEqfFPO3fJrMFoKbLQK48BbOX9D6 MUaMQsCO0Xra+KemNpXS8Fpj8UnadbuZcYR5iwmwjbeAvIrB5vERs0m5/cChGZ21p0IRKyOI ZZEAdZsREyojxlnM10XCYk+keTuj3/2dTEeqVOJqoI45mHSyEp6172F3N/9I4LWGZgKwxbIz o7A10upARU1DNmF8iic+XaVpuDLkyqif6tHQdVU8dYx3QTLmT1NYPEMbnOwpuD8gUqjUfpEO kkM82wvq7Iz/QqlVLHAswaQpXeFulsDXoMVHbFnrg6KzaXQ7kCSAW1soiN9hMIOltExQAAx6 g6wjcrPKQRxvaCsS2um+eLBxd+tAhQ9IWgHbC4CaAIK5dj/vY0+5i4jqP4zQMZZafWlSVnNL yC2kcQou1kEYSc2O0iT+FnGh3ezo8GMQFJooArQWW2h40VyY4vNi22UBbrzvaYowGWxFwbpU J04dy62srlm4XalynXlfQn1NOv1j8tpyRWF6bKVI7Ev9i6251modp1K7Td1KS9Ba5ldJWC3O ReN5lIJvPe/2UdGi4cnM+pd7Ox6ncDd+SjND628gidmO8QvKVLYoH0GibC4hD6xyRJEfV4D1 WezKpv1VSlLV8yLPRK5QOAS1bJjxyY1gwvuqWPTnnyaPU6lTCfNE98taQPeBshgtf/siFuPr 753aZDRoz0BC7KWX8Ui2dRJRbz8BSRiWcGeRg0+XrLrHzeK70l9WqOAmuhwKtcNcmY8vr6gw 0xRk3RwkDLX7UAr4y3TApy6QOq3B8gtnmFxJiE2I1ej1l4qZIvlvu9VdII6cfNjvKZvxOJ9B atNMciRIOV9ehKe8RQkbL75sNNDcjavjlmwJCaLWmU0UKNhYA3rweXaWDXT2hMANBfqivtmk YacjlvaZbEhWzVdCN3nbaPz7lGp4lkYtuFAf2rJBdhxfk/T3pBgAHHzhKVvIuUnCxbK9h2F3 Sm4XDYaoujspdcu0d/r3KqrkaagI9FcLGF7QVbJzO+RHjbI20ae2ql8afasURGBcXLr6YOgS P5wzfqhAMYYnV1PjZVwI4xrwY06+dHrgb1QlSZgI1nmcHWpDaFGMFCd/MwSqJBI+KBViTG2V m2L5NNeH7eDY+HhMVwJITsafvax7u4VlhbS/MYKDh3DvgEvx4W+UGJWIxWoow5eJuEsMIoan MEQiPRP4Am70hcXItKKix5PzFu1L1sCbr4Gs68LC4q6myspzVB/OabnMBHU263WSdtwMRgNG AS21Y7inLVXw3TQf0UjTUbt2fVvvrVQmRRo4mJbGXG3tIvkvNEV0idV0wwLdSVO7xAe0+tMK mlhbEJ0AqOV/gZXvstIXkHyOgRNGCym/lfVzn0Xnlb4VGitbHTGd0cmCNaO/WcY0mNSRSda9 7em01TYUS7mUcXy/ykqU2tnlqDHYflu0DbdweaLMt+gHZYoRRbE2IqVensuuR/rJegTlX/3j 7Bm08goYJKqKBNKhbMwDrer8Ig5STeGATdnau5g9qZYJlPsUmi+9hbWIn/gZ/4XAeLB9HK5L MlcJshvcRCa/wTWpxA5AZ88GZNFrMQL1vEjJIyyfXUntoGBpAVHqJjTryjypFE6SuVUzPoSF NnjSCKgIEex211vhG7/nOtVMDGZYP4FRjHG8sKbzeErL68H4cZQKRwc873spHiEEhpVzzTNt iP5WqLm5ehDy4NtoojSLpt+FziEcdPdaMnY8SSYkch/UtfUAMKf6yIXsgbGOipVD5swWvN2t 6i8j9rs+HPJoJMNCmX/t6ScJfMY+/foTO5zN+TpJkJ7hgqHYtfnuDEYylC7KLtIsdJT3damT A2Gc/mNdcYZdtNe5X9NYQ1MOkw5J4WuSYm4vgK7jfCHKiZF4Dz9NNn9qEPYNzBKRBEHK7jVK 1HSuc/3wvt6sY4VJhsPJ88+Mq9COFW5BJcXLYzghwK5UFutrEiJ4Ib5tBwa7jrONHmIPeD67 b/BRTn8bB6Cg77J/v4Ir71NugArM1gljdkSZk49//tEuwK+BkMCLsUfNswiIbNQmSrQypr5R W/saE0PNCbDZglHIC7MuInbYgSiB+IwY4azYnRj+k6PcC65Cb+RGLYrpG8q/35yfSCl1+29b 80X/nrrJBWq35V1XqAp6+emhft8jObvrp7SFZsRT+Spa/rfPVkL6JClNA9EVCiCDMSU0UuXe C46QmdLREz9Qkn0eSqll7i5BzlB1A4DDR1xBctM/Dobk4qexexEjvb4PokfF5UdOd8SKudmq WzfHgOwDqP/5pDXkaQsstMtx6RzDJpn2yR8wLDLHWUvok171ojr0w7uU8bCoAHONTOzy2/gq wQ=
  • Ironport-hdrordr: A9a23:7SSb4Kw0OYnUkVEEv/meKrPwFb1zdoMgy1knxilNoH1uA7Wlfq WV9sjzuiWE7Qr5NEtQ++xofZPwIk80lqQV3WByB8bHYOCOggLBR72Kr7GD/9SKIVyYygcy79 YHT0G8MrHN5JpB4PoSLDPWLz/o+re6zJw=
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 663563b2_7Num35S/YrJ9wbsxthcXombkRAanqT8sTPtrkH5lehJ+nie v9neRWlt2COXIDR/ipiJoR900kjRTQ9EoKm+clQ==

Thanks for asking me to clarify. Sorry, the initial message could have been more precise.
I am asking to add a new function, say Ltac2Search, to the ltac2 API, so that it can be used by ltac2 programs. 
It should have signature:

string -> reference list

(I dont know too much about ltac2 but if it already has a type Econstr of terms with holes, the type could instead be Econstr-> reference list)

the string input would precisely be the strings accepted by the Search vernacular command (https://coq.inria.fr/doc/V8.19.0/refman/proof-engine/vernacular-commands.html#grammar-token-search_query)
The output would be the list of references corresponding to what Search would have returned (just the names not the types).
As a fully concrete example, 
Ltac2Search "+" would return [plus_O_n, plus_n_O...]
the items in the list would be concrete references which include fully qualified names of the constants (I am not familiar with the exact representation of the `reference` type of ltac2).



-- Abhishek


On Fri, May 3, 2024 at 1:50 PM Jim Fehrle <jim.fehrle AT gmail.com> wrote:
Can you be more specific about what you mean by "Search functionality", which is vague?  I don't see how your examples (smart IDEs, serializing for LLMs) fit into search.

Jim

On Fri, May 3, 2024 at 4:55 AM Abhishek Anand <abhishek.anand.iitg AT gmail.com> wrote:
Another use could be to automatically find relevant lemmas to prove a goal, without needing to add to hint dbs, and potentially emit a primitive proof that can be checked faster later.

On Thu, May 2, 2024 at 2:47 PM Abhishek Anand <abhishek.anand.iitg AT gmail.com> wrote:
How hard would it be to add Search functionality to ltac2?
Has somebody already done that?
While developing smart IDEs, this would let us push more functionality to ltac2 rather than having to implement it in elisp (emacs)/typescript (vscode) and have different versions for each IDE.

My concrete usecase is to take an iris separation-logic Coq goal and serialize it for consumption by LLMs.
I would like to implement all of it Ltac2. `Search` API could be useful to feed the LLM relevant lemmas about the constants mentioned in the goal.

In some past projects (e.g. https://sympa.inria.fr/sympa/arc/coq-club/2023-10/msg00026.html),
I found it much easier and less error-prone to write most of the logic in ltac2/ltac rather than in elisp.




Archive powered by MHonArc 2.6.19+.

Top of Page