`leanchecker --from-export` rejects string and quotient rfl proof accepted by `Lean`
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Domain
- compilers
Research direction
The report names leanchecker --from-export, leanexport, and a minimal Main.lean example. Start by reproducing the failure with the listed nightly commands, then trace how the exported declaration refers to String.ofList and why the checker cannot resolve it. Done means the exported proof passes verification while the reported string and quotient examples remain covered.
Written by the indexing model from the issue text.
Description
Prerequisites
- Check that your issue is not already filed: https://github.com/leanprover/lean4/issues
- Reduce the issue to a minimal, self-contained, reproducible test case.
- Test your test case against the latest nightly release
Description
Lean accepts "a" ++ "b" = "ab" by rfl, but exporting the proof with leanexport and checking it with leanchecker --from-export fails with an unknown-constant error.
Context
The same failure occurs with "ab" = String.mk ['a', 'b']. Using String.ofList explicitly instead of String.mk makes replay succeed.
Steps to Reproduce
-
Save the following as
Main.lean:theorem a_append : "a" ++ "b" = "ab" := rfl -
With
nightly-2026-10-12installed, run in the same directory:TC="$HOME/.elan/toolchains/leanprover--lean4-nightly---nightly-2026-10-12/bin" export LEAN_SYSROOT="$TC/.." LEAN_PATH=".:$TC/../lib/lean" "$TC/lean" -o Main.olean Main.lean "$TC/leanexport" Main -- a_append > Main.ndjson "$TC/leanchecker" --from-export Main.ndjson
Expected behavior: The exported proof passes verification.
Actual behavior: Compilation and export succeed. #print axioms reports [propext]. Replay exits with code 1:
Lean default kernel rejects the solution: while replaying declaration 'a_append':
(kernel) unknown constant 'String.ofList'
Versions
version 4.36.0-nightly-2026-10-12
Additional Information
NA
Impact
Add 👍 to issues you consider important. If others are impacted by this issue, please ask them to add 👍 to it.
- Dominant language
- Lean
- Stars
- 9.6k
- Forks
- 1.1k
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 301
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from leanprover/lean4
-
`IO.appPath` fails when `/proc` belongs to another PID namespacePossibly taken @treiher claimed this 4 days ago. Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
leanprover/lean4#15692 · 3 reactions ·
Maintainers usually reply within 1 day
-
`IO.FS.realPath` reports every failure as `noFileOrDirectory` instead of classifying by `errno`Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
leanprover/lean4#15683 ·
Maintainers usually reply within 1 day
-
`Child.pid` leaks the `Child` and its pipe file descriptors (owned argument treated as borrowed)Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
leanprover/lean4#15681 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
leanprover/lean4#15677 ·
Maintainers usually reply within 1 day
-
`Child.takeStdin` loses `setsid`, so `Child.kill` only signals the child, not its process groupOpenbug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
leanprover/lean4#15674 ·
Maintainers usually reply within 1 day
All issues in leanprover/lean4
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
rescript-lang/rescript#8996 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
bug P2
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
duplicate
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
numba/numba#10939 · 1 comment ·
Maintainers usually reply within 1 day
-
REPL and --show-tokens abort with "Token conversion not implemented yet" on .xor., byte and in outOpenbug low priority tokenizer
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day