| ⊦ writersOk(p, writers) ∧ oneMember(t, l, writers) ∧ noPending(t, p) → writersOk(p(l := p(l) + W(v, t) '), writers) |
noPending(t, p), oneMember(t, l, writers), writersOk(p, writers), ¬ writersOk(p(l := p(l) + W(v, t) '), writers) ⊦
| noPending(t, p), oneMember(t, l, writers), writersOk(p, writers), ¬ writersOk(p(l := p(l) + W(v, t) '), writers) ⊦ |
∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l. p(l) | t = [] ⊦ (t0 ∈ writers(l0) → l1 ≠ l0 → ¬ t0 ∈ writers(l1)) ∧ (¬ t0 ∈ writers(l0) → (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 = [])
Used simplifier rules: oneWriter: ⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l); noPending: ⊦ noPending(t, p) ↔ (∀ l. p(l) | t = []); writersOk: ⊦ writersOk(p, writers) ↔ (∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []));
| ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l. p(l) | t = [] ⊦ (t0 ∈ writers(l0) → l1 ≠ l0 → ¬ t0 ∈ writers(l1)) ∧ (¬ t0 ∈ writers(l0) → (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 = []) |
l1 ≠ l0, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦
(l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦
| l1 ≠ l0, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦ |
# writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦ |
# writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → p(l0) |W | t0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l. p(l) | t = [] ⊦
Used terms: l0, t0
| # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → p(l0) |W | t0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l. p(l) | t = [] ⊦ |
# writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1) ⊦
| # writers(l1) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1) ⊦ |
Used terms: l1
| (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦ |
l = l0, (p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l. p(l) | t = [] ⊦
l ≠ l0, p(l0) |W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l. p(l) | t = [] ⊦
| l = l0, (p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l. p(l) | t = [] ⊦ |
(p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l1. t ∈ writers(l1) ↔ l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦
| (p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l1. t ∈ writers(l1) ↔ l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦ |
(p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → p(l0) |W | t0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) ↔ l1 = l0, ∀ l. p(l) | t = [] ⊦
Used terms: l0, t0
| (p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1)), ¬ t0 ∈ writers(l0) → p(l0) |W | t0 = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) ↔ l1 = l0, ∀ l. p(l) | t = [] ⊦ |
p(l0) |W | t0 = [], (p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l1. t ∈ writers(l1) ↔ l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦
| p(l0) |W | t0 = [], (p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l1. t ∈ writers(l1) ↔ l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []) ⊦ |
t ∈ writers(l0) ↔ l0 = l0, p(l0) |W | t0 = [], (p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) ↔ l1 = l0, ∀ l. p(l) | t = [] ⊦
Used terms: l0
| t ∈ writers(l0) ↔ l0 = l0, p(l0) |W | t0 = [], (p(l0) + W(v, t) ')|W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) ↔ l1 = l0, ∀ l. p(l) | t = [] ⊦ |
p(l0) |W | t0 = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, (p(l0) + W(v, t) ')|W | t0 ≠ [], t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [] ⊦
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| p(l0) |W | t0 = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, (p(l0) + W(v, t) ')|W | t0 ≠ [], t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [] ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
p(l0) |W | t0 = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, ∃ a. a ∈ (p(l0) + W(v, t) ')|W | t0 ⊦
Used terms: (p(l0) + W(v, t) ')|W | t0
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| p(l0) |W | t0 = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, ∃ a. a ∈ (p(l0) + W(v, t) ')|W | t0 ⊦ |
p(l0) |W | t0 = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, fow ∈ (p(l0) + W(v, t) ')|W | t0, t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [] ⊦
| p(l0) |W | t0 = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, fow ∈ (p(l0) + W(v, t) ')|W | t0, t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [] ⊦ |
⊦ fowl | t = fowl.filter(λ fow. fow.tid = t)
p(l0) |W | t0 = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), fow ∈ (p(l0) + W(v, t) ')|W.filter(λ fow. fow.tid = t0), ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0 ⊦
Used terms: (p(l0) + W(v, t) ')|W, t0
| ⊦ fowl | t = fowl.filter(λ fow. fow.tid = t) |
| p(l0) |W | t0 = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), fow ∈ (p(l0) + W(v, t) ')|W.filter(λ fow. fow.tid = t0), ¬ t0 ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0 ⊦ |
p(l0) |W | fow.tid = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, fow ∈ (p(l0) + W(v, t) ')|W, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0 ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| p(l0) |W | fow.tid = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, fow ∈ (p(l0) + W(v, t) ')|W, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0 ⊦ |
⊦ fowl |W = fowl.filter(λ fow. fow.W?)
p(l0) |W | fow.tid = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), fow ∈ (p(l0) + W(v, t) ').filter(λ fow. fow.W?), ¬ fow.tid ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [] ⊦
Used terms: p(l0) + W(v, t) '
| ⊦ fowl |W = fowl.filter(λ fow. fow.W?) |
| p(l0) |W | fow.tid = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), fow ∈ (p(l0) + W(v, t) ').filter(λ fow. fow.W?), ¬ fow.tid ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [] ⊦ |
p(l0) |W | fow.tid = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ W(v, tid).W?; (s) ⊦ a '.filter(p) = (p(a) ⊃ a ';[]); (s) ⊦ (x + y).filter(p) = x.filter(p) + y.filter(p); (s)
| p(l0) |W | fow.tid = [], # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
# writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) |W | fow.tid, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦
Used terms: p(l0) |W | fow.tid
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) |W | fow.tid, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦ |
⊦ fowl | t = fowl.filter(λ fow. fow.tid = t)
# writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ a. ¬ a ∈ p(l0) |W.filter(λ fow0. fow0.tid = fow.tid), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦
Used terms: p(l0) |W, fow.tid
| ⊦ fowl | t = fowl.filter(λ fow. fow.tid = t) |
| # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ a. ¬ a ∈ p(l0) |W.filter(λ fow0. fow0.tid = fow.tid), ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦ |
# writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) |W ∨ a.tid ≠ fow.tid, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) |W ∨ a.tid ≠ fow.tid, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦ |
⊦ fowl |W = fowl.filter(λ fow. fow.W?)
# writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ a. ¬ a ∈ p(l0).filter(λ fow. fow.W?) ∨ a.tid ≠ fow.tid, ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦
Used terms: p(l0)
| ⊦ fowl |W = fowl.filter(λ fow. fow.W?) |
| # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ a. ¬ a ∈ p(l0).filter(λ fow. fow.W?) ∨ a.tid ≠ fow.tid, ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦ |
# writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ fow.tid, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ fow.tid, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦ |
fow = W(v0, t0), # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ fow.tid, ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦
Used simplifier rules: FOW freely generated by FO, W;; ⊦ FO(tid).tid = tid; (s) ⊦ ¬ FO(tid).W?; (s) ⊦ FO(tid) ≠ W(v, tid0); (s)
| fow = W(v0, t0), # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ fow.tid ∈ writers(l0), ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ fow.tid, ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, fow ∈ p(l0) ∧ fow.W? ∨ fow = W(v, t) ⊦ |
# writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ t0, W(v0, t0) ∈ p(l0) ∨ W(v0, t0) = W(v, t) ⊦
Used simplifier rules: ⊦ W(v, tid).tid = tid; (s) ⊦ W(v, tid).W?; (s)
| # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ t0, W(v0, t0) ∈ p(l0) ∨ W(v0, t0) = W(v, t) ⊦ |
⊦ W(v, tid) = W(v0, tid0) ↔ v = v0 ∧ tid = tid0
# writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ t0, ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, W(v0, t0) ∈ p(l0) ∨ v0 = v ∧ t0 = t ⊦
Used terms: v0, t0, v, t
| ⊦ W(v, tid) = W(v0, tid0) ↔ v = v0 ∧ tid = tid0 |
| # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), ¬ t0 ∈ writers(l0), ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ t0, ∀ l. p(l) | t = [], ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l1. t ∈ writers(l1) → l1 = l0, W(v0, t0) ∈ p(l0) ∨ v0 = v ∧ t0 = t ⊦ |
# writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), W(v0, t0) ∈ p(l0), ¬ t0 ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ t0 ⊦
| # writers(l0) ≠ 0, writers(l0) ≠ ∅, t ∈ writers(l0), W(v0, t0) ∈ p(l0), ¬ t0 ∈ writers(l0), ∀ l1. t ∈ writers(l1) → l1 = l0, ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l. p(l) | t = [], ∀ a. ¬ a ∈ p(l0) ∨ ¬ a.W? ∨ a.tid ≠ t0 ⊦ |
Used simplifier rules: ⊦ W(v, tid).W?; (s) ⊦ W(v, tid).tid = tid; (s) Used terms: W(v0, t0)
| l ≠ l0, p(l0) |W | t0 ≠ [], ¬ t0 ∈ writers(l0), ∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = []), ∀ l0. t ∈ writers(l0) ↔ l0 = l, ∀ l. p(l) | t = [] ⊦ |
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.