| # x0 = # rx0, x0 ≠ [], x1 ≠ [], ((dls(head, prev, x0 + a ' + x1, rx0 + r ' + rx1, next, tail) * P))(H) ⊦ ⟪remove(r; H)⟫ ((r => mkcell(rx0.last, rx1.first, a) * dls(head, prev, x0 + x1, rx0 + rx1, next, tail) * P))(H) |
# x0 = # rx0, # x1 = # rx1, x0 ≠ [], x1 ≠ [], ((dls(head, prev, x0 + a ' + x1, rx0 + r ' + rx1, next, tail) * P))(H) ⊦ ⟪remove(r; H)⟫ ((r => mkcell(rx0.last, rx1.first, a) * dls(head, prev, x0 + x1, rx0 + rx1, next, tail) * P))(H)
[Concretesimprules((Csimpnamedseq(nat-basic2,,c, ⊦ m + n = n + m) Csimpnamedseq(nat-basic2,,a, ⊦ (m + n0) + n1 = m + n0 + n1) Csimpnamedseq(nat-basic2,,eq-01, ⊦ m + n = m + n0 ↔ n = n0) Csimpnamedseq(list,reflist,a, ⊦ (rx + rx0) + rx1 = rx + rx0 + rx1) Csimpnamedseq(list,reflist,len-02, ⊦ # r ' = 0 +1) Csimpnamedseq(list,reflist,len, ⊦ #(rx + rx0) = # rx + # rx0) Csimpnamedseq(list,,a, ⊦ (x + y) + z = x + y + z) Csimpnamedseq(list,,len-02, ⊦ # a ' = 0 +1) Csimpnamedseq(list,,len, ⊦ #(x + y) = # x + # y) 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)))]