| err = ESUCCESS, ri = replay-log(ax, fs, ri1), node-cons(fs[adr].key, fs[adr]), replay-safe(ax0, fs, replay-one(adr, fs[adr], replay-log(ax, fs, ri1))), replay-safe(ax + adr ' + ax0, fs, ri1), adr ∈ fs, ¬ adr ∈ replay-log(ax, fs, ri1) ⊦ ⟪aubifs_replayone#(adr, fi, ro, fo, fs, log, boolvar; err, ri); ax2 := ax0⟫ ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → (∃ ax1. ax + adr ' + ax0 = ax1 + ax2 ∧ replay-safe(ax2, fs, replay-log(ax1, fs, ri1)) ∧ ri = replay-log(ax1, fs, ri1))) ∧ ¬ # ax0 < # ax2) |
ri0 = ri, replay-safe(adr ', fs, ri) ⊦ ⟪aubifs_replayone#(adr, fi, ro, fo, fs, log, boolvar; err, ri)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → ri = replay-one(adr, fs[adr], ri0)))
⟪aubifs_replayone#(adr, fi, ro, fo, fs, log, boolvar; err, ri)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → ri = replay-one(adr, fs[adr], replay-log(ax, fs, ri1)))), err = ESUCCESS, ri = replay-log(ax, fs, ri1), node-cons(fs[adr].key, fs[adr]), replay-safe(ax + adr ' + ax0, fs, ri1), replay-safe(ax0, fs, replay-one(adr, fs[adr], replay-log(ax, fs, ri1))), adr ∈ fs ⊦ ⟪aubifs_replayone#(adr, fi, ro, fo, fs, log, boolvar; err, ri); ax2 := ax0⟫ ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → (∃ ax1. ax + adr ' + ax0 = ax1 + ax2 ∧ replay-safe(ax2, fs, replay-log(ax1, fs, ri1)) ∧ ri = replay-log(ax1, fs, ri1))) ∧ ¬ # ax0 < # ax2), adr ∈ replay-log(ax, fs, ri1)
Used simplifier rules: ⊦ replay-safe(adr ', fs, ri) ↔ adr ∈ fs ∧ ¬ adr ∈ ri ∧ node-cons(fs[adr].key, fs[adr]); (s) Used terms: replay-log(ax, fs, ri1), ri, adr, fs, fi, ro, fo, log, boolvar, err