| n < # ar, n ≤ m0, ∀ n, ar, a. n < m0 ∧ n < # ar → fill(ar, a, 0, m0)[n] = a ∨ m0 = 0 ∨ # ar = 0 ⊦ # ar = 0, fill(ar, a, 0, m0)[m0, a][n] = a |
⊦ m ≠ n → ar[n, a][m] = ar[m]
n ≠ m0, n < # ar, n ≤ m0, ∀ n, ar, a. n < m0 ∧ n < # ar → fill(ar, a, 0, m0)[n] = a ∨ m0 = 0 ∨ # ar = 0 ⊦ # ar = 0, fill(ar, a, 0, m0)[n] = a
Used simplifier rules: size-fill-h: ⊦ # fill(ar, a, m, n) = # ar;%lels: ⊦ ¬ m < n ↔ n ≤ m; from specification nat%ls-le-simp: ⊦ m < n → (n ≤ m ↔ false); from specification nat%cgetput: m < # ar ⊦ ar[m, a][m] = a; from specification array Used terms: n, a, m0, fill(ar, a, 0, m0)