From 8c1e5c5c07c249b0a06cc558f2dfb554f8a86e80 Mon Sep 17 00:00:00 2001 From: Kim Morrison <477956+kim-em@users.noreply.github.com> Date: Tue, 1 Jul 2025 12:44:27 +1000 Subject: [PATCH] chore: allow grind to unfold Array ifInBounds operations (#9120) --- src/Init/Data/Array/Basic.lean | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Init/Data/Array/Basic.lean b/src/Init/Data/Array/Basic.lean index 17b5c35337..c84ad50a53 100644 --- a/src/Init/Data/Array/Basic.lean +++ b/src/Init/Data/Array/Basic.lean @@ -263,7 +263,7 @@ Examples: * `#["red", "green", "blue", "brown"].swapIfInBounds 0 4 = #["red", "green", "blue", "brown"]` * `#["red", "green", "blue", "brown"].swapIfInBounds 9 2 = #["red", "green", "blue", "brown"]` -/ -@[extern "lean_array_swap"] +@[extern "lean_array_swap", grind] def swapIfInBounds (xs : Array α) (i j : @& Nat) : Array α := if h₁ : i < xs.size then if h₂ : j < xs.size then swap xs i j @@ -1808,6 +1808,7 @@ Examples: * `#["apple", "pear", "orange"].eraseIdxIfInBounds 3 = #["apple", "pear", "orange"]` * `#["apple", "pear", "orange"].eraseIdxIfInBounds 5 = #["apple", "pear", "orange"]` -/ +@[grind] def eraseIdxIfInBounds (xs : Array α) (i : Nat) : Array α := if h : i < xs.size then xs.eraseIdx i h else xs @@ -1918,6 +1919,7 @@ Examples: * `#["tues", "thur", "sat"].insertIdxIfInBounds 3 "wed" = #["tues", "thur", "sat", "wed"]` * `#["tues", "thur", "sat"].insertIdxIfInBounds 4 "wed" = #["tues", "thur", "sat"]` -/ +@[grind] def insertIdxIfInBounds (as : Array α) (i : Nat) (a : α) : Array α := if h : i ≤ as.size then insertIdx as i a