| err = ESUCCESS, ri = replay-log(ax, fs, ri1), ax1 ≠ [], replay-safe(ax1, fs, replay-log(ax, fs, ri1)), replay-safe(ax + ax1, fs, ri1) ⊦ ⟪aubifs_replayone#(ax1.head, fi, ro, fo, fs, log, boolvar; err, ri); ax2 := ax1.tail⟫ ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → (∃ ax3. ax + ax1 = ax3 + ax2 ∧ replay-safe(ax2, fs, replay-log(ax3, fs, ri1)) ∧ ri = replay-log(ax3, fs, ri1))) ∧ # ax2 < # ax1) |
ax1 = adr + ax0, err = ESUCCESS, ri = replay-log(ax, fs, ri1), replay-safe(ax + ax1, fs, ri1), replay-safe(ax1, fs, replay-log(ax, fs, ri1)) ⊦ ⟪aubifs_replayone#(adr, fi, ro, fo, fs, log, boolvar; err, ri); ax2 := ax0⟫ ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → (∃ ax3. ax + ax1 = ax3 + ax2 ∧ replay-safe(ax2, fs, replay-log(ax3, fs, ri1)) ∧ ri = replay-log(ax3, fs, ri1))) ∧ # ax2 < # ax1), ax1 = []
Used simplifier rules: ax ≠ [] ⊦ adr = ax.head ∧ ax0 = ax.tail ↔ ax = adr + ax0; (elim) Used terms: ax1, adr, ax0