| ⊦ writersOk(p, writers) ∧ notMember(t, writers) → writersOk(p, writers(l := writers(l) ++ t)) |
notMember(t, writers), writersOk(p, writers), ¬ writersOk(p, writers(l := writers(l) ++ t)) ⊦
| notMember(t, writers), writersOk(p, writers), ¬ writersOk(p, writers(l := writers(l) ++ t)) ⊦ |
∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ (t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)) → l1 ≠ l0 → ¬ t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1))) ∧ (¬ t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = [])
Used simplifier rules: noWriter: ⊦ notMember(t, tsf) ↔ (∀ l. ¬ t ∈ tsf(l)); writersOk: ⊦ writersOk(p, writers) ↔ (∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = [])); filterwrites-def: ⊦ fowl |W = fowl.filter(λ fow. fow.W?); filtertid-def: ⊦ fowl | t = fowl.filter(λ fow. fow.tid = t);
| ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ (t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)) → l1 ≠ l0 → ¬ t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1))) ∧ (¬ t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) |
l1 ≠ l0, t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1)), t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], ¬ t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
| l1 ≠ l0, t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1)), t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
# (l = l1 ⊃ writers(l1) ++ t;writers(l1)) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l1 ⊃ writers(l1) ++ t;writers(l1)) ≠ ∅, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l1 ≠ l0, t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1)), t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
Used simplifier rules: size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| # (l = l1 ⊃ writers(l1) ++ t;writers(l1)) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l1 ⊃ writers(l1) ++ t;writers(l1)) ≠ ∅, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l1 ≠ l0, t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1)), t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
l = l1, #(writers(l1) ++ t) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l1 ⊃ writers(l1) ++ t;writers(l1)) ≠ ∅, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l1 ≠ l0, t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1)), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
# writers(l1) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l1 ⊃ writers(l1) ++ t;writers(l1)) ≠ ∅, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l ≠ l1, l1 ≠ l0, t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1)), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
| l = l1, #(writers(l1) ++ t) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l1 ⊃ writers(l1) ++ t;writers(l1)) ≠ ∅, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l1 ≠ l0, t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1)), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
# writers(l0) ≠ 0, #(writers(l1) ++ t) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, t0 ∈ writers(l0), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l), t0 = t ∨ t0 ∈ writers(l1) ⊦
Used simplifier rules: ⊦ ∅ ≠ s ++ a; (s) size-zero: ⊦ # s ≠ 0 → s ≠ ∅; (forward) from specification set-basic size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic ⊦ a ∈ s ++ b ↔ a = b ∨ a ∈ s; (s)
| # writers(l0) ≠ 0, #(writers(l1) ++ t) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, t0 ∈ writers(l0), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l), t0 = t ∨ t0 ∈ writers(l1) ⊦ |
t0 = t, # writers(l0) ≠ 0, #(writers(l1) ++ t) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
# writers(l0) ≠ 0, #(writers(l1) ++ t) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
| t0 = t, # writers(l0) ≠ 0, #(writers(l1) ++ t) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
# writers(l0) ≠ 0, #(writers(l1) ++ t) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, t ∈ writers(l0), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
| # writers(l0) ≠ 0, #(writers(l1) ++ t) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, t ∈ writers(l0), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
Used terms: l0
| # writers(l0) ≠ 0, #(writers(l1) ++ t) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
#(writers(l1) ++ t) ≠ 0, # writers(l0) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
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) ++ t) ≠ 0, # writers(l0) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
#(writers(l1) ++ t) ≠ 0, # writers(l0) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), t0 ∈ writers(l1) → (∀ l. l ≠ l1 → ¬ t0 ∈ writers(l)), ¬ t0 ∈ writers(l1) → p(l1).filter(.W?).filter(λ fow. fow.tid = t0) = [], ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
Used terms: l1, t0
| #(writers(l1) ++ t) ≠ 0, # writers(l0) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), t0 ∈ writers(l1) → (∀ l. l ≠ l1 → ¬ t0 ∈ writers(l)), ¬ t0 ∈ writers(l1) → p(l1).filter(.W?).filter(λ fow. fow.tid = t0) = [], ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
#(writers(l1) ++ t) ≠ 0, # writers(l0) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. l ≠ l1 → ¬ t0 ∈ writers(l) ⊦
| #(writers(l1) ++ t) ≠ 0, # writers(l0) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. l ≠ l1 → ¬ t0 ∈ writers(l) ⊦ |
Used terms: l0
| # writers(l1) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l1 ⊃ writers(l1) ++ t;writers(l1)) ≠ ∅, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l ≠ l1, l1 ≠ l0, t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), t0 ∈ (l = l1 ⊃ writers(l1) ++ t;writers(l1)), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
# writers(l1) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
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, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
l = l0, # writers(l1) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0) ++ t, ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
# writers(l1) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l ≠ l0, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
| l = l0, # writers(l1) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0) ++ t, ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
#(writers(l0) ++ t) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l), t0 = t ∨ t0 ∈ writers(l0) ⊦
Used simplifier rules: ⊦ ∅ ≠ s ++ a; (s) size-zero: ⊦ # s ≠ 0 → s ≠ ∅; (forward) from specification set-basic ⊦ a ∈ s ++ b ↔ a = b ∨ a ∈ s; (s)
| #(writers(l0) ++ t) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l), t0 = t ∨ t0 ∈ writers(l0) ⊦ |
t0 = t, #(writers(l0) ++ t) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
#(writers(l0) ++ t) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
| t0 = t, #(writers(l0) ++ t) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
#(writers(l0) ++ t) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, t ∈ writers(l1), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
| #(writers(l0) ++ t) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, t ∈ writers(l1), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
Used terms: l1
| #(writers(l0) ++ t) ≠ 0, # writers(l1) ≠ 0, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
# writers(l1) ≠ 0, #(writers(l0) ++ t) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
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) ++ t) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
# writers(l1) ≠ 0, #(writers(l0) ++ t) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, writers(l1) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), t0 ∈ writers(l1) → (∀ l. l ≠ l1 → ¬ t0 ∈ writers(l)), ¬ t0 ∈ writers(l1) → p(l1).filter(.W?).filter(λ fow. fow.tid = t0) = [], ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
Used terms: l1, t0
| # writers(l1) ≠ 0, #(writers(l0) ++ t) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, writers(l1) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), t0 ∈ writers(l1) → (∀ l. l ≠ l1 → ¬ t0 ∈ writers(l)), ¬ t0 ∈ writers(l1) → p(l1).filter(.W?).filter(λ fow. fow.tid = t0) = [], ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
# writers(l1) ≠ 0, #(writers(l0) ++ t) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. l ≠ l1 → ¬ t0 ∈ writers(l) ⊦
| # writers(l1) ≠ 0, #(writers(l0) ++ t) ≠ 0, # writers(l0) ≠ 0, l1 ≠ l0, writers(l0) ≠ ∅, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. l ≠ l1 → ¬ t0 ∈ writers(l) ⊦ |
Used terms: l0
| # writers(l1) ≠ 0, # (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ 0, (l = l0 ⊃ writers(l0) ++ t;writers(l0)) ≠ ∅, l ≠ l0, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
# writers(l1) ≠ 0, # writers(l0) ≠ 0, l ≠ l0, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
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, l ≠ l0, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
# writers(l1) ≠ 0, # writers(l0) ≠ 0, l ≠ l0, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), t0 ∈ writers(l1) → (∀ l. l ≠ l1 → ¬ t0 ∈ writers(l)), ¬ t0 ∈ writers(l1) → p(l1).filter(.W?).filter(λ fow. fow.tid = t0) = [], ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
Used terms: l1, t0
| # writers(l1) ≠ 0, # writers(l0) ≠ 0, l ≠ l0, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l1), t0 ∈ writers(l0), t0 ∈ writers(l1) → (∀ l. l ≠ l1 → ¬ t0 ∈ writers(l)), ¬ t0 ∈ writers(l1) → p(l1).filter(.W?).filter(λ fow. fow.tid = t0) = [], ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
# writers(l1) ≠ 0, # writers(l0) ≠ 0, l ≠ l0, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. l ≠ l1 → ¬ t0 ∈ writers(l) ⊦
| # writers(l1) ≠ 0, # writers(l0) ≠ 0, l ≠ l0, l ≠ l1, l1 ≠ l0, writers(l1) ≠ ∅, writers(l0) ≠ ∅, t0 ∈ writers(l0), t0 ∈ writers(l1), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. l ≠ l1 → ¬ t0 ∈ writers(l) ⊦ |
Used terms: l0
| p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], ¬ t0 ∈ (l = l0 ⊃ writers(l0) ++ t;writers(l0)), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
l = l0, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], ¬ t0 ∈ writers(l0) ++ t, ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], l ≠ l0, ¬ t0 ∈ writers(l0), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦
| l = l0, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], ¬ t0 ∈ writers(l0) ++ t, ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(l) ⊦ |
p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t0 ≠ t, ¬ t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦
Used simplifier rules: ⊦ a ∈ s ++ b ↔ ¬(a ≠ b ∧ ¬ a ∈ s); (ss)
| p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t0 ≠ t, ¬ t0 ∈ writers(l0), ∀ l. ¬ t ∈ writers(l), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []) ⊦ |
Used terms: l0, t0
| p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], l ≠ l0, ¬ t0 ∈ writers(l0), ∀ l0, t0. (t0 ∈ writers(l0) → (∀ l1. l1 ≠ l0 → ¬ t0 ∈ writers(l1))) ∧ (¬ t0 ∈ writers(l0) → p(l0).filter(.W?).filter(λ fow. fow.tid = t0) = []), ∀ l. ¬ t ∈ writers(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.