mirror of
https://github.com/leanprover/lean4.git
synced 2026-03-17 18:34:06 +00:00
This PR gives the `generate` function's "apply @Foo to Goal" trace nodes their own trace sub-class `Meta.synthInstance.apply` instead of sharing the parent `Meta.synthInstance` class. This allows metaprograms that walk synthesis traces to distinguish instance application attempts from other synthesis nodes by checking `td.cls` rather than string-matching on the header text. The new class is registered with `inherited := true`, so `set_option trace.Meta.synthInstance true` continues to show these nodes. Motivated by mathlib's `#defeq_abuse` diagnostic tactic (https://github.com/leanprover-community/mathlib4/pull/35750) which currently checks `headerStr.contains "apply"` to identify these nodes. See https://leanprover.zulipchat.com/#narrow/channel/113488-general/topic/backward.2EisDefEq.2ErespectTransparency 🤖 Prepared with Claude Code --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
9 lines
545 B
Plaintext
9 lines
545 B
Plaintext
366.lean:1:0-2:72: warning: Definition `foo` of class type must be marked with `@[reducible]` or `@[implicit_reducible]`
|
|
[Meta.synthInstance] ✅️ Inhabited Nat
|
|
[Meta.synthInstance] ✅️ new goal Inhabited Nat
|
|
[Meta.synthInstance.instances] #[@instInhabitedOfMonad, instInhabitedNat]
|
|
[Meta.synthInstance.apply] ✅️ apply instInhabitedNat to Inhabited Nat
|
|
[Meta.synthInstance.tryResolve] ✅️ Inhabited Nat ≟ Inhabited Nat
|
|
[Meta.synthInstance.answer] ✅️ Inhabited Nat
|
|
[Meta.synthInstance] result instInhabitedNat
|