| # links(entries0[str], dirs0) = m1 + 1, files0[entries0[str]] = mkfile(m0, md1, m1 + 1, content), dirs0[m] = mkdir(m2 + 1, md2, # links(m, dirs0), m3, entries0), dirs = dirs0[m, mkdir(m2, md, # links(m, dirs0), m3, entries0 -- str)], files = files0[entries0[str], mkfile(m0, md1, m1, content)], ino = inode.ino, inode = mkinode(entries0[str], md0, false, # links(entries0[str], dirs0), 0, m6), afs-cons(dirs0[m, mkdir(m2, md2, # links(m, dirs0), m3, entries0 -- str)], files0[entries0[str], mkfile(m0, md1, m1, content)]), afs-cons(dirs0, files0), afs-cons(dirs0[m, mkdir(m2, md, # links(m, dirs0), m3, entries0 -- str)], files0[entries0[str], mkfile(m0, md1, m1, content)]), afs-cons(dirs, files[ino, files[ino].size:= inode.size][ino, files[ino, files[ino].size:= inode.size][ino].meta:= inode.meta]), m ∈ dirs0, str ∈ entries0, entries0[str] ∈ files0, ino ∈ files, links(m, dirs0) ≠ ∅ ∨ m = ROOT_INO ⊦ ⟪c_inode := (entries0[str] ∈ dirs ⊃ mkinode(entries0[str], dirs[entries0[str]].meta, true, dirs[entries0[str]].nlink, dirs[entries0[str]].nsubdirs, dirs[entries0[str]].size) ;mkinode (entries0[str], files[ino, files[ino].size:= inode.size][ino, files[ino, files[ino].size:= inode.size][ino].meta:= inode.meta][entries0[str]].meta, false, files[ino, files[ino].size:= inode.size][ino, files[ino, files[ino].size:= inode.size][ino].meta:= inode.meta][entries0[str]].nlink, 0, files[ino, files[ino].size:= inode.size][ino, files[ino, files[ino].size:= inode.size][ino].meta:= inode.meta][entries0[str]].size) ); err := ESUCCESS; asynced := ?⟫ true |
# links(entries0[str], dirs0) = m1 + 1, dirs0[m] = mkdir(m2 + 1, md2, # links(m, dirs0), m3, entries0), files0[entries0[str]] = mkfile(m0, md1, m1 + 1, content), dirs = dirs0[m, mkdir(m2, md, # links(m, dirs0), m3, entries0 -- str)], files = files0[entries0[str], mkfile(m0, md1, m1, content)], ino = inode.ino, inode = mkinode(entries0[str], md0, false, # links(entries0[str], dirs0), 0, m6), afs-cons(dirs, files[ino, files[ino].size:= inode.size][ino, files[ino, files[ino].size:= inode.size][ino].meta:= inode.meta]), afs-cons(dirs0[m, mkdir(m2, md, # links(m, dirs0), m3, entries0 -- str)], files0[entries0[str], mkfile(m0, md1, m1, content)]), afs-cons(dirs0, files0), afs-cons(dirs0[m, mkdir(m2, md2, # links(m, dirs0), m3, entries0 -- str)], files0[entries0[str], mkfile(m0, md1, m1, content)]), ino ∈ files, entries0[str] ∈ files0, str ∈ entries0, m ∈ dirs0, (entries0[str] ∈ dirs ⊃ str ∈ entries0 ∧ str ∈ entries0 ∧ str ∈ entries0 ∧ str ∈ entries0 ∧ str ∈ entries0 ;str ∈ entries0 ∧ str ∈ entries0 ∧ str ∈ entries0 ∧ str ∈ entries0 ), links(m, dirs0) ≠ ∅ ∨ m = ROOT_INO ⊦ ⟪err := ESUCCESS; asynced := ?⟫ true
Used simplifier rules: ⊦ mkinode(m, md, boolvar, m0, m1, m2).ino = m; (s)% ⊦ ino ∈ files[ino0, af] ↔ ino ∈ files; (s)% ⊦ files[ino, af][ino0] = (ino0 = ino ∧ ino ∈ files ⊃ af;files[ino0]); (s)% ⊦ mkinode(m, md, boolvar, m0, m1, m2).size = m2; (s)% ⊦ mkfile(m, md, m0, content).size:= m1 = mkfile(m1, md, m0, content); (s)% ⊦ files[ino, af][ino, af0] = files[ino, af0]; (s)% ⊦ mkinode(m, md, boolvar, m0, m1, m2).meta = md; (s)% ⊦ mkfile(m, md, m0, content).meta:= md0 = mkfile(m, md0, m0, content); (s)% ⊦ ino ∈ dirs[ino0, ad] ↔ ino ∈ dirs; (s)