| n ≤ # lax0, ∀ n, m, m0, m1, m2. n < # lax0 → (lax0.to-adr(m)[n] = @(m0, m1, m2) ↔ (∃ lax2, lax1. lax0 = lax2 + @(m1, m2) ' + lax1 ∧ m0 = m ∧ # lax2 = n)) ∨ lax0 = [] ⊦ (@(m, ladr.off, ladr.size) ' + lax0.to-adr(m))[n] = @(m0, m1, m2) ↔ (∃ lax, lax1. ladr ' + lax0 = lax + @(m1, m2) ' + lax1 ∧ m0 = m ∧ # lax = n) |
ladr = @(m3, m4), n ≤ # lax0, ∀ n, m, m0, m1, m2. n < # lax0 → (lax0.to-adr(m)[n] = @(m0, m1, m2) ↔ (∃ lax2, lax1. lax0 = lax2 + @(m1, m2) ' + lax1 ∧ m0 = m ∧ # lax2 = n)) ∨ lax0 = [] ⊦ (@(m, m3, m4) ' + lax0.to-adr(m))[n] = @(m0, m1, m2) ↔ (∃ lax, lax1. ladr ' + lax0 = lax + @(m1, m2) ' + lax1 ∧ m0 = m ∧ # lax = n)
Used simplifier rules: ⊦ m = ladr.off ∧ m0 = ladr.size ↔ ladr = @(m, m0); (elim) Used terms: ladr, m3, m4