Mathlib PR Review
Attributes and API
- •New definitions should come with associated lemmas and appropriate attributes (
@[simp],@[ext], etc.). - •Watch for instance diamonds.
- •Prefer bundled morphisms,
FunLikeAPI for morphism classes,SetLikeAPI for subobject classes.
Style Points Specific to Mathlib
- •Simp squeezing: Terminal
simpcalls should NOT be squeezed (replaced withsimp only [...]) unless there's a measured performance problem. Unsqueezedsimpis more maintainable and doesn't break when lemmas are renamed. - •Normal forms: Prefer
s.Nonemptyover alternatives. Usehne : x ≠ ⊥in hypotheses (easier to check),hlt : ⊥ < xin conclusions (more powerful). - •Transparency: Needing
erw, orrflaftersimp/rwusually means the API is missing lemmas. - •File size: Consider splitting files that exceed ~1000 lines or cover multiple topics.
Reference Guides
The full review guide and style references:
- •Review guide: https://leanprover-community.github.io/contribute/pr-review.html
- •Naming conventions: https://leanprover-community.github.io/contribute/naming.html
- •Code style: https://leanprover-community.github.io/contribute/style.html
- •Documentation style: https://leanprover-community.github.io/contribute/doc.html