leanprover / leanprover/lean4

parser interprets unindented list literal as part of indented tactic block

Open
#12,794 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Prerequisites
Description

This example fails to parse:

example : List Nat :=
  have : 1 = 1 := by
    simp
  [] -- unexpected end of input; expected ';' or line break

Lean seems to interpret the list literal as belonging to simp (also works with grind).

Symptomatics:

  • When using simp [], the error disappears.
  • The error message is not captured by #guard_msgs in, but perhaps that is because the parser isn't able to recover and doesn't even return a partial parsing result.

Expected behavior:

No error. [] should be interpreted as a list literal.

Actual behavior:

Error as shown.

Versions
Lean 4.30.0-nightly-2026-03-04
Target: x86_64-unknown-linux-gnu
Additional Information

[Additional information, configuration or data that might be necessary to reproduce the issue]

Impact

Add 👍 to issues you consider important. If others are impacted by this issue, please ask them to add 👍 to it.

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

Start by reproducing the minimal example in the issue with the Lean nightly environment at live.lean-lang.org, then inspect the parser behavior around the indented tactic block and following [] literal. Done means the example parses without an error and [] is treated as the list literal rather than as part of simp or grind.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.