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