| p_ino ∈ dirs, str ∈ entries ⊦ ino = entries[str], ∀ alink. alink ∈ links(entries[str], dirs[p_ino, mkdir(m0, md, n, n0, entries[str, ino])]) ↔ alink ∈ links(entries[str], dirs[p_ino, mkdir(m0, md, n, n0, entries)]) -- mklink(p_ino, str) |
str ∈ entries, p_ino ∈ dirs, alink.pino ∈ dirs ⊦ alink.name ∈ (alink.pino = p_ino ⊃ mkdir(m0, md, n, n0, entries[str, ino]);dirs[alink.pino]).entries ∧ entries[str] = (alink.pino = p_ino ⊃ mkdir(m0, md, n, n0, entries[str, ino]);dirs[alink.pino]).entries[alink.name] ↔ alink ≠ mklink(p_ino, str) ∧ alink.name ∈ (alink.pino = p_ino ⊃ mkdir(m0, md, n, n0, entries);dirs[alink.pino]).entries ∧ entries[str] = (alink.pino = p_ino ⊃ mkdir(m0, md, n, n0, entries);dirs[alink.pino]).entries[alink.name], ino = entries[str]
Used simplifier rules: links: ⊦ alink ∈ links(ino, dirs) ↔ alink.pino ∈ dirs ∧ alink.name ∈ dirs[alink.pino].entries ∧ ino = dirs[alink.pino].entries[alink.name];% ⊦ alink ∈ ls -- alink0 ↔ alink ≠ alink0 ∧ alink ∈ ls; (s)% ⊦ dirs[ino, ad][ino0] = (ino0 = ino ∧ ino ∈ dirs ⊃ ad;dirs[ino0]); (s)% ⊦ ino ∈ dirs[ino0, ad] ↔ ino ∈ dirs; (s)