| m + n = # buf, n0 < m + n, ⌜n0⌝ < #(⌜buf⌝ to n) ⊦ fill(buf, zero, n, m)[n0] = (⌜buf⌝ to n)[n0] |
m + n = # buf, n0 < n, n0 < m + n ⊦ fill(buf, zero, n, m)[n0] = ⌜buf⌝ [n0]
Used simplifier rules: m < n, ¬ # σ0 < ⌜n⌝ ⊦ (σ0 to n)[m] = σ0[m]; (s)%¬ # σ0 < ⌜n⌝ ⊦ #(σ0 to n) = ⌜n⌝ ; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ ¬ m + n < m; (s)% ⊦ m < n → n ≠ 0; (s)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)% ⊦ # ⌜buf⌝ = ⌜# buf⌝ ; (s)