| ⊦ bv ∧ (∀ r. r ∈ rs → g(r) = a) ∧ mk(rs, f, g) = ∅ ↔ ((⌜bv⌝ ∧ emp))(mk(rs, f, g)) |
mk(rs, f, g) = ∅, r ∈ rs ⊦ # rs = 0, g(r) = a, rs = ∅
Used simplifier rules: size-zero-01: ⊦ rs ≠ ∅ → # rs ≠ 0; (forward) from specification set-basic[refset]%ne-01: ⊦ r ∈ rs → rs ≠ ∅; (forward) from specification set-basic[refset]% ⊦ ⌜bv⌝ (Ha) ↔ bv; (s)% ⊦ ((R0 ∧ R1))(Ha) ↔ R0(Ha) ∧ R1(Ha); (s)% ⊦ emp(Ha) ↔ Ha = ∅; (s)%and-com: ⊦ (R0 ∧ R1) = (R1 ∧ R0); from specification heap-sep[heap-aux]%and-ass: ⊦ ((R0 ∧ R1) ∧ R2) = (R0 ∧ R1 ∧ R2); from specification heap-sep[heap-aux]% ⊦ (true ∧ R) = R; (s)% ⊦ ⌜true⌝ = true; (s)