| ⊦ precise(ls(r, x)) |
¬ precise(ls(r, x)) ⊦
| ¬ precise(ls(r, 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. ¬(ls(r, x)(h) ∧ ls(r, x)(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0) ⊦
Used terms: ls(r, 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. ¬(ls(r, x)(h) ∧ ls(r, x)(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0) ⊦ |
h ∪ h1 = h0 ∪ h2, h ≠ h0, h ⊥ h1, h0 ⊥ h2, ls(r, x)(h), ls(r, x)(h0) ⊦
| h ∪ h1 = h0 ∪ h2, h ≠ h0, h ⊥ h1, h0 ⊥ h2, ls(r, x)(h), ls(r, x)(h0) ⊦ |
h ∪ h1 = h0 ∪ h2, h ≠ h0, h ⊥ h1, h0 ⊥ h2, ls(r, a + x0)(h0), ls(r, a + x0)(h), ∀ h, h1, h0, h2, r. ¬(h ∪ h1 = h0 ∪ h2 ∧ h ≠ h0 ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ ls(r, x0)(h) ∧ ls(r, x0)(h0)) ⊦
Used simplifier rules: ls-base: ⊦ ls(r, []) = (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, h ⊥ h1, h0 ⊥ h2, ls(r, a + x0)(h0), ls(r, a + x0)(h), ∀ h, h1, h0, h2, r. ¬(h ∪ h1 = h0 ∪ h2 ∧ h ≠ h0 ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ ls(r, x0)(h) ∧ ls(r, x0)(h0)) ⊦ |
h ∪ h1 = h0 ∪ h2, h ≠ h0, h ⊥ h1, h0 ⊥ h2, (r => a × r0 * ls(r0, x0))(h), (r => a × r1 * ls(r1, x0))(h0), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
Used simplifier rules: ls-rec: ⊦ ls(r, a ' + x) = _∃(λ r0. r => a × r0 * ls(r0, 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 => a × r0 * ls(r0, x0))(h), (r => a × r1 * ls(r1, x0))(h0), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
⊦ (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 => a × r1 * ls(r1, x0))(h0), ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ (r => a × r0)(h0) ∧ ls(r0, x0)(h1), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
Used terms: h, ls(r0, x0), r => a × r0
| ⊦ (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 => a × r1 * ls(r1, x0))(h0), ∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ (r => a × r0)(h0) ∧ ls(r0, x0)(h1), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
(h3 ∪ h4) ∪ h1 = h0 ∪ h2, h3 ∪ h4 ≠ h0, h0 ⊥ h2, h1 ⊥ h3, h1 ⊥ h4, h3 ⊥ h4, ls(r0, x0)(h4), (r => a × r0)(h3), (r => a × r1 * ls(r1, x0))(h0), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
Used simplifier rules: h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s)
| (h3 ∪ h4) ∪ h1 = h0 ∪ h2, h3 ∪ h4 ≠ h0, h0 ⊥ h2, h1 ⊥ h3, h1 ⊥ h4, h3 ⊥ h4, ls(r0, x0)(h4), (r => a × r0)(h3), (r => a × r1 * ls(r1, x0))(h0), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
(h3 ∪ h4) ∪ h1 = h0 ∪ h2, h3 ∪ h4 ≠ h0, h0 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h3 ⊥ h4, ls(r0, x0)(h4), (r => a × r0)(h3), ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ (r => a × r1)(h1) ∧ ls(r1, x0)(h2), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
Used terms: h0, ls(r1, x0), r => a × r1
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| (h3 ∪ h4) ∪ h1 = h0 ∪ h2, h3 ∪ h4 ≠ h0, h0 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h3 ⊥ h4, ls(r0, x0)(h4), (r => a × r0)(h3), ∃ h1, h2. h1 ⊥ h2 ∧ h0 = h1 ∪ h2 ∧ (r => a × r1)(h1) ∧ ls(r1, x0)(h2), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
(h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r0, x0)(h4), (r => a × r1)(h), (r => a × r0)(h3), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
Used simplifier rules: h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s)
| (h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r0, x0)(h4), (r => a × r1)(h), (r => a × r0)(h3), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
(h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 = h, r0 = r1, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
(h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ h3 = h ∧ r0 = r1
Used formulas: h3 = h ∧ r0 = r1
| (h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 = h, r0 = r1, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
(h ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h4 ≠ h5, h ⊥ h4, h ⊥ h5, h1 ⊥ h, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, ls(r1, x0)(h5), ls(r1, x0)(h4), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
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, h ⊥ h4, h ⊥ h5, h1 ⊥ h, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, ls(r1, x0)(h5), ls(r1, x0)(h4), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h
h ∪ h4 ∪ h1 = (h ∪ h5) ∪ h2, h4 ≠ h5, h ⊥ h5, h ⊥ h4, h1 ⊥ h4, h1 ⊥ h, h2 ⊥ h5, h2 ⊥ h, h4 ⊥ h1, ls(r1, x0)(h4), ls(r1, x0)(h5), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
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, h ⊥ h5, h ⊥ h4, h1 ⊥ h4, h1 ⊥ h, h2 ⊥ h5, h2 ⊥ h, h4 ⊥ h1, ls(r1, x0)(h4), ls(r1, x0)(h5), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h
h ∪ h4 ∪ h1 = h ∪ h5 ∪ h2, h4 ≠ h5, h ⊥ h4, h ⊥ h5, h1 ⊥ h, h1 ⊥ h4, h2 ⊥ h5, h2 ⊥ h, h4 ⊥ h1, h5 ⊥ h2, ls(r1, x0)(h5), ls(r1, x0)(h4), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
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, h ⊥ h4, h ⊥ h5, h1 ⊥ h, h1 ⊥ h4, h2 ⊥ h5, h2 ⊥ h, h4 ⊥ h1, h5 ⊥ h2, ls(r1, x0)(h5), ls(r1, x0)(h4), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
h4 ∪ h1 = h5 ∪ h2, h4 ≠ h5, h ⊥ h5, h ⊥ h4, h1 ⊥ h4, h1 ⊥ h, h2 ⊥ h, h2 ⊥ h5, h4 ⊥ h1, h5 ⊥ h2, ls(r1, x0)(h4), ls(r1, x0)(h5), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦
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, h ⊥ h5, h ⊥ h4, h1 ⊥ h4, h1 ⊥ h, h2 ⊥ h, h2 ⊥ h5, h4 ⊥ h1, h5 ⊥ h2, ls(r1, x0)(h4), ls(r1, x0)(h5), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ |
Used simplifier rules: ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) Used terms: h4, h1, h5, h2, r1
| (h3 ∪ h4) ∪ h1 = (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5) ⊦ h3 = h ∧ r0 = r1 |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r0, x0)(h4), (r => a × r1)(h), (r => a × r0)(h3), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r0 = r1
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, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r0, x0)(h4), (r => a × r1)(h), (r => a × r0)(h3), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r0 = r1 |
r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)), r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r0 = r1
Used terms: r
| r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)), r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r0 = r1 |
r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r0, x0)(h4), (r => a × r1)(h), (r => a × r0)(h3), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), r ∈ (h ∪ h5) ∪ h2 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r0 = r1
| r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r0, x0)(h4), (r => a × r1)(h), (r => a × r0)(h3), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), r ∈ (h ∪ h5) ∪ h2 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r0 = r1 |
r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r))
r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, h3 ∪ h4 ⊥ h1, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), r ∈ (h3 ∪ h4) ∪ h1, ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)), r ∈ (h ∪ h5) ∪ h2 → (r ∈ h3 ∪ h4 ⊃ (h3 ∪ h4)(r);h1(r)) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r0 = r1
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: r, h3 ∪ h4, h1
| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)) |
| r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2, h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, h3 ∪ h4 ⊥ h1, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), r ∈ (h3 ∪ h4) ∪ h1, ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)), r ∈ (h ∪ h5) ∪ h2 → (r ∈ h3 ∪ h4 ⊃ (h3 ∪ h4)(r);h1(r)) = ((h ∪ h5) ∪ h2)(r) ⊦ h3 = h ∧ r0 = r1 |
a × r0 = ((h ∪ h5) ∪ h2)(r), h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r0, x0)(h4), (r => a × r1)(h), (r => a × r0)(h3), r ∈ (h ∪ h5) ∪ h2, ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r0 = r1
Used simplifier rules: ⊦ (r => o0)(h) → h(r) = o0; (s) ⊦ (r => o)(h) → r ∈ h; (s) r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)); (s) ⊦ h0 ⊥ h1 → (r ∈ h0 ∪ h1 ↔ r ∈ h0 ∨ r ∈ h1); (s) h1 ⊥ h2 ⊦ h1 ∪ h2 ⊥ h0 ↔ h0 ⊥ h1 ∧ h0 ⊥ h2; (s)
| a × r0 = ((h ∪ h5) ∪ h2)(r), h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r0, x0)(h4), (r => a × r1)(h), (r => a × r0)(h3), r ∈ (h ∪ h5) ∪ h2, ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r0 = r1 |
r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r))
a × r0 = (r ∈ h ∪ h5 ⊃ (h ∪ h5)(r);h2(r)), h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h ∪ h5 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), r ∈ (h ∪ h5) ∪ h2, ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r0 = r1
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: r, h ∪ h5, h2
| r ∈ h0 ∪ h1 ⊦ h0 ⊥ h1 → (h0 ∪ h1)(r) = (r ∈ h0 ⊃ h0(r);h1(r)) |
| a × r0 = (r ∈ h ∪ h5 ⊃ (h ∪ h5)(r);h2(r)), h3 ∪ h4 ≠ h ∪ h5, h ⊥ h5, h ∪ h5 ⊥ h2, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r0, x0)(h4), ls(r1, x0)(h5), (r => a × r0)(h3), (r => a × r1)(h), r ∈ (h ∪ h5) ∪ h2, ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ h3 = h ∧ r0 = r1 |
h3 ≠ h, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r1, x0)(h4), ls(r1, x0)(h5), (r => a × r1)(h3), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦
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) ⊦ a × r = a0 × r0 ↔ a = a0 ∧ r = r0; (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, h ⊥ h5, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h2 ⊥ h, h3 ⊥ h4, ls(r1, x0)(h4), ls(r1, x0)(h5), (r => a × r1)(h3), (r => a × r1)(h), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ |
⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null
h = (∅ ++ r)(r := a × r1), h3 ≠ h, r ≠ null, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r1, x0)(h4), (r => a × r1)(h3), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦
Used terms: r, a × r1, h
| ⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null |
| h = (∅ ++ r)(r := a × r1), h3 ≠ h, r ≠ null, h ⊥ h5, h1 ⊥ h3, h1 ⊥ h4, h2 ⊥ h, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h5), ls(r1, x0)(h4), (r => a × r1)(h3), ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r. (r ∈ (h3 ∪ h4) ∪ h1 ↔ r ∈ (h ∪ h5) ∪ h2) ∧ (r ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r) = ((h ∪ h5) ∪ h2)(r)) ⊦ |
h3 ≠ (∅ ++ r)(r := a × r1), r ≠ null, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h4), ls(r1, x0)(h5), (r => a × r1)(h3), ¬ r ∈ h2, ¬ r ∈ h5, ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r0. (r0 ∈ (h3 ∪ h4) ∪ h1 ↔ r0 ∈ ((∅ ++ r)(r := a × r1) ∪ h5) ∪ h2) ∧ (r0 ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r0) = (((∅ ++ r)(r := a × r1) ∪ h5) ∪ h2)(r0)) ⊦
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 := a × r1), r ≠ null, h1 ⊥ h4, h1 ⊥ h3, h2 ⊥ h5, h3 ⊥ h4, ls(r1, x0)(h4), ls(r1, x0)(h5), (r => a × r1)(h3), ¬ r ∈ h2, ¬ r ∈ h5, ∀ h3, h4, h5, h6, r2. h3 ∪ h4 ≠ h5 ∪ h6 ∨ h3 = h5 ∨ ¬ h3 ⊥ h4 ∨ ¬ h5 ⊥ h6 ∨ ¬ ls(r2, x0)(h3) ∨ ¬ ls(r2, x0)(h5), ∀ r0. (r0 ∈ (h3 ∪ h4) ∪ h1 ↔ r0 ∈ ((∅ ++ r)(r := a × r1) ∪ h5) ∪ h2) ∧ (r0 ∈ (h3 ∪ h4) ∪ h1 → ((h3 ∪ h4) ∪ h1)(r0) = (((∅ ++ r)(r := a × r1) ∪ h5) ∪ h2)(r0)) ⊦ |
⊦ (r => o)(h) ↔ h = (∅ ++ r)(r := o) ∧ r ≠ null
Used terms: r, a × r1, 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.