| ⊦ fowl0 |W = fowl1 |W → (v ⊕ fowl0 = v ⊕ fowl1 ↔ true) |
fowl0 |W = fowl1 |W, ¬(v ⊕ fowl0 = v ⊕ fowl1 ↔ true) ⊦
| fowl0 |W = fowl1 |W, ¬(v ⊕ fowl0 = v ⊕ fowl1 ↔ true) ⊦ |
fowl0.filter(.W?) = fowl1.filter(.W?), v ⊕ fowl0 ≠ v ⊕ fowl1 ⊦
Used simplifier rules: filterwrites-def: ⊦ fowl |W = fowl.filter(λ fow. fow.W?);
| fowl0.filter(.W?) = fowl1.filter(.W?), v ⊕ fowl0 ≠ v ⊕ fowl1 ⊦ |
[].filter(.W?) = fowl1.filter(.W?), v ⊕ [] ≠ v ⊕ fowl1 ⊦
(fow + fowl).filter(.W?) = fowl1.filter(.W?), v ⊕ (fow + fowl) ≠ v ⊕ fowl1, ∀ fowl1, v. ¬(fowl.filter(.W?) = fowl1.filter(.W?) ∧ v ⊕ fowl ≠ v ⊕ fowl1) ⊦
Used simplifier rules: List('a) freely generated by [], +;;
| [].filter(.W?) = fowl1.filter(.W?), v ⊕ [] ≠ v ⊕ fowl1 ⊦ |
[] = fowl1.filter(.W?), v ≠ v ⊕ fowl1 ⊦
Used simplifier rules: overwrite-base: ⊦ v ⊕ [] = v; ⊦ [].filter(p) = []; (s)
| [] = fowl1.filter(.W?), v ≠ v ⊕ fowl1 ⊦ |
[] = (fow + fowl).filter(.W?), v ≠ v ⊕ (fow + fowl), ∀ v. ¬([] = fowl.filter(.W?) ∧ v ≠ v ⊕ fowl) ⊦
Used simplifier rules: overwrite-base: ⊦ v ⊕ [] = v; List('a) freely generated by [], +;; ⊦ [].filter(p) = []; (s)
| [] = (fow + fowl).filter(.W?), v ≠ v ⊕ (fow + fowl), ∀ v. ¬([] = fowl.filter(.W?) ∧ v ≠ v ⊕ fowl) ⊦ |
fowl.filter(.W?) = [], v ≠ v ⊕ (fow ' + fowl), ¬ fow.W?, ∀ v0. v0 = v0 ⊕ fowl ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| fowl.filter(.W?) = [], v ≠ v ⊕ (fow ' + fowl), ¬ fow.W?, ∀ v0. v0 = v0 ⊕ fowl ⊦ |
fowl.filter(.W?) = [], fow = FO(t), v ≠ v ⊕ (fow ' + fowl), ¬ fow.W?, ∀ v0. v0 = v0 ⊕ fowl ⊦
Used simplifier rules: overwrite-rec2: ⊦ v ⊕ (W(v0, t) ' + fowl) = v0 ⊕ fowl; FOW freely generated by FO, W;; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(v, tid).W?; (s)
| fowl.filter(.W?) = [], fow = FO(t), v ≠ v ⊕ (fow ' + fowl), ¬ fow.W?, ∀ v0. v0 = v0 ⊕ fowl ⊦ |
fowl.filter(.W?) = [], v ≠ v ⊕ fowl, ∀ v0. v0 = v0 ⊕ fowl ⊦
Used simplifier rules: overwrite-rec1: ⊦ v ⊕ (FO(t) ' + fowl) = v ⊕ fowl; ⊦ ¬ FO(tid).W?; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| fowl.filter(.W?) = [], v ≠ v ⊕ fowl, ∀ v0. v0 = v0 ⊕ fowl ⊦ |
Used terms: v
| (fow + fowl).filter(.W?) = fowl1.filter(.W?), v ⊕ (fow + fowl) ≠ v ⊕ fowl1, ∀ fowl1, v. ¬(fowl.filter(.W?) = fowl1.filter(.W?) ∧ v ⊕ fowl ≠ v ⊕ fowl1) ⊦ |
(fow.W? ⊃ fow ';[]) + fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| (fow.W? ⊃ fow ';[]) + fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦ |
fow ' + fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, fow.W?, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦
[] + fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, ¬ fow.W?, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦
| fow ' + fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, fow.W?, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦ |
fow ' + fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, fow.W?, fow ∈ fowl1, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦
Used simplifier rules: ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| fow ' + fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, fow.W?, fow ∈ fowl1, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦ |
fow ' + fowl.filter(.W?) = fowl1.filter(.W?), fow = W(v1, t), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, fow.W?, fow ∈ fowl1, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦
Used simplifier rules: overwrite-rec1: ⊦ v ⊕ (FO(t) ' + fowl) = v ⊕ fowl; FOW freely generated by FO, W;; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ¬ FO(tid).W?; (s)
| fow ' + fowl.filter(.W?) = fowl1.filter(.W?), fow = W(v1, t), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, fow.W?, fow ∈ fowl1, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦ |
W(v1, t) ' + fowl.filter(.W?) = fowl1.filter(.W?), v1 ⊕ fowl ≠ v ⊕ fowl1, W(v1, t) ∈ fowl1, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦
Used simplifier rules: overwrite-rec2: ⊦ v ⊕ (W(v0, t) ' + fowl) = v0 ⊕ fowl; ⊦ W(v, tid).W?; (s) ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| W(v1, t) ' + fowl.filter(.W?) = fowl1.filter(.W?), v1 ⊕ fowl ≠ v ⊕ fowl1, W(v1, t) ∈ fowl1, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦ |
W(v1, t) ' + fowl.filter(.W?) = (fow + fowl0).filter(.W?), v1 ⊕ fowl ≠ v ⊕ (fow + fowl0), W(v1, t) ∈ fow + fowl0, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v1, t, fowl, v. ¬ ( W(v1, t) ' + fowl.filter(.W?) = fowl0.filter(.W?) ∧ v1 ⊕ fowl ≠ v ⊕ fowl0 ∧ W(v1, t) ∈ fowl0 ∧ (∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0)) ⊦
Used simplifier rules: List('a) freely generated by [], +;; ⊦ [].filter(p) = []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| W(v1, t) ' + fowl.filter(.W?) = (fow + fowl0).filter(.W?), v1 ⊕ fowl ≠ v ⊕ (fow + fowl0), W(v1, t) ∈ fow + fowl0, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v1, t, fowl, v. ¬ ( W(v1, t) ' + fowl.filter(.W?) = fowl0.filter(.W?) ∧ v1 ⊕ fowl ≠ v ⊕ fowl0 ∧ W(v1, t) ∈ fowl0 ∧ (∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0)) ⊦ |
W(v1, t) ' + fowl.filter(.W?) = (fow.W? ⊃ fow ';[]) + fowl0.filter(.W?), v1 ⊕ fowl ≠ v ⊕ (fow ' + fowl0), ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0), ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, W(v1, t) = fow ∨ W(v1, t) ∈ fowl0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(v, tid).W?; (s) ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) ⊦ a ∈ a0 ' ↔ a = a0; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ [] + x = x; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a + x = a ' + x; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| W(v1, t) ' + fowl.filter(.W?) = (fow.W? ⊃ fow ';[]) + fowl0.filter(.W?), v1 ⊕ fowl ≠ v ⊕ (fow ' + fowl0), ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0), ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, W(v1, t) = fow ∨ W(v1, t) ∈ fowl0 ⊦ |
W(v1, t) ' + fowl.filter(.W?) = (fow.W? ⊃ fow ';[]) + fowl0.filter(.W?), fow = FO(t1), v1 ⊕ fowl ≠ v ⊕ (fow ' + fowl0), ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0), W(v1, t) = fow ∨ W(v1, t) ∈ fowl0 ⊦
W(v1, t) ' + fowl.filter(.W?) = (fow.W? ⊃ fow ';[]) + fowl0.filter(.W?), fow = W(v3, t1), v1 ⊕ fowl ≠ v ⊕ (fow ' + fowl0), ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0), W(v1, t) = fow ∨ W(v1, t) ∈ fowl0 ⊦
Used simplifier rules: FOW freely generated by FO, W;;
| W(v1, t) ' + fowl.filter(.W?) = (fow.W? ⊃ fow ';[]) + fowl0.filter(.W?), fow = FO(t1), v1 ⊕ fowl ≠ v ⊕ (fow ' + fowl0), ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0), W(v1, t) = fow ∨ W(v1, t) ∈ fowl0 ⊦ |
W(v1, t) ' + fowl.filter(.W?) = fowl0.filter(.W?), v1 ⊕ fowl ≠ v ⊕ fowl0, W(v1, t) ∈ fowl0, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0) ⊦
Used simplifier rules: overwrite-rec1: ⊦ v ⊕ (FO(t) ' + fowl) = v ⊕ fowl; ⊦ W(v, tid).W?; (s) ⊦ a ∈ x.filter(p) ↔ a ∈ x ∧ p(a); (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ FO(tid) ≠ W(v, tid0); (s) ⊦ [] + x = x; (s) ⊦ ¬ FO(tid).W?; (s)
| W(v1, t) ' + fowl.filter(.W?) = fowl0.filter(.W?), v1 ⊕ fowl ≠ v ⊕ fowl0, W(v1, t) ∈ fowl0, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0) ⊦ |
Used terms: v1, t, fowl, v
| W(v1, t) ' + fowl.filter(.W?) = (fow.W? ⊃ fow ';[]) + fowl0.filter(.W?), fow = W(v3, t1), v1 ⊕ fowl ≠ v ⊕ (fow ' + fowl0), ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0), W(v1, t) = fow ∨ W(v1, t) ∈ fowl0 ⊦ |
fowl.filter(.W?) = fowl0.filter(.W?), v3 ⊕ fowl ≠ v3 ⊕ fowl0, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0) ⊦
Used simplifier rules: overwrite-rec2: ⊦ v ⊕ (W(v0, t) ' + fowl) = v0 ⊕ fowl; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(v, tid) = W(v0, tid0) ↔ v = v0 ∧ tid = tid0; (ws) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws) ⊦ W(v, tid).W?; (s)
| fowl.filter(.W?) = fowl0.filter(.W?), v3 ⊕ fowl ≠ v3 ⊕ fowl0, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, ∀ v0, t0, fowl1, v2. W(v0, t0) ' + fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v2 ⊕ fowl0 ∨ ¬ W(v0, t0) ∈ fowl0 ∨ ¬(∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl1 = v0 ⊕ fowl0) ⊦ |
Used terms: fowl0, v3
| [] + fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, ¬ fow.W?, ∀ fowl0, v0. fowl.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦ |
fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, ¬ fow.W?, ∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s)
| fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, ¬ fow.W?, ∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦ |
fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, ¬ fow.W?, ∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, fowl1.filter(.W?) ≠ (fow ' + fowl).filter(.W?) ∨ v ⊕ fowl = v ⊕ (fow ' + fowl) ⊦
Used terms: fow ' + fowl, v
| fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ (fow ' + fowl) ≠ v ⊕ fowl1, ¬ fow.W?, ∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0, fowl1.filter(.W?) ≠ (fow ' + fowl).filter(.W?) ∨ v ⊕ fowl = v ⊕ (fow ' + fowl) ⊦ |
fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ fowl = v ⊕ (fow ' + fowl), v ⊕ fowl ≠ v ⊕ fowl1, ¬ fow.W?, ∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s)
| fowl.filter(.W?) = fowl1.filter(.W?), v ⊕ fowl = v ⊕ (fow ' + fowl), v ⊕ fowl ≠ v ⊕ fowl1, ¬ fow.W?, ∀ fowl0, v0. fowl1.filter(.W?) ≠ fowl0.filter(.W?) ∨ v0 ⊕ fowl = v0 ⊕ fowl0 ⊦ |
Used terms: fowl1, v
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.