| ∅ = abs-files((∅)[adr1, inodenode(inodekey(ROOT_INO), md, true, 0, 0, 0)], (∅)[inodekey(ROOT_INO), adr1]) ⊦ (∅ ++ ROOT_INO)[ROOT_INO, mkdir(0, md, 0, 0, ∅)] = abs-dirs((∅)[adr1, inodenode(inodekey(ROOT_INO), md, true, 0, 0, 0)], (∅)[inodekey(ROOT_INO), adr1]) |
∅ = abs-files((∅)[adr1, inodenode(inodekey(ROOT_INO), md, true, 0, 0, 0)], (∅)[inodekey(ROOT_INO), adr1]) ⊦ ( inodekey(ino) ∈ (∅)[inodekey(ROOT_INO), adr1] ∧ (adr1 = (∅)[inodekey(ino)] ⊃ inodenode(inodekey(ROOT_INO), md, true, 0, 0, 0);(∅)[(∅)[inodekey(ino)]]).directory → ino = ROOT_INO) ∧ (ino = ROOT_INO → ∅ = abs-children(ROOT_INO, (∅)[adr1, inodenode(inodekey(ROOT_INO), md, true, 0, 0, 0)], (∅)[inodekey(ROOT_INO), adr1]))
Used simplifier rules: at-ri: ⊦ ri[key, adr][key0] = (key = key0 ⊃ adr;ri[key0]);%mkdir-inj: ⊦ mkdir(n, md, m, n0, entries0) = mkdir(n, md, m, n0, entries1) ↔ entries0 = entries1;% ⊦ inodenode(key, md, boolvar, m, m0, m1).nsubdirs = m0; (s)% ⊦ inodenode(key, md, boolvar, m, m0, m1).nlink = m; (s)% ⊦ inodenode(key, md, boolvar, m, m0, m1).meta = md; (s)% ⊦ inodenode(key, md, boolvar, m, m0, m1).size = m1; (s)%⊦ abs-dir(ino, fs, ri) = mkdir (fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, fs[ri[inodekey(ino)]].nsubdirs, abs-children(ino, fs, ri)); (s)% ⊦ dirs[ino, ad][ino0] = (ino0 = ino ∧ ino ∈ dirs ⊃ ad;dirs[ino0]); (s)% ⊦ inodekey(m) = inodekey(m0) ↔ m = m0; (s)% ⊦ inodenode(key, md, boolvar, m, m0, m1).directory ↔ boolvar; (s)% ⊦ fs[adr0, nd][adr1] = (adr0 = adr1 ⊃ nd;fs[adr1]); (s)% ⊦ key ∈ ri[key, adr]; (s)%ino ≠ 0, ¬ ino ∈ dirs ⊦ ino0 ∈ dirs ++ ino ↔ ino0 = ino ∨ ino0 ∈ dirs; (s)% ⊦ ¬ ino ∈ ∅; (s)% ⊦ ROOT_INO ≠ 0; (s)% ⊦ ino ∈ dirs[ino0, ad] ↔ ino ∈ dirs; (s)%⊦ dirs = abs-dirs(fs, ri) ↔ (∀ ino. ( ino ∈ dirs ↔ inodekey(ino) ∈ ri ∧ fs[ri[inodekey(ino)]].directory) ∧ (ino ∈ dirs → dirs[ino] = abs-dir(ino, fs, ri))); (ss)