| ⊦ dls(head, prev, a ', r ', next, tail) = (⌜head = r ∧ tail = r⌝ ∧ head => mkcell(prev, next, a)) |
⊦ dls(head, prev, a ' + x, rx, next, tail) = _∃(λ r. ⌜rx ≠ [] ∧ head = rx.first⌝ ∧ head => mkcell(prev, r, a) * dls(r, head, x, rx.rest, next, tail))
[Concretesimprules(()), Extraterms((headpreva[]r 'nexttail))]