| ⊦ ⌜nf⌝ = ⌜λ n. (n < # a0 ' ⊃ a0 '[n];nf0(n - # a0 '))⌝ ↔ nf(0) = a0 ∧ (λ n. nf(n + 1)) = nf0 |
⊦ nf(n) = (n = 0 ⊃ nf(0);nf((n - 1) + 1))
Used simplifier rules: ⊦ 0 + m = m; (s)% ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + 1 ≠ 0; (s)% ⊦ ⌜nf⌝ = ⌜nf0⌝ ↔ nf = nf0; (s)% ⊦ a '[0] = a; (s)% ⊦ m < 1 ↔ m = 0; (s)% ⊦ # a ' = 0 +1; (s)