While working on a file in VSCode (Lean4 VS Code Extension v0.0.206, Lean v4.20.0), I keep seeing messages of the form
PANIC at Lean.MetavarContext.getLevelDepth Lean.MetavarContext:874:14: unknown metavariable
in a pop-up window. The backtrace is rather long and begins like this:
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_panic+0xf5) [0x7fd90d50d295]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_panic_fn+0x15) [0x7fd90d50d475]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_SynthInstance_MkTableKey_normLevel+0x352) [0x7fd90794d9a2]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_List_mapM_loop___at_Lean_Meta_SynthInstance_MkTableKey_normExpr___spec__2+0x13b) [0x7fd90794f70b]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_SynthInstance_MkTableKey_normExpr+0x1a3) [0x7fd90794fa43]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_SynthInstance_MkTableKey_normExpr+0x752) [0x7fd90794fff2]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_SynthInstance_mkTableKey___at_Lean_Meta_SynthInstance_main___spec__1+0xe4) [0x7fd9079a4474]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_SynthInstance_main___lambda__2+0x9c) [0x7fd9079a500c]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_3+0xbac) [0x7fd90d51dc3c]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Core_withCurrHeartbeats___at_Lean_Meta_SynthInstance_main___spec__3+0x24) [0x7fd9079a4be4]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_synthInstance_x3f___lambda__2+0x260) [0x7fd9079b7d00]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_5+0x8cc) [0x7fd90d521f6c]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_Basic_0__Lean_Meta_withNewMCtxDepthImp___rarg+0x447) [0x7fd9076c84e7]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_withNewMCtxDepth___at_Lean_Meta_matchesInstance___spec__1___rarg+0x1f) [0x7fd90780c6ff]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_synthInstance_x3f___lambda__4+0x12f2) [0x7fd9079b92e2]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_5+0x8cc) [0x7fd90d521f6c]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_withTraceNode___at_Lean_Meta_synthInstance_x3f___spec__4+0x2eb) [0x7fd9079b72fb]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_synthInstance_x3f___lambda__5+0x1f4) [0x7fd9079c2204]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_1+0xe2f) [0x7fd90d5195ff]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_profileitIOUnsafe___rarg___lambda__1+0xe) [0x7fd90c7ed27e]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_profileitIOUnsafe___rarg___lambda__1___boxed+0x9) [0x7fd90c7ed509]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_1+0xb5f) [0x7fd90d51932f]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_profileit+0x83) [0x7fd90d206c43]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_profileitIOUnsafe___rarg+0x64) [0x7fd90c7ed3e4]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_synthInstance_x3f+0x162) [0x7fd9079c24f2]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_SynthInstance_0__Lean_Meta_synthPendingImp___lambda__1+0xa0) [0x7fd9079c46c0]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_SynthInstance_0__Lean_Meta_synthPendingImp___lambda__3+0x12c0) [0x7fd9079c67c0]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_5+0xa70) [0x7fd90d522110]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_Basic_0__Lean_Meta_withMVarContextImp___rarg+0x203) [0x7fd9076cc053]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_MVarId_withContext___at___private_Lean_Meta_SynthInstance_0__Lean_Meta_synthPendingImp___spec__2___rarg+0x17) [0x7fd9079c43b7]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_synth_pending+0x4c2) [0x7fd9079c80b2]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_unstuckMVar___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqOnFailure___spec__1___lambda__2+0xb1) [0x7fd907912ee1]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_unstuckMVar___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqOnFailure___spec__1+0x754) [0x7fd9079145f4]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_unstuckMVar___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqOnFailure___spec__2+0x5a9) [0x7fd907917029]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_5+0x8cc) [0x7fd90d521f6c]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_withTraceNodeBefore___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_checkTypesAndAssign___spec__1+0x2e4) [0x7fd907851ad4]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqOnFailure+0x1ef) [0x7fd90791803f]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isExprDefEqExpensive___lambda__1+0xe8c) [0x7fd9079353fc]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isExprDefEqExpensive___lambda__2+0x2256) [0x7fd907938306]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isExprDefEqExpensive+0xb6a) [0x7fd907939d8a]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_isExprDefEqAuxImpl___lambda__3+0x295b) [0x7fd90794256b]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_5+0x5e6) [0x7fd90d521c86]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_withTraceNodeBefore___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_checkTypesAndAssign___spec__1+0x2e4) [0x7fd907851ad4]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_is_expr_def_eq+0x621) [0x7fd90782f9a1]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_checkpointDefEq___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqApp___spec__1+0xe6e) [0x7fd907924bbe]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqApp+0x1ea) [0x7fd90792d0da]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isExprDefEqExpensive___lambda__1+0x1e1) [0x7fd907934751]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isExprDefEqExpensive___lambda__2+0x2256) [0x7fd907938306]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isExprDefEqExpensive+0xb6a) [0x7fd907939d8a]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_Meta_isExprDefEqAuxImpl___lambda__3+0x295b) [0x7fd90794256b]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_apply_5+0x5e6) [0x7fd90d521c86]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l_Lean_withTraceNodeBefore___at___private_Lean_Meta_ExprDefEq_0__Lean_Meta_checkTypesAndAssign___spec__1+0x2e4) [0x7fd907851ad4]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(lean_is_expr_def_eq+0x621) [0x7fd90782f9a1]
/home/mstoll/.elan/toolchains/leanprover--lean4---v4.20.0/lib/lean/libleanshared.so(l___private_Lean_Meta_ExprDefEq_0__Lean_Meta_isDefEqLeft___lambda__1+0x26) [0x7fd9078e2626]
(etc.)
Is this a known problem?
Can you provide a #mwe ?
Not right now (I've finished working and will go to bed...).
It seems to occur while typing; maybe it tries to make sense of some partially typed thing, which triggers the error.
That's the same error as reported in #mathlib4 > ✔ Crash in `sup`/`inf` / `max`/`min` delaborators .
It means that there is a universe level metavariable in an expression that isn't in the metavariable context. That particular case was fixed by a PR I did to lean, meaning that it would be fixed in v4.21.0. Did your example by any chance involve the max or min function and a rewrite tactic?
Jovan Gerbscheid said :
Did your example by any chance involve the max or min function and a rewrite tactic?
That's very well possible; the proof I was working on involves Finset.sup' and also max. Rewrites occur in the proof. But just stepping through the finished proof does not produce the PANIC; I'm quite positive that it happened while editing.
The error should only appear when the cursor is on a lemma that involves max, within a rewrite tactic.
I can't tell if it's the same problem with only the first part of the trace
but it certainly looks similar
It just occurred again, when I put the cursor right before the ] in rw [this.map_max], so it really looks like it is the same error.
Last updated: Dec 20 2025 at 21:32 UTC