| m < # apebs, valid-eraseq-stronger(subarray(apebs, 0, m), []) ⊦ valid-eraseq-stronger(subarray(apebs, 0, m + 1), [] + eq-entry(m, none) ') ↔ ¬ valid-peb(apebs[m]) |
m < # apebs ⊦ ¬ valid-peb(subarray(apebs, 0, m + 1)[m]) ↔ ¬ valid-peb(apebs[m])
Used simplifier rules: valid-eraseq-stronger-one: ⊦ valid-eraseq-stronger(apebs, eq-entry(m, lref) ') ↔ m < # apebs ∧ (lref = none → ¬ valid-peb(apebs[m])) ∧ ( lref ≠ none → valid-peb(lref.vol, lref.leb, apebs[m]) ∧ apebs[m].vidhdr.sqn ≠ valid-sqns(lref.vol, lref.leb, apebs).max);%valid-eraseq-stronger-base: ⊦ valid-eraseq-stronger(apebs, []);%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ ¬ n < n; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ # subarray(apebs, m, n) = n; (s)%a: ⊦ (q + q0) + q1 = q + q0 + q1; from specification list[erasequeue-base]% ⊦ [] + q = q; (s)