| # buf = VFS_PAGE_SIZE, m0 * VFS_PAGE_SIZE + n1 = (n2 + VFS_PAGE_SIZE) + n * VFS_PAGE_SIZE, n1 < n2 + VFS_PAGE_SIZE, n1 < VFS_PAGE_SIZE, n ≤ m0 ⊦ (m0 = n ∨ m0 ∈ content ⊃ content[n, buf][m0];zeropage)[n1] = ((n2 + VFS_PAGE_SIZE) / VFS_PAGE_SIZE + n ∈ content ⊃ content[(n2 + VFS_PAGE_SIZE) / VFS_PAGE_SIZE + n];zeropage)[n2 % VFS_PAGE_SIZE] |
⊦ n ≠ n0 → content[n0, buf][n] = content[n]
# buf = VFS_PAGE_SIZE, m0 * VFS_PAGE_SIZE + n1 = (n2 + VFS_PAGE_SIZE) + n * VFS_PAGE_SIZE, n1 < VFS_PAGE_SIZE, n1 < n2 + VFS_PAGE_SIZE, n ≤ m0 ⊦ (m0 = n ∨ m0 ∈ content ⊃ content[m0];zeropage)[n1] = ((n2 + VFS_PAGE_SIZE) / VFS_PAGE_SIZE + n ∈ content ⊃ content[(n2 + VFS_PAGE_SIZE) / VFS_PAGE_SIZE + n];zeropage)[n2 % VFS_PAGE_SIZE], m0 = n
Used simplifier rules: ⊦ m + n = m + n0 ↔ n = n0; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ content[n, buf][n] = buf; (s)% ⊦ m ≤ m; (s)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ m < n → m / n = 0; (s)% ⊦ n + 0 = n; (s)% ⊦ m + m0 < n → ¬ n + n0 < m; (s) Used terms: m0, buf, n, content