Grind rules for Computability.Automata.NA.Run
Nobody has claimed this yet.
- Dominant language
- Lean
- Stars
- 709
- Forks
- 200
- Avg merge
- 3d 6h
- Merged PRs (30d)
- 45
Description
In #168 @ctchou and I worked on trying to write better grind rules for NA.Run. With a grind = annotation the definition is unfolded to the underlying propositions too eagerly, causing some proofs to fail. We added some API lemmas with annotations that work as a replacement in some cases, but there are a few places where you now have to intuit adding NA.Run to individual calls of grind. A particularly troubling example is this proof that requires an unintuitive manual split of a conjunction for grind to work.
Maybe there are some more specific rules that we can write using grind_pattern that can help here? We will probably need to wait for more usage to determine anything concrete.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing API lemmas and grind annotations discussed in #168, then inspect the proof at Cslib/Computability/Automata/NABuchiEquiv.lean:62. Investigate whether more specific grind_pattern rules can avoid unfolding NA.Run and the manual conjunction split. Done means a concrete rule set improves the affected proofs without causing the failures described.
Written by the indexing model from the issue text.
Assessment
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100