You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reduced the issue to a self-contained, reproducible test case.
Description
Running simp (config := {decide := false}) inside a branch of a match statement will often leave an unsolved goal True.
This behaviour has been hidden by the default decide := true, which subsequently closes the True.
Steps to Reproduce
example : 0 = 0 := by
simp (config := {decide := false}) -- Works fine.example (n : Nat) : 0 = 0 := bymatch n with
| 0 => simp (config := {decide := false}) -- Fails: unsolved goal `True`
| _ => simp
example (n : Nat) : 0 = 0 := bymatch n with
| 0 => simp (config := {decide := true}) -- this is the default, so masks the problem?
| _ => simp
Expected behavior:
All three examples to work.
Actual behavior:
The second example fails in the 0 branch, with unsolved goal True.
@Kha says "this looks like an mdata bug. pp.raw + trace_state uncovers the difference."
Prerequisites
Description
Running
simp (config := {decide := false})
inside a branch of amatch
statement will often leave an unsolved goalTrue
.This behaviour has been hidden by the default
decide := true
, which subsequently closes theTrue
.Steps to Reproduce
Expected behavior:
All three examples to work.
Actual behavior:
The second example fails in the
0
branch, with unsolved goalTrue
.@Kha says "this looks like an mdata bug.
pp.raw
+trace_state
uncovers the difference."Reproduces how often:
Always.
Versions
Lean (version 4.0.0-nightly-2023-03-17, commit 8650804, Release)
Additional Information
Reported on zulip.
The text was updated successfully, but these errors were encountered: