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: Jim Fehrle <jim.fehrle AT gmail.com>
  • To: Coq Club <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] add Search functionality to ltac2
  • Date: Fri, 3 May 2024 22:13:53 -0700
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=jim.fehrle AT gmail.com; spf=Pass smtp.mailfrom=jim.fehrle AT gmail.com; spf=None smtp.helo=postmaster AT mail-ej1-f46.google.com
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:OBdC56oiw12Rw8AVw4eV5W8aV5oSeYIsimQD101hICG9E/bo7v xG+c5w6faaskd1ZJhNo6HjBEDEewK+yXcX2+gs1NWZLW3bUQKTRekI0WKh+V3d8kbFh4lgPM lbAs5D4R7LYWSST/yW3OB1KbkdKRC8npyVuQ==
  • Ironport-phdr: A9a23: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
  • Ironport-sdr: 6635c41d_iaKtWri6Mb0FCuuEgiRtcRx/UVU3QcOS4lHTcZfEr22PAm9 NuRc3EfyWrXeMVmGiMqL4tB8NIJ3O2zdzOpDK6w==

There's already an interface that lets Ltac2 call Ocaml code.  Most of the work would be adapting the current search command core to generate a data structure that you can return rather than printing the info.

I expect this would not be too difficult to prototype.  Ideally the command could be refactored so the printing relies on the data structure generating routine so the command and the Ltac2 routine remain consistent.

Good luck,

Jim

On Fri, May 3, 2024, 3:23 PM Abhishek Anand <abhishek.anand.iitg AT gmail.com> wrote:
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