| ⊦ precise(dll(r, r0, x)) |
¬ precise(dll(r, r0, x)) ⊦
| ¬ precise(dll(r, r0, x)) ⊦ |
⊦ precise(hP) ↔ (∀ h, h0, h1, h2. hP(h) ∧ hP(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0)
∃ h, h0, h1, h2. ¬(dll(r, r0, x)(h) ∧ dll(r, r0, x)(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0) ⊦
Used terms: dll(r, r0, x)
| ⊦ precise(hP) ↔ (∀ h, h0, h1, h2. hP(h) ∧ hP(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0) |
| ∃ h, h0, h1, h2. ¬(dll(r, r0, x)(h) ∧ dll(r, r0, x)(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0) ⊦ |
h ∪ h1 = h0 ∪ h2, h ≠ h0, dll(r, r0, x)(h), dll(r, r0, x)(h0), h ⊥ h1, h0 ⊥ h2 ⊦
| h ∪ h1 = h0 ∪ h2, h ≠ h0, dll(r, r0, x)(h), dll(r, r0, x)(h0), h ⊥ h1, h0 ⊥ h2 ⊦ |
h ∪ h1 = h0 ∪ h2, h ≠ h0, dll(r, r0, a + x0)(h0), dll(r, r0, a + x0)(h), h ⊥ h1, h0 ⊥ h2, ∀ h, h1, h0, h2, r, r0. ¬(h ∪ h1 = h0 ∪ h2 ∧ h ≠ h0 ∧ dll(r, r0, x0)(h) ∧ dll(r, r0, x0)(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2) ⊦
Used simplifier rules: dll-base: ⊦ dll(r, r0, []) = (emp ∧ ⌜r = null⌝ ); List[A] freely generated by [], +; ⊦ (hP0 ∧ hP1)(h) ↔ hP0(h) ∧ hP1(h); (s) ⊦ ⌜bv⌝ (h) ↔ bv; (s) ⊦ emp(h) ↔ h = ∅; (s) ⊦ ⌜true⌝ = true; (s) ⊦ (true ∧ hP) = hP; (s) and-ass: ⊦ ((hP0 ∧ hP1) ∧ hP2) = (hP0 ∧ hP1 ∧ hP2); from specification heap-sep and-com: ⊦ (hP0 ∧ hP1) = (hP1 ∧ hP0); from specification heap-sep ⊦ precise(emp); (s) precise(hP) ⊦ hP(h0) ∧ hP(h1) ∧ h0 ⊥ h ∧ h1 ⊥ h2 → (h0 ∪ h = h1 ∪ h2 ↔ h0 = h1 ∧ h = h2); (s)
| h ∪ h1 = h0 ∪ h2, h ≠ h0, dll(r, r0, a + x0)(h0), dll(r, r0, a + x0)(h), h ⊥ h1, h0 ⊥ h2, ∀ h, h1, h0, h2, r, r0. ¬(h ∪ h1 = h0 ∪ h2 ∧ h ≠ h0 ∧ dll(r, r0, x0)(h) ∧ dll(r, r0, x0)(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2) ⊦ |
h ∪ h1 = h0 ∪ h2, h ≠ h0, h ⊥ h1, h0 ⊥ h2, (r => mknode(r0, a, r1) * dll(r1, r, x0))(h), (r => mknode(r0, a, r2) * dll(r2, r, x0))(h0), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: dll-rec: ⊦ dll(r, r0, a ' + x) = _∃(λ r1. r => mknode(r0, a, r1) * dll(r1, r, x)); ⊦ (_∃ bP)(h) ↔ (∃ b. bP(b)(h)); (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s)
| h ∪ h1 = h0 ∪ h2, h ≠ h0, h ⊥ h1, h0 ⊥ h2, (r => mknode(r0, a, r1) * dll(r1, r, x0))(h), (r => mknode(r0, a, r2) * dll(r2, r, x0))(h0), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
h ∪ h1 = h0 ∪ h2, h ≠ h0, h ⊥ h1, h0 ⊥ h2, (r => mknode(r0, a, r2) * dll(r2, r, x0))(h0), ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ (r => mknode(r0, a, r1))(h0) ∧ dll(r1, r, x0)(h1), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used terms: r => mknode(r0, a, r1), dll(r1, r, x0), h
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| h ∪ h1 = h0 ∪ h2, h ≠ h0, h ⊥ h1, h0 ⊥ h2, (r => mknode(r0, a, r2) * dll(r2, r, x0))(h0), ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ (r => mknode(r0, a, r1))(h0) ∧ dll(r1, r, x0)(h1), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
(h3 ∪ h4) ∪ h1 = h0 ∪ h2, h3 ∪ h4 ≠ h0, dll(r1, r, x0)(h4), h0 ⊥ h2, h1 ⊥ h3, h1 ⊥ h4, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2) * dll(r2, r, x0))(h0), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s)
| (h3 ∪ h4) ∪ h1 = h0 ∪ h2, h3 ∪ h4 ≠ h0, dll(r1, r, x0)(h4), h0 ⊥ h2, h1 ⊥ h3, h1 ⊥ h4, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2) * dll(r2, r, x0))(h0), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
(h3 ∪ h4) ∪ h1 = h0 ∪ h2, h3 ∪ h4 ≠ h0, dll(r1, r, x0)(h4), h0 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ (r => mknode(r0, a, r2))(h1) ∧ dll(r2, r, x0)(h2), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used terms: r => mknode(r0, a, r2), dll(r2, r, x0), h0
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| (h3 ∪ h4) ∪ h1 = h0 ∪ h2, h3 ∪ h4 ≠ h0, dll(r1, r, x0)(h4), h0 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ (r => mknode(r0, a, r2))(h1) ∧ dll(r2, r, x0)(h2), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
(h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s)
| (h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
(h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 = h, r1 = r2, h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
(h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2
Used formulas: h3 = h ∧ r1 = r2
| (h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 = h, r1 = r2, h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
(h ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h4 ≠ h5, dll(r2, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h4, h ⊥ h5, h1 ⊥ h, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: precise(hP) ⊦ hP(h0) ∧ hP(h1) ∧ h0 ⊥ h ∧ h1 ⊥ h2 → (h0 ∪ h = h1 ∪ h2 ↔ h0 = h1 ∧ h = h2); (s) ⊦ precise(r => o); (s)
| (h ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h4 ≠ h5, dll(r2, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h4, h ⊥ h5, h1 ⊥ h, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h
h ∪ h4 ∪ h1 = (h ∪ h5) ∪ h2, h4 ≠ h5, dll(r2, r, x0)(h5), dll(r2, r, x0)(h4), h ⊥ h5, h ⊥ h4, h1 ⊥ h4, h1 ⊥ h, h2 ⊥ h5, h2 ⊥ h, h4 ⊥ h1, (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) Used terms: h, h4, h1
| h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h |
| h ∪ h4 ∪ h1 = (h ∪ h5) ∪ h2, h4 ≠ h5, dll(r2, r, x0)(h5), dll(r2, r, x0)(h4), h ⊥ h5, h ⊥ h4, h1 ⊥ h4, h1 ⊥ h, h2 ⊥ h5, h2 ⊥ h, h4 ⊥ h1, (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h
h ∪ h4 ∪ h1 = h ∪ h5 ∪ h2, h4 ≠ h5, dll(r2, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h4, h ⊥ h5, h1 ⊥ h, h1 ⊥ h4, h2 ⊥ h5, h2 ⊥ h, h4 ⊥ h1, h5 ⊥ h2, (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) Used terms: h, h5, h2
| h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h |
| h ∪ h4 ∪ h1 = h ∪ h5 ∪ h2, h4 ≠ h5, dll(r2, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h4, h ⊥ h5, h1 ⊥ h, h1 ⊥ h4, h2 ⊥ h5, h2 ⊥ h, h4 ⊥ h1, h5 ⊥ h2, (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
h4 ∪ h1 = h5 ∪ h2, h4 ≠ h5, dll(r2, r, x0)(h5), dll(r2, r, x0)(h4), h ⊥ h5, h ⊥ h4, h1 ⊥ h4, h1 ⊥ h, h2 ⊥ h, h2 ⊥ h5, h4 ⊥ h1, h5 ⊥ h2, (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: h ⊥ h0, h ⊥ h1 ⊦ h ∪ h0 = h ∪ h1 ↔ h0 = h1; (s) ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) h1 ⊥ h ⊦ h0 ⊥ h1 ∪ h ↔ h0 ⊥ h1 ∧ h0 ⊥ h; (ws)
| h4 ∪ h1 = h5 ∪ h2, h4 ≠ h5, dll(r2, r, x0)(h5), dll(r2, r, x0)(h4), h ⊥ h5, h ⊥ h4, h1 ⊥ h4, h1 ⊥ h, h2 ⊥ h, h2 ⊥ h5, h4 ⊥ h1, h5 ⊥ h2, (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
Used simplifier rules: ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) Used terms: h4, h1, h5, h2, r2, r
| (h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2 |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6, ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r1 = r2
Used terms: (h3 ∪ h4) ∪ h1, (h ∪ h5) ∪ h2
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r))) |
| h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6, ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r1 = r2 |
r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6, r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r1 = r2
Used terms: r
| r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6, r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r1 = r2 |
r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6, r ∈ (h ∪ h5) ∪ h2 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r1 = r2
| r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6, r ∈ (h ∪ h5) ∪ h2 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r1 = r2 |
⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1)
r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ h ∪ h5 ∨ r ∈ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h ∪ h5 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6, r ∈ h ∪ h5 ∨ r ∈ h2 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r1 = r2
Used simplifier rules: h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s) Used terms: r, h ∪ h5, h2
| ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1) |
| r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ h ∪ h5 ∨ r ∈ h2, h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h ∪ h5 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6, r ∈ h ∪ h5 ∨ r ∈ h2 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r1 = r2 |
((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r), h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), r ∈ (h3 ∪ h4) ∪ h1, ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2
Used simplifier rules: ⊦ (r => o)(h) → r ∈ h; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s)
| ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r), h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), r ∈ (h3 ∪ h4) ∪ h1, ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2 |
r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r))
(r ∈ h3 ∪ h4 ⊃ (h3 ∪ h4)(r);h1(r)) = ((h ∪ h5) ∪ h2)(r), h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, h3 ∪ h4 ⊥ h1, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), r ∈ (h3 ∪ h4) ∪ h1, ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) ⊦ (r => o)(h) → r ∈ h; (s) h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s) Used terms: h3 ∪ h4, h1, r
| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)) |
| (r ∈ h3 ∪ h4 ⊃ (h3 ∪ h4)(r);h1(r)) = ((h ∪ h5) ∪ h2)(r), h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, h3 ∪ h4 ⊥ h1, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), r ∈ (h3 ∪ h4) ∪ h1, ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2 |
mknode(r0, a, r1) = ((h ∪ h5) ∪ h2)(r), h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2
Used simplifier rules: h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s) ⊦ (r => o)(h) → r ∈ h; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) ⊦ (r => o0)(h) → h(r) = o0; (s) r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)); (s)
| mknode(r0, a, r1) = ((h ∪ h5) ∪ h2)(r), h3 ∪ h4 ≠ h ∪ h5, dll(r1, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h), (r => mknode(r0, a, r1))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2 |
r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r))
mknode(r0, a, r1) = (r ∈ h ∪ h5 ⊃ (h ∪ h5)(r);h2(r)), h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h ∪ h5 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), r ∈ (h ∪ h5) ∪ h2, ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2
Used simplifier rules: ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) ⊦ (r => o)(h) → r ∈ h; (s) h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s) Used terms: h ∪ h5, h2, r
| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)) |
| mknode(r0, a, r1) = (r ∈ h ∪ h5 ⊃ (h ∪ h5)(r);h2(r)), h3 ∪ h4 ≠ h ∪ h5, dll(r2, r, x0)(h5), dll(r1, r, x0)(h4), h ⊥ h5, h ∪ h5 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r1))(h3), (r => mknode(r0, a, r2))(h), r ∈ (h ∪ h5) ∪ h2, ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ h3 = h ∧ r1 = r2 |
h3 ≠ h, dll(r2, r, x0)(h5), dll(r2, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r2))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: precise(hP) ⊦ hP(h0) ∧ hP(h1) ∧ h0 ⊥ h ∧ h1 ⊥ h2 → (h0 ∪ h = h1 ∪ h2 ↔ h0 = h1 ∧ h = h2); (s) ⊦ precise(r => o); (s) h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s) ⊦ (r => o)(h) → r ∈ h; (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) ⊦ mknode(left, val, left0) = mknode(left1, val0, left2) ↔ left = left1 ∧ val = val0 ∧ left0 = left2; (ws) ⊦ (r => o0)(h) → h(r) = o0; (s) r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)); (s)
| h3 ≠ h, dll(r2, r, x0)(h5), dll(r2, r, x0)(h4), h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, (r => mknode(r0, a, r2))(h3), (r => mknode(r0, a, r2))(h), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null
h = (∅ ++ r)(r := mknode(r0, a, r2)), h3 ≠ h, r ≠ null, dll(r2, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used terms: r, mknode(r0, a, r2), h
| ⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null |
| h = (∅ ++ r)(r := mknode(r0, a, r2)), h3 ≠ h, r ≠ null, dll(r2, r, x0)(h4), dll(r2, r, x0)(h5), h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h3), ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
h3 ≠ (∅ ++ r)(r := mknode(r0, a, r2)), r ≠ null, dll(r2, r, x0)(h5), dll(r2, r, x0)(h4), h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h3), ¬ r ∈ h2, ¬ r ∈ h5, ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦
Used simplifier rules: r ≠ null ⊦ (∅ ++ r)(r := o) ⊥ h ↔ ¬ r ∈ h; (s) ⊦ h ⊥ ∅; (s) r ≠ null, ¬ r ∈ h1 ⊦ h0 ⊥ (h1 ++ r)(r := o) ↔ h0 ⊥ h1 ∧ ¬ r ∈ h0; (s) ⊦ ¬ r ∈ ∅; (s)
| h3 ≠ (∅ ++ r)(r := mknode(r0, a, r2)), r ≠ null, dll(r2, r, x0)(h5), dll(r2, r, x0)(h4), h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h3 ⊥ h4, (r => mknode(r0, a, r2))(h3), ¬ r ∈ h2, ¬ r ∈ h5, ∀ h3, h4, h5, h6, r3, r4. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ dll(r3, r4, x0)(h3) ∨ ¬ dll(r3, r4, x0)(h5) ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ⊦ |
⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null
Used terms: r, mknode(r0, a, r2), h3
| ⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null |
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.