The unifier used to implement the `cases` tactic should not discard equations of the form `x = t` and `t = x` using proof irrelanvance. The new test demonstrates the issue. The unifier was reaching the state ``` x : Conw Con.nil |- x = Conw.nilw -> x = Conw.nilw ``` and discarding the equality instead of substituting `x` because `x` and `Conw.nilw` are definionally equal due to proof irrelevance. @javra Do you have more complicated examples that were being affected by this issue?
11 lines
177 B
Text
11 lines
177 B
Text
inductive Con : Type
|
|
| nil : Con
|
|
| foo : Con
|
|
|
|
inductive Conw : Con → Prop
|
|
| nilw : Conw Con.nil
|
|
|
|
example (x : Conw Con.nil) : x = Conw.nilw := by
|
|
cases x
|
|
traceState
|
|
rfl
|