This removes simp attributes from `Nat.succ.injEq` and `Nat.succ_sub_succ_eq_sub` to replace them with simprocs. This is because any reductions involving `Nat.succ` has a high risk of leading proof performance problems when dealing with even moderately large numbers. Here are a couple examples that will both report a maximum recursion depth error currently. These examples are fixed by this PR. ``` example : (123456: Nat) = 12345667 := by simp example (x : Nat) (p : x = 0) : 1000 - (x + 1000) = 0 := by simp ```
22 lines
603 B
Text
22 lines
603 B
Text
/-
|
|
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Leonardo de Moura
|
|
-/
|
|
prelude
|
|
import Init.Data.Nat.Basic
|
|
import Init.Data.Nat.Div
|
|
import Init.Data.Nat.Dvd
|
|
import Init.Data.Nat.Gcd
|
|
import Init.Data.Nat.MinMax
|
|
import Init.Data.Nat.Bitwise
|
|
import Init.Data.Nat.Control
|
|
import Init.Data.Nat.Log2
|
|
import Init.Data.Nat.Power2
|
|
import Init.Data.Nat.Linear
|
|
import Init.Data.Nat.SOM
|
|
import Init.Data.Nat.Lemmas
|
|
import Init.Data.Nat.Mod
|
|
import Init.Data.Nat.Lcm
|
|
import Init.Data.Nat.Compare
|
|
import Init.Data.Nat.Simproc
|