| ⊦ ino = 0, ino ∈ dirs, ∀ alink. alink ∈ links(ino0, (dirs ++ ino)[ino, mkdir(m, md, n, n0, ∅)]) ↔ alink ∈ links(ino0, dirs) |
⊦ (alink.pino = ino ∨ alink.pino ∈ dirs) ∧ alink.name ∈ (alink.pino = ino ⊃ mkdir(m, md, n, n0, ∅);(dirs ++ ino)[alink.pino]).entries ∧ ino0 = (alink.pino = ino ⊃ mkdir(m, md, n, n0, ∅);(dirs ++ ino)[alink.pino]).entries[alink.name] ↔ alink.pino ∈ dirs ∧ alink.name ∈ dirs[alink.pino].entries ∧ ino0 = dirs[alink.pino].entries[alink.name], ino = 0, ino ∈ dirs
Used simplifier rules: links: ⊦ alink ∈ links(ino, dirs) ↔ alink.pino ∈ dirs ∧ alink.name ∈ dirs[alink.pino].entries ∧ ino = dirs[alink.pino].entries[alink.name];% ⊦ dirs[ino, ad][ino0] = (ino0 = ino ∧ ino ∈ dirs ⊃ ad;dirs[ino0]); (s)%ino ≠ 0, ¬ ino ∈ dirs ⊦ ino0 ∈ dirs ++ ino ↔ ino0 = ino ∨ ino0 ∈ dirs; (s)% ⊦ ino ∈ dirs[ino0, ad] ↔ ino ∈ dirs; (s)