| n = # lpt, avol-replay-lpt-unchanged(avol0, avol1, lpt, nx) ⊦ abs-istore(avol1, replay-lpt(lpt, nx, n), remove-refsize0(istore)) ↔ abs-istore(avol0, replay-lpt(lpt, nx, n), remove-refsize0(istore)) |
# lpt = # avol1, # avol0 = # avol1, ∀ n. n < # avol1 ∧ (n ∈ nx ∨ lpt[n].ref-size ≠ 0 ∨ lpt[n].flags = LP_FREE) → avol0[n] = avol1[n] ⊦ (∀ n. (n < # avol1 ∧ replay-lpt(lpt, nx, # avol1)[n].flags = LP_INDEX_NODES ↔ n ∈ remove-refsize0(istore)) ∧ ( n ∈ remove-refsize0(istore) → abs-leb(avol1[n], remove-refsize0(istore)[n], replay-lpt(lpt, nx, # avol1)[n]) ∧ replay-lpt(lpt, nx, # avol1)[n].ref-size = remove-refsize0(istore)[n].ref-size)) ↔ (∀ n. (n < # avol1 ∧ replay-lpt(lpt, nx, # avol1)[n].flags = LP_INDEX_NODES ↔ n ∈ remove-refsize0(istore)) ∧ ( n ∈ remove-refsize0(istore) → abs-leb(avol0[n], remove-refsize0(istore)[n], replay-lpt(lpt, nx, # avol1)[n]) ∧ replay-lpt(lpt, nx, # avol1)[n].ref-size = remove-refsize0(istore)[n].ref-size))
Used simplifier rules: abs-istore-def: ⊦ abs-istore(avol, lpt, istore) ↔ (∀ n. (n < # lpt ∧ lpt[n].flags = LP_INDEX_NODES ↔ n ∈ istore) ∧ ( n ∈ istore → abs-leb(avol[n], istore[n], lpt[n]) ∧ lpt[n].ref-size = istore[n].ref-size));%replay-lpt-size: n ≤ # lpt ⊦ # replay-lpt(lpt, nx, n) = # lpt;%avol-replay-lpt-unchanged: ⊦ avol-replay-lpt-unchanged(avol0, avol1, lpt, nx) ↔ # avol0 = # avol1 ∧ # avol0 = # lpt ∧ (∀ n. n < # avol0 ∧ (n ∈ nx ∨ lpt[n].ref-size ≠ 0 ∨ lpt[n].flags = LP_FREE) → avol0[n] = avol1[n]);% ⊦ ¬ n < n; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)