| ⊦ abs(h, rs, p) ∧ p(l) = W(v, t) ' + fowl → h[firstVolWrite(l, h)] = (W(t, l, v), false) |
p(l) = W(v, t) ' + fowl, h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), abs(h, rs, p) ⊦
| p(l) = W(v, t) ' + fowl, h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), abs(h, rs, p) ⊦ |
p(l) = W(v, t) ' + fowl, h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), abs(h, rs, p), W(v, t) ∈ p(l) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| p(l) = W(v, t) ' + fowl, h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), abs(h, rs, p), W(v, t) ∈ p(l) ⊦ |
⊦ abs(h, rs, p) ↔ (∀ l. absloc(events((h | l) | false), rs(l), p(l)))
p(l) = W(v, t) ' + fowl, h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), W(v, t) ∈ p(l), ∀ l. absloc(events((h | l) | false), rs(l), p(l)) ⊦
Used terms: h, rs, p
| ⊦ abs(h, rs, p) ↔ (∀ l. absloc(events((h | l) | false), rs(l), p(l))) |
| p(l) = W(v, t) ' + fowl, h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), W(v, t) ∈ p(l), ∀ l. absloc(events((h | l) | false), rs(l), p(l)) ⊦ |
p(l) = W(v, t) ' + fowl, h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), absloc(events((h | l) | false), rs(l), p(l)), W(v, t) ∈ p(l) ⊦
Used terms: l
| p(l) = W(v, t) ' + fowl, h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), absloc(events((h | l) | false), rs(l), p(l)), W(v, t) ∈ p(l) ⊦ |
h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), absloc(events((h | l) | false), rs(l), W(v, t) ' + fowl), W(v, t) ∈ W(v, t) ' + fowl ⊦
| h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), absloc(events((h | l) | false), rs(l), W(v, t) ' + fowl), W(v, t) ∈ W(v, t) ' + fowl ⊦ |
h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), absloc(events((h | l) | false), rs(l), W(v, t) ' + fowl) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| h[firstVolWrite(l, h)] ≠ (W(t, l, v), false), absloc(events((h | l) | false), rs(l), W(v, t) ' + fowl) ⊦ |
(vpe + h0)[firstVolWrite(l, vpe + h0)] ≠ (W(t, l, v), false), absloc(events((vpe + h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l, t, v, rs, fowl. ¬(h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false) ∧ absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl)) ⊦
Used simplifier rules: absloc-base: ⊦ absloc([], rset, fowl) ↔ fowl |W = []; List('a) freely generated by [], +;; ⊦ [] | l = []; (s) ⊦ [] | b = []; (s) ⊦ events([]) = []; (s) ⊦ (W(v, t) ' + fowl)|W = W(v, t) ' + fowl |W; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| (vpe + h0)[firstVolWrite(l, vpe + h0)] ≠ (W(t, l, v), false), absloc(events((vpe + h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l, t, v, rs, fowl. ¬(h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false) ∧ absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl)) ⊦ |
(vpe ' + h0)[firstVolWrite(l, vpe ' + h0)] ≠ (W(t, l, v), false), absloc(events((vpe._1.l = l ⊃ vpe ';[]) | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + 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)
| (vpe ' + h0)[firstVolWrite(l, vpe ' + h0)] ≠ (W(t, l, v), false), absloc(events((vpe._1.l = l ⊃ vpe ';[]) | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
vpe = (e, boolvar), (vpe ' + h0)[firstVolWrite(l, vpe ' + h0)] ≠ (W(t, l, v), false), absloc(events((e.l = l ⊃ vpe ';[]) | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used terms: e, boolvar
| vpe = (e, boolvar), (vpe ' + h0)[firstVolWrite(l, vpe ' + h0)] ≠ (W(t, l, v), false), absloc(events((e.l = l ⊃ vpe ';[]) | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
| ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((e.l = l ⊃ (e, boolvar) ';[]) | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
e.l = l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((e, boolvar) ' | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
e.l ≠ l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events([] | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
| e.l = l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((e, boolvar) ' | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
((e, boolvar) ' + h0)[firstVolWrite(e.l, (e, boolvar) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: ⊦ (e, b) ' | b0 = (b ↔ b0 ⊃ (e, b) ';[]); (s)
| ((e, boolvar) ' + h0)[firstVolWrite(e.l, (e, boolvar) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((¬ boolvar ⊃ (e, false) ';[])) + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
¬ boolvar, ((e, boolvar) ' + h0)[firstVolWrite(e.l, (e, boolvar) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((e, false) ') + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
boolvar, ((e, boolvar) ' + h0)[firstVolWrite(e.l, (e, boolvar) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events([]) + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
| ¬ boolvar, ((e, boolvar) ' + h0)[firstVolWrite(e.l, (e, boolvar) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((e, false) ') + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
((e, false) ' + h0)[firstVolWrite(e.l, (e, false) ' + h0)] ≠ (W(t, e.l, v), false), absloc(e ' + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: ⊦ events(vpe ') = vpe._1 '; (s)
| ((e, false) ' + h0)[firstVolWrite(e.l, (e, false) ' + h0)] ≠ (W(t, e.l, v), false), absloc(e ' + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
e = R(t1, l, v1), ((e, false) ' + h0)[firstVolWrite(e.l, (e, false) ' + h0)] ≠ (W(t, e.l, v), false), absloc(e ' + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + 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;; ⊦ firstVolWrite(l, (W(t, l, v), false) ' + h) = 0; (s) ⊦ (a ' + x)[0] = a; (s) ⊦ W(t, l, v).l = l; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| e = R(t1, l, v1), ((e, false) ' + h0)[firstVolWrite(e.l, (e, false) ' + h0)] ≠ (W(t, e.l, v), false), absloc(e ' + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ¬ t1 ∈ rs(l) → FO(t1) ∈ fowl, ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + 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 ⊦ FO(tid) ≠ W(v, tid0); (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ R(t, l, v).l = l; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (a ' + x)[n + 1] = x[n]; (s) ⊦ firstVolWrite(l, (R(t, l0, v), b) ' + h) = firstVolWrite(l, h) + 1; (s)
| h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ¬ t1 ∈ rs(l) → FO(t1) ∈ fowl, ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
Used terms: l, t, v, rs, fowl
| boolvar, ((e, boolvar) ' + h0)[firstVolWrite(e.l, (e, boolvar) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events([]) + events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
((e, true) ' + h0)[firstVolWrite(e.l, (e, true) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ events([]) = []; (s)
| ((e, true) ' + h0)[firstVolWrite(e.l, (e, true) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
e = R(t1, l, v1), ((e, true) ' + h0)[firstVolWrite(e.l, (e, true) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
e = W(t1, l, v1), ((e, true) ' + h0)[firstVolWrite(e.l, (e, true) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: RWevent freely generated by R, W;;
| e = R(t1, l, v1), ((e, true) ' + h0)[firstVolWrite(e.l, (e, true) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: ⊦ R(t, l, v).l = l; (s) a: ⊦ (x + y) + z = x + y + z; from specification list c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (a ' + x)[n + 1] = x[n]; (s) ⊦ firstVolWrite(l, (R(t, l0, v), b) ' + h) = firstVolWrite(l, h) + 1; (s)
| h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
Used terms: l, t, v, rs, fowl
| e = W(t1, l, v1), ((e, true) ' + h0)[firstVolWrite(e.l, (e, true) ' + h0)] ≠ (W(t, e.l, v), false), absloc(events((h0 | e.l) | false), rs(e.l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: ⊦ W(t, l, v).l = l; (s) a: ⊦ (x + y) + z = x + y + z; from specification list c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (a ' + x)[n + 1] = x[n]; (s) ⊦ firstVolWrite(l, (W(t, l0, v), true) ' + h) = firstVolWrite(l, h) + 1; (s)
| h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
Used terms: l, t, v, rs, fowl
| e.l ≠ l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events([] | false) + events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
e.l ≠ l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ events([]) = []; (s) ⊦ [] | b = []; (s)
| e.l ≠ l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
e = R(t1, l1, v1), e.l ≠ l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
e = W(t1, l1, v1), e.l ≠ l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: RWevent freely generated by R, W;;
| e = R(t1, l1, v1), e.l ≠ l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), l1 ≠ l, absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (a ' + x)[n + 1] = x[n]; (s) ⊦ firstVolWrite(l, (R(t, l0, v), b) ' + h) = firstVolWrite(l, h) + 1; (s) ⊦ R(t, l, v).l = l; (s)
| h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), l1 ≠ l, absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
Used terms: l, t, v, rs, fowl
| e = W(t1, l1, v1), e.l ≠ l, ((e, boolvar) ' + h0)[firstVolWrite(l, (e, boolvar) ' + h0)] ≠ (W(t, l, v), false), absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), l1 ≠ l, absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (a ' + x)[n + 1] = x[n]; (s) ⊦ l0 ≠ l → firstVolWrite(l, (W(t, l0, v), b) ' + h) = firstVolWrite(l, h) + 1; (s) ⊦ W(t, l, v).l = l; (s)
| h0[firstVolWrite(l, h0)] ≠ (W(t, l, v), false), l1 ≠ l, absloc(events((h0 | l) | false), rs(l), W(v, t) ' + fowl), ∀ l0, t0, v0, rs0, fowl0. h0[firstVolWrite(l0, h0)] = (W(t0, l0, v0), false) ∨ ¬ absloc(events((h0 | l0) | false), rs0(l0), W(v0, t0) ' + fowl0) ⊦ |
Used terms: l, t, v, rs, 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.