| ¬ ⌜n⌝ < #((σ to m + n0) from m), #((σ to n0 + m) + σ0 from m) = #((σ to m + n0) from m) + # σ0, ⌜n⌝ < #((σ to m + n0) from m) + # σ0, ⌜n⌝ < ⌜n0⌝ + # σ0 ⊦ ((σ to n0 + m) + σ0)[m + n] = σ0[n - (#((σ to m + n0) from m)).n], # σ < ⌜n0⌝ + ⌜m⌝ , # σ < ⌜m⌝ + ⌜n0⌝ |
#((σ to n0 + m) + σ0 from m) = #((σ to m + n0) from m) + # σ0, ⌜n⌝ < ⌜n0⌝ + # σ0, ⌜n⌝ < #((σ to m + n0) from m) + # σ0, #((σ to m + n0) from m) < ⌜n0⌝ + # σ0 ⊦ ((σ to n0 + m) + σ0)[m + n] = σ0[n - (#((σ to m + n0) from m)).n], #((σ to m + n0) from m) = ∞, σ0 = [], ⌜n⌝ < #((σ to m + n0) from m), # σ < ⌜m⌝ + ⌜n0⌝ , # σ < ⌜n0⌝ + ⌜m⌝
Used simplifier rules: size-empty-equiv: ⊦ # σ = ⌜0⌝ ↔ σ = [];%add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf%add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf%add-less: ⊦ n∞1 < n∞ + n∞1 ↔ ¬ ¬(n∞ ≠ ⌜0⌝ ∧ n∞1 ≠ ∞); from specification nat-inf%lels-trans: ⊦ ¬ n∞1 < n∞ ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf