Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing low-level Ltac2 primitives (Summary) #12607

Open
jfehrle opened this issue Jun 29, 2020 · 0 comments
Open

Missing low-level Ltac2 primitives (Summary) #12607

jfehrle opened this issue Jun 29, 2020 · 0 comments
Labels
kind: enhancement Enhancement to an existing user-facing feature, tactic, etc. part: ltac2 Issues and PRs related to the (in development) Ltac2 tactic langauge.
Projects

Comments

@jfehrle
Copy link
Member

jfehrle commented Jun 29, 2020

Summarizes the following missing-primitive PRs. Feel free to add additional missing items until this issue is closed (after which we can open another issue, if needed).

#11837 Ltac2 should expose the contents of the cast type
#12601 Low-level Ltac2 binder API is not low-level enough
#12538, sort-of Ltac2 should expose utility types from OCaml (or bundle reimplementations of them)
#11641 (comment) Ltac2: how to change a constr term with a constr term?
#10940 Ltac2 Constr.Unsafe.case type should expose the inductive and the number of parameters
#10095 Get list of constructors of Inductive
#10369 [Ltac2] : Add system functions for writing and reading files and running processes

These correspond to item # 4 here: #12085 (comment)

Even though Ltac2 allows more low-level access, there are a number of low-level primitives that are missing, and thus are show-stoppers for writing automation that needs them. For example, there's no way currently to get the number of constructors of an inductive type, etc, so we can't write automation that's generic over inductive types. And we can't build terms with casts via the low-level API because the cast type is opaque (#11837). And more.

@jfehrle jfehrle added kind: enhancement Enhancement to an existing user-facing feature, tactic, etc. part: ltac2 Issues and PRs related to the (in development) Ltac2 tactic langauge. labels Jun 29, 2020
@jfehrle jfehrle added this to Regular priority in Ltac2 Jun 29, 2020
ejgallego added a commit to ejgallego/coq that referenced this issue Mar 27, 2021
We introduce new syntax
```
Require ML Module pkg1 ... pkgn.
```
that uses findlib to locate and load a Coq plugin and its dependencies.

This makes feasible to actually develop Coq plugins that depend on
OCaml libraries not linked into the Coq main binaries without hitting
problems.

Fixes coq#5028, fixes coq#7698 .

This provides a workaround for coq#12607 , and helps with coq#9547 .
ejgallego added a commit to ejgallego/coq that referenced this issue Sep 10, 2021
We introduce new syntax
```
Require ML Module pkg1 ... pkgn.
```
that uses findlib to locate and load a Coq plugin and its dependencies.

This makes feasible to actually develop Coq plugins that depend on
OCaml libraries not linked into the Coq main binaries without hitting
problems.

Fixes coq#5028, fixes coq#7698 .

This provides a workaround for coq#12607 , and helps with coq#9547 .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: enhancement Enhancement to an existing user-facing feature, tactic, etc. part: ltac2 Issues and PRs related to the (in development) Ltac2 tactic langauge.
Projects
Ltac2
  
Regular priority
Development

No branches or pull requests

1 participant