Compare commits

...

1 Commits

Author SHA1 Message Date
Leonardo de Moura
aa4dfbb348 fix: panic at reducePow
closes #4947
2024-08-11 17:05:11 -07:00
2 changed files with 9 additions and 2 deletions

View File

@@ -55,8 +55,9 @@ builtin_dsimproc [simp, seval] reduceDiv ((_ / _ : Nat)) := reduceBin ``HDiv.hDi
builtin_dsimproc [simp, seval] reduceMod ((_ % _ : Nat)) := reduceBin ``HMod.hMod 6 (· % ·)
builtin_dsimproc [simp, seval] reducePow ((_ ^ _ : Nat)) := fun e => do
let some n fromExpr? e.appFn!.appArg! | return .continue
let some m fromExpr? e.appArg! | return .continue
let_expr HPow.hPow _ _ _ _ n m := e | return .continue
let some n fromExpr? n | return .continue
let some m fromExpr? m | return .continue
unless ( checkExponent m) do return .continue
return .done <| toExpr (n ^ m)

6
tests/lean/run/4947.lean Normal file
View File

@@ -0,0 +1,6 @@
universe u
class G (A : outParam Nat) where Z : Type u
export G (Z)
abbrev f (a : Nat) : Nat := 2 ^ a
variable [G (f 0)]
example {s : Z} : s = s := by simp only [Nat.reducePow]