| boolvar ↔ boolvar0, fs[adr] = datanode(datakey(ino, n), buf), key = fs[adr].key, ri0 = ri, inodekey(ino) ∈ ri, adr ∈ fs ⊦ ⟪if ¬ adr ∈ ri ∧ adr ∈ fs ∧ key-cons(key, fs[adr]) then ri[key] := adr else abort; if fs[adr].trunc? then aubifs_core_index_truncate#(fs[adr].key, fs[adr].size, fi, ro, fo, fs, log, boolvar0; ri)⟫ (ri = replay-one(adr, fs[adr], ri0)), adr ∈ ri |
boolvar ↔ boolvar0, fs[adr] = datanode(datakey(ino, n), buf), key = fs[adr].key, ri0 = ri, adr ∈ fs, inodekey(ino) ∈ ri ⊦ ⟪ri[key] := adr; if fs[adr].trunc? then aubifs_core_index_truncate#(fs[adr].key, fs[adr].size, fi, ro, fo, fs, log, boolvar0; ri)⟫ (ri = replay-one(adr, fs[adr], ri0)), adr ∈ ri
Used simplifier rules: ⊦ datanode(key, buf).key = key; (s)% ⊦ key-cons(datakey(ino, n), nd) ↔ nd.data? ∧ nd.key = datakey(ino, n); (s)% ⊦ datanode(key, buf).data?; (s)