| ⊦ mem ⊕ (h + (W(t, l, v), b) ') = (mem ⊕ h)(l := v) |
mem ⊕ (h + (W(t, l, v), b) ') ≠ (mem ⊕ h)(l := v) ⊦
| mem ⊕ (h + (W(t, l, v), b) ') ≠ (mem ⊕ h)(l := v) ⊦ |
hPred([]), ∀ t, l, v, h. hPred(h) → hPred((W(t, l, v), true) ' + h), ∀ t, l, v, h. hPred(h) → hPred((W(t, l, v), false) ' + h), ∀ t, l, v, h. hPred(h) → hPred((R(t, l, v), true) ' + h), ∀ t, l, v, h. hPred(h) → hPred((R(t, l, v), false) ' + h) ⊦ hPred(h)
[] = h, mem ⊕ (h + (W(t, l, v), b) ') ≠ (mem ⊕ h)(l := v) ⊦
∀ mem, h1, t, l, v, b. ¬(h = h1 ∧ mem ⊕ (h1 + (W(t, l, v), b) ') ≠ (mem ⊕ h1)(l := v)) ⊦ ∀ mem, h1, t0, l0, v0, b. ¬((W(t, l, v), true) ' + h = h1 ∧ mem ⊕ (h1 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h1)(l0 := v0))
∀ mem, h1, t, l, v, b. ¬(h = h1 ∧ mem ⊕ (h1 + (W(t, l, v), b) ') ≠ (mem ⊕ h1)(l := v)) ⊦ ∀ mem, h1, t0, l0, v0, b. ¬((W(t, l, v), false) ' + h = h1 ∧ mem ⊕ (h1 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h1)(l0 := v0))
∀ mem, h1, t, l, v, b. ¬(h = h1 ∧ mem ⊕ (h1 + (W(t, l, v), b) ') ≠ (mem ⊕ h1)(l := v)) ⊦ ∀ mem, h1, t0, l0, v0, b. ¬((R(t, l, v), true) ' + h = h1 ∧ mem ⊕ (h1 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h1)(l0 := v0))
∀ mem, h1, t, l, v, b. ¬(h = h1 ∧ mem ⊕ (h1 + (W(t, l, v), b) ') ≠ (mem ⊕ h1)(l := v)) ⊦ ∀ mem, h1, t0, l0, v0, b. ¬((R(t, l, v), false) ' + h = h1 ∧ mem ⊕ (h1 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h1)(l0 := v0))
Used terms: h, λ h0. ∀ mem, h, t, l, v, b. ¬(h0 = h ∧ mem ⊕ (h + (W(t, l, v), b) ') ≠ (mem ⊕ h)(l := v))
| hPred([]), ∀ t, l, v, h. hPred(h) → hPred((W(t, l, v), true) ' + h), ∀ t, l, v, h. hPred(h) → hPred((W(t, l, v), false) ' + h), ∀ t, l, v, h. hPred(h) → hPred((R(t, l, v), true) ' + h), ∀ t, l, v, h. hPred(h) → hPred((R(t, l, v), false) ' + h) ⊦ hPred(h) |
| [] = h, mem ⊕ (h + (W(t, l, v), b) ') ≠ (mem ⊕ h)(l := v) ⊦ |
Used simplifier rules: overwrite-one-write: ⊦ mem ⊕ (W(t, l, v), b) ' = mem(l := v); overwrite-base: ⊦ mem ⊕ [] = mem; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s)
| ∀ mem, h1, t, l, v, b. ¬(h = h1 ∧ mem ⊕ (h1 + (W(t, l, v), b) ') ≠ (mem ⊕ h1)(l := v)) ⊦ ∀ mem, h1, t0, l0, v0, b. ¬((W(t, l, v), true) ' + h = h1 ∧ mem ⊕ (h1 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h1)(l0 := v0)) |
mem(l := v) ⊕ (h + (W(t0, l0, v0), b) ') ≠ (mem(l := v) ⊕ h)(l0 := v0), ∀ mem0, t, l1, v1, b0. mem0 ⊕ (h + (W(t, l1, v1), b0) ') = (mem0 ⊕ h)(l1 := v1) ⊦
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(l := v) ⊕ (h + (W(t0, l0, v0), b) ') ≠ (mem(l := v) ⊕ h)(l0 := v0), ∀ mem0, t, l1, v1, b0. mem0 ⊕ (h + (W(t, l1, v1), b0) ') = (mem0 ⊕ h)(l1 := v1) ⊦ |
Used terms: mem(l := v), t0, l0, v0, b
| ∀ mem, h1, t, l, v, b. ¬(h = h1 ∧ mem ⊕ (h1 + (W(t, l, v), b) ') ≠ (mem ⊕ h1)(l := v)) ⊦ ∀ mem, h1, t0, l0, v0, b. ¬((W(t, l, v), false) ' + h = h1 ∧ mem ⊕ (h1 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h1)(l0 := v0)) |
mem(l := v) ⊕ (h + (W(t0, l0, v0), b) ') ≠ (mem(l := v) ⊕ h)(l0 := v0), ∀ mem0, t, l1, v1, b0. mem0 ⊕ (h + (W(t, l1, v1), b0) ') = (mem0 ⊕ h)(l1 := v1) ⊦
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(l := v) ⊕ (h + (W(t0, l0, v0), b) ') ≠ (mem(l := v) ⊕ h)(l0 := v0), ∀ mem0, t, l1, v1, b0. mem0 ⊕ (h + (W(t, l1, v1), b0) ') = (mem0 ⊕ h)(l1 := v1) ⊦ |
Used terms: mem(l := v), t0, l0, v0, b
| ∀ mem, h1, t, l, v, b. ¬(h = h1 ∧ mem ⊕ (h1 + (W(t, l, v), b) ') ≠ (mem ⊕ h1)(l := v)) ⊦ ∀ mem, h1, t0, l0, v0, b. ¬((R(t, l, v), true) ' + h = h1 ∧ mem ⊕ (h1 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h1)(l0 := v0)) |
mem ⊕ (h + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h)(l0 := v0), ∀ mem0, t, l, v, b0. mem0 ⊕ (h + (W(t, l, v), b0) ') = (mem0 ⊕ h)(l := v) ⊦
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 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h)(l0 := v0), ∀ mem0, t, l, v, b0. mem0 ⊕ (h + (W(t, l, v), b0) ') = (mem0 ⊕ h)(l := v) ⊦ |
Used terms: mem, t0, l0, v0, b
| ∀ mem, h1, t, l, v, b. ¬(h = h1 ∧ mem ⊕ (h1 + (W(t, l, v), b) ') ≠ (mem ⊕ h1)(l := v)) ⊦ ∀ mem, h1, t0, l0, v0, b. ¬((R(t, l, v), false) ' + h = h1 ∧ mem ⊕ (h1 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h1)(l0 := v0)) |
mem ⊕ (h + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h)(l0 := v0), ∀ mem0, t, l, v, b0. mem0 ⊕ (h + (W(t, l, v), b0) ') = (mem0 ⊕ h)(l := v) ⊦
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 + (W(t0, l0, v0), b) ') ≠ (mem ⊕ h)(l0 := v0), ∀ mem0, t, l, v, b0. mem0 ⊕ (h + (W(t, l, v), b0) ') = (mem0 ⊕ h)(l := v) ⊦ |
Used terms: mem, t0, l0, v0, b
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.