def g (x : Nat) := 2*x + 1 def f (x : Nat) : Nat := match g x with | 0 => 1 | y + 1 => g x example : f x = 2*x + 1 := by unfold f split next h => simp_arith [g] at h next y h => trace_state -- split tactic should *not* rewrite `g x` to `Nat.succ y` show g x = 2*x + 1 simp [g]