| r ∈ rx, r ≠ head, r ≠ tail, ((dls(head, prev, x, rx, next, tail) * P))(H) ⊦ ⟪remove(r; H)⟫ ⟪insert(r; H)⟫ ((dls(head, prev, x, rx, next, tail) * P))(H) |
# x = # rx, r ≠ head, r ≠ tail, r ∈ rx, ((dls(head, prev, x, rx, next, tail) * P))(H) ⊦ ⟪remove(r; H)⟫ ⟪insert(r; H)⟫ ((dls(head, prev, x, rx, next, tail) * P))(H)
[Concretesimprules((Csimpnamedseq(heap-sep,cell-heap,sep-com, ⊦ P0 * P1 = P1 * P0) Csimpnamedseq(heap-sep,cell-heap,sep-ass, ⊦ (P0 * P1) * P2 = P0 * P1 * P2) Csimpnamedforward(dllist,,dls-length, ⊦ (( dls (head, prev, x, rx, next, tail) * P) )(H) → # x = # rx)))]