| ((ino => mkfile(n, md, m, content) * F))(files), ((ino =>mkfile(n, md, m, σ1) * F))(files) ⊦ content.stream = σ1 |
⊦ ((ino =>mkfile(n, md, m, σ) * F))(files) ↔ (∃ content. ((ino => mkfile(n, md, m, content) * F))(files) ∧ content.stream = σ)
Used simplifier rules: sep-ass: ⊦ (F * F0) * F1 = F * F0 * F1; from specification heap-sep[file-heap]%sep-com: ⊦ F * F0 = F0 * F; from specification heap-sep[file-heap]%eq-objs: ⊦ ((ino => af * F))(files) ∧ ((ino => af0 * F0))(files) → af = af0; (forward) from specification maplet[file-heap]%⊦ mkfile(m, md, m0, content) = mkfile(m1, md0, m2, content0) ↔ m = m1 ∧ md = md0 ∧ m0 = m2 ∧ content = content0; (ws) Used terms: files, F, σ1, m, md, n, ino