| n < VFS_PAGE_SIZE ⊦ content.stream to m * VFS_PAGE_SIZE + n = (content.stream to m * VFS_PAGE_SIZE) + (σ⊥ to n), m ∈ content |
n < VFS_PAGE_SIZE ⊦ ⌜(λ n0. (n0 / VFS_PAGE_SIZE ∈ content ⊃ content[n0 / VFS_PAGE_SIZE];zeropage)[n0 % VFS_PAGE_SIZE]) to m * VFS_PAGE_SIZE + n⌝ = ⌜(λ n0. (n0 / VFS_PAGE_SIZE ∈ content ⊃ content[n0 / VFS_PAGE_SIZE];zeropage)[n0 % VFS_PAGE_SIZE]) to m * VFS_PAGE_SIZE⌝ + (σ⊥ to n), m ∈ content
Used simplifier rules: stream: ⊦ content.stream = ⌜λ n. getbyte(n, content)⌝ ;%getbyte: ⊦ getbyte(m, content) = getpage(m / VFS_PAGE_SIZE, content)[m % VFS_PAGE_SIZE];%getpage: ⊦ getpage(n, content) = (n ∈ content ⊃ content[n];zeropage);% ⊦ VFS_PAGE_SIZE ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ ⌜nf0⌝ to n = ⌜nf0 to n⌝ ; (s)