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