Files
lean4/tests/elab/synth1.lean.out.expected
Kim Morrison e01cbf2b8f feat: add structured TraceResult to TraceData (#12698)
This PR adds a `result? : Option TraceResult` field to `TraceData` and
populates it in `withTraceNode` and `withTraceNodeBefore`, so that
metaprograms walking trace trees can determine success/failure
structurally instead of string-matching on emoji.

`TraceResult` has three cases: `.success` (checkEmoji), `.failure`
(crossEmoji), and `.error` (bombEmoji, exception thrown). An
`ExceptToTraceResult` typeclass converts `Except` results to
`TraceResult` directly, with instances for `Bool` and `Option`.
`TraceResult.toEmoji` converts back to emoji for display. This replaces
the previous `ExceptToEmoji` typeclass — `TraceResult` is now the
primary representation rather than being derived from emoji strings.

`withTraceNodeBefore` (used by `isDefEq`) uses
`ExceptToTraceResult.toTraceResult` directly, correctly handling `Bool`
(`.ok false` = failure) and `Option` (`.ok none` = failure), with
`Except.error` mapping to `.error`.

For `withTraceNode`, `result?` defaults to `none`. Callers can pass
`mkResult?` to provide structured results; when set, the corresponding
emoji is auto-prepended to the message.

Motivated by mathlib's `#defeq_abuse` diagnostic tactic
(https://github.com/leanprover-community/mathlib4/pull/35750) which
currently string-matches on emoji to determine trace node outcomes. 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>
2026-03-10 02:42:57 +00:00

310 lines
22 KiB
Plaintext

[Meta.synthInstance] ✅️ MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 Elab.Command.CommandElabM
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift, Elab.Command.instMonadEvalTermElabMCommandElabM]
[Meta.synthInstance.apply] ✅️ apply Elab.Command.instMonadEvalTermElabMCommandElabM to MonadEval Elab.TermElabM
Elab.Command.CommandElabM
[Meta.synthInstance.answer] ✅️ MonadEval Elab.TermElabM Elab.Command.CommandElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEval Elab.TermElabM
Elab.Command.CommandElabM to subgoal MonadEval Elab.TermElabM
Elab.Command.CommandElabM of MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 Elab.TermElabM
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift]
[Meta.synthInstance.apply] ✅️ apply @instMonadEvalOfMonadLift to MonadEval ?m Elab.TermElabM
[Meta.synthInstance] ✅️ new goal MonadLift _tc.1 Elab.TermElabM
[Meta.synthInstance.instances] #[@ReaderT.instMonadLift]
[Meta.synthInstance.apply] ✅️ apply @ReaderT.instMonadLift to MonadLift
(StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.answer] ✅️ MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM)
(ReaderT Elab.Term.Context
(StateRefT' IO.RealWorld Elab.Term.State
MetaM)) to subgoal MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM of MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance.answer] ✅️ MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM to subgoal MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM of MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift]
[Meta.synthInstance.apply] ✅️ apply @instMonadEvalOfMonadLift to MonadEval ?m
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance] ✅️ new goal MonadLift _tc.1 (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[@StateRefT'.instMonadLift]
[Meta.synthInstance.apply] ✅️ apply @StateRefT'.instMonadLift to MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.answer] ✅️ MonadLift MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) of MonadEval MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance.answer] ✅️ MonadEval MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadEval MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadEval MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) of MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM MetaM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ✅️ apply instMonadEvalT to MonadEvalT MetaM MetaM
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM MetaM
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
MetaM to subgoal MonadEvalT MetaM MetaM of MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 3
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM) of MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] size: 6
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
Elab.TermElabM to subgoal MonadEvalT MetaM Elab.TermElabM of MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.resume] size: 8
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] result instMonadEvalTOfMonadEval MetaM Elab.TermElabM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ HasCoerce Nat Prop
[Meta.synthInstance] ✅️ new goal HasCoerce Nat Prop
[Meta.synthInstance.instances] #[@coerceTrans]
[Meta.synthInstance.apply] ✅️ apply @coerceTrans to HasCoerce Nat Prop
[Meta.synthInstance] ✅️ new goal HasCoerce _tc.0 Prop
[Meta.synthInstance.instances] #[@coerceTrans, coerceBoolToProp]
[Meta.synthInstance.apply] ✅️ apply coerceBoolToProp to HasCoerce Bool Prop
[Meta.synthInstance.answer] ✅️ HasCoerce Bool Prop
[Meta.synthInstance.resume] ✅️ propagating HasCoerce Bool Prop to subgoal HasCoerce Bool Prop of HasCoerce Nat Prop
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal HasCoerce Nat Bool
[Meta.synthInstance.instances] #[@coerceTrans, coerceNatToBool]
[Meta.synthInstance.apply] ✅️ apply coerceNatToBool to HasCoerce Nat Bool
[Meta.synthInstance.answer] ✅️ HasCoerce Nat Bool
[Meta.synthInstance.resume] ✅️ propagating HasCoerce Nat Bool to subgoal HasCoerce Nat Bool of HasCoerce Nat Prop
[Meta.synthInstance.resume] size: 2
[Meta.synthInstance.answer] ✅️ HasCoerce Nat Prop
[Meta.synthInstance] result coerceTrans
[Meta.synthInstance] coerceTrans Nat Bool Prop coerceBoolToProp coerceNatToBool
[Meta.synthInstance] ✅️ MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 Elab.Command.CommandElabM
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift, Elab.Command.instMonadEvalTermElabMCommandElabM]
[Meta.synthInstance.apply] ✅️ apply Elab.Command.instMonadEvalTermElabMCommandElabM to MonadEval Elab.TermElabM
Elab.Command.CommandElabM
[Meta.synthInstance.answer] ✅️ MonadEval Elab.TermElabM Elab.Command.CommandElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEval Elab.TermElabM
Elab.Command.CommandElabM to subgoal MonadEval Elab.TermElabM
Elab.Command.CommandElabM of MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 Elab.TermElabM
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift]
[Meta.synthInstance.apply] ✅️ apply @instMonadEvalOfMonadLift to MonadEval ?m Elab.TermElabM
[Meta.synthInstance] ✅️ new goal MonadLift _tc.1 Elab.TermElabM
[Meta.synthInstance.instances] #[@ReaderT.instMonadLift]
[Meta.synthInstance.apply] ✅️ apply @ReaderT.instMonadLift to MonadLift
(StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.answer] ✅️ MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM)
(ReaderT Elab.Term.Context
(StateRefT' IO.RealWorld Elab.Term.State
MetaM)) to subgoal MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM of MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance.answer] ✅️ MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM to subgoal MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM of MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift]
[Meta.synthInstance.apply] ✅️ apply @instMonadEvalOfMonadLift to MonadEval ?m
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance] ✅️ new goal MonadLift _tc.1 (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[@StateRefT'.instMonadLift]
[Meta.synthInstance.apply] ✅️ apply @StateRefT'.instMonadLift to MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.answer] ✅️ MonadLift MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) of MonadEval MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance.answer] ✅️ MonadEval MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadEval MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadEval MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) of MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM MetaM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ✅️ apply instMonadEvalT to MonadEvalT MetaM MetaM
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM MetaM
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
MetaM to subgoal MonadEvalT MetaM MetaM of MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 3
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM) of MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] size: 6
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
Elab.TermElabM to subgoal MonadEvalT MetaM Elab.TermElabM of MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.resume] size: 8
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] result instMonadEvalTOfMonadEval MetaM Elab.TermElabM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ Bind IO
[Meta.synthInstance] ✅️ new goal Bind IO
[Meta.synthInstance.instances] #[@Monad.toBind]
[Meta.synthInstance.apply] ✅️ apply @Monad.toBind to Bind IO
[Meta.synthInstance] ✅️ new goal Monad IO
[Meta.synthInstance.instances] #[@instMonadEIO]
[Meta.synthInstance.apply] ✅️ apply @instMonadEIO to Monad IO
[Meta.synthInstance.answer] ✅️ Monad IO
[Meta.synthInstance.resume] ✅️ propagating Monad (EIO IO.Error) to subgoal Monad IO of Bind IO
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance.answer] ✅️ Bind IO
[Meta.synthInstance] result instMonadEIO.toBind
[Meta.synthInstance] Monad.toBind.{0, 0} IO (instMonadEIO IO.Error)
[Meta.synthInstance] ✅️ MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 Elab.Command.CommandElabM
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift, Elab.Command.instMonadEvalTermElabMCommandElabM]
[Meta.synthInstance.apply] ✅️ apply Elab.Command.instMonadEvalTermElabMCommandElabM to MonadEval Elab.TermElabM
Elab.Command.CommandElabM
[Meta.synthInstance.answer] ✅️ MonadEval Elab.TermElabM Elab.Command.CommandElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEval Elab.TermElabM
Elab.Command.CommandElabM to subgoal MonadEval Elab.TermElabM
Elab.Command.CommandElabM of MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 Elab.TermElabM
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift]
[Meta.synthInstance.apply] ✅️ apply @instMonadEvalOfMonadLift to MonadEval ?m Elab.TermElabM
[Meta.synthInstance] ✅️ new goal MonadLift _tc.1 Elab.TermElabM
[Meta.synthInstance.instances] #[@ReaderT.instMonadLift]
[Meta.synthInstance.apply] ✅️ apply @ReaderT.instMonadLift to MonadLift
(StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.answer] ✅️ MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM)
(ReaderT Elab.Term.Context
(StateRefT' IO.RealWorld Elab.Term.State
MetaM)) to subgoal MonadLift (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM of MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance.answer] ✅️ MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM) Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM to subgoal MonadEval (StateRefT' IO.RealWorld Elab.Term.State MetaM)
Elab.TermElabM of MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ❌️ apply instMonadEvalT to MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.apply] ✅️ apply instMonadEvalTOfMonadEval to MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance] ✅️ new goal MonadEval _tc.1 (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[@instMonadEvalOfMonadLift]
[Meta.synthInstance.apply] ✅️ apply @instMonadEvalOfMonadLift to MonadEval ?m
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance] ✅️ new goal MonadLift _tc.1 (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.instances] #[@StateRefT'.instMonadLift]
[Meta.synthInstance.apply] ✅️ apply @StateRefT'.instMonadLift to MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.answer] ✅️ MonadLift MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadLift MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) of MonadEval MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance.answer] ✅️ MonadEval MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadEval MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadEval MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) of MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 2
[Meta.synthInstance] ✅️ new goal MonadEvalT MetaM MetaM
[Meta.synthInstance.instances] #[instMonadEvalTOfMonadEval, instMonadEvalT]
[Meta.synthInstance.apply] ✅️ apply instMonadEvalT to MonadEvalT MetaM MetaM
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM MetaM
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
MetaM to subgoal MonadEvalT MetaM MetaM of MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] size: 3
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM (StateRefT' IO.RealWorld Elab.Term.State MetaM)
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State
MetaM) to subgoal MonadEvalT MetaM
(StateRefT' IO.RealWorld Elab.Term.State MetaM) of MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] size: 6
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM Elab.TermElabM
[Meta.synthInstance.resume] ✅️ propagating MonadEvalT MetaM
Elab.TermElabM to subgoal MonadEvalT MetaM Elab.TermElabM of MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance.resume] size: 8
[Meta.synthInstance.answer] ✅️ MonadEvalT MetaM Elab.Command.CommandElabM
[Meta.synthInstance] result instMonadEvalTOfMonadEval MetaM Elab.TermElabM Elab.Command.CommandElabM
[Meta.synthInstance] ✅️ BEq Nat
[Meta.synthInstance] ✅️ new goal BEq Nat
[Meta.synthInstance.instances] #[@instBEqOfDecidableEq, @Std.PreorderPackage.toBEq]
[Meta.synthInstance.apply] ✅️ apply @Std.PreorderPackage.toBEq to BEq Nat
[Meta.synthInstance] ✅️ new goal Std.PreorderPackage Nat
[Meta.synthInstance.instances] #[@Std.PartialOrderPackage.toPreorderPackage, @Std.LinearPreorderPackage.toPreorderPackage]
[Meta.synthInstance.apply] ✅️ apply @Std.LinearPreorderPackage.toPreorderPackage to Std.PreorderPackage Nat
[Meta.synthInstance] ✅️ new goal Std.LinearPreorderPackage Nat
[Meta.synthInstance.instances] #[@Std.LinearOrderPackage.toLinearPreorderPackage]
[Meta.synthInstance.apply] ✅️ apply @Std.LinearOrderPackage.toLinearPreorderPackage to Std.LinearPreorderPackage Nat
[Meta.synthInstance] ✅️ no instances for Std.LinearOrderPackage Nat
[Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @Std.PartialOrderPackage.toPreorderPackage to Std.PreorderPackage Nat
[Meta.synthInstance] ✅️ new goal Std.PartialOrderPackage Nat
[Meta.synthInstance.instances] #[@Std.LinearOrderPackage.toPartialOrderPackage]
[Meta.synthInstance.apply] ✅️ apply @Std.LinearOrderPackage.toPartialOrderPackage to Std.PartialOrderPackage Nat
[Meta.synthInstance] ✅️ no instances for Std.LinearOrderPackage Nat
[Meta.synthInstance.instances] #[]
[Meta.synthInstance.apply] ✅️ apply @instBEqOfDecidableEq to BEq Nat
[Meta.synthInstance] ✅️ new goal DecidableEq Nat
[Meta.synthInstance.instances] #[instDecidableEqNat]
[Meta.synthInstance.apply] ✅️ apply instDecidableEqNat to DecidableEq Nat
[Meta.synthInstance.answer] ✅️ DecidableEq Nat
[Meta.synthInstance.resume] ✅️ propagating DecidableEq Nat to subgoal DecidableEq Nat of BEq Nat
[Meta.synthInstance.resume] size: 1
[Meta.synthInstance.answer] ✅️ BEq Nat
[Meta.synthInstance] result instBEqOfDecidableEq
[Meta.synthInstance] instBEqOfDecidableEq.{0} Nat instDecidableEqNat