Previously, the tactic state shown at `decreasing_by` would leak lots of details about the translation, and mention `invImage`, `PSigma` etc. This is not nice. So this introduces `clean_wf`, which is like `simp_wf` but using `simp`'s `only` mode, and runs this unconditionally. This should clean up the goal to a reasonable extent. Previously `simp_wf` was an unrestricted `simp […]` call, but we probably don’t want arbitrary simplification to happen at this point, so this now became `simp only` call. For backwards compatibility, `decreasing_with` begins with `try simp`. The `simp_wf` tactic is still available to not break too much existing code; it’s docstring suggests to no longer use it. With `set_option cleanDecreasingByGoal false` one can disable the use of `clean_wf`. I hope this is only needed for debugging and understanding. Migration advise: If your `decreasing_by` proof begins with `simp_wf`, either remove that (if the proof still goes through), or replace with `simp`. I am a bit anxious about running even `simp only` unconditionally here, as it may do more than some user might want, e.g. because of options like `zetaDelta := true`. We'll see if we need to reign in this tactic some more. I wonder if in corner cases the `simp_wf` tactic might be able to close the goal, and if that is a problem. If so, we may have to promote simp’s internal `mayCloseGoal` parameter to a simp configuration option and use that here. fixes #4928
11 lines
354 B
Text
11 lines
354 B
Text
Tactic is run (ideally only once)
|
|
Tactic is run (ideally only twice)
|
|
Tactic is run (ideally only twice)
|
|
Tactic is run (ideally only once, in most general context)
|
|
n : Nat
|
|
⊢ n < n.succ
|
|
Tactic is run (ideally only twice, in most general context)
|
|
Tactic is run (ideally only twice, in most general context)
|
|
n : Nat
|
|
⊢ n < n.succ
|
|
n m : Nat ⊢ n < n.succ
|