| ⊦ absloc(events((h0 | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl) ∧ (h0 |W | l) | false = [] → absloc(events((h0 | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl) |
(h0 |W | l) | false = [], absloc(events((h0 | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((h0 | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl) ⊦
| (h0 |W | l) | false = [], absloc(events((h0 | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((h0 | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl) ⊦ |
([] |W | l) | false = [], absloc(events(([] | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events(([] | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl) ⊦
((vpe + h)|W | l) | false = [], absloc(events((vpe + h | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((vpe + h | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l, t, v, h1, rset, v0, t0, fowl. ¬ ( (h |W | l) | false = [] ∧ absloc(events((h | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl) ∧ ¬ absloc(events((h | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl)) ⊦
Used simplifier rules: List('a) freely generated by [], +;;
| ([] |W | l) | false = [], absloc(events(([] | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events(([] | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl) ⊦ |
absloc(events((h1 | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h1) | l) | false), rset, fowl) ⊦
Used simplifier rules: absloc-recW-W: ⊦ absloc(W(t, l, v) ' + el, rset, W(v0, t0) ' + fowl) ↔ t0 = t ∧ v0 = v ∧ absloc(el, rset, fowl); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ events([]) = []; (s) ⊦ [] | b = []; (s) ⊦ [] | l = []; (s) ⊦ [] |W = []; (s)
| absloc(events((h1 | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h1) | l) | false), rset, fowl) ⊦ |
absloc(events((vpe + h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, vpe + h) | l) | false), rset, fowl), ∀ l, rset, fowl. ¬(absloc(events((h | l) | false), rset, fowl) ∧ ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl)) ⊦
Used simplifier rules: absloc-base: ⊦ absloc([], rset, fowl) ↔ fowl |W = []; List('a) freely generated by [], +;; ⊦ persistDependentReads(l, []) = []; (s) ⊦ [] | l = []; (s) ⊦ [] | b = []; (s) ⊦ events([]) = []; (s)
| absloc(events((vpe + h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, vpe + h) | l) | false), rset, fowl), ∀ l, rset, fowl. ¬(absloc(events((h | l) | false), rset, fowl) ∧ ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl)) ⊦ |
absloc(events((vpe._1.l = l ⊃ vpe ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, vpe ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ events(h1 + h2) = events(h1) + events(h2); (s) ⊦ h + h0 | b = (h | b) + (h0 | b); (s) ⊦ vpe ' | l = (vpe._1.l = l ⊃ vpe ';[]); (s) ⊦ h + h0 | l0 = (h | l0) + (h0 | l0); (s)
| absloc(events((vpe._1.l = l ⊃ vpe ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, vpe ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
vpe = (e, boolvar), absloc(events((e.l = l ⊃ vpe ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, vpe ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used terms: e, boolvar
| vpe = (e, boolvar), absloc(events((e.l = l ⊃ vpe ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, vpe ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
absloc(events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (e, boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
| absloc(events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (e, boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
e = R(t, l1, v), absloc(events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (e, boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
e = W(t, l1, v), absloc(events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (e, boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: RWevent freely generated by R, W;;
| e = R(t, l1, v), absloc(events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (e, boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
absloc(events((l1 = l ⊃ (R(t, l, v), boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (R(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: ⊦ R(t, l, v).l = l; (s)
| absloc(events((l1 = l ⊃ (R(t, l, v), boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (R(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
l1 = l, absloc(events((R(t, l, v), boolvar) ' | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (R(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
l1 ≠ l, absloc(events([] | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (R(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
| l1 = l, absloc(events((R(t, l, v), boolvar) ' | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (R(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
absloc(events((¬ boolvar ⊃ (R(t, l, v), false) ';[])) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (e, true) ' + h | false = h | false; (s) ⊦ (R(t, l, v), b) ' + h | l = (R(t, l, v), b) ' + (h | l); (s) ⊦ persistDependentReads(l, (R(t, l, v), b) ' + h) = (R(t, l, v), true) ' + persistDependentReads(l, h); (s) ⊦ (e, b) ' | b0 = (b ↔ b0 ⊃ (e, b) ';[]); (s)
| absloc(events((¬ boolvar ⊃ (R(t, l, v), false) ';[])) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
¬ boolvar, absloc(events((R(t, l, v), false) ') + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
boolvar, absloc(events([]) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
| ¬ boolvar, absloc(events((R(t, l, v), false) ') + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
absloc(events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ¬ t ∈ rset → FO(t) ∈ fowl, ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: absloc-recR: ⊦ absloc(R(t, l, v) ' + el, rset, fowl) ↔ (¬ t ∈ rset → FO(t) ∈ fowl) ∧ absloc(el, rset, fowl); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ events(vpe ') = vpe._1 '; (s)
| absloc(events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ¬ t ∈ rset → FO(t) ∈ fowl, ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
Used terms: l, rset, fowl
| boolvar, absloc(events([]) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
absloc(events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ events([]) = []; (s)
| absloc(events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
Used terms: l, rset, fowl
| l1 ≠ l, absloc(events([] | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (R(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
l1 ≠ l, absloc(events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ l ≠ l0 → (R(t, l, v), b) ' + h | l0 = h | l0; (s) ⊦ a + x = a ' + x; (s) ⊦ l ≠ l0 → persistDependentReads(l, (R(t, l0, v), b) ' + h) = (R(t, l0, v), b) + persistDependentReads(l, h); (s) ⊦ [] + x = x; (s) ⊦ events([]) = []; (s) ⊦ [] | b = []; (s)
| l1 ≠ l, absloc(events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
Used terms: l, rset, fowl
| e = W(t, l1, v), absloc(events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (e, boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
absloc(events((l1 = l ⊃ (W(t, l, v), boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (W(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: ⊦ W(t, l, v).l = l; (s)
| absloc(events((l1 = l ⊃ (W(t, l, v), boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (W(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
l1 ≠ l, absloc(events((l1 = l ⊃ (W(t, l, v), boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (W(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: ⊦ persistDependentReads(l, (W(t, l, v), b) ' + h) = (W(t, l, v), b) ' + h; (s) ⊦ (W(t, l, v), b) ' + h | l = (W(t, l, v), b) ' + (h | l); (s) ⊦ h + h0 | b = (h | b) + (h0 | b); (s) ⊦ (e, b) ' | b0 = (b ↔ b0 ⊃ (e, b) ';[]); (s) ⊦ events(h1 + h2) = events(h1) + events(h2); (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used formulas: l1 = l
| l1 ≠ l, absloc(events((l1 = l ⊃ (W(t, l, v), boolvar) ';[]) | false) + events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, (W(t, l1, v), boolvar) ' + h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
l1 ≠ l, absloc(events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ l ≠ l0 → (W(t, l, v), b) ' + h | l0 = h | l0; (s) ⊦ l ≠ l0 → persistDependentReads(l, (W(t, l0, v), b) ' + h) = (W(t, l0, v), b) ' + persistDependentReads(l, h); (s) ⊦ [] + x = x; (s) ⊦ events([]) = []; (s) ⊦ [] | b = []; (s)
| l1 ≠ l, absloc(events((h | l) | false), rset, fowl), ¬ absloc(events((persistDependentReads(l, h) | l) | false), rset, fowl), ∀ l0, rset0, fowl0. ¬ absloc(events((h | l0) | false), rset0, fowl0) ∨ absloc(events((persistDependentReads(l0, h) | l0) | false), rset0, fowl0) ⊦ |
Used terms: l, rset, fowl
| ((vpe + h)|W | l) | false = [], absloc(events((vpe + h | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((vpe + h | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l, t, v, h1, rset, v0, t0, fowl. ¬ ( (h |W | l) | false = [] ∧ absloc(events((h | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl) ∧ ¬ absloc(events((h | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl)) ⊦ |
((vpe._1.W? ⊃ vpe ';[]) | l) | false = [], (h |W | l) | false = [], absloc((events((vpe._1.l = l ⊃ vpe ';[]) | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((vpe._1.l = l ⊃ vpe ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ events(h1 + h2) = events(h1) + events(h2); (s) ⊦ h + h0 | b = (h | b) + (h0 | b); (s) ⊦ vpe ' | l = (vpe._1.l = l ⊃ vpe ';[]); (s) ⊦ h + h0 | l0 = (h | l0) + (h0 | l0); (s) ⊦ a + x = a ' + x; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ vpe ' |W = (vpe._1.W? ⊃ vpe ';[]); (s) ⊦ (h + h0)|W = h |W + h0 |W; (s)
| ((vpe._1.W? ⊃ vpe ';[]) | l) | false = [], (h |W | l) | false = [], absloc((events((vpe._1.l = l ⊃ vpe ';[]) | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((vpe._1.l = l ⊃ vpe ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
vpe = (e, boolvar), (h |W | l) | false = [], ((e.W? ⊃ vpe ';[]) | l) | false = [], absloc((events((e.l = l ⊃ vpe ';[]) | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((e.l = l ⊃ vpe ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used terms: e, boolvar
| vpe = (e, boolvar), (h |W | l) | false = [], ((e.W? ⊃ vpe ';[]) | l) | false = [], absloc((events((e.l = l ⊃ vpe ';[]) | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((e.l = l ⊃ vpe ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
((e.W? ⊃ (e, boolvar) ';[]) | l) | false = [], (h |W | l) | false = [], absloc((events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
| ((e.W? ⊃ (e, boolvar) ';[]) | l) | false = [], (h |W | l) | false = [], absloc((events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
e.l = l, (h |W | l) | false = [], ((e.W? ⊃ (e, boolvar) ';[]) | l) | false = [], absloc((events((e, boolvar) ' | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
(h |W | l) | false = [], ((e.W? ⊃ (e, boolvar) ';[]) | l) | false = [], e.l ≠ l, absloc((events([] | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
| e.l = l, (h |W | l) | false = [], ((e.W? ⊃ (e, boolvar) ';[]) | l) | false = [], absloc((events((e, boolvar) ' | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
((e.W? ⊃ (e, boolvar) ';[]) | e.l) | false = [], (h |W | e.l) | false = [], absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (e, b) ' | b0 = (b ↔ b0 ⊃ (e, b) ';[]); (s)
| ((e.W? ⊃ (e, boolvar) ';[]) | e.l) | false = [], (h |W | e.l) | false = [], absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
¬ boolvar, (h |W | e.l) | false = [], ((e.W? ⊃ (e, boolvar) ';[]) | e.l) | false = [], absloc(events((e, false) ') + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
boolvar, (h |W | e.l) | false = [], ((e.W? ⊃ (e, boolvar) ';[]) | e.l) | false = [], absloc(events([]) + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
| ¬ boolvar, (h |W | e.l) | false = [], ((e.W? ⊃ (e, boolvar) ';[]) | e.l) | false = [], absloc(events((e, false) ') + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
((e.W? ⊃ (e, false) ';[]) | e.l) | false = [], (h |W | e.l) | false = [], absloc(e ' + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(e ' + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ events(vpe ') = vpe._1 '; (s)
| ((e.W? ⊃ (e, false) ';[]) | e.l) | false = [], (h |W | e.l) | false = [], absloc(e ' + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(e ' + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
(h |W | e.l) | false = [], ((e.W? ⊃ (e, false) ';[]) | e.l) | false = [], absloc(e ' + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ e.W?, ¬ absloc(e ' + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: ⊦ vpe ' | l = (vpe._1.l = l ⊃ vpe ';[]); (s) ⊦ (e, b) ' | b0 = (b ↔ b0 ⊃ (e, b) ';[]); (s) ⊦ a ' ≠ []; (s) Used formulas: e.W?
| (h |W | e.l) | false = [], ((e.W? ⊃ (e, false) ';[]) | e.l) | false = [], absloc(e ' + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ e.W?, ¬ absloc(e ' + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
(h |W | e.l) | false = [], absloc(e ' + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ e.W?, ¬ absloc(e ' + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: ⊦ [] | b = []; (s) ⊦ [] | l = []; (s)
| (h |W | e.l) | false = [], absloc(e ' + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ e.W?, ¬ absloc(e ' + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
e = R(t3, l, v3), (h |W | e.l) | false = [], absloc(e ' + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ e.W?, ¬ absloc(e ' + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: absloc-recW-W: ⊦ absloc(W(t, l, v) ' + el, rset, W(v0, t0) ' + fowl) ↔ t0 = t ∧ v0 = v ∧ absloc(el, rset, fowl); RWevent freely generated by R, W;; ⊦ W(t, l, v).l = l; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(t, l, v).W?; (s)
| e = R(t3, l, v3), (h |W | e.l) | false = [], absloc(e ' + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ e.W?, ¬ absloc(e ' + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
(h |W | l) | false = [], absloc(events((h | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((h | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ¬ t3 ∈ rset → FO(t3) ∈ fowl, ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: absloc-recR: ⊦ absloc(R(t, l, v) ' + el, rset, fowl) ↔ (¬ t ∈ rset → FO(t) ∈ fowl) ∧ absloc(el, rset, fowl); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ R(t, l, v).l = l; (s) ⊦ ¬ R(t, l, v).W?; (s) ⊦ FO(tid) ≠ W(v, tid0); (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| (h |W | l) | false = [], absloc(events((h | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((h | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ¬ t3 ∈ rset → FO(t3) ∈ fowl, ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: l, t, v, h1, rset, v0, t0, fowl
| boolvar, (h |W | e.l) | false = [], ((e.W? ⊃ (e, boolvar) ';[]) | e.l) | false = [], absloc(events([]) + events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
((e.W? ⊃ (e, true) ';[]) | e.l) | false = [], (h |W | e.l) | false = [], absloc(events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ events([]) = []; (s)
| ((e.W? ⊃ (e, true) ';[]) | e.l) | false = [], (h |W | e.l) | false = [], absloc(events((h | e.l) | false) + W(t, e.l, v) ' + events((h1 | e.l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((h | e.l) | false) + events((persistDependentReads(e.l, h1) | e.l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: e.l, t, v, h1, rset, v0, t0, fowl
| (h |W | l) | false = [], ((e.W? ⊃ (e, boolvar) ';[]) | l) | false = [], e.l ≠ l, absloc((events([] | false) + events((h | l) | false)) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc((events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h | l) | false)) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
((e.W? ⊃ (e, boolvar) ';[]) | l) | false = [], (h |W | l) | false = [], e.l ≠ l, absloc(events((h | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((h | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ events([]) = []; (s) ⊦ [] | b = []; (s)
| ((e.W? ⊃ (e, boolvar) ';[]) | l) | false = [], (h |W | l) | false = [], e.l ≠ l, absloc(events((h | l) | false) + W(t, l, v) ' + events((h1 | l) | false), rset, W(v0, t0) ' + fowl), ¬ absloc(events((h | l) | false) + events((persistDependentReads(l, h1) | l) | false), rset, fowl), ∀ l0, t1, v1, h0, rset0, v2, t2, fowl0. (h |W | l0) | false ≠ [] ∨ ¬ absloc(events((h | l0) | false) + W(t1, l0, v1) ' + events((h0 | l0) | false), rset0, W(v2, t2) ' + fowl0) ∨ absloc(events((h | l0) | false) + events((persistDependentReads(l0, h0) | l0) | false), rset0, fowl0) ⊦ |
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: l, t, v, h1, rset, v0, t0, fowl
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.