leanprover / leanprover/lean4

@[expose] instance implementations via `deriving`

Open
#8,984 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

P-medium
Dominant language
Lean
Stars
9.2k
Forks
990
Avg merge
1d 17h
Merged PRs (30d)
175

Description

We sometimes need to add @[expose] to instances created via deriving, because the bodies will be reduced by the kernel in proof terms generated by tactics.

Currently the only mechanism to achieve this is

@[expose] section

deriving instance BEq for Poly

end

which works but is clunky. Ideally the deriving handler here would use @[expose] as much as possible (i.e. when not prevented by private fields).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Find the deriving handler and inspect how it generates instances such as deriving instance BEq for Poly, then compare that with the existing @[expose] section behavior. Determine when generated implementations can receive @[expose] and when private fields prevent it; done means the handler applies the attribute where permitted without requiring the surrounding section workaround.

Written by the indexing model from the issue text.

Assessment

Domain
compilers
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.