Skip to content

Commit e897478

Browse files
committed
fix: add Nat.cast normalizer missing case
This PR adds a missing `Nat.cast` missing normalization rule for `grind`. Example: ```lean example (n : Nat) : Nat.cast n = n := by grind ```
1 parent 19e1fe5 commit e897478

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/Init/Grind/Norm.lean

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ theorem natCast_mod (a b : Nat) : (NatCast.natCast (a % b) : Int) = (NatCast.nat
8282
theorem natCast_add (a b : Nat) : (NatCast.natCast (a + b : Nat) : Int) = (NatCast.natCast a : Int) + (NatCast.natCast b : Int) := rfl
8383
theorem natCast_mul (a b : Nat) : (NatCast.natCast (a * b : Nat) : Int) = (NatCast.natCast a : Int) * (NatCast.natCast b : Int) := rfl
8484
theorem natCast_pow (a b : Nat) : (NatCast.natCast (a ^ b : Nat) : Int) = (NatCast.natCast a : Int) ^ b := by simp
85+
theorem natCast_id (a : Nat) : NatCast.natCast a = a := rfl
8586

8687
theorem Nat.pow_one (a : Nat) : a ^ 1 = a := by
8788
simp
@@ -184,7 +185,7 @@ init_grind_norm
184185
Int.ediv_zero Int.emod_zero
185186
Int.ediv_one Int.emod_one
186187
Int.negSucc_eq
187-
natCast_div natCast_mod
188+
natCast_div natCast_mod natCast_id
188189
natCast_add natCast_mul natCast_pow
189190
Int.one_pow
190191
Int.pow_zero Int.pow_one

tests/lean/run/grind_natCast.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,9 @@ example (x : Nat) : NatCast.natCast x ≥ 0 := by grind
55
example (x : Nat) : x ≥ (-1 : Int) := by grind
66
example (x : Nat) : Int.ofNat x ≥ (-1 : Int) := by grind
77
example (x : Nat) : NatCast.natCast x ≥ -1 := by grind
8+
9+
example (n : Nat) : Nat.cast n = n := by
10+
grind
11+
12+
example (n m a : Nat) : n = m → Nat.cast n - a = m - a := by
13+
grind

0 commit comments

Comments
 (0)