| ⊦ mem ⊕ (h1 + (persistDependentReads(l, h2) | true)) = mem ⊕ (h1 + (h2 | true)) |
mem ⊕ (h1 + (persistDependentReads(l, h2) | true)) ≠ mem ⊕ (h1 + (h2 | true)) ⊦
| mem ⊕ (h1 + (persistDependentReads(l, h2) | true)) ≠ mem ⊕ (h1 + (h2 | true)) ⊦ |
mem ⊕ (h1 + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (h1 + h2.filter(._2)) ⊦
Used simplifier rules: restrict-vp: ⊦ h | b = h.filter(λ vpe. vpe._2 ↔ b);
| mem ⊕ (h1 + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (h1 + h2.filter(._2)) ⊦ |
mem ⊕ ([] + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ ([] + h2.filter(._2)) ⊦
mem ⊕ ((vpe + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ ((vpe + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦
Used simplifier rules: List('a) freely generated by [], +;;
| mem ⊕ ([] + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ ([] + h2.filter(._2)) ⊦ |
mem ⊕ persistDependentReads(l, h2).filter(._2) ≠ mem ⊕ h2.filter(._2) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s)
| mem ⊕ persistDependentReads(l, h2).filter(._2) ≠ mem ⊕ h2.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, vpe + h).filter(._2) ≠ mem ⊕ (vpe + h).filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: persistDependentReads-base: ⊦ persistDependentReads(l, []) = []; overwrite-base: ⊦ mem ⊕ [] = mem; List('a) freely generated by [], +;; ⊦ [].filter(p) = []; (s)
| mem ⊕ persistDependentReads(l, vpe + h).filter(._2) ≠ mem ⊕ (vpe + h).filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, vpe ' + h).filter(._2) ≠ mem ⊕ ((vpe._2 ⊃ vpe ';[]) + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ a + x = a ' + x; (s)
| mem ⊕ persistDependentReads(l, vpe ' + h).filter(._2) ≠ mem ⊕ ((vpe._2 ⊃ vpe ';[]) + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
vpe = (e, boolvar), mem ⊕ persistDependentReads(l, vpe ' + h).filter(._2) ≠ mem ⊕ ((boolvar ⊃ vpe ';[]) + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used terms: e, boolvar
| vpe = (e, boolvar), mem ⊕ persistDependentReads(l, vpe ' + h).filter(._2) ≠ mem ⊕ ((boolvar ⊃ vpe ';[]) + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, (e, boolvar) ' + h).filter(._2) ≠ mem ⊕ ((boolvar ⊃ (e, true) ';[]) + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
| mem ⊕ persistDependentReads(l, (e, boolvar) ' + h).filter(._2) ≠ mem ⊕ ((boolvar ⊃ (e, true) ';[]) + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
boolvar, mem ⊕ persistDependentReads(l, (e, boolvar) ' + h).filter(._2) ≠ mem ⊕ ((e, true) ' + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
¬ boolvar, mem ⊕ persistDependentReads(l, (e, boolvar) ' + h).filter(._2) ≠ mem ⊕ ([] + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
| boolvar, mem ⊕ persistDependentReads(l, (e, boolvar) ' + h).filter(._2) ≠ mem ⊕ ((e, true) ' + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, (e, true) ' + h).filter(._2) ≠ mem ⊕ ((e, true) ' + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
| mem ⊕ persistDependentReads(l, (e, true) ' + h).filter(._2) ≠ mem ⊕ ((e, true) ' + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
e = R(t, l0, v), mem ⊕ persistDependentReads(l, (e, true) ' + h).filter(._2) ≠ mem ⊕ ((e, true) ' + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
e = W(t, l0, v), mem ⊕ persistDependentReads(l, (e, true) ' + h).filter(._2) ≠ mem ⊕ ((e, true) ' + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: RWevent freely generated by R, W;;
| e = R(t, l0, v), mem ⊕ persistDependentReads(l, (e, true) ' + h).filter(._2) ≠ mem ⊕ ((e, true) ' + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, (R(t, l0, v), true) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: overwrite-rec-read: ⊦ mem ⊕ ((R(t, l, v), b) ' + h) = mem ⊕ h; a: ⊦ (x + y) + z = x + y + z; from specification list
| mem ⊕ persistDependentReads(l, (R(t, l0, v), true) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
⊦ l ≠ l0 → persistDependentReads(l, (R(t, l0, v), b) ' + h) = (R(t, l0, v), b) + persistDependentReads(l, h)
l = l0, mem ⊕ persistDependentReads(l, (R(t, l0, v), true) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
l ≠ l0, mem ⊕ ((R(t, l0, v), true) + persistDependentReads(l, h)).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: v, true, l, l0, t, h
| ⊦ l ≠ l0 → persistDependentReads(l, (R(t, l0, v), b) ' + h) = (R(t, l0, v), b) + persistDependentReads(l, h) |
| l = l0, mem ⊕ persistDependentReads(l, (R(t, l0, v), true) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l0, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: persistDependentReads-read: ⊦ persistDependentReads(l, (R(t, l, v), b) ' + h) = (R(t, l, v), true) ' + persistDependentReads(l, h); overwrite-rec-read: ⊦ mem ⊕ ((R(t, l, v), b) ' + h) = mem ⊕ h; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| mem ⊕ persistDependentReads(l0, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
Used terms: mem, l0
| l ≠ l0, mem ⊕ ((R(t, l0, v), true) + persistDependentReads(l, h)).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
l ≠ l0, mem ⊕ persistDependentReads(l, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: overwrite-rec-read: ⊦ mem ⊕ ((R(t, l, v), b) ' + h) = mem ⊕ h; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ a + x = a ' + x; (s)
| l ≠ l0, mem ⊕ persistDependentReads(l, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
Used terms: mem, l
| e = W(t, l0, v), mem ⊕ persistDependentReads(l, (e, true) ' + h).filter(._2) ≠ mem ⊕ ((e, true) ' + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, (W(t, l0, v), true) ' + h).filter(._2) ≠ mem(l0 := v) ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: overwrite-rec-write: ⊦ mem ⊕ ((W(t, l, v), b) ' + h) = mem(l := v) ⊕ h; a: ⊦ (x + y) + z = x + y + z; from specification list
| mem ⊕ persistDependentReads(l, (W(t, l0, v), true) ' + h).filter(._2) ≠ mem(l0 := v) ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
⊦ l ≠ l0 → persistDependentReads(l, (W(t, l0, v), b) ' + h) = (W(t, l0, v), b) ' + persistDependentReads(l, h)
l ≠ l0, mem ⊕ ((W(t, l0, v), true) ' + persistDependentReads(l, h)).filter(._2) ≠ mem(l0 := v) ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: persistDependentReads-nextwrite: ⊦ persistDependentReads(l, (W(t, l, v), b) ' + h) = (W(t, l, v), b) ' + h; overwrite-rec-write: ⊦ mem ⊕ ((W(t, l, v), b) ' + h) = mem(l := v) ⊕ h; ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: v, true, l, l0, t, h
| ⊦ l ≠ l0 → persistDependentReads(l, (W(t, l0, v), b) ' + h) = (W(t, l0, v), b) ' + persistDependentReads(l, h) |
| l ≠ l0, mem ⊕ ((W(t, l0, v), true) ' + persistDependentReads(l, h)).filter(._2) ≠ mem(l0 := v) ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
l ≠ l0, mem(l0 := v) ⊕ persistDependentReads(l, h).filter(._2) ≠ mem(l0 := v) ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: overwrite-rec-write: ⊦ mem ⊕ ((W(t, l, v), b) ' + h) = mem(l := v) ⊕ h; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| l ≠ l0, mem(l0 := v) ⊕ persistDependentReads(l, h).filter(._2) ≠ mem(l0 := v) ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
Used terms: mem(l0 := v), l
| ¬ boolvar, mem ⊕ persistDependentReads(l, (e, boolvar) ' + h).filter(._2) ≠ mem ⊕ ([] + h.filter(._2)), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, (e, false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s)
| mem ⊕ persistDependentReads(l, (e, false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
e = R(t, l0, v), mem ⊕ persistDependentReads(l, (e, false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
e = W(t, l0, v), mem ⊕ persistDependentReads(l, (e, false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: RWevent freely generated by R, W;;
| e = R(t, l0, v), mem ⊕ persistDependentReads(l, (e, false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, (R(t, l0, v), false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
| mem ⊕ persistDependentReads(l, (R(t, l0, v), false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
⊦ l ≠ l0 → persistDependentReads(l, (R(t, l0, v), b) ' + h) = (R(t, l0, v), b) + persistDependentReads(l, h)
l = l0, mem ⊕ persistDependentReads(l, (R(t, l0, v), false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
l ≠ l0, mem ⊕ ((R(t, l0, v), false) + persistDependentReads(l, h)).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: v, false, l, l0, t, h
| ⊦ l ≠ l0 → persistDependentReads(l, (R(t, l0, v), b) ' + h) = (R(t, l0, v), b) + persistDependentReads(l, h) |
| l = l0, mem ⊕ persistDependentReads(l, (R(t, l0, v), false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l0, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: persistDependentReads-read: ⊦ persistDependentReads(l, (R(t, l, v), b) ' + h) = (R(t, l, v), true) ' + persistDependentReads(l, h); overwrite-rec-read: ⊦ mem ⊕ ((R(t, l, v), b) ' + h) = mem ⊕ h; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| mem ⊕ persistDependentReads(l0, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
Used terms: mem, l0
| l ≠ l0, mem ⊕ ((R(t, l0, v), false) + persistDependentReads(l, h)).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
l ≠ l0, mem ⊕ persistDependentReads(l, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ a + x = a ' + x; (s)
| l ≠ l0, mem ⊕ persistDependentReads(l, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
Used terms: mem, l
| e = W(t, l0, v), mem ⊕ persistDependentReads(l, (e, false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
mem ⊕ persistDependentReads(l, (W(t, l0, v), false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
| mem ⊕ persistDependentReads(l, (W(t, l0, v), false) ' + h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
⊦ l ≠ l0 → persistDependentReads(l, (W(t, l0, v), b) ' + h) = (W(t, l0, v), b) ' + persistDependentReads(l, h)
l ≠ l0, mem ⊕ ((W(t, l0, v), false) ' + persistDependentReads(l, h)).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: persistDependentReads-nextwrite: ⊦ persistDependentReads(l, (W(t, l, v), b) ' + h) = (W(t, l, v), b) ' + h; ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: v, false, l, l0, t, h
| ⊦ l ≠ l0 → persistDependentReads(l, (W(t, l0, v), b) ' + h) = (W(t, l0, v), b) ' + persistDependentReads(l, h) |
| l ≠ l0, mem ⊕ ((W(t, l0, v), false) ' + persistDependentReads(l, h)).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
l ≠ l0, mem ⊕ persistDependentReads(l, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| l ≠ l0, mem ⊕ persistDependentReads(l, h).filter(._2) ≠ mem ⊕ h.filter(._2), ∀ mem, l. mem ⊕ persistDependentReads(l, h).filter(._2) = mem ⊕ h.filter(._2) ⊦ |
Used terms: mem, l
| mem ⊕ ((vpe + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ ((vpe + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦ |
mem ⊕ ((vpe ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ ((vpe ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s)
| mem ⊕ ((vpe ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ ((vpe ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦ |
vpe = (e, b), mem ⊕ ((vpe ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ ((vpe ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦
| vpe = (e, b), mem ⊕ ((vpe ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ ((vpe ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦ |
mem ⊕ (((e, b) ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (((e, b) ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦
| mem ⊕ (((e, b) ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (((e, b) ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦ |
e = R(t, l0, v), mem ⊕ (((e, b) ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (((e, b) ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦
e = W(t, l0, v), mem ⊕ (((e, b) ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (((e, b) ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦
Used simplifier rules: RWevent freely generated by R, W;;
| e = R(t, l0, v), mem ⊕ (((e, b) ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (((e, b) ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦ |
mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (h + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦
Used simplifier rules: overwrite-rec-read: ⊦ mem ⊕ ((R(t, l, v), b) ' + h) = mem ⊕ h; a: ⊦ (x + y) + z = x + y + z; from specification list
| mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (h + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦ |
Used terms: mem, l, h2
| e = W(t, l0, v), mem ⊕ (((e, b) ' + h) + persistDependentReads(l, h2).filter(._2)) ≠ mem ⊕ (((e, b) ' + h) + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦ |
mem(l0 := v) ⊕ (h + persistDependentReads(l, h2).filter(._2)) ≠ mem(l0 := v) ⊕ (h + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦
Used simplifier rules: overwrite-rec-write: ⊦ mem ⊕ ((W(t, l, v), b) ' + h) = mem(l := v) ⊕ h; a: ⊦ (x + y) + z = x + y + z; from specification list
| mem(l0 := v) ⊕ (h + persistDependentReads(l, h2).filter(._2)) ≠ mem(l0 := v) ⊕ (h + h2.filter(._2)), ∀ mem, l, h2. mem ⊕ (h + persistDependentReads(l, h2).filter(._2)) = mem ⊕ (h + h2.filter(._2)) ⊦ |
Used terms: mem(l0 := v), l, h2
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.