| ⊦ noPending(t, p) ∧ pendingOk(p) → pendingOk(p(l := p(l) + W(v, t) ')) |
noPending(t, p), pendingOk(p), ¬ pendingOk(p(l := p(l) + W(v, t) ')) ⊦
| noPending(t, p), pendingOk(p), ¬ pendingOk(p(l := p(l) + W(v, t) ')) ⊦ |
#((l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0) ≠ 1, (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦
Used simplifier rules: noPending: ⊦ noPending(t, p) ↔ (∀ l. p(l) | t = []); pendingOk: ⊦ pendingOk(p) ↔ (∀ l, t. #(p(l) |W | t) ≤ 1); ⊦ # x = 0 ↔ x = []; (s) ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1); (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| #((l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0) ≠ 1, (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
l = l0, #((p(l0) + W(v, t) ')|W | t0) ≠ 1, (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 ≠ [], ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
#(p(l0) |W | t0) ≠ 1, l ≠ l0, (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 ≠ [], ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
| l = l0, #((p(l0) + W(v, t) ')|W | t0) ≠ 1, (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 ≠ [], ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
#((p(l0) + W(v, t) ')|W | t0) ≠ 1, (p(l0) + W(v, t) ')|W | t0 ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦
| #((p(l0) + W(v, t) ')|W | t0) ≠ 1, (p(l0) + W(v, t) ')|W | t0 ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
t = t0, #((p(l0) + W(v, t) ')|W | t0) ≠ 1, (p(l0) + W(v, t) ')|W | t0 ≠ [], ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
#((p(l0) + W(v, t) ')|W | t0) ≠ 1, t ≠ t0, (p(l0) + W(v, t) ')|W | t0 ≠ [], ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used formulas: t = t0
| t = t0, #((p(l0) + W(v, t) ')|W | t0) ≠ 1, (p(l0) + W(v, t) ')|W | t0 ≠ [], ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
#((p(l0) + W(v, t0) ')|W | t0) ≠ 1, (p(l0) + W(v, t0) ')|W | t0 ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t0 = [] ⊦
| #((p(l0) + W(v, t0) ')|W | t0) ≠ 1, (p(l0) + W(v, t0) ')|W | t0 ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t0 = [] ⊦ |
⊦ fowl | t = fowl.filter(λ fow. fow.tid = t)
# (p(l0) + W(v, t0) ')|W.filter(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t0) ')|W.filter(λ fow. fow.tid = t0) ≠ [], ∀ l. p(l) | t0 = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used terms: (p(l0) + W(v, t0) ')|W, t0
| ⊦ fowl | t = fowl.filter(λ fow. fow.tid = t) |
| # (p(l0) + W(v, t0) ')|W.filter(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t0) ')|W.filter(λ fow. fow.tid = t0) ≠ [], ∀ l. p(l) | t0 = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
(p(l0) + W(v, t0) ')|W.count(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t0) ')|W.filter(λ fow. fow.tid = t0) ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t0 = [] ⊦
Used simplifier rules: ⊦ # x.filter(p) = x.count(p); (s)
| (p(l0) + W(v, t0) ')|W.count(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t0) ')|W.filter(λ fow. fow.tid = t0) ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t0 = [] ⊦ |
⊦ fowl |W = fowl.filter(λ fow. fow.W?)
(p(l0) + W(v, t0) ').filter(λ fow. fow.W?).count(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t0) ').filter(λ fow. fow.W?).filter(λ fow. fow.tid = t0) ≠ [], ∀ l. p(l) | t0 = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used terms: p(l0) + W(v, t0) '
| ⊦ fowl |W = fowl.filter(λ fow. fow.W?) |
| (p(l0) + W(v, t0) ').filter(λ fow. fow.W?).count(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t0) ').filter(λ fow. fow.W?).filter(λ fow. fow.tid = t0) ≠ [], ∀ l. p(l) | t0 = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 0, ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t0 = [] ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ W(v, tid).tid = tid; (s) ⊦ a '.filter(p) = (p(a) ⊃ a ';[]); (s) ⊦ (x + y).filter(p) = x.filter(p) + y.filter(p); (s) ⊦ W(v, tid).W?; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n ≠ 0 → (m + n = 1 ↔ n = 1 ∧ m = 0); (ws) ⊦ a '.count(p) = (p(a) ⊃ 1;0); (s) ⊦ (x + y).count(p) = x.count(p) + y.count(p); (s)
| p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 0, ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t0 = [] ⊦ |
p(l0) | t0 = [], p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 0, ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used terms: l0
| p(l0) | t0 = [], p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 0, ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
⊦ fowl | t = fowl.filter(λ fow. fow.tid = t)
p(l0).filter(λ fow. fow.tid = t0) = [], p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 0, ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used terms: p(l0), t0
| ⊦ fowl | t = fowl.filter(λ fow. fow.tid = t) |
| p(l0).filter(λ fow. fow.tid = t0) = [], p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 0, ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
⊦ x.count(p) = 0 ↔ x.filter(p) = []
p(l0).filter(λ fow. fow.tid = t0) = [], p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used terms: p(l0).filter(.W?), λ fow. fow.tid = t0
| ⊦ x.count(p) = 0 ↔ x.filter(p) = [] |
| p(l0).filter(λ fow. fow.tid = t0) = [], p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
p(l0).filter(λ fow. fow.tid = t0) = [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∃ a. a ∈ p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ⊦
Used terms: p(l0).filter(.W?).filter(λ fow. fow.tid = t0)
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| p(l0).filter(λ fow. fow.tid = t0) = [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∃ a. a ∈ p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ⊦ |
p(l0).filter(λ fow0. fow0.tid = fow.tid) = [], fow.W?, fow ∈ p(l0), ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| p(l0).filter(λ fow0. fow0.tid = fow.tid) = [], fow.W?, fow ∈ p(l0), ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
⊦ x = [] ↔ ¬(∃ a. a ∈ x)
fow.W?, fow ∈ p(l0), ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ a. ¬ a ∈ p(l0).filter(λ fow0. fow0.tid = fow.tid) ⊦
Used terms: p(l0).filter(λ fow0. fow0.tid = fow.tid)
| ⊦ x = [] ↔ ¬(∃ a. a ∈ x) |
| fow.W?, fow ∈ p(l0), ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ a. ¬ a ∈ p(l0).filter(λ fow0. fow0.tid = fow.tid) ⊦ |
fow.W?, fow ∈ p(l0), ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ a. ¬ a ∈ p(l0) ∨ a.tid ≠ fow.tid ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s)
| fow.W?, fow ∈ p(l0), ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ a. ¬ a ∈ p(l0) ∨ a.tid ≠ fow.tid ⊦ |
Used terms: fow
| #((p(l0) + W(v, t) ')|W | t0) ≠ 1, t ≠ t0, (p(l0) + W(v, t) ')|W | t0 ≠ [], ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
⊦ fowl | t = fowl.filter(λ fow. fow.tid = t)
# (p(l0) + W(v, t) ')|W.filter(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t) ')|W.filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦
Used terms: (p(l0) + W(v, t) ')|W, t0
| ⊦ fowl | t = fowl.filter(λ fow. fow.tid = t) |
| # (p(l0) + W(v, t) ')|W.filter(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t) ')|W.filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
(p(l0) + W(v, t) ')|W.count(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t) ')|W.filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used simplifier rules: ⊦ # x.filter(p) = x.count(p); (s)
| (p(l0) + W(v, t) ')|W.count(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t) ')|W.filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
⊦ fowl |W = fowl.filter(λ fow. fow.W?)
(p(l0) + W(v, t) ').filter(λ fow. fow.W?).count(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t) ').filter(λ fow. fow.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦
Used terms: p(l0) + W(v, t) '
| ⊦ fowl |W = fowl.filter(λ fow. fow.W?) |
| (p(l0) + W(v, t) ').filter(λ fow. fow.W?).count(λ fow. fow.tid = t0) ≠ 1, (p(l0) + W(v, t) ').filter(λ fow. fow.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ W(v, tid).tid = tid; (s) ⊦ a '.filter(p) = (p(a) ⊃ a ';[]); (s) ⊦ (x + y).filter(p) = x.filter(p) + y.filter(p); (s) ⊦ W(v, tid).W?; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ a '.count(p) = (p(a) ⊃ 1;0); (s) ⊦ (x + y).count(p) = x.count(p) + y.count(p); (s)
| p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, #(p(l0) |W | t0) ≤ 1, ∀ l. p(l) | t = [] ⊦
Used terms: l0, t0
| p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, #(p(l0) |W | t0) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
⊦ fowl | t = fowl.filter(λ fow. fow.tid = t)
p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, # p(l0) |W.filter(λ fow. fow.tid = t0) ≤ 1, ∀ l. p(l) | t = [] ⊦
Used terms: p(l0) |W, t0
| ⊦ fowl | t = fowl.filter(λ fow. fow.tid = t) |
| p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, # p(l0) |W.filter(λ fow. fow.tid = t0) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, p(l0) |W.count(λ fow. fow.tid = t0) ≤ 1, ∀ l. p(l) | t = [] ⊦
Used simplifier rules: ⊦ # x.filter(p) = x.count(p); (s)
| p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, p(l0) |W.count(λ fow. fow.tid = t0) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
⊦ fowl |W = fowl.filter(λ fow. fow.W?)
p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, p(l0).filter(λ fow. fow.W?).count(λ fow. fow.tid = t0) ≤ 1, ∀ l. p(l) | t = [] ⊦
Used terms: p(l0)
| ⊦ fowl |W = fowl.filter(λ fow. fow.W?) |
| p(l0).filter(.W?).count(λ fow. fow.tid = t0) ≠ 1, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, p(l0).filter(λ fow. fow.W?).count(λ fow. fow.tid = t0) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
p(l0).filter(.W?).count(λ fow. fow.tid = t0) = 0, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l. p(l) | t = [] ⊦
Used simplifier rules: ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)
| p(l0).filter(.W?).count(λ fow. fow.tid = t0) = 0, p(l0).filter(.W?).filter(λ fow. fow.tid = t0) ≠ [], t ≠ t0, ∀ l. p(l) | t = [] ⊦ |
⊦ x.count(p) = 0 ↔ x.filter(p) = []
Used terms: p(l0).filter(.W?), λ fow. fow.tid = t0
| ⊦ x.count(p) = 0 ↔ x.filter(p) = [] |
| #(p(l0) |W | t0) ≠ 1, l ≠ l0, (l = l0 ⊃ p(l0) + W(v, t) ';p(l0)) |W | t0 ≠ [], ∀ l. p(l) | t = [], ∀ l, t. #(p(l) |W | t) ≤ 1 ⊦ |
#(p(l0) |W | t0) ≠ 1, l ≠ l0, p(l0) |W | t0 ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦
| #(p(l0) |W | t0) ≠ 1, l ≠ l0, p(l0) |W | t0 ≠ [], ∀ l, t. #(p(l) |W | t) ≤ 1, ∀ l. p(l) | t = [] ⊦ |
Used simplifier rules: ⊦ m ≠ n → (m ≤ n ↔ m < n); (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ # x = 0 ↔ x = []; (s) 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.