| #((σ to m + n0) from m) = ⌜n1⌝ , #((σ 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 - n1], #((σ to m + n0) from m) = ∞, σ0 = [], ⌜n⌝ < #((σ to m + n0) from m), # σ < ⌜m⌝ + ⌜n0⌝ , # σ < ⌜n0⌝ + ⌜m⌝ |
#((σ to n0 + m) + σ0 from m) = ⌜n1⌝ + # σ0, #((σ to m + n0) from m) = ⌜n1⌝ , ⌜n1⌝ < ⌜n0⌝ + # σ0, ⌜n⌝ < ⌜n1⌝ + # σ0, ⌜n⌝ < ⌜n0⌝ + # σ0, n1 ≤ n ⊦ σ0 = [], ((σ to n0 + m) + σ0)[m + n] = σ0[n - n1], # σ < ⌜n0⌝ + ⌜m⌝ , # σ < ⌜m⌝ + ⌜n0⌝
Used simplifier rules: size-empty-equiv: ⊦ # σ = ⌜0⌝ ↔ σ = [];%lels: ⊦ ¬ m < n ↔ n ≤ m; from specification nat%less-fin: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; from specification nat-inf%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-fin-01: ⊦ ⌜n⌝ < n∞ + ⌜n⌝ ↔ n∞ ≠ ⌜0⌝ ; from specification nat-inf%disj: ⊦ ⌜m⌝ ≠ ∞; from specification nat-inf-basic%lels-trans: ⊦ ¬ n∞1 < n∞ ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf