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