| ⊦ h.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h ∧ vpe._2 ∧ vpe._1.l = l) |
h.lastPersistedOrElse(l, false) ⊦ ∃ vpe. vpe ∈ h ∧ vpe._2 ∧ vpe._1.l = l
| h.lastPersistedOrElse(l, false) ⊦ ∃ vpe. vpe ∈ h ∧ vpe._2 ∧ vpe._1.l = l |
(vpe + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. vpe0 ∈ vpe + h0 ∧ vpe0._2 ∧ vpe0._1.l = l
Used simplifier rules: lastPersistedOrElse-base: ⊦ [].lastPersistedOrElse(l, b) ↔ b; List('a) freely generated by [], +;;
| (vpe + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. vpe0 ∈ vpe + h0 ∧ vpe0._2 ∧ vpe0._1.l = l |
(vpe ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = vpe ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a + x = a ' + x; (s)
| (vpe ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = vpe ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
vpe = (e, b), (vpe ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = vpe ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
| vpe = (e, b), (vpe ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = vpe ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
((e, b) ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (e, b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
| ((e, b) ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (e, b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
e = R(t, l0, v), ((e, b) ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (e, b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
e = W(t, l0, v), ((e, b) ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (e, b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
Used simplifier rules: RWevent freely generated by R, W;;
| e = R(t, l0, v), ((e, b) ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (e, b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
h0.lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
Used simplifier rules: lastPersistedOrElse-recR: ⊦ ((R(t0, l0, v0), b0) ' + h).lastPersistedOrElse(l, b) ↔ h.lastPersistedOrElse(l, b); a: ⊦ (x + y) + z = x + y + z; from specification list
| h0.lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
h0.lastPersistedOrElse(l, false), h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
Used terms: l
| h0.lastPersistedOrElse(l, false), h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
h0.lastPersistedOrElse(vpe._1.l, false), vpe ∈ h0, vpe._2 ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = vpe._1.l
| h0.lastPersistedOrElse(vpe._1.l, false), vpe ∈ h0, vpe._2 ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = vpe._1.l |
b0, vpe = (e, b0), h0.lastPersistedOrElse(e.l, false), vpe ∈ h0 ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = e.l
Used terms: e, b0
| b0, vpe = (e, b0), h0.lastPersistedOrElse(e.l, false), vpe ∈ h0 ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = e.l |
h0.lastPersistedOrElse(e.l, false), (e, true) ∈ h0 ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = e.l
| h0.lastPersistedOrElse(e.l, false), (e, true) ∈ h0 ⊦ ∃ vpe0. (vpe0 = (R(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = e.l |
Used terms: (e, true)
| e = W(t, l0, v), ((e, b) ' + h0).lastPersistedOrElse(l, false), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (e, b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
h0.lastPersistedOrElse(l, l = l0 ∧ b), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
Used simplifier rules: lastPersistedOrElse-recW: ⊦ ((W(t0, l0, v0), b0) ' + h).lastPersistedOrElse(l, b) ↔ h.lastPersistedOrElse(l, (l = l0 ⊃ b0;b)); a: ⊦ (x + y) + z = x + y + z; from specification list
| h0.lastPersistedOrElse(l, l = l0 ∧ b), ∀ l. h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
Used terms: l
| h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → (∃ vpe. vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l) ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
| h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → vpe ∈ h0 ∧ vpe._2 ∧ vpe._1.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
vpe = (e, b0), h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → vpe ∈ h0 ∧ b0 ∧ e.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
Used terms: e, b0
| vpe = (e, b0), h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → vpe ∈ h0 ∧ b0 ∧ e.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → (e, true) ∈ h0 ∧ b0 ∧ e.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
| h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → (e, true) ∈ h0 ∧ b0 ∧ e.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
b, l = l0, h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → (e, true) ∈ h0 ∧ b0 ∧ e.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l
h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → (e, true) ∈ h0 ∧ b0 ∧ e.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l, l = l0 ∧ b
Used formulas: l = l0 ∧ b
| b, l = l0, h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → (e, true) ∈ h0 ∧ b0 ∧ e.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l |
h0.lastPersistedOrElse(l0, true), h0.lastPersistedOrElse(l0, false) → (e, true) ∈ h0 ∧ b0 ∧ e.l = l0 ⊦ ∃ vpe0. (vpe0 = (W(t, vpe0._1.l, v), true) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l0
| h0.lastPersistedOrElse(l0, true), h0.lastPersistedOrElse(l0, false) → (e, true) ∈ h0 ∧ b0 ∧ e.l = l0 ⊦ ∃ vpe0. (vpe0 = (W(t, vpe0._1.l, v), true) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l0 |
Used simplifier rules: ⊦ W(t, l, v).l = l; (s) Used terms: (W(t, l0, v), true)
| h0.lastPersistedOrElse(l, l = l0 ∧ b), h0.lastPersistedOrElse(l, false) → (e, true) ∈ h0 ∧ b0 ∧ e.l = l ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = l, l = l0 ∧ b |
h0.lastPersistedOrElse(e.l, false), (e, true) ∈ h0 ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = e.l, e.l = l0 ∧ b
| h0.lastPersistedOrElse(e.l, false), (e, true) ∈ h0 ⊦ ∃ vpe0. (vpe0 = (W(t, l0, v), b) ∨ vpe0 ∈ h0) ∧ vpe0._2 ∧ vpe0._1.l = e.l, e.l = l0 ∧ b |
Used terms: (e, true)
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.