| x0 = [], abs-nodes(buf0, m, x0, lax0, false), ∀ buf, m, x0, lax0, buf1, x1, lax1, weak. # buf < # buf0 → abs-nodes(buf, m, x0, lax0, false) → (abs-nodes(buf + buf1, m, x0 + x1, lax0 + lax1, weak) ↔ abs-nodes(buf1, m + # buf, x1, lax1, weak)) ⊦ abs-nodes(buf0 + buf1, m, x0 + x1, lax0 + lax1, weak) ↔ abs-nodes(buf1, m + # buf0, x1, lax1, weak) |
abs-nodes(buf0, m, [], [], false), ∀ buf, m, x0, lax0, buf1, x1, lax1, weak. # buf < # buf0 → abs-nodes(buf, m, x0, lax0, false) → (abs-nodes(buf + buf1, m, x0 + x1, lax0 + lax1, weak) ↔ abs-nodes(buf1, m + # buf, x1, lax1, weak)) ⊦ abs-nodes(buf0 + buf1, m, x1, lax1, weak) ↔ abs-nodes(buf1, m + # buf0, x1, lax1, weak)
Used simplifier rules: abs-nodes-elems-empty-adr-empty-h: ⊦ abs-nodes(buf, m, [], lax, weak) → lax = [];%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ [] + lax = lax; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ [] + x = x; (s)