| EB_PAGE_SIZE = # buf1 + # buf0 % EB_PAGE_SIZE, avol[n] = mapped(buf0), LEB_SIZE < # buf0 + # buf1, n < # avol, # buf0 ≤ LEB_SIZE ⊦ buf1 = mkbuf(0), is-aligned(# buf0, EB_PAGE_SIZE) |
m ≠ 0 ⊦ is-aligned(m0, m) ∧ m0 < m1 ∧ m1 < m0 + m → ¬ is-aligned(m1, m)
Used simplifier rules: ⊦ EB_PAGE_SIZE ≠ 0; (s)%m ≠ 0 ⊦ is-aligned(align↓(n, m), m); (s)%n ≠ 0 ⊦ ¬ is-aligned(m, n) → align↓(m, n) + n = align↑(m, n); (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%m ≠ 0 ⊦ m = n % m + n0 ∧ ¬ is-aligned(n, m) → align↑(n, m) = n + n0; (s)% ⊦ is-aligned(LEB_SIZE, EB_PAGE_SIZE); (ss)% ⊦ m < n ↔ ¬ n ≤ m; (ss)%let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat%m ≠ 0 ⊦ n ≤ align↓(n, m) ↔ is-aligned(n, m); (s)%m ≠ 0 ⊦ is-aligned(n, m) → n % m = 0; (s)% ⊦ n + 0 = n; (s) Used terms: EB_PAGE_SIZE, align↓(# buf0, EB_PAGE_SIZE), LEB_SIZE