| (a[P] * true)[rs, f, g] ⊦ (a0[P0] * true)[rs, f, g] ↔ (a[P] * a0[P0] * true)[rs, f, g], a0 = a |
Used simplifier rules: merge-owned: ⊦ (a[P] * R)[rs, f, g] ∧ (a0[P0] * R0)[rs, f, g] ∧ a0 ≠ a → (a[P] * a0[P0] * true)[rs, f, g];% ⊦ (R0 * R)[rs, f, g] → (true * R)[rs, f, g]; (s)%sep-com: ⊦ R0 * R1 = R1 * R0; from specification heap-sep[heap-aux]%sep-ass: ⊦ (R0 * R1) * R2 = R0 * R1 * R2; from specification heap-sep[heap-aux]