| str ∈ sdt ⊦ abs(sdt, sdi) = (⌜str ∈ sdi⌝ ∧ abs(sdt -- str, sdi -- str) * abs(sdt[str], sdi[str])) |
⊦ str ∈ sdt ↔ (∃ tree, sdt0. sdt = sdt0[str, tree] ∧ ¬ str ∈ sdt0)
⊦ ¬ name ∈ sdt → abs(sdt[name, tree], entries) = (⌜name ∈ entries⌝ ∧ abs(tree, entries[name]) * abs(sdt, entries -- name))
Used simplifier rules: abs-rec: ⊦ ¬ name ∈ sdt → abs(sdt[name, tree], entries) = ( ⌜name ∈ entries⌝ ∧ abs(tree, entries[name]) * abs(sdt, entries -- name));% ⊦ sdt[str, tree] -- str = sdt -- str; (s)% ⊦ ¬ str ∈ sdt → sdt -- str = sdt; (s)% ⊦ sdt[str, tree][str] = tree; (s)% ⊦ (⌜bv⌝ ∧ D) = (⌜bv⌝ ∧ D0) ↔ bv → D = D0; (s)%sep-com: ⊦ D * D0 = D0 * D; from specification heap-sep[dir-heap]%and-ass: ⊦ ((D ∧ D0) ∧ D1) = (D ∧ D0 ∧ D1); from specification heap-sep[dir-heap]%and-com: ⊦ (D ∧ D0) = (D0 ∧ D); from specification heap-sep[dir-heap] Used terms: sdt, str