name: rocq-simulate-author description: Create or update Rocq simulate files in this repository, including imports, executable definitions, and corresponding _eq lemmas with the project’s proof/admission conventions.
Rocq Simulate Author
Use this skill when asked to create or complete files under **/simulate/**/*.v.
Goals
- Add a simulate
Definitionthat mirrors the links/run behavior at the right abstraction level. - Add the matching
_eqlemma connectingrun_*and the simulate definition. - Keep the file compiling with project flags.
Repository Conventions
- Compile with:
coqc -R . RocqOfRust -impredicative-set path/to/file.v
- Prefer explicit imports; do not assume aggregator modules exist.
- In this repo, many
_eqlemmas are intentionallyAdmittedduring iteration. - Use
idinstead of(fun interpreter => interpreter). - Prefer record notation when clearer (for example
Rangerecords).
Procedure
- Locate links source and nearby simulate examples.
- Read corresponding links file (
.../links/...) to extractrun_*signature and parameter order. - Read one neighboring simulate file in same folder for style.
- Build imports explicitly.
Require Import simulate.RocqOfRust.first.- Add links/simulate imports used by the definition.
- Add missing imports only when compile errors require them.
- Write the simulate definition.
- Keep shape close to Rust intent and existing sibling files.
- Use existing macros (
gas_macro,push_macro, etc.) consistently. - Avoid overfitting proofs in the definition.
- Write
_eqlemma.
- Match argument order of
run_*exactly. - Prefer class-level
Runassumptions in Eq-style files. - If proof is not ready, keep
Admittedunless user asked no admitted.
- Compile and iterate.
- Compile touched file first.
- Fix minimal issues (imports, type annotations, argument order).
Starter Skeleton
Require Import simulate.RocqOfRust.
(* other explicit imports *)
Definition <name>
{A ... : Set} `{Link ...}
...
(x : ...) : ... :=
... .
Lemma <name>_eq
{A ... : Set} `{Link ...}
...
(x : ...) :
...
.
Proof.
Admitted.
Common Failure Fixes
module-not-found: add explicitRequire Import ...for split per-function links/simulate files.- Type mismatch in
run_*: compare with links instance signature and reorder args. - Numeric inference to
Z: use typed literals like(0 : usize). - Missing class projections in Eq files: add appropriate class-level
*.Runassumption.