| ⊦ f(r) = o ∧ (a[r => o0] * hR)[rs, f, g] → o = o0 |
f(r) = o, o ≠ o0, (a[r => o0] * hR)[rs, f, g] ⊦
| f(r) = o, o ≠ o0, (a[r => o0] * hR)[rs, f, g] ⊦ |
f(r) ≠ o0, (a[r => o0] * hR)[rs, f, g] ⊦
| f(r) ≠ o0, (a[r => o0] * hR)[rs, f, g] ⊦ |
⊦ (hR0 * hR1)[rs, f, g] ↔ (∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hR0[rs0, f, g] ∧ hR1[rs1, f, g])
f(r) ≠ o0, ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ a[r => o0][rs0, f, g] ∧ hR[rs1, f, g] ⊦
Used terms: rs, hR, g, a[r => o0], f
| ⊦ (hR0 * hR1)[rs, f, g] ↔ (∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hR0[rs0, f, g] ∧ hR1[rs1, f, g]) |
| f(r) ≠ o0, ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ a[r => o0][rs0, f, g] ∧ hR[rs1, f, g] ⊦ |
rs0 ∩ rs1 = ∅, f(r) ≠ o0, a[r => o0][rs0, f, g], hR[rs1, f, g] ⊦
| rs0 ∩ rs1 = ∅, f(r) ≠ o0, a[r => o0][rs0, f, g], hR[rs1, f, g] ⊦ |
⊦ hR[rs, f, g] ↔ hR(mk(rs, f, g))
rs0 ∩ rs1 = ∅, f(r) ≠ o0, hR[rs1, f, g], a[r => o0](mk(rs0, f, g)) ⊦
Used terms: g, f, rs0, a[r => o0]
| ⊦ hR[rs, f, g] ↔ hR(mk(rs, f, g)) |
| rs0 ∩ rs1 = ∅, f(r) ≠ o0, hR[rs1, f, g], a[r => o0](mk(rs0, f, g)) ⊦ |
⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a)
rs0 ∩ rs1 = ∅, f(r) ≠ o0, ((r => o0))(mk(rs0, f)), hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a ⊦
Used terms: a, r => o0, rs0, g, f
| ⊦ a[hP](mk(rs, f, g)) ↔ hP(mk(rs, f)) ∧ (∀ r. r ∈ rs → g(r) = a) |
| rs0 ∩ rs1 = ∅, f(r) ≠ o0, ((r => o0))(mk(rs0, f)), hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a ⊦ |
rs0 ∩ rs1 = ∅, f(r) ≠ o0, ((r => o0))(mk(rs0, f)), hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a ⊦
| rs0 ∩ rs1 = ∅, f(r) ≠ o0, ((r => o0))(mk(rs0, f)), hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a ⊦ |
⊦ ((r => o))(h) ↔ h = (∅ ++ r)[r, o] ∧ r ≠ null
mk(rs0, f) = (∅ ++ r)[r, o0], rs0 ∩ rs1 = ∅, f(r) ≠ o0, r ≠ null, hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a ⊦
Used terms: mk(rs0, f), o0, r
| ⊦ ((r => o))(h) ↔ h = (∅ ++ r)[r, o] ∧ r ≠ null |
| mk(rs0, f) = (∅ ++ r)[r, o0], rs0 ∩ rs1 = ∅, f(r) ≠ o0, r ≠ null, hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a ⊦ |
mk(rs0, f) = (∅ ++ r)[r, o0], rs0 ∩ rs1 = ∅, f(r) ≠ o0, r ≠ null, hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a ⊦
| mk(rs0, f) = (∅ ++ r)[r, o0], rs0 ∩ rs1 = ∅, f(r) ≠ o0, r ≠ null, hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
rs0 ∩ rs1 = ∅, f(r) ≠ o0, r ≠ null, hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a, ∀ r0. (r0 ∈ mk(rs0, f) ↔ r0 ∈ (∅ ++ r)[r, o0]) ∧ (r0 ∈ mk(rs0, f) → mk(rs0, f)[r0] = (∅ ++ r)[r, o0][r0]) ⊦
Used terms: (∅ ++ r)[r, o0], mk(rs0, f)
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| rs0 ∩ rs1 = ∅, f(r) ≠ o0, r ≠ null, hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a, ∀ r0. (r0 ∈ mk(rs0, f) ↔ r0 ∈ (∅ ++ r)[r, o0]) ∧ (r0 ∈ mk(rs0, f) → mk(rs0, f)[r0] = (∅ ++ r)[r, o0][r0]) ⊦ |
rs0 ∩ rs1 = ∅, f(r) ≠ o0, r ≠ null, hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a, ∀ r0. (r0 ∈ rs0 ↔ r0 = r) ∧ (r0 ∈ rs0 → f(r0) = (r0 = r ⊃ o0;(∅ ++ r)[r0])) ⊦
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ h ⊦ r ∈ h ++ r0 ↔ r = r0 ∨ r ∈ h; (s) ⊦ ¬ r ∈ ∅; (s) ⊦ h[r0, o][r] = (r = r0 ∧ r0 ∈ h ⊃ o;h[r]); (s) ⊦ r ∈ rs → mk(rs, f)[r] = f(r); (s) ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; (s) ⊦ r ∈ h[r0, o] ↔ r ∈ h; (s)
| rs0 ∩ rs1 = ∅, f(r) ≠ o0, r ≠ null, hR[rs1, f, g], ∀ r. r ∈ rs0 → g(r) = a, ∀ r0. (r0 ∈ rs0 ↔ r0 = r) ∧ (r0 ∈ rs0 → f(r0) = (r0 = r ⊃ o0;(∅ ++ r)[r0])) ⊦ |
Used terms: r
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.