| precise(hP0), precise(hP1) ⊦ (hP0 * hP1 * true)(h0 ∪ h2) ∧ h0 ∪ h2 = h1 ∪ h3 ∧ h0 ⊥ h2 ∧ h1 ⊥ h3 ∧ hP0(h0) ∧ hP1(h1) → h0 ⊥ h1 |
h0 ∪ h2 = h1 ∪ h3, h0 ⊥ h2, h1 ⊥ h3, (hP0 * hP1 * true)(h0 ∪ h2), hP0(h0), hP1(h1), precise(hP1), precise(hP0), ¬ h0 ⊥ h1 ⊦
| h0 ∪ h2 = h1 ∪ h3, h0 ⊥ h2, h1 ⊥ h3, (hP0 * hP1 * true)(h0 ∪ h2), hP0(h0), hP1(h1), precise(hP1), precise(hP0), ¬ h0 ⊥ h1 ⊦ |
h0 ∪ h2 = h1 ∪ h3, h0 ⊥ h2, h1 ⊥ h3, hP0(h0), (hP0 * hP1 * true)(h1 ∪ h3), hP1(h1), precise(hP0), precise(hP1), ¬ h0 ⊥ h1 ⊦
| h0 ∪ h2 = h1 ∪ h3, h0 ⊥ h2, h1 ⊥ h3, hP0(h0), (hP0 * hP1 * true)(h1 ∪ h3), hP1(h1), precise(hP0), precise(hP1), ¬ h0 ⊥ h1 ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
h0 ∪ h2 = h1 ∪ h3, h0 ⊥ h2, h1 ⊥ h3, (hP0 * hP1 * true)(h1 ∪ h3), hP0(h0), hP1(h1), precise(hP1), precise(hP0), ¬ h0 ⊥ h1, (hP0 * hP1 * true)(h1 ∪ h3) ↔ (∃ h0, h2. h0 ⊥ h2 ∧ h1 ∪ h3 = h0 ∪ h2 ∧ hP0(h0) ∧ (hP1 * true)(h2)) ⊦
Used terms: hP0, hP1 * true, h1 ∪ h3
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| h0 ∪ h2 = h1 ∪ h3, h0 ⊥ h2, h1 ⊥ h3, (hP0 * hP1 * true)(h1 ∪ h3), hP0(h0), hP1(h1), precise(hP1), precise(hP0), ¬ h0 ⊥ h1, (hP0 * hP1 * true)(h1 ∪ h3) ↔ (∃ h0, h2. h0 ⊥ h2 ∧ h1 ∪ h3 = h0 ∪ h2 ∧ hP0(h0) ∧ (hP1 * true)(h2)) ⊦ |
h1 ∪ h3 = h ∪ h4, h ⊥ h4, h1 ⊥ h3, (hP0 * hP1 * true)(h ∪ h4), hP0(h), hP1(h1), (hP1 * true)(h4), precise(hP0), precise(hP1), ¬ h ⊥ h1 ⊦
Used simplifier rules: true-elim: ⊦ (hP0 * hP)(h) → (true * hP)(h); sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; sep-com: ⊦ hP0 * hP1 = hP1 * hP0; precise-same: precise(hP) ⊦ hP(h0) ∧ hP(h1) ∧ h0 ⊥ h ∧ h1 ⊥ h2 → (h0 ∪ h = h1 ∪ h2 ↔ h0 = h1 ∧ h = h2);
| h1 ∪ h3 = h ∪ h4, h ⊥ h4, h1 ⊥ h3, (hP0 * hP1 * true)(h ∪ h4), hP0(h), hP1(h1), (hP1 * true)(h4), precise(hP0), precise(hP1), ¬ h ⊥ h1 ⊦ |
⊦ hP0 * hP1 = hP1 * hP0
h1 ∪ h3 = h ∪ h4, h ⊥ h4, h1 ⊥ h3, hP0(h), (hP1 * true)(h4), hP1(h1), ((hP1 * true) * hP0)(h ∪ h4), precise(hP1), precise(hP0), ¬ h ⊥ h1 ⊦
Used terms: hP1 * true, hP0
| ⊦ hP0 * hP1 = hP1 * hP0 |
| h1 ∪ h3 = h ∪ h4, h ⊥ h4, h1 ⊥ h3, hP0(h), (hP1 * true)(h4), hP1(h1), ((hP1 * true) * hP0)(h ∪ h4), precise(hP1), precise(hP0), ¬ h ⊥ h1 ⊦ |
⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2
h1 ∪ h3 = h ∪ h4, h ⊥ h4, h1 ⊥ h3, hP0(h), (hP1 * true * hP0)(h ∪ h4), hP1(h1), (hP1 * true)(h4), precise(hP0), precise(hP1), ¬ h ⊥ h1 ⊦
Used terms: hP0, true, hP1
| ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2 |
| h1 ∪ h3 = h ∪ h4, h ⊥ h4, h1 ⊥ h3, hP0(h), (hP1 * true * hP0)(h ∪ h4), hP1(h1), (hP1 * true)(h4), precise(hP0), precise(hP1), ¬ h ⊥ h1 ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
h1 ∪ h3 = h ∪ h4, h ⊥ h4, h1 ⊥ h3, hP0(h), (hP1 * true)(h4), hP1(h1), precise(hP1), precise(hP0), ¬ h ⊥ h1, ∃ h0, h1. h0 ⊥ h1 ∧ h ∪ h4 = h0 ∪ h1 ∧ hP1(h0) ∧ (true * hP0)(h1) ⊦
Used terms: h ∪ h4, true * hP0, hP1
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| h1 ∪ h3 = h ∪ h4, h ⊥ h4, h1 ⊥ h3, hP0(h), (hP1 * true)(h4), hP1(h1), precise(hP1), precise(hP0), ¬ h ⊥ h1, ∃ h0, h1. h0 ⊥ h1 ∧ h ∪ h4 = h0 ∪ h1 ∧ hP1(h0) ∧ (true * hP0)(h1) ⊦ |
h ∪ h4 = h0 ∪ h2, h ⊥ h4, h0 ⊥ h2, hP0(h), hP1(h0), (hP1 * true)(h4), precise(hP0), precise(hP1), (true * hP0)(h2), ¬ h ⊥ h0 ⊦
Used simplifier rules: precise-same: precise(hP) ⊦ hP(h0) ∧ hP(h1) ∧ h0 ⊥ h ∧ h1 ⊥ h2 → (h0 ∪ h = h1 ∪ h2 ↔ h0 = h1 ∧ h = h2);
| h ∪ h4 = h0 ∪ h2, h ⊥ h4, h0 ⊥ h2, hP0(h), hP1(h0), (hP1 * true)(h4), precise(hP0), precise(hP1), (true * hP0)(h2), ¬ h ⊥ h0 ⊦ |
⊦ hP0 * hP1 = hP1 * hP0
h ∪ h4 = h0 ∪ h2, h ⊥ h4, h0 ⊥ h2, (hP0 * true)(h2), hP0(h), (hP1 * true)(h4), hP1(h0), precise(hP1), precise(hP0), ¬ h ⊥ h0 ⊦
Used terms: hP0, true
| ⊦ hP0 * hP1 = hP1 * hP0 |
| h ∪ h4 = h0 ∪ h2, h ⊥ h4, h0 ⊥ h2, (hP0 * true)(h2), hP0(h), (hP1 * true)(h4), hP1(h0), precise(hP1), precise(hP0), ¬ h ⊥ h0 ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
h ∪ h4 = h0 ∪ h2, h ⊥ h4, h0 ⊥ h2, hP0(h), hP1(h0), (hP1 * true)(h4), precise(hP0), precise(hP1), ¬ h ⊥ h0, ∃ h0, h1. h0 ⊥ h1 ∧ h2 = h0 ∪ h1 ∧ hP0(h0) ∧ true(h1) ⊦
Used terms: h2, true, hP0
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| h ∪ h4 = h0 ∪ h2, h ⊥ h4, h0 ⊥ h2, hP0(h), hP1(h0), (hP1 * true)(h4), precise(hP0), precise(hP1), ¬ h ⊥ h0, ∃ h0, h1. h0 ⊥ h1 ∧ h2 = h0 ∪ h1 ∧ hP0(h0) ∧ true(h1) ⊦ |
h ∪ h4 = h0 ∪ h1 ∪ h3, h ⊥ h4, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, hP0(h1), hP0(h), (hP1 * true)(h4), hP1(h0), precise(hP1), precise(hP0), ¬ h ⊥ h0 ⊦
Used simplifier rules: trueH: ⊦ true(h);
| h ∪ h4 = h0 ∪ h1 ∪ h3, h ⊥ h4, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, hP0(h1), hP0(h), (hP1 * true)(h4), hP1(h0), precise(hP1), precise(hP0), ¬ h ⊥ h0 ⊦ |
⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
h ∪ h4 = h0 ∪ h1 ∪ h3, h ⊥ h4, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, hP0(h), hP0(h1), hP1(h0), precise(hP0), precise(hP1), ¬ h ⊥ h0, ∃ h0, h1. h0 ⊥ h1 ∧ h4 = h0 ∪ h1 ∧ hP1(h0) ∧ true(h1) ⊦
Used terms: h4, true, hP1
| ⊦ (hP0 * hP1)(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| h ∪ h4 = h0 ∪ h1 ∪ h3, h ⊥ h4, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, hP0(h), hP0(h1), hP1(h0), precise(hP0), precise(hP1), ¬ h ⊥ h0, ∃ h0, h1. h0 ⊥ h1 ∧ h4 = h0 ∪ h1 ∧ hP1(h0) ∧ true(h1) ⊦ |
h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, h2 ⊥ h5, hP0(h1), hP0(h), hP1(h2), hP1(h0), precise(hP1), precise(hP0), ¬ h ⊥ h0 ⊦
Used simplifier rules: trueH: ⊦ true(h);
| h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, h2 ⊥ h5, hP0(h1), hP0(h), hP1(h2), hP1(h0), precise(hP1), precise(hP0), ¬ h ⊥ h0 ⊦ |
⊦ precise(hP) ↔ (∀ h, h0, h1, h2. hP(h) ∧ hP(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0)
h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, h2 ⊥ h5, hP0(h), hP0(h1), hP1(h0), hP1(h2), precise(hP1), ¬ h ⊥ h0, ∀ h, h0, h1, h2. hP0(h) ∧ hP0(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0 ⊦
Used terms: hP0
| ⊦ precise(hP) ↔ (∀ h, h0, h1, h2. hP(h) ∧ hP(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0) |
| h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, h2 ⊥ h5, hP0(h), hP0(h1), hP1(h0), hP1(h2), precise(hP1), ¬ h ⊥ h0, ∀ h, h0, h1, h2. hP0(h) ∧ hP0(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0 ⊦ |
h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, h2 ⊥ h5, hP0(h1), hP0(h), hP1(h2), hP1(h0), precise(hP1), ¬ h ⊥ h0, ∀ h, h0, h1, h2. hP0(h) ∧ hP0(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0, hP0(h) ∧ hP0(h1) ∧ h ⊥ h2 ∪ h5 ∧ h1 ⊥ h0 ∪ h3 ∧ h ∪ h2 ∪ h5 = h1 ∪ h0 ∪ h3 → h = h1 ⊦
Used terms: h, h1, h2 ∪ h5, h0 ∪ h3
| h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, h2 ⊥ h5, hP0(h1), hP0(h), hP1(h2), hP1(h0), precise(hP1), ¬ h ⊥ h0, ∀ h, h0, h1, h2. hP0(h) ∧ hP0(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0, hP0(h) ∧ hP0(h1) ∧ h ⊥ h2 ∪ h5 ∧ h1 ⊥ h0 ∪ h3 ∧ h ∪ h2 ∪ h5 = h1 ∪ h0 ∪ h3 → h = h1 ⊦ |
h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, h2 ⊥ h5, hP0(h), hP0(h1), hP1(h0), hP1(h2), precise(hP1), ¬ h ⊥ h0, ∀ h, h0, h1, h2. hP0(h) ∧ hP0(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0, h1 ⊥ h0 ∪ h3 ∧ h0 ∪ h1 ∪ h3 = h1 ∪ h0 ∪ h3 → h = h1 ⊦
| h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h1 ⊥ h3, h2 ⊥ h5, hP0(h), hP0(h1), hP1(h0), hP1(h2), precise(hP1), ¬ h ⊥ h0, ∀ h, h0, h1, h2. hP0(h) ∧ hP0(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0, h1 ⊥ h0 ∪ h3 ∧ h0 ∪ h1 ∪ h3 = h1 ∪ h0 ∪ h3 → h = h1 ⊦ |
h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h
h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h0 ⊥ h3, h1 ⊥ h3, h1 ⊥ h0, h2 ⊥ h5, h3 ⊥ h1, hP0(h1), hP0(h), hP1(h2), hP1(h0), precise(hP1), ¬ h ⊥ h0, ∀ h, h0, h1, h2. hP0(h) ∧ hP0(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0, h1 ⊥ h0 ∪ h3 ∧ h0 ∪ h1 ∪ h3 = (h1 ∪ h0) ∪ h3 → h = h1 ⊦
Used simplifier rules: h1 ⊥ h ⊦ h0 ⊥ h1 ∪ h ↔ h0 ⊥ h1 ∧ h0 ⊥ h; (ws) h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ h ∪ h0 ∪ h1 = h0 ∪ h ∪ h1 ↔ true; (ss) ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) Used terms: h1, h0, h3
| h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h |
| h ∪ h2 ∪ h5 = h0 ∪ h1 ∪ h3, h ⊥ h2 ∪ h5, h0 ⊥ h1 ∪ h3, h0 ⊥ h3, h1 ⊥ h3, h1 ⊥ h0, h2 ⊥ h5, h3 ⊥ h1, hP0(h1), hP0(h), hP1(h2), hP1(h0), precise(hP1), ¬ h ⊥ h0, ∀ h, h0, h1, h2. hP0(h) ∧ hP0(h0) ∧ h ⊥ h1 ∧ h0 ⊥ h2 ∧ h ∪ h1 = h0 ∪ h2 → h = h0, h1 ⊥ h0 ∪ h3 ∧ h0 ∪ h1 ∪ h3 = (h1 ∪ h0) ∪ h3 → h = h1 ⊦ |
⊦ h0 ⊥ h1 → h1 ∪ h0 = h0 ∪ h1
Used simplifier rules: h1 ⊥ h ⊦ h0 ⊥ h1 ∪ h ↔ h0 ⊥ h1 ∧ h0 ⊥ h; (ws) ⊦ h0 ⊥ h1 → h1 ⊥ h0; (ss) h0 ⊥ h1, h1 ⊥ h, h ⊥ h0 ⊦ (h0 ∪ h1) ∪ h = h0 ∪ h1 ∪ h ↔ true; (ss) Used terms: h1, h0
| ⊦ h0 ⊥ h1 → h1 ∪ h0 = h0 ∪ h1 |
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.