| ((dls(head, prev, x, rx, next, tail) * P))(H) ⊦ # x = # rx |
[Concretesimprules((Csimpnamedseq(dls-emp,,, ⊦ dls (head, prev, [], rx, next, tail) = ( emp ∧ ⌜ head = next ∧ tail = prev ∧ rx = [] ⌝ )) Csimpgen(list freely generated by [], +;) Csimpnamedseq(list-data,,size-01, ⊦ # [] = 0) Csimpnamedseq(list-data,reflist,l, ⊦ # rx = 0 ↔ rx = []) Csimpnamedseq(heap-sep,cell-heap,false-rev, ⊦ ⌜false⌝ = false) Csimpnamedseq(heap-sep,cell-heap,false-and, ⊦ (false ∧ P) = false) Csimpnamedseq(heap-sep,cell-heap,and-ass, ⊦ ((P0 ∧ P1) ∧ P2) = (P0 ∧ P1 ∧ P2)) Csimpnamedseq(heap-sep,cell-heap,and-com, ⊦ (P0 ∧ P1) = (P1 ∧ P0)) Csimpnamedseq(heap-sep,cell-heap,false-sep, ⊦ false * P = false) Csimpnamedseq(heap-sep,cell-heap,sep-ass, ⊦ (P0 * P1) * P2 = P0 * P1 * P2) Csimpnamedseq(heap-sep,cell-heap,sep-com, ⊦ P0 * P1 = P1 * P0) Csimpnamedseq(heap-sep,cell-heap,falseH, ⊦ ¬ false(H))))]