| ⊦ (r => mknode(null, a, null))(H) ↔ tr(r, branch(leaf, a, leaf))(H) |
⊦ tr(r, branch(t0, a, t1)) = _∃ λ r0, r1. r => mknode(r0, a, r1) * tr(r0, t0) * tr(r1, t1)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : tr-base, , , ⊦ tr(r, leaf) = (emp ∧ ⌜r = null⌝ )], [CSIMPNAMEDSEQ : heap-sep, node-heap, prop-shift, ⊦ (⌜bv⌝ ∧ P0) * P1 = (⌜bv⌝ ∧ P0 * P1)], [CSIMPNAMEDSEQ : heap-sep, node-heap, emp-sep, ⊦ emp * P = P], [CSIMPNAMEDSEQ : heap-sep, node-heap, sep-ass, ⊦ (P0 * P1) * P2 = P0 * P1 * P2], [CSIMPNAMEDSEQ : heap-sep, node-heap, sep-com, ⊦ P0 * P1 = P1 * P0], [CSIMPNAMEDSEQ : heap-sep, node-heap, and-ass, ⊦ ((P0 ∧ P1) ∧ P2) = (P0 ∧ P1 ∧ P2)], [CSIMPNAMEDSEQ : heap-sep, node-heap, and-com, ⊦ (P0 ∧ P1) = (P1 ∧ P0)], [CSIMPNAMEDSEQ : maplet, node-heap, ex2, ⊦ (_∃ rrP)(H) ↔ (∃ r0, r1. rrP(r0, r1)(H))], [CSIMPNAMEDSEQ : heap-sep, node-heap, and, ⊦ (P0 ∧ P1)(H) ↔ ¬ ¬ (P0(H) ∧ P1(H))], [CSIMPNAMEDSEQ : heap-sep, node-heap, prop, ⊦ ⌜bv⌝ (H) ↔ bv], [CSIMPNAMEDSEQ : heap-sep, node-heap, false-rev, ⊦ ⌜false⌝ = false], [CSIMPNAMEDSEQ : heap-sep, node-heap, falseH, ⊦ ¬ false(H)])], [EXTRATERMS : (leaf, a, leaf, r)]]