| n < # avol1, avol-replay-lpt-unchanged(avol0, avol1, lpt, nx) ⊦ avol-replay-lpt-unchanged(avol0, avol1[n, aleb], lpt, nx) ↔ ¬(aleb ≠ avol0[n] ∧ (n ∈ nx ∨ lpt[n].ref-size ≠ 0 ∨ lpt[n].flags = LP_FREE)) |
# avol0 = # avol1, # lpt = # avol1, n < # avol1, ∀ n. n < # avol1 ∧ (n ∈ nx ∨ lpt[n].ref-size ≠ 0 ∨ lpt[n].flags = LP_FREE) → avol0[n] = avol1[n] ⊦ (∀ n0. n0 < # avol1 ∧ (n0 ∈ nx ∨ lpt[n0].ref-size ≠ 0 ∨ lpt[n0].flags = LP_FREE) → avol0[n0] = avol1[n, aleb][n0]) ↔ aleb = avol0[n] ∨ ¬ n ∈ nx ∧ lpt[n].ref-size = 0 ∧ lpt[n].flags ≠ LP_FREE
Used simplifier rules: 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]);% ⊦ m < n → n ≠ 0; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ # avol[n, aleb] = # avol; (s)