| # buf1 = EB_PAGE_SIZE, # lpt = # avol, avol[m4] = mapped(buf2), m3 = n0 + # buf2, m4 < # avol, ebm-vol-inv (avol [m4, mapped(buf2 + mkempbuf(n0) + copy(buf3, 0, copy(buf1, 0, mkbuf(align↓(m2 + n3, EB_PAGE_SIZE)), 0, m2), m2, align↓(m2 + n3, EB_PAGE_SIZE) - m2)) ]), ebm-vol-inv(avol), is-aligned(m3, EB_PAGE_SIZE), wbuf-cons(mkwbuf(buf1, m3, m2), mapped(buf2), false), m2 ≤ align↓(m2 + n3, EB_PAGE_SIZE), n3 ≤ # buf3, align↓(m2 + n3, EB_PAGE_SIZE) ≤ # buf3 + m2, m2 ≤ EB_PAGE_SIZE, EB_PAGE_SIZE ≤ m2 + n3, m3 + m2 + n3 ≤ LEB_SIZE, # buf2 ≤ m3, m3 + align↓(m2 + n3, EB_PAGE_SIZE) ≤ LEB_SIZE ⊦ wbuf-cons (mkwbuf (copy(buf3, align↓(m2 + n3, EB_PAGE_SIZE) - m2, buf1, 0, (m2 + n3) % EB_PAGE_SIZE), m3 + align↓(m2 + n3, EB_PAGE_SIZE), (m2 + n3) % EB_PAGE_SIZE), mapped(buf2 + mkempbuf(n0) + copy(buf3, 0, copy(buf1, 0, mkbuf(align↓(m2 + n3, EB_PAGE_SIZE)), 0, m2), m2, align↓(m2 + n3, EB_PAGE_SIZE) - m2)), false) |
# lpt = # avol, # buf1 = EB_PAGE_SIZE, avol[m4] = mapped(buf2), m4 < # avol, ebm-vol-inv(avol), ebm-vol-inv (avol [m4, mapped(buf2 + mkempbuf(n0) + copy(buf3, 0, copy(buf1, 0, mkbuf(align↓(m2 + n3, EB_PAGE_SIZE)), 0, m2), m2, align↓(m2 + n3, EB_PAGE_SIZE) - m2)) ]), is-aligned(n0 + # buf2, EB_PAGE_SIZE), wbuf-cons(mkwbuf(buf1, n0 + # buf2, m2), mapped(buf2), false), (n0 + # buf2) + align↓(m2 + n3, EB_PAGE_SIZE) ≤ LEB_SIZE, (n0 + # buf2) + m2 + n3 ≤ LEB_SIZE, EB_PAGE_SIZE ≤ m2 + n3, m2 ≤ EB_PAGE_SIZE, align↓(m2 + n3, EB_PAGE_SIZE) ≤ # buf3 + m2, n3 ≤ # buf3, m2 ≤ align↓(m2 + n3, EB_PAGE_SIZE) ⊦ wbuf-cons (mkwbuf (copy(buf3, align↓(m2 + n3, EB_PAGE_SIZE) - m2, buf1, 0, (m2 + n3) % EB_PAGE_SIZE), (n0 + # buf2) + align↓(m2 + n3, EB_PAGE_SIZE), (m2 + n3) % EB_PAGE_SIZE), mapped(buf2 + mkempbuf(n0) + copy(buf3, 0, copy(buf1, 0, mkbuf(align↓(m2 + n3, EB_PAGE_SIZE)), 0, m2), m2, align↓(m2 + n3, EB_PAGE_SIZE) - m2)), false)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m ≤ m + n; (s)