| ⊦ writersOk(bq, pq, writers) ∧ oneMember(t, l, writers) ∧ noPending(t, bq, pq) → writersOk(bq(t := bq(t) + W(l, v) '), pq, writers) |
noPending(t, bq, pq), oneMember(t, l, writers), writersOk(bq, pq, writers), ¬ writersOk(bq(t := bq(t) + W(l, v) '), pq, writers) ⊦
| noPending(t, bq, pq), oneMember(t, l, writers), writersOk(bq, pq, writers), ¬ writersOk(bq(t := bq(t) + W(l, v) '), pq, writers) ⊦ |
bq(t) = [], oneMember(t, l, writers), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []), ∀ l. pq(l) | t = [] ⊦ (t0 ∈ writers(l0) → l1 ≠ l0 → ¬ t0 ∈ writers(l1)) ∧ (¬ t0 ∈ writers(l0) → pq(l0) |W | t0 = [] ∧ (t = t0 ⊃ bq(t0) + W(l, v) ';bq(t0)) |WL l0 = [])
Used simplifier rules: noPending: ⊦ noPending(t, bq, p) ↔ (∀ l. p(l) | t = [] ∧ bq(t) = []); 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 = []));
| bq(t) = [], oneMember(t, l, writers), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → pq(l) |W | t = [] ∧ bq(t) |WL l = []), ∀ l. pq(l) | t = [] ⊦ (t0 ∈ writers(l0) → l1 ≠ l0 → ¬ t0 ∈ writers(l1)) ∧ (¬ t0 ∈ writers(l0) → pq(l0) |W | t0 = [] ∧ (t = t0 ⊃ bq(t0) + W(l, v) ';bq(t0)) |WL l0 = []) |
bq(t) = [], l1 ≠ l0, oneMember(t, l, writers), t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. pq(l) | 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) = [], oneMember(t, l, writers), ¬ t0 ∈ writers(l0), ∀ l. pq(l) | t = [], ∀ 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 = [] ∧ (t = t0 ⊃ bq(t0) + W(l, v) ';bq(t0)) |WL l0 = []
| bq(t) = [], l1 ≠ l0, oneMember(t, l, writers), t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. pq(l) | 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) = [], # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, oneMember(t, l, writers), t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. pq(l) | 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) = [], # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, oneMember(t, l, writers), t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. pq(l) | 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) = [], # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, oneMember(t, l, writers), 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 = []), ∀ l. pq(l) | t = [] ⊦
Used terms: l0, t0
| bq(t) = [], # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, oneMember(t, l, writers), 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 = []), ∀ l. pq(l) | t = [] ⊦ |
bq(t) = [], # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, oneMember(t, l, writers), t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. pq(l) | 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) = [], # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, oneMember(t, l, writers), t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. pq(l) | 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) = [], oneMember(t, l, writers), ¬ t0 ∈ writers(l0), ∀ l. pq(l) | t = [], ∀ 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 = [] ∧ (t = t0 ⊃ bq(t0) + W(l, v) ';bq(t0)) |WL l0 = [] |
bq(t) = [], pq(l0) |W | t0 ≠ [], oneMember(t, l, writers), ¬ 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. pq(l) | t = [] ⊦
bq(t) = [], (t = t0 ⊃ bq(t0) + W(l, v) ';bq(t0)) |WL l0 ≠ [], oneMember(t, l, writers), ¬ 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. pq(l) | t = [] ⊦
| bq(t) = [], pq(l0) |W | t0 ≠ [], oneMember(t, l, writers), ¬ 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. pq(l) | t = [] ⊦ |
Used terms: l0, t0
| bq(t) = [], (t = t0 ⊃ bq(t0) + W(l, v) ';bq(t0)) |WL l0 ≠ [], oneMember(t, l, writers), ¬ 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. pq(l) | t = [] ⊦ |
bq(t) = [], t ≠ t0, bq(t0) |WL l0 ≠ [], oneMember(t, l, writers), ¬ t0 ∈ writers(l0), ∀ l. pq(l) | 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: restrict-l-append: ⊦ bel0 + bel1 |WL l = (bel0 |WL l) + (bel1 |WL l); restrict-l-W-other: ⊦ l0 ≠ l → W(l0, v) ' |WL l = []; restrict-l-empty: ⊦ [] |WL l = []; ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ oneMember(t, l, tsf) → (t ∈ tsf(l0) ↔ l = l0); (s)
| bq(t) = [], t ≠ t0, bq(t0) |WL l0 ≠ [], oneMember(t, l, writers), ¬ t0 ∈ writers(l0), ∀ l. pq(l) | t = [], ∀ 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.