| fs[adr] = datanode(datakey(ino, n), buf), ri0 = ri, adr ∈ fs, inodekey(ino) ∈ ri, ¬ adr ∈ ri ⊦ ⟪aubifs_core_index_store#(fs[adr].key, adr, fi, ro, fo, fs, log, boolvar0; ri); 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)) |
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
Used simplifier rules: aubifs_core_index_store#(KEY, ADR, FI, RO, FO, FS, LOG, CSYNCED; RI) {if ¬ ADR ∈ RI ∧ ADR ∈ FS ∧ key-cons(KEY, FS[ADR]) then RI[KEY] := ADR else abort };