| ⊦ writersOk(bq, pq, writers) ∧ bq(t) = W(l, v) ' + bel → writersOk(bq(t := bel), pq(l := pq(l) + W(v, t) '), writers) |
bq(t) = W(l, v) ' + bel, writersOk(bq, pq, writers), ¬ writersOk(bq(t := bel), pq(l := pq(l) + W(v, t) '), writers) ⊦
| bq(t) = W(l, v) ' + bel, writersOk(bq, pq, writers), ¬ writersOk(bq(t := bel), pq(l := pq(l) + W(v, t) '), writers) ⊦ |
bq(t) = W(l, v) ' + bel, W(l, v) ∈ bq(t), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ (t0 ∈ writers(l0) → l1 ≠ l0 → ¬ t0 ∈ writers(l1)) ∧ (¬ t0 ∈ writers(l0) → (l = l0 ⊃ pq(l0) + W(v, t) ';pq(l0)) |W | t0 = [] ∧ (t = t0 ⊃ bel;bq(t0)) |WL l0 = [])
Used simplifier rules: writersOk: ⊦ writersOk(bq, p, writers) ↔ (∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = [] ∧ bq(t) |WL l = [])); a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| bq(t) = W(l, v) ' + bel, W(l, v) ∈ bq(t), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ (t0 ∈ writers(l0) → l1 ≠ l0 → ¬ t0 ∈ writers(l1)) ∧ (¬ t0 ∈ writers(l0) → (l = l0 ⊃ pq(l0) + W(v, t) ';pq(l0)) |W | t0 = [] ∧ (t = t0 ⊃ bel;bq(t0)) |WL l0 = []) |
bq(t) = W(l, v) ' + bel, l1 ≠ l0, t0 ∈ writers(l1), t0 ∈ writers(l0), W(l, v) ∈ bq(t), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
bq(t) = W(l, v) ' + bel, W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ (l = l0 ⊃ pq(l0) + W(v, t) ';pq(l0)) |W | t0 = [] ∧ (t = t0 ⊃ bel;bq(t0)) |WL l0 = []
| bq(t) = W(l, v) ' + bel, l1 ≠ l0, t0 ∈ writers(l1), t0 ∈ writers(l0), W(l, v) ∈ bq(t), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t) = W(l, v) ' + bel, # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), W(l, v) ∈ bq(t), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| bq(t) = W(l, v) ' + bel, # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), W(l, v) ∈ bq(t), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t) = W(l, v) ' + bel, # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, W(l, v) ∈ bq(t), t0 ∈ writers(l0), t0 ∈ writers(l1), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → pq(l0) |W | t0 = [] ∧ bq(t0) |WL l0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
Used terms: l0, t0
| bq(t) = W(l, v) ' + bel, # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, W(l, v) ∈ bq(t), t0 ∈ writers(l0), t0 ∈ writers(l1), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → pq(l0) |W | t0 = [] ∧ bq(t0) |WL l0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t) = W(l, v) ' + bel, # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), W(l, v) ∈ bq(t), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []), ∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1) ⊦
| bq(t) = W(l, v) ' + bel, # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), W(l, v) ∈ bq(t), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []), ∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1) ⊦ |
Used terms: l1
| bq(t) = W(l, v) ' + bel, W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ (l = l0 ⊃ pq(l0) + W(v, t) ';pq(l0)) |W | t0 = [] ∧ (t = t0 ⊃ bel;bq(t0)) |WL l0 = [] |
bq(t) = W(l, v) ' + bel, (l = l0 ⊃ pq(l0) + W(v, t) ';pq(l0)) |W | t0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
bq(t) = W(l, v) ' + bel, (t = t0 ⊃ bel;bq(t0)) |WL l0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
| bq(t) = W(l, v) ' + bel, (l = l0 ⊃ pq(l0) + W(v, t) ';pq(l0)) |W | t0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t) = W(l, v) ' + bel, l = l0, (pq(l0) + W(v, t) ')|W | t0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
bq(t) = W(l, v) ' + bel, l ≠ l0, pq(l0) |W | t0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
| bq(t) = W(l, v) ' + bel, l = l0, (pq(l0) + W(v, t) ')|W | t0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t) = W(l0, v) ' + bel, W(l0, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ pq(l0) |W | t0 = [] ∧ t0 ≠ t
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ W(v, tid).tid = tid; (s) ⊦ fow ' | t = (t = fow.tid ⊃ fow ';[]); (s) ⊦ fowl + fowl0 | t = (fowl | t) + (fowl0 | t); (s) ⊦ W(v, t) ' |W = W(v, t) '; (s) ⊦ (fowl + fowl0)|W = fowl |W + fowl0 |W; (s)
| bq(t) = W(l0, v) ' + bel, W(l0, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ pq(l0) |W | t0 = [] ∧ t0 ≠ t |
bq(t) = W(l0, v) ' + bel, W(l0, v) ∈ bq(t), ¬ t0 ∈ writers(l0), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → pq(l0) |W | t0 = [] ∧ bq(t0) |WL l0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ pq(l0) |W | t0 = [] ∧ t0 ≠ t
Used terms: l0, t0
| bq(t) = W(l0, v) ' + bel, W(l0, v) ∈ bq(t), ¬ t0 ∈ writers(l0), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → pq(l0) |W | t0 = [] ∧ bq(t0) |WL l0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ pq(l0) |W | t0 = [] ∧ t0 ≠ t |
bq(t) = W(l0, v) ' + bel, pq(l0) |W | t = [], bq(t) |WL l0 = [], W(l0, v) ∈ bq(t), ¬ t ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
| bq(t) = W(l0, v) ' + bel, pq(l0) |W | t = [], bq(t) |WL l0 = [], W(l0, v) ∈ bq(t), ¬ t ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
Used simplifier rules: restrict-l-append: ⊦ bel0 + bel1 |WL l = (bel0 |WL l) + (bel1 |WL l); restrict-l-W-same: ⊦ W(l, v) ' |WL l = W(l, v) '; ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| bq(t) = W(l, v) ' + bel, l ≠ l0, pq(l0) |W | t0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
Used terms: l0, t0
| bq(t) = W(l, v) ' + bel, (t = t0 ⊃ bel;bq(t0)) |WL l0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t) = W(l, v) ' + bel, t = t0, bel |WL l0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
bq(t) = W(l, v) ' + bel, t ≠ t0, bq(t0) |WL l0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
| bq(t) = W(l, v) ' + bel, t = t0, bel |WL l0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t0) = W(l, v) ' + bel, bel |WL l0 ≠ [], W(l, v) ∈ bq(t0), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL 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
| bq(t0) = W(l, v) ' + bel, bel |WL l0 ≠ [], W(l, v) ∈ bq(t0), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t0) = W(l, v) ' + bel, bel |WL l0 ≠ [], W(l, v) ∈ bq(t0), ¬ t0 ∈ writers(l0), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → pq(l0) |W | t0 = [] ∧ bq(t0) |WL l0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
Used terms: l0, t0
| bq(t0) = W(l, v) ' + bel, bel |WL l0 ≠ [], W(l, v) ∈ bq(t0), ¬ t0 ∈ writers(l0), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → pq(l0) |W | t0 = [] ∧ bq(t0) |WL l0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
bq(t0) = W(l, v) ' + bel, pq(l0) |W | t0 = [], bq(t0) |WL l0 = [], bel |WL l0 ≠ [], W(l, v) ∈ bq(t0), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦
| bq(t0) = W(l, v) ' + bel, pq(l0) |W | t0 = [], bq(t0) |WL l0 = [], bel |WL l0 ≠ [], W(l, v) ∈ bq(t0), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
Used simplifier rules: restrict-l-append: ⊦ bel0 + bel1 |WL l = (bel0 |WL l) + (bel1 |WL l); ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| bq(t) = W(l, v) ' + bel, t ≠ t0, bq(t0) |WL l0 ≠ [], W(l, v) ∈ bq(t), ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []) ⊦ |
Used terms: l0, t0
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.