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