| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, 1 + n < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n], ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n ⊦ |
nσ[n0] = nσ[n2] + 1, leninv(nσ) = ⌜n1⌝ , nσ[n0] < n1, ⌜n0⌝ < # nσ, ⌜n2⌝ < # nσ, n0 < n2, stutf(nσ), n0 ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[nσ[n2]], ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = nσ[n2], ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic