@[simp] def foo (a : Nat) : Nat := 2 * a /-- trace: x : Nat ⊢ 2 * x = x + x -/ #guard_msgs in example : foo = fun a => a + a := by fail_if_success simp -- should not unfold `foo` into a lambda funext x simp -- unfolds `foo` trace_state simp +arith @[simp] def boo : Nat → Nat | a => 2 * a /-- trace: x : Nat ⊢ 2 * x = x + x -/ #guard_msgs in example : boo = fun a => a + a := by fail_if_success simp -- should not unfold `boo` into a lambda funext x simp -- unfolds `boo` trace_state simp +arith