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

Control in the trocq tactic #27

Open
ecranceMERCE opened this issue Jan 18, 2024 · 1 comment
Open

Control in the trocq tactic #27

ecranceMERCE opened this issue Jan 18, 2024 · 1 comment
Labels
enhancement New feature or request UI User interface of the plugin

Comments

@ecranceMERCE
Copy link
Collaborator

It would be interesting to have additional arguments in the trocq tactic to provide guidance and tell Trocq which terms must change, and which must not. It would for example allow for several parametricity relations to coexist and the user to choose which one is used for each occurrence of the term to translate.

For instance:

nat ~ bin_nat :. nat_binR
nat ~ nat :. natR

In the first goal below, the first instance would be used for n, but in the second goal, if bitvector ~ bitvector, then the second instance would be used for n.

forall (n : nat), n = n
forall (n : nat) (v : bitvector n), v = v
@ecranceMERCE ecranceMERCE added enhancement New feature or request UI User interface of the plugin labels Jan 18, 2024
@CohenCyril
Copy link
Collaborator

CohenCyril commented Jan 18, 2024

Notice that bitvector is not parametric on nat but imposes nat ~ nat :. natR, if we make sure trocq is guided by typeconstraint first and user input second, then we get the good behaviour.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request UI User interface of the plugin
Projects
None yet
Development

No branches or pull requests

2 participants