| ro.inodes?, fo.inodes?, log-cons(log, fs), ri-inj(ri), ri-inj(fi), ∃ ino. ¬ inodekey(ino) ∈ fo ∪ dom ri ∪ {inodekey(0)} ⊦ ∃ n. ¬ inodekey(n) ∈ ri ∧ ¬ inodekey(n) ∈ fo ∧ n ≠ 0 ∧ ⟨key := inodekey(n)⟩ true |
ino ≠ 0, fo.inodes?, ro.inodes?, log-cons(log, fs), ri-inj(fi), ri-inj(ri), ¬ inodekey(ino) ∈ fo, ¬ inodekey(ino) ∈ ri ⊦ ∃ n. ¬ inodekey(n) ∈ ri ∧ ¬ inodekey(n) ∈ fo ∧ n ≠ 0 ∧ ⟨key := inodekey(n)⟩ true
Used simplifier rules: ⊦ key ∈ dom ri ↔ key ∈ ri; (s)% ⊦ key ∈ ks ∪ ks0 ↔ ¬(¬ key ∈ ks ∧ ¬ key ∈ ks0); (ss)% ⊦ inodekey(m) = inodekey(m0) ↔ m = m0; (s)% ⊦ key ∈ ks ++ key0 ↔ ¬(key ≠ key0 ∧ ¬ key ∈ ks); (ss)%unc: ⊦ ks ∪ ks0 = ks0 ∪ ks; from specification set-union[node-index]%una: ⊦ (ks ∪ ks0) ∪ ks1 = ks ∪ ks0 ∪ ks1; from specification set-union[node-index]% ⊦ ks ∪ ∅ = ks; (s)% ⊦ (ks ++ key) ∪ ks0 = (ks ∪ ks0) ++ key; (s)% ⊦ {key} = ∅ ++ key; (s)