| # x0 = # rx0, # x1 = # rx1, x0 ≠ [], x1 ≠ [], ((r => mkcell(rx0.last, r0, a) * dls(head, prev, x0 + x1, rx0 + rx1, next, tail) * P))(H), rx1 = r0 + rx2, rx1 ≠ [] ⊦ ⟪insert(r; H)⟫ ((dls(head, prev, x0 + a ' + x1, rx0 + r ' + rx1, next, tail) * P))(H) |
# x0 = # rx0, # x1 = 1 + # rx2, x0 ≠ [], x1 ≠ [], ((r => mkcell(rx0.last, r0, a) * dls(head, prev, x0 + x1, rx0 + r0 ' + rx2, next, tail) * P))(H) ⊦ ⟪insert(r; H)⟫ ((dls(head, prev, x0 + a ' + x1, rx0 + r ' + r0 ' + rx2, next, tail) * P))(H)
[Concretesimprules((Csimpnamedseq(list,,a, ⊦ (x + y) + z = x + y + z) 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) Csimpnamedseq(list,reflist,e-01, ⊦ r ' + rx ≠ []) 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,reflist,c, ⊦ r + rx = r ' + rx)))]