pub proof fn vm_reader_read_embedded(tracked
source_owner: &mut VmIoOwner,
tracked dest_owner: &mut VmIoOwner,
) -> tracked consumed_w : VmIoOwnerExpand description
requires
old(source_owner).inv(),old(dest_owner).inv(),old(source_owner).read_view_initialized(),old(dest_owner).has_write_view(),ensuresfinal(source_owner).inv(),final(dest_owner).inv(),final(source_owner).read_view_initialized(),final(dest_owner).has_write_view(),final(source_owner).range.start >= old(source_owner).range.start,final(source_owner).range.end == old(source_owner).range.end,final(dest_owner).range.start >= old(dest_owner).range.start,final(dest_owner).range.end == old(dest_owner).range.end,consumed_w.inv(),consumed_w.has_write_view(),consumed_w.range.start >= old(dest_owner).range.start,consumed_w.range.end <= final(dest_owner).range.start,Mirror of crate::mm::io::VmReader::read (Infallible).
Exec requires: self.inv(), writer.inv(), self.wf(owner_r),
writer.wf(owner_w), owner_w.has_write_view(), owner_r.read_view_initialized().
Expressible: owner inv, has_write_view, read_view_initialized. MODEL GAP: handle inv/wf.