| ⊦ _∃(λ x. ls(r, x) * del-list([], n - # x) ∧ ⌜r ≠ null ∧ n ≥ # x⌝ ) = _∃(λ x. ls(r, x) ∧ ⌜n = # x⌝ ), r = null |
⊦ _∃(λ x. (⌜n - # x = 0⌝ ∧ ls(r, x)) ∧ ⌜# x ≤ n⌝ ) = _∃(λ x. ls(r, x) ∧ ⌜n = # x⌝ ), r = null
Used simplifier rules: del-list-base: ⊦ del-list([], n) = (emp ∧ ⌜n = 0⌝ );% ⊦ n ≥ m ↔ m ≤ n; (s)%and-com: ⊦ (P0 ∧ P1) = (P1 ∧ P0); from specification heap-sep%and-ass: ⊦ ((P0 ∧ P1) ∧ P2) = (P0 ∧ P1 ∧ P2); from specification heap-sep%sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep%sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep% ⊦ emp * P = P; (s)% ⊦ (⌜bv⌝ ∧ P0) * P1 = (⌜bv⌝ ∧ P0 * P1); (s)