| ⊦ ⌜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: add-base: ⊦ n + 0 = n; from specification nat-basic2%add-01: ⊦ n ≤ m → m + n0 - n = (m - n) + n0; from specification nat%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%oz: ⊦ m + 1 ≠ 0; from specification nat-basic2%inj-01: ⊦ ⌜nf⌝ = ⌜nf0⌝ ↔ nf = nf0; from specification stream-basic%one-03: ⊦ a '[0] = a; from specification list-del%one-01: ⊦ m < 1 ↔ m = 0; from specification nat-basic1%len-02: ⊦ # a ' = 0 +1; from specification list